agent-log-viewer 1.0.2 → 1.0.3

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 (551) hide show
  1. package/README.md +18 -0
  2. package/dist/mcp-server.mjs +2458 -392
  3. package/dist/runtime-host.mjs +1613 -244
  4. package/dist/standalone/.next/BUILD_ID +1 -1
  5. package/dist/standalone/.next/app-path-routes-manifest.json +28 -25
  6. package/dist/standalone/.next/build-manifest.json +2 -2
  7. package/dist/standalone/.next/prerender-manifest.json +3 -3
  8. package/dist/standalone/.next/routes-manifest.json +18 -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 +3 -3
  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/_global-error.segment.rsc +1 -1
  18. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  19. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  20. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  21. package/dist/standalone/.next/server/app/_not-found/page.js +2 -2
  22. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  23. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  24. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  25. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  26. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  27. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  28. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  29. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  30. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  31. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  32. package/dist/standalone/.next/server/app/api/access/route.js +1 -1
  33. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  35. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  36. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +1 -1
  37. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  38. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
  39. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  40. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +1 -1
  41. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  42. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +1 -1
  43. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  44. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
  45. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  46. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  47. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  48. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +1 -1
  49. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  50. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
  51. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  52. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
  53. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  54. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  55. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  56. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +1 -1
  57. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  58. package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
  59. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  60. package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
  61. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  62. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  63. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  64. package/dist/standalone/.next/server/app/api/answer/route.js +2 -1
  65. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  66. package/dist/standalone/.next/server/app/api/artifact/route.js +1 -1
  67. package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
  68. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  69. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  70. package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
  71. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  72. package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
  73. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  74. package/dist/standalone/.next/server/app/api/board/route.js +1 -1
  75. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  76. package/dist/standalone/.next/server/app/api/bridge/route.js +2 -2
  77. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  78. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  79. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  80. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  81. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  82. package/dist/standalone/.next/server/app/api/files/route.js +2 -2
  83. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  84. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  85. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  86. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  87. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  88. package/dist/standalone/.next/server/app/api/image/route.js +1 -1
  89. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  90. package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
  91. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  92. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  93. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  94. package/dist/standalone/.next/server/app/api/limits/history/route.js +1 -1
  95. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  96. package/dist/standalone/.next/server/app/api/limits/route.js +1 -1
  97. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  98. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  99. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  100. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  101. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  102. package/dist/standalone/.next/server/app/api/log/provenance/route.js +67 -1
  103. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
  104. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  105. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  106. package/dist/standalone/.next/server/app/api/log/suggestions/route.js +3 -0
  107. package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -0
  108. package/dist/standalone/.next/server/app/api/log/suggestions/route_client-reference-manifest.js +1 -0
  109. package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
  110. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  111. package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
  112. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  113. package/dist/standalone/.next/server/app/api/monitor/lock/route.js +1 -3
  114. package/dist/standalone/.next/server/app/api/monitor/lock/route.js.nft.json +1 -1
  115. package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -3
  116. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  117. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  118. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  119. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  120. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  121. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +2 -2
  122. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
  123. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  124. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  125. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
  126. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  127. package/dist/standalone/.next/server/app/api/pipelines/route.js +2 -2
  128. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  129. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +2 -2
  130. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  131. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  132. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  133. package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
  134. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
  135. package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
  136. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
  137. package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -0
  138. package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -0
  139. package/dist/standalone/.next/server/app/api/projects/directories/route_client-reference-manifest.js +1 -0
  140. package/dist/standalone/.next/server/app/api/push/route.js +2 -2
  141. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  142. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  143. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  144. package/dist/standalone/.next/server/app/api/roles/route.js +2 -2
  145. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  146. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +2 -1
  147. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  148. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
  149. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  150. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
  151. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  152. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
  153. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  154. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -0
  155. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -0
  156. package/dist/standalone/.next/server/app/api/runtime/hosts/route_client-reference-manifest.js +1 -0
  157. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +2 -1
  158. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  159. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +2 -1
  160. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  161. package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
  162. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  163. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +2 -1
  164. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  165. package/dist/standalone/.next/server/app/api/runtime/send/route.js +2 -1
  166. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  167. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
  168. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  169. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +2 -1
  170. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  171. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +2 -1
  172. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  173. package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
  174. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  175. package/dist/standalone/.next/server/app/api/search/transcripts/route.js +2 -2
  176. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
  177. package/dist/standalone/.next/server/app/api/session/route.js +1 -1
  178. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  179. package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
  180. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  181. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  182. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  183. package/dist/standalone/.next/server/app/api/spawn/policy/route.js +3 -3
  184. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  185. package/dist/standalone/.next/server/app/api/spawn/route.js +2 -2
  186. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  187. package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
  188. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  189. package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
  190. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  191. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  192. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  193. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  194. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  195. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +2 -1
  196. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  197. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +2 -1
  198. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  199. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  200. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  201. package/dist/standalone/.next/server/app/api/tasks/route.js +2 -2
  202. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  203. package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
  204. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
  205. package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
  206. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
  207. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  208. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  209. package/dist/standalone/.next/server/app/api/tmux/route.js +2 -1
  210. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  211. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  212. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  213. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
  214. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  215. package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
  216. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  217. package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
  218. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  219. package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
  220. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  221. package/dist/standalone/.next/server/app/api/tts/route.js +1 -1
  222. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  223. package/dist/standalone/.next/server/app/api/view/presence/route.js +1 -1
  224. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  225. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  226. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  227. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  228. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  229. package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
  230. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  231. package/dist/standalone/.next/server/app/index.html +1 -1
  232. package/dist/standalone/.next/server/app/index.rsc +3 -3
  233. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  234. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  235. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  236. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  237. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  238. package/dist/standalone/.next/server/app/page.js +17 -13
  239. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  240. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  241. package/dist/standalone/.next/server/app-paths-manifest.json +28 -25
  242. package/dist/standalone/.next/server/chunks/107.js +1 -0
  243. package/dist/standalone/.next/server/chunks/{1858.js → 1100.js} +2 -2
  244. package/dist/standalone/.next/server/chunks/1872.js +42 -0
  245. package/dist/standalone/.next/server/chunks/1952.js +3 -0
  246. package/dist/standalone/.next/server/chunks/2243.js +1 -0
  247. package/dist/standalone/.next/server/chunks/2260.js +104 -0
  248. package/dist/standalone/.next/server/chunks/2318.js +2 -2
  249. package/dist/standalone/.next/server/chunks/2324.js +1 -1
  250. package/dist/standalone/.next/server/chunks/2549.js +81 -0
  251. package/dist/standalone/.next/server/chunks/2682.js +85 -0
  252. package/dist/standalone/.next/server/chunks/3086.js +1 -1
  253. package/dist/standalone/.next/server/chunks/3214.js +1 -1
  254. package/dist/standalone/.next/server/chunks/3302.js +2 -0
  255. package/dist/standalone/.next/server/chunks/3336.js +1 -1
  256. package/dist/standalone/.next/server/chunks/3386.js +2 -0
  257. package/dist/standalone/.next/server/chunks/3558.js +1 -1
  258. package/dist/standalone/.next/server/chunks/3587.js +1 -1
  259. package/dist/standalone/.next/server/chunks/3740.js +20 -20
  260. package/dist/standalone/.next/server/chunks/3830.js +1 -0
  261. package/dist/standalone/.next/server/chunks/4191.js +1 -1
  262. package/dist/standalone/.next/server/chunks/4310.js +1 -0
  263. package/dist/standalone/.next/server/chunks/4509.js +1 -1
  264. package/dist/standalone/.next/server/chunks/4565.js +1 -0
  265. package/dist/standalone/.next/server/chunks/4651.js +2 -0
  266. package/dist/standalone/.next/server/chunks/4756.js +13 -0
  267. package/dist/standalone/.next/server/chunks/4972.js +1 -1
  268. package/dist/standalone/.next/server/chunks/5103.js +10 -0
  269. package/dist/standalone/.next/server/chunks/5408.js +1 -0
  270. package/dist/standalone/.next/server/chunks/5545.js +1 -0
  271. package/dist/standalone/.next/server/chunks/5689.js +1 -1
  272. package/dist/standalone/.next/server/chunks/6333.js +3 -3
  273. package/dist/standalone/.next/server/chunks/6487.js +10 -0
  274. package/dist/standalone/.next/server/chunks/6796.js +1 -1
  275. package/dist/standalone/.next/server/chunks/6820.js +99 -0
  276. package/dist/standalone/.next/server/chunks/6826.js +1 -1
  277. package/dist/standalone/.next/server/chunks/6839.js +81 -0
  278. package/dist/standalone/.next/server/chunks/6850.js +1 -1
  279. package/dist/standalone/.next/server/chunks/6909.js +1 -1
  280. package/dist/standalone/.next/server/chunks/6942.js +27 -0
  281. package/dist/standalone/.next/server/chunks/7139.js +82 -0
  282. package/dist/standalone/.next/server/chunks/7471.js +13 -13
  283. package/dist/standalone/.next/server/chunks/7644.js +2 -2
  284. package/dist/standalone/.next/server/chunks/7722.js +1 -1
  285. package/dist/standalone/.next/server/chunks/773.js +47 -0
  286. package/dist/standalone/.next/server/chunks/8263.js +81 -0
  287. package/dist/standalone/.next/server/chunks/8326.js +1 -0
  288. package/dist/standalone/.next/server/chunks/8444.js +1 -1
  289. package/dist/standalone/.next/server/chunks/8617.js +1 -1
  290. package/dist/standalone/.next/server/chunks/8817.js +1 -1
  291. package/dist/standalone/.next/server/chunks/8996.js +1 -1
  292. package/dist/standalone/.next/server/chunks/9307.js +1 -0
  293. package/dist/standalone/.next/server/chunks/9364.js +58 -58
  294. package/dist/standalone/.next/server/chunks/9381.js +42 -0
  295. package/dist/standalone/.next/server/chunks/9403.js +1 -0
  296. package/dist/standalone/.next/server/chunks/9434.js +3 -3
  297. package/dist/standalone/.next/server/chunks/9488.js +1 -0
  298. package/dist/standalone/.next/server/chunks/9750.js +1 -0
  299. package/dist/standalone/.next/server/chunks/9777.js +1 -0
  300. package/dist/standalone/.next/server/chunks/9937.js +1 -1
  301. package/dist/standalone/.next/server/chunks/9940.js +1 -1
  302. package/dist/standalone/.next/server/chunks/9998.js +1 -1
  303. package/dist/standalone/.next/server/files-response-worker.js +3 -3
  304. package/dist/standalone/.next/server/functions-config-manifest.json +3 -0
  305. package/dist/standalone/.next/server/instrumentation.js +1 -1
  306. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  307. package/dist/standalone/.next/server/pages/404.html +1 -1
  308. package/dist/standalone/.next/server/pages/500.html +1 -1
  309. package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
  310. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  311. package/dist/standalone/.next/server/wakatime-sync-worker.js +2 -2
  312. package/dist/standalone/.next/static/94yAMfjyhUPRgarycP9y4/_buildManifest.js +1 -0
  313. package/dist/standalone/.next/static/chunks/app/_global-error/page-ae02882983617748.js +1 -0
  314. package/dist/standalone/.next/static/chunks/app/api/access/route-ae02882983617748.js +1 -0
  315. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-ae02882983617748.js +1 -0
  316. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-ae02882983617748.js +1 -0
  317. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-ae02882983617748.js +1 -0
  318. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-ae02882983617748.js +1 -0
  319. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-ae02882983617748.js +1 -0
  320. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-ae02882983617748.js +1 -0
  321. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-ae02882983617748.js +1 -0
  322. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-ae02882983617748.js +1 -0
  323. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-ae02882983617748.js +1 -0
  324. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-ae02882983617748.js +1 -0
  325. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-ae02882983617748.js +1 -0
  326. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-ae02882983617748.js +1 -0
  327. package/dist/standalone/.next/static/chunks/app/api/accounts/route-ae02882983617748.js +1 -0
  328. package/dist/standalone/.next/static/chunks/app/api/agent/route-ae02882983617748.js +1 -0
  329. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-ae02882983617748.js +1 -0
  330. package/dist/standalone/.next/static/chunks/app/api/answer/route-ae02882983617748.js +1 -0
  331. package/dist/standalone/.next/static/chunks/app/api/artifact/route-ae02882983617748.js +1 -0
  332. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-ae02882983617748.js +1 -0
  333. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-ae02882983617748.js +1 -0
  334. package/dist/standalone/.next/static/chunks/app/api/attention/route-ae02882983617748.js +1 -0
  335. package/dist/standalone/.next/static/chunks/app/api/board/route-ae02882983617748.js +1 -0
  336. package/dist/standalone/.next/static/chunks/app/api/bridge/route-ae02882983617748.js +1 -0
  337. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-ae02882983617748.js +1 -0
  338. package/dist/standalone/.next/static/chunks/app/api/conversations/route-ae02882983617748.js +1 -0
  339. package/dist/standalone/.next/static/chunks/app/api/files/route-ae02882983617748.js +1 -0
  340. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-ae02882983617748.js +1 -0
  341. package/dist/standalone/.next/static/chunks/app/api/flows/route-ae02882983617748.js +1 -0
  342. package/dist/standalone/.next/static/chunks/app/api/image/route-ae02882983617748.js +1 -0
  343. package/dist/standalone/.next/static/chunks/app/api/inbox/route-ae02882983617748.js +1 -0
  344. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-ae02882983617748.js +1 -0
  345. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-ae02882983617748.js +1 -0
  346. package/dist/standalone/.next/static/chunks/app/api/limits/route-ae02882983617748.js +1 -0
  347. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-ae02882983617748.js +1 -0
  348. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-ae02882983617748.js +1 -0
  349. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-ae02882983617748.js +1 -0
  350. package/dist/standalone/.next/static/chunks/app/api/log/route-ae02882983617748.js +1 -0
  351. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-ae02882983617748.js +1 -0
  352. package/dist/standalone/.next/static/chunks/app/api/logs/route-ae02882983617748.js +1 -0
  353. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-ae02882983617748.js +1 -0
  354. package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-ae02882983617748.js +1 -0
  355. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-ae02882983617748.js +1 -0
  356. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-ae02882983617748.js +1 -0
  357. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-ae02882983617748.js +1 -0
  358. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-ae02882983617748.js +1 -0
  359. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-ae02882983617748.js +1 -0
  360. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-ae02882983617748.js +1 -0
  361. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-ae02882983617748.js +1 -0
  362. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-ae02882983617748.js +1 -0
  363. package/dist/standalone/.next/static/chunks/app/api/proc/route-ae02882983617748.js +1 -0
  364. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-ae02882983617748.js +1 -0
  365. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-ae02882983617748.js +1 -0
  366. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-ae02882983617748.js +1 -0
  367. package/dist/standalone/.next/static/chunks/app/api/push/route-ae02882983617748.js +1 -0
  368. package/dist/standalone/.next/static/chunks/app/api/resources/route-ae02882983617748.js +1 -0
  369. package/dist/standalone/.next/static/chunks/app/api/roles/route-ae02882983617748.js +1 -0
  370. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-ae02882983617748.js +1 -0
  371. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-ae02882983617748.js +1 -0
  372. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-ae02882983617748.js +1 -0
  373. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-ae02882983617748.js +1 -0
  374. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-ae02882983617748.js +1 -0
  375. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-ae02882983617748.js +1 -0
  376. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-ae02882983617748.js +1 -0
  377. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-ae02882983617748.js +1 -0
  378. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-ae02882983617748.js +1 -0
  379. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-ae02882983617748.js +1 -0
  380. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-ae02882983617748.js +1 -0
  381. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-ae02882983617748.js +1 -0
  382. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-ae02882983617748.js +1 -0
  383. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-ae02882983617748.js +1 -0
  384. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-ae02882983617748.js +1 -0
  385. package/dist/standalone/.next/static/chunks/app/api/session/route-ae02882983617748.js +1 -0
  386. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-ae02882983617748.js +1 -0
  387. package/dist/standalone/.next/static/chunks/app/api/session/title/route-ae02882983617748.js +1 -0
  388. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-ae02882983617748.js +1 -0
  389. package/dist/standalone/.next/static/chunks/app/api/spawn/route-ae02882983617748.js +1 -0
  390. package/dist/standalone/.next/static/chunks/app/api/staging/route-ae02882983617748.js +1 -0
  391. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-ae02882983617748.js +1 -0
  392. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-ae02882983617748.js +1 -0
  393. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-ae02882983617748.js +1 -0
  394. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-ae02882983617748.js +1 -0
  395. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-ae02882983617748.js +1 -0
  396. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-ae02882983617748.js +1 -0
  397. package/dist/standalone/.next/static/chunks/app/api/tasks/route-ae02882983617748.js +1 -0
  398. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-ae02882983617748.js +1 -0
  399. package/dist/standalone/.next/static/chunks/app/api/telegram/route-ae02882983617748.js +1 -0
  400. package/dist/standalone/.next/static/chunks/app/api/timeline/route-ae02882983617748.js +1 -0
  401. package/dist/standalone/.next/static/chunks/app/api/tmux/route-ae02882983617748.js +1 -0
  402. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-ae02882983617748.js +1 -0
  403. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-ae02882983617748.js +1 -0
  404. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-ae02882983617748.js +1 -0
  405. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-ae02882983617748.js +1 -0
  406. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-ae02882983617748.js +1 -0
  407. package/dist/standalone/.next/static/chunks/app/api/tts/route-ae02882983617748.js +1 -0
  408. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-ae02882983617748.js +1 -0
  409. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-ae02882983617748.js +1 -0
  410. package/dist/standalone/.next/static/chunks/app/api/workflows/route-ae02882983617748.js +1 -0
  411. package/dist/standalone/.next/static/chunks/app/page-1a141ae4aa9d31a9.js +85 -0
  412. package/dist/standalone/.next/static/chunks/{framework-d1de002210ddaaef.js → framework-04bc8c1a646a0097.js} +1 -1
  413. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ae02882983617748.js +1 -0
  414. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ae02882983617748.js +1 -0
  415. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ae02882983617748.js +1 -0
  416. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ae02882983617748.js +1 -0
  417. package/dist/standalone/.next/static/css/dc96fb2edbd8742e.css +1 -0
  418. package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/non-secure/index.cjs +2 -2
  419. package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/package.json +1 -1
  420. package/dist/standalone/node_modules/react/cjs/react.development.js +1 -1
  421. package/dist/standalone/node_modules/react/cjs/react.production.js +1 -1
  422. package/dist/standalone/node_modules/react/package.json +3 -3
  423. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  424. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  425. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
  426. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
  427. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
  428. package/dist/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  429. package/dist/standalone/node_modules/react-dom/package.json +4 -4
  430. package/dist/standalone/package.json +9 -8
  431. package/dist/standalone/src/lib/inboxFiles.ts +203 -0
  432. package/package.json +9 -8
  433. package/dist/standalone/.next/server/chunks/156.js +0 -2
  434. package/dist/standalone/.next/server/chunks/1920.js +0 -27
  435. package/dist/standalone/.next/server/chunks/2338.js +0 -12
  436. package/dist/standalone/.next/server/chunks/2904.js +0 -42
  437. package/dist/standalone/.next/server/chunks/2977.js +0 -1
  438. package/dist/standalone/.next/server/chunks/3139.js +0 -10
  439. package/dist/standalone/.next/server/chunks/3598.js +0 -81
  440. package/dist/standalone/.next/server/chunks/4968.js +0 -1
  441. package/dist/standalone/.next/server/chunks/6977.js +0 -1
  442. package/dist/standalone/.next/server/chunks/7295.js +0 -10
  443. package/dist/standalone/.next/server/chunks/7868.js +0 -1
  444. package/dist/standalone/.next/server/chunks/8026.js +0 -1
  445. package/dist/standalone/.next/server/chunks/8600.js +0 -12
  446. package/dist/standalone/.next/server/chunks/9246.js +0 -47
  447. package/dist/standalone/.next/server/chunks/9733.js +0 -42
  448. package/dist/standalone/.next/static/2ybXlxpylgBaGz43zp2fM/_buildManifest.js +0 -1
  449. package/dist/standalone/.next/static/chunks/app/_global-error/page-c132c5ba005ff29e.js +0 -1
  450. package/dist/standalone/.next/static/chunks/app/api/access/route-c132c5ba005ff29e.js +0 -1
  451. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-c132c5ba005ff29e.js +0 -1
  452. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-c132c5ba005ff29e.js +0 -1
  453. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-c132c5ba005ff29e.js +0 -1
  454. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-c132c5ba005ff29e.js +0 -1
  455. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-c132c5ba005ff29e.js +0 -1
  456. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-c132c5ba005ff29e.js +0 -1
  457. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-c132c5ba005ff29e.js +0 -1
  458. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-c132c5ba005ff29e.js +0 -1
  459. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-c132c5ba005ff29e.js +0 -1
  460. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-c132c5ba005ff29e.js +0 -1
  461. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-c132c5ba005ff29e.js +0 -1
  462. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-c132c5ba005ff29e.js +0 -1
  463. package/dist/standalone/.next/static/chunks/app/api/accounts/route-c132c5ba005ff29e.js +0 -1
  464. package/dist/standalone/.next/static/chunks/app/api/agent/route-c132c5ba005ff29e.js +0 -1
  465. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-c132c5ba005ff29e.js +0 -1
  466. package/dist/standalone/.next/static/chunks/app/api/answer/route-c132c5ba005ff29e.js +0 -1
  467. package/dist/standalone/.next/static/chunks/app/api/artifact/route-c132c5ba005ff29e.js +0 -1
  468. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-c132c5ba005ff29e.js +0 -1
  469. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-c132c5ba005ff29e.js +0 -1
  470. package/dist/standalone/.next/static/chunks/app/api/attention/route-c132c5ba005ff29e.js +0 -1
  471. package/dist/standalone/.next/static/chunks/app/api/board/route-c132c5ba005ff29e.js +0 -1
  472. package/dist/standalone/.next/static/chunks/app/api/bridge/route-c132c5ba005ff29e.js +0 -1
  473. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-c132c5ba005ff29e.js +0 -1
  474. package/dist/standalone/.next/static/chunks/app/api/conversations/route-c132c5ba005ff29e.js +0 -1
  475. package/dist/standalone/.next/static/chunks/app/api/files/route-c132c5ba005ff29e.js +0 -1
  476. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-c132c5ba005ff29e.js +0 -1
  477. package/dist/standalone/.next/static/chunks/app/api/flows/route-c132c5ba005ff29e.js +0 -1
  478. package/dist/standalone/.next/static/chunks/app/api/image/route-c132c5ba005ff29e.js +0 -1
  479. package/dist/standalone/.next/static/chunks/app/api/inbox/route-c132c5ba005ff29e.js +0 -1
  480. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-c132c5ba005ff29e.js +0 -1
  481. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-c132c5ba005ff29e.js +0 -1
  482. package/dist/standalone/.next/static/chunks/app/api/limits/route-c132c5ba005ff29e.js +0 -1
  483. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-c132c5ba005ff29e.js +0 -1
  484. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-c132c5ba005ff29e.js +0 -1
  485. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-c132c5ba005ff29e.js +0 -1
  486. package/dist/standalone/.next/static/chunks/app/api/log/route-c132c5ba005ff29e.js +0 -1
  487. package/dist/standalone/.next/static/chunks/app/api/logs/route-c132c5ba005ff29e.js +0 -1
  488. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-c132c5ba005ff29e.js +0 -1
  489. package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-c132c5ba005ff29e.js +0 -1
  490. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-c132c5ba005ff29e.js +0 -1
  491. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-c132c5ba005ff29e.js +0 -1
  492. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-c132c5ba005ff29e.js +0 -1
  493. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-c132c5ba005ff29e.js +0 -1
  494. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-c132c5ba005ff29e.js +0 -1
  495. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-c132c5ba005ff29e.js +0 -1
  496. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-c132c5ba005ff29e.js +0 -1
  497. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-c132c5ba005ff29e.js +0 -1
  498. package/dist/standalone/.next/static/chunks/app/api/proc/route-c132c5ba005ff29e.js +0 -1
  499. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-c132c5ba005ff29e.js +0 -1
  500. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-c132c5ba005ff29e.js +0 -1
  501. package/dist/standalone/.next/static/chunks/app/api/push/route-c132c5ba005ff29e.js +0 -1
  502. package/dist/standalone/.next/static/chunks/app/api/resources/route-c132c5ba005ff29e.js +0 -1
  503. package/dist/standalone/.next/static/chunks/app/api/roles/route-c132c5ba005ff29e.js +0 -1
  504. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-c132c5ba005ff29e.js +0 -1
  505. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-c132c5ba005ff29e.js +0 -1
  506. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-c132c5ba005ff29e.js +0 -1
  507. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-c132c5ba005ff29e.js +0 -1
  508. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-c132c5ba005ff29e.js +0 -1
  509. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-c132c5ba005ff29e.js +0 -1
  510. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-c132c5ba005ff29e.js +0 -1
  511. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-c132c5ba005ff29e.js +0 -1
  512. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-c132c5ba005ff29e.js +0 -1
  513. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-c132c5ba005ff29e.js +0 -1
  514. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-c132c5ba005ff29e.js +0 -1
  515. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-c132c5ba005ff29e.js +0 -1
  516. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-c132c5ba005ff29e.js +0 -1
  517. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-c132c5ba005ff29e.js +0 -1
  518. package/dist/standalone/.next/static/chunks/app/api/session/route-c132c5ba005ff29e.js +0 -1
  519. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-c132c5ba005ff29e.js +0 -1
  520. package/dist/standalone/.next/static/chunks/app/api/session/title/route-c132c5ba005ff29e.js +0 -1
  521. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-c132c5ba005ff29e.js +0 -1
  522. package/dist/standalone/.next/static/chunks/app/api/spawn/route-c132c5ba005ff29e.js +0 -1
  523. package/dist/standalone/.next/static/chunks/app/api/staging/route-c132c5ba005ff29e.js +0 -1
  524. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-c132c5ba005ff29e.js +0 -1
  525. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-c132c5ba005ff29e.js +0 -1
  526. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-c132c5ba005ff29e.js +0 -1
  527. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-c132c5ba005ff29e.js +0 -1
  528. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-c132c5ba005ff29e.js +0 -1
  529. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-c132c5ba005ff29e.js +0 -1
  530. package/dist/standalone/.next/static/chunks/app/api/tasks/route-c132c5ba005ff29e.js +0 -1
  531. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-c132c5ba005ff29e.js +0 -1
  532. package/dist/standalone/.next/static/chunks/app/api/telegram/route-c132c5ba005ff29e.js +0 -1
  533. package/dist/standalone/.next/static/chunks/app/api/timeline/route-c132c5ba005ff29e.js +0 -1
  534. package/dist/standalone/.next/static/chunks/app/api/tmux/route-c132c5ba005ff29e.js +0 -1
  535. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-c132c5ba005ff29e.js +0 -1
  536. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-c132c5ba005ff29e.js +0 -1
  537. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-c132c5ba005ff29e.js +0 -1
  538. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-c132c5ba005ff29e.js +0 -1
  539. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-c132c5ba005ff29e.js +0 -1
  540. package/dist/standalone/.next/static/chunks/app/api/tts/route-c132c5ba005ff29e.js +0 -1
  541. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-c132c5ba005ff29e.js +0 -1
  542. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-c132c5ba005ff29e.js +0 -1
  543. package/dist/standalone/.next/static/chunks/app/api/workflows/route-c132c5ba005ff29e.js +0 -1
  544. package/dist/standalone/.next/static/chunks/app/page-7ba2538fa87e3d62.js +0 -80
  545. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c132c5ba005ff29e.js +0 -1
  546. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c132c5ba005ff29e.js +0 -1
  547. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c132c5ba005ff29e.js +0 -1
  548. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c132c5ba005ff29e.js +0 -1
  549. package/dist/standalone/.next/static/css/498f12ddef7ecb0e.css +0 -1
  550. /package/dist/standalone/.next/static/{2ybXlxpylgBaGz43zp2fM → 94yAMfjyhUPRgarycP9y4}/_ssgManifest.js +0 -0
  551. /package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/non-secure/package.json +0 -0
@@ -1,12 +1,12 @@
1
- "use strict";exports.id=9364,exports.ids=[9364],exports.modules={873:(a,b,c)=>{c.d(b,{sy:()=>k,gR:()=>i,xq:()=>l,releaseStructuredDeliveryHost:()=>n,A:()=>m,pr:()=>j}),c(77598),c(74030),c(55883);var d=c(31973);c(88602),c(65862),c(33353),c(88417),c(57726),c(4406),c(58347),c(58874),new TextEncoder,new TextDecoder,c(53835),c(36855);let e=process,f=e.__llvStructuredDeliveryController??={activeQueue:null,activeRegistry:null,activeHosts:null,registerActiveHost:null,republishActiveHost:null,releaseActiveHost:null,terminateActiveHost:null,completeActive:null,stopActive:()=>{}},g="structured-delivery-controller-unavailable";class h extends Error{constructor(){super("structured delivery controller is unavailable"),this.code=g,this.name="StructuredDeliveryControllerUnavailableError"}}function i(a){return a instanceof h||"object"==typeof a&&null!==a&&"code"in a&&a.code===g}function j(){let a=f.registerActiveHost;if(!a)throw new h;return a}function k(a){return f.activeHosts?.has((0,d.pp)(a))??!1}async function l(a,b){return j()(a,b)}async function m(a){return await f.republishActiveHost?.(a)??!1}async function n(a){return await f.releaseActiveHost?.(a)??!1}},957:(a,b,c)=>{c.d(b,{UA:()=>aT,n6:()=>bd});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57726);c(53133);var k=c(85923),l=c(4351),m=c(55883),n=c(68574),o=c(31973),p=c(69882);function q(a){let b,c;try{b=g().realpathSync(a),c=g().statSync(b)}catch{return!1}return!!c.isFile()&&!!b.endsWith(".jsonl")&&(!!(0,p.Ps)(b)||!!(0,p.Bz)(b))}var r=c(91836),s=c(87380),t=c(10508),u=c(98918),v=c(14607);c(56514);var w=c(88602),x=c(29966),y=c(48161),z=c.n(y),A=c(59988);let B=/(?:%2[Ff][A-Za-z0-9._+-]+){2,}/g,C=["home","Users","root"],D=RegExp(`-(?:${C.join("|")})(?:-[A-Za-z0-9._+]+)+`,"g"),E=RegExp(`(?<![\\w.-])\\/(?:${C.join("|")})(?:\\/[A-Za-z0-9._-]+)?`,"g"),F=/(?<![\w:/~.%-])\/[A-Za-z0-9._+-]+(?:\/[A-Za-z0-9._+-]+)+/g,G=/(?<![\w.+-])[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g;function H(a){let b=a.split("/").filter(Boolean).at(-1);return b?`…/${b}`:"…"}function I(a,b){let c,d,e=(c=z().homedir(),d=(d=(d=(d=(0,A.j)(a)).replace(G,"[redacted-email]")).replace(B,"…")).replace(D,"…"),c&&"/"!==c&&(d=d.split(c).join("~")),d=(d=d.replace(E,"~")).replace(F,H)).trim();return e.length<=b?e:`${e.slice(0,b-1).trimEnd()}…`}var J=c(2496),K=c(43271),L=c(24534);c(68822);var M=c(62142),N=c(89364),O=c(53388),P=c(56404),Q=c(28388),R=c(7058);async function S(a,b){let c=await (0,R.mR)(b);if("complete"!==c.integrity)return null;let d="codex"===a,e=(0,Q.j)(c.records,d),f=0;try{f=g().statSync(b).mtimeMs}catch{}let h=(0,t.uc)(c.records,d?"codex-sessions":"claude-projects",f);return{turn:"terminal"===e.state?"terminal":"busy"===e.state?"busy":"unknown",message:h}}function T(a,b){return{ok:!1,error:`${a}: ${(b.stderr||b.stdout||"no output").trim()}`}}function U(a){return/^[A-Za-z0-9][A-Za-z0-9._/-]{0,254}$/.test(a)&&!a.includes("..")&&!a.includes("//")&&!a.includes("@{")&&!a.endsWith("/")&&!a.endsWith(".")&&!a.endsWith(".lock")}function V(a,b){if(!U(a.branch))return{ok:!1,error:"the pipeline branch is invalid"};let c=b("git",["status","--porcelain"],a.worktreeDir);if(0!==c.code)return T("checking the pipeline worktree",c);if(c.stdout.trim())return{ok:!1,error:"the pipeline worktree has uncommitted changes; choose whether to commit or discard them before retrying review"};let d=b("git",["branch","--show-current"],a.worktreeDir);if(0!==d.code)return T("checking the pipeline branch",d);if(d.stdout.trim()!==a.branch)return{ok:!1,error:"the pipeline worktree is not checked out on its persisted branch"};let e=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==e.code)return T("resolving the pipeline branch HEAD",e);let f=e.stdout.trim();return/^[0-9a-f]{40}$/i.test(f)?{ok:!0,sha:f}:{ok:!1,error:"resolving the pipeline branch HEAD: expected an exact commit SHA"}}function W(a,b,c){let d=b("timeout",["--signal=KILL","5s","git","ls-remote","--heads","origin",`refs/heads/${a.branch}`],a.worktreeDir);return 0===d.code?{ok:!0,sha:d.stdout.trim().split(/\s+/)[0]??""}:124===d.code||137===d.code?{ok:!1,error:`${c}: git remote read timed out after 5s`}:T(c,d)}function X(a,b,c){let d=c.acceptedSha;if(!/^[0-9a-f]{40}$/i.test(d))return{ok:!1,error:`the accepted pipeline revision is not an exact commit SHA: ${d||"absent"}`};let e=V(a,b);if(!e.ok)return e;if(e.sha!==d)return{ok:!1,error:`the pipeline worktree is at ${e.sha}, not the accepted revision ${d}; nothing was published`};if(c.publishedSha&&c.publishedSha===d)return{ok:!0,sha:d,remote:"published"};let f=b("git",["remote","get-url","origin"],a.worktreeDir);if(0!==f.code||!f.stdout.trim())return{ok:!0,sha:d,remote:"unavailable"};let g=W(a,b,"checking the remote pipeline branch");if(!g.ok)return{ok:!0,sha:d,remote:"unreachable",detail:g.error};let h=g.sha;if(h===d)return{ok:!0,sha:d,remote:"published"};if(h){if(!/^[0-9a-f]{40}$/i.test(h))return{ok:!1,error:"the remote pipeline branch has no exact commit SHA"};if(0!==b("git",["cat-file","-e",`${h}^{commit}`],a.worktreeDir).code){let c=b("git",["fetch","--no-tags","origin",`+refs/heads/${a.branch}:refs/remotes/origin/${a.branch}`],a.worktreeDir);if(0!==c.code)return T("fetching the remote pipeline branch",c)}let c=b("git",["merge-base","--is-ancestor",h,d],a.worktreeDir);if(1===c.code)return{ok:!1,error:"the local and remote pipeline branches diverged; choose which revision to publish before the review stage can start"};if(0!==c.code)return T("comparing local and remote pipeline revisions",c)}let i=b("git",["push","origin",`${d}:refs/heads/${a.branch}`],a.worktreeDir);if(0!==i.code)return T("publishing the pipeline branch",i);let j=W(a,b,"confirming the published pipeline branch");if(!j.ok)return{ok:!0,sha:d,remote:"unreachable",detail:j.error};let k=j.sha;return k!==d?{ok:!1,error:`publishing the pipeline branch did not land: origin/${a.branch} is ${k||"absent"}, expected ${d}`}:{ok:!0,sha:d,remote:"published"}}var Y=c(31421);let Z={homeDir:z().homedir,stat:g().statSync,access:g().accessSync,exec:(a,b,c)=>{if("git"!==a)return(0,O.Ix)(a,b,c);let d=(0,Y.spawnSync)(a,b,{cwd:c,encoding:"utf8",timeout:4e3});return d.error?{code:null,stdout:"",stderr:"ETIMEDOUT"===d.error.code?`git ${b.join(" ")} timed out after 4000ms`:d.error.message}:{code:d.status,stdout:d.stdout??"",stderr:d.stderr??""}}},$=/not a (?:git )?repository/i;function _(a,b){return"not_git"===a.failCode?{ok:!1,code:"not_git",path:b}:{ok:!1,code:"probe_failed",path:b,detail:a.detail}}function aa(a){let b=a.stdout.trim();if(0===a.code&&b)return{value:b};let c=(a.stderr||a.stdout||"").trim();return null!==a.code&&0!==a.code&&$.test(a.stderr)?{failCode:"not_git",detail:c||"not a git repository"}:{failCode:"probe_failed",detail:c||"the git repository probe failed"}}let ab=new Map;function ac(a,b,c){try{return a.access(b,c),!1}catch{return!0}}function ad(a,b=Z,c={}){var d,e;let f,h,j,k=(d=b.homeDir(),j="~"===(h=a.trim())||h.startsWith("~/")?i().join(d,h.slice(1)):h,i().resolve(j)),l=c.now??Date.now;if(c.cache){let a,b=(e=l(),(a=ab.get(k))?e-a.at>5e3?(ab.delete(k),null):a.result:null);if(b)return b}try{f=b.stat(k)}catch(a){return{ok:!1,code:"ENOENT"===a.code?"missing":"repo_untraversable",path:k}}if(!f.isDirectory())return{ok:!1,code:"not_directory",path:k};if(ac(b,k,g().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:k};if(ac(b,k,g().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:k};let m=aa(b.exec("git",["rev-parse","--show-toplevel"],k));if("failCode"in m)return _(m,k);let n=i().resolve(m.value);if(n!==k){if(ac(b,n,g().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:n};if(ac(b,n,g().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:n}}let o=aa(b.exec("git",["rev-parse","--path-format=absolute","--git-common-dir"],n));if("failCode"in o)return _(o,n);let p=i().resolve(n,o.value);if(ac(b,p,g().constants.W_OK|g().constants.X_OK))return{ok:!1,code:"git_metadata_unwritable",path:p};let q=i().dirname(n);if(ac(b,q,g().constants.W_OK|g().constants.X_OK))return{ok:!1,code:"worktree_parent_unwritable",path:q};let r={ok:!0,repoDir:n,gitCommonDir:p,worktreeParent:q};return c.cache&&function(a,b,c){for(let d of a)ab.delete(d),ab.set(d,{result:b,at:c});for(;ab.size>32;){let a=ab.keys().next().value;if(void 0===a)break;ab.delete(a)}}([...new Set([k,n])],r,l()),r}function ae(a,b,c){return a.split(b).join(c)}var af=c(55204),ag=c(73385);c(61899),c(2208);var ah=c(80026);let ai=(a,b)=>{let c=(0,af.OH)().find(b=>b.id===a);if(!c)return null;let d=Object.fromEntries(c.parameters.map(a=>{let c=b?.[a.key],d=void 0!==c&&""!==c?c:(0,ah.y)(a);return[a.key,d]})),e=(0,af.hB)(c,d),f=(0,af.X2)(c);return{...(0,af.aW)(c,d),access:c.capabilities.includes("read-only")?"read-only":"read-write",promptScaffold:`${e.slice(0,ag.le-f.length)}${f}`}};var aj=c(31612),ak=c(4863);async function al(a,b){let c,d=j.lD.resolveSpawn(a.role.engine),f=function(a){if(!a)return{conversationId:null,sessionKey:null};let b=(0,p.Ps)(a)?"codex":(0,p.Bz)(a)?"claude":null;if(!b)return{conversationId:null,sessionKey:null};let c=(0,m.tk)();return{conversationId:(c.conversationForPath(a)??c.ensureConversation(b,a,null)).id,sessionKey:(0,o.sz)(b,a)}}(a.parentPath),g=(0,l.lV)(a.role.engine,a.cwd,{model:a.role.model,effort:a.role.effort,readOnly:"read-only"===a.role.access,permissionMode:"claude"===a.role.engine?"bypassPermissions":null,codexHome:"codex"===a.role.engine?d.home:null,claudeConfigDir:"claude"===a.role.engine?d.home:null,claudeProjectsDir:"claude"===a.role.engine?d.transcriptRoot:null}),h=(0,k.Ui)({...g.launchProfile??{},cwd:a.cwd,parentConversationId:f.conversationId}),i=(0,m.tk)(),n=a.supersedes?.startsWith("conversation_")&&i.conversation(a.supersedes)?i.canonicalConversationId(a.supersedes):null,q=e().createHash("sha256").update(JSON.stringify({engine:a.role.engine,model:a.role.model,effort:a.role.effort,cwd:a.cwd,parentConversationId:f.conversationId,...n?{supersedes:n}:{},prompt:a.prompt})).digest("hex"),r=a.creatorConversationId?.startsWith("conversation_")?i.canonicalConversationId(a.creatorConversationId):null,s=i.beginSpawnRequest({engine:a.role.engine,cwd:a.cwd,transport:"structured",accountId:d.accountId,accountPin:!0,parentConversationId:f.conversationId,parentSessionKey:f.sessionKey,parentArtifactPath:f.conversationId?a.parentPath:null,role:a.role.roleId,origin:{kind:"container",container:"pipeline",containerId:a.membership.containerId,creatorConversationId:r},memberships:[{...a.membership,parentConversationId:f.conversationId}],launchProfile:h,clientAttemptId:a.clientAttemptId,requestDigest:q,supersedes:n,supersedesReason:"stage-retry"});if("conflict"===s.kind)throw Error("pipeline spawn attempt conflicts with its original request");if(b({launchId:s.receipt.launchId,conversationId:s.receipt.conversationId}),"replay"===s.kind){let a=i.conversation(s.receipt.conversationId),b=s.receipt.artifactPath??a?.generations.at(-1)?.path??null;return{launchId:s.receipt.launchId,conversationId:s.receipt.conversationId,sessionId:s.receipt.key?.sessionId??null,transcript:b,paneId:s.receipt.verifiedHost?.paneId??s.receipt.pane?.paneId??null}}let t={...g,launchProfile:h},u=(0,w.sS)(),y=(0,x.lN)("pipeline structured runtime host");if(!u)throw Error(y);try{c=await (0,K.sh)({engine:a.role.engine,receipt:s.receipt,spec:t,account:d,prompt:a.prompt,registry:i,client:u})}catch(a){if((0,w.o7)(a))throw Error(y,{cause:a});throw a}let z=c.path??null,A=z?(0,o.sz)(a.role.engine,z):null;return z&&a.parentPath&&f.conversationId&&((0,v.A6)(z,a.parentPath),(0,v.OA)()),{launchId:s.receipt.launchId,conversationId:s.receipt.conversationId,sessionId:A?.sessionId??null,transcript:z,paneId:null}}let am=new Set(["delivered"]),an=new Set(["failed","rejected"]);async function ao(a){let b=(0,m.tk)(),d=(a.conversationId?.startsWith("conversation_")?b.conversation(a.conversationId):null)??(a.agentPath?b.conversationForPath(a.agentPath):null),e=d?.generations.at(-1)??null;if(!d||!e)return null;let f=(0,o.pp)({engine:d.engine,sessionId:e.id}),{structuredHostProcessAlive:g}=await Promise.resolve().then(c.bind(c,58874));return{conversationId:d.id,transcriptPath:e.path,resident:()=>{let a=b.readOnlySnapshot().entries[f];return!!a&&"dead"!==a.status&&"unhosted"!==a.status&&(g(a.structuredHost?.process??null)||!!a.host)},host:()=>b.readOnlySnapshot().entries[f]?.host??null}}async function ap(a,b={}){let c=a.paneId;if(!c)return{outcome:"not-running"};let d=b.paneSnapshot??N.RZ,e=a=>a?`pane ${c} now runs ${a.command} in window ${a.windowName}`:`pane ${c}`;try{let f=await ao(a),g=f?.host()??null;if(!g||g.paneId!==c){let a=await d(c);if(!a||(0,M.g2)(a.command))return{outcome:"not-running"};return{outcome:"unknown",detail:`${e(a)} and cannot be identified as this stage's agent; stop it yourself if it is the orphan, or close again with acknowledgeHosts to dismiss it`}}if(await (b.killHostIfMatches??N.B$)(g))return{outcome:"stopped"};let h=await d(c);if(!h||(0,M.g2)(h.command))return{outcome:"not-running"};return{outcome:"unknown",detail:`${e(h)}; it changed or its agent did not exit, so it was left running`}}catch(a){return{outcome:"failed",error:a instanceof Error?a.message:String(a)}}}async function aq(a,b={}){try{let d=await ao(a);if(!d||!d.resident())return{outcome:"not-running"};let{conversationId:e,transcriptPath:f,resident:g}=d,{applyConversationAction:h}=await c.e(6909).then(c.bind(c,56909)),i=await h({conversationId:e,transcriptPath:f,action:"kill"}),j=i.body;if(i.status>=400||!0!==j.ok)return{outcome:"failed",error:j.error??`stage host kill was refused with status ${i.status}`};let k=j.receipt?.status??null;if(!k||am.has(k))return{outcome:"stopped"};let l=j.operationId??null,m=void 0===b.client?(0,w.sS)():b.client,n=b.now??Date.now,o=b.sleep??(a=>new Promise(b=>setTimeout(b,a))),p=n()+(b.budgetMs??1500),q=b.intervalMs??250;for(let a=0;a<8;a+=1){if(!g())return{outcome:"stopped"};if(l&&m){let a=await m.operationStatus(l).catch(()=>null),b=a?.receipt.status??null;if(b&&am.has(b))return{outcome:"stopped"};if(b&&an.has(b))return{outcome:"failed",error:a?.receipt.reason??`stage host kill ${b} (operation ${l})`}}if(n()>=p)break;await o(q)}if(!g())return{outcome:"stopped"};return{outcome:"unconfirmed",operationId:l,detail:`kill accepted as ${k} but termination was not confirmed`}}catch(a){return{outcome:"failed",error:a instanceof Error?a.message:String(a)}}}let ar=new Set,as=new Set(["completed","closed"]),at="stage completed without a valid final JSON verdict",au="historical attempt completed without a valid final JSON verdict";function av(a,b,c){return`${a.id}:${b.id}:${c.n}`}function aw(a){return a.cursor?a.stages.find(b=>b.id===a.cursor?.stageId)??null:null}function ax(a,b){return a.runs.find(a=>a.stageId===b)??null}function ay(a,b){return ax(a,b)?.attempts.findLast(a=>!a.historical)??null}function az(a){let b=a?Date.parse(a):0;return Number.isFinite(b)?b:0}function aA(a){return"string"==typeof a?a.trim()||null:"number"==typeof a&&Number.isFinite(a)?String(a):null}function aB(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let b=aA(a.severity),c=aA(a.file),d=aA(a.line),e=[b,c?`${c}${d?`:${d}`:""}`:d?`line ${d}`:null,aA(a.summary)].filter(a=>!!a);return e.length>0?e.join(" — "):a}function aC(a){let b,c=[...a.matchAll(/```(?:json)?\s*([\s\S]*?)```/gi)].at(-1);if(!c||void 0===c.index)return a;try{b=JSON.parse(c[1]??"")}catch{return a}if(!b||"object"!=typeof b||Array.isArray(b))return a;let d=b;if(!Array.isArray(d.findings)||!d.findings.some(a=>a&&"object"==typeof a&&!Array.isArray(a)))return a;let e={...d,findings:d.findings.map(aB)},f=c[0],g=c[1]??"",h=f.indexOf(g),i=c.index+h;return`${a.slice(0,i)}${JSON.stringify(e)}${a.slice(i+g.length)}`}function aD(a){return(0,ak.fM)(aC(a))}function aE(a){return(0,ak.DL)(aC(a))}function aF(a,b,c){let d=a.verdictRecovery;d&&"recovered"!==d.state&&(a.verdictRecovery={...d,state:"recovered",lastCheckedAt:b,nextCheckAt:null,messageTs:c})}function aG(a,b,c,d,e){let f=c.now(),g=b.verdictRecovery?.state==="pending"?b.verdictRecovery:null,h=null!==e&&g?.messageTs!==null&&g?.messageTs!==void 0&&e>g.messageTs;if(g&&!h&&az(f)<az(g.nextCheckAt))return;let i=(g?.checks??0)+1,j={state:i>=3?"exhausted":"pending",checks:i,maxChecks:3,startedAt:g?.startedAt??f,lastCheckedAt:f,nextCheckAt:i>=3?null:new Date(az(f)+3e4).toISOString(),reason:d,messageTs:e};if(b.verdictRecovery=j,"exhausted"===j.state){b.completedAt=f,aH(a,`stage verdict recovery exhausted after 3 checks: ${d}`,b);return}b.state="running",b.error=null,a.state="running",a.stateDetail=`re-evaluating terminal stage verdict (${i}/3): ${d}`}function aH(a,b,c){c&&"failed"!==c.state&&(c.state="needs_decision"),c&&(c.error=b),a.state="needs_decision",a.pausedState=null,a.stateDetail=b}function aI(a,b,c){let d=a.cursor?.stageId===b?{input:a.cursor.input,activatedBy:a.cursor.activatedBy}:{input:null,activatedBy:null};a.cursor={stageId:b,state:c,...d}}function aJ(a){if(!a.cursor)return"";let b=a.stages.findIndex(b=>b.id===a.cursor?.stageId);for(let c=b-1;c>=0;c-=1){let b=ay(a,a.stages[c].id);if(b?.output)return b.output}return""}function*aK(a,b){let c=new Set,d=ay(a,b)?.activatedBy??(a.cursor?.stageId===b?a.cursor.activatedBy:null);for(;d;){let b=`${d.stageId}:${d.attempt}`;if(c.has(b))break;c.add(b);let e=a.stages.find(a=>a.id===d.stageId)??null,f=ax(a,d.stageId)?.attempts.find(a=>a.n===d.attempt)??null;if(!e||!f)break;yield{stage:e,attempt:f,boundary:null==f.activatedBy},d=f.activatedBy}}function aL(a,b){let c=!0;for(let d of aK(a,b)){if("run"===d.stage.kind&&"passed"===d.attempt.state&&d.attempt.agentPath)return d.attempt;c=d.boundary}if(!c)return null;let d=a.stages.findIndex(a=>a.id===b);for(let b=d-1;b>=0;b-=1){let c=a.stages[b];if("run"!==c.kind)continue;let d=ay(a,c.id);if(d?.state==="passed"&&d.agentPath)return d}return null}function aM(a,b){let c=ax(a,b.id);if(!c)return aH(a,"pipeline stage run record is missing"),null;let d=a.cursor?.stageId===b.id?a.cursor:null,e={n:c.attempts.length+1,state:"pending",effectiveRole:structuredClone(b.effectiveRole),launchId:null,conversationId:null,sessionId:null,agentPath:null,paneId:null,flowId:null,expectedReviewHeadSha:null,reviewHeadSha:null,startedAt:null,completedAt:null,input:d?.input??null,activatedBy:d?.activatedBy?{...d.activatedBy}:null,output:null,verdict:null,error:null};return c.attempts.push(e),e}async function aN(a,b,c){let d=!1;for(let e of a.runs)for(let f of e.attempts){if(!f.historical||!["spawning","running"].includes(f.state))continue;let e=JSON.stringify(f);if(a$(a,f,b,c),!f.agentPath){if(f.launchId){let a=c.spawnReceipt(f.launchId);a&&(f.conversationId=a.conversationId,f.sessionId=a.sessionId,f.agentPath=a.transcript,f.paneId=a.paneId,("failed"===a.state||"conflicted"===a.state)&&(f.state="failed",f.completedAt=c.now(),f.error=`historical spawn ended in receipt state ${a.state}`))}d=JSON.stringify(f)!==e||d;continue}let g=await c.durableTurnEvidence(f.effectiveRole.engine,f.agentPath);if(!(g?.turn==="terminal"&&null!==g.message&&g.message.ts>az(f.startedAt))){d=JSON.stringify(f)!==e||d;continue}let h=aD(g.message.text);f.completedAt=new Date(g.message.ts).toISOString(),f.output=null,h?"failureReason"in h?(f.state="failed",f.error=h.failureReason):(f.verdict=h.verdict,f.state="pass"===h.verdict.status?"passed":"fail"===h.verdict.status?"failed":"needs_decision",f.error=h.verdict.findings?.[0]??null):(f.state="failed",f.error=au),d=JSON.stringify(f)!==e||d}return d}function aO(a,b){a.flowId=b.id;let c=b.rounds.at(-1);a.launchId=c?.launchId??a.launchId,a.sessionId=c?.sessionId??a.sessionId,a.agentPath=c?.reviewerPath??a.agentPath,a.conversationId=c?.reviewerConversationId??a.conversationId,a.paneId=c?.reviewerPane?.paneId??a.paneId}let aP=new Set(["approved","done_comment","needs_decision","closed"]),aQ="review flow host claim retry: ",aR="review flow relay retry: ";function aS(a,b,c){let d=b.rounds.at(-1)??null,f=b.rounds.findLast(a=>a.reviewHeadSha)?.reviewHeadSha??b.targetSha??null,g=d?.reviewHeadSha??null,h=function(a){let b=[a.createdAt,a.closedAt];for(let c of a.rounds)b.push(c.startedAt,c.spawnStartedAt??null,c.reviewedAt,c.relayStartedAt??null,c.relayedAt,c.terminalAt??null);return b.filter(a=>!!a).sort((a,b)=>b.localeCompare(a))[0]??null}(b),i=h?Date.parse(h):NaN,j=Date.parse(c),k={sourceRevision:b.revision??0,roundCount:b.rounds.length,implementerHeadSha:f,reviewerHeadSha:g,verdict:d?.verdict??null,relayState:b.state,terminalState:aP.has(b.state)?b.state:null,hostClaim:b.hostClaim??null,sourceUpdatedAt:h},l=e().createHash("sha256").update(JSON.stringify({...k,stateDetail:b.stateDetail,implementerPath:b.implementerPath,implementerConversationId:b.implementerConversationId??null,rounds:b.rounds.map(a=>({n:a.n,reviewerPath:a.reviewerPath,reviewerConversationId:a.reviewerConversationId??null,reviewHeadSha:a.reviewHeadSha??null,verdict:a.verdict,reviewedAt:a.reviewedAt,relayStartedAt:a.relayStartedAt??null,relayedAt:a.relayedAt,terminalAt:a.terminalAt??null,error:a.error}))})).digest("hex").slice(0,16);if(a.reviewFlowSync?.generation===l)return!1;let m=a.reviewFlowSync;if(m){let a=m.sourceRevision??0;if(a>0&&k.sourceRevision<=a||k.roundCount<m.roundCount)return!1;let b=m.sourceUpdatedAt?Date.parse(m.sourceUpdatedAt):NaN;if(k.roundCount===m.roundCount&&Number.isFinite(i)&&Number.isFinite(b)&&i<b)return!1}return aO(a,b),g&&(a.expectedReviewHeadSha=g,a.reviewHeadSha=g),a.reviewFlowSync={generation:l,...k,synchronizedAt:c,lagMs:Number.isFinite(i)&&Number.isFinite(j)?Math.max(0,j-i):null},!0}function aT(a,b,c=new Date().toISOString()){let d=new Map(b.map(a=>[a.id,a])),e=new Set(a.flatMap(a=>a.runs.flatMap(a=>a.attempts.flatMap(a=>a.flowId?[a.flowId]:[])))),f=!1;for(let g of a){for(let a of g.stages){if("review-loop"!==a.kind)continue;let c=ay(g,a.id);if(!c||c.flowId||!c.expectedReviewHeadSha)continue;let d=aL(g,a.id);if(!d?.agentPath)continue;let h=b.filter(a=>!e.has(a.id)&&a.baseRef===g.baseRef&&a.targetSha===c.expectedReviewHeadSha&&null===a.closedAt&&"closed"!==a.state&&(a.implementerPath===d.agentPath||!!(d.conversationId&&a.implementerConversationId===d.conversationId)));1===h.length&&(c.flowId=h[0].id,e.add(h[0].id),f=!0)}for(let a of g.runs)for(let b of a.attempts){let a=b.flowId?d.get(b.flowId):null;a&&(f=aS(b,a,c)||f)}}return f}function aU(a,b,c,d){if(null===b.next){a.cursor=null,a.state="completed",a.stateDetail=null,a.pausedState=null,a.closedAt=c.now();return}a.cursor={stageId:b.next,state:"pending",input:d?.output??null,activatedBy:d?{stageId:b.id,attempt:d.n,edge:"pass"}:null},a.state="running",a.stateDetail=null,a.pausedState=null}function aV(a,b,c){let d=`passed but unpublished: ${c}`;b.error=d,a.state="running",a.stateDetail=d}function aW(a,b,c,d){let e=X(a,d.exec,{acceptedSha:a.lastPassedCommit,publishedSha:a.publishedCommit??null});e.ok?"unreachable"===e.remote?aV(a,c,e.detail):(a.publishedCommit="published"===e.remote?e.sha:null,c.error=null,aU(a,b,d,c)):aH(a,`publishing the passed stage: ${e.error}`,c)}function aX(a,b,c,d,e){if(!b.onFail)return!1;let f=a.stages.find(a=>a.id===b.onFail.to),g=function(a,b){if(!b.onFail)return 0;let c=ax(a,b.onFail.to);return c?c.attempts.filter(a=>!a.historical&&a.activatedBy?.edge==="fail"&&a.activatedBy.stageId===b.id).length:0}(a,b);return f&&g<b.onFail.maxRounds?(a.cursor={stageId:f.id,state:"pending",input:d,activatedBy:{stageId:b.id,attempt:c.n,edge:"fail"}},a.state="running",a.stateDetail=null,a.pausedState=null,!0):!!f&&(aH(a,`fail-edge budget exhausted after ${g} round(s): ${e}`,c),!0)}function aY(a,b,c,d){let e="run"===b.kind&&"read-write"===c.effectiveRole.access,f=function(a,b,c,d){let e=d("git",["status","--porcelain"],a.worktreeDir);if(0!==e.code)return T("checking the pipeline worktree",e);if(e.stdout.trim()){if(!c)return{ok:!1,error:`read-only stage ${b} modified the pipeline worktree`};let e=d("git",["add","-A"],a.worktreeDir);if(0!==e.code)return T("staging the passed stage",e);let f=d("git",["commit","-m",`pipeline(${a.id}): complete ${b}`],a.worktreeDir);if(0!==f.code)return T("committing the passed stage",f)}let f=d("git",["rev-parse","HEAD"],a.worktreeDir);return 0===f.code&&f.stdout.trim()?{ok:!0,sha:f.stdout.trim()}:T("recording the passed stage commit",f)}(a,b.id,e,d.exec);if(!f.ok)return void aH(a,f.error,c);if("review-loop"===b.kind&&f.sha!==c.reviewHeadSha)return void aH(a,`approved review flow head mismatch during settlement: reviewed ${c.reviewHeadSha??"no exact head"}, settled ${f.sha}`,c);a.lastPassedCommit=f.sha;let g=X(a,d.exec,{acceptedSha:f.sha,publishedSha:a.publishedCommit??null});g.ok?(a.publishedCommit="published"===g.remote?g.sha:null,c.state="passed",c.completedAt=d.now(),"unreachable"===g.remote&&null===b.next)?aV(a,c,g.detail):(aU(a,b,d,c),"unreachable"===g.remote&&aV(a,c,g.detail)):aH(a,`publishing the passed stage: ${g.error}`,c)}function aZ(a,b,c,d,e,f){if(c.output=d.output,"failureReason"in d){c.completedAt=e.now(),aH(a,d.failureReason,c);return}if(c.verdict=d.verdict,"pass"!==d.verdict.status){let f;if(c.state="fail"===d.verdict.status?"failed":"needs_decision",c.completedAt=e.now(),"fail"===d.verdict.status&&aX(a,b,c,(f=d.verdict.findings?.length?`Fail verdict findings:
2
- ${d.verdict.findings.map(a=>`- ${a}`).join("\n")}`:"",[d.output,f].filter(Boolean).join("\n\n").trim()||null),d.verdict.findings?.[0]??"stage verdict: fail"))return;aH(a,d.verdict.findings?.[0]??`stage verdict: ${d.verdict.status}`,c);return}c.state="committing",aI(a,b.id,"committing"),f(),aY(a,b,c,e)}function a$(a,b,c,d){if(b.conversationId){let a=d.pathForConversation(b.conversationId);a&&(b.agentPath=a)}!b.agentPath&&b.sessionId&&(b.agentPath=c.find(a=>i().basename(a.path).includes(b.sessionId))?.path??null),b.agentPath&&(b.conversationId??=d.conversationIdForPath(b.agentPath),b.sessionId??=(0,o.sz)(b.effectiveRole.engine,b.agentPath)?.sessionId??null)}async function a_(a,b,c,d,e,f){let g=ay(a,b.id),h=a.cursor?.state==="pending"&&g&&["passed","failed","needs_decision","skipped"].includes(g.state)?aM(a,b):g??aM(a,b);if(!h||"needs_decision"===a.state)return;if("passed"===h.state&&a.cursor?.state==="committing")return void aW(a,b,h,d);if("committing"===h.state)return void aY(a,b,h,d);if("pending"===h.state){h.state="spawning",h.startedAt=d.now(),aI(a,b.id,"spawning"),ar.add(av(a,b,h)),e();try{var i,j;let c,f,g,k,l=(i=h.effectiveRole,j=h.activatedBy?h.input??"":h.input??aJ(a),c=ae(b.prompt,"{{task}}",a.task),c=ae(c,"{{prev.output}}",j),(f=i.promptScaffold?ae(i.promptScaffold,"{{task}}",a.task):null)&&(f=ae(f,"{{prev.output}}",j)),g="read-only"===i.access?"Access: read-only. Inspect and validate freely. Avoid edits, staging, commits, pushes, and other repository mutations.":"Access: read-write. Work only inside this pipeline's dedicated worktree and commit-ready scope.",k=i.roleId?[`Role preset: ${i.roleId} (${i.engine}${i.model?`/${i.model}`:""}${i.effort?`, ${i.effort}`:""}).`,...f?["","Role prompt scaffold:",f]:[]]:[],[c.trim(),"","Pinned task:",a.task,"","Pinned specification and acceptance criteria:",a.spec?.trim()||"No separate pinned specification was supplied.","",...k,g,"Pipeline nesting is forbidden. Never create or start another pipeline from this stage.","","Finish the completed turn with one fenced JSON object as the final block. This block is the only completion authority:","```json",'{"status":"pass","findings":[],"confidence":0.9}',"```","Use pass when the stage contract is complete, fail for a retryable stage failure, and needs_decision when operator judgment is required.","Pass requires findings to be empty or omitted. Use fail or needs_decision when findings describe unresolved work.","Every prose terminal marker must agree with the JSON status: APPROVE=pass, REQUEST_CHANGES=fail, COMMENT=needs_decision. NO FINDINGS agrees with pass.","Human-readable output may appear before the JSON block. Never place text after the block."].join("\n")),m=ax(a,b.id)?.attempts.filter(a=>!a.historical).at(-2)??null,n={role:h.effectiveRole,cwd:a.worktreeDir,prompt:l,parentPath:function(a,b){let c=!0;if(b)for(let d of aK(a,b)){if(d.attempt.agentPath&&("passed"===d.attempt.state||"skipped"===d.attempt.state))return d.attempt.agentPath;c=d.boundary}if(!c)return a.srcPath;let d=b?a.stages.findIndex(a=>a.id===b):a.stages.length;for(let b=d-1;b>=0;b-=1){let c=ay(a,a.stages[b].id);if(c?.agentPath&&("passed"===c.state||"skipped"===c.state))return c.agentPath}return a.srcPath}(a,b.id),clientAttemptId:`pipeline_${a.id}_${b.id}_${h.n}`.replace(/[^A-Za-z0-9_-]/g,"_").slice(0,128),creatorConversationId:a.srcConversationId,supersedes:m?.conversationId??null,membership:{kind:"pipeline",containerId:a.id,role:h.effectiveRole.roleId??"agent",slot:`${b.id}:${h.n}`,stageId:b.id,stageOrder:a.stages.indexOf(b),round:h.n,parentConversationId:null}},o=null;for(let a=1;a<=3;a+=1)try{o=await d.spawnAgent({...n,clientAttemptId:1===a?n.clientAttemptId:`handshake_retry_${a-1}_${n.clientAttemptId}`.slice(0,128)},a=>{h.launchId=a.launchId,h.conversationId=a.conversationId,e()});break}catch(f){let b=f instanceof Error?f.message:String(f),c=ba(b);if(!c||3===a){if(c)throw Error(`stage spawn failed after ${a-1} retries: ${b}`);throw f}let e=d.sleep??(a=>new Promise(b=>setTimeout(b,a)));await e(1e3)}if(!o)throw Error("stage spawn failed without a result");h.launchId=o.launchId,h.conversationId=o.conversationId,h.sessionId=o.sessionId,h.agentPath=o.transcript,h.paneId=o.paneId,h.state="running",aI(a,b.id,"running")}catch(b){aH(a,b instanceof Error?b.message:String(b),h)}finally{ar.delete(av(a,b,h))}return}if("spawning"===h.state){if(!ar.has(av(a,b,h))&&!h.launchId)return void aH(a,"stage spawn was interrupted before durable launch evidence",h);if(!ar.has(av(a,b,h))&&h.launchId){let b=d.spawnReceipt(h.launchId);if(!b)return void aH(a,"stage spawn receipt disappeared before recovery",h);if(h.conversationId=b.conversationId,h.sessionId=b.sessionId,h.agentPath=b.transcript,h.paneId=b.paneId,"failed"===b.state||"conflicted"===b.state||"starting"===b.state&&!b.paneId&&!b.transcript)return void aH(a,`stage spawn cannot recover from receipt state ${b.state}`,h)}h.state="running"}a$(a,h,c,d);let k=!h.paneId&&h.conversationId?await d.conversationAgentActive(h.conversationId):null;if(!h.agentPath)return void(!1===k?aH(a,"structured stage ended before its session was discovered",h):h.paneId&&!await d.paneAgentAlive(h.paneId)&&aH(a,"stage agent exited before its session was discovered",h));let l=c.find(a=>a.path===h.agentPath),m=l?.activity==="live"||l?.activityReason==="jsonl_turn_open"||l?.activityReason==="jsonl_turn_stalled"&&null!==h.paneId,n=!h.paneId&&h.conversationId?await d.conversationHostUnavailableSince?.(h.conversationId):null,o=n?az(n):0,p=o>0&&az(d.now())-o>=18e4;if(l&&!1!==k&&m&&!p||!(d.monotonicNow()<f))return;let q=await d.durableTurnEvidence(h.effectiveRole.engine,h.agentPath),r=q?.turn==="terminal"&&null!==q.message&&q.message.ts>az(h.startedAt);if(q&&r){let c=aD(q.message.text);if(c&&(!p||"verdict"in c)){aF(h,d.now(),q.message.ts),aZ(a,b,h,c,d,e);return}if(!p){if(!(d.monotonicNow()<f))return;aG(a,h,d,aE(q.message.text),q.message.ts);return}}if(p){if(h.state="failed",h.completedAt=d.now(),h.error=au,aX(a,b,h,au,au))return;aH(a,au,h);return}if(!l){if(q)return;!1===k&&d.monotonicNow()<f?aG(a,h,d,"canonical stage transcript is not yet readable after structured stage termination",null):h.paneId&&!await d.paneAgentAlive(h.paneId)&&d.monotonicNow()<f&&aG(a,h,d,"canonical stage transcript is not yet readable after agent termination",null);return}if(!0===k||q?.turn==="busy"&&!h.paneId)return;let s=d.lastMessage(l);if(!s||s.ts<=az(h.startedAt))return void(!1===k&&d.monotonicNow()<f?aG(a,h,d,"canonical completed assistant turn has not been ingested after structured stage termination",s?.ts??null):h.paneId&&!await d.paneAgentAlive(h.paneId)&&d.monotonicNow()<f&&aG(a,h,d,"canonical completed assistant turn has not been ingested after agent termination",s?.ts??null));let t=aD(s.text);if(!t){if(!(d.monotonicNow()<f))return;aG(a,h,d,aE(s.text),s.ts);return}aF(h,d.now(),s.ts),aZ(a,b,h,t,d,e)}function a0(a,b){let c=b.cursor?.activatedBy?b.cursor.input??"":b.cursor?.input??aJ(b);return a.split("{{task}}").join(b.task).split("{{prev.output}}").join(c).trim()}function a1(a,b,c){let d=a0(b.prompt,a),e=c.roleId&&c.promptScaffold?a0(c.promptScaffold,a):"",f=e?e.lastIndexOf("\n\nSafety fences:\n"):-1,g=f>=0?e.slice(0,f):e,h=f>=0?e.slice(f):"";if(d.length+h.length>s.cr)return{error:`review directive is too long for the reviewer note (${d.length+h.length} chars after expansion; the reviewer receives at most ${s.cr}). Shorten this stage's prompt.`};if(!e)return{note:d};let i=`
1
+ "use strict";exports.id=9364,exports.ids=[9364],exports.modules={873:(a,b,c)=>{c.d(b,{sy:()=>l,gR:()=>i,xq:()=>m,releaseStructuredDeliveryHost:()=>o,A:()=>n,pr:()=>j,du:()=>k,lm:()=>p}),c(77598),c(74030),c(4116);var d=c(31973);c(88602),c(65862),c(33353),c(88417),c(57726),c(4406),c(58347),c(36493),new TextEncoder,new TextDecoder,c(53835),c(36855);let e=process,f=e.__llvStructuredDeliveryController??={activeQueue:null,activeRegistry:null,activeHosts:null,registerActiveHost:null,activeRegistrations:null,republishActiveHost:null,releaseActiveHost:null,terminateActiveHost:null,completeActive:null,stopActive:()=>{},everPublished:!1},g="structured-delivery-controller-unavailable";class h extends Error{constructor(){super("structured delivery controller is unavailable"),this.code=g,this.name="StructuredDeliveryControllerUnavailableError"}}function i(a){return a instanceof h||"object"==typeof a&&null!==a&&"code"in a&&a.code===g}function j(){let a=f.registerActiveHost;if(!a)throw new h;return a}function k(){return f.registerActiveHost?"ready":f.everPublished?"rebinding":"unbound"}function l(a){return f.activeHosts?.has((0,d.pp)(a))??!1}async function m(a,b){return j()(a,b)}async function n(a){return await f.republishActiveHost?.(a)??!1}async function o(a){return await f.releaseActiveHost?.(a)??!1}async function p(a,b){return await f.terminateActiveHost?.(a,b)??!1}},957:(a,b,c)=>{c.d(b,{UA:()=>aY,n6:()=>bl});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57726);c(53133);var k=c(85923),l=c(4351),m=c(4116),n=c(68574),o=c(31973),p=c(69882);function q(a){let b,c;try{b=g().realpathSync(a),c=g().statSync(b)}catch{return!1}return!!c.isFile()&&!!b.endsWith(".jsonl")&&(!!(0,p.Ps)(b)||!!(0,p.Bz)(b))}var r=c(91836),s=c(87380),t=c(10508),u=c(98918);c(56514);var v=c(88602),w=c(29966),x=c(873),y=c(48161),z=c.n(y),A=c(59988);let B=/(?:%2[Ff][A-Za-z0-9._+-]+){2,}/g,C=["home","Users","root"],D=RegExp(`-(?:${C.join("|")})(?:-[A-Za-z0-9._+]+)+`,"g"),E=RegExp(`(?<![\\w.-])\\/(?:${C.join("|")})(?:\\/[A-Za-z0-9._-]+)?`,"g"),F=/(?<![\w:/~.%-])\/[A-Za-z0-9._+-]+(?:\/[A-Za-z0-9._+-]+)+/g,G=/(?<![\w.+-])[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g;function H(a){let b=a.split("/").filter(Boolean).at(-1);return b?`…/${b}`:"…"}function I(a,b){let c,d,e=(c=z().homedir(),d=(d=(d=(d=(0,A.j)(a)).replace(G,"[redacted-email]")).replace(B,"…")).replace(D,"…"),c&&"/"!==c&&(d=d.split(c).join("~")),d=(d=d.replace(E,"~")).replace(F,H)).trim();return e.length<=b?e:`${e.slice(0,b-1).trimEnd()}…`}var J=c(2496),K=c(43271),L=c(24534);c(68822);var M=c(62142),N=c(26200),O=c(89364),P=c(53388),Q=c(56404),R=c(28388),S=c(7058),T=c(38849);function U(a,b){return Date.parse(String(a.timestamp??""))||b}let V=new Set(["task_complete","turn_complete","turn_completed","turn_aborted"]),W=new Set(["task_started","turn_started","user_message"]);async function X(a,b){let c=await (0,S.mR)(b);if("complete"!==c.integrity)return null;let d="codex"===a,e=(0,R.j)(c.records,d?"codex":"claude"),f=0;try{f=g().statSync(b).mtimeMs}catch{}let h=(0,t.uc)(c.records,d?"codex-sessions":"claude-projects",f);return{turn:"terminal"===e.state?"terminal":"busy"===e.state?"busy":"unknown",message:h,terminalProviderMessage:"terminal"===e.state?function(a,b,c){for(let d=a.length-1;d>=0;d-=1){let e=a[d];if(b){let a=(0,T.xK)(e.payload)??{},b=(0,T.r$)(a.type)??"";if(W.has(b))return null;if(!V.has(b))continue;let d=function(a){let b=(0,T.xK)(a.error),c=(0,T.r$)(a.codex_error_info)??(0,T.r$)(b?.codex_error_info);return(0,T.r$)(b?.message)??(0,T.r$)(a.error)??(c?(0,T.r$)(a.message):null)??c}(a);return d?{text:d,ts:U(e,c)}:null}if("user"===e.type)break;if("assistant"!==e.type)continue;if(!0!==e.isApiErrorMessage)break;let f=(0,T.Em)((0,T.xK)(e.message)?.content).filter(a=>"text"===a.type).map(a=>(0,T.r$)(a.text)??"").join("\n").trim();return f?{text:f,ts:U(e,c)}:null}return null}(c.records,d,f):null}}function Y(a,b){return{ok:!1,error:`${a}: ${(b.stderr||b.stdout||"no output").trim()}`}}function Z(a){return/^[A-Za-z0-9][A-Za-z0-9._/-]{0,254}$/.test(a)&&!a.includes("..")&&!a.includes("//")&&!a.includes("@{")&&!a.endsWith("/")&&!a.endsWith(".")&&!a.endsWith(".lock")}function $(a,b){if(!Z(a.branch))return{ok:!1,error:"the pipeline branch is invalid"};let c=b("git",["status","--porcelain"],a.worktreeDir);if(0!==c.code)return Y("checking the pipeline worktree",c);if(c.stdout.trim())return{ok:!1,error:"the pipeline worktree has uncommitted changes; choose whether to commit or discard them before retrying review"};let d=b("git",["branch","--show-current"],a.worktreeDir);if(0!==d.code)return Y("checking the pipeline branch",d);if(d.stdout.trim()!==a.branch)return{ok:!1,error:"the pipeline worktree is not checked out on its persisted branch"};let e=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==e.code)return Y("resolving the pipeline branch HEAD",e);let f=e.stdout.trim();return/^[0-9a-f]{40}$/i.test(f)?{ok:!0,sha:f}:{ok:!1,error:"resolving the pipeline branch HEAD: expected an exact commit SHA"}}function _(a,b,c){let d=b("timeout",["--signal=KILL","5s","git","ls-remote","--heads","origin",`refs/heads/${a.branch}`],a.worktreeDir);return 0===d.code?{ok:!0,sha:d.stdout.trim().split(/\s+/)[0]??""}:124===d.code||137===d.code?{ok:!1,error:`${c}: git remote read timed out after 5s`}:Y(c,d)}function aa(a,b,c){let d=c.acceptedSha;if(!/^[0-9a-f]{40}$/i.test(d))return{ok:!1,error:`the accepted pipeline revision is not an exact commit SHA: ${d||"absent"}`};let e=$(a,b);if(!e.ok)return e;if(e.sha!==d)return{ok:!1,error:`the pipeline worktree is at ${e.sha}, not the accepted revision ${d}; nothing was published`};if(c.publishedSha&&c.publishedSha===d)return{ok:!0,sha:d,remote:"published"};let f=b("git",["remote","get-url","origin"],a.worktreeDir);if(0!==f.code||!f.stdout.trim())return{ok:!0,sha:d,remote:"unavailable"};let g=_(a,b,"checking the remote pipeline branch");if(!g.ok)return{ok:!0,sha:d,remote:"unreachable",detail:g.error};let h=g.sha;if(h===d)return{ok:!0,sha:d,remote:"published"};if(h){if(!/^[0-9a-f]{40}$/i.test(h))return{ok:!1,error:"the remote pipeline branch has no exact commit SHA"};if(0!==b("git",["cat-file","-e",`${h}^{commit}`],a.worktreeDir).code){let c=b("git",["fetch","--no-tags","origin",`+refs/heads/${a.branch}:refs/remotes/origin/${a.branch}`],a.worktreeDir);if(0!==c.code)return Y("fetching the remote pipeline branch",c)}let c=b("git",["merge-base","--is-ancestor",h,d],a.worktreeDir);if(1===c.code)return{ok:!1,error:"the local and remote pipeline branches diverged; choose which revision to publish before the review stage can start"};if(0!==c.code)return Y("comparing local and remote pipeline revisions",c)}let i=b("git",["push","origin",`${d}:refs/heads/${a.branch}`],a.worktreeDir);if(0!==i.code)return Y("publishing the pipeline branch",i);let j=_(a,b,"confirming the published pipeline branch");if(!j.ok)return{ok:!0,sha:d,remote:"unreachable",detail:j.error};let k=j.sha;return k!==d?{ok:!1,error:`publishing the pipeline branch did not land: origin/${a.branch} is ${k||"absent"}, expected ${d}`}:{ok:!0,sha:d,remote:"published"}}var ab=c(31421);let ac={homeDir:z().homedir,stat:g().statSync,access:g().accessSync,exec:(a,b,c)=>{if("git"!==a)return(0,P.Ix)(a,b,c);let d=(0,ab.spawnSync)(a,b,{cwd:c,encoding:"utf8",timeout:4e3});return d.error?{code:null,stdout:"",stderr:"ETIMEDOUT"===d.error.code?`git ${b.join(" ")} timed out after 4000ms`:d.error.message}:{code:d.status,stdout:d.stdout??"",stderr:d.stderr??""}}},ad=/not a (?:git )?repository/i;function ae(a,b){return"not_git"===a.failCode?{ok:!1,code:"not_git",path:b}:{ok:!1,code:"probe_failed",path:b,detail:a.detail}}function af(a){let b=a.stdout.trim();if(0===a.code&&b)return{value:b};let c=(a.stderr||a.stdout||"").trim();return null!==a.code&&0!==a.code&&ad.test(a.stderr)?{failCode:"not_git",detail:c||"not a git repository"}:{failCode:"probe_failed",detail:c||"the git repository probe failed"}}let ag=new Map;function ah(a,b,c){try{return a.access(b,c),!1}catch{return!0}}function ai(a,b=ac,c={}){var d,e;let f,h,j,k=(d=b.homeDir(),j="~"===(h=a.trim())||h.startsWith("~/")?i().join(d,h.slice(1)):h,i().resolve(j)),l=c.now??Date.now;if(c.cache){let a,b=(e=l(),(a=ag.get(k))?e-a.at>5e3?(ag.delete(k),null):a.result:null);if(b)return b}try{f=b.stat(k)}catch(a){return{ok:!1,code:"ENOENT"===a.code?"missing":"repo_untraversable",path:k}}if(!f.isDirectory())return{ok:!1,code:"not_directory",path:k};if(ah(b,k,g().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:k};if(ah(b,k,g().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:k};let m=af(b.exec("git",["rev-parse","--show-toplevel"],k));if("failCode"in m)return ae(m,k);let n=i().resolve(m.value);if(n!==k){if(ah(b,n,g().constants.R_OK))return{ok:!1,code:"repo_unreadable",path:n};if(ah(b,n,g().constants.X_OK))return{ok:!1,code:"repo_untraversable",path:n}}let o=af(b.exec("git",["rev-parse","--path-format=absolute","--git-common-dir"],n));if("failCode"in o)return ae(o,n);let p=i().resolve(n,o.value);if(ah(b,p,g().constants.W_OK|g().constants.X_OK))return{ok:!1,code:"git_metadata_unwritable",path:p};let q=i().dirname(n);if(ah(b,q,g().constants.W_OK|g().constants.X_OK))return{ok:!1,code:"worktree_parent_unwritable",path:q};let r={ok:!0,repoDir:n,gitCommonDir:p,worktreeParent:q};return c.cache&&function(a,b,c){for(let d of a)ag.delete(d),ag.set(d,{result:b,at:c});for(;ag.size>32;){let a=ag.keys().next().value;if(void 0===a)break;ag.delete(a)}}([...new Set([k,n])],r,l()),r}function aj(a,b,c){return a.split(b).join(c)}var ak=c(55204),al=c(73385);c(61899),c(2208);var am=c(80026);let an=(a,b)=>{let c=(0,ak.OH)().find(b=>b.id===a);if(!c)return null;let d=Object.fromEntries(c.parameters.map(a=>{let c=b?.[a.key],d=void 0!==c&&""!==c?c:(0,am.y)(a);return[a.key,d]})),e=(0,ak.hB)(c,d),f=(0,ak.X2)(c);return{...(0,ak.aW)(c,d),access:c.capabilities.includes("read-only")?"read-only":"read-write",promptScaffold:`${e.slice(0,al.le-f.length)}${f}`}};var ao=c(31612),ap=c(4863);async function aq(a,b){let c,d=j.lD.resolveSpawn(a.role.engine),f=function(a){if(!a)return{conversationId:null,sessionKey:null};let b=(0,p.Ps)(a)?"codex":(0,p.Bz)(a)?"claude":null;if(!b)return{conversationId:null,sessionKey:null};let c=(0,m.tk)();return{conversationId:(c.conversationForPath(a)??c.ensureConversation(b,a,null)).id,sessionKey:(0,o.sz)(b,a)}}(a.parentPath),g=(0,l.lV)(a.role.engine,a.cwd,{model:a.role.model,effort:a.role.effort,readOnly:"read-only"===a.role.access,permissionMode:"claude"===a.role.engine?"bypassPermissions":null,codexHome:"codex"===a.role.engine?d.home:null,claudeConfigDir:"claude"===a.role.engine?d.home:null,claudeProjectsDir:"claude"===a.role.engine?d.transcriptRoot:null}),h=(0,k.Ui)({...g.launchProfile??{},cwd:a.cwd,parentConversationId:f.conversationId,title:a.title}),i=(0,m.tk)(),n=a.supersedes?.startsWith("conversation_")&&i.conversation(a.supersedes)?i.canonicalConversationId(a.supersedes):null,q=e().createHash("sha256").update(JSON.stringify({engine:a.role.engine,model:a.role.model,effort:a.role.effort,cwd:a.cwd,parentConversationId:f.conversationId,...n?{supersedes:n}:{},prompt:a.prompt})).digest("hex"),r=a.creatorConversationId?.startsWith("conversation_")?i.canonicalConversationId(a.creatorConversationId):null,s=i.beginSpawnRequest({engine:a.role.engine,cwd:a.cwd,transport:"structured",accountId:d.accountId,accountPin:!0,parentConversationId:f.conversationId,parentSessionKey:f.sessionKey,parentArtifactPath:f.conversationId?a.parentPath:null,role:a.role.roleId,origin:{kind:"container",container:"pipeline",containerId:a.membership.containerId,creatorConversationId:r},memberships:[{...a.membership,parentConversationId:f.conversationId}],launchProfile:h,clientAttemptId:a.clientAttemptId,requestDigest:q,supersedes:n,supersedesReason:"stage-retry"});if("conflict"===s.kind)throw Error("pipeline spawn attempt conflicts with its original request");if(b({launchId:s.receipt.launchId,conversationId:s.receipt.conversationId}),"replay"===s.kind){let a=i.conversation(s.receipt.conversationId),b=s.receipt.artifactPath??a?.generations.at(-1)?.path??null;return{launchId:s.receipt.launchId,conversationId:s.receipt.conversationId,sessionId:s.receipt.key?.sessionId??null,transcript:b,paneId:s.receipt.verifiedHost?.paneId??s.receipt.pane?.paneId??null}}let t={...g,launchProfile:h},u=(0,v.sS)(),x=(0,w.lN)("pipeline structured runtime host");if(!u)throw Error(x);try{c=await (0,K.sh)({engine:a.role.engine,receipt:s.receipt,spec:t,account:d,prompt:a.prompt,registry:i,client:u})}catch(a){if((0,v.o7)(a))throw Error(x,{cause:a});throw a}let y=c.path??null,z=y?(0,o.sz)(a.role.engine,y):null;return{launchId:s.receipt.launchId,conversationId:s.receipt.conversationId,sessionId:z?.sessionId??null,transcript:y,paneId:null}}let ar=new Set(["delivered"]),as=new Set(["failed","rejected"]);async function at(a){let b=(0,m.tk)(),d=(a.conversationId?.startsWith("conversation_")?b.conversation(a.conversationId):null)??(a.agentPath?b.conversationForPath(a.agentPath):null),e=d?.generations.at(-1)??null;if(!d||!e)return null;let f=(0,o.pp)({engine:d.engine,sessionId:e.id}),{structuredHostProcessAlive:g}=await Promise.resolve().then(c.bind(c,36493));return{conversationId:d.id,transcriptPath:e.path,resident:()=>{let a=b.readOnlySnapshot().entries[f];return!!a&&"dead"!==a.status&&"unhosted"!==a.status&&(g(a.structuredHost?.process??null)||!!a.host)},host:()=>b.readOnlySnapshot().entries[f]?.host??null}}async function au(a,b={}){let c=a.paneId;if(!c)return{outcome:"not-running"};let d=b.paneSnapshot??O.RZ,e=a=>a?`pane ${c} now runs ${a.command} in window ${a.windowName}`:`pane ${c}`;try{let f=await at(a),g=f?.host()??null;if(!g||g.paneId!==c){let a=await d(c);if(!a||(0,M.g2)(a.command))return{outcome:"not-running"};return{outcome:"unknown",detail:`${e(a)} and cannot be identified as this stage's agent; stop it yourself if it is the orphan, or close again with acknowledgeHosts to dismiss it`}}if(await (b.killHostIfMatches??O.B$)(g))return{outcome:"stopped"};let h=await d(c);if(!h||(0,M.g2)(h.command))return{outcome:"not-running"};return{outcome:"unknown",detail:`${e(h)}; it changed or its agent did not exit, so it was left running`}}catch(a){return{outcome:"failed",error:a instanceof Error?a.message:String(a)}}}async function av(a,b={}){try{let d=await at(a);if(!d||!d.resident())return{outcome:"not-running"};let{conversationId:e,transcriptPath:f,resident:g}=d,{applyConversationAction:h}=await c.e(6909).then(c.bind(c,56909)),i=await h({conversationId:e,transcriptPath:f,action:"kill"}),j=i.body;if(i.status>=400||!0!==j.ok)return{outcome:"failed",error:j.error??`stage host kill was refused with status ${i.status}`};let k=j.receipt?.status??null;if(!k||ar.has(k))return{outcome:"stopped"};let l=j.operationId??null,m=void 0===b.client?(0,v.sS)():b.client,n=b.now??Date.now,o=b.sleep??(a=>new Promise(b=>setTimeout(b,a))),p=n()+(b.budgetMs??1500),q=b.intervalMs??250;for(let a=0;a<8;a+=1){if(!g())return{outcome:"stopped"};if(l&&m){let a=await m.operationStatus(l).catch(()=>null),b=a?.receipt.status??null;if(b&&ar.has(b))return{outcome:"stopped"};if(b&&as.has(b))return{outcome:"failed",error:a?.receipt.reason??`stage host kill ${b} (operation ${l})`}}if(n()>=p)break;await o(q)}if(!g())return{outcome:"stopped"};return{outcome:"unconfirmed",operationId:l,detail:`kill accepted as ${k} but termination was not confirmed`}}catch(a){return{outcome:"failed",error:a instanceof Error?a.message:String(a)}}}let aw=new Set,ax=new Set(["completed","closed"]),ay="stage completed without a valid final JSON verdict",az="historical attempt completed without a valid final JSON verdict";function aA(a,b,c){return`${a.id}:${b.id}:${c.n}`}function aB(a){return a.cursor?a.stages.find(b=>b.id===a.cursor?.stageId)??null:null}function aC(a,b){return a.runs.find(a=>a.stageId===b)??null}function aD(a,b){return aC(a,b)?.attempts.findLast(a=>!a.historical)??null}function aE(a){let b=a?Date.parse(a):0;return Number.isFinite(b)?b:0}function aF(a){return"string"==typeof a?a.trim()||null:"number"==typeof a&&Number.isFinite(a)?String(a):null}function aG(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let b=aF(a.severity),c=aF(a.file),d=aF(a.line),e=[b,c?`${c}${d?`:${d}`:""}`:d?`line ${d}`:null,aF(a.summary)].filter(a=>!!a);return e.length>0?e.join(" — "):a}function aH(a){let b,c=[...a.matchAll(/```(?:json)?\s*([\s\S]*?)```/gi)].at(-1);if(!c||void 0===c.index)return a;try{b=JSON.parse(c[1]??"")}catch{return a}if(!b||"object"!=typeof b||Array.isArray(b))return a;let d=b;if(!Array.isArray(d.findings)||!d.findings.some(a=>a&&"object"==typeof a&&!Array.isArray(a)))return a;let e={...d,findings:d.findings.map(aG)},f=c[0],g=c[1]??"",h=f.indexOf(g),i=c.index+h;return`${a.slice(0,i)}${JSON.stringify(e)}${a.slice(i+g.length)}`}function aI(a){return(0,ap.fM)(aH(a))}function aJ(a){return(0,ap.DL)(aH(a))}function aK(a,b,c){let d=a.verdictRecovery;d&&"recovered"!==d.state&&(a.verdictRecovery={...d,state:"recovered",lastCheckedAt:b,nextCheckAt:null,messageTs:c})}function aL(a,b,c,d,e){let f=c.now(),g=b.verdictRecovery?.state==="pending"?b.verdictRecovery:null,h=null!==e&&g?.messageTs!==null&&g?.messageTs!==void 0&&e>g.messageTs;if(g&&!h&&aE(f)<aE(g.nextCheckAt))return;let i=(g?.checks??0)+1,j={state:i>=3?"exhausted":"pending",checks:i,maxChecks:3,startedAt:g?.startedAt??f,lastCheckedAt:f,nextCheckAt:i>=3?null:new Date(aE(f)+3e4).toISOString(),reason:d,messageTs:e};if(b.verdictRecovery=j,"exhausted"===j.state){b.completedAt=f,aM(a,`stage verdict recovery exhausted after 3 checks: ${d}`,b);return}b.state="running",b.error=null,a.state="running",a.stateDetail=`re-evaluating terminal stage verdict (${i}/3): ${d}`}function aM(a,b,c){c&&"failed"!==c.state&&(c.state="needs_decision"),c&&(c.error=b),a.state="needs_decision",a.pausedState=null,a.stateDetail=b}function aN(a,b,c){let d=a.cursor?.stageId===b?{input:a.cursor.input,activatedBy:a.cursor.activatedBy}:{input:null,activatedBy:null};a.cursor={stageId:b,state:c,...d}}function aO(a){if(!a.cursor)return"";let b=a.stages.findIndex(b=>b.id===a.cursor?.stageId);for(let c=b-1;c>=0;c-=1){let b=aD(a,a.stages[c].id);if(b?.output)return b.output}return""}function*aP(a,b){let c=new Set,d=aD(a,b)?.activatedBy??(a.cursor?.stageId===b?a.cursor.activatedBy:null);for(;d;){let b=`${d.stageId}:${d.attempt}`;if(c.has(b))break;c.add(b);let e=a.stages.find(a=>a.id===d.stageId)??null,f=aC(a,d.stageId)?.attempts.find(a=>a.n===d.attempt)??null;if(!e||!f)break;yield{stage:e,attempt:f,boundary:null==f.activatedBy},d=f.activatedBy}}function aQ(a,b){let c=!0;for(let d of aP(a,b)){if("run"===d.stage.kind&&"passed"===d.attempt.state&&d.attempt.agentPath)return d.attempt;c=d.boundary}if(!c)return null;let d=a.stages.findIndex(a=>a.id===b);for(let b=d-1;b>=0;b-=1){let c=a.stages[b];if("run"!==c.kind)continue;let d=aD(a,c.id);if(d?.state==="passed"&&d.agentPath)return d}return null}function aR(a,b){let c=aC(a,b.id);if(!c)return aM(a,"pipeline stage run record is missing"),null;let d=a.cursor?.stageId===b.id?a.cursor:null,e={n:c.attempts.length+1,state:"pending",effectiveRole:structuredClone(b.effectiveRole),launchId:null,conversationId:null,sessionId:null,agentPath:null,paneId:null,flowId:null,expectedReviewHeadSha:null,reviewHeadSha:null,startedAt:null,completedAt:null,input:d?.input??null,activatedBy:d?.activatedBy?{...d.activatedBy}:null,output:null,verdict:null,error:null};return c.attempts.push(e),e}async function aS(a,b,c){let d=!1;for(let e of a.runs)for(let f of e.attempts){if(!f.historical||!["spawning","running"].includes(f.state))continue;let e=JSON.stringify(f);if(a3(a,f,b,c),!f.agentPath){if(f.launchId){let a=c.spawnReceipt(f.launchId);a&&(f.conversationId=a.conversationId,f.sessionId=a.sessionId,f.agentPath=a.transcript,f.paneId=a.paneId,("failed"===a.state||"conflicted"===a.state)&&(f.state="failed",f.completedAt=c.now(),f.error=`historical spawn ended in receipt state ${a.state}`))}d=JSON.stringify(f)!==e||d;continue}let g=await c.durableTurnEvidence(f.effectiveRole.engine,f.agentPath);if(!(g?.turn==="terminal"&&null!==g.message&&g.message.ts>aE(f.startedAt))){d=JSON.stringify(f)!==e||d;continue}let h=aI(g.message.text);f.completedAt=new Date(g.message.ts).toISOString(),f.output=null,h?"failureReason"in h?(f.state="failed",f.error=h.failureReason):(f.verdict=h.verdict,f.state="pass"===h.verdict.status?"passed":"fail"===h.verdict.status?"failed":"needs_decision",f.error=h.verdict.findings?.[0]??null):(f.state="failed",f.error=az),d=JSON.stringify(f)!==e||d}return d}function aT(a,b){a.flowId=b.id;let c=b.rounds.at(-1);a.launchId=c?.launchId??a.launchId,a.sessionId=c?.sessionId??a.sessionId,a.agentPath=c?.reviewerPath??a.agentPath,a.conversationId=c?.reviewerConversationId??a.conversationId,a.paneId=c?.reviewerPane?.paneId??a.paneId}let aU=new Set(["approved","done_comment","needs_decision","closed"]),aV="review flow host claim retry: ",aW="review flow relay retry: ";function aX(a,b,c){let d=b.rounds.at(-1)??null,f=b.rounds.findLast(a=>a.reviewHeadSha)?.reviewHeadSha??b.targetSha??null,g=d?.reviewHeadSha??null,h=function(a){let b=[a.createdAt,a.closedAt];for(let c of a.rounds)b.push(c.startedAt,c.spawnStartedAt??null,c.reviewedAt,c.relayStartedAt??null,c.relayedAt,c.terminalAt??null);return b.filter(a=>!!a).sort((a,b)=>b.localeCompare(a))[0]??null}(b),i=h?Date.parse(h):NaN,j=Date.parse(c),k={sourceRevision:b.revision??0,roundCount:b.rounds.length,implementerHeadSha:f,reviewerHeadSha:g,verdict:d?.verdict??null,relayState:b.state,terminalState:aU.has(b.state)?b.state:null,hostClaim:b.hostClaim??null,sourceUpdatedAt:h},l=e().createHash("sha256").update(JSON.stringify({...k,stateDetail:b.stateDetail,implementerPath:b.implementerPath,implementerConversationId:b.implementerConversationId??null,rounds:b.rounds.map(a=>({n:a.n,reviewerPath:a.reviewerPath,reviewerConversationId:a.reviewerConversationId??null,reviewHeadSha:a.reviewHeadSha??null,verdict:a.verdict,reviewedAt:a.reviewedAt,relayStartedAt:a.relayStartedAt??null,relayedAt:a.relayedAt,terminalAt:a.terminalAt??null,error:a.error}))})).digest("hex").slice(0,16);if(a.reviewFlowSync?.generation===l)return!1;let m=a.reviewFlowSync;if(m){let a=m.sourceRevision??0;if(a>0&&k.sourceRevision<=a||k.roundCount<m.roundCount)return!1;let b=m.sourceUpdatedAt?Date.parse(m.sourceUpdatedAt):NaN;if(k.roundCount===m.roundCount&&Number.isFinite(i)&&Number.isFinite(b)&&i<b)return!1}return aT(a,b),g&&(a.expectedReviewHeadSha=g,a.reviewHeadSha=g),a.reviewFlowSync={generation:l,...k,synchronizedAt:c,lagMs:Number.isFinite(i)&&Number.isFinite(j)?Math.max(0,j-i):null},!0}function aY(a,b,c=new Date().toISOString()){let d=new Map(b.map(a=>[a.id,a])),e=new Set(a.flatMap(a=>a.runs.flatMap(a=>a.attempts.flatMap(a=>a.flowId?[a.flowId]:[])))),f=!1;for(let g of a){for(let a of g.stages){if("review-loop"!==a.kind)continue;let c=aD(g,a.id);if(!c||c.flowId||!c.expectedReviewHeadSha)continue;let d=aQ(g,a.id);if(!d?.agentPath)continue;let h=b.filter(a=>!e.has(a.id)&&a.baseRef===g.baseRef&&a.targetSha===c.expectedReviewHeadSha&&null===a.closedAt&&"closed"!==a.state&&(a.implementerPath===d.agentPath||!!(d.conversationId&&a.implementerConversationId===d.conversationId)));1===h.length&&(c.flowId=h[0].id,e.add(h[0].id),f=!0)}for(let a of g.runs)for(let b of a.attempts){let a=b.flowId?d.get(b.flowId):null;a&&(f=aX(b,a,c)||f)}}return f}function aZ(a,b,c,d){if(null===b.next){a.cursor=null,a.state="completed",a.stateDetail=null,a.pausedState=null,a.closedAt=c.now();return}a.cursor={stageId:b.next,state:"pending",input:d?.output??null,activatedBy:d?{stageId:b.id,attempt:d.n,edge:"pass"}:null},a.state="running",a.stateDetail=null,a.pausedState=null}function a$(a,b,c){let d=`passed but unpublished: ${c}`;b.error=d,a.state="running",a.stateDetail=d}function a_(a,b,c,d){let e=aa(a,d.exec,{acceptedSha:a.lastPassedCommit,publishedSha:a.publishedCommit??null});e.ok?"unreachable"===e.remote?a$(a,c,e.detail):(a.publishedCommit="published"===e.remote?e.sha:null,c.error=null,aZ(a,b,d,c)):aM(a,`publishing the passed stage: ${e.error}`,c)}function a0(a,b,c,d,e){if(!b.onFail)return!1;let f=a.stages.find(a=>a.id===b.onFail.to),g=function(a,b){if(!b.onFail)return 0;let c=aC(a,b.onFail.to);return c?c.attempts.filter(a=>!a.historical&&a.activatedBy?.edge==="fail"&&a.activatedBy.stageId===b.id).length:0}(a,b);return f&&g<b.onFail.maxRounds?(a.cursor={stageId:f.id,state:"pending",input:d,activatedBy:{stageId:b.id,attempt:c.n,edge:"fail"}},a.state="running",a.stateDetail=null,a.pausedState=null,!0):!!f&&(aM(a,`fail-edge budget exhausted after ${g} round(s): ${e}`,c),!0)}function a1(a,b,c,d){let e="run"===b.kind&&"read-write"===c.effectiveRole.access,f=function(a,b,c,d){let e=d("git",["status","--porcelain"],a.worktreeDir);if(0!==e.code)return Y("checking the pipeline worktree",e);if(e.stdout.trim()){if(!c)return{ok:!1,error:`read-only stage ${b} modified the pipeline worktree`};let e=d("git",["add","-A"],a.worktreeDir);if(0!==e.code)return Y("staging the passed stage",e);let f=d("git",["commit","-m",`pipeline(${a.id}): complete ${b}`],a.worktreeDir);if(0!==f.code)return Y("committing the passed stage",f)}let f=d("git",["rev-parse","HEAD"],a.worktreeDir);return 0===f.code&&f.stdout.trim()?{ok:!0,sha:f.stdout.trim()}:Y("recording the passed stage commit",f)}(a,b.id,e,d.exec);if(!f.ok)return void aM(a,f.error,c);if("review-loop"===b.kind&&f.sha!==c.reviewHeadSha)return void aM(a,`approved review flow head mismatch during settlement: reviewed ${c.reviewHeadSha??"no exact head"}, settled ${f.sha}`,c);a.lastPassedCommit=f.sha;let g=aa(a,d.exec,{acceptedSha:f.sha,publishedSha:a.publishedCommit??null});g.ok?(a.publishedCommit="published"===g.remote?g.sha:null,c.state="passed",c.completedAt=d.now(),"unreachable"===g.remote&&null===b.next)?a$(a,c,g.detail):(aZ(a,b,d,c),"unreachable"===g.remote&&a$(a,c,g.detail)):aM(a,`publishing the passed stage: ${g.error}`,c)}function a2(a,b,c,d,e,f){if(c.output=d.output,"failureReason"in d){c.completedAt=e.now(),aM(a,d.failureReason,c);return}if(c.verdict=d.verdict,"pass"!==d.verdict.status){let f;if(c.state="fail"===d.verdict.status?"failed":"needs_decision",c.completedAt=e.now(),"fail"===d.verdict.status&&a0(a,b,c,(f=d.verdict.findings?.length?`Fail verdict findings:
2
+ ${d.verdict.findings.map(a=>`- ${a}`).join("\n")}`:"",[d.output,f].filter(Boolean).join("\n\n").trim()||null),d.verdict.findings?.[0]??"stage verdict: fail"))return;aM(a,d.verdict.findings?.[0]??`stage verdict: ${d.verdict.status}`,c);return}c.state="committing",aN(a,b.id,"committing"),f(),a1(a,b,c,e)}function a3(a,b,c,d){if(b.conversationId){let a=d.pathForConversation(b.conversationId);a&&(b.agentPath=a)}!b.agentPath&&b.sessionId&&(b.agentPath=c.find(a=>i().basename(a.path).includes(b.sessionId))?.path??null),b.agentPath&&(b.conversationId??=d.conversationIdForPath(b.agentPath),b.sessionId??=(0,o.sz)(b.effectiveRole.engine,b.agentPath)?.sessionId??null)}async function a4(a,b,c,d,e,f){let g=aD(a,b.id),h=a.cursor?.state==="pending"&&g&&["passed","failed","needs_decision","skipped"].includes(g.state)?aR(a,b):g??aR(a,b);if(!h||"needs_decision"===a.state)return;if("passed"===h.state&&a.cursor?.state==="committing")return void a_(a,b,h,d);if("committing"===h.state)return void a1(a,b,h,d);if("pending"===h.state){let c=d.structuredDeliveryPublication?.()??"ready";if("unbound"===c)return;let f=d.now();if(aE(h.controllerWait?.retryAfter??"")>aE(f))return;if("rebinding"===c)return"waiting"===bh(h,f,f,d)?void e():void aM(a,bi(h,f,"structured delivery controller is unavailable"),h);h.state="spawning",h.startedAt=f,aN(a,b.id,"spawning"),aw.add(aA(a,b,h)),e();try{var i,j,k,l;let c,g,m,n,o,p=(i=h.effectiveRole,j=h.activatedBy?h.input??"":h.input??aO(a),c=aj(b.prompt,"{{task}}",a.task),c=aj(c,"{{prev.output}}",j),(g=i.promptScaffold?aj(i.promptScaffold,"{{task}}",a.task):null)&&(g=aj(g,"{{prev.output}}",j)),m="read-only"===i.access?"Access: read-only. Inspect and validate freely. Avoid edits, staging, commits, pushes, and other repository mutations.":"Access: read-write. Work only inside this pipeline's dedicated worktree and commit-ready scope.",n=i.roleId?[`Role preset: ${i.roleId} (${i.engine}${i.model?`/${i.model}`:""}${i.effort?`, ${i.effort}`:""}).`,...g?["","Role prompt scaffold:",g]:[]]:[],[c.trim(),"","Pinned task:",a.task,"","Pinned specification and acceptance criteria:",a.spec?.trim()||"No separate pinned specification was supplied.","",...n,m,"Pipeline nesting is forbidden. Never create or start another pipeline from this stage.","","Finish the completed turn with one fenced JSON object as the final block. This block is the only completion authority:","```json",'{"status":"pass","findings":[],"confidence":0.9}',"```","Use pass when the stage contract is complete, fail for a retryable stage failure, and needs_decision when operator judgment is required.","Pass requires findings to be empty or omitted. Use fail or needs_decision when findings describe unresolved work.","Every prose terminal marker must agree with the JSON status: APPROVE=pass, REQUEST_CHANGES=fail, COMMENT=needs_decision. NO FINDINGS agrees with pass.","Human-readable output may appear before the JSON block. Never place text after the block."].join("\n")),q=aC(a,b.id)?.attempts.filter(a=>!a.historical).at(-2)??null,r={role:h.effectiveRole,cwd:a.worktreeDir,title:(k=a.task,l=b.id,o=` \xb7 ${l}`,`${(0,N.cr)(k,120-o.length)}${o}`),prompt:p,parentPath:function(a,b){let c=!0;if(b)for(let d of aP(a,b)){if(d.attempt.agentPath&&("passed"===d.attempt.state||"skipped"===d.attempt.state))return d.attempt.agentPath;c=d.boundary}if(!c)return a.srcPath;let d=b?a.stages.findIndex(a=>a.id===b):a.stages.length;for(let b=d-1;b>=0;b-=1){let c=aD(a,a.stages[b].id);if(c?.agentPath&&("passed"===c.state||"skipped"===c.state))return c.agentPath}return a.srcPath}(a,b.id),clientAttemptId:`pipeline_${a.id}_${b.id}_${h.n}`.replace(/[^A-Za-z0-9_-]/g,"_").slice(0,128),creatorConversationId:a.srcConversationId,supersedes:q?.conversationId??null,membership:{kind:"pipeline",containerId:a.id,role:h.effectiveRole.roleId??"agent",slot:`${b.id}:${h.n}`,stageId:b.id,stageOrder:a.stages.indexOf(b),round:h.n,parentConversationId:null}},s=null,t=0,u=null,v=h.controllerWait?.rounds??0;for(;;){t+=1;try{let a=v+t-1;s=await d.spawnAgent({...r,clientAttemptId:0===a?r.clientAttemptId:`handshake_retry_${a}_${r.clientAttemptId}`.slice(0,128)},a=>{h.launchId=a.launchId,h.conversationId=a.conversationId,e()});break}catch(c){let a=c instanceof Error?c.message:String(c);if(!bg(a))throw c;if(bf(a)){u=a;break}if(t>=3)throw Error(`stage spawn failed after ${t-1} retries: ${a}`);let b=d.sleep??(a=>new Promise(b=>setTimeout(b,a)));await b(1e3)}}if(null!==u){let c=d.now();if("exhausted"===bh(h,f,c,d))throw Error(bi(h,c,u));h.state="pending",aN(a,b.id,"pending"),e();return}if(!s)throw Error("stage spawn failed without a result");delete h.controllerWait,h.launchId=s.launchId,h.conversationId=s.conversationId,h.sessionId=s.sessionId,h.agentPath=s.transcript,h.paneId=s.paneId,h.state="running",aN(a,b.id,"running")}catch(b){aM(a,b instanceof Error?b.message:String(b),h)}finally{aw.delete(aA(a,b,h))}return}if("spawning"===h.state){if(!aw.has(aA(a,b,h))&&!h.launchId)return void aM(a,"stage spawn was interrupted before durable launch evidence",h);if(!aw.has(aA(a,b,h))&&h.launchId){let b=d.spawnReceipt(h.launchId);if(!b)return void aM(a,"stage spawn receipt disappeared before recovery",h);if(h.conversationId=b.conversationId,h.sessionId=b.sessionId,h.agentPath=b.transcript,h.paneId=b.paneId,"failed"===b.state||"conflicted"===b.state||"starting"===b.state&&!b.paneId&&!b.transcript)return void aM(a,`stage spawn cannot recover from receipt state ${b.state}`,h)}h.state="running"}a3(a,h,c,d);let m=!h.paneId&&h.conversationId?await d.conversationAgentActive(h.conversationId):null;if(!h.agentPath)return void(!1===m?aM(a,"structured stage ended before its session was discovered",h):h.paneId&&!await d.paneAgentAlive(h.paneId)&&aM(a,"stage agent exited before its session was discovered",h));let n=c.find(a=>a.path===h.agentPath),o=n?.activity==="live"||n?.activityReason==="jsonl_turn_open"||n?.activityReason==="jsonl_turn_stalled"&&null!==h.paneId,p=!h.paneId&&h.conversationId?await d.conversationHostUnavailableSince?.(h.conversationId):null,q=p?aE(p):0,r=q>0&&aE(d.now())-q>=18e4;if(n&&!1!==m&&o&&!r||!(d.monotonicNow()<f))return;let s=await d.durableTurnEvidence(h.effectiveRole.engine,h.agentPath),t=s?.turn==="terminal"&&null!==s.message&&s.message.ts>aE(h.startedAt);if(s&&t){let c=aI(s.message.text);if(c&&(!r||"verdict"in c)){aK(h,d.now(),s.message.ts),a2(a,b,h,c,d,e);return}if(!r){if(!(d.monotonicNow()<f))return;aL(a,h,d,aJ(s.message.text),s.message.ts);return}}if(r){if(h.state="failed",h.completedAt=d.now(),h.error=az,a0(a,b,h,az,az))return;aM(a,az,h);return}if(!n){if(s)return;!1===m&&d.monotonicNow()<f?aL(a,h,d,"canonical stage transcript is not yet readable after structured stage termination",null):h.paneId&&!await d.paneAgentAlive(h.paneId)&&d.monotonicNow()<f&&aL(a,h,d,"canonical stage transcript is not yet readable after agent termination",null);return}if(!0===m||s?.turn==="busy"&&!h.paneId)return;let u=d.lastMessage(n);if(!u||u.ts<=aE(h.startedAt))return void(!1===m&&d.monotonicNow()<f?aL(a,h,d,"canonical completed assistant turn has not been ingested after structured stage termination",u?.ts??null):h.paneId&&!await d.paneAgentAlive(h.paneId)&&d.monotonicNow()<f&&aL(a,h,d,"canonical completed assistant turn has not been ingested after agent termination",u?.ts??null));let v=aI(u.text);if(!v){if(!(d.monotonicNow()<f))return;aL(a,h,d,aJ(u.text),u.ts);return}aK(h,d.now(),u.ts),a2(a,b,h,v,d,e)}function a5(a,b){let c=b.cursor?.activatedBy?b.cursor.input??"":b.cursor?.input??aO(b);return a.split("{{task}}").join(b.task).split("{{prev.output}}").join(c).trim()}function a6(a,b,c){let d=a5(b.prompt,a),e=c.roleId&&c.promptScaffold?a5(c.promptScaffold,a):"",f=e?e.lastIndexOf("\n\nSafety fences:\n"):-1,g=f>=0?e.slice(0,f):e,h=f>=0?e.slice(f):"";if(d.length+h.length>s.cr)return{error:`review directive is too long for the reviewer note (${d.length+h.length} chars after expansion; the reviewer receives at most ${s.cr}). Shorten this stage's prompt.`};if(!e)return{note:d};let i=`
3
3
 
4
4
  Reviewer role scaffold (${c.roleId}):
5
- `,j=s.cr-d.length-i.length-h.length,k=j>0?g.slice(0,j):"";return{note:k?`${d}${i}${k}${h}`:`${d}${h}`}}async function a2(a,b,c,d,e){let f=ay(a,b.id),g=a.cursor?.state==="pending"&&f&&["passed","failed","needs_decision","skipped"].includes(f.state)?aM(a,b):f??aM(a,b);if(!g||"needs_decision"===a.state)return;if("passed"===g.state&&a.cursor?.state==="committing")return void aW(a,b,g,d);if("committing"===g.state){let c=a7(a,g,d);return c?void aH(a,c,g):void aY(a,b,g,d)}let h=aL(a,b.id);if(!h?.agentPath)return void aH(a,"review-loop stage requires a passed run session",g);if(g.startedAt||(g.startedAt=d.now()),g.state="reviewing",aI(a,b.id,"reviewing"),!g.expectedReviewHeadSha){if(!a.lastPassedCommit)return void aH(a,"review-loop stage requires a verified pipeline commit",g);g.expectedReviewHeadSha=a.lastPassedCommit,e()}if(!g.flowId){let f=function(a,b,c){let d=b.expectedReviewHeadSha;if(!d)return{ok:!1,retryable:!1,detail:"review-loop stage requires a verified pipeline commit"};let e=V(a,c.exec);if(!e.ok)return{ok:!1,retryable:!1,detail:`review stage could not verify the pipeline head before publishing: ${e.error}`};if(e.sha!==d)return{ok:!1,retryable:!1,detail:`review stage head mismatch: the accepted review head is ${d}, but the pipeline worktree is at ${e.sha}; nothing was published`};let f=X(a,c.exec,{acceptedSha:d});return f.ok?"unreachable"===f.remote?{ok:!1,retryable:!0,detail:`passed but unpublished: ${f.detail}`}:"unavailable"===f.remote?{ok:!1,retryable:!1,detail:`review stage requires a published pipeline branch, but this repository has no origin remote to publish ${d} to`}:(a.publishedCommit=f.sha,{ok:!0}):{ok:!1,retryable:!1,detail:`review stage could not publish the accepted head ${d}: ${f.error}`}}(a,g,d);if(!f.ok){if(f.retryable){g.error=f.detail,a.state="running",a.stateDetail=f.detail;return}aH(a,f.detail,g);return}g.error=null,a.stateDetail=null,e();let i=d.findFlow(h.agentPath,h.conversationId,a.baseRef,g.expectedReviewHeadSha);if(i){aO(g,i),e();return}e();let j={engine:h.effectiveRole.engine,model:h.effectiveRole.model,effort:h.effectiveRole.effort},k={engine:g.effectiveRole.engine,model:g.effectiveRole.model,effort:g.effectiveRole.effort},l=await d.createFlow({implementerPath:h.agentPath,...h.conversationId?{implementerConversationId:h.conversationId}:{},deliverKickoff:!1,roles:{implementer:j,reviewer:k},baseMode:"head",baseRef:a.baseRef,headRef:a.branch,targetSha:g.expectedReviewHeadSha,spec:a.spec??a.task,mode:"auto",reviewerMode:"headless",roundLimit:5},c);if(!l.flow)return void aH(a,`creating the review flow failed: ${l.error??"unknown error"}`,g);if(aO(g,l.flow),e(),"paused"===l.flow.state)return void aH(a,`review flow startup paused: ${l.flow.stateDetail??"kickoff delivery failed"}`,g);let m=a1(a,b,g.effectiveRole);if("error"in m)return void aH(a,m.error,g);let n=d.patchFlow(l.flow.id,"advance",m.note);return void(n.error&&aH(a,`advancing the review flow failed: ${n.error}`,g))}let i=d.getFlow(g.flowId);if(!i)return void aH(a,"embedded review flow record disappeared",g);if("paused"===i.state){let b=i.pausedState&&"paused"!==i.pausedState?i.pausedState:"unknown phase";aH(a,`review flow paused in ${b}: ${i.stateDetail??"operator decision required"}`,g);return}if("waiting_ready"===i.state&&0===i.rounds.length){let c=a1(a,b,g.effectiveRole);if("error"in c)return void aH(a,c.error,g);let e=d.patchFlow(i.id,"advance",c.note);return void(e.error&&aH(a,`advancing the review flow failed: ${e.error}`,g))}aO(g,i);let j=i.rounds.findLast(a=>a.reviewHeadSha)?.reviewHeadSha??null;j&&g.reviewHeadSha!==j&&(g.expectedReviewHeadSha=j,g.reviewHeadSha=j,e());let k=function(a){if("relaying"!==a.state||!a.stateDetail?.includes("retrying automatically"))return null;let b=a.hostClaim?`structured host claim ${a.hostClaim.sessionKey} on account ${a.hostClaim.accountRef} failed:`:null,c=b&&a.stateDetail.includes(b)?aQ:aR;return`${c}${a.stateDetail}`}(i);if(k?a.stateDetail=k:(a.stateDetail?.startsWith(aQ)||a.stateDetail?.startsWith(aR))&&(a.stateDetail=null),"approved"===i.state){let c=a7(a,g,d);if(c)return void aH(a,c,g);g.output=`Review loop approved after ${i.rounds.length} round(s).`,g.verdict={status:"pass",confidence:1},g.state="committing",aI(a,b.id,"committing"),e(),aY(a,b,g,d)}else{let b=a8(i);b&&aH(a,b,g)}}async function a3(a,b,c,d,e){let f=JSON.stringify(a);if("provisioning"===a.state){if(!a.baseBranch||!a.baseRef||!a.lastPassedCommit){let b=function(a,b,c){let d=b.baseBranch?.trim()||"main";if(!U(d))return{ok:!1,error:"the pipeline base branch is invalid"};let e=b.baseRef?.trim();if(!e){let b=c("git",["fetch","--no-tags","origin",`+refs/heads/${d}:refs/remotes/origin/${d}`],a);if(0!==b.code)return T(`fetching origin/${d}`,b)}let f=e||`origin/${d}`,g=c("git",["rev-parse","--verify","--end-of-options",`${f}^{commit}`],a);if(0!==g.code)return T(`resolving pipeline base ${f}`,g);let h=g.stdout.trim();return/^[0-9a-f]{40}$/i.test(h)?{ok:!0,baseBranch:d,baseRef:h}:{ok:!1,error:`resolving pipeline base ${f}: expected an exact commit SHA`}}(a.repoDir,{},c.exec);if(!b.ok)return aH(a,b.error),JSON.stringify(a)!==f;a.baseBranch=b.baseBranch,a.baseRef=b.baseRef,a.lastPassedCommit=b.baseRef,d()}let b=function(a,b){if(!a.baseBranch||!/^[0-9a-f]{40}$/i.test(a.baseRef))return{ok:!1,error:"the pipeline base is unresolved"};let c=b("git",["worktree","add","-b",a.branch,a.worktreeDir,a.baseRef],a.repoDir);if(0!==c.code){let d=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==d.code||d.stdout.trim()!==a.branch)return T("git worktree add",c)}let d=b("git",["rev-parse","HEAD"],a.worktreeDir);return 0===d.code&&d.stdout.trim()?d.stdout.trim()!==a.baseRef?{ok:!1,error:"the pipeline worktree does not match its persisted base"}:{ok:!0,sha:a.baseRef,baseBranch:a.baseBranch}:T("resolving the pipeline base ref",d)}(a,c.exec);b.ok?(a.baseBranch=b.baseBranch??"",a.baseRef=b.sha,a.lastPassedCommit=b.sha,a.state="running",a.stateDetail=null):aH(a,b.error)}else if("running"===a.state){let f=aw(a);f?"run"===f.kind?await a_(a,f,b,c,d,e):await a2(a,f,b,c,d):aH(a,"pipeline cursor points to an unknown stage")}return JSON.stringify(a)!==f}let a4=globalThis,a5=new Set(["waiting_ready","spawn_pending","spawning","reviewing","relay_pending","relaying","fixing","approved","paused","needs_decision","done_comment","closed"]),a6=["review flow startup paused:","review flow paused in ","review flow paused during startup:","advancing the review flow failed:","review loop ended in ","embedded review flow record disappeared"];function a7(a,b,c){if(!b.reviewHeadSha||b.expectedReviewHeadSha!==b.reviewHeadSha)return`approved review flow envelope mismatch: expected ${b.expectedReviewHeadSha??"no exact head"}, reviewed ${b.reviewHeadSha??"no exact head"}`;let d=V(a,c.exec);if(!d.ok)return`approved review flow could not verify the current pipeline head: ${d.error}`;if(b.reviewHeadSha!==d.sha)return`approved review flow head mismatch: reviewed ${b.reviewHeadSha}, current pipeline head is ${d.sha}`;let e=function(a,b){if(!U(a.branch))return{ok:!1,error:"the pipeline branch is invalid"};let c=b("git",["ls-remote","--heads","origin",`refs/heads/${a.branch}`],a.worktreeDir);if(0!==c.code)return T("checking the remote pipeline branch",c);let d=c.stdout.trim().split(/\s+/)[0]??"";return/^[0-9a-f]{40}$/i.test(d)?{ok:!0,sha:d}:{ok:!1,error:"the remote pipeline branch has no exact commit SHA"}}(a,c.exec);return e.ok?b.reviewHeadSha!==e.sha?`approved review flow head mismatch: reviewed ${b.reviewHeadSha}, remote pipeline head is ${e.sha}`:null:`approved review flow could not verify the remote pipeline head: ${e.error}`}function a8(a){return"needs_decision"!==a.state&&"done_comment"!==a.state&&"closed"!==a.state?null:`review loop ended in ${a.state}: ${a.stateDetail??"operator decision required"}`}async function a9(a,b,c){if("needs_decision"!==a.state)return!1;let d=aw(a);if(!d||"run"!==d.kind)return!1;let e=ay(a,d.id),f=e?.verdictRecovery;if(!e?.agentPath||f?.state!=="exhausted")return!1;let g=await b.durableTurnEvidence(e.effectiveRole.engine,e.agentPath),h=g?.turn==="terminal"?g.message:null;if(!h||h.ts<=az(e.startedAt)||h.ts<=(f.messageTs??0))return!1;let i=aD(h.text);return!!i&&!("failureReason"in i)&&(e.state="running",e.completedAt=null,e.error=null,a.state="running",a.stateDetail=null,aF(e,b.now(),h.ts),aZ(a,d,e,i,b,c),!0)}function ba(a){return a.includes("structured delivery controller is unavailable")||a.includes("structured initial message")||a.includes("runtime host request timed out")}async function bb(a,b){let c=a.unconfirmedHosts;if(!c?.length)return!1;let d=[];for(let a of c){let c={stageId:a.stageId,attempt:a.attempt,conversationId:a.conversationId,agentPath:a.agentPath,paneId:a.paneId??null},e=await b.stageHostResident(c),f=!e&&!!c.paneId&&await b.paneAgentAlive(c.paneId);(e||f)&&d.push(a)}return d.length!==c.length&&(a.unconfirmedHosts=d.length>0?d:void 0,a.unconfirmedHosts||"closed"!==a.state||(a.hiddenAt=a.closedAt??b.now()),!0)}async function bc(a,b){if("completed"!==a.state||a.terminalReap?.settledAt)return!1;let c=a.terminalReap??{rounds:0,stopped:0,lastAt:b.now(),settledAt:null},d=b.monotonicNow()+5e3,e=(function(a){let b=[],c=new Set;for(let d of a.runs)for(let a of d.attempts){if(!a.conversationId&&!a.agentPath&&!a.paneId)continue;let e=`${a.conversationId??""}|${a.agentPath??""}|${a.paneId??""}`;c.has(e)||(c.add(e),b.push({attempt:a,target:{stageId:d.stageId,attempt:a.n,conversationId:a.conversationId,agentPath:a.agentPath,paneId:a.paneId,...a.historical?{adopted:!0}:{}},turnSettled:!!(a.verdict||a.completedAt)}))}return b})(a).filter(({target:b,turnSettled:c})=>c&&!(b.conversationId&&b.conversationId===a.srcConversationId)&&!(b.agentPath&&b.agentPath===a.srcPath)),f=[],g=!1,h=!1;for(let[a,{target:i}]of e.entries()){if(b.monotonicNow()>=d){h=!0,c.rounds+1>=5&&f.push(...e.slice(a).map(({target:a})=>({...a,operationId:null,detail:"terminal reap budget expired before this host was probed"})));break}if(!await b.stageHostResident(i)||i.conversationId&&await b.conversationAgentActive(i.conversationId)===!0)continue;g=!0;let j=await b.stopStageAgent(i);"stopped"===j.outcome?c.stopped+=1:"unconfirmed"===j.outcome?f.push({...i,operationId:j.operationId,detail:j.detail}):"failed"===j.outcome&&f.push({...i,operationId:null,detail:j.error})}if(c.lastAt=b.now(),(g||h)&&(c.rounds+=1),(!h&&0===f.length||c.rounds>=5)&&(c.settledAt=c.lastAt,f.length>0)){let b=new Set((a.unconfirmedHosts??[]).map(a=>`${a.stageId}:${a.attempt}`));a.unconfirmedHosts=[...a.unconfirmedHosts??[],...f.filter(a=>!b.has(`${a.stageId}:${a.attempt}`)).map(a=>({stageId:a.stageId,attempt:a.attempt,conversationId:a.conversationId,agentPath:a.agentPath,paneId:a.paneId,operationId:a.operationId,detail:a.detail,at:c.settledAt}))]}return a.terminalReap=c,!0}async function bd(a,b=function(){let a=null,b=(0,m.tk)(),c=null,d=null,e=null,f=()=>c??=b.readOnlySnapshot(),h=()=>e??=(0,u.mL)(),i=()=>{c=null,d=null};return{exec:O.Ix,preflightRepo:ad,roleLookup:ai,spawnAgent:async(a,b)=>{let c=await al(a,b);return i(),c},spawnReceipt:a=>{let b=f().receipts[a];return b?{state:b.state,launchId:b.launchId,conversationId:b.conversationId,sessionId:b.key?.sessionId??null,transcript:b.artifactPath,paneId:b.verifiedHost?.paneId??b.pane?.paneId??null}:null},claimSpawnRetry:(a,c)=>{let d=b.claimFailedSpawnForRetry(a,c).kind;return i(),d},paneAgentAlive:async a=>{let b=await (0,N.RZ)(a);return null!==b&&!(0,M.g2)(b.command)},stopStageAgent:a=>aq(a),stopStagePane:a=>ap(a),stageHostResident:async a=>{try{let b=await ao(a);return!!b&&b.resident()}catch{return!0}},monotonicNow:()=>Date.now(),worktreePresent:a=>!!a&&g().existsSync(a),conversationAgentActive:async b=>{let c,d=(0,w.sS)();if(!d)return null;a??=d.snapshot();try{c=await a}catch{return null}let e=c.sessions.find(a=>a.conversationId===b);return e?["dead","unhosted","conflict"].includes(e.host)?(a=null,!1):"running"===e.turn||"interrupt_requested"===e.turn||e.attentionIds.length>0||null:null},conversationHostUnavailableSince:async a=>{if(!a.startsWith("conversation_"))return;let b=f(),c=b.conversations[a],d=c?.generations.at(-1);if(!c||!d)return;let e=(0,o.sz)(c.engine,d.path);if(!e)return;let g=b.entries[(0,o.pp)(e)];return g?"dead"===g.status||"unhosted"===g.status?g.updatedAt:null:d.createdAt},sleep:a=>new Promise(b=>setTimeout(b,a)),durableTurnEvidence:S,headCwd:a=>(0,r.tX)(a),lastMessage:t.if,pathForConversation:a=>a.startsWith("conversation_")?f().conversations[a]?.generations.at(-1)?.path??null:null,sourcePathAllowed:q,conversationIdForPath:a=>{for(let b of Object.values(f().conversations))if(b.generations.some(b=>b.path===a))return b.id;return null},pipelineAdoptionCandidates:a=>(()=>{if(d)return d;let a=f(),b=new Map(Object.values(a.receipts).map(a=>[a.conversationId,a])),c=new Map;for(let[d,e]of Object.entries(a.memberships))for(let f of e){if("pipeline"!==f.kind||!f.containerId||!f.slot.startsWith("adopt:")||!f.stageId||!f.parentConversationId)continue;let e=b.get(d)??null,g=a.conversations[d]??null,h=g?.generations.at(-1)??null,i=e?.artifactPath??h?.path??null;if(!i)continue;let j=f.runtime??(e?{engine:e.engine,model:e.launchProfile.model,effort:e.launchProfile.effort}:g?{engine:g.engine,model:h?.launchProfile.model??null,effort:h?.launchProfile.effort??null}:null),k=c.get(f.containerId)??[];k.push({stageId:f.stageId,sourceConversationId:f.parentConversationId,launchId:e?.launchId??null,conversationId:d,sessionId:e?.key?.sessionId??null,agentPath:i,paneId:e?.verifiedHost?.paneId??e?.pane?.paneId??null,startedAt:e?.createdAt??f.createdAt,runtime:j}),c.set(f.containerId,k)}return d=c,c})().get(a)??[],createFlow:async(a,b)=>{let c=await (0,s._p)(a,b);return e=null,c},patchFlow:(a,b,c,d=null)=>{let f=(0,s.n1)(a,{action:b,...c?{note:c}:{}},d);return e=null,f},closeFlow:async a=>{let b=await (0,s.ni)(a);return e=null,b},getFlow:a=>h().find(b=>b.id===a)??null,findFlow:(a,b,c,d)=>h().filter(e=>e.baseRef===c&&e.targetSha===d&&null===e.closedAt&&"closed"!==e.state&&(e.implementerPath===a||!!(b&&e.implementerConversationId===b))).sort((a,b)=>b.createdAt.localeCompare(a.createdAt))[0]??null,projectForCwd:L.hY,now:()=>new Date().toISOString()}}()){if(a4.__llvPipelineTick)return{pipelines:[],changed:!1};a4.__llvPipelineTick=!0;let c=!1,d=b.monotonicNow()+15e3;try{let e=await (0,aj.M7)(async(c,e)=>{let f=!1;return await (0,n.pV)(c,async c=>{let g=()=>e([c]),h=function(a,b){let c=!1;for(let d of a.runs)for(let a of d.attempts){let d=a.flowId?b.getFlow(a.flowId):null;d&&(c=aS(a,d,b.now())||c)}return c}(c,b);h=function(a,b){let c=!1;for(let d of b.pipelineAdoptionCandidates(a.id)){let b=ax(a,d.stageId);b?.attempts.find(a=>a.conversationId===d.conversationId||null!==d.launchId&&a.launchId===d.launchId)||(c=null!==function(a,b,c){let d=ax(a,b),e=a.stages.find(a=>a.id===b)??null;if(!d||!e)return null;let f=d.attempts.find(a=>a.conversationId===c.conversationId||null!==c.launchId&&a.launchId===c.launchId);if(f)return f;let g=d.attempts.find(a=>a.conversationId===c.sourceConversationId)??null;if(!g)return null;let h=structuredClone(g.effectiveRole??e.effectiveRole);c.runtime&&(h.engine=c.runtime.engine,h.model=c.runtime.model,h.effort=c.runtime.effort);let i={n:d.attempts.length+1,historical:!0,state:"running",effectiveRole:h,launchId:c.launchId,conversationId:c.conversationId,sessionId:c.sessionId,agentPath:c.agentPath,paneId:c.paneId,flowId:null,expectedReviewHeadSha:null,reviewHeadSha:null,startedAt:c.startedAt,completedAt:null,input:g.input,activatedBy:g.activatedBy?{...g.activatedBy}:null,output:null,verdict:null,error:null};return d.attempts.push(i),i}(a,d.stageId,d)||c)}return c}(c,b)||h,h=await aN(c,a,b)||h,h=function(a,b){let c=!1;if(a.srcConversationId){let d=b.pathForConversation(a.srcConversationId);d&&d!==a.srcPath&&(a.srcPath=d,c=!0)}for(let d of a.runs)for(let a of d.attempts){if(!a.conversationId)continue;let d=b.pathForConversation(a.conversationId);d&&d!==a.agentPath&&(a.agentPath=d,c=!0)}return c}(c,b)||h,h=await a9(c,b,g)||h,h=function(a,b){if("needs_decision"!==a.state)return!1;let c=aw(a);if(!c||"run"!==c.kind)return!1;let d=ay(a,c.id);if(!d||"needs_decision"!==d.state||null!==d.completedAt||null!==d.output||null!==d.verdict||d.error!==at)return!1;let e=b.now();return d.verdictRecovery={state:"pending",checks:0,maxChecks:3,startedAt:e,lastCheckedAt:e,nextCheckAt:e,reason:at,messageTs:null},d.state="running",d.error=null,a.state="running",a.stateDetail=null,aI(a,c.id,"running"),!0}(c,b)||h,h=function(a,b){var c;let d;if("needs_decision"!==a.state)return!1;let e=aw(a);if(!e||"run"!==e.kind)return!1;let f=ay(a,e.id);if(!f?.launchId||f.paneId||f.verdict||f.completedAt||(c=a,!((d=f.error??c.stateDetail??"").startsWith("stage spawn")||ba(d))))return!1;let g=b.spawnReceipt(f.launchId);return g?.state==="completed"&&g.launchId===f.launchId&&g.conversationId===f.conversationId&&(f.sessionId=g.sessionId,f.agentPath=g.transcript,f.paneId=g.paneId,f.state="running",f.error=null,a.state="running",a.stateDetail=null,aI(a,e.id,"running"),!0)}(c,b)||h,h=function(a,b,c){if("needs_decision"!==a.state)return!1;let d=aw(a);if(d?.kind!=="review-loop")return!1;let e=ay(a,d.id),f=e?.error,g=e?.flowId?b.getFlow(e.flowId):null;if(!f||!a6.some(a=>f.startsWith(a))||!g||!a5.has(g.state))return!1;let h=function(a){if("needs_decision"!==a.state&&"done_comment"!==a.state&&"closed"!==a.state)return null;let b=a.rounds.findLast(a=>null!==a.verdict);if(!b?.findingsPath||"APPROVE"===b.verdict)return null;let c=(0,t.V_)(b);if(!c||c.verdict!==b.verdict)return null;let d=(0,J.wV)(c.content,b.reviewedAt),e=(d?.findings??[]).map(b=>(function(a,b){let c=b.file?.trim()??"",d=c;if(c&&i().isAbsolute(c)){let b=i().relative(a.cwd,c);d=!b||b.startsWith("..")||i().isAbsolute(b)?i().basename(c):b}let e=d?`${I(d,400)}${b.line?`:${b.line}`:""}`:b.line?`line ${b.line}`:"";return[b.severity,e,I(b.title,400)].filter(Boolean).join(" — ")})(a,b)),f=[...a.stateDetail?[I(a.stateDetail,2e3)]:[],...e].slice(0,50);return 0===e.length&&f.length<50&&f.push(`Review flow round ${b.n} returned ${c.verdict}; open the round artifact for details.`),{verdict:{status:"REQUEST_CHANGES"===c.verdict?"fail":"needs_decision",findings:f,confidence:1},output:`Review flow round ${b.n}: ${c.verdict}
5
+ `,j=s.cr-d.length-i.length-h.length,k=j>0?g.slice(0,j):"";return{note:k?`${d}${i}${k}${h}`:`${d}${h}`}}async function a7(a,b,c,d,e){let f=aD(a,b.id),g=a.cursor?.state==="pending"&&f&&["passed","failed","needs_decision","skipped"].includes(f.state)?aR(a,b):f??aR(a,b);if(!g||"needs_decision"===a.state)return;if("passed"===g.state&&a.cursor?.state==="committing")return void a_(a,b,g,d);if("committing"===g.state){let c=bc(a,g,d);return c?void aM(a,c,g):void a1(a,b,g,d)}let h=aQ(a,b.id);if(!h?.agentPath)return void aM(a,"review-loop stage requires a passed run session",g);if(g.startedAt||(g.startedAt=d.now()),g.state="reviewing",aN(a,b.id,"reviewing"),!g.expectedReviewHeadSha){if(!a.lastPassedCommit)return void aM(a,"review-loop stage requires a verified pipeline commit",g);g.expectedReviewHeadSha=a.lastPassedCommit,e()}if(!g.flowId){let f=function(a,b,c){let d=b.expectedReviewHeadSha;if(!d)return{ok:!1,retryable:!1,detail:"review-loop stage requires a verified pipeline commit"};let e=$(a,c.exec);if(!e.ok)return{ok:!1,retryable:!1,detail:`review stage could not verify the pipeline head before publishing: ${e.error}`};if(e.sha!==d)return{ok:!1,retryable:!1,detail:`review stage head mismatch: the accepted review head is ${d}, but the pipeline worktree is at ${e.sha}; nothing was published`};let f=aa(a,c.exec,{acceptedSha:d});return f.ok?"unreachable"===f.remote?{ok:!1,retryable:!0,detail:`passed but unpublished: ${f.detail}`}:"unavailable"===f.remote?{ok:!1,retryable:!1,detail:`review stage requires a published pipeline branch, but this repository has no origin remote to publish ${d} to`}:(a.publishedCommit=f.sha,{ok:!0}):{ok:!1,retryable:!1,detail:`review stage could not publish the accepted head ${d}: ${f.error}`}}(a,g,d);if(!f.ok){if(f.retryable){g.error=f.detail,a.state="running",a.stateDetail=f.detail;return}aM(a,f.detail,g);return}g.error=null,a.stateDetail=null,e();let i=d.findFlow(h.agentPath,h.conversationId,a.baseRef,g.expectedReviewHeadSha);if(i){aT(g,i),e();return}e();let j={engine:h.effectiveRole.engine,model:h.effectiveRole.model,effort:h.effectiveRole.effort},k={engine:g.effectiveRole.engine,model:g.effectiveRole.model,effort:g.effectiveRole.effort},l=await d.createFlow({implementerPath:h.agentPath,...h.conversationId?{implementerConversationId:h.conversationId}:{},deliverKickoff:!1,roles:{implementer:j,reviewer:k},baseMode:"head",baseRef:a.baseRef,headRef:a.branch,targetSha:g.expectedReviewHeadSha,spec:a.spec??a.task,mode:"auto",reviewerMode:"headless",roundLimit:5},c);if(!l.flow)return void aM(a,`creating the review flow failed: ${l.error??"unknown error"}`,g);if(aT(g,l.flow),e(),"paused"===l.flow.state)return void aM(a,`review flow startup paused: ${l.flow.stateDetail??"kickoff delivery failed"}`,g);let m=a6(a,b,g.effectiveRole);if("error"in m)return void aM(a,m.error,g);let n=d.patchFlow(l.flow.id,"advance",m.note);return void(n.error&&aM(a,`advancing the review flow failed: ${n.error}`,g))}let i=d.getFlow(g.flowId);if(!i)return void aM(a,"embedded review flow record disappeared",g);if("paused"===i.state){let b=i.pausedState&&"paused"!==i.pausedState?i.pausedState:"unknown phase";aM(a,`review flow paused in ${b}: ${i.stateDetail??"operator decision required"}`,g);return}if("waiting_ready"===i.state&&0===i.rounds.length){let c=a6(a,b,g.effectiveRole);if("error"in c)return void aM(a,c.error,g);let e=d.patchFlow(i.id,"advance",c.note);return void(e.error&&aM(a,`advancing the review flow failed: ${e.error}`,g))}aT(g,i);let j=i.rounds.findLast(a=>a.reviewHeadSha)?.reviewHeadSha??null;j&&g.reviewHeadSha!==j&&(g.expectedReviewHeadSha=j,g.reviewHeadSha=j,e());let k=function(a){if("relaying"!==a.state||!a.stateDetail?.includes("retrying automatically"))return null;let b=a.hostClaim?`structured host claim ${a.hostClaim.sessionKey} on account ${a.hostClaim.accountRef} failed:`:null,c=b&&a.stateDetail.includes(b)?aV:aW;return`${c}${a.stateDetail}`}(i);if(k?a.stateDetail=k:(a.stateDetail?.startsWith(aV)||a.stateDetail?.startsWith(aW))&&(a.stateDetail=null),"approved"===i.state){let c=bc(a,g,d);if(c)return void aM(a,c,g);g.output=`Review loop approved after ${i.rounds.length} round(s).`,g.verdict={status:"pass",confidence:1},g.state="committing",aN(a,b.id,"committing"),e(),a1(a,b,g,d)}else{let b=bd(i);b&&aM(a,b,g)}}async function a8(a,b,c,d,e){let f=JSON.stringify(a);if("provisioning"===a.state){if(!a.baseBranch||!a.baseRef||!a.lastPassedCommit){let b=function(a,b,c){let d=b.baseBranch?.trim()||"main";if(!Z(d))return{ok:!1,error:"the pipeline base branch is invalid"};let e=b.baseRef?.trim();if(!e){let b=c("git",["fetch","--no-tags","origin",`+refs/heads/${d}:refs/remotes/origin/${d}`],a);if(0!==b.code)return Y(`fetching origin/${d}`,b)}let f=e||`origin/${d}`,g=c("git",["rev-parse","--verify","--end-of-options",`${f}^{commit}`],a);if(0!==g.code)return Y(`resolving pipeline base ${f}`,g);let h=g.stdout.trim();return/^[0-9a-f]{40}$/i.test(h)?{ok:!0,baseBranch:d,baseRef:h}:{ok:!1,error:`resolving pipeline base ${f}: expected an exact commit SHA`}}(a.repoDir,{},c.exec);if(!b.ok)return aM(a,b.error),JSON.stringify(a)!==f;a.baseBranch=b.baseBranch,a.baseRef=b.baseRef,a.lastPassedCommit=b.baseRef,d()}let b=function(a,b){if(!a.baseBranch||!/^[0-9a-f]{40}$/i.test(a.baseRef))return{ok:!1,error:"the pipeline base is unresolved"};let c=b("git",["worktree","add","-b",a.branch,a.worktreeDir,a.baseRef],a.repoDir);if(0!==c.code){let d=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==d.code||d.stdout.trim()!==a.branch)return Y("git worktree add",c)}let d=b("git",["rev-parse","HEAD"],a.worktreeDir);return 0===d.code&&d.stdout.trim()?d.stdout.trim()!==a.baseRef?{ok:!1,error:"the pipeline worktree does not match its persisted base"}:{ok:!0,sha:a.baseRef,baseBranch:a.baseBranch}:Y("resolving the pipeline base ref",d)}(a,c.exec);b.ok?(a.baseBranch=b.baseBranch??"",a.baseRef=b.sha,a.lastPassedCommit=b.sha,a.state="running",a.stateDetail=null):aM(a,b.error)}else if("running"===a.state){let f=aB(a);f?"run"===f.kind?await a4(a,f,b,c,d,e):await a7(a,f,b,c,d):aM(a,"pipeline cursor points to an unknown stage")}return JSON.stringify(a)!==f}let a9=globalThis,ba=new Set(["waiting_ready","spawn_pending","spawning","reviewing","relay_pending","relaying","fixing","approved","paused","needs_decision","done_comment","closed"]),bb=["review flow startup paused:","review flow paused in ","review flow paused during startup:","advancing the review flow failed:","review loop ended in ","embedded review flow record disappeared"];function bc(a,b,c){if(!b.reviewHeadSha||b.expectedReviewHeadSha!==b.reviewHeadSha)return`approved review flow envelope mismatch: expected ${b.expectedReviewHeadSha??"no exact head"}, reviewed ${b.reviewHeadSha??"no exact head"}`;let d=$(a,c.exec);if(!d.ok)return`approved review flow could not verify the current pipeline head: ${d.error}`;if(b.reviewHeadSha!==d.sha)return`approved review flow head mismatch: reviewed ${b.reviewHeadSha}, current pipeline head is ${d.sha}`;let e=function(a,b){if(!Z(a.branch))return{ok:!1,error:"the pipeline branch is invalid"};let c=b("git",["ls-remote","--heads","origin",`refs/heads/${a.branch}`],a.worktreeDir);if(0!==c.code)return Y("checking the remote pipeline branch",c);let d=c.stdout.trim().split(/\s+/)[0]??"";return/^[0-9a-f]{40}$/i.test(d)?{ok:!0,sha:d}:{ok:!1,error:"the remote pipeline branch has no exact commit SHA"}}(a,c.exec);return e.ok?b.reviewHeadSha!==e.sha?`approved review flow head mismatch: reviewed ${b.reviewHeadSha}, remote pipeline head is ${e.sha}`:null:`approved review flow could not verify the remote pipeline head: ${e.error}`}function bd(a){return"needs_decision"!==a.state&&"done_comment"!==a.state&&"closed"!==a.state?null:`review loop ended in ${a.state}: ${a.stateDetail??"operator decision required"}`}async function be(a,b,c){if("needs_decision"!==a.state)return!1;let d=aB(a);if(!d||"run"!==d.kind)return!1;let e=aD(a,d.id),f=e?.verdictRecovery;if(!e?.agentPath||f?.state!=="exhausted")return!1;let g=await b.durableTurnEvidence(e.effectiveRole.engine,e.agentPath),h=g?.turn==="terminal"?g.message:null;if(!h||h.ts<=aE(e.startedAt)||h.ts<=(f.messageTs??0))return!1;let i=aI(h.text);return!!i&&!("failureReason"in i)&&(e.state="running",e.completedAt=null,e.error=null,a.state="running",a.stateDetail=null,aK(e,b.now(),h.ts),a2(a,d,e,i,b,c),!0)}function bf(a){return a.includes("structured delivery controller is unavailable")}function bg(a){return bf(a)||a.includes("structured initial message")||a.includes("runtime host request timed out")}function bh(a,b,c,d){let e=aE(c),f=a.controllerWait??{startedAt:b,rounds:0,retryAfter:b},g=3e4-Math.max(0,e-aE(f.startedAt));if(g<=0)return"exhausted";let h=Math.min(8e3,1e3*2**f.rounds,g);return a.controllerWait={startedAt:f.startedAt,rounds:f.rounds+1,retryAfter:new Date(e+h).toISOString()},d.scheduleTick?.(h),"waiting"}function bi(a,b,c){var d;let e,f=Math.round((d=aE(b),((e=a.controllerWait?.startedAt)?Math.max(0,d-aE(e)):0)/1e3)),g=a.controllerWait?.rounds??0;return`stage spawn failed after ${g} retries over ${f}s: ${c}`}async function bj(a,b){let c=a.unconfirmedHosts;if(!c?.length)return!1;let d=[];for(let a of c){let c={stageId:a.stageId,attempt:a.attempt,conversationId:a.conversationId,agentPath:a.agentPath,paneId:a.paneId??null},e=await b.stageHostResident(c),f=!e&&!!c.paneId&&await b.paneAgentAlive(c.paneId);(e||f)&&d.push(a)}return d.length!==c.length&&(a.unconfirmedHosts=d.length>0?d:void 0,a.unconfirmedHosts||"closed"!==a.state||(a.hiddenAt=a.closedAt??b.now()),!0)}async function bk(a,b){if("completed"!==a.state||a.terminalReap?.settledAt)return!1;let c=a.terminalReap??{rounds:0,stopped:0,lastAt:b.now(),settledAt:null},d=b.monotonicNow()+5e3,e=(function(a){let b=[],c=new Set;for(let d of a.runs)for(let a of d.attempts){if(!a.conversationId&&!a.agentPath&&!a.paneId)continue;let e=`${a.conversationId??""}|${a.agentPath??""}|${a.paneId??""}`;c.has(e)||(c.add(e),b.push({attempt:a,target:{stageId:d.stageId,attempt:a.n,conversationId:a.conversationId,agentPath:a.agentPath,paneId:a.paneId,...a.historical?{adopted:!0}:{}},turnSettled:!!(a.verdict||a.completedAt)}))}return b})(a).filter(({target:b,turnSettled:c})=>c&&!(b.conversationId&&b.conversationId===a.srcConversationId)&&!(b.agentPath&&b.agentPath===a.srcPath)),f=[],g=!1,h=!1;for(let[a,{target:i}]of e.entries()){if(b.monotonicNow()>=d){h=!0,c.rounds+1>=5&&f.push(...e.slice(a).map(({target:a})=>({...a,operationId:null,detail:"terminal reap budget expired before this host was probed"})));break}if(!await b.stageHostResident(i)||i.conversationId&&await b.conversationAgentActive(i.conversationId)===!0)continue;g=!0;let j=await b.stopStageAgent(i);"stopped"===j.outcome?c.stopped+=1:"unconfirmed"===j.outcome?f.push({...i,operationId:j.operationId,detail:j.detail}):"failed"===j.outcome&&f.push({...i,operationId:null,detail:j.error})}if(c.lastAt=b.now(),(g||h)&&(c.rounds+=1),(!h&&0===f.length||c.rounds>=5)&&(c.settledAt=c.lastAt,f.length>0)){let b=new Set((a.unconfirmedHosts??[]).map(a=>`${a.stageId}:${a.attempt}`));a.unconfirmedHosts=[...a.unconfirmedHosts??[],...f.filter(a=>!b.has(`${a.stageId}:${a.attempt}`)).map(a=>({stageId:a.stageId,attempt:a.attempt,conversationId:a.conversationId,agentPath:a.agentPath,paneId:a.paneId,operationId:a.operationId,detail:a.detail,at:c.settledAt}))]}return a.terminalReap=c,!0}async function bl(a,b=function(){let a=null,b=(0,m.tk)(),c=null,d=null,e=null,f=()=>c??=b.readOnlySnapshot(),h=()=>e??=(0,u.mL)(),i=()=>{c=null,d=null};return{exec:P.Ix,preflightRepo:ai,roleLookup:an,spawnAgent:async(a,b)=>{let c=await aq(a,b);return i(),c},structuredDeliveryPublication:()=>(0,w.cM)()?(0,x.du)():"ready",scheduleTick:a=>{let b=setTimeout(()=>(0,Q.L1)(),a);b.unref?.()},spawnReceipt:a=>{let b=f().receipts[a];return b?{state:b.state,launchId:b.launchId,conversationId:b.conversationId,sessionId:b.key?.sessionId??null,transcript:b.artifactPath,paneId:b.verifiedHost?.paneId??b.pane?.paneId??null}:null},claimSpawnRetry:(a,c)=>{let d=b.claimFailedSpawnForRetry(a,c).kind;return i(),d},paneAgentAlive:async a=>{let b=await (0,O.RZ)(a);return null!==b&&!(0,M.g2)(b.command)},stopStageAgent:a=>av(a),stopStagePane:a=>au(a),stageHostResident:async a=>{try{let b=await at(a);return!!b&&b.resident()}catch{return!0}},monotonicNow:()=>Date.now(),worktreePresent:a=>!!a&&g().existsSync(a),conversationAgentActive:async b=>{let c,d=(0,v.sS)();if(!d)return null;a??=d.snapshot();try{c=await a}catch{return null}let e=c.sessions.find(a=>a.conversationId===b);return e?["dead","unhosted","conflict"].includes(e.host)?(a=null,!1):"running"===e.turn||"interrupt_requested"===e.turn||e.attentionIds.length>0||null:null},conversationHostUnavailableSince:async a=>{if(!a.startsWith("conversation_"))return;let b=f(),c=b.conversations[a],d=c?.generations.at(-1);if(!c||!d)return;let e=(0,o.sz)(c.engine,d.path);if(!e)return;let g=b.entries[(0,o.pp)(e)];return g?"dead"===g.status||"unhosted"===g.status?g.updatedAt:null:d.createdAt},sleep:a=>new Promise(b=>setTimeout(b,a)),durableTurnEvidence:X,headCwd:a=>(0,r.tX)(a),lastMessage:t.if,pathForConversation:a=>a.startsWith("conversation_")?f().conversations[a]?.generations.at(-1)?.path??null:null,sourcePathAllowed:q,conversationIdForPath:a=>{for(let b of Object.values(f().conversations))if(b.generations.some(b=>b.path===a))return b.id;return null},pipelineAdoptionCandidates:a=>(()=>{if(d)return d;let a=f(),b=new Map(Object.values(a.receipts).map(a=>[a.conversationId,a])),c=new Map;for(let[d,e]of Object.entries(a.memberships))for(let f of e){if("pipeline"!==f.kind||!f.containerId||!f.slot.startsWith("adopt:")||!f.stageId||!f.parentConversationId)continue;let e=b.get(d)??null,g=a.conversations[d]??null,h=g?.generations.at(-1)??null,i=e?.artifactPath??h?.path??null;if(!i)continue;let j=f.runtime??(e?{engine:e.engine,model:e.launchProfile.model,effort:e.launchProfile.effort}:g?{engine:g.engine,model:h?.launchProfile.model??null,effort:h?.launchProfile.effort??null}:null),k=c.get(f.containerId)??[];k.push({stageId:f.stageId,sourceConversationId:f.parentConversationId,launchId:e?.launchId??null,conversationId:d,sessionId:e?.key?.sessionId??null,agentPath:i,paneId:e?.verifiedHost?.paneId??e?.pane?.paneId??null,startedAt:e?.createdAt??f.createdAt,runtime:j}),c.set(f.containerId,k)}return d=c,c})().get(a)??[],createFlow:async(a,b)=>{let c=await (0,s._p)(a,b);return e=null,c},patchFlow:(a,b,c,d=null)=>{let f=(0,s.n1)(a,{action:b,...c?{note:c}:{}},d);return e=null,f},closeFlow:async a=>{let b=await (0,s.ni)(a);return e=null,b},getFlow:a=>h().find(b=>b.id===a)??null,findFlow:(a,b,c,d)=>h().filter(e=>e.baseRef===c&&e.targetSha===d&&null===e.closedAt&&"closed"!==e.state&&(e.implementerPath===a||!!(b&&e.implementerConversationId===b))).sort((a,b)=>b.createdAt.localeCompare(a.createdAt))[0]??null,projectForCwd:L.hY,now:()=>new Date().toISOString()}}()){if(a9.__llvPipelineTick)return{pipelines:[],changed:!1};a9.__llvPipelineTick=!0;let c=!1,d=b.monotonicNow()+15e3;try{let e=await (0,ao.M7)(async(c,e)=>{let f=!1;return await (0,n.pV)(c,async c=>{let g=()=>e([c]),h=function(a,b){let c=!1;for(let d of a.runs)for(let a of d.attempts){let d=a.flowId?b.getFlow(a.flowId):null;d&&(c=aX(a,d,b.now())||c)}return c}(c,b);h=function(a,b){let c=!1;for(let d of b.pipelineAdoptionCandidates(a.id)){let b=aC(a,d.stageId);b?.attempts.find(a=>a.conversationId===d.conversationId||null!==d.launchId&&a.launchId===d.launchId)||(c=null!==function(a,b,c){let d=aC(a,b),e=a.stages.find(a=>a.id===b)??null;if(!d||!e)return null;let f=d.attempts.find(a=>a.conversationId===c.conversationId||null!==c.launchId&&a.launchId===c.launchId);if(f)return f;let g=d.attempts.find(a=>a.conversationId===c.sourceConversationId)??null;if(!g)return null;let h=structuredClone(g.effectiveRole??e.effectiveRole);c.runtime&&(h.engine=c.runtime.engine,h.model=c.runtime.model,h.effort=c.runtime.effort);let i={n:d.attempts.length+1,historical:!0,state:"running",effectiveRole:h,launchId:c.launchId,conversationId:c.conversationId,sessionId:c.sessionId,agentPath:c.agentPath,paneId:c.paneId,flowId:null,expectedReviewHeadSha:null,reviewHeadSha:null,startedAt:c.startedAt,completedAt:null,input:g.input,activatedBy:g.activatedBy?{...g.activatedBy}:null,output:null,verdict:null,error:null};return d.attempts.push(i),i}(a,d.stageId,d)||c)}return c}(c,b)||h,h=await aS(c,a,b)||h,h=function(a,b){let c=!1;if(a.srcConversationId){let d=b.pathForConversation(a.srcConversationId);d&&d!==a.srcPath&&(a.srcPath=d,c=!0)}for(let d of a.runs)for(let a of d.attempts){if(!a.conversationId)continue;let d=b.pathForConversation(a.conversationId);d&&d!==a.agentPath&&(a.agentPath=d,c=!0)}return c}(c,b)||h,h=await be(c,b,g)||h,h=function(a,b){if("needs_decision"!==a.state)return!1;let c=aB(a);if(!c||"run"!==c.kind)return!1;let d=aD(a,c.id);if(!d||"needs_decision"!==d.state||null!==d.completedAt||null!==d.output||null!==d.verdict||d.error!==ay)return!1;let e=b.now();return d.verdictRecovery={state:"pending",checks:0,maxChecks:3,startedAt:e,lastCheckedAt:e,nextCheckAt:e,reason:ay,messageTs:null},d.state="running",d.error=null,a.state="running",a.stateDetail=null,aN(a,c.id,"running"),!0}(c,b)||h,h=function(a,b){var c;let d;if("needs_decision"!==a.state)return!1;let e=aB(a);if(!e||"run"!==e.kind)return!1;let f=aD(a,e.id);if(!f?.launchId||f.paneId||f.verdict||f.completedAt||(c=a,!((d=f.error??c.stateDetail??"").startsWith("stage spawn")||bg(d))))return!1;let g=b.spawnReceipt(f.launchId);return g?.state==="completed"&&g.launchId===f.launchId&&g.conversationId===f.conversationId&&(f.sessionId=g.sessionId,f.agentPath=g.transcript,f.paneId=g.paneId,f.state="running",f.error=null,a.state="running",a.stateDetail=null,aN(a,e.id,"running"),!0)}(c,b)||h,h=function(a,b,c){if("needs_decision"!==a.state)return!1;let d=aB(a);if(d?.kind!=="review-loop")return!1;let e=aD(a,d.id),f=e?.error,g=e?.flowId?b.getFlow(e.flowId):null;if(!f||!bb.some(a=>f.startsWith(a))||!g||!ba.has(g.state))return!1;let h=function(a){if("needs_decision"!==a.state&&"done_comment"!==a.state&&"closed"!==a.state)return null;let b=a.rounds.findLast(a=>null!==a.verdict);if(!b?.findingsPath||"APPROVE"===b.verdict)return null;let c=(0,t.V_)(b);if(!c||c.verdict!==b.verdict)return null;let d=(0,J.wV)(c.content,b.reviewedAt),e=(d?.findings??[]).map(b=>(function(a,b){let c=b.file?.trim()??"",d=c;if(c&&i().isAbsolute(c)){let b=i().relative(a.cwd,c);d=!b||b.startsWith("..")||i().isAbsolute(b)?i().basename(c):b}let e=d?`${I(d,400)}${b.line?`:${b.line}`:""}`:b.line?`line ${b.line}`:"";return[b.severity,e,I(b.title,400)].filter(Boolean).join(" — ")})(a,b)),f=[...a.stateDetail?[I(a.stateDetail,2e3)]:[],...e].slice(0,50);return 0===e.length&&f.length<50&&f.push(`Review flow round ${b.n} returned ${c.verdict}; open the round artifact for details.`),{verdict:{status:"REQUEST_CHANGES"===c.verdict?"fail":"needs_decision",findings:f,confidence:1},output:`Review flow round ${b.n}: ${c.verdict}
6
6
 
7
- ${f.map(a=>`- ${a}`).join("\n")}`}}(g);return h?(aS(e,g,b.now()),aZ(a,d,e,h,b,c),!0):("paused"!==g.state||!!(0,s.F4)(g)&&!b.patchFlow(g.id,"resume").error&&!!(g=b.getFlow(g.id))&&"relaying"===g.state)&&f!==a8(g)&&(a.state="running",a.stateDetail=null,e.state="reviewing",e.error=null,aS(e,g,b.now()),aI(a,d.id,"reviewing"),!0)}(c,b,g)||h,h=await bb(c,b)||h,h=await bc(c,b)||h,as.has(c.state)||"paused"===c.state||"needs_decision"===c.state||(h=await a3(c,a,b,g,d)||h),h&&(f=!0,g())},{batchSize:4,timeBudgetMs:16}),{pipelines:c,changed:f}});return c=e.pipelines.some(a=>"running"===a.state&&a.cursor?.state==="pending"),e}catch(a){if(!(a instanceof aj.mZ))throw a;return console.error("[pipelines] skipping tick; registry unreadable",a),{pipelines:[],changed:!1}}finally{a4.__llvPipelineTick=!1,c&&(0,P.L1)()}}},2208:(a,b,c)=>{c.d(b,{OV:()=>i,RC:()=>g,cC:()=>f,fC:()=>e,g9:()=>j,je:()=>d});let d="gpt-5.6-sol",e="gpt-5.6-terra",f={claude:[{id:"opus",label:"Opus 5",shortLabel:"Opus 5",use:"review"},{id:"fable",label:"Fable",shortLabel:"Fable",use:"general"},{id:"sonnet",label:"Sonnet",shortLabel:"Sonnet",use:"implement"},{id:"haiku",label:"Haiku",shortLabel:"Haiku",use:"general"}],codex:[{id:d,label:"GPT-5.6-Sol",shortLabel:"5.6-Sol",use:"review"},{id:e,label:"GPT-5.6-Terra",shortLabel:"5.6-Terra",use:"implement"},{id:"gpt-5.6-luna",label:"GPT-5.6-Luna",shortLabel:"5.6-Luna",use:"general"}]};function g(a,b){let c=b.trim(),d=f[a].map(a=>a.id);return d.includes(c)?{model:c}:{error:`invalid ${a} model id ${JSON.stringify(c)}; valid ${a} model ids: ${d.join(", ")}`}}let h=["fable","opus","sonnet","haiku"];function i(a){if("string"!=typeof a)return null;let b=a.trim().toLowerCase();if(!b||b.length>128||/[\u0000-\u001f\u007f]/.test(b))return null;for(let a of h)if(b===a||RegExp(`(?:^|[-_.])${a}(?:[-_.]|$)`).test(b))return a;return null}function j(a){if("string"!=typeof a)return!1;let b=a.trim();return b.startsWith("gpt-")&&b.length<=128&&!/[\u0000-\u001f\u007f]/.test(b)}},2496:(a,b,c)=>{c.d(b,{HU:()=>d,fp:()=>n,p9:()=>s,wV:()=>t});let d=/^\s*(?:VERDICT:\s*)?(REQUEST_CHANGES|APPROVE|COMMENT)\b/m,e=/^\s*(\d+)[.)]\s+(.*)$/,f=/^\s*#{1,6}\s+finding\s+\d+\b.*$/i,g=/^\s*(?:[-*+]\s+)?(?:\*\*|__)?(severity|file|line|title|explanation)(?:\*\*|__)?\s*:\s*(?:\*\*|__)?\s*(.*)$/i,h=/^[-*+]\s+(.*)$/,i=/(?:\[(P[0-3])\]|\b(Critical|High|Medium|Low|Info|P[0-3])\b)/i,j=/((?:\.{1,2}\/|\/|~\/)?[\w@.+-][\w@.+\-/]*\.(?:tsx?|jsx?|mjs|cjs|mts|cts|py|go|rs|md|json|ya?ml|toml|css|scss|html|sql|sh|env|ftl|txt))(?::(\d+))?/i,k=/\[([^\]]+)\]\(([^)\s]+)\)/,l=/(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token)/i,m=/([\w.-]*(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token))\b(\s*[:=]\s*)(["']?)[^\s"',}]+/gi;function n(a){return l.test(a)?a.replace(m,(a,b,c,d)=>`${b}${c}${d}[redacted]`):a}function o(a){let b=n(a);return{raw:b.slice(0,24e3),truncated:b.length>24e3}}function p(a){let b=a.toUpperCase();if("P0"===b||"P1"===b||"P2"===b||"P3"===b)return b;let c=a.toLowerCase();return"critical"===c?"Critical":"high"===c?"High":"medium"===c?"Medium":"low"===c?"Low":"Info"}function q(a){let b=a.match(k);if(b){var c;let a,d=(a=(c=(b[2]??"").replace(/^file:\/\//,"")).match(/^(.*?):(\d+(?:-\d+)?)$/))?{target:a[1]??c,line:a[2]}:{target:c},e=d.line?Number(d.line.split("-",1)[0]):void 0;return{file:d.target||b[1],line:Number.isFinite(e)?e:void 0}}let d=a.match(j);if(!d)return{};let e=d[2]?Number(d[2]):void 0;return{file:d[1],line:Number.isFinite(e)?e:void 0}}function r(a){return a.trim().replace(/^`([^`]*)`$/,"$1")}function s(a){let b=a.split("\n"),c=b.filter(a=>f.test(a)).length;if(c>0)return c;let d=0;for(let a of b){let b=a.match(h);b&&i.test(b[1]??"")&&(d+=1)}return d}function t(a,b){let c=a.match(d)?.[1];if(!c)return null;let h=function(a){let b=[],c=null,d=null,e=()=>{if(c?.severity&&c.title&&c.explanation){let a=c.file?q(c.file):{},d=c.line?Number.parseInt(c.line,10):void 0;b.push({severity:p(c.severity),file:a.file??(c.file?r(c.file):void 0),line:Number.isFinite(d)?d:a.line,title:r(c.title).slice(0,200),body:o(c.explanation).raw})}c=null,d=null};for(let b of a.split("\n")){if(f.test(b)){e(),c={};continue}let a=b.match(g);if(a){let b=a[1].toLowerCase();"severity"===b&&c?.severity&&e(),(c??={})[b]=function(a){let b=a.trim(),c=b.match(/^\*\*([\s\S]*)\*\*$/);return c?c[1].trim():b.replace(/\*\*$/,"").trim()}(a[2]??""),d=b;continue}let h=b.trim();c&&"explanation"===d&&h&&(c.explanation=`${c.explanation??""}
7
+ ${f.map(a=>`- ${a}`).join("\n")}`}}(g);return h?(aX(e,g,b.now()),a2(a,d,e,h,b,c),!0):("paused"!==g.state||!!(0,s.F4)(g)&&!b.patchFlow(g.id,"resume").error&&!!(g=b.getFlow(g.id))&&"relaying"===g.state)&&f!==bd(g)&&(a.state="running",a.stateDetail=null,e.state="reviewing",e.error=null,aX(e,g,b.now()),aN(a,d.id,"reviewing"),!0)}(c,b,g)||h,h=await bj(c,b)||h,h=await bk(c,b)||h,ax.has(c.state)||"paused"===c.state||"needs_decision"===c.state||(h=await a8(c,a,b,g,d)||h),h&&(f=!0,g())},{batchSize:4,timeBudgetMs:16}),{pipelines:c,changed:f}}),f=aE(b.now());return c=e.pipelines.some(a=>"running"===a.state&&a.cursor?.state==="pending"&&!function(a,b){let c=a.cursor?.stageId;if(!c)return!1;let d=aD(a,c)?.controllerWait?.retryAfter;return void 0!==d&&aE(d)>b}(a,f)),e}catch(a){if(!(a instanceof ao.mZ))throw a;return console.error("[pipelines] skipping tick; registry unreadable",a),{pipelines:[],changed:!1}}finally{a9.__llvPipelineTick=!1,c&&(0,Q.L1)()}}},2208:(a,b,c)=>{c.d(b,{OV:()=>i,RC:()=>g,cC:()=>f,fC:()=>e,g9:()=>j,je:()=>d});let d="gpt-5.6-sol",e="gpt-5.6-terra",f={claude:[{id:"opus",label:"Opus 5",shortLabel:"Opus 5",use:"review"},{id:"fable",label:"Fable",shortLabel:"Fable",use:"general"},{id:"sonnet",label:"Sonnet",shortLabel:"Sonnet",use:"implement"},{id:"haiku",label:"Haiku",shortLabel:"Haiku",use:"general"}],codex:[{id:d,label:"GPT-5.6-Sol",shortLabel:"5.6-Sol",use:"review"},{id:e,label:"GPT-5.6-Terra",shortLabel:"5.6-Terra",use:"implement"},{id:"gpt-5.6-luna",label:"GPT-5.6-Luna",shortLabel:"5.6-Luna",use:"general"}]};function g(a,b){let c=b.trim(),d=f[a].map(a=>a.id);return d.includes(c)?{model:c}:{error:`invalid ${a} model id ${JSON.stringify(c)}; valid ${a} model ids: ${d.join(", ")}`}}let h=["fable","opus","sonnet","haiku"];function i(a){if("string"!=typeof a)return null;let b=a.trim().toLowerCase();if(!b||b.length>128||/[\u0000-\u001f\u007f]/.test(b))return null;for(let a of h)if(b===a||RegExp(`(?:^|[-_.])${a}(?:[-_.]|$)`).test(b))return a;return null}function j(a){if("string"!=typeof a)return!1;let b=a.trim();return b.startsWith("gpt-")&&b.length<=128&&!/[\u0000-\u001f\u007f]/.test(b)}},2496:(a,b,c)=>{c.d(b,{HU:()=>d,fp:()=>n,p9:()=>s,wV:()=>t});let d=/^\s*(?:VERDICT:\s*)?(REQUEST_CHANGES|APPROVE|COMMENT)\b/m,e=/^\s*(\d+)[.)]\s+(.*)$/,f=/^\s*#{1,6}\s+finding\s+\d+\b.*$/i,g=/^\s*(?:[-*+]\s+)?(?:\*\*|__)?(severity|file|line|title|explanation)(?:\*\*|__)?\s*:\s*(?:\*\*|__)?\s*(.*)$/i,h=/^[-*+]\s+(.*)$/,i=/(?:\[(P[0-3])\]|\b(Critical|High|Medium|Low|Info|P[0-3])\b)/i,j=/((?:\.{1,2}\/|\/|~\/)?[\w@.+-][\w@.+\-/]*\.(?:tsx?|jsx?|mjs|cjs|mts|cts|py|go|rs|md|json|ya?ml|toml|css|scss|html|sql|sh|env|ftl|txt))(?::(\d+))?/i,k=/\[([^\]]+)\]\(([^)\s]+)\)/,l=/(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token)/i,m=/([\w.-]*(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token))\b(\s*[:=]\s*)(["']?)[^\s"',}]+/gi;function n(a){return l.test(a)?a.replace(m,(a,b,c,d)=>`${b}${c}${d}[redacted]`):a}function o(a){let b=n(a);return{raw:b.slice(0,24e3),truncated:b.length>24e3}}function p(a){let b=a.toUpperCase();if("P0"===b||"P1"===b||"P2"===b||"P3"===b)return b;let c=a.toLowerCase();return"critical"===c?"Critical":"high"===c?"High":"medium"===c?"Medium":"low"===c?"Low":"Info"}function q(a){let b=a.match(k);if(b){var c;let a,d=(a=(c=(b[2]??"").replace(/^file:\/\//,"")).match(/^(.*?):(\d+(?:-\d+)?)$/))?{target:a[1]??c,line:a[2]}:{target:c},e=d.line?Number(d.line.split("-",1)[0]):void 0;return{file:d.target||b[1],line:Number.isFinite(e)?e:void 0}}let d=a.match(j);if(!d)return{};let e=d[2]?Number(d[2]):void 0;return{file:d[1],line:Number.isFinite(e)?e:void 0}}function r(a){return a.trim().replace(/^`([^`]*)`$/,"$1")}function s(a){let b=a.split("\n"),c=b.filter(a=>f.test(a)).length;if(c>0)return c;let d=0;for(let a of b){let b=a.match(h);b&&i.test(b[1]??"")&&(d+=1)}return d}function t(a,b){let c=a.match(d)?.[1];if(!c)return null;let h=function(a){let b=[],c=null,d=null,e=()=>{if(c?.severity&&c.title&&c.explanation){let a=c.file?q(c.file):{},d=c.line?Number.parseInt(c.line,10):void 0;b.push({severity:p(c.severity),file:a.file??(c.file?r(c.file):void 0),line:Number.isFinite(d)?d:a.line,title:r(c.title).slice(0,200),body:o(c.explanation).raw})}c=null,d=null};for(let b of a.split("\n")){if(f.test(b)){e(),c={};continue}let a=b.match(g);if(a){let b=a[1].toLowerCase();"severity"===b&&c?.severity&&e(),(c??={})[b]=function(a){let b=a.trim(),c=b.match(/^\*\*([\s\S]*)\*\*$/);return c?c[1].trim():b.replace(/\*\*$/,"").trim()}(a[2]??""),d=b;continue}let h=b.trim();c&&"explanation"===d&&h&&(c.explanation=`${c.explanation??""}
8
8
  ${h}`.trim())}return e(),b}(a),j=h.length>0,l=[],m=null,n=()=>{let a,b,c,d=m?.trim();d&&h.push((a=p(d.match(i)?.[1]??d.match(i)?.[2]??"Info"),b=q(d),c=function(a){let b=a,c=b.match(i);if(c&&void 0!==c.index){let a=b.slice(c.index+c[0].length).replace(/^[\s.:–—-]+/,"");a&&(b=a)}return b.replace(k,"$1").replace(/`([^`]*)`/g,"$1").replace(/\s+/g," ").trim().slice(0,200)}(d)||d.slice(0,200)||"Finding",{severity:a,file:b.file,line:b.line,title:c,body:o(d).raw})),m=null};for(let b of a.split("\n")){let a=b.trimEnd(),c=a.match(e);if(!j&&c){n(),m=c[2]??"";continue}let i=a.trim();if(null!==m){i?m=`${m}
9
- ${i}`:n();continue}!(!i||d.test(a)||f.test(a)||g.test(a)||/^(findings?|summary|open questions?|tests?|residual risk)\s*:?\s*$/i.test(i))&&0===h.length&&l.length<3&&i.length<=240&&l.push(i)}j||n();let s=h.filter(a=>i.test(a.body)).length;return c||/^findings?\s*:?$/im.test(a)||s>=2||s>=1&&/\b(review|request_changes|approve|comment)\b/i.test(a)?{kind:"review",ts:b,verdict:c,findings:h,summary:l,raw:o(a).raw}:null}},3302:(a,b,c)=>{c.d(b,{X6:()=>h,Zg:()=>g,a$:()=>j,kv:()=>i});var d=c(76760),e=c.n(d);function f(a){return!a||a.startsWith("..")||e().isAbsolute(a)?null:a.split(e().sep)}function g(a){if(!a.endsWith(".jsonl"))return null;let b=f(a);if(!b||b.length<4)return null;let c=b[0]??"",d=b[1]??"";if(!c||!d||"subagents"!==b[2])return null;let g=b.at(-1)??"";return g.startsWith("agent-")&&g.endsWith(".jsonl")?{parentName:e().join(c,`${d}.jsonl`),slug:c,parentSessionId:d,nestedSegments:b.slice(3,-1)}:null}function h(a){return!!a.endsWith(".jsonl")&&!!e().basename(a).startsWith("agent-")&&a.split(e().sep).includes("subagents")}function i(a){return a.includes(e().sep+"subagents"+e().sep)}function j(a){let b=f(a);if(!b||!b.includes("subagents"))return!1;let c=b.at(-1)??"";return"journal.jsonl"===c||c.endsWith(".meta.json")}},4351:(a,b,c)=>{c.d(b,{HI:()=>H,A5:()=>F,lV:()=>G,uX:()=>v,V9:()=>I,A9:()=>J,in:()=>y});var d=c(77598),e=c.n(d),f=c(31421),g=c(73024),h=c.n(g),i=c(48161),j=c.n(i),k=c(76760),l=c.n(k),m=c(10456),n=c(53133),o=c(3302);c(50920),c(53410);var p=c(17295);Object.freeze({repo:"https://github.com/chigwell/telegram-mcp",release:"v3.2.22",commit:"a61294362226bd93052f5a40b4a1b1269a99ce69",license:"Apache-2.0"}),Object.freeze(["wait_for_settled_message"]);var q=c(91836),r=c(55643),s=c(93812),t=c(2208),u=c(14648);function v(a){let b=j().homedir();if("1"===process.env.LLV_DOCKER_NSENTER_SHIMS&&("claude"===a||"codex"===a)){let b="/usr/local/bin/"+a;try{return h().accessSync(b,h().constants.X_OK),b}catch{}}for(let c of[l().join(b,".bun","bin",a),l().join(b,".npm-global","bin",a),l().join(b,".local","bin",a),l().join(b,"go","bin",a),"/usr/local/bin/"+a,"/usr/bin/"+a])try{return h().accessSync(c,h().constants.X_OK),c}catch{}return a}function w(a){let b=j().homedir(),c=[l().join(b,".bun","bin",a),l().join(b,".npm-global","bin",a),l().join(b,".local","bin",a),l().join(b,"go","bin",a)];for(let b of"1"===process.env.LLV_DOCKER_NSENTER_SHIMS?c:[...c,"/usr/local/bin/"+a,"/usr/bin/"+a])try{return h().accessSync(b,h().constants.X_OK),b}catch{}return a}function x(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function y(a,b){if(!/^[A-Za-z0-9_-]{43}$/.test(b))throw Error("Viewer spawn capability is invalid");return{...a,command:`( ${u.gY}=${x(b)}; export ${u.gY}; ${a.command} )`}}c(61899);let z=["ANTHROPIC_API_KEY","ANTHROPIC_AUTH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_BASE_URL","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","VERTEXAI_PROJECT","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","LLV_TOKEN"];function A(a,b){let c=b.includes("telegram")?function(a){if(!a.includes("telegram"))return"";let b=[process.execPath,function(a,...b){if(a)return a;let c=l().join(process.cwd(),...b);if(h().existsSync(c))return c;let d=l().join(process.cwd(),"..","..",...b);return h().existsSync(d)?d:c}(process.env.LLV_TELEGRAM_SESSION_READER,"bin","telegram-session-reader.mjs"),l().dirname((0,p.h2)())].map(x).join(" ");return`unset ${p.mq}; if ${p.mq}="$(${b} 2>/dev/null)" && [ "\${#${p.mq}}" -eq 43 ]; then export ${p.mq}; else unset ${p.mq}; fi; `}(b):`unset ${p.mq}; `;return`( ${c}${a} )`}function B(a,b=[]){let c=b.includes("telegram")?z:[...z,p.mq];return`env ${c.map(a=>`-u ${a}`).join(" ")} CLAUDE_CONFIG_DIR=${x(a)}`}function C(a,b){let c=b.includes("telegram")?"":` -u ${p.mq}`;return`env -u LLV_TOKEN${c} CODEX_HOME=${x(a)}`}function D(a,b,c){let d=new Set(c);return["features.plugins=false",...(function(a,b){let c={...process.env,CODEX_HOME:a};delete c.LLV_TOKEN;let d=(0,f.spawnSync)(process.env.LLV_CODEX_BINARY??v("codex"),["-c","features.plugins=false","mcp","list","--json"],{cwd:b,env:c,encoding:"utf8",timeout:1e4,maxBuffer:2097152});if(0===d.status)try{let a=JSON.parse(d.stdout);if(Array.isArray(a)&&a.every(a=>a&&"object"==typeof a&&"string"==typeof a.name))return a.map(a=>a.name)}catch{}throw Error("Codex MCP configuration could not be enumerated safely")})(a,b).map(a=>{let b=/^[A-Za-z0-9_-]+$/.test(a)?a:JSON.stringify(a);return`mcp_servers.${b}.enabled=${d.has(a)}`})]}function E(a,b){a.push("--settings",b.settingsPath,"--strict-mcp-config","--mcp-config",b.mcpConfigPath)}function F(a){return a.permissionMode?a.permissionMode:a.readOnly?"plan":"bypassPermissions"}function G(a,b,c={}){var d;let f=(d=c.mcpServers,(0,r.c1)(d));if("claude"===a){let a=e().randomUUID(),d=[v("claude")],g=F(c);c.readOnly?d.push("--permission-mode",g,"--disallowedTools","Edit,Write,NotebookEdit"):"bypassPermissions"===g?d.push("--dangerously-skip-permissions"):d.push("--permission-mode",g),d.push("--session-id",a),c.model&&d.push("--model",c.model),c.effort&&d.push("--effort",c.effort);let h=!!(c.claudeConfigDir&&(0,n.fg)(c.claudeConfigDir)),i=c.claudeConfigDir?c.deferClaudeSpawnPolicy?(0,u.GG)(c.claudeConfigDir,a):(0,u.UI)(c.claudeConfigDir,{allowSubagents:c.allowSubagents,cwd:b,mcpServers:f,baseSettingsPath:h?(0,n.ZK)():null,profileId:a}):null;i?E(d,i):d.push("--strict-mcp-config");let j=d.map(x).join(" ");return{command:A(h?`${B(c.claudeConfigDir,f)} ${j}`:j,f),cwd:b,windowName:"claude-new",engine:"claude",transcript:(0,q.eV)(b,a,c.claudeProjectsDir??l().join((0,n.Hy)(),"projects")),launchProfile:{cwd:b,model:c.model??null,effort:c.effort??null,fast:null,permissionMode:g,readOnly:c.readOnly??!1,allowSubagents:c.allowSubagents??!1,mcpServers:f,plugins:[],title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null}}}let g=[v("codex")],h=c.codexHome??(0,m.O$)().home;for(let a of((0,m.yX)(h)&&g.push("-c","cli_auth_credentials_store=file"),D(h,b,f)))g.push("-c",a);c.model&&g.push("-m",c.model),c.effort&&g.push("-c",`model_reasoning_effort=${c.effort}`),null!=c.fast&&g.push("-c",`service_tier=${c.fast?"priority":"standard"}`),c.readOnly&&g.push("--sandbox","read-only"),c.allowSubagents||g.push("--disable","multi_agent");let i=g.map(x).join(" ");return{command:A(`${C(h,f)} ${i}`,f),cwd:b,windowName:"codex-new",engine:"codex",launchProfile:{cwd:b,model:c.model??null,effort:c.effort??null,fast:c.fast??null,permissionMode:c.readOnly?"never":null,readOnly:c.readOnly??!1,allowSubagents:c.allowSubagents??!1,mcpServers:f,plugins:[],title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null}}}function H(a){if(!/^[0-9a-f-]{36}$/.test(a.candidateId))throw Error("candidate session id is invalid");let b=[v("claude"),"-p","--input-format","stream-json","--output-format","stream-json","--verbose","--replay-user-messages","--permission-prompt-tool","stdio"],c=F(a.profile);a.profile.readOnly||"plan"===c?b.push("--permission-mode","plan","--disallowedTools","Edit,Write,NotebookEdit"):"bypassPermissions"!==c?c.length<=64&&/^[a-zA-Z-]+$/.test(c)&&b.push("--permission-mode",c):b.push("--dangerously-skip-permissions");let d=(0,t.OV)(a.profile.model);d&&b.push("--model",d),a.profile.effort&&/^[a-z]+$/.test(a.profile.effort)&&b.push("--effort",a.profile.effort),b.push("--resume",a.sourcePath,"--fork-session","--session-id",a.candidateId);let e=a.profile.cwd||L(a.sourcePath);return E(b,(0,u.UI)(a.targetHome,{allowSubagents:a.profile.allowSubagents,baseSettingsPath:(0,n.fg)(a.targetHome)?(0,n.ZK)():null,profileId:a.candidateId,cwd:e,mcpServers:a.profile.mcpServers,mcpStatePath:(0,n.fg)(a.targetHome)?l().join(a.targetHome,".claude.json"):l().join(l().dirname(a.targetHome),".claude.json")})),{command:A(`${B(a.targetHome,a.profile.mcpServers)} ${b.map(x).join(" ")}`,a.profile.mcpServers),cwd:e,windowName:"claude-migration-successor",engine:"claude",transcript:(0,q.eV)(a.profile.cwd||L(a.sourcePath),a.candidateId,a.targetProjectsDir),printMode:!0,launchProfile:{...a.profile,model:d,permissionMode:c}}}function I(a,b,c={}){let d=l().basename(b),e=c.cwd&&c.cwd.trim()?c.cwd:null;if("claude-projects"===a&&d.endsWith(".jsonl")){if((0,o.kv)(b))return{ok:!1,reason:"a Claude subagent transcript has no session of its own to resume"};let a=d.slice(0,-6);if(!/^[0-9a-f-]{36}$/.test(a))return{ok:!1,reason:"the transcript filename carries no Claude session id"};let f=(0,n.qX)(b,c.accountId);return"unreadable"===f.kind?{ok:!1,reason:"the conversation transcript cannot be read from disk"}:"foreign"===f.kind?{ok:!1,reason:"the transcript is outside every Claude account transcript root the viewer knows"}:{ok:!0,engine:"claude",sessionId:a,home:f.home,cwd:e??L(b)}}if("codex-sessions"===a&&d.endsWith(".jsonl")){let a=d.match(/([0-9a-f-]{36})\.jsonl$/)?.[1];if(!a)return{ok:!1,reason:"the transcript filename carries no Codex session id"};let c=(0,m.yN)(b);return c?{ok:!0,engine:"codex",sessionId:a,home:c,cwd:e??L(b)}:{ok:!1,reason:"the transcript is outside every Codex account session root the viewer knows"}}return{ok:!1,reason:"this transcript belongs to no resumable agent session"}}function J(a,b,c={}){let d=I(a,b,c);return d.ok?function(a,b,c,d,e={}){var f;if(!/^[0-9a-f-]{36}$/.test(b))return null;let g=(f=e.mcpServers,(0,r.c1)(f));if("claude"===a){let a=(0,n.fg)(d),f=(0,u.UI)(d,{allowSubagents:e.allowSubagents,baseSettingsPath:a?(0,n.ZK)():null,profileId:`resume-${b}`,cwd:c,mcpServers:g,mcpStatePath:a?l().join(d,".claude.json"):l().join(l().dirname(d),".claude.json")}),h=[(e.hostTerminal?w:v)("claude")],i=F(e);e.readOnly||"plan"===i?h.push("--permission-mode","plan","--disallowedTools","Edit,Write,NotebookEdit"):"bypassPermissions"!==i&&/^[a-zA-Z-]+$/.test(i)?h.push("--permission-mode",i):h.push("--dangerously-skip-permissions"),E(h,f);let j=(0,t.OV)(e.model);j&&h.push("--model",j),e.effort&&h.push("--effort",e.effort),h.push("--resume",b);let k=h.map(x).join(" ");return{command:A(a?`${B(d,g)} ${k}`:k,g),cwd:c,windowName:"claude-resume",engine:"claude",launchProfile:{...K(c,j,e.effort??null),readOnly:e.readOnly??null,permissionMode:i,allowSubagents:e.allowSubagents??!1,mcpServers:g,plugins:(0,s.sJ)(e.plugins)}}}let h=`${(e.hostTerminal?w:v)("codex")}`;for(let a of((0,m.yX)(d)&&(h+=" -c cli_auth_credentials_store=file"),D(d,c,g)))h+=` -c ${x(a)}`;return e.model&&(h+=` -m ${x(e.model)}`),e.effort&&(h+=` -c ${x(`model_reasoning_effort=${e.effort}`)}`),null!=e.fast&&(h+=` -c ${x(`service_tier=${e.fast?"priority":"standard"}`)}`),e.readOnly&&(h+=" --sandbox read-only"),e.permissionMode&&["untrusted","on-request","never"].includes(e.permissionMode)&&(h+=` --ask-for-approval ${x(e.permissionMode)}`),e.allowSubagents||(h+=" --disable multi_agent"),h+=` resume ${b}`,{command:A(`${C(d,g)} ${h}`,g),cwd:c,windowName:"codex-resume",engine:"codex",launchProfile:{...K(c,e.model??null,e.effort??null),fast:e.fast??null,readOnly:e.readOnly??null,permissionMode:e.permissionMode??null,allowSubagents:e.allowSubagents??!1,mcpServers:g,plugins:(0,s.sJ)(e.plugins)}}}(d.engine,d.sessionId,d.cwd,d.home,c):null}function K(a,b,c){return{cwd:a,model:b,effort:c,fast:null,permissionMode:null,readOnly:null,allowSubagents:!1,mcpServers:["viewer"],plugins:[],title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null}}function L(a){return(0,q.tX)(a,{maxLines:30,requireDir:!0})??j().homedir()}},4406:(a,b,c)=>{c.d(b,{VB:()=>E,_v:()=>N,c0:()=>M,ww:()=>K}),c(77598);var d=c(73024),e=c.n(d),f=c(57726);c(53133),c(10456);var g=c(55883),h=c(31973),i=c(91836),j=c(6466),k=c(68574),l=c(30277),m=c(59376),n=c(7058),o=c(89831),p=c(52530),q=c(873),r=c(85923),s=c(58347),t=c(41730),u=c(56458),v=c(91701);let w=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]);function x(a,b,c){let d=b.generations.at(-1);return!!d&&c.generationId===d.id&&(!!(null!==d.host&&void 0!==d.host||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.key.sessionId===d.id&&a.artifactPath===d.path&&(null!==a.structuredHost&&void 0!==a.structuredHost)!=(null!==a.host)))||Object.values(a.receipts).some(a=>a.engine===b.engine&&a.conversationId===b.id&&w.has(a.state)))}function y(a){return null!=a.rateLimit}function z(a,b,c){let d=b?.generations.at(-1);return"stalled"===a.activity&&"jsonl_turn_stalled"===a.activityReason&&"running"!==a.proc&&null===a.pid&&d?.path===a.path&&null===d.host&&!c}function A(a){return new Set(Object.values(a.entries).filter(a=>a.artifactPath&&["starting","live","idle","handoff"].includes(a.status)&&(null!==a.host||null!==a.structuredHost)).map(a=>a.artifactPath))}function B(a,b,c){let d=a.readOnlySnapshot().entries[(0,h.pp)({engine:b,sessionId:c.id})],e=d?.structuredHost;return!!e&&d.artifactPath===c.path&&("live"===d.status||"idle"===d.status)&&null!==e.process&&null!==e.process.startIdentity&&l.B.processIdentity(e.process.pid)===e.process.startIdentity&&null===e.activeTurnRef}async function C(a,b){let c=Date.now(),d=b.readOnlySnapshot(),e=new Map,g=new Map,h=A(d);await (0,k.pV)(Object.values(d.conversations),a=>{for(let b of a.generations)e.has(b.path)||e.set(b.path,a),g.has(b.path)||g.set(b.path,b.launchProfile);let b=a.generations.at(-1);for(let c of a.continuityPaths)e.has(c)||e.set(c,a),b&&!g.has(c)&&g.set(c,b.launchProfile)}),await (0,k.pV)(Object.values(d.receipts),a=>{a.artifactPath&&!g.has(a.artifactPath)&&g.set(a.artifactPath,a.launchProfile)});let j=process.env.LLV_ROOT_CONVERSATION_ID,l=j?.startsWith("conversation_")?b.canonicalConversationId(j):j,m=[];return await (0,k.pV)(a,a=>{let b="claude"===a.engine||"codex"===a.engine?a.engine:null;if(!b)return;let d=e.get(a.path)??null,j=a.parent?e.get(a.parent)??null:null,k=f.lD.resolveTranscriptOwner(b,a.path),p=1e3*a.mtime,q=(0,n.pk)(a.path,a.size,p,"codex"===b),s=h.has(a.path),t=q.complete?q.recoveryReleased&&s?{state:"busy",source:"lifecycle",terminalAt:null}:q.turn:null,u=z(a,d,s);q.complete&&!1!==a.derivationComplete&&("pane_at_composer"===a.activityReason||y(a)||u)&&(0,n.Be)(a.path,a.size,p,"codex"===b);let v=function(a,b,c,d){if(!b)return c&&("busy"===c.turn.state||"unknown"===c.turn.state)?{state:c.turn.state,source:c.turn.source,terminalAt:c.turn.terminalAt}:{state:"unknown",source:"empty",terminalAt:null};let e=!1!==a.derivationComplete;return"busy"===b.state&&e&&("pane_at_composer"===a.activityReason||y(a)||z(a,c,d))||"unknown"===b.state&&e&&("idle"===a.activity||"recent"===a.activity)?{state:"idle",source:"empty",terminalAt:null}:b}(a,t,d,s),w=g.get(a.path)??d?.generations.find(b=>b.path===a.path)?.launchProfile,x={size:a.size,mtimeMs:p};m.push({engine:b,path:a.path,accountId:k?.accountId??null,launchProfile:(0,r.Ui)({cwd:w?.cwd||a.cwd||(0,i.tX)(a.path,{maxLines:40,identity:x})||"",model:w?.model??a.launchModel??a.model,effort:w?.effort??a.effort??null,fast:w?.fast??null,permissionMode:w?.permissionMode??null,readOnly:w?.readOnly??null,title:a.title||w?.title||null,project:a.project||w?.project||null,parentConversationId:j?.id??w?.parentConversationId??null,role:l&&d?.id===l?"root":w?.role??"worker",goal:a.goal??w?.goal??null,plan:a.plan??w?.plan??null}),turn:v,parentArtifactPath:a.parent,forkSourceThreadId:"codex"===b?void 0===a.nativeForkSourceThreadId?(0,o.XB)(a.path,a.size,p):a.nativeForkSourceThreadId:null,expectedTurnObservedAt:d?.turn.observedAt??null,startedAt:a.sessionStartedAt??(0,i.dH)(a.path,x),observedAt:!q.complete&&d?.turn.observedAt?d.turn.observedAt:new Date(Math.max(1e3*a.mtime,c)).toISOString()})}),m}async function D(a,b){let c=new Map,d=new Map;await (0,k.pV)(a,a=>{if("codex"!==a.engine||0===a.providerForkPaths.length)return;let b=a.generations.at(-1);if(!b)return;let e=a.projectOwnership?.project||b.launchProfile.project;if(!e)return;if(!d.has(e))try{d.set(e,(0,j.C9)(e))}catch(a){d.set(e,null),console.warn("[account-migration] adopted fork board placement skipped",{project:e,error:(0,t.Kb)(a)})}let f=d.get(e);if(!f)return;let g=new Set(f.prefs.hidden),h=f.pathAliases??{},i=a.providerForkPaths.filter(a=>a!==b.path&&!g.has(a)&&h[a]!==b.path).map(a=>({from:a,to:b.path}));0!==i.length&&c.set(e,[...c.get(e)??[],...i])}),await (0,k.pV)([...c],([a,c])=>{try{b(a,c,{targetPlacementAuthoritative:!0})}catch(b){console.warn("[account-migration] adopted fork board placement deferred",{project:a,paths:c.length,error:(0,t.Kb)(b)})}})}async function E(a=(0,g.tk)(),b,c={}){let d=b??await (0,m.CS)(),e=a.reconcileConversations(await C(d,a));return c.deferBoardRepair||await D(Object.values(e.conversations),c.remapBoardPaths??j.cw),e}function F(a,b){let c,d=a.generations.at(-1)?.path,f="unknown"===a.turn.state&&"empty"===a.turn.source&&!!d&&!e().existsSync(d),g=(c=a.migration?.sourceGenerationId,a.generations.find(a=>a.id===c)??a.generations.at(-1)),h=void 0!==g&&B(b,a.engine,g);return("terminal"===a.turn.state||"idle"===a.turn.state||!!f||!!h)&&!b.pendingDeliveries(a.id).some(a=>"delivery-uncertain"===a.state)}function G(a,b,c,d){var f;let g,h;try{g=e().statSync(b.path)}catch(a){return c&&"ENOENT"===a.code}let i=(0,n.pk)(b.path,g.size,g.mtimeMs,"codex"===a.engine);if(!i.complete)return!1;try{h=e().statSync(b.path)}catch{return!1}if(h.size!==g.size||h.mtimeMs!==g.mtimeMs)return!1;if(i.composerReleased||B(d,a.engine,b))return!0;if(i.recoveryReleased&&(f=b.path,A(d.readOnlySnapshot()).has(f)))return!1;if("terminal"===i.turn.state)return!0;let j=a.turn.observedAt?Date.parse(a.turn.observedAt):NaN;return"codex"===a.engine&&"idle"===a.turn.state&&null===b.host&&Number.isFinite(j)&&j>=h.mtimeMs&&!(0,p.SP)([b.path],!0).has(b.path)}async function H(a,b,c,d){let e=[];await (0,k.pV)(a,a=>{let b=function(a){if(a.migration?.phase!=="committed")return null;let b=a.generations.at(-1),c=a.generations.find(b=>b.id===a.migration?.sourceGenerationId)??a.generations.at(-2);if(!c||!b||c.id===b.id)return null;let d=b.launchProfile.project||c.launchProfile.project||"other";if(a.migration.boardProject===d&&a.migration.boardOperationId===a.migration.operationId)return null;let e=[...new Set([...a.continuityPaths,...a.migration.providerReceipt?.continuityPaths??[]])],f=[...new Set([...a.generations.slice(0,-1).map(a=>a.path),...e])].filter(a=>a!==b.path);return{conversationId:a.id,operationId:a.migration.operationId,project:d,previousProject:a.migration.boardPlacementProject??a.migration.boardProject??c.launchProfile.project,placementPaths:[...new Set([c.path,b.path,...e])],pairs:f.map(a=>({from:a,to:b.path})),provisionalManual:e.filter(a=>a!==b.path)}}(a);b&&e.push(b)});let f=[];if(await (0,k.pV)(e,a=>{a.previousProject&&a.previousProject!==a.project&&f.push({fromProject:a.previousProject,toProject:a.project,paths:a.placementPaths})}),f.length>0)try{d(f)}catch(a){console.warn("[account-migration] board project repair deferred",{projects:f.length,error:(0,t.Kb)(a)});return}b.markMigrationBoardPlacementProjects(e.map(a=>({id:a.conversationId,operationId:a.operationId,project:a.project})));let g=new Map;await (0,k.pV)(e,a=>{let b=g.get(a.project)??[];b.push(a),g.set(a.project,b)});let h=[];await (0,k.pV)([...g],([a,b])=>{try{let d=c(a,b.flatMap(a=>a.pairs),{provisionalManual:[...new Set(b.flatMap(a=>a.provisionalManual))]}).pathAliases??{};if(!b.every(a=>a.pairs.every(({from:a,to:b})=>d[a]===b)))throw Error("board continuity aliases did not converge");h.push(...b.map(b=>({id:b.conversationId,operationId:b.operationId,project:a})))}catch(c){console.warn("[account-migration] board continuity repair deferred",{project:a,conversations:b.length,error:(0,t.Kb)(c)})}}),b.markMigrationBoardProjects(h)}async function I(a,b,c,d){if(!b)return;let e=c.migration?.phase==="committed",f=c.generations.at(-1),g=f?.host!==null&&f?.host!==void 0&&(0,r.Qq)(f.host,b.host);if(e&&f?.id===b.nativeId&&f.path===b.path&&g)return void d.completeSuccessorCleanup(b.operationId);d.queueSuccessorCleanup(c.id,b);try{await a.cleanup?.(b),d.completeSuccessorCleanup(b.operationId)}catch(a){d.recordSuccessorCleanupFailure(b.operationId,a instanceof Error?a.message:String(a))}}function J(a,b){let c=a.migration,d=a.reconfigure;return c?.phase==="verifying"&&null!==c.providerReceipt&&(0,r.WB)(c.providerReceipt,b)&&d?.status==="applying"&&d.accountId===c.targetId}async function K(a,b=(0,g.tk)(),c=new s.wh,d={}){var e,f,h;let i,k=b.conversation(a);if(!k?.migration)throw Error("conversation has no migration");if(e=k,f=d.reconfigureOperationId,i=e.reconfigure,i?.status==="applying"&&i.accountId===e.migration?.targetId&&i.operationId!==f)return k;let l=k.migration;if("waiting-turn"===l.phase){if(!F(k,b))return k;l=(k=b.transitionConversationMigration(k.id,l.revision,["waiting-turn"],{phase:"requested"})).migration}if("committed"===l.phase)return d.deferBoardRepair||await H([k],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5),b.conversation(k.id)??k;if("rolled-back"===l.phase||"failed-recoverable"===l.phase)return k;let m="copy"in c?{virtualSource:!0,async create(a){let b=await c.copy({engine:a.engine,sourcePath:a.source.path,targetHome:a.targetAccountId,conversationId:a.conversationId});return{operationId:a.operationId,nativeId:b.nativeId,path:b.path,continuityPaths:[],historyHash:"legacy-copy-port",host:{kind:"tmux",identity:"legacy-copy-port",epoch:1,verifiedAt:new Date().toISOString()}}},async verify(){}}:c,n=l.providerReceipt;try{if(l.providerReceipt)n=l.providerReceipt;else{if(!F(k,b))return k;let a=l.phase,c=c=>{let d=c.migration??l;return d.phase!==a&&("preparing"===d.phase||"successor-starting"===d.phase)?b.transitionConversationMigration(c.id,d.revision,[d.phase],{phase:a}):c},d=k.generations.find(a=>a.id===l.sourceGenerationId)??k.generations.at(-1);if(!d)throw Error("conversation has no source generation");if(!G(k,d,!0===m.virtualSource,b))return k;if("requested"===l.phase&&(l=(k=b.transitionConversationMigration(k.id,l.revision,["requested"],{phase:"preparing"})).migration),"preparing"===l.phase&&(l=(k=b.transitionConversationMigration(k.id,l.revision,["preparing"],{phase:"successor-starting"})).migration),l=(k=b.conversation(k.id)??k).migration??l,!F(k,b))return c(k);if(!(d=k.generations.find(a=>a.id===l.sourceGenerationId)??k.generations.at(-1)))throw Error("conversation has no source generation");if(!G(k,d,!0===m.virtualSource,b))return c(k);let e=k.id,f={operationId:l.operationId,revision:l.revision};if((n=await m.create({engine:k.engine,operationId:f.operationId,conversationId:e,source:d,targetAccountId:l.targetId,recordContinuityPath(a){b.recordMigrationContinuityPath(e,a,f)}})).operationId!==f.operationId)throw Error("successor receipt operation does not match");n=(l=(k=b.persistMigrationProviderReceipt(e,f.revision,f.operationId,n)).migration).providerReceipt??n}let a=k.generations.find(a=>a.id===l.sourceGenerationId)??k.generations.at(-1);if(!a)throw Error("conversation has no source generation");if(!n||n.operationId!==l.operationId)throw Error("persisted successor receipt operation does not match");await m.verify(n,{engine:k.engine,targetAccountId:l.targetId,launchProfile:a.launchProfile});let c=k.id,e=n,f=l.revision,g=l.operationId,h=async()=>{if(d.ownsOperation&&!await d.ownsOperation())return!1;let a=b.conversation(c),h=a?.migration;return!!(a&&h?.phase==="verifying"&&h.revision===f&&h.operationId===g&&null!==h.providerReceipt&&(0,r.WB)(h.providerReceipt,e))},i=b.conversation(c);if(!i||!await h()||(await m.publishHost?.(e,{engine:k.engine,conversationId:c,targetAccountId:l.targetId,launchProfile:a.launchProfile,ownsOperation:h}),!(i=b.conversation(c))||!await h()))return i&&(J(i,e)||await I(m,e,i,b),d.deferBoardRepair||await H([i],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5)),b.conversation(c)??i??k;let o=b.commitSuccessor(c,{id:e.nativeId,path:e.path,accountId:l.targetId,launchProfile:a.launchProfile,historyHash:e.historyHash,host:e.host},f,g,e);return d.deferBoardRepair||await H([o],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5),b.conversation(o.id)??o}catch(i){let a=b.conversation(k.id);if(i instanceof s.IM||(0,q.gR)(i))return a??k;let c=a?.migration?.providerReceipt,e=null!==n&&null!=c&&!(0,r.WB)(c,n);if(a&&(!a.migration||a.migration.revision!==l.revision||a.migration.operationId!==l.operationId||"committed"===(h=a.migration.phase)||"rolled-back"===h||"failed-recoverable"===h||e))return await I(m,n,a,b),d.deferBoardRepair||await H([a],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5),b.conversation(a.id)??a;console.warn("[account-migration] recoverable successor provider failure",{conversationId:k.id,engine:k.engine,phase:l.phase,targetAccountId:l.targetId,error:(0,t.Kb)(i)});let f=i instanceof s.I1?{message:"Codex fork outcome is awaiting recovery",code:"codex-fork-outcome-unknown"}:(0,t.rI)(i),g=b.transitionConversationMigration(k.id,l.revision,["requested","preparing","successor-starting","verifying"],{phase:"failed-recoverable",error:f.message,errorCode:f.code});return await I(m,n,g,b),g}}async function L(a,b,c=(0,g.tk)()){let d=c.conversation(a),e=d?.generations.at(-1);e&&await (0,k.pV)(c.pendingDeliveries(a),async a=>{let d="delivery-uncertain"===a.state;if(d&&!b.reconcileUncertain||!d&&("assigned"!==a.state||a.generationId!==e.id))return;if("text"!==a.payloadKind&&"runtime-images"!==a.payloadKind)return void c.recordDeliveryOutcome(a.id,"failed","request-local delivery requires client retry");let f=d?a:c.beginDeliveryAttempt(a.id,e.id);if(!f)return;let g=f.clientMessageId??`migration:${f.id}`;try{let a={delivery:f,path:e.path,clientMessageId:g},h=d?await b.reconcileUncertain(a):await b.deliver(a);"held"===h?d||c.requeueUnactuatedDelivery(f.id):c.recordDeliveryOutcome(f.id,h,"failed"===h?"delivery failed and remains recoverable":null)}catch{c.recordDeliveryOutcome(f.id,"delivery-uncertain","delivery result is uncertain and remains recoverable")}})}async function M(a,b,c=(0,g.tk)(),d={}){let e=`${v.BD} its upgrade-era reservation has no durable owner evidence; send again to authorize a fresh delivery action`,f=c.readOnlySnapshot();await (0,k.pV)(Object.values(f.pendingSuccessorCleanups),async b=>{let d=c.conversation(b.conversationId);d&&await I(a,b.receipt,d,c)});let h=new Set;await (0,k.pV)(Object.values(f.heldDeliveries),a=>{"delivered"!==a.state&&("delivery-uncertain"!==a.state||b.reconcileUncertain)&&h.add(a.conversationId)}),await (0,k.pV)(Object.values(f.conversations),async g=>{let i=null!==g.migration||h.has(g.id)?c.conversation(g.id)??g:g;if(i.migration&&"committed"!==i.migration.phase&&"rolled-back"!==i.migration.phase&&b.reconcileUncertain&&c.pendingDeliveries(i.id).some(a=>"delivery-uncertain"===a.state)&&(await L(i.id,b,c),i=c.conversation(i.id)??i),!i.migration){let a=c.pendingDeliveries(i.id);for(let b of a)"held"!==b.state&&"assigned"!==b.state||x(f,i,b)||c.terminalizeHeldDelivery(b.id,e);a.some(a=>"assigned"===a.state&&x(f,i,a)||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await L(i.id,b,c);return}if("rolled-back"===i.migration.phase){for(let a of c.pendingDeliveries(i.id))("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)&&c.terminalizeRolledBackMigrationDelivery(a.id,i.migration.intentId,"delivery cancelled because its owning account migration was rolled back; send again to authorize a fresh delivery action");c.pendingDeliveries(i.id).some(a=>"assigned"===a.state||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await L(i.id,b,c);return}if("committed"===i.migration.phase){c.pendingDeliveries(i.id).some(a=>"assigned"===a.state||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await L(i.id,b,c);return}let j=i.migration,k=i.generations.find(a=>a.id===j.sourceGenerationId)??i.generations.at(-1);if(k?.accountId===null&&!j.providerReceipt)return void c.rollbackConversationMigration(i.id,j.revision);let l=await K(i.id,c,a,{...d,deferBoardRepair:!0});l.migration?.phase==="committed"&&c.pendingDeliveries(l.id).some(a=>"assigned"===a.state||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await L(l.id,b,c)}),await (0,k.Lh)();let i=c.readOnlySnapshot();await H(Object.values(i.conversations),c,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5);let l=new Map;await (0,k.pV)(Object.values(i.conversations),a=>{let b=a.migration?.intentId;if(!b)return;let c=l.get(b)??[];c.push(a),l.set(b,c)}),await (0,k.pV)(Object.values(i.migrationIntents),a=>{if("draining"!==a.state)return;let b=l.get(a.id)??[];if(!b.length||b.every(a=>["committed","rolled-back","failed-recoverable"].includes(a.migration?.phase??""))){if(c.setMigrationIntentState(a.id,"complete"),"conversation"===a.scope)return;let d=b.some(a=>a.migration?.phase==="failed-recoverable")?"failed-partial":"complete";c.recordAutoBalanceOutcome(a.engine,d,a.evidence,new Date(Date.now()+u.__).toISOString())}})}function N(a){return a.migration?["waiting-turn","requested","preparing","successor-starting","verifying"].includes(a.migration.phase)?"held":"failed-recoverable"===a.migration.phase?"recoverable":"deliver":"deliver"}},4863:(a,b,c)=>{c.d(b,{DL:()=>j,eh:()=>h,fM:()=>k});let d=new Set(["status","findings","confidence"]),e={APPROVE:"pass",REQUEST_CHANGES:"fail",COMMENT:"needs_decision","NO FINDINGS":"pass"},f=/^\s*(?:VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)|(NO FINDINGS))\s*$/i,g=/^REVIEW_READY(?::[^\r\n]*)?$/;function h(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>!d.has(a))||"pass"!==a.status&&"fail"!==a.status&&"needs_decision"!==a.status)return null;let b={status:a.status};if(void 0!==a.findings){if(!Array.isArray(a.findings)||a.findings.length>50)return null;let c=[];for(let b of a.findings){if("string"!=typeof b)return null;let a=b.trim();if(!a||a.length>2e3)return null;c.push(a)}b.findings=c}if(void 0!==a.confidence){if("number"!=typeof a.confidence||!Number.isFinite(a.confidence)||a.confidence<0||a.confidence>1)return null;b.confidence=a.confidence}return b}function i(a){var b;let c,d=[...a.matchAll(/```(?:json)?\s*([\s\S]*?)```/gi)].at(-1);if(!d||void 0===d.index)return{failureReason:"canonical completed assistant turn is missing a fenced JSON verdict"};let e=a.slice(d.index+d[0].length).trim();if(e&&!g.test(e))return{failureReason:"canonical completed assistant turn has unsupported text after the final fenced JSON verdict"};try{c=JSON.parse(d[1]??"")}catch{return{failureReason:"canonical completed assistant turn has malformed JSON in the final fenced verdict"}}let f=!(b=c)||"object"!=typeof b||Array.isArray(b)?null:h({status:b.status,...Object.hasOwn(b,"findings")?{findings:b.findings}:{},...Object.hasOwn(b,"confidence")?{confidence:b.confidence}:{}});return f?{index:d.index,verdict:f}:{failureReason:"canonical completed assistant turn is missing a valid status, findings, or confidence field"}}function j(a){let b=i(a);if("failureReason"in b)return b.failureReason;let c=k(a);return c&&"failureReason"in c?c.failureReason:"canonical completed assistant turn did not yield a valid final JSON verdict"}function k(a){let b=i(a);if("failureReason"in b)return null;let c=b.verdict,d=a.slice(0,b.index).trim(),g=d.slice(0,32e3);if("pass"===c.status&&c.findings?.length)return{failureReason:'contradictory stage verdict: status "pass" cannot include findings',output:g};for(let a of function(a){let b=[],c=null;for(let d of a.split(/\r?\n/)){let a=/^\s*(`{3,}|~{3,})(.*)$/.exec(d);if(a){let b=a[1],d=b[0];c?c.marker===d&&b.length>=c.length&&!a[2].trim()&&(c=null):c={marker:d,length:b.length};continue}if(c||/^\s*>/.test(d))continue;let e=f.exec(d);e&&b.push((e[1]??e[2]).toUpperCase())}return b}(d))if(e[a]!==c.status)return{failureReason:`contradictory stage verdict: prose marker "${a}" disagrees with JSON status "${c.status}"`,output:g};return{verdict:c,output:g}}},6466:(a,b,c)=>{c.d(b,{C9:()=>Q,aM:()=>U,cw:()=>S,L5:()=>T});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(30277),l=c(65465);let m="viewMode",n="taskPanelOpen",o="path:",p=a=>`${o}${a}`,q=a=>`favorite:${a}`,r=a=>`fold:${a}`,s=a=>`tray:${a}`;function t(a,b){let c=new Set,d=a;for(;void 0!==b[d]&&!c.has(d);)c.add(d),d=b[d];return d}function u(a,b){return a.startsWith(o)?p(t(a.slice(o.length),b)):a}let v={absent:0,manual:1,pinned:2,expanded:3,hidden:4};function w(a,b){let c=new Map,d=(a,d)=>{let e=t(a,b),f=c.get(e);(void 0===f||(v[d]??0)>(v[f]??0))&&c.set(e,d)};for(let b of a.prefs.hidden)d(b,"hidden");for(let b of a.prefs.expanded)d(b,"expanded");for(let b of a.prefs.manual)d(b,(a.explicitManual??[]).includes(b)?"pinned":"manual");return c}function x(a,b){let c=new Set(a??[]),d=new Set(b??[]);return[...new Set([...c,...d])].filter(a=>c.has(a)!==d.has(a))}function y(a){return[...new Set(a)]}function z(a){return a.pathAliases??{}}function A(a,b){let c=new Set,d=a;for(;void 0!==b[d];){if(c.has(d))throw Error("board path alias cycle");c.add(d),d=b[d]}return d}function B(a,b=z(a)){let c=function(a){let b={};for(let c of Object.keys(a)){let d=A(c,a);c!==d&&(b[c]=d)}return b}(b),d=y(a.prefs.hidden.map(a=>A(a,c))),e=new Set(d),f=a=>y(a.map(a=>A(a,c)).filter(a=>!e.has(a))),g=f(a.prefs.manual),h=new Set(g);return{...a,pathAliases:c,explicitManual:f(a.explicitManual??[]).filter(a=>h.has(a)),prefs:{...a.prefs,manual:g,hidden:d,expanded:f(a.prefs.expanded),favorites:y(a.prefs.favorites??[]),foldedEngineChildIds:y(a.prefs.foldedEngineChildIds??[]),expandedEngineTrayParentIds:y(a.prefs.expandedEngineTrayParentIds??[])}}}function C(a,b){var c;let d,e,f,g=B(a);for(let a of b){if("remap-paths"===a.kind){g=function(a,b,c=!1){let d=z(a),e=b.filter(({from:a,to:b})=>A(a,d)!==A(b,d));if(0===e.length)return B(a);let f=new Set(b.map(({from:a})=>A(a,d))),g=new Set(e.map(({to:a})=>A(a,d))),h=a=>{if(c)return!0;let b=A(a,d);return!g.has(b)||f.has(b)},i=a.prefs.manual.filter(h),j=(a.explicitManual??[]).filter(h),k={...d};for(let{from:a,to:b}of e)k[a]=b;return B({...a,explicitManual:j,prefs:{...a.prefs,manual:i}},k)}(g,a.pairs,a.targetPlacementAuthoritative);continue}if("reconcile-roots"===a.kind){g=function(a,b,c){let d=z(a),e=new Set(c.map(a=>A(a,d))),f=a.prefs.manual.filter(a=>!e.has(a)),g=(a.explicitManual??[]).filter(a=>!e.has(a)),h=new Set([...f,...a.prefs.hidden,...Object.values(d).map(a=>A(a,d))]);for(let a of b.map(a=>A(a,d)))h.has(a)||(f.push(a),h.add(a));return B({...a,explicitManual:g,prefs:{...a.prefs,manual:f}})}(g,a.roots,a.removeManual);continue}if("restore"===a.kind){g=function(a,b,c){let d={...a.prefs,hidden:a.prefs.hidden.filter(a=>a!==b)},e=(a.explicitManual??[]).filter(a=>a!==b);if("auto"===c)return B({...a,explicitManual:e,prefs:d});let f={...d,manual:d.manual.filter(a=>a!==b),expanded:d.expanded.filter(a=>a!==b)};return B({...a,explicitManual:"manual"===c?[...e,b]:e,prefs:"manual"===c?{...f,manual:[...f.manual,b]}:{...f,expanded:[...f.expanded,b]}})}(g,A(a.path,z(g)),a.placement);continue}if("set-favorite"===a.kind){let b=a.favorite?y([...g.prefs.favorites,a.id]):g.prefs.favorites.filter(b=>b!==a.id);g=B({...g,prefs:{...g.prefs,favorites:b}});continue}if("set-engine-child-fold"===a.kind){let b=g.prefs.foldedEngineChildIds??[],c=a.folded?y([...b,a.id]):b.filter(b=>b!==a.id),d=A(a.path,z(g));g=B({...g,explicitManual:a.folded?(g.explicitManual??[]).filter(a=>a!==d):g.explicitManual,prefs:{...g.prefs,foldedEngineChildIds:c,manual:a.folded?g.prefs.manual.filter(a=>a!==d):g.prefs.manual,expanded:a.folded?g.prefs.expanded.filter(a=>a!==d):g.prefs.expanded}});continue}if("set-engine-tray-expanded"===a.kind){let b=g.prefs.expandedEngineTrayParentIds??[],c=a.expanded?y([...b,a.parentId]):b.filter(b=>b!==a.parentId);g=B({...g,prefs:{...g.prefs,expandedEngineTrayParentIds:c}});continue}if("set-presentation"===a.kind){g=B({...g,prefs:{...g.prefs,...void 0===a.viewMode?{}:{viewMode:a.viewMode},...void 0===a.taskPanelOpen?{}:{taskPanelOpen:a.taskPanelOpen}}});continue}let b=A(a.path,z(g));g=B({...g,explicitManual:(g.explicitManual??[]).filter(a=>a!==b),prefs:{...g.prefs,manual:g.prefs.manual.filter(a=>a!==b),expanded:g.prefs.expanded.filter(a=>a!==b),hidden:y([...g.prefs.hidden,b])}})}return d=z(c=g),e=new Set(c.prefs.hidden.map(a=>A(a,d))),f=a.prefs.hidden.filter(a=>e.has(A(a,d))),{...c,prefs:{...c.prefs,hidden:y([...f,...c.prefs.hidden])}}}let D=(0,j.BQ)("board.json"),E={manual:[],hidden:[],expanded:[],favorites:[],foldedEngineChildIds:[],expandedEngineTrayParentIds:[],viewMode:null,taskPanelOpen:!1};class F extends Error{constructor(a="board state unavailable"){super(a)}}function G(a){return Array.isArray(a)&&a.every(a=>"string"==typeof a)}function H(a){var b,c;if(!a||"object"!=typeof a||Array.isArray(a))return!1;let d=a.prefs;return 1===a.schemaVersion&&Number.isInteger(a.revision)&&a.revision>=0&&"string"==typeof a.updatedAt&&!!d&&G(d.manual)&&G(d.hidden)&&G(d.expanded)&&(void 0===d.favorites||G(d.favorites))&&(void 0===d.foldedEngineChildIds||G(d.foldedEngineChildIds))&&(void 0===d.expandedEngineTrayParentIds||G(d.expandedEngineTrayParentIds))&&(void 0===a.explicitManual||G(a.explicitManual))&&(void 0===a.pathAliases||!(!(b=a.pathAliases)||"object"!=typeof b||Array.isArray(b))&&Object.values(b).every(a=>"string"==typeof a))&&(void 0===a.keyRevisions||!(!(c=a.keyRevisions)||"object"!=typeof c||Array.isArray(c))&&Object.values(c).every(a=>Number.isInteger(a)&&a>=0))&&(void 0===a.keyRevisionFloor||Number.isInteger(a.keyRevisionFloor)&&a.keyRevisionFloor>=0)&&(null===d.viewMode||"scheme"===d.viewMode||"list"===d.viewMode)&&"boolean"==typeof d.taskPanelOpen}function I(){return{schemaVersion:1,revision:0,updatedAt:new Date(0).toISOString(),pathAliases:{},explicitManual:[],keyRevisions:{},keyRevisionFloor:0,prefs:{...E,manual:[],hidden:[],expanded:[]}}}function J(a,b,c,d=[]){return{...b,schemaVersion:1,revision:c,updatedAt:new Date().toISOString(),pathAliases:b.pathAliases??{},...function(a,b,c,d=[]){let e=b.pathAliases??{},f={};for(let b of[a,...d])for(let[a,c]of Object.entries(b.keyRevisions??{})){let b=u(a,e);f[b]=Math.max(f[b]??0,c)}for(let d of function(a,b){let c=new Set,d=b.pathAliases??{},e=w(a,d),f=w(b,d);for(let a of new Set([...e.keys(),...f.keys()]))(e.get(a)??"absent")!==(f.get(a)??"absent")&&c.add(p(a));for(let d of x(a.prefs.favorites,b.prefs.favorites))c.add(q(d));for(let d of x(a.prefs.foldedEngineChildIds,b.prefs.foldedEngineChildIds))c.add(r(d));for(let d of x(a.prefs.expandedEngineTrayParentIds,b.prefs.expandedEngineTrayParentIds))c.add(s(d));return a.prefs.viewMode!==b.prefs.viewMode&&c.add(m),a.prefs.taskPanelOpen!==b.prefs.taskPanelOpen&&c.add(n),c}(a,b))f[d]=c;let g=function(a){let b=a.pathAliases??{},c=new Set([m,n]);for(let d of w(a,b).keys())c.add(p(d));for(let b of a.prefs.favorites??[])c.add(q(b));for(let b of a.prefs.foldedEngineChildIds??[])c.add(r(b));for(let b of a.prefs.expandedEngineTrayParentIds??[])c.add(s(b));return c}(b),h={},i=[];for(let[a,b]of Object.entries(f))g.has(a)?h[a]=b:i.push([a,b]);i.sort((a,b)=>b[1]-a[1]||a[0].localeCompare(b[0]));let j=Math.max(a.keyRevisionFloor??0,...d.map(a=>a.keyRevisionFloor??0));for(let[a,b]of i.slice(0,512))h[a]=b;for(let[,a]of i.slice(512))j=Math.max(j,a);for(let[a,b]of Object.entries(h))!g.has(a)&&b<=j&&delete h[a];return{keyRevisions:h,keyRevisionFloor:j}}(a,b,c,d)}}function K(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if(!b||"object"!=typeof b.projects||null===b.projects||Array.isArray(b.projects))throw new F("invalid board state");if(!Object.values(b.projects).every(H))throw new F("invalid board project state");return{projects:Object.fromEntries(Object.entries(b.projects).map(([a,b])=>[a,{...b,pathAliases:b.pathAliases??{},explicitManual:b.explicitManual??b.prefs.manual,keyRevisions:function(a,b){let c={};for(let[d,e]of Object.entries(a)){let a=u(d,b);c[a]=Math.max(c[a]??0,e)}return c}(b.keyRevisions??{},b.pathAliases??{}),keyRevisionFloor:b.keyRevisionFloor??0,prefs:{...b.prefs,favorites:b.prefs.favorites??[],foldedEngineChildIds:b.prefs.foldedEngineChildIds??[],expandedEngineTrayParentIds:b.prefs.expandedEngineTrayParentIds??[]}}]))}}catch(a){if("ENOENT"===a.code)return{projects:{}};if(a instanceof F)throw a;throw new F}}function L(a,b){g().mkdirSync(i().dirname(b),{recursive:!0});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),d=null;try{d=g().openSync(c,"wx",384),g().writeFileSync(d,JSON.stringify(a,null,2)+"\n","utf8"),g().fsyncSync(d),g().closeSync(d),d=null,g().renameSync(c,b);let e=g().openSync(i().dirname(b),"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==d&&g().closeSync(d),g().rmSync(c,{force:!0})}}function M(a){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,a)}function N(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){let c,d="string"==typeof b.startIdentity?b.startIdentity:null;return!k.B.pidAlive(b.pid)||(null!==d?(c=k.B.processIdentity(b.pid),null!==c&&c!==d):Date.now()-g().statSync(a).mtimeMs>3e4)}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function O(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function P(a,b){let c=`${a}.write-lock`,d=`${a}.write-locks`;g().mkdirSync(d,{recursive:!0,mode:448});let f={pid:process.pid,startIdentity:k.B.processIdentity(process.pid),token:e().randomUUID()},h=i().join(d,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`);g().writeFileSync(h,JSON.stringify(f),{encoding:"utf8",flag:"wx",mode:384});try{for(let a=0;a<1e3;a+=1){let a,e=[];for(let a of g().readdirSync(d).filter(a=>a.endsWith(".json")).sort()){let b=i().join(d,a);if(N(b)){g().rmSync(b,{force:!0});continue}g().existsSync(b)&&e.push(b)}if(e[0]!==h){M(5);continue}try{a=g().openSync(c,"wx",384)}catch(a){if("EEXIST"!==a.code)throw a;N(c)&&g().rmSync(c,{force:!0}),M(5);continue}try{return g().writeFileSync(a,JSON.stringify(f),"utf8"),g().fsyncSync(a),b()}finally{g().closeSync(a),O(c,f.token)}}throw new F("board state is busy")}finally{O(h,f.token)}}function Q(a,b=D){return K(b).projects[(0,l.G$)(a)]??I()}function R(a,b){return JSON.stringify({prefs:a.prefs,pathAliases:a.pathAliases??{},explicitManual:a.explicitManual??[]})===JSON.stringify({prefs:b.prefs,pathAliases:b.pathAliases??{},explicitManual:b.explicitManual??[]})}function S(a,b,c={}){var d,e;let f=c.filePath??null??D;return d=(0,l.G$)(a),e=a=>{if(0===b.length||b.every(({from:b,to:c})=>a.pathAliases?.[b]===c))return a;let d=c.provisionalManual?.filter(b=>a.pathAliases?.[b]===void 0&&a.prefs.manual.includes(b))??[],e=[];return d.length&&e.push({kind:"reconcile-roots",roots:[],removeManual:d}),e.push({kind:"remap-paths",pairs:b,targetPlacementAuthoritative:c.targetPlacementAuthoritative}),C(a,e)},P(f,()=>{let a=K(f),b=a.projects[d]??I(),c=e(b);if(R(b,c))return b;let g=J(b,c,b.revision+1);return a.projects[d]=g,L(a,f),g})}function T(a,b=D){0!==a.length&&P(b,()=>{let c=K(b),d=!1;for(let b of a){if(b.fromProject===b.toProject)continue;let a=c.projects[b.fromProject];if(!a)continue;let e=C(a,[]),f=C(c.projects[b.toProject]??I(),[]);for(let a of[...new Set(b.paths)]){let b=Object.entries(e.pathAliases??{}).filter(([,b])=>b===a);if(b.length>0&&(f=C({...f,pathAliases:{...f.pathAliases??{},...Object.fromEntries(b)}},[])),!(e.prefs.hidden.includes(a)||e.prefs.expanded.includes(a)||e.prefs.manual.includes(a))&&0===b.length)continue;let c=e.prefs.hidden.includes(a)?"hidden":e.prefs.expanded.includes(a)?"expanded":e.prefs.manual.includes(a)?"manual":"auto",d=f.prefs.hidden.includes(a)?"hidden":f.prefs.expanded.includes(a)?"expanded":f.prefs.manual.includes(a)?"manual":"auto",g="hidden"===c||"hidden"===d?"hidden":"auto"!==d?d:c,h=(e.explicitManual??[]).includes(a)||(f.explicitManual??[]).includes(a);e={...e,explicitManual:(e.explicitManual??[]).filter(b=>b!==a),pathAliases:Object.fromEntries(Object.entries(e.pathAliases??{}).filter(([,b])=>b!==a)),prefs:{...e.prefs,manual:e.prefs.manual.filter(b=>b!==a),hidden:e.prefs.hidden.filter(b=>b!==a),expanded:e.prefs.expanded.filter(b=>b!==a)}};let i={...f.prefs,manual:f.prefs.manual.filter(b=>b!==a),hidden:f.prefs.hidden.filter(b=>b!==a),expanded:f.prefs.expanded.filter(b=>b!==a)};f={...f,explicitManual:"manual"===g&&h?[...(f.explicitManual??[]).filter(b=>b!==a),a]:(f.explicitManual??[]).filter(b=>b!==a),prefs:"hidden"===g?{...i,hidden:[...i.hidden,a]}:"expanded"===g?{...i,expanded:[...i.expanded,a]}:"manual"===g?{...i,manual:[...i.manual,a]}:i}}R(a,e)||(c.projects[b.fromProject]=J(a,e,a.revision+1),d=!0);let g=c.projects[b.toProject]??I();R(g,f)||(c.projects[b.toProject]=J(g,f,g.revision+1),d=!0)}d&&L(c,b)})}function U(a,b=(0,j.BQ)("board.json")){return 0===a.size||P(b,()=>{let c=K(b),d=!1,e=!0,f=new Map;for(let[b,c]of a)b!==c&&f.set(c,[...f.get(c)??[],b]);for(let[a,b]of f){let f=b.flatMap(a=>c.projects[a]?[c.projects[a]]:[]);if(0===f.length)continue;let g=c.projects[a];if(!g&&1===f.length){for(let d of(c.projects[a]=f[0],b))delete c.projects[d];d=!0;continue}try{let e=g?[g,...f]:f,h=function(a){let b=a.map((a,b)=>({state:a,index:b,timestamp:Date.parse(a.updatedAt)})).sort((a,b)=>(Number.isFinite(a.timestamp)?a.timestamp:0)-(Number.isFinite(b.timestamp)?b.timestamp:0)||a.index-b.index).map(({state:a})=>a),c=b.reduce((a,b)=>({...a,...b.pathAliases??{}}),{}),d=new Map,e=null,f=!1,g=c;for(let a of b){let b=C({...a,pathAliases:c},[]);for(let a of(g=b.pathAliases??{},["manual","hidden","expanded"]))for(let c of b.prefs[a])d.delete(c),d.set(c,a);e=b.prefs.viewMode,f=b.prefs.taskPanelOpen}let h={manual:[],hidden:[],expanded:[],favorites:[...new Set(b.flatMap(a=>a.prefs.favorites??[]))],foldedEngineChildIds:[...new Set(b.flatMap(a=>a.prefs.foldedEngineChildIds??[]))],expandedEngineTrayParentIds:[...new Set(b.flatMap(a=>a.prefs.expandedEngineTrayParentIds??[]))],viewMode:e,taskPanelOpen:f};for(let[a,b]of d)h[b].push(a);let i=new Set(h.manual),j=[...new Set(b.flatMap(a=>a.explicitManual??[]))].map(a=>g[a]??a).filter(a=>i.has(a));return{...b.at(-1),pathAliases:g,explicitManual:j,prefs:h}}(e),i=J(g??I(),h,Math.max(...e.map(a=>a.revision))+1,f);for(let d of(c.projects[a]=g&&R(g,i)&&JSON.stringify({keys:g.keyRevisions??{},floor:g.keyRevisionFloor??0})===JSON.stringify({keys:i.keyRevisions??{},floor:i.keyRevisionFloor??0})?g:i,b))delete c.projects[d];d=!0}catch{e=!1;continue}}return d&&L(c,b),e})}},6949:(a,b,c)=>{c.d(b,{o:()=>ae});var d=c(31421),e=c(77598),f=c.n(e),g=c(61899),h=c(30277),i=c(37788),j=c(14252),k=c(93812),l=c(59988),m=c(57564),n=c(88417);let o=/^data:([a-z0-9.+-]+\/[a-z0-9.+-]+);base64,([\s\S]*)$/i,p=new Set(["image_url","imageUrl","data","url","source"]);class q extends Error{constructor(a){super(`Codex replay frame exceeded its bounded ${a} budget`)}}let r=/^data:[a-z0-9.+-]+\/[a-z0-9.+-]+;base64,/i;class s{constructor(a){this.budgets=a,this.parts=[],this.outputUnits=0,this.rawUnits=0,this.inString=!1,this.stringParts=[],this.stringUnits=0,this.stringOmitted=0,this.stringHead="",this.stringCapSniffed=!1,this.escapeCarry="",this.stringCap=a.maxStringUnits}feed(a){if(this.rawUnits+=a.length,this.rawUnits>this.budgets.maxRawUnits)throw new q("raw");this.escapeCarry&&(a=this.escapeCarry+a,this.escapeCarry="");let b=0;for(;b<a.length;){if(!this.inString){let c=a.indexOf('"',b);if(-1===c)return void this.append(a.slice(b));this.append(a.slice(b,c+1)),this.inString=!0,b=c+1;continue}let c=a.indexOf('"',b),d=a.indexOf("\\",b),e=-1===c?d:-1===d?c:Math.min(c,d);if(-1===e)return void this.appendToString(a.slice(b));if(e>b&&this.appendToString(a.slice(b,e)),e===c){this.endString(),b=e+1;continue}let f=117===a.charCodeAt(e+1)?6:2,g=a.slice(e,e+f);if(g.length<f){this.escapeCarry=g;return}this.appendToString(g,!0),b=e+f}}finish(){return this.escapeCarry&&(this.appendToString(this.escapeCarry),this.escapeCarry=""),this.inString&&this.endString(!1),this.parts.join("")}append(a){if(a){if(this.outputUnits+=a.length,this.outputUnits>this.budgets.maxOutputUnits)throw new q("output");this.parts.push(a)}}appendToString(a,b=!1){this.stringHead.length<64&&(this.stringHead+=a.slice(0,64-this.stringHead.length)),!this.stringCapSniffed&&this.stringUnits+a.length>this.stringCap&&(this.stringCapSniffed=!0,r.test(this.stringHead)&&(this.stringCap=this.budgets.maxImageStringUnits));let c=this.stringCap-this.stringUnits;if(c>=a.length){this.stringParts.push(a),this.stringUnits+=a.length;return}if(b||c<=0){this.stringOmitted+=a.length;return}this.stringParts.push(a.slice(0,c)),this.stringUnits+=c,this.stringOmitted+=a.length-c}endString(a=!0){if(this.stringOmitted>0){let a=this.stringParts[this.stringParts.length-1],b=a?a.charCodeAt(a.length-1):0;b>=55296&&b<=56319&&(this.stringParts[this.stringParts.length-1]=a.slice(0,-1),this.stringOmitted+=1),this.stringParts.push(`…[truncated ${this.stringOmitted} chars]`)}this.append(this.stringParts.join("")+(a?'"':"")),this.inString=!1,this.stringParts=[],this.stringUnits=0,this.stringOmitted=0,this.stringHead="",this.stringCap=this.budgets.maxStringUnits,this.stringCapSniffed=!1}}var t=c(36855),u=c(49172),v=c(8663);let w=/[.!?…](?:["')\]}»”’]+)?\s+/gu;function x(a,b,c){let d=a.slice(0,b+1).search(/\s+\S*$/u);if(d>=c)return d+a.slice(d).match(/^\s+/u)[0].length;let e=a.slice(b).search(/\s/u);return e>=0?b+e+1:a.length}var y=c(33353),z=c(42580),A=c(73024),B=c.n(A),C=c(76760),D=c.n(C),E=c(50920);let F=`Your name is Alik. You are the voice coordinator: you speak aloud and you run the work of other agents.
9
+ ${i}`:n();continue}!(!i||d.test(a)||f.test(a)||g.test(a)||/^(findings?|summary|open questions?|tests?|residual risk)\s*:?\s*$/i.test(i))&&0===h.length&&l.length<3&&i.length<=240&&l.push(i)}j||n();let s=h.filter(a=>i.test(a.body)).length;return c||/^findings?\s*:?$/im.test(a)||s>=2||s>=1&&/\b(review|request_changes|approve|comment)\b/i.test(a)?{kind:"review",ts:b,verdict:c,findings:h,summary:l,raw:o(a).raw}:null}},2542:(a,b,c)=>{c.d(b,{o:()=>ap});var d=c(31421),e=c(77598),f=c.n(e),g=c(61899),h=c(92233),i=c(37788),j=c(52530),k=c(14252),l=c(93812),m=c(59988);let n=/^conversation_[A-Za-z0-9_-]{1,180}$/,o=/^[A-Za-z0-9_.:-]{1,200}$/;function p(a,b){return null===b?{}:{[a]:b}}function q(a,b){if("string"!=typeof a)return null;let c=a.replace(/[\u0000-\u001f\u007f-\u009f]+/gu," ").trim();return c&&[...c].slice(0,b).join("").trim()||null}function r(a){return"string"==typeof a&&o.test(a)?a:null}var s=c(53812);let t="\x3c!-- llv:structured-user --\x3e\n",u=/^<!-- llv:structured-user((?: [a-z0-9]+=[^ >]+)+) -->\n/,v=/(?:^| )([a-z0-9]+)=([^ >]+)/g,w=/^[a-f0-9]{64}$/;function x(a){let b=a.match(u);if(b){let c,d=null,e=null,f=null;for(let[,a,g]of b[1].matchAll(v))"sha256"===a&&w.test(g)&&(d=g),"ctx"===a&&(e=function(a){if(!a||!/^[A-Za-z0-9_-]+$/.test(a))return null;try{let b=a.replace(/-/g,"+").replace(/_/g,"/"),c=atob(b+"=".repeat((4-b.length%4)%4)),d=Uint8Array.from(c,a=>a.charCodeAt(0));return function(a){var b;let c;if(!a||"object"!=typeof a||Array.isArray(a)||1!==a.version)return null;let d=function(a){if("string"!=typeof a||a.length>40)return null;let b=Date.parse(a);return Number.isFinite(b)?new Date(b).toISOString():null}(a.capturedAt);if(!d)return null;let e={capturedAt:d,...p("project",q(a.project,200)),...p("viewSessionId",r(a.viewSessionId)),...p("deviceId",r(a.deviceId)),...p("revision","number"==typeof(b=a.revision)&&Number.isSafeInteger(b)&&b>=0?b:null)};if("none"===a.state)return{version:1,state:"none",...e};if("selected"!==a.state)return null;let f="string"==typeof a.conversationId&&n.test(a.conversationId)?a.conversationId:null;return f?{version:1,state:"selected",conversationId:f,...e,...p("path",(c=q(a.path,1025))&&c.length<=1024?c:null),...p("label",q(a.label,80))}:null}(JSON.parse(new TextDecoder().decode(d)))}catch{return null}}(g)),"origin"===a&&("operator"===g||"agent"===g)&&(f=g),"sender"===a&&(c=(0,s.S)(g));let g=f?{kind:f,..."agent"===f&&c?{role:c}:{}}:null;return{text:a.slice(b[0].length),structured:!0,contentDigest:d,selectedContext:e,origin:g}}return a.startsWith(t)?{text:a.slice(t.length),structured:!0,contentDigest:null,selectedContext:null,origin:null}:{text:a,structured:!1,contentDigest:null,selectedContext:null,origin:null}}var y=c(88417);let z=/^data:([a-z0-9.+-]+\/[a-z0-9.+-]+);base64,([\s\S]*)$/i,A=new Set(["image_url","imageUrl","data","url","source"]);class B extends Error{constructor(a){super(`Codex replay frame exceeded its bounded ${a} budget`)}}let C=/^data:[a-z0-9.+-]+\/[a-z0-9.+-]+;base64,/i;class D{constructor(a){this.budgets=a,this.parts=[],this.outputUnits=0,this.rawUnits=0,this.inString=!1,this.stringParts=[],this.stringUnits=0,this.stringOmitted=0,this.stringHead="",this.stringCapSniffed=!1,this.escapeCarry="",this.stringCap=a.maxStringUnits}feed(a){if(this.rawUnits+=a.length,this.rawUnits>this.budgets.maxRawUnits)throw new B("raw");this.escapeCarry&&(a=this.escapeCarry+a,this.escapeCarry="");let b=0;for(;b<a.length;){if(!this.inString){let c=a.indexOf('"',b);if(-1===c)return void this.append(a.slice(b));this.append(a.slice(b,c+1)),this.inString=!0,b=c+1;continue}let c=a.indexOf('"',b),d=a.indexOf("\\",b),e=-1===c?d:-1===d?c:Math.min(c,d);if(-1===e)return void this.appendToString(a.slice(b));if(e>b&&this.appendToString(a.slice(b,e)),e===c){this.endString(),b=e+1;continue}let f=117===a.charCodeAt(e+1)?6:2,g=a.slice(e,e+f);if(g.length<f){this.escapeCarry=g;return}this.appendToString(g,!0),b=e+f}}finish(){return this.escapeCarry&&(this.appendToString(this.escapeCarry),this.escapeCarry=""),this.inString&&this.endString(!1),this.parts.join("")}append(a){if(a){if(this.outputUnits+=a.length,this.outputUnits>this.budgets.maxOutputUnits)throw new B("output");this.parts.push(a)}}appendToString(a,b=!1){this.stringHead.length<64&&(this.stringHead+=a.slice(0,64-this.stringHead.length)),!this.stringCapSniffed&&this.stringUnits+a.length>this.stringCap&&(this.stringCapSniffed=!0,C.test(this.stringHead)&&(this.stringCap=this.budgets.maxImageStringUnits));let c=this.stringCap-this.stringUnits;if(c>=a.length){this.stringParts.push(a),this.stringUnits+=a.length;return}if(b||c<=0){this.stringOmitted+=a.length;return}this.stringParts.push(a.slice(0,c)),this.stringUnits+=c,this.stringOmitted+=a.length-c}endString(a=!0){if(this.stringOmitted>0){let a=this.stringParts[this.stringParts.length-1],b=a?a.charCodeAt(a.length-1):0;b>=55296&&b<=56319&&(this.stringParts[this.stringParts.length-1]=a.slice(0,-1),this.stringOmitted+=1),this.stringParts.push(`…[truncated ${this.stringOmitted} chars]`)}this.append(this.stringParts.join("")+(a?'"':"")),this.inString=!1,this.stringParts=[],this.stringUnits=0,this.stringOmitted=0,this.stringHead="",this.stringCap=this.budgets.maxStringUnits,this.stringCapSniffed=!1}}var E=c(36855),F=c(49172),G=c(8663);let H=/[.!?…](?:["')\]}»”’]+)?\s+/gu;function I(a,b,c){let d=a.slice(0,b+1).search(/\s+\S*$/u);if(d>=c)return d+a.slice(d).match(/^\s+/u)[0].length;let e=a.slice(b).search(/\s/u);return e>=0?b+e+1:a.length}var J=c(33353),K=c(42580),L=c(73024),M=c.n(L),N=c(76760),O=c.n(N),P=c(50920);let Q=`Your name is Alik. You are the voice coordinator: you speak aloud and you run the work of other agents.
10
10
 
11
11
  ## Language
12
12
 
@@ -76,19 +76,58 @@ While a worker runs, say briefly what is happening. Two minutes of silence sound
76
76
 
77
77
  Do not ask permission for what you can check yourself.
78
78
 
79
- Stay silent until you are spoken to: this text is context, and there is nothing here to greet.`;function G(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function H(a,b){let c=null;try{c=G(JSON.parse(a.toString("utf8")))}catch{return!1}let d=G(c?.payload);return c?.type==="response_item"&&d?.type==="message"&&d.id===b&&"developer"===d.role}function I(a){return(0,e.createHash)("sha256").update("voice-persona-bootstrap\0","utf8").update(a,"utf8").digest("hex")}async function J(a,b){let c;if(!a){let a=Error("canonical transcript path is unavailable");throw a.code="NO_TRANSCRIPT_PATH",a}try{c=await B().promises.open(a,B().constants.O_RDONLY|(B().constants.O_NOFOLLOW??0))}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return!1;throw b}return new Promise((a,d)=>{let e=c.createReadStream({autoClose:!0}),f=!1,g=[],h=0,i=!1,j=b=>{f||(f=!0,e.destroy(),a(b))},k=()=>{g=[],h=0,i=!1};e.on("data",a=>{let c=Buffer.isBuffer(a)?a:Buffer.from(a),d=0;for(;d<=c.length;){let a=c.indexOf(10,d);if(-1===a){let a=c.length-d;!i&&a>0&&(h+a>0x2000000?(g=[],h=0,i=!0):(g.push(Buffer.from(c.subarray(d))),h+=a));return}if(!i){let e=c.subarray(d,a);if(h+e.length<=0x2000000&&H(h?Buffer.concat([...g,e],h+e.length):e,b))return j(!0)}k(),d=a+1}}),e.on("end",()=>{!i&&h>0&&H(Buffer.concat(g,h),b)?j(!0):j(!1)}),e.on("error",a=>{f||(f=!0,d(a))})})}let K=["PATH","HOME","USER","LOGNAME","SHELL","TMPDIR","TMP","TEMP","LANG","LC_ALL","LC_CTYPE","TERM","COLORTERM","NO_COLOR","XDG_CONFIG_HOME","XDG_CACHE_HOME","XDG_DATA_HOME","XDG_STATE_HOME","XDG_RUNTIME_DIR","DBUS_SESSION_BUS_ADDRESS","SSL_CERT_FILE","SSL_CERT_DIR","LLV_SPAWN_CAPABILITY"],L=["DISPLAY","XAUTHORITY","WAYLAND_DISPLAY","XDG_SESSION_TYPE","XDG_CURRENT_DESKTOP","DESKTOP_SESSION"],M=t.u1+262144,N=new Set(["thread/resume","thread/read"]),O=/^\{(?:"jsonrpc":"2\.0",)?"id":(\d+),"result":/,P={maxStringUnits:16384,maxImageStringUnits:t.u1+64,maxOutputUnits:0x4000000,maxRawUnits:0x20000000},Q=new Set(["thread/start","thread/resume","turn/start","turn/steer","turn/interrupt","thread/realtime/start","thread/realtime/stop","thread/inject_items","thread/compact/start"]);function R(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function S(a,b){let c=R(a);return c&&"string"==typeof c[b]?c[b]:null}function T(a){let b=a instanceof Error?a.message:String(a);return(0,l.j)(b).replace(/(["']?(?:cookie|set-cookie)["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[redacted]")}let U=function(a){return T(a).slice(0,500)};function V(a,b){let c=R(a),d=R(c?.thread)??c,e=S(d,"id");if(!e)throw Error(`${b} returned no thread id`);return{threadId:e,path:S(d,"path")}}function W(a,b){let c=R(a),d=S(R(c?.turn),"id")??S(c,"turnId");if(!d)throw Error(`${b} returned no turn id`);return d}function X(a){return S(a.turn,"id")??S(a,"turnId")}function Y(a){return"completed"===a?"completed":"interrupted"===a?"interrupted":"error"}function Z(a,b){let c=R(a)?.data;if(!Array.isArray(c))return!1;let d=c.map(R).filter(a=>null!==a),e=b?d.find(a=>S(a,"id")===b):d.find(a=>!0===a.isDefault);return Array.isArray(e?.inputModalities)&&e.inputModalities.includes("image")}function $(a){let b=R(a),c=R(b?.thread)??b;if(Array.isArray(c?.turns))return c.turns.map(R).filter(a=>null!==a);let d=R(c?.initialTurnsPage);return Array.isArray(d?.data)?d.data.map(R).filter(a=>null!==a):[]}function _(a){let b=S(a,"id");return b?`id:${b}`:`json:${JSON.stringify(a)}`}function aa(a){return"delta"===a.kind?JSON.stringify([a.kind,a.turnId,a.text]):"attention"===a.kind?JSON.stringify([a.kind,a.id,a.method,a.attention]):null}function ab(a){let b=S(a,"text");if(null!==b)return b;if("string"==typeof a.content)return a.content;if(!Array.isArray(a.content))return null;let c=[];for(let b of a.content){if("string"==typeof b){c.push(b);continue}let a=S(b,"text")??S(b,"content");null!==a&&c.push(a)}return c.length>0?c.join(""):null}function ac(a,b){let c=Buffer.from(a,"utf8");if(c.byteLength<=b)return{text:a,truncated:!1};let d=c.byteLength-b;for(;d<c.byteLength&&(192&c[d])==128;)d+=1;return{text:c.subarray(d).toString("utf8"),truncated:!0}}function ad(a){let b=R(a),c=R(b?.thread),d=R(b?.status)??R(c?.status),e=S(d,"type");return"active"!==e&&"idle"!==e&&"notLoaded"!==e&&"systemError"!==e?null:{type:e,activeFlags:Array.isArray(d?.activeFlags)?d.activeFlags.filter(a=>"string"==typeof a):[]}}class ae{constructor(a,b,c){this.pending=new Map,this.pendingRealtimeStart=null,this.realtimeFailure=null,this.realtimeSessionId=null,this.lateThreadReadResponses=new Map,this.replayEnvelopeRequestIds=new Set,this.replayReduction=null,this.subscribers=new Set,this.events=[],this.confirmedDeliveries=new Map,this.pendingDeliveries=new Map,this.pendingCompactions=new Map,this.realtimeDeliveries=new Map,this.voiceStreams=new Map,this.unresolvedVoicePersonaBootstrap=null,this.voicePersonaBootstrapInsertion=null,this.voicePersonaBootstrapAccepted=!1,this.pendingVoiceChunks=new Map,this.cancelledVoiceTurns=new Set,this.activeRealtimeDeliveries=new Map,this.attentions=new Map,this.stateListeners=new Set,this.preRestoreEvents=[],this.preRestoreMessages=[],this.bufferedTerminalTurnIds=new Set,this.bufferedNotificationOverlap=[],this.nextRpcId=1,this.stdoutBuffer="",this.stderrTail="",this.preRestoreBytes=0,this.eventLedgerRestored=!1,this.activeTurnId=null,this.protocolVersion=null,this.account=null,this.engineStatus="idle",this.activeFlags=[],this.imageInputSupport="unknown",this.realtimeDeliveryEpoch=0,this.releasing=!1,this.released=!1,this.dead=!1,this.reaped=!1,this.terminationStarted=!1,this.terminationTimer=null,this.terminationPromise=null,this.resolveTermination=null,this.failureCleanupTimer=null,this.releasePromise=null,this.writerFence=null,this.ledgerFailed=!1,this.failure=null,this.child=a,this.identity=b,this.requestTimeoutMs=c.requestTimeoutMs??3e4,this.realtimePersonaTimeoutMs=c.realtimePersonaTimeoutMs??3e3,this.realtimeStartTimeoutMs=c.realtimeStartTimeoutMs??9e4,this.deliveryConfirmationTimeoutMs=c.deliveryConfirmationTimeoutMs??3e5,this.compactEvidenceTimeoutMs=c.compactEvidenceTimeoutMs??3e5,this.shutdownGraceMs=c.shutdownGraceMs??1e3,this.eventStore=c.eventStore??new z.mI,this.effort=c.effort,this.signalProcess=c.signalProcess??process.kill,this.processIdentity=c.processIdentity??(a=>h.B.processIdentity(a)),this.pidAlive=c.pidAlive??(a=>h.B.pidAlive(a)),this.releaseCleanup=c.releaseCleanup??null,this.childStartIdentity=a.pid?this.processIdentity(a.pid):null,this.onEventCursorRecovery=c.onEventCursorRecovery,this.resolveImagePath=c.resolveImagePath??(a=>{let b=(0,t.PF)();return b.read(a),b.pathFor(a)}),this.cursor=c.initialEventCursor??0,this.reapedPromise=new Promise(a=>{this.resolveReaped=a}),a.stdout.on("data",a=>this.acceptStdout(String(a))),a.stderr.on("data",a=>this.acceptStderr(String(a))),a.stdin.on("error",a=>{this.releasing||this.released||this.fail(Error(`Codex app-server stdin failed: ${U(a)}`))}),a.on("error",a=>this.fail(Error(`Codex app-server child failed: ${U(a)}`))),a.on("close",()=>{if(this.reaped=!0,this.completeGroupCleanupAfterReap(),this.resolveReaped(),this.releasing)this.startFailureCleanup();else if(!this.released)if(this.dead)this.notifyStateListeners();else{let a=T(this.stderrTail).split(/\r?\n/).map(a=>a.replace(/\s+/g," ").trim()).filter(Boolean).slice(-4).reverse().map(a=>a.slice(-240)).join(" | ").slice(0,430);this.fail(Error(`Codex app-server child exited${a?`: ${a}`:""}`))}})}static async start(a){return this.open(a,null)}static async adopt(a,b){if(!a)throw Error("Codex thread id is required for adoption");return this.open(b,a)}static async open(a,b){let c,e=a.spawnProcess??((a,b,c)=>(0,d.spawn)(a,b,{...c,stdio:["pipe","pipe","pipe"]})),f=[...a.fileAuthCredentials?["-c","cli_auth_credentials_store=file"]:[],...a.permissionProfile&&a.permissionProfileConfig?["-c",`default_permissions=${JSON.stringify(a.permissionProfile)}`,"-c",a.permissionProfileConfig]:[],"app-server","--enable","realtime_conversation"],g=(0,k.sJ)(a.plugins);try{c=e(a.binary??process.env.LLV_CODEX_BINARY??"codex",f,{cwd:a.cwd,env:(0,u.$)(function(a,b,c=!1,d=!1){let e={NODE_ENV:a.NODE_ENV};for(let b of c?[...K,...L]:K)void 0!==a[b]&&(e[b]=a[b]);return d&&void 0!==a.GH_CONFIG_DIR&&(e.GH_CONFIG_DIR=a.GH_CONFIG_DIR),b&&(e.CODEX_HOME=b),e}(a.env??process.env,a.codexHome,g.length>0,!0===a.forwardGitHubConfig),a.mcpServers),detached:!0})}catch(b){throw a.releaseCleanup?.(),b}let h=new ae(c,{threadId:b??"pending",path:null},a);try{var i;let c,d;i=R(await h.rpc("initialize",{clientInfo:{name:"llv-structured-host",title:"Live Log Viewer",version:"0.11.7"},capabilities:{experimentalApi:!0}})),h.protocolVersion=(c=S(i,"appServerVersion")??S(i,"serverVersion")??S(i,"version"))||(S(i,"userAgent")?.match(/^[^/]+\/([^\s]+)/)?.[1]??null),h.notify("initialized",{});let e=R(await h.rpc("account/read",{refreshToken:!1})),f=R(e?.account),k=S(f,"type");if("chatgpt"!==k)throw Error("Codex app-server requires a ChatGPT subscription login");h.account={type:k,planType:S(f,"planType")},h.requestedModel=a.model;try{h.imageInputSupport=Z(await h.rpc("model/list",{}),a.model)?"supported":"unsupported"}catch{h.imageInputSupport="unknown"}let l=(0,j.v)(await h.rpc("config/read",{cwd:a.cwd,includeLayers:!1}),!0===a.allowSubagents,a.mcpServers,g),m=b?await h.rpc("thread/resume",{threadId:b,...a.permissionProfile?{permissions:a.permissionProfile}:{},config:l}):await h.rpc("thread/start",{cwd:a.cwd,...a.model?{model:a.model}:{},...a.permissionProfile?{permissions:a.permissionProfile}:{sandbox:a.sandbox??"read-only"},approvalPolicy:a.approvalPolicy??"never",config:l}),n=V(m,b?"thread/resume":"thread/start");if(b&&n.threadId!==b)throw Error("thread/resume returned a different thread id");return h.identity.threadId=n.threadId,h.identity.path=n.path,g.length>0&&await h.verifyPluginGrant(g,l),h.rememberConfirmedDeliveries(m),h.restoreEvents(),h.beginBufferedNotificationReconciliation(),h.flushPreRestoreEvents(),h.flushPreRestoreMessages(b?m:null),b&&h.reconcileThreadHistory(m),h.reconcileAfterOpen(ad(m),(d=$(m).findLast(a=>"inProgress"===S(a,"status")))?S(d,"id"):null),h.endBufferedNotificationReconciliation(),h}catch(a){try{await h.release()}catch(b){throw new y.EY(U(a),h,{cause:b})}throw Error(U(a))}}async verifyPluginGrant(a,b){let c,d=new Set(Object.keys(R(b.mcp_servers)??{})),e=new Set((0,k.QN)(a));try{c=await this.rpc("mcpServerStatus/list",{threadId:this.identity.threadId})}catch(a){throw Error(`Codex plugin grant could not be verified: ${U(a)}`)}let f=R(c)?.data??c;if(!Array.isArray(f))throw Error("Codex plugin grant could not be verified: mcpServerStatus/list returned no server list");let g=f.map(a=>S(R(a),"name")).filter(a=>null!==a&&!d.has(a)&&!e.has(a));if(g.length>0)throw Error(`Codex plugin grant surfaced servers outside the allowlist: ${[...new Set(g)].sort().join(", ")}`)}attach(a){if(!Number.isSafeInteger(a)||a<0)throw Error("afterSeq must be a non-negative integer");let b={afterSeq:a,queue:[],wake:null,closed:!1},c=this.events[0]?.seq;if(void 0!==c&&a+1<c)throw new y.AW(a,c);for(let c of this.events)c.seq>a&&b.queue.push(c);this.subscribers.add(b);let d=this.subscribers;return{async *[Symbol.asyncIterator](){try{for(;;){let a=b.queue.shift();if(a){a.seq>b.afterSeq&&(b.afterSeq=a.seq,yield a);continue}if(b.closed)break;await new Promise(a=>{b.wake=a}),b.wake=null}}finally{b.closed=!0,d.delete(b)}}}}async refreshImageInputSupport(){try{this.imageInputSupport=Z(await this.rpc("model/list",{}),this.requestedModel)?"supported":"unsupported"}catch{return}"supported"===this.imageInputSupport&&this.setSessionStatus(this.engineStatus,this.activeFlags)}async send(a){if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())return{outcome:"rejected",reason:"dead-host"};let b=(0,y.h4)(a);if(b.content.images.length){if("unknown"===this.imageInputSupport&&await this.refreshImageInputSupport(),"unsupported"===this.imageInputSupport)throw Error("The selected Codex model does not advertise image input through app-server.");if("supported"!==this.imageInputSupport)throw Error("Codex image capability discovery is temporarily unavailable; retry shortly.")}if(!(a={id:b.id,text:b.content.text,content:b.content,contentDigest:b.contentDigest,...void 0!==b.expectedTurnId?{expectedTurnId:b.expectedTurnId}:{},...b.runtime?{runtime:b.runtime}:{},...b.selectedContext?{selectedContext:b.selectedContext}:{},...b.origin?{origin:b.origin}:{}}).id)throw Error("queue entry id is required");let c=await this.confirmedDelivery(a);if(c)return c;let d=this.activeTurnId;if(void 0!==a.expectedTurnId&&a.expectedTurnId!==d)return{outcome:"rejected",reason:"stale-turn"};let e=[...b.content.images.map(a=>({type:"localImage",path:this.resolveImagePath(a)})),{type:"text",text:(0,m.D)(b.content.text,b.content.images.length>0?b.contentDigest:void 0,b.selectedContext,b.origin)}];if(d)try{let b=await this.rpc("turn/steer",{threadId:this.identity.threadId,expectedTurnId:d,input:e,clientUserMessageId:a.id});return this.awaitDeliveryConfirmation(a,{outcome:"steered",turnId:W(b,"turn/steer")})}catch(a){if(/expectedTurnId|active turn|stale/i.test(U(a)))return{outcome:"rejected",reason:"stale-turn"};throw a}let f=(a.runtime?.effort&&(0,g.ck)(a.runtime.effort)?a.runtime.effort:void 0)??this.effort,h=W(await this.rpc("turn/start",{threadId:this.identity.threadId,...f?{effort:f}:{},input:e,clientUserMessageId:a.id}),"turn/start");return this.activeTurnId=h,this.notifyStateListeners(),this.awaitDeliveryConfirmation(a,{outcome:"turn-started",turnId:h})}async interrupt(a){if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw Error("Codex app-server host is unavailable");if(!a||this.activeTurnId!==a)throw Error("active turn fence is stale");await this.rpc("turn/interrupt",{threadId:this.identity.threadId,turnId:a})}async compact(a){let b;if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw new y.BL("Codex app-server host is unavailable","refused");if(a.threadId&&a.threadId!==this.identity.threadId)throw new y.BL("compact target thread is not the thread this host owns","refused");if(this.activeTurnId)throw new y.BL("a turn is active; compaction would race it","refused");let c=this.pendingCompactions.get(a.operationId);if(c)return c.promise;if(this.pendingCompactions.size>0)throw new y.BL("a compaction is already running on this thread","refused");let d=new Promise((a,c)=>{b={promise:void 0,resolve:a,reject:c,timer:void 0}});b.promise=d,this.pendingCompactions.set(a.operationId,b),d.catch(()=>void 0);try{await this.rpc("thread/compact/start",{threadId:this.identity.threadId},this.compactEvidenceTimeoutMs)}catch(e){if(this.pendingCompactions.get(a.operationId)!==b)return d;this.pendingCompactions.delete(a.operationId);let c=U(e);throw new y.BL(c,/outcome is uncertain/.test(c)?"unverified":"refused")}return this.pendingCompactions.get(a.operationId)===b&&(b.timer=setTimeout(()=>{this.pendingCompactions.delete(a.operationId),b.reject(new y.BL("Codex compaction evidence did not arrive; the outcome is unverified","unverified"))},this.compactEvidenceTimeoutMs)),d}acceptCompactionItem(a,b){if("completed"!==b||0===this.pendingCompactions.size)return;let c=R(a);c&&this.settlePendingCompactions({compactionId:S(c,"id")})}acceptCompactedNotification(a){0===this.pendingCompactions.size||S(a,"threadId")===this.identity.threadId&&this.settlePendingCompactions({compactionId:null})}rejectPendingCompactions(a){this.settlePendingCompactions(new y.BL(U(a),"unverified"))}settlePendingCompactions(a){if(0===this.pendingCompactions.size)return;let b=[...this.pendingCompactions.values()];for(let c of(this.pendingCompactions.clear(),b))c.timer&&clearTimeout(c.timer),a instanceof y.BL?c.reject(a):c.resolve(a)}settlePendingCompactionsFromTerminalTurn(a,b){if("completed"===b||0===this.pendingCompactions.size)return;let c=U(S(R(a?.error),"message")??("interrupted"===b?"Codex compaction was interrupted; the outcome is unverified":"Codex compaction failed"));this.settlePendingCompactions(new y.BL(c,"interrupted"===b?"unverified":"refused"))}async startRealtimeWebRtc(a){let b,c,d,e;if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw Error("Codex app-server host is unavailable");let f=a.endsWith("\n")?a:`${a}\r
80
- `;if(!f.trimStart().startsWith("v=0")||Buffer.byteLength(f,"utf8")>524288)throw Error("A valid WebRTC SDP offer is required");if(this.pendingRealtimeStart)throw Error("A realtime session is already starting");this.realtimeFailure=null,this.realtimeSessionId=null;let g=(c=I(this.identity.threadId).slice(0,46),d=`voice_persona_${c}`,e=`msg_${d}`,{receiptId:d,itemId:e}),h=new Promise((a,c)=>{b={resolve:a,reject:c,timer:void 0,started:!1,realtimeSessionId:null,sdp:null,personaBootstrap:{...g,insertion:"accepted"}}});this.pendingRealtimeStart=b,h.catch(()=>void 0);try{let a=await this.ensureVoicePersonaBootstrap(g,b);if("superseded"===a)return h}catch(d){if(this.pendingRealtimeStart!==b)return h;let a=b;this.pendingRealtimeStart=null,clearTimeout(a.timer);let c={sdp:null,realtimeSessionId:null,personaBootstrap:{...g,insertion:"rejected",diagnostic:U(d)}};return a.resolve(c),h}if(this.pendingRealtimeStart!==b)return h;let i=function(a){let b=[],c=!1;for(let d of a){if("delta"===d.kind){if(!d.text)continue;let a=b.at(-1);if(a?.role==="assistant"&&a.turnId===d.turnId){let b=ac(a.text+d.text,8192);a.text=b.text,c||=b.truncated}else{let a=ac(d.text,8192);b=[{role:"assistant",text:a.text,turnId:d.turnId,source:"durable-delta"}],c=a.truncated}continue}if("item"!==d.kind||"completed"!==d.phase)continue;let a=function(a){let b=R(a);if(!b)return null;let c=S(b,"type"),d=R(b.message),e=S(b,"role")??S(d,"role"),f="userMessage"===c||"user_message"===c||"user"===c||"message"===c&&"user"===e;if(!f&&"agentMessage"!==c&&"agent_message"!==c&&"assistant"!==c&&("message"!==c||"assistant"!==e))return null;let g=S(b,"text")??ab(b)??(d?S(d,"text")??ab(d):null);return g?f?{role:"user",text:(0,m.$)(g).text}:{role:"assistant",text:g}:null}(d.item);if(a){if("user"===a.role){if(0===b.length)continue;let e=ac(a.text,8192);b.push({...a,text:e.text,turnId:d.turnId,source:"durable-item"}),c||=e.truncated,b.length>12&&(b=[b[0],...b.slice(-11)],c=!0);continue}b.findLastIndex(a=>"assistant"===a.role&&(null===d.turnId||a.turnId===d.turnId))>=0&&(b=[],c=!1)}}let d=(b=b.filter(a=>a.text.length>0)).reduce((a,b)=>a+Buffer.byteLength(b.text,"utf8"),0);for(;d>24576&&b.length>1;){let a=b.splice(1,1)[0];d-=Buffer.byteLength(a.text,"utf8"),c=!0}return{items:b.map(({role:a,text:b})=>({role:a,text:b})),diagnosticItems:b.map(({role:a,source:b,text:c})=>({role:a,source:b,bytes:Buffer.byteLength(c,"utf8")})),truncated:c}}(this.events);console.info("[realtime context] selected",{providerStartupContext:!0,durableTail:i.diagnosticItems,truncated:i.truncated}),b.timer=setTimeout(()=>{this.pendingRealtimeStart===b&&this.fail(Error("thread/realtime/start timed out; outcome is uncertain"))},this.realtimeStartTimeoutMs);try{await this.rpc("thread/realtime/start",{threadId:this.identity.threadId,version:"v3",model:"gpt-live-1-codex",outputModality:"audio",transport:{type:"webrtc",sdp:f},clientManagedHandoffs:!0,codexResponsesAsItems:!0,includeStartupContext:!0,...i.items.length>0?{initialItems:i.items}:{}},this.realtimeStartTimeoutMs)}catch(a){this.rejectRealtimeStart(a instanceof Error?a:Error(U(a)))}return h}async ensureVoicePersonaBootstrap(a,b){for(await this.ensureCanonicalTranscriptPath();!this.voicePersonaBootstrapAccepted;){var c;let d=this.voicePersonaBootstrapInsertion;if(d){try{await d.promise}catch(a){if(this.pendingRealtimeStart!==b)return"superseded";if(d.owner===b)throw a}continue}let e=await this.scanVoicePersonaBootstrap(a.itemId,"canonical scan unavailable; refusing insertion"),f=!e&&await this.scanVoicePersonaBootstrap((c=this.identity.threadId,`msg_voice_persona_${I(c)}`),"legacy canonical scan unavailable; refusing insertion");if(e||f){this.voicePersonaBootstrapAccepted=!0,this.unresolvedVoicePersonaBootstrap=null;break}if(this.pendingRealtimeStart!==b)return"superseded";if(this.voicePersonaBootstrapInsertion)continue;let g=this.unresolvedVoicePersonaBootstrap??function(a){let b=function(a=a=>B().readFileSync(a,"utf8")){try{let b=a((0,E.ks)(D().join(..."prompts/voice-persona.md".split("/")))).trim();if(b)return b}catch{}return F}(void 0);return{item:{type:"message",id:a.itemId,role:"developer",content:[{type:"input_text",text:b}]}}}(a);this.unresolvedVoicePersonaBootstrap=g;let h=this.insertVoicePersonaBootstrap(g,a.itemId),i={owner:b,promise:h};this.voicePersonaBootstrapInsertion=i;let j=()=>{this.voicePersonaBootstrapInsertion===i&&(this.voicePersonaBootstrapInsertion=null)};h.then(j,j);try{await h}catch(a){if(this.pendingRealtimeStart!==b)return"superseded";throw a}}return"accepted"}async ensureCanonicalTranscriptPath(){if(this.identity.path)return;let a=V(await this.rpc("thread/read",{threadId:this.identity.threadId,includeTurns:!0}),"thread/read");if(a.threadId!==this.identity.threadId)throw Error("thread/read returned a different thread id");if(!a.path){let a=Error("canonical transcript path is unavailable");throw a.code="NO_TRANSCRIPT_PATH",a}this.identity.path=a.path}async insertVoicePersonaBootstrap(a,b){try{await this.rpc("thread/inject_items",{threadId:this.identity.threadId,items:[a.item]},this.realtimePersonaTimeoutMs)}catch(a){if(!await this.scanVoicePersonaBootstrap(b,"recovery scan unavailable"))throw a}this.voicePersonaBootstrapAccepted=!0,this.unresolvedVoicePersonaBootstrap=null}async scanVoicePersonaBootstrap(a,b){try{return await J(this.identity.path,a)}catch(a){throw console.warn(`[voice persona bootstrap] ${b}`,{code:a.code??"unknown",diagnostic:U(a)}),a}}async appendRealtimeSpeech(a){if(!a||Buffer.byteLength(a,"utf8")>8192)throw Error("Realtime speech text is empty or too large");await this.rpc("thread/realtime/appendSpeech",{threadId:this.identity.threadId,text:a})}voiceStream(a){let b=this.voiceStreams.get(a);if(b)return b;let c={turnId:a,segmentIndex:0,nextChunkIndex:0,buffer:"",observedChars:0,emittedChars:0,observedHash:(0,e.createHash)("sha256"),emittedHash:(0,e.createHash)("sha256"),fallbackToTerminal:!1,timer:null};return this.voiceStreams.set(a,c),c}observeVoiceDelta(a,b){if(!b||this.cancelledVoiceTurns.has(a))return;let c=this.voiceStream(a);if(c.buffer+=b,c.observedChars+=b.length,c.observedHash.update(b),Buffer.byteLength(c.buffer,"utf8")>24576){c.fallbackToTerminal=!0,c.buffer="",this.clearVoiceStreamTimer(c);return}this.realtimeSessionId&&!c.fallbackToTerminal&&(this.flushVoiceStream(c,"eager"),this.scheduleVoiceStreamFlush(c))}flushVoiceStream(a,b){if(!this.realtimeSessionId||a.fallbackToTerminal||this.cancelledVoiceTurns.has(a.turnId)||this.pendingVoiceChunks.size>=6)return!1;let c=function(a,b){if(!a)return null;let c=(0,v._t)(a,0,1800),d=c.text,e=c.nextOffset<a.length,f=function(a){w.lastIndex=0;let b=-1;for(let c of a.matchAll(w)){let a=(c.index??0)+c[0].length;a>=180&&(b=a)}return b}(d),g=-1;return(f>=0?g=f:"final"===b?g=d.length:e||a.length>=560?g=x(d,Math.min(560,d.length),180):"deadline"===b&&a.length>=140&&(g=x(d,d.length,140)),g<=0)?null:{text:a.slice(0,g),remainder:a.slice(g)}}(a.buffer,b);if(!c)return!1;let d=a.emittedChars,e=d+c.text.length,f=(0,v.N5)({sourceTurnId:a.turnId,chunkIndex:a.nextChunkIndex,startOffset:d,endOffset:e,text:c.text});return this.emit({kind:"voice-chunk",turnId:a.turnId,delivery:f}),!this.ledgerFailed&&(this.pendingVoiceChunks.set(f.deliveryId,a.turnId),a.nextChunkIndex+=1,a.emittedChars=e,a.emittedHash.update(c.text),a.buffer=c.remainder,!0)}scheduleVoiceStreamFlush(a){this.clearVoiceStreamTimer(a),!a.buffer||!this.realtimeSessionId||a.fallbackToTerminal||this.cancelledVoiceTurns.has(a.turnId)||(a.timer=setTimeout(()=>{a.timer=null,this.flushVoiceStream(a,"deadline")&&a.buffer.length>0&&this.pendingVoiceChunks.size<6&&this.scheduleVoiceStreamFlush(a)},1100))}clearVoiceStreamTimer(a){a.timer&&(clearTimeout(a.timer),a.timer=null)}clearVoiceStreamTimers(){for(let a of this.voiceStreams.values())this.clearVoiceStreamTimer(a)}resetVoiceStreamSegment(a){this.clearVoiceStreamTimer(a),a.segmentIndex+=1,a.buffer="",a.observedChars=0,a.emittedChars=0,a.observedHash=(0,e.createHash)("sha256"),a.emittedHash=(0,e.createHash)("sha256"),a.fallbackToTerminal=!1}finalizeVoiceStreamItem(a,b){let c=this.voiceStreams.get(a),d=(0,v.mT)(b,`voice-final:${a}:${c?.segmentIndex??0}`);if(!d||!c||0===c.observedChars)return;this.clearVoiceStreamTimer(c);let f=d.text.slice(0,c.emittedChars),g=(0,e.createHash)("sha256").update(f).digest("hex")===c.emittedHash.copy().digest("hex"),h=d.text.slice(0,c.observedChars),i=c.observedChars<=d.text.length&&(0,e.createHash)("sha256").update(h).digest("hex")===c.observedHash.copy().digest("hex");g&&i&&!c.fallbackToTerminal&&this.flushVoiceStream(c,"final");let j=g?c.emittedChars:0,k=d.text.slice(j);return(g&&i||console.warn("[realtime voice stream] terminal reconciliation used bounded fallback",{turnId:a,emittedChars:c.emittedChars,observedChars:c.observedChars,emittedMatches:g,observedMatches:i}),this.resetVoiceStreamSegment(c),k)?{responseId:j>0?`${d.responseId}:suffix:${j}`:d.responseId,text:k}:null}cancelVoiceStream(a){let b=this.voiceStreams.get(a);for(let[c,d]of(b&&this.clearVoiceStreamTimer(b),this.voiceStreams.delete(a),this.cancelledVoiceTurns.add(a),this.pendingVoiceChunks))d===a&&this.pendingVoiceChunks.delete(c)}resumeVoiceStreams(){if(this.realtimeSessionId)for(let a of this.voiceStreams.values())this.cancelledVoiceTurns.has(a.turnId)||(a.fallbackToTerminal=!1,this.flushVoiceStream(a,"eager"),this.scheduleVoiceStreamFlush(a))}async deliverRealtimeWorkerResponse(a){let b=(0,v.Im)([a])[0];if(!b||!b.ready||b.deliveryId!==a.deliveryId)throw Error("Realtime worker delivery is invalid");if(b.sourceTurnId&&this.cancelledVoiceTurns.has(b.sourceTurnId))throw Error("Realtime worker delivery belongs to an interrupted turn");let c=(0,e.createHash)("sha256").update(JSON.stringify(b.responses)).digest("hex"),d=this.activeRealtimeDeliveries.get(b.deliveryId);if(d){if(d.digest!==c)throw Error("Realtime delivery id belongs to different content");return d.promise}let f=this.performRealtimeWorkerDelivery(b,c);this.activeRealtimeDeliveries.set(b.deliveryId,{digest:c,promise:f});try{return await f}finally{this.activeRealtimeDeliveries.get(b.deliveryId)?.promise===f&&this.activeRealtimeDeliveries.delete(b.deliveryId)}}async performRealtimeWorkerDelivery(a,b){let c=this.realtimeDeliveries.get(a.deliveryId);if(c?.digest!==void 0&&c.digest!==b)throw Error("Realtime delivery id belongs to different content");if(c?.acknowledged)return{deliveryId:a.deliveryId,acknowledged:!0};let d=c?.responseIndex??0,e=c?.offset??0;if(d>a.responses.length||d<a.responses.length&&e>a.responses[d].text.length)throw Error("Realtime delivery cursor is invalid");let f=this.realtimeDeliveryEpoch;for(;d<a.responses.length;){if(f!==this.realtimeDeliveryEpoch)throw Error("Realtime worker delivery paused by stop");let c=a.responses[d],g=(0,v._t)(c.text,e,8192);if(!g){d+=1,e=0;continue}if(await this.appendRealtimeSpeech(g.text),(e=g.nextOffset)===c.text.length&&(d+=1,e=0),this.emit({kind:"realtime-delivery-progress",deliveryId:a.deliveryId,digest:b,responseIndex:d,offset:e}),this.ledgerFailed)throw Error("Realtime delivery progress was not persisted");this.realtimeDeliveries.set(a.deliveryId,{digest:b,responseIndex:d,offset:e,acknowledged:!1})}if(this.emit({kind:"realtime-delivery-acknowledged",deliveryId:a.deliveryId,digest:b}),this.ledgerFailed)throw Error("Realtime delivery acknowledgement was not persisted");this.realtimeDeliveries.set(a.deliveryId,{digest:b,responseIndex:d,offset:e,acknowledged:!0});let g=this.pendingVoiceChunks.get(a.deliveryId);if(g){this.pendingVoiceChunks.delete(a.deliveryId);let b=this.voiceStreams.get(g);b&&!this.cancelledVoiceTurns.has(g)&&(this.flushVoiceStream(b,"eager"),this.scheduleVoiceStreamFlush(b))}return{deliveryId:a.deliveryId,acknowledged:!0}}async stopRealtime(){for(let a of(this.realtimeDeliveryEpoch+=1,await this.rpc("thread/realtime/stop",{threadId:this.identity.threadId}),this.rejectRealtimeStart(Error("Realtime session stopped during startup")),this.realtimeFailure=null,this.realtimeSessionId=null,this.voiceStreams.values()))this.clearVoiceStreamTimer(a),a.fallbackToTerminal=!0}async answer(a,b){if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw Error("Codex app-server host is unavailable");let c=this.attentions.get(a);if(!c)throw Error("attention request is missing or already answered");if(c.answer)throw Error("attention answer is already awaiting confirmation");await new Promise((a,d)=>{let e=setTimeout(()=>{c.answer=void 0;let a=Error("attention answer timed out; outcome is uncertain");d(a),this.fail(a)},this.requestTimeoutMs);c.answer={resolve:a,reject:d,timer:e},this.write({jsonrpc:"2.0",id:c.rpcId,result:b??{}})})}async health(){return this.currentState()}onStateChange(a){return this.stateListeners.add(a),a(this.currentState()),()=>this.stateListeners.delete(a)}setWriterFence(a){this.writerFence=a}writerFenceAllowsActuation(){try{return this.writerFence?.()??!0}catch{return!1}}currentState(){let a=this.reaped||this.released?null:this.child.pid??null,b=a&&"owned"===this.childProcessOwnership()?this.childStartIdentity:null;return{status:this.dead?"dead":this.released?"unhosted":this.attentions.size>0?"attention":this.activeTurnId?"active":this.engineStatus,sessionKey:this.identity.threadId,endpoint:a?`stdio:${a}`:"stdio:released",pid:a,processStartIdentity:b,eventCursor:this.cursor,protocolVersion:this.protocolVersion,activeTurnRef:this.activeTurnId,pendingAttention:[...this.attentions.keys()],activeFlags:[...this.activeFlags],account:this.account}}async release(){if(!this.released){if(!this.releasePromise){let a=this.releaseAndReap();this.releasePromise=a,a.catch(()=>{this.releasePromise===a&&(this.releasePromise=null)})}return this.releasePromise}}async releaseAndReap(){if(this.realtimeDeliveryEpoch+=1,this.realtimeSessionId){let a=this.rpc("thread/realtime/stop",{threadId:this.identity.threadId},2e3);await a.catch(()=>void 0),this.realtimeSessionId=null}for(let a of(this.releasing=!0,this.unresolvedVoicePersonaBootstrap=null,this.rejectRealtimeStart(Error("Codex app-server host released")),this.rejectPendingAnswers(Error("Codex app-server host released")),this.rejectPendingDeliveries(Error("Codex app-server host released")),this.rejectPendingCompactions(Error("Codex app-server host released")),this.pending.values()))clearTimeout(a.timer),a.reject(Error("Codex app-server host released"));this.pending.clear();let a=this.startTermination(),b=this.childProcessOwnership();if(!this.reaped&&("gone"===b||"recycled"===b))return void await this.finishReleaseAfterGroupCleanup();if(this.reaped||"owned"!==b||a||(a=this.startTermination()),!this.reaped&&!a)throw Error("Codex app-server child ownership is unknown");if(!await this.waitForReap(this.shutdownGraceMs)){let a=this.childProcessOwnership();if(!this.reaped&&("gone"===a||"recycled"===a))return void await this.finishReleaseAfterGroupCleanup();if(!this.reaped&&"unknown"===a)throw Error("Codex app-server child ownership is unknown");if(this.signalTermination("SIGKILL"),!await this.waitForReap(this.shutdownGraceMs)){let a=this.childProcessOwnership();if(!this.reaped&&("gone"===a||"recycled"===a))return void await this.finishReleaseAfterGroupCleanup();if(!this.reaped&&"unknown"===a)throw Error("Codex app-server child ownership is unknown");throw Error("Codex app-server child could not be reaped")}}await this.finishReleaseAfterGroupCleanup()}async finishReleaseAfterGroupCleanup(){await this.terminationPromise,this.finishRelease()}finishRelease(){if(this.released)return;this.clearVoiceStreamTimers(),this.failureCleanupTimer&&(clearTimeout(this.failureCleanupTimer),this.failureCleanupTimer=null),this.released=!0,this.releasing=!1,this.activeTurnId=null,this.attentions.clear(),this.setSessionStatus("unhosted",[]),(this.ledgerFailed||!this.eventLedgerRestored)&&this.notifyStateListeners(),this.closeSubscribers();let a=this.releaseCleanup;this.releaseCleanup=null,a?.()}completeGroupCleanupAfterReap(){if(this.terminationStarted&&this.resolveTermination){this.terminationTimer&&(clearTimeout(this.terminationTimer),this.terminationTimer=null);try{"gone"===this.childProcessOwnership()&&(0,i.v)(this.child.pid,"SIGKILL",this.signalProcess)}finally{this.resolveTermination(),this.resolveTermination=null}}}startTermination(){if(this.terminationStarted)return!0;try{this.child.stdin.end()}catch{}let a=this.childProcessOwnership();return"gone"===a?((0,i.v)(this.child.pid,"SIGTERM",this.signalProcess),(0,i.v)(this.child.pid,"SIGKILL",this.signalProcess),this.terminationStarted=!0,this.terminationPromise=Promise.resolve(),!0):"owned"===a&&"unsafe"!==this.signalTermination("SIGTERM")&&(this.terminationStarted=!0,this.terminationPromise=new Promise(a=>{this.resolveTermination=a}),this.terminationTimer=setTimeout(()=>{this.terminationTimer=null;try{this.signalTermination("SIGKILL")}finally{this.resolveTermination?.(),this.resolveTermination=null}},this.shutdownGraceMs),!0)}childProcessOwnership(){let a=this.child.pid;if(!a||!Number.isInteger(a)||a<=0||!this.pidAlive(a))return"gone";let b=this.processIdentity(a);return null===this.childStartIdentity||null===b?"unknown":b===this.childStartIdentity?"owned":"recycled"}signalTermination(a){let b=this.childProcessOwnership();return"gone"===b?((0,i.v)(this.child.pid,a,this.signalProcess),"attempted"):this.reaped||"owned"!==b?"unsafe":((0,i.f)(this.child,a,this.signalProcess),"attempted")}async waitForReap(a){let b;if(this.reaped)return!0;try{return await Promise.race([this.reapedPromise.then(()=>!0),new Promise(c=>{b=setTimeout(()=>c(!1),a)})])}finally{b&&clearTimeout(b)}}emit(a){let b;if(this.ledgerFailed)return;if(!this.eventLedgerRestored){if(this.preRestoreEvents.length+this.preRestoreMessages.length>=256){this.ledgerFailed=!0,this.failWithoutLedger(Error("Codex app-server pre-restore event buffer exceeded its bounded capacity"));return}this.preRestoreEvents.push(a);return}try{b=(0,z.RO)(this.cursor)}catch(a){this.ledgerFailed=!0,this.failWithoutLedger(Error(U(a)));return}this.cursor=b;let c={...a,seq:b};try{this.eventStore.append(this.identity.threadId,c)}catch(a){this.ledgerFailed=!0,this.cursor=this.events.at(-1)?.seq??Math.max(0,this.cursor-1),this.failWithoutLedger(Error(`runtime event ledger failed: ${U(a)}`));return}for(let a of(this.events.push(c),this.subscribers))a.queue.push(c),a.wake?.();this.notifyStateListeners()}restoreEvents(){let a=this.eventStore.load(this.identity.threadId),b=new Map([...this.attentions].filter(([,a])=>"current"===a.origin));for(let b of(this.attentions.clear(),this.clearVoiceStreamTimers(),this.voiceStreams.clear(),this.pendingVoiceChunks.clear(),this.cancelledVoiceTurns.clear(),this.events.splice(0,this.events.length,...a),this.cursor=(0,z.dq)(this.identity.threadId,a.at(-1)?.seq??0,this.cursor,this.onEventCursorRecovery),a)){if("turn-started"===b.kind&&(this.cancelledVoiceTurns.delete(b.turnId),this.activeTurnId=b.turnId),"delta"===b.kind&&this.observeVoiceDelta(b.turnId,b.text),"voice-chunk"===b.kind){let a=(0,v.Im)([b.delivery])[0],c=a?.responses[0],d=a?.sourceTurnId?this.voiceStream(a.sourceTurnId):null;a?.streamChunk&&c&&d&&a.streamChunk.startOffset===d.emittedChars&&d.buffer.startsWith(c.text)?(d.buffer=d.buffer.slice(c.text.length),d.emittedChars=a.streamChunk.endOffset,d.emittedHash.update(c.text),d.nextChunkIndex=Math.max(d.nextChunkIndex,a.streamChunk.index+1),this.pendingVoiceChunks.set(a.deliveryId,a.sourceTurnId)):d&&(d.fallbackToTerminal=!0,d.buffer="")}if("item"===b.kind&&"completed"===b.phase&&b.turnId&&(0,v.mT)(b.item,"restored")){let a=this.voiceStreams.get(b.turnId);a&&this.resetVoiceStreamSegment(a)}if("turn-ended"===b.kind){b.turnId===this.activeTurnId&&(this.activeTurnId=null);let a=this.voiceStreams.get(b.turnId);a&&this.clearVoiceStreamTimer(a),this.voiceStreams.delete(b.turnId),"completed"!==b.status&&this.cancelledVoiceTurns.add(b.turnId)}if("attention"===b.kind&&this.attentions.set(b.id,{rpcId:"restored",method:b.method,origin:"restored"}),"attention-resolved"===b.kind&&this.attentions.delete(b.id),"realtime-delivery-progress"===b.kind&&this.realtimeDeliveries.set(b.deliveryId,{digest:b.digest,responseIndex:b.responseIndex,offset:b.offset,acknowledged:!1}),"realtime-delivery-acknowledged"===b.kind){let a=this.realtimeDeliveries.get(b.deliveryId);this.realtimeDeliveries.set(b.deliveryId,{digest:b.digest,responseIndex:a?.responseIndex??0,offset:a?.offset??0,acknowledged:!0}),this.pendingVoiceChunks.delete(b.deliveryId)}"session-status"===b.kind&&(this.engineStatus=b.status,this.activeFlags=[...b.activeFlags??[]],("unhosted"===b.status||"dead"===b.status)&&(this.activeTurnId=null,this.attentions.clear()))}for(let[a,c]of b)this.attentions.set(a,c);return this.eventLedgerRestored=!0,a.length}reconcileAfterOpen(a,b){let c=a??{type:"idle",activeFlags:[]};if("active"===c.type&&!b)throw Error("thread/resume returned active status without an active turn id");let d=null!==b&&this.bufferedTerminalTurnIds.has(b);if("active"===c.type&&b&&!d&&this.activeTurnId!==b&&(this.activeTurnId&&this.emit({kind:"turn-ended",turnId:this.activeTurnId,status:"error"}),this.activeTurnId=b,this.emit({kind:"turn-started",turnId:b})),this.activeTurnId&&"active"!==c.type){let a=this.activeTurnId;this.activeTurnId=null,this.emit({kind:"turn-ended",turnId:a,status:"error"})}for(let[a,b]of[...this.attentions])"restored"===b.origin&&(this.attentions.delete(a),this.emit({kind:"attention-resolved",id:a,resolution:"host-restarted"}));this.emitThreadStatus(d&&!this.activeTurnId?{type:"idle",activeFlags:[]}:c)}reconcileThreadHistory(a){for(let b of $(a))this.reconcileTurnHistory(b)}reconcileTurnHistory(a){let b=S(a,"id");if(!b)return;let c=this.events.filter(a=>"turnId"in a&&a.turnId===b),d=S(a,"status"),e=c.some(a=>"turn-started"===a.kind);this.bufferedTerminalTurnIds.has(b)||e&&("inProgress"!==d||this.activeTurnId===b)||(this.activeTurnId=b,this.emit({kind:"turn-started",turnId:b}));let f=new Map;for(let a of c){if("item"!==a.kind||"completed"!==a.phase)continue;let b=_(a.item);f.set(b,(f.get(b)??0)+1)}if(Array.isArray(a.items))for(let c of a.items){let a=this.boundImageBodies(c),d=_(a),e=f.get(d)??0;if(e>0){f.set(d,e-1);continue}this.emit({kind:"item",turnId:b,item:a,phase:"completed"})}if("completed"===d||"interrupted"===d||"failed"===d||"error"===d){let a=Y(d),e=c.findLast(a=>"turn-ended"===a.kind);(e?.kind!=="turn-ended"||e.status!==a)&&this.emit({kind:"turn-ended",turnId:b,status:a}),this.activeTurnId===b&&(this.activeTurnId=null)}}rememberConfirmedDeliveries(a){for(let b of $(a)){let a=S(b,"id");if(a&&Array.isArray(b.items))for(let c of b.items)this.rememberConfirmedDelivery(a,c)}}async confirmedDelivery(a){let b,c=this.confirmedDeliveries.get(a.id);if(c)return this.confirmedReceipt(a,c);try{let a=this.activeTurnId?3*this.requestTimeoutMs:this.requestTimeoutMs;b=await this.rpc("thread/read",{threadId:this.identity.threadId,includeTurns:!0},a)}catch(b){let a=U(b);if(/not materialized yet/i.test(a)&&/before first user message/i.test(a))return null;throw b}if(this.dead)throw Error(U(this.failure??"Codex app-server host is unavailable"));this.rememberConfirmedDeliveries(b);let d=this.confirmedDeliveries.get(a.id);return d?this.confirmedReceipt(a,d):null}awaitDeliveryConfirmation(a,b){let c,d,e=this.confirmedDeliveries.get(a.id);if(e)return this.confirmedReceipt(a,e),e.receipt=b,Promise.resolve(b);let f=this.pendingDeliveries.get(a.id);if(f)return f.contentDigest!==a.contentDigest?Promise.reject(Error("Codex queue entry id belongs to a different payload")):f.promise;let g=new Promise((a,b)=>{c=a,d=b}),h=setTimeout(()=>{this.pendingDeliveries.get(a.id)?.promise===g&&this.fail(Error("Codex delivery confirmation timed out; outcome is uncertain"))},this.deliveryConfirmationTimeoutMs),i={text:a.text??"",contentDigest:a.contentDigest,receipt:b,promise:g,resolve:c,reject:d,timer:h};return this.pendingDeliveries.set(a.id,i),g}confirmedReceipt(a,b){if(!(b.contentDigest?b.contentDigest===a.contentDigest:b.text===a.text))throw Error("Codex queue entry id belongs to a different payload");return b.receipt}rememberConfirmedDelivery(a,b){let c=R(b);if(!c||"userMessage"!==S(c,"type"))return;let d=S(c,"clientId");if(!d)return;let e=ab(c),f=null===e?null:(0,m.$)(e),g=f?.text??null,h=f?.contentDigest??null,i=this.confirmedDeliveries.get(d),j=this.pendingDeliveries.get(d),k={receipt:i?.receipt??j?.receipt??{outcome:"turn-started",turnId:a},text:i&&(i.text!==g||i.contentDigest!==h)?null:g,contentDigest:i&&(i.text!==g||i.contentDigest!==h)?null:h};if(this.confirmedDeliveries.set(d,k),j){this.pendingDeliveries.delete(d),clearTimeout(j.timer);try{j.resolve(this.confirmedReceipt({id:d,text:j.text,contentDigest:j.contentDigest},k))}catch(a){j.reject(a instanceof Error?a:Error(U(a)))}}}flushPreRestoreEvents(){for(let a of this.preRestoreEvents.splice(0))this.emit(a)}beginBufferedNotificationReconciliation(){this.bufferedTerminalTurnIds.clear();let a=[];for(let b of this.events){if("attention"===b.kind&&!this.attentions.has(b.id))continue;let c=aa(b);c&&a.push(c)}let b=[],c=this.activeTurnId;for(let{message:a}of this.preRestoreMessages){let d="string"==typeof a.method?a.method:null;if(!d)continue;let e=R(a.params)??{},f=a.id;if("number"==typeof f||"string"==typeof f){let a=aa({kind:"attention",id:`${d}:${String(f)}`,method:d,attention:e});a&&b.push(a);continue}let g=X(e);if("turn/started"===d&&g&&(c=g),"item/agentMessage/delta"===d){let a=aa({kind:"delta",turnId:g??c??"unknown",text:S(e,"delta")??""});a&&b.push(a)}"turn/completed"===d&&g===c&&(c=null)}let d=Math.min(a.length,b.length),e=0;for(let c=d;c>0;c-=1){let d=a.length-c;if(b.slice(0,c).every((b,c)=>b===a[d+c])){e=c;break}}this.bufferedNotificationOverlap=b.slice(0,e)}consumeBufferedNotification(a){let b=aa(a);return b&&this.bufferedNotificationOverlap[0]===b?(this.bufferedNotificationOverlap.shift(),!0):(this.bufferedNotificationOverlap=[],!1)}endBufferedNotificationReconciliation(){this.bufferedNotificationOverlap=[],this.bufferedTerminalTurnIds.clear()}flushPreRestoreMessages(a){let b=new Map($(a).flatMap(a=>{let b=S(a,"id");return b?[[b,a]]:[]}));for(let{message:a,bytes:c}of this.preRestoreMessages.splice(0)){if(this.preRestoreBytes-=c,"turn/completed"===a.method){let c=X(R(a.params)??{}),d=c?b.get(c):null;d&&this.reconcileTurnHistory(d)}if(this.acceptParsedMessage(a,!0),this.dead||this.releasing||this.released)break}this.preRestoreBytes=0}notifyStateListeners(){let a=this.currentState();for(let b of this.stateListeners)b(a)}closeSubscribers(){for(let a of this.subscribers)a.closed=!0,a.wake?.();this.subscribers.clear()}setSessionStatus(a,b){let c=b.filter(a=>a!==n.Zx);"supported"===this.imageInputSupport&&"unhosted"!==a&&"dead"!==a&&c.push(n.Zx),this.engineStatus=a,this.activeFlags=c,this.emit({kind:"session-status",status:a,...c.length>0?{activeFlags:[...c]}:{}})}emitThreadStatus(a){if("systemError"===a.type)return void this.setSessionStatus("idle",a.activeFlags);let b="notLoaded"===a.type?"unhosted":a.type;this.setSessionStatus(b,a.activeFlags)}rpc(a,b={},c=this.requestTimeoutMs){if(this.dead||this.releasing||this.released)return Promise.reject(Error("Codex app-server host is unavailable"));let d=this.nextRpcId++;return N.has(a)&&this.trackReplayEnvelopeRequest(d),new Promise((e,f)=>{let g=setTimeout(()=>{this.pending.delete(d),"thread/read"===a&&this.rememberLateThreadReadResponse(d,c);let b=Error(`${a} timed out${Q.has(a)?"; outcome is uncertain":""}`);f(b),Q.has(a)&&this.fail(b)},c);this.pending.set(d,{resolve:e,reject:f,timer:g}),this.write({jsonrpc:"2.0",id:d,method:a,params:b})})}rememberLateThreadReadResponse(a,b){let c=Date.now();for(let[a,b]of this.lateThreadReadResponses)b<=c&&this.lateThreadReadResponses.delete(a);let d=Math.max(3*b,1e3);for(this.lateThreadReadResponses.set(a,c+d);this.lateThreadReadResponses.size>32;){let a=this.lateThreadReadResponses.keys().next().value;if(void 0===a)break;this.lateThreadReadResponses.delete(a)}}consumeLateThreadReadResponse(a){let b=this.lateThreadReadResponses.get(a);return void 0!==b&&(this.lateThreadReadResponses.delete(a),b>Date.now())}notify(a,b){this.write({jsonrpc:"2.0",method:a,params:b})}write(a){try{this.child.stdin.write(`${JSON.stringify(a)}
81
- `)}catch(a){this.fail(Error(`Codex app-server stdin failed: ${U(a)}`))}}boundImageBodies(a){try{var b;let c,d;return(b={store:(a,b)=>{let c=(0,t.PF)(),[d]=c.putMany([{base64:a.toString("base64"),mime:b}]);return d?c.pathFor(d):null}},c=[],{value:(d=(a,e)=>{if("string"==typeof a){if(!e||!p.has(e))return a;let d=function(a){let b=o.exec(a.trim());if(!b)return null;let c=(0,n.CC)(b[1]);if(!c)return null;let d=Buffer.from(b[2],"base64");return d.byteLength?{data:d,mime:c}:null}(a);if(!d)return a;let g=function(a,b,c){let d=f().createHash("sha256").update(a).digest("hex"),e=null;try{e=c.store(a,b)}catch{e=null}return{type:"localImage",path:e??"",sha256:d,mime:b,bytes:a.byteLength}}(d.data,d.mime,b);return c.push({sha256:g.sha256,mime:d.mime,bytes:g.bytes}),g}if(Array.isArray(a)){let b=!1,c=a.map(a=>{let c=d(a,e);return c!==a&&(b=!0),c});return b?c:a}if(!a||"object"!=typeof a)return a;let g=!1,h={};for(let[b,c]of Object.entries(a)){let a=d(c,b);a!==c&&(g=!0),h[b]=a}return g?h:a})(a,null),captured:c}).value}catch{return a}}acceptStdout(a){let b=a;for(;b;){if(this.dead||this.releasing||this.released){this.stdoutBuffer="",this.replayReduction=null;return}b=this.replayReduction?this.feedReplayReduction(b):this.acceptPlainStdout(b)}(this.dead||this.releasing||this.released)&&(this.stdoutBuffer="",this.replayReduction=null)}acceptPlainStdout(a){this.stdoutBuffer+=a;let b=this.stdoutBuffer.indexOf("\n");for(;b>=0;){let a=this.stdoutBuffer.slice(0,b).trim();if(this.stdoutBuffer=this.stdoutBuffer.slice(b+1),Buffer.byteLength(a)>M){if(null===this.awaitedReplayEnvelopeId(a))return this.fail(Error("Codex app-server emitted an oversized JSONL frame")),"";let b=this.stdoutBuffer;if(this.stdoutBuffer="",this.replayReduction=new s(P),!this.feedReplayFrame(a))return"";return this.finishReplayReduction(),this.dead||this.releasing||this.released?"":b}if(a&&this.acceptMessage(a),this.dead||this.releasing||this.released)return this.stdoutBuffer="","";b=this.stdoutBuffer.indexOf("\n")}let c=Buffer.byteLength(this.stdoutBuffer);if(c>262144&&null!==this.awaitedReplayEnvelopeId(this.stdoutBuffer)){let a=this.stdoutBuffer;return this.stdoutBuffer="",this.replayReduction=new s(P),a}return c>M&&(this.fail(Error("Codex app-server emitted an oversized JSONL frame")),this.stdoutBuffer=""),""}feedReplayReduction(a){let b=a.indexOf("\n");return this.feedReplayFrame(-1===b?a:a.slice(0,b))&&-1!==b?(this.finishReplayReduction(),this.dead||this.releasing||this.released?"":a.slice(b+1)):""}feedReplayFrame(a){try{return this.replayReduction.feed(a),!0}catch(a){return this.replayReduction=null,this.fail(a instanceof q?a:Error(U(a))),!1}}finishReplayReduction(){let a,b=this.replayReduction;this.replayReduction=null;try{a=b.finish().trim(),Buffer.byteLength(a)>M&&(a=(function(a,b,c){let d=a,e=c.maxStringUnits,f=!1;for(;Buffer.byteLength(d)>b&&e>64;){e=Math.max(64,Math.floor(e/4));let a=new s({...c,maxStringUnits:e,...f?{maxImageStringUnits:e}:{}});a.feed(d),d=a.finish(),f=!0}return d})(a,M,P).trim())}catch(a){this.fail(a instanceof q?a:Error(U(a)));return}Buffer.byteLength(a)>M?this.fail(Error("Codex app-server emitted an oversized JSONL frame")):a&&this.acceptMessage(a)}awaitedReplayEnvelopeId(a){let b=O.exec(a.slice(0,64).trimStart());if(!b)return null;let c=Number(b[1]);return this.replayEnvelopeRequestIds.has(c)?c:null}trackReplayEnvelopeRequest(a){for(this.replayEnvelopeRequestIds.add(a);this.replayEnvelopeRequestIds.size>64;){let a=this.replayEnvelopeRequestIds.values().next().value;if(void 0===a)break;this.replayEnvelopeRequestIds.delete(a)}}acceptStderr(a){for(this.stderrTail+=a;Buffer.byteLength(this.stderrTail,"utf8")>16384;)this.stderrTail=this.stderrTail.slice(Math.max(1,Math.floor(this.stderrTail.length/4)))}acceptMessage(a){let b;try{b=R(JSON.parse(a))}catch{b=null}if(!b)return void this.fail(Error("Codex app-server emitted malformed JSON-RPC"));if("string"==typeof b.method&&!this.eventLedgerRestored){let c=Buffer.byteLength(a);return this.preRestoreEvents.length+this.preRestoreMessages.length>=256||this.preRestoreBytes+c>4194304?void this.fail(Error("Codex app-server pre-restore notification buffer exceeded its bounded capacity")):(this.preRestoreMessages.push({message:b,bytes:c}),void(this.preRestoreBytes+=c))}this.acceptParsedMessage(b)}acceptParsedMessage(a,b=!1){let c=a.id,d="string"==typeof a.method?a.method:null;if(("number"==typeof c||"string"==typeof c)&&!d){if("number"!=typeof c)return this.fail(Error("Codex app-server response id is invalid"));this.replayEnvelopeRequestIds.delete(c);let b=this.pending.get(c);if(!b&&this.consumeLateThreadReadResponse(c))return;if(!b)return this.fail(Error("Codex app-server response has no matching request"));this.pending.delete(c),clearTimeout(b.timer);let d=R(a.error);return void(d?b.reject(Error(`Codex app-server request failed: ${U(d.message??"unknown error")}`)):b.resolve(a.result))}if(!d)return this.fail(Error("Codex app-server message has no method"));let e=R(a.params)??{};if("number"==typeof c||"string"==typeof c){let a=`${d}:${String(c)}`;this.attentions.set(a,{rpcId:c,method:d,origin:"current"});let f={kind:"attention",id:a,method:d,attention:e};b&&this.consumeBufferedNotification(f)||this.emit(f);return}this.acceptNotification(d,e,b)}acceptNotification(a,b,c=!1){if("thread/realtime/started"===a){let a=this.pendingRealtimeStart;if(!a||S(b,"threadId")!==this.identity.threadId)return;a.started=!0,a.realtimeSessionId=S(b,"realtimeSessionId"),this.realtimeSessionId=a.realtimeSessionId,this.resumeVoiceStreams(),this.resolveRealtimeStart();return}if("thread/realtime/sdp"===a){let a=this.pendingRealtimeStart;return a&&S(b,"threadId")===this.identity.threadId?(a.sdp=S(b,"sdp"),a.sdp)?void this.resolveRealtimeStart():void this.rejectRealtimeStart(Error("Codex app-server returned an empty WebRTC SDP answer")):void 0}if("thread/realtime/error"===a){if(S(b,"threadId")!==this.identity.threadId)return;let a=S(b,"message")??"Codex realtime session failed";this.recordRealtimeFailure(a),this.rejectRealtimeStart(Error(a));return}if("thread/realtime/closed"===a){if(S(b,"threadId")!==this.identity.threadId)return;let a=S(b,"reason")??"Codex realtime session closed";this.recordRealtimeFailure(a,{keepExisting:!0}),this.rejectRealtimeStart(Error(a));return}let d=X(b);if("serverRequest/resolved"===a){let a=b.requestId;if("number"!=typeof a&&"string"!=typeof a)return;let c=[...this.attentions.entries()].find(([,b])=>String(b.rpcId)===String(a));if(!c)return;let d=c[1].answer;d&&(clearTimeout(d.timer),d.resolve()),this.attentions.delete(c[0]),this.emit({kind:"attention-resolved",id:c[0],resolution:d?"answered":"server-resolved"});return}if("turn/started"===a&&d){if(c){let a=this.events.some(a=>"turn-started"===a.kind&&a.turnId===d),b=this.events.some(a=>"turn-ended"===a.kind&&a.turnId===d);if(a&&(b||null!==this.activeTurnId))return}this.cancelledVoiceTurns.delete(d),this.activeTurnId=d,this.emit({kind:"turn-started",turnId:d});return}if("item/agentMessage/delta"===a){let a={kind:"delta",turnId:d??this.activeTurnId??"unknown",text:S(b,"delta")??""};c&&this.consumeBufferedNotification(a)||(this.emit(a),this.observeVoiceDelta(a.turnId,a.text));return}if(("item/started"===a||"item/completed"===a)&&"item"in b){"item/completed"===a&&d&&this.rememberConfirmedDelivery(d,b.item);let e=d??this.activeTurnId,f="item/started"===a?"started":"completed";if(c&&e){if(this.events.some(a=>"turn-ended"===a.kind&&a.turnId===e))return;let a=_(b.item);if(this.events.some(b=>"item"===b.kind&&b.turnId===e&&b.phase===f&&_(b.item)===a))return;this.events.some(a=>"turn-started"===a.kind&&a.turnId===e)||(this.activeTurnId=e,this.emit({kind:"turn-started",turnId:e}))}let g="completed"===f&&e?this.finalizeVoiceStreamItem(e,b.item):void 0;this.emit({kind:"item",turnId:e,item:this.boundImageBodies(b.item),phase:f,...void 0!==g?{voiceResponse:g}:{}}),R(b.item)?.type==="contextCompaction"&&this.acceptCompactionItem(b.item,f);return}if("turn/completed"===a&&d){let a=R(b.turn),e=Y(a?.status);if(c&&this.bufferedTerminalTurnIds.add(d),c&&this.events.some(a=>"turn-ended"===a.kind&&a.turnId===d))return;if(this.activeTurnId===d&&(this.activeTurnId=null),c&&!this.events.some(a=>"turn-started"===a.kind&&a.turnId===d)&&this.emit({kind:"turn-started",turnId:d}),"completed"!==e)this.cancelVoiceStream(d);else{let a=this.voiceStreams.get(d);a&&this.clearVoiceStreamTimer(a),this.voiceStreams.delete(d)}this.emit({kind:"turn-ended",turnId:d,status:e}),this.settlePendingCompactionsFromTerminalTurn(a,e);return}if("account/rateLimits/updated"===a)return void this.emit({kind:"limits",snapshot:b});if("thread/compacted"===a)return void this.acceptCompactedNotification(b);if("thread/status/changed"===a){let a=ad(b);a&&this.emitThreadStatus(a)}}fail(a,b=[]){if(!this.dead&&!this.released){for(let b of(this.clearVoiceStreamTimers(),this.dead=!0,this.failure=a,this.activeTurnId=null,this.rejectRealtimeStart(a),this.rejectPendingAnswers(a),this.rejectPendingDeliveries(a),this.rejectPendingCompactions(a),this.attentions.clear(),this.pending.values()))clearTimeout(b.timer),b.reject(Error(U(a)));this.pending.clear(),this.setSessionStatus("dead",b),this.closeSubscribers(),this.startFailureCleanup()}}failWithoutLedger(a){if(!this.dead&&!this.released){for(let b of(this.dead=!0,this.failure=a,this.engineStatus="dead",this.activeFlags=[],this.activeTurnId=null,this.rejectRealtimeStart(a),this.rejectPendingAnswers(a),this.rejectPendingDeliveries(a),this.rejectPendingCompactions(a),this.attentions.clear(),this.pending.values()))clearTimeout(b.timer),b.reject(Error(U(a)));this.pending.clear(),this.notifyStateListeners(),this.closeSubscribers(),this.startFailureCleanup()}}startFailureCleanup(){this.release().catch(()=>{this.released||this.failureCleanupTimer||(this.failureCleanupTimer=setTimeout(()=>{this.failureCleanupTimer=null,this.startFailureCleanup()},this.shutdownGraceMs))})}rejectPendingAnswers(a){let b=Error(U(a));for(let a of this.attentions.values())a.answer&&(clearTimeout(a.answer.timer),a.answer.reject(b),a.answer=void 0)}rejectPendingDeliveries(a){let b=Error(U(a));for(let a of this.pendingDeliveries.values())clearTimeout(a.timer),a.reject(b);this.pendingDeliveries.clear()}resolveRealtimeStart(){let a=this.pendingRealtimeStart;a?.started&&null!==a.sdp&&(this.pendingRealtimeStart=null,clearTimeout(a.timer),a.resolve({sdp:a.sdp,realtimeSessionId:a.realtimeSessionId,personaBootstrap:a.personaBootstrap}))}currentRealtimeSessionId(){return this.realtimeSessionId}lastRealtimeFailure(){return this.realtimeFailure}recordRealtimeFailure(a,b={}){b.keepExisting&&this.realtimeFailure||(this.realtimeFailure={message:a.slice(0,500),at:new Date().toISOString(),realtimeSessionId:this.realtimeSessionId})}rejectRealtimeStart(a){let b=this.pendingRealtimeStart;b&&(this.pendingRealtimeStart=null,clearTimeout(b.timer),b.reject(Error(U(a))))}}},7058:(a,b,c)=>{c.d(b,{Be:()=>s,He:()=>w,Hz:()=>x,Ul:()=>r,mR:()=>u,pk:()=>p,sY:()=>m,w8:()=>v,wK:()=>q});var d=c(73024),e=c.n(d),f=c(94284),g=c(47985),h=c(52530),i=c(28388);(0,f.E)("turn").clear(),(0,f.E)("turn-evidence-v1").clear();let j=(0,f.E)("turn-evidence-v2"),k=(0,f.E)("tail-v3"),l=(0,f.E)("head-records-v2");function m(a,b,c,d=4194304,e=41){let f=l.get(a);if(f&&f.size===b&&f.mtimeMs===c&&f.nbytes===d&&f.recordLimit===e)return{records:f.records.slice(),complete:!0};let h=(0,g.zy)(a,b,c,{maxBytes:d,lineLimit:e});if(!h.complete||!h.value)return{records:[],complete:!1};let{text:i,read:j,bytes:k}=h.value,n=i.split("\n");j<b&&!i.endsWith("\n")&&(n=n.slice(0,-1));let o=[];for(let a of n.slice(0,e)){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&o.push(a)}catch{}}l.delete(a);let p=0;for(let a of l.values())p+=a.sourceBytes;for(;l.size>0&&(l.size>=64||p+k.length>0x1000000);){let a=l.keys().next().value;if(void 0===a)break;p-=l.get(a)?.sourceBytes??0,l.delete(a)}return l.set(a,{size:b,mtimeMs:c,nbytes:d,recordLimit:e,sourceBytes:k.length,records:o}),{records:o.slice(),complete:!0}}function n(a,b){let c=`${b.authoritative?"authoritative":"activity"}:${a}`;for(j.delete(c);j.size>=4096;){let a=j.keys().next().value;if(void 0===a)break;j.delete(a)}j.set(c,b)}function o(a,b,c,d){return!c&&!!d&&"terminal"===a.state&&null!==(0,i.v)(b)}function p(a,b,c,d,e=!0){let f=`${e?"authoritative":"activity"}:${a}`,g=j.get(f);if(g&&g.size===b&&g.mtimeMs===c&&g.codex===d)return n(a,g),{turn:{...g.turn},complete:!0,composerReleased:g.composerReleased,recoveryReleased:g.recoveryReleased};let h=v(a,b,c),k=(0,i.j)(h.records,d,e),l=h.complete&&o(k,h.records,d,e);if(h.complete){n(a,{size:b,mtimeMs:c,codex:d,authoritative:e,turn:k,composerReleased:!1,recoveryReleased:l});let f=!e,g=`${f?"authoritative":"activity"}:${a}`,m=j.get(g),p=m?.size===b&&m.mtimeMs===c&&m.codex===d&&m.composerReleased,q=(0,i.j)(h.records,d,f);n(a,{size:b,mtimeMs:c,codex:d,authoritative:f,turn:q,composerReleased:p,recoveryReleased:o(q,h.records,d,f)})}return{turn:k,complete:h.complete,composerReleased:!1,recoveryReleased:l}}function q(a,b,c,d){for(let e of[`activity:${a}`,`authoritative:${a}`]){let a=j.get(e);if(a&&a.size===b&&a.mtimeMs===c&&a.codex===d)return{...a.turn}}return null}function r(a,b,c,d,e,f={}){let g=f.authoritative??!0,h=f.composerReleased??!1;(d||!g||"terminal"!==e.state)&&n(a,{size:b,mtimeMs:c,codex:d,authoritative:g,turn:{...e},composerReleased:h,recoveryReleased:!1})}function s(a,b,c,d){let e=`authoritative:${a}`,f=j.get(e);f&&f.size===b&&f.mtimeMs===c&&f.codex===d&&n(a,{...f,composerReleased:!0})}function t(a,b){return a.dev===b.dev&&a.ino===b.ino&&a.size===b.size&&a.mtimeNs===b.mtimeNs&&a.ctimeNs===b.ctimeNs}async function u(a,b=131072){let c=null;try{let d;c=await e().promises.open(a,"r");let f=await c.stat({bigint:!0});if(!f.isFile())return{integrity:"uncertain",records:[]};let g=Number(f.size);if(!Number.isSafeInteger(g))return{integrity:"uncertain",records:[]};let h=Math.min(g,b),i=g-h,j=+(i>0),k=i-j,l=Buffer.alloc(h+j),m=0;for(;m<l.length;){let a=await c.read(l,m,l.length-m,k+m);if(0===a.bytesRead)return{integrity:"uncertain",records:[]};m+=a.bytesRead}let n=await c.stat({bigint:!0}),o=await e().promises.stat(a,{bigint:!0});if(!t(f,n)||!t(n,o))return{integrity:"uncertain",records:[]};let p=l;if(i>0)if(10===l[0])p=l.subarray(1);else{let a=l.indexOf(10);if(a<0)return{integrity:"complete",prefixTruncated:!0,records:[]};p=l.subarray(a+1)}try{d=new TextDecoder("utf-8",{fatal:!0}).decode(p)}catch{return{integrity:"uncertain",records:[]}}let q=d.split("\n"),r=[];for(let a of q){let b,c=a.trim();if(c){try{b=JSON.parse(c)}catch{return{integrity:"uncertain",records:[]}}if(!b||"object"!=typeof b||Array.isArray(b))return{integrity:"uncertain",records:[]};r.push(b)}}return{integrity:"complete",prefixTruncated:i>0,records:r}}catch{return{integrity:"uncertain",records:[]}}finally{await c?.close().catch(()=>void 0)}}function v(a,b,c,d=131072){let f=k.get(a);if(f&&f.size===b&&f.mtimeMs===c&&f.nbytes===d)return{records:f.records.slice(),complete:!0,prefixTruncated:f.prefixTruncated};let g=function(a,b,c){let d=0,f="",g=!1;try{let h=e().openSync(a,"r");try{d=Math.max(0,b-c);let a=Buffer.alloc(Math.max(0,b-d)),i=0;for(;i<a.length;){let b=e().readSync(h,a,i,a.length-i,d+i);if(0===b)break;i+=b}g=i===a.length,f=a.toString("utf8",0,i)}finally{e().closeSync(h)}}catch{return{records:[],complete:!1,prefixTruncated:!1}}let h=f.split("\n");d>0&&h.length&&(h=h.slice(1));let i=[];for(let a of h){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&i.push(a)}catch{}}return{records:i,complete:g,prefixTruncated:d>0}}(a,b,d);if(!g.complete)return g;if(k.size>=64&&!k.has(a)){let a=k.keys().next().value;void 0!==a&&k.delete(a)}return k.set(a,{size:b,mtimeMs:c,nbytes:d,prefixTruncated:g.prefixTruncated,records:g.records}),{records:g.records.slice(),complete:!0,prefixTruncated:g.prefixTruncated}}function w(a,b,c,d=131072){return v(a,b,c,d).records}function x(a,b,c,d){let e=Date.now()/1e3-c;if("claude-tasks"===a&&b.endsWith(".output"))return(0,h.$w)().has(b)?{state:"live",reason:"output_held",complete:!0}:{state:e<900?"recent":"idle",reason:"output_released",complete:!0};let f=!0;if(b.endsWith(".jsonl")){let g=p(b,d,1e3*c,a.startsWith("codex"),!1),h="terminal"===g.turn.state?"done":"busy"===g.turn.state?"busy":null;if(f=g.complete,"busy"===h)return e<180?{state:"live",reason:"jsonl_turn_open",complete:f}:{state:"stalled",reason:"jsonl_turn_stalled",complete:f};if("done"===h)return{state:e<900?"recent":"idle",reason:"jsonl_turn_completed",complete:f}}return e<20?{state:"live",reason:"mtime_fresh",complete:f}:e<900?{state:"recent",reason:"mtime_recent",complete:f}:{state:"idle",reason:"mtime_old",complete:f}}},7343:(a,b,c)=>{c.d(b,{b:()=>ac,X:()=>O});var d=c(73024),e=c.n(d),f=c(51455),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(50920),l=c(14607),m=c(68574),n=c(94284),o=c(3302),p=c(89831),q=c(24534),r=c(62e3),s=c(38849);let t=(0,n.E)("needle-v2"),u=(0,n.E)("needle-tail-v1"),v=(0,n.E)("needle-tail-uuid-v1"),w=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,x=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;function y(a,b,c){let d=Buffer.allocUnsafe(c),f=0;for(;f<c;){let g=e().readSync(a,d,f,c-f,b+f);if(0===g)break;f+=g}return{bytes:f===d.length?d:Buffer.from(d.subarray(0,f)),complete:f===c}}function z(a,b){for(let c of b.toString("utf8").match(x)??[])a.add(c.toLowerCase())}function A(a){return(0,i.createHash)("sha256").update(a).digest("base64url")}function B(a,b,c){let d,f=t.get(a);f&&f.hits&&f.sizes||(f={hits:f?.hits??{},scanned:f?.scanned??{},sizes:f?.sizes??{},observations:f?.observations??{},boundaries:f?.boundaries??{}},t.set(a,f));let g=Buffer.from(a),h=Math.max(0,g.length-1);try{d=e().statSync(b)}catch{return!1}let i=d.size,j=f.scanned[b]??0,k=f.sizes[b],l=f.observations[b],m=f.boundaries[b],n=!!(j>0&&!l);if(l)if((n||=l.dev!==d.dev||l.ino!==d.ino)||!(i>l.size))n||(n||=i!==l.size||d.mtimeMs!==l.mtimeMs);else if(!m||m.offset+m.bytes!==j||j>l.size)n=!0;else{if(c&&c.remaining<m.bytes)return!1;let a=null;try{a=e().openSync(b,"r");let d=y(a,m.offset,m.bytes);c&&(c.remaining-=d.bytes.length),n=!d.complete||A(d.bytes)!==m.fingerprint}catch{return!1}finally{null!==a&&e().closeSync(a)}}if((n||void 0!==k&&i<k)&&(j=0,f.scanned[b]=0,delete f.hits[b],delete f.boundaries[b],m=void 0),f.sizes[b]=i,f.hits[b])return!0;if(i<=j)return!1;let o=void 0===c?1/0:Math.min(Math.max(0,c.remaining),1048576);if(o<=0)return!1;try{let a=e().openSync(b,"r");try{let k=Math.max(0,j-h),l=Buffer.alloc(0),m=Buffer.alloc(0),n=!1,p=0;for(;k<i&&p<o;){let b=Math.min(1048576,Math.ceil(o-p),i-k),c=Buffer.alloc(b),d=e().readSync(a,c,0,b,k);if(!d)break;p+=d;let f=Buffer.concat([l,c.subarray(0,d)]);if(m=Buffer.concat([m,c.subarray(0,d)]).subarray(-65536),f.includes(g)){n=!0;break}l=h?c.subarray(Math.max(0,d-h),d):Buffer.alloc(0),k+=d}if(void 0!==c&&Number.isFinite(p)&&(c.remaining-=p),f.scanned[b]=n||k>=i?i:k,f.observations[b]={dev:d.dev,ino:d.ino,size:i,mtimeMs:d.mtimeMs},!n){let a=Buffer.from(m);f.boundaries[b]={offset:f.scanned[b]-a.length,bytes:a.length,fingerprint:A(a)}}return n&&(f.hits[b]=!0),n}finally{e().closeSync(a)}}catch{return!1}}var C=c(52530),D=c(69882);let E=(0,n.E)("sid-slug"),F=(0,n.E)("bgcmd"),G=(0,n.E)("background-index-v1"),H=(0,n.E)("chain-uuid"),I=(0,n.E)("compact-links-v1"),J=(0,n.E)("lineage-store-state-v1"),K="bg-commands.json",L="compact-chains.json";function M(){let a=(0,k.BQ)(K),b=J.get(a);return b||(b={backgroundLoaded:!1,backgroundDirty:!1,compactLoaded:!1,compactDirty:!1},J.set(a,b)),b}function N(a,b){let c=null;try{return e().mkdirSync(h().dirname(a),{recursive:!0,mode:448}),e().chmodSync(h().dirname(a),448),c=h().join(h().dirname(a),`.${h().basename(a)}.${process.pid}.${j().randomUUID()}.tmp`),e().writeFileSync(c,JSON.stringify(b)+"\n",{encoding:"utf8",mode:384}),e().renameSync(c,a),!0}catch{if(c)try{e().unlinkSync(c)}catch{}return!1}}function O(a){for(let b of a){if(!0!==b.derivationComplete||"claude-tasks"!==b.root||!b.parent||!b.cmd&&!b.cmdDesc)continue;let a=(0,r.Y8)(D.GH["claude-tasks"],b.path),c=a?.[2];c&&S(F,c,{command:b.cmd??"",description:b.cmdDesc??"",source:b.parent})}}async function P(a){let b=new Map;await (0,m.pV)(a,a=>{if("claude-projects"!==a.root)return;let c=a.name.split(h().sep);if(2!==c.length)return;let d=c[0]??"";b.set(d,(b.get(d)??[]).concat(a))});let c=(a,b,c)=>{let d=new Map(c.map(a=>[a.path,a])),e=new Set;for(let c=a;c?.parent&&!e.has(c.path);c=d.get(c.parent))if(e.add(c.path),c.parent===b.path)return!0;return!1};await (0,m.pV)([...b.values()],async a=>{let b=[...a].sort((a,b)=>a.mtime-b.mtime);await (0,m.pV)(b,d=>{var f,g;let h=I.get(d.path),i=h?b.find(a=>a.path===h&&a!==d&&!a.parent):void 0;if(i&&!c(d,i,a)){i.parent=d.path;return}let j=function(a,b){let c=H.get(a);if(c&&(null!==c[1]||c[0]>=524288||c[0]>=b))return c[1];let d=null,f=0;try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,524288));for(let b of(f=e().readSync(c,a,0,a.length,0),a.toString("utf8",0,f).split("\n")))if(b.includes('"compact_boundary"')){d=b.match(/"logicalParentUuid"\s*:\s*"([0-9a-f-]{36})"/)?.[1]??null;break}}finally{e().closeSync(c)}}catch{return null}return H.set(a,[f,d]),d}(d.path,d.size);if(!j)return;let k=b.filter(a=>a!==d&&!a.parent).sort((a,b)=>b.mtime-a.mtime),l="live"===d.activity||"recent"===d.activity,m=k.find(a=>(function(a,b){let c;try{c=e().statSync(b)}catch{return!1}if(w.test(a))return function(a,b,c){let d=a.toLowerCase(),f=v.get(b);if(f?.dev===c.dev&&f.ino===c.ino&&f.size===c.size&&f.mtimeMs===c.mtimeMs){if(f.uuids.has(d))return!0;if(f.complete)return!1;let a=Math.min(c.size,1048576),g=a-Math.min(c.size,131072),h=null;try{h=e().openSync(b,"r");let i=y(h,c.size-a,g);return z(f.uuids,Buffer.concat([i.bytes,f.boundary])),i.complete&&(f.complete=!0,f.boundary=Buffer.alloc(0)),f.uuids.has(d)}catch{return!1}finally{null!==h&&e().closeSync(h)}}let g=new Set,h=Math.min(c.size,131072),i=null;try{i=e().openSync(b,"r");let a=y(i,c.size-h,h);z(g,a.bytes);let f=Math.min(c.size,1048576),j=f-h,k={dev:c.dev,ino:c.ino,size:c.size,mtimeMs:c.mtimeMs,uuids:g,complete:a.complete&&0===j,boundary:Buffer.from(a.bytes.subarray(0,Math.min(a.bytes.length,35)))};if(v.set(b,k),g.has(d)||k.complete)return g.has(d);let l=y(i,c.size-f,j);return z(g,Buffer.concat([l.bytes,k.boundary])),a.complete&&l.complete&&(k.complete=!0,k.boundary=Buffer.alloc(0)),g.has(d)}catch{return!1}finally{null!==i&&e().closeSync(i)}}(a,b,c);let d=`${a}\u0000${b}`,f=u.get(d);if(f?.hit)return!0;if(f?.size===c.size&&f.mtimeMs===c.mtimeMs)return!1;let g=Buffer.from(a),h=Math.min(c.size,131072),i=null;try{i=e().openSync(b,"r");let a=y(i,c.size-h,h);if(a.bytes.includes(g))return u.set(d,{size:c.size,mtimeMs:c.mtimeMs,hit:!0}),!0;let f=a.complete,j=!1,k=Math.min(c.size,1048576),l=k-h;if(l>0){let b=y(i,c.size-k,l);f&&=b.complete,j=Buffer.concat([b.bytes,a.bytes]).includes(g)}return(j||f)&&u.set(d,{size:c.size,mtimeMs:c.mtimeMs,hit:j}),j}catch{return!1}finally{null!==i&&e().closeSync(i)}})(j,a.path));m&&(f=d.path)!==(g=m.path)&&I.get(f)!==g&&(S(I,f,g),M().compactDirty=!0);let n=m??(l?k.find(a=>"live"!==a.activity):void 0);n&&!c(d,n,a)&&(n.parent=d.path)})})}async function Q(a,b,c){let d;try{d=await c(()=>(0,f.readdir)(a,{withFileTypes:!0}))}catch{return[]}return(await Promise.all(d.map(async d=>{let e=h().join(a,d.name);return d.isDirectory()?Q(e,b,c):d.isFile()&&b(e)?[e]:[]}))).flat()}async function R(a,b,c){let d=D.GH["claude-projects"],f=c??E.get(a)??null;if(!f){let c=(await Q(d,b=>h().basename(b)===a+".jsonl",b))[0];if(!c)return[null,[]];f=h().basename(h().dirname(c)),E.set(a,f)}let g=h().join(d,f,a+".jsonl"),i=h().join(d,f,a,"subagents"),j=(await Q(i,a=>h().basename(a).startsWith("agent-")&&a.endsWith(".jsonl"),b)).sort();return[e().existsSync(g)?g:null,j]}function S(a,b,c){for(a.delete(b),a.set(b,c);a.size>2e4;){let b=a.keys().next().value;if(void 0===b)break;a.delete(b)}}function T(a,b){if(b.includes('"tool_use"'))try{let c=JSON.parse(b);for(let b of(0,s.Em)((0,s.xK)(c.message)?.content)){if("tool_use"!==b.type||"string"!=typeof b.id)continue;let c=(0,s.xK)(b.input)??{},d="string"==typeof c.command?c.command:"",e="string"==typeof c.description?c.description:"";(d||e)&&S(a.toolUses,b.id,{command:d,description:e})}}catch{}if(b.includes("background with ID: ")){let c=b.match(/"tool_use_id"\s*:\s*"([^"]+)"/)?.[1];if(c)for(let d of b.matchAll(/background with ID: ([A-Za-z0-9_-]+)/g)){let b=d[1];b&&S(a.taskToolUses,b,c)}}for(let[b,c]of a.taskToolUses){let d=a.toolUses.get(c);d&&(d.command||d.description)&&S(a.commands,b,d)}}let U=(0,k.BQ)("codex-lineage.json"),V=(0,n.E)("codex-lineage"),W=!1,X=!1;function Y(){if(W)return;W=!0;let a=(0,s.Vh)(U);if(a&&"object"==typeof a&&!Array.isArray(a)){for(let[b,c]of Object.entries(a))"string"!=typeof c||V.has(b)||V.set(b,c);V.size!==Object.keys(a).length&&(X=!0)}}function Z(a,b){if(V.get(a)!==b){for(V.set(a,b);V.size>2e4;){let a=V.keys().next().value;if(void 0===a)break;V.delete(a)}X=!0}}function $(){if(X){X=!1;try{e().mkdirSync(h().dirname(U),{recursive:!0}),e().writeFileSync(U,JSON.stringify(Object.fromEntries(V)))}catch{}}}async function _(a,b){Y();let c=new Map;await (0,m.pV)(a,a=>{if("codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return;let b=(0,p.Gz)(a.path);b&&c.set(b,a.path)}),await (0,m.pV)(a,a=>{if("codex-sessions"!==a.root||a.parent)return;let d=void 0===a.nativeParentThreadId?(0,p.S)(a.path,a.size,1e3*a.mtime):a.nativeParentThreadId,e=d?c.get(d)??null:null;e&&e!==a.path&&(a.parent=e,b&&Z(a.path,e))}),b&&$()}async function aa(a,b){Y();let c=a.filter(a=>"codex-sessions"===a.root&&!a.parent);if(0===c.length)return;let d=new Map;await (0,m.pV)(a,a=>{("claude-projects"===a.root||"codex-sessions"===a.root)&&null!==a.pid&&d.set(a.pid,a.path)}),await (0,m.pV)(c,a=>{let c=null,e=new Set;for(let b=a.pid;null!==b&&!e.has(b)&&(e.add(b),!(e.size>15));b=(0,C.Ib)(b)){let e=d.get(b);if(e&&e!==a.path){c=e;break}}if(c)a.parent=c,b&&Z(a.path,c);else{let b=V.get(a.path);b&&(a.parent=b)}}),b&&$()}async function ab(a,b){let c=new Map(a.map(a=>[a.path,a]));await (0,m.pV)(a,a=>{if(a.parent||"claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl")||a.path.includes(h().sep+"subagents"+h().sep))return;let d=(0,l._b)(a.path);if(!d&&null!==a.pid){let c=new Set;for(let b=a.pid;null!==b&&!c.has(b)&&(c.add(b),!(c.size>15||(d=(0,l.N0)(b))));b=(0,C.Ib)(b));b&&d&&d!==a.path&&(0,l.A6)(a.path,d)}d&&d!==a.path&&c.has(d)&&(a.parent=d,a.handoff=!0)}),b&&(0,l.OA)()}async function ac(a,b={}){let c,d,f=!1!==b.persist;!function(){let a=M();if(a.backgroundLoaded)return;a.backgroundLoaded=!0;let b=(0,s.Vh)((0,k.BQ)(K));if(b?.version!==1)return;let c=(0,s.xK)(b.commands);if(c)for(let[a,b]of Object.entries(c)){let c=(0,s.xK)(b);c&&"string"==typeof c.command&&"string"==typeof c.description&&"string"==typeof c.source&&(c.command||c.description)&&(F.has(a)||S(F,a,{command:c.command,description:c.description,source:c.source}))}}(),function(){let a=M();if(a.compactLoaded)return;a.compactLoaded=!0;let b=(0,s.Vh)((0,k.BQ)(L));if(b?.version!==1)return;let c=(0,s.xK)(b.links);if(c)for(let[a,b]of Object.entries(c))"string"!=typeof b||b===a||I.has(a)||S(I,a,b)}();let g=(c=0,d=[],async function(a){c>=48&&await new Promise(a=>d.push(a)),c+=1;try{return await a()}finally{c-=1,d.shift()?.()}}),i={remaining:262144},j={remaining:262144},l=new Map(a.map(a=>[a.path,a])),n=new Map;await (0,m.pV)(a,a=>{if("claude-tasks"!==a.root)return;let b=(0,r.Y8)(D.GH["claude-tasks"],a.path);b&&n.set(a,b)});let p=n.size;if(await (0,m.pV)(a,async a=>{if("claude-projects"===a.root){let b=(0,o.Zg)(a.name);if(b){let[c,d]=await R(b.parentSessionId,g,b.slug);a.parent=c;let e=(0,s.Vh)(a.path.slice(0,-6)+".meta.json")??{},f=(0,s.r$)(e.toolUseId),h=Number(e.spawnDepth??0);if(f&&h>=1){let b=function(a,b,c){if(void 0===c){for(let c of b)if(c&&B(a,c))return c;return null}let d=b.reduce((a,b)=>a+ +!!b,0);for(let e of b){if(!e)continue;let b=Math.ceil(Math.max(0,c.remaining)/d),f={remaining:b},g=B(a,e,f);if(Number.isFinite(b)&&(c.remaining=Math.max(0,c.remaining-(b-f.remaining))),d-=1,g)return e}return null}(f,d.filter(b=>b!==a.path).concat(c?[c]:[]),j);b&&(a.parent=b)}}}else if("claude-tasks"===a.root){let b=n.get(a);if(!b)return;let[c,d,f]=b,[j,k]=await R(d,g,c),l=Math.ceil(i.remaining/p),m={remaining:l},o=function(a,b,c,d){let f=F.get(a);if(f)return f;let g=null;for(let f of new Set([...b,...c])){if(!f)continue;let b=function(a,b,c){let d;try{d=e().statSync(b)}catch{return null}let f=G.get(b);if(!f||d.size<f.size||d.size===f.size&&d.mtimeMs!==f.mtimeMs){var g;f={size:g=d.size,mtimeMs:d.mtimeMs,offset:0,carry:Buffer.alloc(0),toolUses:new Map,taskToolUses:new Map,commands:new Map,complete:0===g},G.set(b,f)}else f.size=d.size,f.mtimeMs=d.mtimeMs,f.complete=f.offset>=d.size;let h=f.commands.get(a);if(h)return{...h,source:b};if(!f.complete&&c.remaining>0){let g=null;try{for(g=e().openSync(b,"r");f.offset<d.size&&c.remaining>0&&!f.commands.has(a);){let a=Math.min(65536,c.remaining,d.size-f.offset),b=Buffer.allocUnsafe(a),h=e().readSync(g,b,0,a,f.offset);if(0===h)break;f.offset+=h,c.remaining-=h,function(a,b){let c=a.carry.length?Buffer.concat([a.carry,b]):b,d=0;for(let b=c.indexOf(10,d);b>=0;b=c.indexOf(10,d))T(a,c.toString("utf8",d,b)),d=b+1;a.carry=d<c.length?Buffer.from(c.subarray(d)):Buffer.alloc(0)}(f,h===b.length?b:Buffer.from(b.subarray(0,h)))}f.complete=f.offset>=d.size,f.complete&&f.carry.length>0&&T(f,f.carry.toString("utf8"))}catch{}finally{null!==g&&e().closeSync(g)}}let i=f.commands.get(a);return i?{...i,source:b}:f.taskToolUses.has(a)?{command:"",description:"",source:b}:null}(a,f,d);if(b){if(b.command||b.description)return(F.get(a)?.command!==b.command||F.get(a)?.description!==b.description||F.get(a)?.source!==b.source)&&(S(F,a,b),M().backgroundDirty=!0),b;g??=b}}return g}(f,(j?[j]:[]).concat(k),function(a,b){let c,d=h().join(D.GH["claude-projects"],a);try{c=e().readdirSync(d,{withFileTypes:!0})}catch{return[]}let f=[];for(let a of c){if(!a.isFile()||!a.name.endsWith(".jsonl")||a.name===b+".jsonl")continue;let c=h().join(d,a.name);try{let a=e().statSync(c);if(a.size>0x4000000)continue;f.push({pathname:c,mtime:a.mtimeMs})}catch{continue}}return f.sort((a,b)=>b.mtime-a.mtime).slice(0,8).map(a=>a.pathname)}(c,d),m);if(i.remaining-=l-m.remaining,p-=1,o){a.parent=o.source,a.cmd=o.command,a.cmdDesc=o.description;let b=o.description||o.command;b&&(a.title=b.split(/\s+/).join(" ").slice(0,120))}else a.parent=j,a.title="Background task "+f,a.cmd="",a.cmdDesc=""}}),await _(a,f),await aa(a,f),await ab(a,f),await P(a),await (0,m.pV)(a,a=>{a.parent&&l.has(a.parent)?a.project=(a=>{let b=new Set,c=a;for(;!b.has(c.path);){b.add(c.path);let a=l.get(c.parent??"");if(!a)return c.project;c=a}return a.project})(a):a.parent=null}),f){let a;!function(){let a=M();if(!a.backgroundDirty)return;let b=Object.fromEntries([...F].filter(([,a])=>a.command||a.description));N((0,k.BQ)(K),{version:1,commands:b})&&(a.backgroundDirty=!1)}(),(a=M()).compactDirty&&N((0,k.BQ)(L),{version:1,links:Object.fromEntries(I)})&&(a.compactDirty=!1),(0,q.Oc)()}}},7461:(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}},8164:(a,b,c)=>{function d(a,b){let c=RegExp(`^${b}:\\s+(\\d+)\\s*kB`,"m").exec(a);if(!c)return null;let d=Number(c[1]);return Number.isFinite(d)?1024*d:null}function e(a){let b=d(a,"MemTotal"),c=d(a,"MemAvailable");if(null===b||null===c||b<=0)return null;let e=d(a,"SwapTotal")??0,f=d(a,"SwapFree")??e;return{ramTotal:b,ramAvailable:c,swapTotal:e,swapUsed:Math.max(0,e-f)}}function f(a){return{rssBytes:d(a,"VmRSS")??0,swapBytes:d(a,"VmSwap")??0}}function g(a){let b=Number(/page size of (\d+) bytes/.exec(a)?.[1]);if(!Number.isFinite(b)||b<=0)return null;let c=b=>{let c=RegExp(`^${b}:\\s+(\\d+)\\.?`,"m").exec(a);return c?Number(c[1]):null},d=c("Pages free"),e=c("Pages inactive");return null===d||null===e?null:(d+e+(c("Pages purgeable")??0))*b}c.d(b,{CT:()=>k,Lc:()=>g,NW:()=>e,mO:()=>l,sW:()=>f,yh:()=>j});let h=/([\d.]+)\s*([KMGT])/;function i(a){let b=h.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isFinite(c)?Math.round(c*({K:1024,M:1048576,G:0x40000000,T:0x10000000000})[b[2]]):null}function j(a){let b=/total\s*=\s*(\S+)/.exec(a)?.[1],c=/used\s*=\s*(\S+)/.exec(a)?.[1];if(!b||!c)return null;let d=i(b),e=i(c);return null===d||null===e?null:{swapTotal:d,swapUsed:e}}function k(a){let b=new Map;for(let c of a.split("\n")){let a=/^\s*(\d+)\s+(\d+)\s*$/.exec(c);a&&b.set(Number(a[1]),1024*Number(a[2]))}return b}function l(a,b){let c=new Map;for(let[a,d]of b){if(a===d)continue;let b=c.get(d);b?b.push(a):c.set(d,[a])}let d=new Set([a]),e=[],f=[a];for(;f.length;){let a=f.pop();for(let b of(e.push(a),c.get(a)??[]))d.has(b)||(d.add(b),f.push(b))}return e}},8663:(a,b,c)=>{function d(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function e(a){return"string"==typeof a?a:""}function f(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>{if("string"==typeof a)return a;let b=d(a),c=e(b?.type);return"text"===c||"input_text"===c||"output_text"===c?e(b?.text):""}).join(""):""}function g(a,b){let c=d(a);if(!c)return null;let g=d(c.message),h=e(c.type),i=e(c.role)||e(g?.role);if("agentMessage"!==h&&"agent_message"!==h&&"assistant"!==h&&("message"!==h||"assistant"!==i))return null;let j=("string"==typeof c.text?c.text:"")||f(c.content)||f(g?.content);return j?{responseId:e(c.id)||e(c.uuid)||e(g?.id)||b,text:j}:null}function h(a){return Array.isArray(a)?a.flatMap(a=>{let b=d(a),c=e(b?.turnId),f=Array.isArray(b?.responses)?b.responses.flatMap(a=>{let b=d(a),c=e(b?.responseId);return c&&"string"==typeof b?.text?[{responseId:c,text:b.text}]:[]}):[];if(!c||0===f.length)return[];let g=e(b?.sourceTurnId),h=d(b?.streamChunk),i=h?.index,j=h?.startOffset,k=h?.endOffset,l=g&&Number.isInteger(i)&&Number.isInteger(j)&&Number.isInteger(k)&&i>=0&&j>=0&&k>j;return[{deliveryId:`voice:${JSON.stringify([c,f.map(a=>a.responseId)])}`,turnId:c,responses:f,ready:b?.ready===!0,...l?{sourceTurnId:g,streamChunk:{index:i,startOffset:j,endOffset:k}}:{}}]}):[]}function i(a){let b=`voice-stream:${a.sourceTurnId}:${a.chunkIndex}:${a.startOffset}:${a.endOffset}`,c=`${b}:response`;return h([{deliveryId:"derived",turnId:b,sourceTurnId:a.sourceTurnId,streamChunk:{index:a.chunkIndex,startOffset:a.startOffset,endOffset:a.endOffset},responses:[{responseId:c,text:a.text}],ready:!0}])[0]}function j(a,b,c){if(!Number.isInteger(b)||b<0||b>a.length)throw Error("voice delivery offset is invalid");let d=a.charCodeAt(b),e=a.charCodeAt(b-1);if(b>0&&d>=56320&&d<=57343&&e>=55296&&e<=56319)throw Error("voice delivery offset splits a Unicode scalar");if(!Number.isInteger(c)||c<4)throw Error("voice delivery chunk size is invalid");if(b===a.length)return null;let f=b,g=0;for(;f<a.length;){let d=a.codePointAt(f),e=d<=127?1:d<=2047?2:d<=65535?3:4;if(f>b&&g+e>c)break;g+=e,f+=d>65535?2:1}return f>b?{text:a.slice(b,f),nextOffset:f}:null}c.d(b,{Im:()=>h,N5:()=>i,_t:()=>j,mT:()=>g})},10456:(a,b,c)=>{c.d(b,{J0:()=>E,NE:()=>t,O:()=>J,O$:()=>K,Sq:()=>I,Ut:()=>P,b0:()=>M,hg:()=>R,m1:()=>r,vD:()=>N,yG:()=>Q,yN:()=>O,yX:()=>L});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(62142),l=c(14071);let m=/^[a-z0-9][a-z0-9-]{0,31}$/,n="default",o=["skills","prompts","config.toml","AGENTS.md","memories","rules"],p=null,q=new Set;class r extends Error{constructor(a){super(`unknown Codex account: ${a}`),this.name="UnknownAccountError"}}class s extends Error{constructor(){super("account label must contain visible text and be at most 80 characters"),this.name="InvalidAccountLabelError"}}class t extends Error{constructor(){super("Codex account registry is corrupt; repair or remove it before changing accounts"),this.name="CorruptCodexAccountsError"}}function u(){return i().resolve(process.env.LLV_CODEX_HOME||i().join(g().homedir(),".codex"))}function v(){return i().join(i().dirname((0,j.Pn)()),"accounts","codex")}function w(){return(0,j.BQ)("codex-accounts.json")}function x(){return{version:1,active:n,accounts:[],retired:[]}}function y(a,b){q.has(a)||(q.add(a),console.error(`[codex accounts] ${b}`))}function z(a){return i().join(v(),a)}function A(a,b=!1){if(!m.test(a)||a===n)return!1;let c=i().resolve(v()),d=i().resolve(z(a));if(i().dirname(d)!==c)return!1;try{let a=e().lstatSync(c),b=e().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink()||!b.isDirectory()||b.isSymbolicLink()||(63&b.mode)!=0)return!1;let f=e().realpathSync(c);return i().dirname(e().realpathSync(d))===f}catch{return!b}}function B(){let a,b=w(),c=`${b}:${function(a){try{let b=e().statSync(a);return`${b.mtimeMs}:${b.size}`}catch{return"missing"}}(b)}`;if(p?.key===c)return p.loaded;try{a=e().existsSync(b)?function(a,b){if(!a||"object"!=typeof a)return y(b,"registry is invalid; serving the default account"),{registry:x(),corrupt:!0};if(1!==a.version||"string"!=typeof a.active||!Array.isArray(a.accounts)||void 0!==a.retired&&!Array.isArray(a.retired))return y(b,"registry has an unsupported shape; serving the default account"),{registry:x(),corrupt:!0};let c=new Set,d=[],e=!1;for(let f of a.accounts){if(!(f&&"object"==typeof f&&"string"==typeof f.id&&"string"==typeof f.label&&"managed"===f.kind&&"number"==typeof f.createdAt&&(void 0===f.loginPane||null===f.loginPane||"object"==typeof f.loginPane&&"string"==typeof f.loginPane.paneId&&"string"==typeof f.loginPane.windowName&&(void 0===f.loginPane.startedAt||"number"==typeof f.loginPane.startedAt)))||c.has(f.id)||!A(f.id)){y(`${b}:${"object"==typeof f&&f?"invalid-account":"invalid-entry"}`,"ignored an invalid managed account record"),e=!0;continue}c.add(f.id),d.push({id:f.id,label:f.label,kind:"managed",createdAt:f.createdAt,loginPane:f.loginPane?{...f.loginPane,startedAt:f.loginPane.startedAt??0}:null})}let f=[];for(let d of a.retired??[]){if(!(d&&"object"==typeof d&&"string"==typeof d.id&&"string"==typeof d.label&&"number"==typeof d.retiredAt)||c.has(d.id)||!A(d.id)){y(`${b}:invalid-retired`,"ignored an invalid retired account record"),e=!0;continue}c.add(d.id),f.push({id:d.id,label:d.label,retiredAt:d.retiredAt})}return{registry:{version:1,active:a.active,accounts:d,retired:f},corrupt:e}}(JSON.parse(e().readFileSync(b,"utf8")),c):{registry:x(),corrupt:!1}}catch{y(c,"registry cannot be read; serving the default account"),a={registry:x(),corrupt:!0}}return p={key:c,loaded:a},a}function C(){let a=B();if(a.corrupt)throw new t;return a.registry}function D(a){return(0,l.oV)(()=>{let b=`${w()}.lock`,c=Date.now();for(e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});;){let d;try{d=e().openSync(b,"wx",384)}catch(a){if("EEXIST"!==a.code)throw a;try{if(Date.now()-e().statSync(b).mtimeMs>3e4){e().rmSync(b,{force:!0});continue}}catch{continue}if(Date.now()-c>=5e3)throw Error("Codex account registry is busy; retry shortly");Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,10);continue}try{return e().writeFileSync(d,`${process.pid}
82
- `,"utf8"),a()}finally{e().closeSync(d),e().rmSync(b,{force:!0})}}})}function E(){return B().corrupt}function F(a){let b=w();e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${Date.now()}.tmp`);try{e().writeFileSync(c,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384}),e().renameSync(c,b),p=null}finally{e().rmSync(c,{force:!0})}}function G(a){try{return e().statSync(i().join(a,"auth.json")).isFile()}catch{return!1}}function H(a){let b=z(a.id);return{id:a.id,label:a.label,kind:"managed",home:b,sessionsDir:i().join(b,"sessions"),authPresent:G(b),loginPane:a.loginPane??null,createdAt:a.createdAt}}function I(){let a;return[{id:n,label:"Main",kind:"legacy",home:a=u(),sessionsDir:i().join(a,"sessions"),authPresent:G(a),loginPane:null,createdAt:0},...B().registry.accounts.map(H)]}function J(){let a=B().registry.active;return I().some(b=>b.id===a)?a:n}function K(a){let b=a??J(),c=I().find(a=>a.id===b);if(!c)throw new r(b);return{id:c.id,kind:c.kind,home:c.home,sessionsDir:c.sessionsDir}}function L(a){return I().some(b=>"managed"===b.kind&&b.home===a)}function M(a){D(()=>{p=null;let b=C();if(!I().some(b=>b.id===a))throw new r(a);F({...b,active:a})})}function N(){return[...new Set([...I().map(a=>a.sessionsDir),...B().registry.retired.map(a=>i().join(z(a.id),"sessions"))])]}function O(a){let b;try{b=e().realpathSync(a)}catch{return null}for(let a of I())try{let c=e().realpathSync(a.sessionsDir);if(b.startsWith(c+i().sep))return a.home}catch{continue}return null}function P(a){let b=a.trim();if(!b||b.length>80||/[\u0000-\u001f\u007f]/.test(b))throw new s;return D(()=>{p=null;let a=C(),c=function(a,b){let c=a.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"account";for(let a=0;;a+=1){let d=0===a?c:`${c.slice(0,32-String(a).length-1)}-${a}`;if(m.test(d)&&d!==n&&!b.has(d)&&!e().existsSync(z(d)))return d}}(b,new Set([...I().map(a=>a.id),...a.retired.map(a=>a.id)])),d=z(c),f=!1;try{for(let a of(e().mkdirSync(i().dirname(d),{recursive:!0,mode:448}),e().mkdirSync(d,{recursive:!1,mode:448}),f=!0,e().chmodSync(d,448),o))e().symlinkSync(i().join(u(),a),i().join(d,a));e().mkdirSync(i().join(d,"plugins"),{mode:448}),e().symlinkSync(i().join(u(),"plugins","cache"),i().join(d,"plugins","cache"));let g={id:c,label:b,kind:"managed",createdAt:Date.now(),loginPane:null};return F({...a,accounts:[...a.accounts,g]}),H(g)}catch(a){throw f&&e().rmSync(d,{recursive:!0,force:!0}),a}})}function Q(a,b){D(()=>{p=null;let c=C(),d=c.accounts.findIndex(b=>b.id===a);if(d<0)throw new r(a);let e=[...c.accounts];e[d]={...e[d],loginPane:b},F({...c,accounts:e})})}function R(a,b,c,d=Date.now()){if(a)return{state:"authenticated",clear:null!==b};if(!b)return{state:"idle",clear:!1};let e=d-b.startedAt<15e3;return c?c.windowName!==b.windowName?{state:"idle",clear:!0}:(0,k.g2)(c.command)?e?{state:"pending",clear:!1}:{state:"idle",clear:!0}:{state:"pending",clear:!1}:e?{state:"pending",clear:!1}:{state:"idle",clear:!0}}},10508:(a,b,c)=>{c.d(b,{J8:()=>n,Sn:()=>l,V_:()=>m,if:()=>j,uc:()=>k});var d=c(73024),e=c.n(d),f=c(2496),g=c(7058),h=c(38849),i=c(98918);function j(a){return k((0,g.He)(a.path,a.size,1e3*a.mtime),a.root,1e3*a.mtime)}function k(a,b,c){for(let d of[...a].reverse()){let a=Date.parse(String(d.timestamp??""))||c;if("codex-sessions"===b){let b=(0,h.xK)(d.payload)??{},c=(0,h.r$)(b.type);if("task_complete"===c){let c=(0,h.r$)(b.last_agent_message)?.trim();if(c)return{text:c,ts:a}}if("agent_message"===c)return{text:(0,h.r$)(b.message)??"",ts:a};if("message"===c&&"assistant"===b.role){let c=(0,h.Em)(b.content).map(a=>(0,h.r$)(a.text)??(0,h.r$)(a.input_text)??"").join("\n").trim();if(c)return{text:c,ts:a}}}if("claude-projects"===b&&"assistant"===d.type){let b=(0,h.Em)((0,h.xK)(d.message)?.content).filter(a=>"text"===a.type).map(a=>(0,h.r$)(a.text)??"").join("\n").trim();if(b)return{text:b,ts:a}}}return null}function l(a){let b=a.match(f.HU)?.[1];if(!b)return null;let c=(0,f.wV)(a,null),d=c?.findings.length??0,e=d>0||"REQUEST_CHANGES"!==b?d:(0,f.p9)(a);return{verdict:b,findingsCount:e,content:(0,i.Sn)(b,a)}}function m(a){if(!a.findingsPath)return null;try{return l(e().readFileSync(a.findingsPath,"utf8"))}catch{return null}}function n(a,b,c=a.reviewerRole?.engine??null){if(!a.reviewerPath)return null;let d=b.get(a.reviewerPath)??function(a,b){try{let c=e().statSync(a);return{path:a,root:"claude"===b||!b&&a.includes("/.claude/projects/")?"claude-projects":"codex-sessions",size:c.size,mtime:c.mtimeMs/1e3}}catch{return null}}(a.reviewerPath,c);if(!d)return null;let f=j(d);return f?l(f.text):null}},13818:(a,b,c)=>{c.d(b,{DQ:()=>l,WF:()=>j,cM:()=>e.cM,cf:()=>m,n$:()=>k});var d=c(31973);c(30277),c(6949),c(32644),c(33353);var e=c(29966);function f(a,b){return{kind:"codex-app-server",endpoint:a.endpoint,process:null===a.pid?null:{pid:a.pid,startIdentity:a.processStartIdentity},eventCursor:a.eventCursor,protocolVersion:a.protocolVersion,writerClaimEpoch:b,activeTurnRef:a.activeTurnRef,pendingAttention:a.pendingAttention,activeFlags:a.activeFlags}}function g(a,b){return{kind:"claude-broker",endpoint:a.endpoint,process:null===a.pid?null:{pid:a.pid,startIdentity:a.processStartIdentity},eventCursor:a.eventCursor,protocolVersion:a.protocolVersion,writerClaimEpoch:b,activeTurnRef:a.activeTurnRef,pendingAttention:a.pendingAttention,activeFlags:a.activeFlags}}function h(a,b){return a.length===b.length&&a.every((a,c)=>a===b[c])}async function i(a,b,c,d,e,f,g,i){let j;c.setWriterFence(()=>a.ownsStructuredHostClaim(b,d,e));let k=(c,h=!1)=>{let i=g(c,e),k=a.setStructuredHostClaimed(b,h&&"unhosted"===c.status?{...i,process:null}:i,h&&"dead"===f?"dead":"active"===c.status||"attention"===c.status?"live":"idle"===c.status?"idle":"unhosted"===c.status?"unhosted":"dead",d,e,h);if(!k)throw Error("structured host writer claim is stale");return j=structuredClone(c),k};try{k(await c.health())}catch(a){throw await c.release(),a}let l=Number.isFinite(i.cursorDebounceMs)?Math.max(0,i.cursorDebounceMs):3e4,m=!1,n=!1,o=!1,p=null,q=null,r=()=>{},s=()=>{null!==q&&(clearTimeout(q),q=null)},t=()=>{o||(o=!0,a.releaseStructuredHostClaim(b,d,e))},u=()=>{m||(m=!0,n=!0,p=null,s(),r(),t(),c.release())},v=()=>{let a=p;p=null,s(),a&&k(a)};return r=c.onStateChange(a=>{var b;if(m||n)return;let c="unhosted"===a.status||"dead"===a.status&&null===a.pid;if(!c&&(b=j).status===a.status&&b.endpoint===a.endpoint&&b.pid===a.pid&&b.processStartIdentity===a.processStartIdentity&&b.protocolVersion===a.protocolVersion&&b.activeTurnRef===a.activeTurnRef&&h(b.pendingAttention,a.pendingAttention)&&h(b.activeFlags,a.activeFlags)){p=structuredClone(a),null===q&&(q=setTimeout(()=>{if(q=null,!m&&!n&&null!==p)try{v()}catch{u()}},l),q.unref?.());return}p=null,s();try{k(a,c),c&&(o=!0,n=!0,r())}catch{u()}}),n&&r(),()=>{if(!n){try{v()}catch{u();return}n=!0,r(),t()}}}async function j(a,b,c,d,e,g="unhosted",h={}){return i(a,b,c,d,e,g,f,h)}async function k(a,b,c,d,e,f="unhosted",h={}){return i(a,b,c,d,e,f,g,h)}function l(a,b,c){let e=a.readOnlySnapshot().entries[(0,d.pp)(c)],f=e?.structuredHost?.process;return!!e&&!!f&&!!a.terminateInactiveStructuredHost(b,c,{process:f,claimEpoch:e.claimEpoch})}function m(a,b=()=>!1){let c=a.readOnlySnapshot();for(let e of Object.values(c.conversations)){if("terminal"!==e.turn.state&&!e.supersededBy)continue;let f=e.generations.at(-1);if(!f)continue;let g={engine:e.engine,sessionId:f.id},h=c.entries[(0,d.pp)(g)];!h?.structuredHost?.process||b(h)||l(a,e.id,g)}}},14071:(a,b,c)=>{c.d(b,{Cu:()=>E,gB:()=>p,oV:()=>D});var d=c(16698),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(50920),l=c(30277);let m=globalThis.__llvAccountMutationRuntime??={transactionContext:new d.AsyncLocalStorage,localWaiters:[],localHeld:!1},n=m.transactionContext,o=m.localWaiters;class p extends Error{constructor(a="account mutation is busy; retry shortly"){super(a),this.name="AccountMutationBusyError"}}function q(){let a=o.shift();a?a():m.localHeld=!1}async function r(){return m.localHeld?await new Promise(a=>o.push(a)):m.localHeld=!0,q}let s=function(){try{return h().readlinkSync("/proc/self/ns/pid")}catch{return null}}();function t(a,b){try{return Date.now()-h().statSync(a).mtimeMs>b}catch{return!1}}function u(a,b=null){if(null!==b&&t(a,b))return!0;try{let b=JSON.parse(h().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){if(("string"==typeof b.ns?b.ns:null)!==s)return t(a,3e4);if(!l.B.pidAlive(b.pid))return!0;if("string"!=typeof b.startIdentity)return!1;let c=l.B.processIdentity(b.pid);return null!==c&&c!==b.startIdentity}return t(a,3e4)}catch{return t(a,3e4)}}function v(a,b){try{JSON.parse(h().readFileSync(a,"utf8")).token===b&&h().rmSync(a,{force:!0})}catch{}}function w(){try{let a=JSON.parse(h().readFileSync((0,k.BQ)("account-mutation-revision.json"),"utf8"));return 1===a.version&&Number.isSafeInteger(a.revision)&&a.revision>=0?a.revision:0}catch{return 0}}function x(){let a=(0,k.BQ)("account-selection.lock"),b=`${a}.queue`;h().mkdirSync(b,{recursive:!0,mode:448});let c={pid:process.pid,startIdentity:l.B.processIdentity(process.pid),ns:s,token:f().randomUUID()},d=j().join(b,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${f().randomUUID()}.json`);return h().writeFileSync(d,JSON.stringify(c),{encoding:"utf8",flag:"wx",mode:384}),{lock:a,queue:b,owner:c,ticket:d}}function y(a){let b=new Date;try{return h().utimesSync(a,b,b),!0}catch{return!1}}function z(a){let b,c=[];for(let b of h().readdirSync(a.queue).filter(a=>a.endsWith(".json")).sort()){let d=j().join(a.queue,b);if(d!==a.ticket&&u(d,6e5)){h().rmSync(d,{force:!0});continue}h().existsSync(d)&&c.push(d)}if(c[0]!==a.ticket)return null;try{b=h().openSync(a.lock,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return u(a.lock)&&h().rmSync(a.lock,{force:!0}),null}try{h().writeFileSync(b,JSON.stringify(a.owner),"utf8"),h().fsyncSync(b)}catch(c){throw h().closeSync(b),h().rmSync(a.lock,{force:!0}),c}let d={active:!0,revision:w()},e=setInterval(()=>y(a.lock),1e4);return e.unref?.(),{context:d,release(){clearInterval(e),d.active=!1,h().closeSync(b),v(a.lock,a.owner.token),v(a.ticket,a.owner.token)}}}function A(a,b){return{context:a.context,release(){try{a.release()}finally{b()}}}}async function B(){let a=await r(),b=null;try{b=x();let d=Date.now();for(let e=0;e<2e3;e+=1){let e=z(b);if(e)return A(e,a);if(Date.now()-d>=1e4){d=Date.now();var c=b;if(!y(c.ticket))try{h().writeFileSync(c.ticket,JSON.stringify(c.owner),{encoding:"utf8",mode:384})}catch{}}await new Promise(a=>setTimeout(a,5))}throw Error("account mutation is busy; retry shortly")}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}function C(a){!function(a){let b=(0,k.BQ)("account-mutation-revision.json");if(w()!==a)throw Error("account mutation revision fence changed while locked");let c=`${b}.${process.pid}.${f().randomUUID()}.tmp`;h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});try{h().writeFileSync(c,JSON.stringify({version:1,revision:a+1})+"\n",{mode:384});let d=h().openSync(c,"r");try{h().fsyncSync(d)}finally{h().closeSync(d)}h().renameSync(c,b)}finally{h().rmSync(c,{force:!0})}}(a.revision),a.revision+=1}function D(a){let b=n.getStore();if(b?.active)return a();let c=function(){let a=function(){if(m.localHeld)throw new p("account mutation is busy in this process; retry shortly");return m.localHeld=!0,q}(),b=null;try{b=x();for(let c=0;c<2;c+=1){let c=z(b);if(c)return A(c,a)}throw new p}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}();try{return C(c.context),n.run(c.context,a)}finally{c.release()}}async function E(a){let b=n.getStore();if(b?.active)return a();let c=await B();try{return C(c.context),await n.run(c.context,a)}finally{c.release()}}},14252:(a,b,c)=>{c.d(b,{v:()=>i});var d=c(14648),e=c(55643),f=c(93812);let g=new Set(["auto","prompt","writes","approve"]);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function i(a,b=!1,c,j){let k=h(h(a)?.config),l=h(k?.mcp_servers);if(!k||!l)throw Error("config/read returned no MCP server table");let m=new Set((0,e.c1)(c)),n=null===h(l.viewer),o=n&&m.has("viewer")?{...l,viewer:(0,d.yD)()}:l,p=(0,f.sJ)(j);return{mcp_servers:Object.fromEntries(Object.entries(o).map(([a,b])=>{let c=h(b)?.default_tools_approval_mode,d="viewer"===a?"approve":"string"==typeof c&&g.has(c)?c:null;return[a,{..."viewer"===a&&n?b:{},enabled:m.has(a),...d?{default_tools_approval_mode:d}:{}}]})),features:{...d.Jj,plugins:p.length>0,multi_agent:b,realtime_conversation:!0},...p.length>0?{plugins:function(a,b){let c=new Set(Object.keys(h(a.plugins)??{}));for(let a of b)[...c].some(b=>b.split("@")[0]===a)||c.add(a);return Object.fromEntries([...c].map(a=>[a,{enabled:b.includes(a.split("@")[0])}]))}(k,p)}:{},include_apps_instructions:!1}}},14607:(a,b,c)=>{c.d(b,{A6:()=>s,N0:()=>r,OA:()=>v,_b:()=>t,d5:()=>u});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(50920),i=c(52530),j=c(55883),k=c(68574);let l=(0,h.BQ)("handoff-lineage.json"),m=null,n=null,o=null,p=!1;function q(){if(m&&n&&o)return{panes:m,children:n,conversationChildren:o};let a={};try{a=JSON.parse(e().readFileSync(l,"utf8"))}catch{}let b=function(a,b=i.pl){let c=new Map,d=new Map,e=new Map;for(let[d,e]of Object.entries(a.panes??{})){let a=Number(d);Number.isInteger(a)&&a>0&&"string"==typeof e&&b(a)&&c.set(a,e)}for(let[b,c]of Object.entries(a.children??{}))"string"==typeof c&&d.set(b,c);for(let[b,c]of Object.entries(a.conversationChildren??{}))b.startsWith("conversation_")&&c.startsWith("conversation_")&&e.set(b,c);let f=Object.keys(a.panes??{}).length+Object.keys(a.children??{}).length+Object.keys(a.conversationChildren??{}).length;return{panes:c,children:d,conversationChildren:e,dirty:c.size+d.size+e.size!==f}}(a);return m=b.panes,n=b.children,o=b.conversationChildren,b.dirty&&(p=!0),{panes:m,children:n,conversationChildren:o}}function r(a){return q().panes.get(a)??null}function s(a,b){let c=q();if(c.children.get(a)!==b){for(c.children.set(a,b);c.children.size>2e4;){let a=c.children.keys().next().value;if(void 0===a)break;c.children.delete(a)}p=!0}}function t(a){return q().children.get(a)??null}async function u(a=(0,j.tk)()){let b=q(),c=!1;await (0,k.pV)([...b.children],([d,e])=>{let f=a.conversationForPath(d),g=a.conversationForPath(e);f&&g&&b.conversationChildren.get(f.id)!==g.id&&(b.conversationChildren.set(f.id,g.id),c=!0)}),c&&(p=!0,v())}function v(){if(!p)return;p=!1;let a=q();try{e().mkdirSync(g().dirname(l),{recursive:!0}),e().writeFileSync(l,JSON.stringify({panes:Object.fromEntries([...a.panes].map(([a,b])=>[String(a),b])),children:Object.fromEntries(a.children),conversationChildren:Object.fromEntries(a.conversationChildren)}))}catch{}}},14648:(a,b,c)=>{c.d(b,{Jj:()=>u,q5:()=>n,gY:()=>q,nP:()=>p,UI:()=>E,GG:()=>w,Vw:()=>F,DV:()=>D,yD:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(77598),i=c.n(h),j=c(55643);let k="LLV_MANAGED_NATIVE_SUBAGENT_DENY=1 ",l=".llv",m=["enableAllProjectMcpServers","enabledMcpjsonServers","disabledMcpjsonServers"],n=Object.freeze(["Task","Agent","Workflow","TeamCreate","TeamDelete","SendMessage"]),o=n.join("|"),p="http://127.0.0.1:8898/api/spawn",q="LLV_SPAWN_CAPABILITY",r=`Send header x-llv-spawn-capability: $${q}.`,s=`Sub-agents are disabled on this surface. Spawn через POST ${p} with {engine, model, cwd, prompt, src: <your transcript path>, role, reviews?} and ${r} The worker then appears on the board with correct lineage.`,t=`Viewer spawn policy: avoid native sub-agent, collaboration, and background-agent features. Spawn every helper through POST ${p} with {engine, model, cwd, prompt, src: <your transcript path>, role, reviews?}. ${r} The worker appears on the board with correct lineage.`,u={plugins:!1,apps:!1,multi_agent:!1};function v(a=process.cwd()){let b=[g().resolve(a,"bin","mcp-server.mjs"),g().resolve(a,"..","..","bin","mcp-server.mjs")].find(a=>e().existsSync(a));if(!b)throw Error(`Viewer MCP launcher could not be resolved from package cwd: ${a}`);return{command:"bun",args:[b]}}function w(a,b){if(!/^[A-Za-z0-9_-]{1,128}$/.test(b))throw Error("Claude spawn policy profile id is invalid");let c=g().join(a,l,"hooks","deny-native-subagents.sh");return{settingsPath:g().join(a,l,"spawn-settings",`${b}.json`),mcpConfigPath:g().join(a,l,"spawn-mcp",`${b}.json`),hookPath:c,command:`${k}${y(c)}`}}function x(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function y(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function z(a,b,c){e().mkdirSync(g().dirname(a),{recursive:!0,mode:448});let d=g().join(g().dirname(a),`.${g().basename(a)}.${process.pid}.${i().randomUUID()}.tmp`);try{e().writeFileSync(d,b,{mode:c}),e().chmodSync(d,c),e().renameSync(d,a)}finally{e().rmSync(d,{force:!0})}}function A(a){let b;if(!e().existsSync(a))return{};try{b=JSON.parse(e().readFileSync(a,"utf8"))}catch{throw Error(`Claude settings are invalid JSON: ${a}`)}let c=x(b);if(!c)throw Error(`Claude settings must contain a JSON object: ${a}`);return c}function B(a){return Array.isArray(a)?a.filter(a=>"string"==typeof a):[]}function C(a){if(!a)return{};let b=g().resolve(a),c=b;for(let a=b;;a=g().dirname(a)){if(e().existsSync(g().join(a,".git"))){c=a;break}if(g().dirname(a)===a)break}let d=g().join(c,".mcp.json");return e().existsSync(d)?x(A(d).mcpServers)??{}:{}}function D(a,b){let c=g().join(a,".claude.json");try{let a=e().lstatSync(c);if(a.isSymbolicLink()||!a.isFile())throw Error(`Claude state path is unsafe: ${c}`)}catch(a){if("ENOENT"!==a.code)throw a}let d={};if(e().existsSync(c)){let a;try{a=JSON.parse(e().readFileSync(c,"utf8"))}catch{throw Error(`Claude state is invalid JSON: ${c}`)}let b=x(a);if(!b)throw Error(`Claude state must contain a JSON object: ${c}`);d=b}let f=void 0===d.projects?{}:x(d.projects);if(!f)throw Error(`Claude state projects must contain a JSON object: ${c}`);let h=void 0===f[b]?{}:x(f[b]);if(!h)throw Error(`Claude project state must contain a JSON object: ${b}`);z(c,JSON.stringify({...d,hasCompletedOnboarding:!0,bypassPermissionsModeAccepted:!0,projects:{...f,[b]:{...h,hasTrustDialogAccepted:!0,hasCompletedProjectOnboarding:!0}}},null,2)+"\n",384)}function E(a,b={}){var c,d;let f,h=g().join(a,"settings.json"),l=w(a,b.profileId??i().randomUUID()),n=e().existsSync(h),p=n?A(h):b.baseSettingsPath?A(b.baseSettingsPath):{},q=n?{}:p;if(!b.allowSubagents&&!0===p.disableAllHooks)throw Error("Claude settings disableAllHooks prevents the Viewer spawn policy from enforcing native sub-agent denial");if(!b.allowSubagents&&!0===p.allowManagedHooksOnly)throw Error("Claude settings allowManagedHooksOnly prevents the Viewer spawn policy from enforcing native sub-agent denial");let r=void 0===p.hooks?{}:x(p.hooks);if(!r)throw Error("Claude settings hooks must contain a JSON object");let t=function(a){if(void 0===a)return[];if(!Array.isArray(a))throw Error("Claude settings hooks.PreToolUse must be an array");return a.flatMap(a=>{let b=x(a);if(!b||!Array.isArray(b.hooks))return[a];let c=b.hooks.filter(a=>{var b;return!("string"==typeof(b=x(a)?.command)&&b.startsWith(k))});return c.length?[{...b,hooks:c}]:[]})}(r.PreToolUse);if(!b.allowSubagents){let a=`#!/bin/sh
79
+ Stay silent until you are spoken to: this text is context, and there is nothing here to greet.`;function R(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function S(a,b){let c=null;try{c=R(JSON.parse(a.toString("utf8")))}catch{return!1}let d=R(c?.payload);return c?.type==="response_item"&&d?.type==="message"&&d.id===b&&"developer"===d.role}function T(a){return(0,e.createHash)("sha256").update("voice-persona-bootstrap\0","utf8").update(a,"utf8").digest("hex")}async function U(a,b){let c;if(!a){let a=Error("canonical transcript path is unavailable");throw a.code="NO_TRANSCRIPT_PATH",a}try{c=await M().promises.open(a,M().constants.O_RDONLY|(M().constants.O_NOFOLLOW??0))}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return!1;throw b}return new Promise((a,d)=>{let e=c.createReadStream({autoClose:!0}),f=!1,g=[],h=0,i=!1,j=b=>{f||(f=!0,e.destroy(),a(b))},k=()=>{g=[],h=0,i=!1};e.on("data",a=>{let c=Buffer.isBuffer(a)?a:Buffer.from(a),d=0;for(;d<=c.length;){let a=c.indexOf(10,d);if(-1===a){let a=c.length-d;!i&&a>0&&(h+a>0x2000000?(g=[],h=0,i=!0):(g.push(Buffer.from(c.subarray(d))),h+=a));return}if(!i){let e=c.subarray(d,a);if(h+e.length<=0x2000000&&S(h?Buffer.concat([...g,e],h+e.length):e,b))return j(!0)}k(),d=a+1}}),e.on("end",()=>{!i&&h>0&&S(Buffer.concat(g,h),b)?j(!0):j(!1)}),e.on("error",a=>{f||(f=!0,d(a))})})}let V=["PATH","HOME","USER","LOGNAME","SHELL","TMPDIR","TMP","TEMP","LANG","LC_ALL","LC_CTYPE","TERM","COLORTERM","NO_COLOR","XDG_CONFIG_HOME","XDG_CACHE_HOME","XDG_DATA_HOME","XDG_STATE_HOME","XDG_RUNTIME_DIR","DBUS_SESSION_BUS_ADDRESS","SSL_CERT_FILE","SSL_CERT_DIR","LLV_SPAWN_CAPABILITY"],W=["DISPLAY","XAUTHORITY","WAYLAND_DISPLAY","XDG_SESSION_TYPE","XDG_CURRENT_DESKTOP","DESKTOP_SESSION"],X=E.u1+262144,Y=new Set(["thread/resume","thread/read"]),Z=/^\{(?:"jsonrpc":"2\.0",)?"id":(\d+),"result":/,$={maxStringUnits:16384,maxImageStringUnits:E.u1+64,maxOutputUnits:0x4000000,maxRawUnits:0x20000000},_=new Set(["thread/start","thread/resume","turn/start","turn/steer","turn/interrupt","thread/realtime/start","thread/realtime/stop","thread/inject_items","thread/compact/start"]);function aa(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function ab(a,b){let c=aa(a);return c&&"string"==typeof c[b]?c[b]:null}function ac(a){let b=a instanceof Error?a.message:String(a);return(0,m.j)(b).replace(/(["']?(?:cookie|set-cookie)["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[redacted]")}let ad=function(a){return ac(a).slice(0,500)};function ae(a,b){let c=aa(a),d=aa(c?.thread)??c,e=ab(d,"id");if(!e)throw Error(`${b} returned no thread id`);return{threadId:e,path:ab(d,"path")}}function af(a,b){let c=aa(a),d=ab(aa(c?.turn),"id")??ab(c,"turnId");if(!d)throw Error(`${b} returned no turn id`);return d}function ag(a){return ab(a.turn,"id")??ab(a,"turnId")}function ah(a){return"completed"===a?"completed":"interrupted"===a?"interrupted":"error"}function ai(a,b){let c=aa(a)?.data;if(!Array.isArray(c))return!1;let d=c.map(aa).filter(a=>null!==a),e=b?d.find(a=>ab(a,"id")===b):d.find(a=>!0===a.isDefault);return Array.isArray(e?.inputModalities)&&e.inputModalities.includes("image")}function aj(a){let b=aa(a),c=aa(b?.thread)??b;if(Array.isArray(c?.turns))return c.turns.map(aa).filter(a=>null!==a);let d=aa(c?.initialTurnsPage);return Array.isArray(d?.data)?d.data.map(aa).filter(a=>null!==a):[]}function ak(a){let b=ab(a,"id");return b?`id:${b}`:`json:${JSON.stringify(a)}`}function al(a){return"delta"===a.kind?JSON.stringify([a.kind,a.turnId,a.text]):"attention"===a.kind?JSON.stringify([a.kind,a.id,a.method,a.attention]):null}function am(a){let b=ab(a,"text");if(null!==b)return b;if("string"==typeof a.content)return a.content;if(!Array.isArray(a.content))return null;let c=[];for(let b of a.content){if("string"==typeof b){c.push(b);continue}let a=ab(b,"text")??ab(b,"content");null!==a&&c.push(a)}return c.length>0?c.join(""):null}function an(a,b){let c=Buffer.from(a,"utf8");if(c.byteLength<=b)return{text:a,truncated:!1};let d=c.byteLength-b;for(;d<c.byteLength&&(192&c[d])==128;)d+=1;return{text:c.subarray(d).toString("utf8"),truncated:!0}}function ao(a){let b=aa(a),c=aa(b?.thread),d=aa(b?.status)??aa(c?.status),e=ab(d,"type");return"active"!==e&&"idle"!==e&&"notLoaded"!==e&&"systemError"!==e?null:{type:e,activeFlags:Array.isArray(d?.activeFlags)?d.activeFlags.filter(a=>"string"==typeof a):[]}}class ap{constructor(a,b,c){this.pending=new Map,this.pendingRealtimeStart=null,this.realtimeFailure=null,this.realtimeSessionId=null,this.lateThreadReadResponses=new Map,this.replayEnvelopeRequestIds=new Set,this.replayReduction=null,this.subscribers=new Set,this.events=[],this.confirmedDeliveries=new Map,this.pendingDeliveries=new Map,this.pendingCompactions=new Map,this.realtimeDeliveries=new Map,this.voiceStreams=new Map,this.unresolvedVoicePersonaBootstrap=null,this.voicePersonaBootstrapInsertion=null,this.voicePersonaBootstrapAccepted=!1,this.pendingVoiceChunks=new Map,this.cancelledVoiceTurns=new Set,this.activeRealtimeDeliveries=new Map,this.attentions=new Map,this.stateListeners=new Set,this.preRestoreEvents=[],this.preRestoreMessages=[],this.bufferedTerminalTurnIds=new Set,this.bufferedNotificationOverlap=[],this.nextRpcId=1,this.stdoutBuffer="",this.stderrTail="",this.preRestoreBytes=0,this.eventLedgerRestored=!1,this.activeTurnId=null,this.protocolVersion=null,this.account=null,this.engineStatus="idle",this.activeFlags=[],this.imageInputSupport="unknown",this.realtimeDeliveryEpoch=0,this.releasing=!1,this.released=!1,this.dead=!1,this.reaped=!1,this.terminationStarted=!1,this.terminationTimer=null,this.terminationPromise=null,this.resolveTermination=null,this.failureCleanupTimer=null,this.releasePromise=null,this.writerFence=null,this.ledgerFailed=!1,this.failure=null,this.child=a,this.identity=b,this.requestTimeoutMs=c.requestTimeoutMs??3e4,this.realtimePersonaTimeoutMs=c.realtimePersonaTimeoutMs??3e3,this.realtimeStartTimeoutMs=c.realtimeStartTimeoutMs??9e4,this.deliveryConfirmationTimeoutMs=c.deliveryConfirmationTimeoutMs??3e5,this.compactEvidenceTimeoutMs=c.compactEvidenceTimeoutMs??3e5,this.shutdownGraceMs=c.shutdownGraceMs??1e3,this.eventStore=c.eventStore??new K.mI,this.effort=c.effort,this.signalProcess=c.signalProcess??process.kill,this.processIdentity=c.processIdentity??(a=>h.B.processIdentity(a)),this.pidAlive=c.pidAlive??(a=>h.B.pidAlive(a)),this.releaseCleanup=c.releaseCleanup??null,this.childStartIdentity=a.pid?this.processIdentity(a.pid):null,this.onEventCursorRecovery=c.onEventCursorRecovery,this.resolveImagePath=c.resolveImagePath??(a=>{let b=(0,E.PF)();return b.read(a),b.pathFor(a)}),this.cursor=c.initialEventCursor??0,this.reapedPromise=new Promise(a=>{this.resolveReaped=a}),a.stdout.on("data",a=>this.acceptStdout(String(a))),a.stderr.on("data",a=>this.acceptStderr(String(a))),a.stdin.on("error",a=>{this.releasing||this.released||this.fail(Error(`Codex app-server stdin failed: ${ad(a)}`))}),a.on("error",a=>this.fail(Error(`Codex app-server child failed: ${ad(a)}`))),a.on("close",()=>{if(this.reaped=!0,this.completeGroupCleanupAfterReap(),this.resolveReaped(),this.releasing)this.startFailureCleanup();else if(!this.released)if(this.dead)this.notifyStateListeners();else{let a=ac(this.stderrTail).split(/\r?\n/).map(a=>a.replace(/\s+/g," ").trim()).filter(Boolean).slice(-4).reverse().map(a=>a.slice(-240)).join(" | ").slice(0,430);this.fail(Error(`Codex app-server child exited${a?`: ${a}`:""}`))}})}static async start(a){return this.open(a,null)}static async adopt(a,b){if(!a)throw Error("Codex thread id is required for adoption");return this.open(b,a)}static async open(a,b){let c,e=a.spawnProcess??((a,b,c)=>(0,d.spawn)(a,b,{...c,stdio:["pipe","pipe","pipe"]})),f=[...a.fileAuthCredentials?["-c","cli_auth_credentials_store=file"]:[],...a.permissionProfile&&a.permissionProfileConfig?["-c",`default_permissions=${JSON.stringify(a.permissionProfile)}`,"-c",a.permissionProfileConfig]:[],"app-server","--enable","realtime_conversation"],g=(0,l.sJ)(a.plugins);try{c=e(a.binary??process.env.LLV_CODEX_BINARY??"codex",f,{cwd:a.cwd,env:(0,F.$)(function(a,b,c=!1,d=!1){let e={NODE_ENV:a.NODE_ENV};for(let b of c?[...V,...W]:V)void 0!==a[b]&&(e[b]=a[b]);return d&&void 0!==a.GH_CONFIG_DIR&&(e.GH_CONFIG_DIR=a.GH_CONFIG_DIR),b&&(e.CODEX_HOME=b),e[j.VI]=(0,j.TK)(),e}(a.env??process.env,a.codexHome,g.length>0,!0===a.forwardGitHubConfig),a.mcpServers),detached:!0})}catch(b){throw a.releaseCleanup?.(),b}let h=new ap(c,{threadId:b??"pending",path:null},a);try{var i;let c,d;i=aa(await h.rpc("initialize",{clientInfo:{name:"llv-structured-host",title:"Live Log Viewer",version:"0.11.7"},capabilities:{experimentalApi:!0}})),h.protocolVersion=(c=ab(i,"appServerVersion")??ab(i,"serverVersion")??ab(i,"version"))||(ab(i,"userAgent")?.match(/^[^/]+\/([^\s]+)/)?.[1]??null),h.notify("initialized",{});let e=aa(await h.rpc("account/read",{refreshToken:!1})),f=aa(e?.account),j=ab(f,"type");if("chatgpt"!==j)throw Error("Codex app-server requires a ChatGPT subscription login");h.account={type:j,planType:ab(f,"planType")},h.requestedModel=a.model;try{h.imageInputSupport=ai(await h.rpc("model/list",{}),a.model)?"supported":"unsupported"}catch{h.imageInputSupport="unknown"}let l=(0,k.v)(await h.rpc("config/read",{cwd:a.cwd,includeLayers:!1}),!0===a.allowSubagents,a.mcpServers,g),m=b?await h.rpc("thread/resume",{threadId:b,...a.permissionProfile?{permissions:a.permissionProfile}:{},config:l}):await h.rpc("thread/start",{cwd:a.cwd,...a.model?{model:a.model}:{},...a.permissionProfile?{permissions:a.permissionProfile}:{sandbox:a.sandbox??"read-only"},approvalPolicy:a.approvalPolicy??"never",config:l}),n=ae(m,b?"thread/resume":"thread/start");if(b&&n.threadId!==b)throw Error("thread/resume returned a different thread id");return h.identity.threadId=n.threadId,h.identity.path=n.path,g.length>0&&await h.verifyPluginGrant(g,l),h.rememberConfirmedDeliveries(m),h.restoreEvents(),h.beginBufferedNotificationReconciliation(),h.flushPreRestoreEvents(),h.flushPreRestoreMessages(b?m:null),b&&h.reconcileThreadHistory(m),h.reconcileAfterOpen(ao(m),(d=aj(m).findLast(a=>"inProgress"===ab(a,"status")))?ab(d,"id"):null),h.endBufferedNotificationReconciliation(),h}catch(a){try{await h.release()}catch(b){throw new J.EY(ad(a),h,{cause:b})}throw Error(ad(a))}}async verifyPluginGrant(a,b){let c,d=new Set(Object.keys(aa(b.mcp_servers)??{})),e=new Set((0,l.QN)(a));try{c=await this.rpc("mcpServerStatus/list",{threadId:this.identity.threadId})}catch(a){throw Error(`Codex plugin grant could not be verified: ${ad(a)}`)}let f=aa(c)?.data??c;if(!Array.isArray(f))throw Error("Codex plugin grant could not be verified: mcpServerStatus/list returned no server list");let g=f.map(a=>ab(aa(a),"name")).filter(a=>null!==a&&!d.has(a)&&!e.has(a));if(g.length>0)throw Error(`Codex plugin grant surfaced servers outside the allowlist: ${[...new Set(g)].sort().join(", ")}`)}attach(a){if(!Number.isSafeInteger(a)||a<0)throw Error("afterSeq must be a non-negative integer");let b={afterSeq:a,queue:[],wake:null,closed:!1},c=this.events[0]?.seq;if(void 0!==c&&a+1<c)throw new J.AW(a,c);for(let c of this.events)c.seq>a&&b.queue.push(c);this.subscribers.add(b);let d=this.subscribers;return{async *[Symbol.asyncIterator](){try{for(;;){let a=b.queue.shift();if(a){a.seq>b.afterSeq&&(b.afterSeq=a.seq,yield a);continue}if(b.closed)break;await new Promise(a=>{b.wake=a}),b.wake=null}}finally{b.closed=!0,d.delete(b)}}}}async refreshImageInputSupport(){try{this.imageInputSupport=ai(await this.rpc("model/list",{}),this.requestedModel)?"supported":"unsupported"}catch{return}"supported"===this.imageInputSupport&&this.setSessionStatus(this.engineStatus,this.activeFlags)}async send(a){if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())return{outcome:"rejected",reason:"dead-host"};let b=(0,J.h4)(a);if(b.content.images.length){if("unknown"===this.imageInputSupport&&await this.refreshImageInputSupport(),"unsupported"===this.imageInputSupport)throw Error("The selected Codex model does not advertise image input through app-server.");if("supported"!==this.imageInputSupport)throw Error("Codex image capability discovery is temporarily unavailable; retry shortly.")}if(!(a={id:b.id,text:b.content.text,content:b.content,contentDigest:b.contentDigest,...void 0!==b.expectedTurnId?{expectedTurnId:b.expectedTurnId}:{},...b.runtime?{runtime:b.runtime}:{},...b.selectedContext?{selectedContext:b.selectedContext}:{},...b.origin?{origin:b.origin}:{}}).id)throw Error("queue entry id is required");let c=await this.confirmedDelivery(a);if(c)return c;let d=this.activeTurnId;if(void 0!==a.expectedTurnId&&a.expectedTurnId!==d)return{outcome:"rejected",reason:"stale-turn"};let e=[...b.content.images.map(a=>({type:"localImage",path:this.resolveImagePath(a)})),{type:"text",text:function(a,b,c,d){let e=[];if(b&&e.push(`sha256=${b}`),c&&e.push(`ctx=${function(a){let b=JSON.stringify(a),c=new TextEncoder().encode(b),d="";for(let a of c)d+=String.fromCharCode(a);return btoa(d).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}(c)}`),d){e.push(`origin=${d.kind}`);let a=(0,s.S)(d.role);a&&e.push(`sender=${a}`)}return 0===e.length?t+a:`<!-- llv:structured-user ${e.join(" ")} -->
80
+ ${a}`}(b.content.text,b.content.images.length>0?b.contentDigest:void 0,b.selectedContext,b.origin)}];if(d)try{let b=await this.rpc("turn/steer",{threadId:this.identity.threadId,expectedTurnId:d,input:e,clientUserMessageId:a.id});return this.awaitDeliveryConfirmation(a,{outcome:"steered",turnId:af(b,"turn/steer")})}catch(a){if(/expectedTurnId|active turn|stale/i.test(ad(a)))return{outcome:"rejected",reason:"stale-turn"};throw a}let f=(a.runtime?.effort&&(0,g.ck)(a.runtime.effort)?a.runtime.effort:void 0)??this.effort,h=af(await this.rpc("turn/start",{threadId:this.identity.threadId,...f?{effort:f}:{},input:e,clientUserMessageId:a.id}),"turn/start");return this.activeTurnId=h,this.notifyStateListeners(),this.awaitDeliveryConfirmation(a,{outcome:"turn-started",turnId:h})}async interrupt(a){if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw Error("Codex app-server host is unavailable");if(!a||this.activeTurnId!==a)throw Error("active turn fence is stale");await this.rpc("turn/interrupt",{threadId:this.identity.threadId,turnId:a})}async compact(a){let b;if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw new J.BL("Codex app-server host is unavailable","refused");if(a.threadId&&a.threadId!==this.identity.threadId)throw new J.BL("compact target thread is not the thread this host owns","refused");if(this.activeTurnId)throw new J.BL("a turn is active; compaction would race it","refused");let c=this.pendingCompactions.get(a.operationId);if(c)return c.promise;if(this.pendingCompactions.size>0)throw new J.BL("a compaction is already running on this thread","refused");let d=new Promise((a,c)=>{b={promise:void 0,resolve:a,reject:c,timer:void 0}});b.promise=d,this.pendingCompactions.set(a.operationId,b),d.catch(()=>void 0);try{await this.rpc("thread/compact/start",{threadId:this.identity.threadId},this.compactEvidenceTimeoutMs)}catch(e){if(this.pendingCompactions.get(a.operationId)!==b)return d;this.pendingCompactions.delete(a.operationId);let c=ad(e);throw new J.BL(c,/outcome is uncertain/.test(c)?"unverified":"refused")}return this.pendingCompactions.get(a.operationId)===b&&(b.timer=setTimeout(()=>{this.pendingCompactions.delete(a.operationId),b.reject(new J.BL("Codex compaction evidence did not arrive; the outcome is unverified","unverified"))},this.compactEvidenceTimeoutMs)),d}acceptCompactionItem(a,b){if("completed"!==b||0===this.pendingCompactions.size)return;let c=aa(a);c&&this.settlePendingCompactions({compactionId:ab(c,"id")})}acceptCompactedNotification(a){0===this.pendingCompactions.size||ab(a,"threadId")===this.identity.threadId&&this.settlePendingCompactions({compactionId:null})}rejectPendingCompactions(a){this.settlePendingCompactions(new J.BL(ad(a),"unverified"))}settlePendingCompactions(a){if(0===this.pendingCompactions.size)return;let b=[...this.pendingCompactions.values()];for(let c of(this.pendingCompactions.clear(),b))c.timer&&clearTimeout(c.timer),a instanceof J.BL?c.reject(a):c.resolve(a)}settlePendingCompactionsFromTerminalTurn(a,b){if("completed"===b||0===this.pendingCompactions.size)return;let c=ad(ab(aa(a?.error),"message")??("interrupted"===b?"Codex compaction was interrupted; the outcome is unverified":"Codex compaction failed"));this.settlePendingCompactions(new J.BL(c,"interrupted"===b?"unverified":"refused"))}async startRealtimeWebRtc(a){let b,c,d,e;if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw Error("Codex app-server host is unavailable");let f=a.endsWith("\n")?a:`${a}\r
81
+ `;if(!f.trimStart().startsWith("v=0")||Buffer.byteLength(f,"utf8")>524288)throw Error("A valid WebRTC SDP offer is required");if(this.pendingRealtimeStart)throw Error("A realtime session is already starting");this.realtimeFailure=null,this.realtimeSessionId=null;let g=(c=T(this.identity.threadId).slice(0,46),d=`voice_persona_${c}`,e=`msg_${d}`,{receiptId:d,itemId:e}),h=new Promise((a,c)=>{b={resolve:a,reject:c,timer:void 0,started:!1,realtimeSessionId:null,sdp:null,personaBootstrap:{...g,insertion:"accepted"}}});this.pendingRealtimeStart=b,h.catch(()=>void 0);try{let a=await this.ensureVoicePersonaBootstrap(g,b);if("superseded"===a)return h}catch(d){if(this.pendingRealtimeStart!==b)return h;let a=b;this.pendingRealtimeStart=null,clearTimeout(a.timer);let c={sdp:null,realtimeSessionId:null,personaBootstrap:{...g,insertion:"rejected",diagnostic:ad(d)}};return a.resolve(c),h}if(this.pendingRealtimeStart!==b)return h;let i=function(a){let b=[],c=!1;for(let d of a){if("delta"===d.kind){if(!d.text)continue;let a=b.at(-1);if(a?.role==="assistant"&&a.turnId===d.turnId){let b=an(a.text+d.text,8192);a.text=b.text,c||=b.truncated}else{let a=an(d.text,8192);b=[{role:"assistant",text:a.text,turnId:d.turnId,source:"durable-delta"}],c=a.truncated}continue}if("item"!==d.kind||"completed"!==d.phase)continue;let a=function(a){let b=aa(a);if(!b)return null;let c=ab(b,"type"),d=aa(b.message),e=ab(b,"role")??ab(d,"role"),f="userMessage"===c||"user_message"===c||"user"===c||"message"===c&&"user"===e;if(!f&&"agentMessage"!==c&&"agent_message"!==c&&"assistant"!==c&&("message"!==c||"assistant"!==e))return null;let g=ab(b,"text")??am(b)??(d?ab(d,"text")??am(d):null);return g?f?{role:"user",text:x(g).text}:{role:"assistant",text:g}:null}(d.item);if(a){if("user"===a.role){if(0===b.length)continue;let e=an(a.text,8192);b.push({...a,text:e.text,turnId:d.turnId,source:"durable-item"}),c||=e.truncated,b.length>12&&(b=[b[0],...b.slice(-11)],c=!0);continue}b.findLastIndex(a=>"assistant"===a.role&&(null===d.turnId||a.turnId===d.turnId))>=0&&(b=[],c=!1)}}let d=(b=b.filter(a=>a.text.length>0)).reduce((a,b)=>a+Buffer.byteLength(b.text,"utf8"),0);for(;d>24576&&b.length>1;){let a=b.splice(1,1)[0];d-=Buffer.byteLength(a.text,"utf8"),c=!0}return{items:b.map(({role:a,text:b})=>({role:a,text:b})),diagnosticItems:b.map(({role:a,source:b,text:c})=>({role:a,source:b,bytes:Buffer.byteLength(c,"utf8")})),truncated:c}}(this.events);console.info("[realtime context] selected",{providerStartupContext:!0,durableTail:i.diagnosticItems,truncated:i.truncated}),b.timer=setTimeout(()=>{this.pendingRealtimeStart===b&&this.fail(Error("thread/realtime/start timed out; outcome is uncertain"))},this.realtimeStartTimeoutMs);try{await this.rpc("thread/realtime/start",{threadId:this.identity.threadId,version:"v3",model:"gpt-live-1-codex",outputModality:"audio",transport:{type:"webrtc",sdp:f},clientManagedHandoffs:!0,codexResponsesAsItems:!0,includeStartupContext:!0,...i.items.length>0?{initialItems:i.items}:{}},this.realtimeStartTimeoutMs)}catch(a){this.rejectRealtimeStart(a instanceof Error?a:Error(ad(a)))}return h}async ensureVoicePersonaBootstrap(a,b){for(await this.ensureCanonicalTranscriptPath();!this.voicePersonaBootstrapAccepted;){var c;let d=this.voicePersonaBootstrapInsertion;if(d){try{await d.promise}catch(a){if(this.pendingRealtimeStart!==b)return"superseded";if(d.owner===b)throw a}continue}let e=await this.scanVoicePersonaBootstrap(a.itemId,"canonical scan unavailable; refusing insertion"),f=!e&&await this.scanVoicePersonaBootstrap((c=this.identity.threadId,`msg_voice_persona_${T(c)}`),"legacy canonical scan unavailable; refusing insertion");if(e||f){this.voicePersonaBootstrapAccepted=!0,this.unresolvedVoicePersonaBootstrap=null;break}if(this.pendingRealtimeStart!==b)return"superseded";if(this.voicePersonaBootstrapInsertion)continue;let g=this.unresolvedVoicePersonaBootstrap??function(a){let b=function(a=a=>M().readFileSync(a,"utf8")){try{let b=a((0,P.ks)(O().join(..."prompts/voice-persona.md".split("/")))).trim();if(b)return b}catch{}return Q}(void 0);return{item:{type:"message",id:a.itemId,role:"developer",content:[{type:"input_text",text:b}]}}}(a);this.unresolvedVoicePersonaBootstrap=g;let h=this.insertVoicePersonaBootstrap(g,a.itemId),i={owner:b,promise:h};this.voicePersonaBootstrapInsertion=i;let j=()=>{this.voicePersonaBootstrapInsertion===i&&(this.voicePersonaBootstrapInsertion=null)};h.then(j,j);try{await h}catch(a){if(this.pendingRealtimeStart!==b)return"superseded";throw a}}return"accepted"}async ensureCanonicalTranscriptPath(){if(this.identity.path)return;let a=ae(await this.rpc("thread/read",{threadId:this.identity.threadId,includeTurns:!0}),"thread/read");if(a.threadId!==this.identity.threadId)throw Error("thread/read returned a different thread id");if(!a.path){let a=Error("canonical transcript path is unavailable");throw a.code="NO_TRANSCRIPT_PATH",a}this.identity.path=a.path}async insertVoicePersonaBootstrap(a,b){try{await this.rpc("thread/inject_items",{threadId:this.identity.threadId,items:[a.item]},this.realtimePersonaTimeoutMs)}catch(a){if(!await this.scanVoicePersonaBootstrap(b,"recovery scan unavailable"))throw a}this.voicePersonaBootstrapAccepted=!0,this.unresolvedVoicePersonaBootstrap=null}async scanVoicePersonaBootstrap(a,b){try{return await U(this.identity.path,a)}catch(a){throw console.warn(`[voice persona bootstrap] ${b}`,{code:a.code??"unknown",diagnostic:ad(a)}),a}}async appendRealtimeSpeech(a){if(!a||Buffer.byteLength(a,"utf8")>8192)throw Error("Realtime speech text is empty or too large");await this.rpc("thread/realtime/appendSpeech",{threadId:this.identity.threadId,text:a})}voiceStream(a){let b=this.voiceStreams.get(a);if(b)return b;let c={turnId:a,segmentIndex:0,nextChunkIndex:0,buffer:"",observedChars:0,emittedChars:0,observedHash:(0,e.createHash)("sha256"),emittedHash:(0,e.createHash)("sha256"),fallbackToTerminal:!1,timer:null};return this.voiceStreams.set(a,c),c}observeVoiceDelta(a,b){if(!b||this.cancelledVoiceTurns.has(a))return;let c=this.voiceStream(a);if(c.buffer+=b,c.observedChars+=b.length,c.observedHash.update(b),Buffer.byteLength(c.buffer,"utf8")>24576){c.fallbackToTerminal=!0,c.buffer="",this.clearVoiceStreamTimer(c);return}this.realtimeSessionId&&!c.fallbackToTerminal&&(this.flushVoiceStream(c,"eager"),this.scheduleVoiceStreamFlush(c))}flushVoiceStream(a,b){if(!this.realtimeSessionId||a.fallbackToTerminal||this.cancelledVoiceTurns.has(a.turnId)||this.pendingVoiceChunks.size>=6)return!1;let c=function(a,b){if(!a)return null;let c=(0,G._t)(a,0,1800),d=c.text,e=c.nextOffset<a.length,f=function(a){H.lastIndex=0;let b=-1;for(let c of a.matchAll(H)){let a=(c.index??0)+c[0].length;a>=180&&(b=a)}return b}(d),g=-1;return(f>=0?g=f:"final"===b?g=d.length:e||a.length>=560?g=I(d,Math.min(560,d.length),180):"deadline"===b&&a.length>=140&&(g=I(d,d.length,140)),g<=0)?null:{text:a.slice(0,g),remainder:a.slice(g)}}(a.buffer,b);if(!c)return!1;let d=a.emittedChars,e=d+c.text.length,f=(0,G.N5)({sourceTurnId:a.turnId,chunkIndex:a.nextChunkIndex,startOffset:d,endOffset:e,text:c.text});return this.emit({kind:"voice-chunk",turnId:a.turnId,delivery:f}),!this.ledgerFailed&&(this.pendingVoiceChunks.set(f.deliveryId,a.turnId),a.nextChunkIndex+=1,a.emittedChars=e,a.emittedHash.update(c.text),a.buffer=c.remainder,!0)}scheduleVoiceStreamFlush(a){this.clearVoiceStreamTimer(a),!a.buffer||!this.realtimeSessionId||a.fallbackToTerminal||this.cancelledVoiceTurns.has(a.turnId)||(a.timer=setTimeout(()=>{a.timer=null,this.flushVoiceStream(a,"deadline")&&a.buffer.length>0&&this.pendingVoiceChunks.size<6&&this.scheduleVoiceStreamFlush(a)},1100))}clearVoiceStreamTimer(a){a.timer&&(clearTimeout(a.timer),a.timer=null)}clearVoiceStreamTimers(){for(let a of this.voiceStreams.values())this.clearVoiceStreamTimer(a)}resetVoiceStreamSegment(a){this.clearVoiceStreamTimer(a),a.segmentIndex+=1,a.buffer="",a.observedChars=0,a.emittedChars=0,a.observedHash=(0,e.createHash)("sha256"),a.emittedHash=(0,e.createHash)("sha256"),a.fallbackToTerminal=!1}finalizeVoiceStreamItem(a,b){let c=this.voiceStreams.get(a),d=(0,G.mT)(b,`voice-final:${a}:${c?.segmentIndex??0}`);if(!d||!c||0===c.observedChars)return;this.clearVoiceStreamTimer(c);let f=d.text.slice(0,c.emittedChars),g=(0,e.createHash)("sha256").update(f).digest("hex")===c.emittedHash.copy().digest("hex"),h=d.text.slice(0,c.observedChars),i=c.observedChars<=d.text.length&&(0,e.createHash)("sha256").update(h).digest("hex")===c.observedHash.copy().digest("hex");g&&i&&!c.fallbackToTerminal&&this.flushVoiceStream(c,"final");let j=g?c.emittedChars:0,k=d.text.slice(j);return(g&&i||console.warn("[realtime voice stream] terminal reconciliation used bounded fallback",{turnId:a,emittedChars:c.emittedChars,observedChars:c.observedChars,emittedMatches:g,observedMatches:i}),this.resetVoiceStreamSegment(c),k)?{responseId:j>0?`${d.responseId}:suffix:${j}`:d.responseId,text:k}:null}cancelVoiceStream(a){let b=this.voiceStreams.get(a);for(let[c,d]of(b&&this.clearVoiceStreamTimer(b),this.voiceStreams.delete(a),this.cancelledVoiceTurns.add(a),this.pendingVoiceChunks))d===a&&this.pendingVoiceChunks.delete(c)}resumeVoiceStreams(){if(this.realtimeSessionId)for(let a of this.voiceStreams.values())this.cancelledVoiceTurns.has(a.turnId)||(a.fallbackToTerminal=!1,this.flushVoiceStream(a,"eager"),this.scheduleVoiceStreamFlush(a))}async deliverRealtimeWorkerResponse(a){let b=(0,G.Im)([a])[0];if(!b||!b.ready||b.deliveryId!==a.deliveryId)throw Error("Realtime worker delivery is invalid");if(b.sourceTurnId&&this.cancelledVoiceTurns.has(b.sourceTurnId))throw Error("Realtime worker delivery belongs to an interrupted turn");let c=(0,e.createHash)("sha256").update(JSON.stringify(b.responses)).digest("hex"),d=this.activeRealtimeDeliveries.get(b.deliveryId);if(d){if(d.digest!==c)throw Error("Realtime delivery id belongs to different content");return d.promise}let f=this.performRealtimeWorkerDelivery(b,c);this.activeRealtimeDeliveries.set(b.deliveryId,{digest:c,promise:f});try{return await f}finally{this.activeRealtimeDeliveries.get(b.deliveryId)?.promise===f&&this.activeRealtimeDeliveries.delete(b.deliveryId)}}async performRealtimeWorkerDelivery(a,b){let c=this.realtimeDeliveries.get(a.deliveryId);if(c?.digest!==void 0&&c.digest!==b)throw Error("Realtime delivery id belongs to different content");if(c?.acknowledged)return{deliveryId:a.deliveryId,acknowledged:!0};let d=c?.responseIndex??0,e=c?.offset??0;if(d>a.responses.length||d<a.responses.length&&e>a.responses[d].text.length)throw Error("Realtime delivery cursor is invalid");let f=this.realtimeDeliveryEpoch;for(;d<a.responses.length;){if(f!==this.realtimeDeliveryEpoch)throw Error("Realtime worker delivery paused by stop");let c=a.responses[d],g=(0,G._t)(c.text,e,8192);if(!g){d+=1,e=0;continue}if(await this.appendRealtimeSpeech(g.text),(e=g.nextOffset)===c.text.length&&(d+=1,e=0),this.emit({kind:"realtime-delivery-progress",deliveryId:a.deliveryId,digest:b,responseIndex:d,offset:e}),this.ledgerFailed)throw Error("Realtime delivery progress was not persisted");this.realtimeDeliveries.set(a.deliveryId,{digest:b,responseIndex:d,offset:e,acknowledged:!1})}if(this.emit({kind:"realtime-delivery-acknowledged",deliveryId:a.deliveryId,digest:b}),this.ledgerFailed)throw Error("Realtime delivery acknowledgement was not persisted");this.realtimeDeliveries.set(a.deliveryId,{digest:b,responseIndex:d,offset:e,acknowledged:!0});let g=this.pendingVoiceChunks.get(a.deliveryId);if(g){this.pendingVoiceChunks.delete(a.deliveryId);let b=this.voiceStreams.get(g);b&&!this.cancelledVoiceTurns.has(g)&&(this.flushVoiceStream(b,"eager"),this.scheduleVoiceStreamFlush(b))}return{deliveryId:a.deliveryId,acknowledged:!0}}async stopRealtime(){for(let a of(this.realtimeDeliveryEpoch+=1,await this.rpc("thread/realtime/stop",{threadId:this.identity.threadId}),this.rejectRealtimeStart(Error("Realtime session stopped during startup")),this.realtimeFailure=null,this.realtimeSessionId=null,this.voiceStreams.values()))this.clearVoiceStreamTimer(a),a.fallbackToTerminal=!0}async answer(a,b){if(this.dead||this.releasing||this.released||!this.writerFenceAllowsActuation())throw Error("Codex app-server host is unavailable");let c=this.attentions.get(a);if(!c)throw Error("attention request is missing or already answered");if(c.answer)throw Error("attention answer is already awaiting confirmation");await new Promise((a,d)=>{let e=setTimeout(()=>{c.answer=void 0;let a=Error("attention answer timed out; outcome is uncertain");d(a),this.fail(a)},this.requestTimeoutMs);c.answer={resolve:a,reject:d,timer:e},this.write({jsonrpc:"2.0",id:c.rpcId,result:b??{}})})}async health(){return this.currentState()}onStateChange(a){return this.stateListeners.add(a),a(this.currentState()),()=>this.stateListeners.delete(a)}setWriterFence(a){this.writerFence=a}writerFenceAllowsActuation(){try{return this.writerFence?.()??!0}catch{return!1}}currentState(){let a=this.reaped||this.released?null:this.child.pid??null,b=a&&"owned"===this.childProcessOwnership()?this.childStartIdentity:null;return{status:this.dead?"dead":this.released?"unhosted":this.attentions.size>0?"attention":this.activeTurnId?"active":this.engineStatus,sessionKey:this.identity.threadId,endpoint:a?`stdio:${a}`:"stdio:released",pid:a,processStartIdentity:b,eventCursor:this.cursor,protocolVersion:this.protocolVersion,activeTurnRef:this.activeTurnId,pendingAttention:[...this.attentions.keys()],activeFlags:[...this.activeFlags],account:this.account}}async release(){if(!this.released){if(!this.releasePromise){let a=this.releaseAndReap();this.releasePromise=a,a.catch(()=>{this.releasePromise===a&&(this.releasePromise=null)})}return this.releasePromise}}async releaseIfOwned(a){let b=this.child.pid;return!this.released&&!this.releasing&&null===this.releasePromise&&!!b&&null!==a.startIdentity&&b===a.pid&&this.childStartIdentity===a.startIdentity&&"owned"===this.childProcessOwnership()&&(await this.release(),!0)}async releaseAndReap(){if(this.realtimeDeliveryEpoch+=1,this.realtimeSessionId){let a=this.rpc("thread/realtime/stop",{threadId:this.identity.threadId},2e3);await a.catch(()=>void 0),this.realtimeSessionId=null}for(let a of(this.releasing=!0,this.unresolvedVoicePersonaBootstrap=null,this.rejectRealtimeStart(Error("Codex app-server host released")),this.rejectPendingAnswers(Error("Codex app-server host released")),this.rejectPendingDeliveries(Error("Codex app-server host released")),this.rejectPendingCompactions(Error("Codex app-server host released")),this.pending.values()))clearTimeout(a.timer),a.reject(Error("Codex app-server host released"));this.pending.clear();let a=this.startTermination(),b=this.childProcessOwnership();if(!this.reaped&&("gone"===b||"recycled"===b))return void await this.finishReleaseAfterGroupCleanup();if(this.reaped||"owned"!==b||a||(a=this.startTermination()),!this.reaped&&!a)throw Error("Codex app-server child ownership is unknown");if(!await this.waitForReap(this.shutdownGraceMs)){let a=this.childProcessOwnership();if(!this.reaped&&("gone"===a||"recycled"===a))return void await this.finishReleaseAfterGroupCleanup();if(!this.reaped&&"unknown"===a)throw Error("Codex app-server child ownership is unknown");if(this.signalTermination("SIGKILL"),!await this.waitForReap(this.shutdownGraceMs)){let a=this.childProcessOwnership();if(!this.reaped&&("gone"===a||"recycled"===a))return void await this.finishReleaseAfterGroupCleanup();if(!this.reaped&&"unknown"===a)throw Error("Codex app-server child ownership is unknown");throw Error("Codex app-server child could not be reaped")}}await this.finishReleaseAfterGroupCleanup()}async finishReleaseAfterGroupCleanup(){await this.terminationPromise,this.finishRelease()}finishRelease(){if(this.released)return;this.clearVoiceStreamTimers(),this.failureCleanupTimer&&(clearTimeout(this.failureCleanupTimer),this.failureCleanupTimer=null),this.released=!0,this.releasing=!1,this.activeTurnId=null,this.attentions.clear(),this.setSessionStatus("unhosted",[]),(this.ledgerFailed||!this.eventLedgerRestored)&&this.notifyStateListeners(),this.closeSubscribers();let a=this.releaseCleanup;this.releaseCleanup=null,a?.()}completeGroupCleanupAfterReap(){if(this.terminationStarted&&this.resolveTermination){this.terminationTimer&&(clearTimeout(this.terminationTimer),this.terminationTimer=null);try{"gone"===this.childProcessOwnership()&&(0,i.v)(this.child.pid,"SIGKILL",this.signalProcess)}finally{this.resolveTermination(),this.resolveTermination=null}}}startTermination(){if(this.terminationStarted)return!0;try{this.child.stdin.end()}catch{}let a=this.childProcessOwnership();return"gone"===a?((0,i.v)(this.child.pid,"SIGTERM",this.signalProcess),(0,i.v)(this.child.pid,"SIGKILL",this.signalProcess),this.terminationStarted=!0,this.terminationPromise=Promise.resolve(),!0):"owned"===a&&"unsafe"!==this.signalTermination("SIGTERM")&&(this.terminationStarted=!0,this.terminationPromise=new Promise(a=>{this.resolveTermination=a}),this.terminationTimer=setTimeout(()=>{this.terminationTimer=null;try{this.signalTermination("SIGKILL")}finally{this.resolveTermination?.(),this.resolveTermination=null}},this.shutdownGraceMs),!0)}childProcessOwnership(){let a=this.child.pid;if(!a||!Number.isInteger(a)||a<=0||!this.pidAlive(a))return"gone";let b=this.processIdentity(a);return null===this.childStartIdentity||null===b?"unknown":b===this.childStartIdentity?"owned":"recycled"}signalTermination(a){let b=this.childProcessOwnership();return"gone"===b?((0,i.v)(this.child.pid,a,this.signalProcess),"attempted"):this.reaped||"owned"!==b?"unsafe":((0,i.f)(this.child,a,this.signalProcess),"attempted")}async waitForReap(a){let b;if(this.reaped)return!0;try{return await Promise.race([this.reapedPromise.then(()=>!0),new Promise(c=>{b=setTimeout(()=>c(!1),a)})])}finally{b&&clearTimeout(b)}}emit(a){let b;if(this.ledgerFailed)return;if(!this.eventLedgerRestored){if(this.preRestoreEvents.length+this.preRestoreMessages.length>=256){this.ledgerFailed=!0,this.failWithoutLedger(Error("Codex app-server pre-restore event buffer exceeded its bounded capacity"));return}this.preRestoreEvents.push(a);return}try{b=(0,K.RO)(this.cursor)}catch(a){this.ledgerFailed=!0,this.failWithoutLedger(Error(ad(a)));return}this.cursor=b;let c={...a,seq:b};try{this.eventStore.append(this.identity.threadId,c)}catch(a){this.ledgerFailed=!0,this.cursor=this.events.at(-1)?.seq??Math.max(0,this.cursor-1),this.failWithoutLedger(Error(`runtime event ledger failed: ${ad(a)}`));return}for(let a of(this.events.push(c),this.subscribers))a.queue.push(c),a.wake?.();this.notifyStateListeners()}restoreEvents(){let a=this.eventStore.load(this.identity.threadId),b=new Map([...this.attentions].filter(([,a])=>"current"===a.origin));for(let b of(this.attentions.clear(),this.clearVoiceStreamTimers(),this.voiceStreams.clear(),this.pendingVoiceChunks.clear(),this.cancelledVoiceTurns.clear(),this.events.splice(0,this.events.length,...a),this.cursor=(0,K.dq)(this.identity.threadId,a.at(-1)?.seq??0,this.cursor,this.onEventCursorRecovery),a)){if("turn-started"===b.kind&&(this.cancelledVoiceTurns.delete(b.turnId),this.activeTurnId=b.turnId),"delta"===b.kind&&this.observeVoiceDelta(b.turnId,b.text),"voice-chunk"===b.kind){let a=(0,G.Im)([b.delivery])[0],c=a?.responses[0],d=a?.sourceTurnId?this.voiceStream(a.sourceTurnId):null;a?.streamChunk&&c&&d&&a.streamChunk.startOffset===d.emittedChars&&d.buffer.startsWith(c.text)?(d.buffer=d.buffer.slice(c.text.length),d.emittedChars=a.streamChunk.endOffset,d.emittedHash.update(c.text),d.nextChunkIndex=Math.max(d.nextChunkIndex,a.streamChunk.index+1),this.pendingVoiceChunks.set(a.deliveryId,a.sourceTurnId)):d&&(d.fallbackToTerminal=!0,d.buffer="")}if("item"===b.kind&&"completed"===b.phase&&b.turnId&&(0,G.mT)(b.item,"restored")){let a=this.voiceStreams.get(b.turnId);a&&this.resetVoiceStreamSegment(a)}if("turn-ended"===b.kind){b.turnId===this.activeTurnId&&(this.activeTurnId=null);let a=this.voiceStreams.get(b.turnId);a&&this.clearVoiceStreamTimer(a),this.voiceStreams.delete(b.turnId),"completed"!==b.status&&this.cancelledVoiceTurns.add(b.turnId)}if("attention"===b.kind&&this.attentions.set(b.id,{rpcId:"restored",method:b.method,origin:"restored"}),"attention-resolved"===b.kind&&this.attentions.delete(b.id),"realtime-delivery-progress"===b.kind&&this.realtimeDeliveries.set(b.deliveryId,{digest:b.digest,responseIndex:b.responseIndex,offset:b.offset,acknowledged:!1}),"realtime-delivery-acknowledged"===b.kind){let a=this.realtimeDeliveries.get(b.deliveryId);this.realtimeDeliveries.set(b.deliveryId,{digest:b.digest,responseIndex:a?.responseIndex??0,offset:a?.offset??0,acknowledged:!0}),this.pendingVoiceChunks.delete(b.deliveryId)}"session-status"===b.kind&&(this.engineStatus=b.status,this.activeFlags=[...b.activeFlags??[]],("unhosted"===b.status||"dead"===b.status)&&(this.activeTurnId=null,this.attentions.clear()))}for(let[a,c]of b)this.attentions.set(a,c);return this.eventLedgerRestored=!0,a.length}reconcileAfterOpen(a,b){let c=a??{type:"idle",activeFlags:[]};if("active"===c.type&&!b)throw Error("thread/resume returned active status without an active turn id");let d=null!==b&&this.bufferedTerminalTurnIds.has(b);if("active"===c.type&&b&&!d&&this.activeTurnId!==b&&(this.activeTurnId&&this.emit({kind:"turn-ended",turnId:this.activeTurnId,status:"error"}),this.activeTurnId=b,this.emit({kind:"turn-started",turnId:b})),this.activeTurnId&&"active"!==c.type){let a=this.activeTurnId;this.activeTurnId=null,this.emit({kind:"turn-ended",turnId:a,status:"error"})}for(let[a,b]of[...this.attentions])"restored"===b.origin&&(this.attentions.delete(a),this.emit({kind:"attention-resolved",id:a,resolution:"host-restarted"}));this.emitThreadStatus(d&&!this.activeTurnId?{type:"idle",activeFlags:[]}:c)}reconcileThreadHistory(a){for(let b of aj(a))this.reconcileTurnHistory(b)}reconcileTurnHistory(a){let b=ab(a,"id");if(!b)return;let c=this.events.filter(a=>"turnId"in a&&a.turnId===b),d=ab(a,"status"),e=c.some(a=>"turn-started"===a.kind);this.bufferedTerminalTurnIds.has(b)||e&&("inProgress"!==d||this.activeTurnId===b)||(this.activeTurnId=b,this.emit({kind:"turn-started",turnId:b}));let f=new Map;for(let a of c){if("item"!==a.kind||"completed"!==a.phase)continue;let b=ak(a.item);f.set(b,(f.get(b)??0)+1)}if(Array.isArray(a.items))for(let c of a.items){let a=this.boundImageBodies(c),d=ak(a),e=f.get(d)??0;if(e>0){f.set(d,e-1);continue}this.emit({kind:"item",turnId:b,item:a,phase:"completed"})}if("completed"===d||"interrupted"===d||"failed"===d||"error"===d){let a=ah(d),e=c.findLast(a=>"turn-ended"===a.kind);(e?.kind!=="turn-ended"||e.status!==a)&&this.emit({kind:"turn-ended",turnId:b,status:a}),this.activeTurnId===b&&(this.activeTurnId=null)}}rememberConfirmedDeliveries(a){for(let b of aj(a)){let a=ab(b,"id");if(a&&Array.isArray(b.items))for(let c of b.items)this.rememberConfirmedDelivery(a,c)}}async confirmedDelivery(a){let b,c=this.confirmedDeliveries.get(a.id);if(c)return this.confirmedReceipt(a,c);try{let a=this.activeTurnId?3*this.requestTimeoutMs:this.requestTimeoutMs;b=await this.rpc("thread/read",{threadId:this.identity.threadId,includeTurns:!0},a)}catch(b){let a=ad(b);if(/not materialized yet/i.test(a)&&/before first user message/i.test(a))return null;throw b}if(this.dead)throw Error(ad(this.failure??"Codex app-server host is unavailable"));this.rememberConfirmedDeliveries(b);let d=this.confirmedDeliveries.get(a.id);return d?this.confirmedReceipt(a,d):null}awaitDeliveryConfirmation(a,b){let c,d,e=this.confirmedDeliveries.get(a.id);if(e)return this.confirmedReceipt(a,e),e.receipt=b,Promise.resolve(b);let f=this.pendingDeliveries.get(a.id);if(f)return f.contentDigest!==a.contentDigest?Promise.reject(Error("Codex queue entry id belongs to a different payload")):f.promise;let g=new Promise((a,b)=>{c=a,d=b}),h=setTimeout(()=>{this.pendingDeliveries.get(a.id)?.promise===g&&this.fail(Error("Codex delivery confirmation timed out; outcome is uncertain"))},this.deliveryConfirmationTimeoutMs),i={text:a.text??"",contentDigest:a.contentDigest,receipt:b,promise:g,resolve:c,reject:d,timer:h};return this.pendingDeliveries.set(a.id,i),g}confirmedReceipt(a,b){if(!(b.contentDigest?b.contentDigest===a.contentDigest:b.text===a.text))throw Error("Codex queue entry id belongs to a different payload");return b.receipt}rememberConfirmedDelivery(a,b){let c=aa(b);if(!c||"userMessage"!==ab(c,"type"))return;let d=ab(c,"clientId");if(!d)return;let e=am(c),f=null===e?null:x(e),g=f?.text??null,h=f?.contentDigest??null,i=this.confirmedDeliveries.get(d),j=this.pendingDeliveries.get(d),k={receipt:i?.receipt??j?.receipt??{outcome:"turn-started",turnId:a},text:i&&(i.text!==g||i.contentDigest!==h)?null:g,contentDigest:i&&(i.text!==g||i.contentDigest!==h)?null:h};if(this.confirmedDeliveries.set(d,k),j){this.pendingDeliveries.delete(d),clearTimeout(j.timer);try{j.resolve(this.confirmedReceipt({id:d,text:j.text,contentDigest:j.contentDigest},k))}catch(a){j.reject(a instanceof Error?a:Error(ad(a)))}}}flushPreRestoreEvents(){for(let a of this.preRestoreEvents.splice(0))this.emit(a)}beginBufferedNotificationReconciliation(){this.bufferedTerminalTurnIds.clear();let a=[];for(let b of this.events){if("attention"===b.kind&&!this.attentions.has(b.id))continue;let c=al(b);c&&a.push(c)}let b=[],c=this.activeTurnId;for(let{message:a}of this.preRestoreMessages){let d="string"==typeof a.method?a.method:null;if(!d)continue;let e=aa(a.params)??{},f=a.id;if("number"==typeof f||"string"==typeof f){let a=al({kind:"attention",id:`${d}:${String(f)}`,method:d,attention:e});a&&b.push(a);continue}let g=ag(e);if("turn/started"===d&&g&&(c=g),"item/agentMessage/delta"===d){let a=al({kind:"delta",turnId:g??c??"unknown",text:ab(e,"delta")??""});a&&b.push(a)}"turn/completed"===d&&g===c&&(c=null)}let d=Math.min(a.length,b.length),e=0;for(let c=d;c>0;c-=1){let d=a.length-c;if(b.slice(0,c).every((b,c)=>b===a[d+c])){e=c;break}}this.bufferedNotificationOverlap=b.slice(0,e)}consumeBufferedNotification(a){let b=al(a);return b&&this.bufferedNotificationOverlap[0]===b?(this.bufferedNotificationOverlap.shift(),!0):(this.bufferedNotificationOverlap=[],!1)}endBufferedNotificationReconciliation(){this.bufferedNotificationOverlap=[],this.bufferedTerminalTurnIds.clear()}flushPreRestoreMessages(a){let b=new Map(aj(a).flatMap(a=>{let b=ab(a,"id");return b?[[b,a]]:[]}));for(let{message:a,bytes:c}of this.preRestoreMessages.splice(0)){if(this.preRestoreBytes-=c,"turn/completed"===a.method){let c=ag(aa(a.params)??{}),d=c?b.get(c):null;d&&this.reconcileTurnHistory(d)}if(this.acceptParsedMessage(a,!0),this.dead||this.releasing||this.released)break}this.preRestoreBytes=0}notifyStateListeners(){let a=this.currentState();for(let b of this.stateListeners)b(a)}closeSubscribers(){for(let a of this.subscribers)a.closed=!0,a.wake?.();this.subscribers.clear()}setSessionStatus(a,b){let c=b.filter(a=>a!==y.Zx);"supported"===this.imageInputSupport&&"unhosted"!==a&&"dead"!==a&&c.push(y.Zx),this.engineStatus=a,this.activeFlags=c,this.emit({kind:"session-status",status:a,...c.length>0?{activeFlags:[...c]}:{}})}emitThreadStatus(a){if("systemError"===a.type)return void this.setSessionStatus("idle",a.activeFlags);let b="notLoaded"===a.type?"unhosted":a.type;this.setSessionStatus(b,a.activeFlags)}rpc(a,b={},c=this.requestTimeoutMs){if(this.dead||this.releasing||this.released)return Promise.reject(Error("Codex app-server host is unavailable"));let d=this.nextRpcId++;return Y.has(a)&&this.trackReplayEnvelopeRequest(d),new Promise((e,f)=>{let g=setTimeout(()=>{this.pending.delete(d),"thread/read"===a&&this.rememberLateThreadReadResponse(d,c);let b=Error(`${a} timed out${_.has(a)?"; outcome is uncertain":""}`);f(b),_.has(a)&&this.fail(b)},c);this.pending.set(d,{resolve:e,reject:f,timer:g}),this.write({jsonrpc:"2.0",id:d,method:a,params:b})})}rememberLateThreadReadResponse(a,b){let c=Date.now();for(let[a,b]of this.lateThreadReadResponses)b<=c&&this.lateThreadReadResponses.delete(a);let d=Math.max(3*b,1e3);for(this.lateThreadReadResponses.set(a,c+d);this.lateThreadReadResponses.size>32;){let a=this.lateThreadReadResponses.keys().next().value;if(void 0===a)break;this.lateThreadReadResponses.delete(a)}}consumeLateThreadReadResponse(a){let b=this.lateThreadReadResponses.get(a);return void 0!==b&&(this.lateThreadReadResponses.delete(a),b>Date.now())}notify(a,b){this.write({jsonrpc:"2.0",method:a,params:b})}write(a){try{this.child.stdin.write(`${JSON.stringify(a)}
82
+ `)}catch(a){this.fail(Error(`Codex app-server stdin failed: ${ad(a)}`))}}boundImageBodies(a){try{var b;let c,d;return(b={store:(a,b)=>{let c=(0,E.PF)(),[d]=c.putMany([{base64:a.toString("base64"),mime:b}]);return d?c.pathFor(d):null}},c=[],{value:(d=(a,e)=>{if("string"==typeof a){if(!e||!A.has(e))return a;let d=function(a){let b=z.exec(a.trim());if(!b)return null;let c=(0,y.CC)(b[1]);if(!c)return null;let d=Buffer.from(b[2],"base64");return d.byteLength?{data:d,mime:c}:null}(a);if(!d)return a;let g=function(a,b,c){let d=f().createHash("sha256").update(a).digest("hex"),e=null;try{e=c.store(a,b)}catch{e=null}return{type:"localImage",path:e??"",sha256:d,mime:b,bytes:a.byteLength}}(d.data,d.mime,b);return c.push({sha256:g.sha256,mime:d.mime,bytes:g.bytes}),g}if(Array.isArray(a)){let b=!1,c=a.map(a=>{let c=d(a,e);return c!==a&&(b=!0),c});return b?c:a}if(!a||"object"!=typeof a)return a;let g=!1,h={};for(let[b,c]of Object.entries(a)){let a=d(c,b);a!==c&&(g=!0),h[b]=a}return g?h:a})(a,null),captured:c}).value}catch{return a}}acceptStdout(a){let b=a;for(;b;){if(this.dead||this.releasing||this.released){this.stdoutBuffer="",this.replayReduction=null;return}b=this.replayReduction?this.feedReplayReduction(b):this.acceptPlainStdout(b)}(this.dead||this.releasing||this.released)&&(this.stdoutBuffer="",this.replayReduction=null)}acceptPlainStdout(a){this.stdoutBuffer+=a;let b=this.stdoutBuffer.indexOf("\n");for(;b>=0;){let a=this.stdoutBuffer.slice(0,b).trim();if(this.stdoutBuffer=this.stdoutBuffer.slice(b+1),Buffer.byteLength(a)>X){if(null===this.awaitedReplayEnvelopeId(a))return this.fail(Error("Codex app-server emitted an oversized JSONL frame")),"";let b=this.stdoutBuffer;if(this.stdoutBuffer="",this.replayReduction=new D($),!this.feedReplayFrame(a))return"";return this.finishReplayReduction(),this.dead||this.releasing||this.released?"":b}if(a&&this.acceptMessage(a),this.dead||this.releasing||this.released)return this.stdoutBuffer="","";b=this.stdoutBuffer.indexOf("\n")}let c=Buffer.byteLength(this.stdoutBuffer);if(c>262144&&null!==this.awaitedReplayEnvelopeId(this.stdoutBuffer)){let a=this.stdoutBuffer;return this.stdoutBuffer="",this.replayReduction=new D($),a}return c>X&&(this.fail(Error("Codex app-server emitted an oversized JSONL frame")),this.stdoutBuffer=""),""}feedReplayReduction(a){let b=a.indexOf("\n");return this.feedReplayFrame(-1===b?a:a.slice(0,b))&&-1!==b?(this.finishReplayReduction(),this.dead||this.releasing||this.released?"":a.slice(b+1)):""}feedReplayFrame(a){try{return this.replayReduction.feed(a),!0}catch(a){return this.replayReduction=null,this.fail(a instanceof B?a:Error(ad(a))),!1}}finishReplayReduction(){let a,b=this.replayReduction;this.replayReduction=null;try{a=b.finish().trim(),Buffer.byteLength(a)>X&&(a=(function(a,b,c){let d=a,e=c.maxStringUnits,f=!1;for(;Buffer.byteLength(d)>b&&e>64;){e=Math.max(64,Math.floor(e/4));let a=new D({...c,maxStringUnits:e,...f?{maxImageStringUnits:e}:{}});a.feed(d),d=a.finish(),f=!0}return d})(a,X,$).trim())}catch(a){this.fail(a instanceof B?a:Error(ad(a)));return}Buffer.byteLength(a)>X?this.fail(Error("Codex app-server emitted an oversized JSONL frame")):a&&this.acceptMessage(a)}awaitedReplayEnvelopeId(a){let b=Z.exec(a.slice(0,64).trimStart());if(!b)return null;let c=Number(b[1]);return this.replayEnvelopeRequestIds.has(c)?c:null}trackReplayEnvelopeRequest(a){for(this.replayEnvelopeRequestIds.add(a);this.replayEnvelopeRequestIds.size>64;){let a=this.replayEnvelopeRequestIds.values().next().value;if(void 0===a)break;this.replayEnvelopeRequestIds.delete(a)}}acceptStderr(a){for(this.stderrTail+=a;Buffer.byteLength(this.stderrTail,"utf8")>16384;)this.stderrTail=this.stderrTail.slice(Math.max(1,Math.floor(this.stderrTail.length/4)))}acceptMessage(a){let b;try{b=aa(JSON.parse(a))}catch{b=null}if(!b)return void this.fail(Error("Codex app-server emitted malformed JSON-RPC"));if("string"==typeof b.method&&!this.eventLedgerRestored){let c=Buffer.byteLength(a);return this.preRestoreEvents.length+this.preRestoreMessages.length>=256||this.preRestoreBytes+c>4194304?void this.fail(Error("Codex app-server pre-restore notification buffer exceeded its bounded capacity")):(this.preRestoreMessages.push({message:b,bytes:c}),void(this.preRestoreBytes+=c))}this.acceptParsedMessage(b)}acceptParsedMessage(a,b=!1){let c=a.id,d="string"==typeof a.method?a.method:null;if(("number"==typeof c||"string"==typeof c)&&!d){if("number"!=typeof c)return this.fail(Error("Codex app-server response id is invalid"));this.replayEnvelopeRequestIds.delete(c);let b=this.pending.get(c);if(!b&&this.consumeLateThreadReadResponse(c))return;if(!b)return this.fail(Error("Codex app-server response has no matching request"));this.pending.delete(c),clearTimeout(b.timer);let d=aa(a.error);return void(d?b.reject(Error(`Codex app-server request failed: ${ad(d.message??"unknown error")}`)):b.resolve(a.result))}if(!d)return this.fail(Error("Codex app-server message has no method"));let e=aa(a.params)??{};if("number"==typeof c||"string"==typeof c){let a=`${d}:${String(c)}`;this.attentions.set(a,{rpcId:c,method:d,origin:"current"});let f={kind:"attention",id:a,method:d,attention:e};b&&this.consumeBufferedNotification(f)||this.emit(f);return}this.acceptNotification(d,e,b)}acceptNotification(a,b,c=!1){if("thread/realtime/started"===a){let a=this.pendingRealtimeStart;if(!a||ab(b,"threadId")!==this.identity.threadId)return;a.started=!0,a.realtimeSessionId=ab(b,"realtimeSessionId"),this.realtimeSessionId=a.realtimeSessionId,this.resumeVoiceStreams(),this.resolveRealtimeStart();return}if("thread/realtime/sdp"===a){let a=this.pendingRealtimeStart;return a&&ab(b,"threadId")===this.identity.threadId?(a.sdp=ab(b,"sdp"),a.sdp)?void this.resolveRealtimeStart():void this.rejectRealtimeStart(Error("Codex app-server returned an empty WebRTC SDP answer")):void 0}if("thread/realtime/error"===a){if(ab(b,"threadId")!==this.identity.threadId)return;let a=ab(b,"message")??"Codex realtime session failed";this.recordRealtimeFailure(a),this.rejectRealtimeStart(Error(a));return}if("thread/realtime/closed"===a){if(ab(b,"threadId")!==this.identity.threadId)return;let a=ab(b,"reason")??"Codex realtime session closed";this.recordRealtimeFailure(a,{keepExisting:!0}),this.rejectRealtimeStart(Error(a));return}let d=ag(b);if("serverRequest/resolved"===a){let a=b.requestId;if("number"!=typeof a&&"string"!=typeof a)return;let c=[...this.attentions.entries()].find(([,b])=>String(b.rpcId)===String(a));if(!c)return;let d=c[1].answer;d&&(clearTimeout(d.timer),d.resolve()),this.attentions.delete(c[0]),this.emit({kind:"attention-resolved",id:c[0],resolution:d?"answered":"server-resolved"});return}if("turn/started"===a&&d){if(c){let a=this.events.some(a=>"turn-started"===a.kind&&a.turnId===d),b=this.events.some(a=>"turn-ended"===a.kind&&a.turnId===d);if(a&&(b||null!==this.activeTurnId))return}this.cancelledVoiceTurns.delete(d),this.activeTurnId=d,this.emit({kind:"turn-started",turnId:d});return}if("item/agentMessage/delta"===a){let a={kind:"delta",turnId:d??this.activeTurnId??"unknown",text:ab(b,"delta")??""};c&&this.consumeBufferedNotification(a)||(this.emit(a),this.observeVoiceDelta(a.turnId,a.text));return}if(("item/started"===a||"item/completed"===a)&&"item"in b){"item/completed"===a&&d&&this.rememberConfirmedDelivery(d,b.item);let e=d??this.activeTurnId,f="item/started"===a?"started":"completed";if(c&&e){if(this.events.some(a=>"turn-ended"===a.kind&&a.turnId===e))return;let a=ak(b.item);if(this.events.some(b=>"item"===b.kind&&b.turnId===e&&b.phase===f&&ak(b.item)===a))return;this.events.some(a=>"turn-started"===a.kind&&a.turnId===e)||(this.activeTurnId=e,this.emit({kind:"turn-started",turnId:e}))}let g="completed"===f&&e?this.finalizeVoiceStreamItem(e,b.item):void 0;this.emit({kind:"item",turnId:e,item:this.boundImageBodies(b.item),phase:f,...void 0!==g?{voiceResponse:g}:{}}),aa(b.item)?.type==="contextCompaction"&&this.acceptCompactionItem(b.item,f);return}if("turn/completed"===a&&d){let a=aa(b.turn),e=ah(a?.status);if(c&&this.bufferedTerminalTurnIds.add(d),c&&this.events.some(a=>"turn-ended"===a.kind&&a.turnId===d))return;if(this.activeTurnId===d&&(this.activeTurnId=null),c&&!this.events.some(a=>"turn-started"===a.kind&&a.turnId===d)&&this.emit({kind:"turn-started",turnId:d}),"completed"!==e)this.cancelVoiceStream(d);else{let a=this.voiceStreams.get(d);a&&this.clearVoiceStreamTimer(a),this.voiceStreams.delete(d)}this.emit({kind:"turn-ended",turnId:d,status:e}),this.settlePendingCompactionsFromTerminalTurn(a,e);return}if("account/rateLimits/updated"===a)return void this.emit({kind:"limits",snapshot:b});if("thread/compacted"===a)return void this.acceptCompactedNotification(b);if("thread/status/changed"===a){let a=ao(b);a&&this.emitThreadStatus(a)}}fail(a,b=[]){if(!this.dead&&!this.released){for(let b of(this.clearVoiceStreamTimers(),this.dead=!0,this.failure=a,this.activeTurnId=null,this.rejectRealtimeStart(a),this.rejectPendingAnswers(a),this.rejectPendingDeliveries(a),this.rejectPendingCompactions(a),this.attentions.clear(),this.pending.values()))clearTimeout(b.timer),b.reject(Error(ad(a)));this.pending.clear(),this.setSessionStatus("dead",b),this.closeSubscribers(),this.startFailureCleanup()}}failWithoutLedger(a){if(!this.dead&&!this.released){for(let b of(this.dead=!0,this.failure=a,this.engineStatus="dead",this.activeFlags=[],this.activeTurnId=null,this.rejectRealtimeStart(a),this.rejectPendingAnswers(a),this.rejectPendingDeliveries(a),this.rejectPendingCompactions(a),this.attentions.clear(),this.pending.values()))clearTimeout(b.timer),b.reject(Error(ad(a)));this.pending.clear(),this.notifyStateListeners(),this.closeSubscribers(),this.startFailureCleanup()}}startFailureCleanup(){this.release().catch(()=>{this.released||this.failureCleanupTimer||(this.failureCleanupTimer=setTimeout(()=>{this.failureCleanupTimer=null,this.startFailureCleanup()},this.shutdownGraceMs))})}rejectPendingAnswers(a){let b=Error(ad(a));for(let a of this.attentions.values())a.answer&&(clearTimeout(a.answer.timer),a.answer.reject(b),a.answer=void 0)}rejectPendingDeliveries(a){let b=Error(ad(a));for(let a of this.pendingDeliveries.values())clearTimeout(a.timer),a.reject(b);this.pendingDeliveries.clear()}resolveRealtimeStart(){let a=this.pendingRealtimeStart;a?.started&&null!==a.sdp&&(this.pendingRealtimeStart=null,clearTimeout(a.timer),a.resolve({sdp:a.sdp,realtimeSessionId:a.realtimeSessionId,personaBootstrap:a.personaBootstrap}))}currentRealtimeSessionId(){return this.realtimeSessionId}lastRealtimeFailure(){return this.realtimeFailure}recordRealtimeFailure(a,b={}){b.keepExisting&&this.realtimeFailure||(this.realtimeFailure={message:a.slice(0,500),at:new Date().toISOString(),realtimeSessionId:this.realtimeSessionId})}rejectRealtimeStart(a){let b=this.pendingRealtimeStart;b&&(this.pendingRealtimeStart=null,clearTimeout(b.timer),b.reject(Error(ad(a))))}}},3302:(a,b,c)=>{c.d(b,{X6:()=>h,Zg:()=>g,a$:()=>j,kv:()=>i});var d=c(76760),e=c.n(d);function f(a){return!a||a.startsWith("..")||e().isAbsolute(a)?null:a.split(e().sep)}function g(a){if(!a.endsWith(".jsonl"))return null;let b=f(a);if(!b||b.length<4)return null;let c=b[0]??"",d=b[1]??"";if(!c||!d||"subagents"!==b[2])return null;let g=b.at(-1)??"";return g.startsWith("agent-")&&g.endsWith(".jsonl")?{parentName:e().join(c,`${d}.jsonl`),slug:c,parentSessionId:d,nestedSegments:b.slice(3,-1)}:null}function h(a){return!!a.endsWith(".jsonl")&&!!e().basename(a).startsWith("agent-")&&a.split(e().sep).includes("subagents")}function i(a){return a.includes(e().sep+"subagents"+e().sep)}function j(a){let b=f(a);if(!b||!b.includes("subagents"))return!1;let c=b.at(-1)??"";return"journal.jsonl"===c||c.endsWith(".meta.json")}},4116:(a,b,c)=>{c.d(b,{ph:()=>ao,Ou:()=>as,tk:()=>bo,oP:()=>a2,l5:()=>bd,MA:()=>a3,kU:()=>aZ});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57975),k=c(50920),l=c(92233),m=c(26200),n=c(14071),o=c(85923),p=c(91701),q=c(31973);let r="identity-wave-a-d-913";function s(a,b){if(!b.startsWith("conversation_"))return null;let c=b,d=new Set;for(;a.conversationAliases[c]&&!d.has(c);)d.add(c),c=a.conversationAliases[c];return d.has(c)?null:c}function t(a){if("string"!=typeof a)return null;let b=a.split(/\r?\n/).find(a=>a.trim());return(0,m.tU)(b,120)}function u(a){return"string"==typeof a&&null===(0,m.tU)(a)}function v(a){if("failed"===a.kind)throw a.error;return"found"===a.kind?a.value:null}function w(a,b,c){a.path===b&&(a.path=c),a.continuityPaths=[...new Set(a.continuityPaths.map(a=>a===b?c:a))]}function x(a,b,c){let d=b.conversationId?s(a,b.conversationId):null,e=d?a.conversations[d]:null;if(!d||!e)return{changed:!1,engine:null};let f=b.predecessorConversationId?s(a,b.predecessorConversationId):null,g=f&&f!==d?a.conversations[f]:null,h=!!f&&!!g&&function(a,b,c){let d=new Set,e=c;for(;e;){if(e===b||d.has(e))return!0;d.add(e);let c=a.lineageEdges[e]?.parentConversationId;e=c?s(a,c):null}return!1}(a,d,f),i=h?null:f,j=h?null:g,k=a.memberships[d]??=[],l=!1;if(k.some(a=>"orchestrator"===a.kind&&a.containerId===b.project&&a.slot===`seat:${b.seatEpoch}`)||(k.push({conversationId:d,kind:"orchestrator",containerId:b.project,role:"orchestrator",slot:`seat:${b.seatEpoch}`,stageId:null,stageOrder:null,round:null,parentConversationId:j?i:null,runtime:null,createdAt:c}),l=!0),"orchestrator"!==e.agentRole&&(e.agentRole="orchestrator",l=!0),0!==e.delegationDepth&&(e.delegationDepth=0,l=!0),j&&!a.lineageEdges[d]){let b=e.generations.at(-1),f=j.generations.at(-1),g={childConversationId:d,parentConversationId:i,childSessionKey:b?(0,q.sz)(e.engine,b.path):null,parentSessionKey:f?(0,q.sz)(j.engine,f.path):null,childArtifactPath:b?.path??null,parentArtifactPath:f?.path??null,kind:"spawn",role:"orchestrator",reviewsConversationId:null,source:"viewer-spawn",evidence:{launchId:null,clientAttemptId:null,parentSource:null},createdAt:c};a.lineageEdges[d]=g,l=!0}return l&&(e.updatedAt=c),{changed:l,engine:e.engine}}function y(a,b){let c=!0===b.dryRun,d=c?structuredClone(a):a;if(d.identityMigrations[r])return{dryRun:c,alreadyCompleted:!0,retitled:0,rekeyed:0,quarantinedRekeys:0,edgesStamped:0};let e=function(a){let b=new Map;for(let c of Object.values(a.receipts).sort((a,b)=>a.createdAt.localeCompare(b.createdAt)).sort((a,b)=>Number("launch"===b.purpose)-Number("launch"===a.purpose))){let d=s(a,c.conversationId),e=t(c.launchDisplay?.prompt);d&&e&&!b.has(d)&&b.set(d,e)}return b}(d),f=function(a,b){let c=new Map;for(let d of Object.values(a.conversations)){if(!d.generations.at(-1))continue;let e=function(a){for(let b=a.generations.length-1;b>=0;b-=1){let c=(0,m.St)(a.generations[b].launchProfile.title);if(c)return c}return null}(d),f=function(a,b){if(b.generations.some(a=>u(a.launchProfile.title)))return!0;let c=new Set(b.generations.map(a=>a.path));return!!Object.values(a.entries).some(a=>c.has(a.artifactPath)&&u(a.launchProfile?.title))||Object.values(a.receipts).some(c=>s(a,c.conversationId)===b.id&&u(c.launchProfile.title))}(a,d),g=d.generations.flatMap(a=>{let c=v(function(a,b){try{let c=a.sharedPathForLegacy(b);if(!c||c.sharedPath===b)return{kind:"absent"};return{kind:"found",value:c}}catch(a){return{kind:"failed",error:a}}}(b,a.path));return c?[{legacyPath:a.path,...c}]:[]});c.set(d.id,{conversationTitle:e,needsTitleCleanup:f,pathRekeys:g,transcriptTitle:null})}return c}(d,b),g=function(a,b){let c=new Map,d=new Map,e=new Map,f=(a,b,c)=>{let d=a.get(b)??new Set;d.add(c),a.set(b,d)};for(let b of Object.values(a.conversations)){for(let a of b.generations)f(c,a.path,b.id),f(d,a.path,b.id),f(e,`${b.engine}:${a.id}`,b.id);for(let a of b.continuityPaths)f(c,a,b.id)}for(let b of Object.values(a.receipts))b.artifactPath&&f(c,b.artifactPath,s(a,b.conversationId)??`receipt:${b.launchId}`);for(let b of Object.values(a.entries)){let a=e.get(`${b.key.engine}:${b.key.sessionId}`);if(a?.size)for(let d of a)f(c,b.artifactPath,d);else f(c,b.artifactPath,`entry:${b.key.engine}:${b.key.sessionId}`)}let g=new Map,h=[],i=0;for(let[a,e]of b){let b=[];for(let f of e.pathRekeys){if(!f.identityEquivalent){i+=1;continue}let e=c.get(f.sharedPath),j=c.get(f.legacyPath),k=d.get(f.sharedPath),l=g.get(f.sharedPath);if(!j||1!==j.size||!j.has(a)||e&&[...e].some(b=>b!==a)||k&&f.sharedPath!==f.legacyPath||l&&l!==f.legacyPath){i+=1;continue}g.set(f.sharedPath,f.legacyPath),b.push(f),h.push({legacyPath:f.legacyPath,sharedPath:f.sharedPath})}e.pathRekeys=b}return{rekeys:h,quarantined:i}}(d,f);for(let a of Object.values(d.conversations)){let c=a.generations.at(-1),d=f.get(a.id);if(!c||!d?.needsTitleCleanup||null!==d.conversationTitle||e.has(a.id))continue;let g=d.pathRekeys.find(a=>a.legacyPath===c.path)?.sharedPath??c.path;d.transcriptTitle=v(function(a,b,c){try{let d=t(a.transcriptTitle(b,c));return d?{kind:"found",value:d}:{kind:"absent"}}catch(a){return{kind:"failed",error:a}}}(b,g,a.engine))}!c&&g.rekeys.length>0&&b.commitExternalPathRekeys?.(g.rekeys);let h=new Set,i=0,j=0,k=0;for(let a of Object.values(d.conversations)){if(!a.generations.at(-1))continue;let c=!1,g=f.get(a.id),k=g?.pathRekeys??[];if(k.length>0){for(let{legacyPath:b,sharedPath:c}of k){for(let d of(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.continuityPaths=a.continuityPaths.filter(a=>a!==c),a.generations))d.path===b&&(d.path=c);!function(a,b,c){for(let d of Object.values(a.entries))d.artifactPath===b&&(d.artifactPath=c);for(let d of Object.values(a.receipts))d.artifactPath===b&&(d.artifactPath=c),d.resumeSourcePath===b&&(d.resumeSourcePath=c);for(let d of Object.values(a.lineageEdges))d.childArtifactPath===b&&(d.childArtifactPath=c),d.parentArtifactPath===b&&(d.parentArtifactPath=c);for(let d of Object.values(a.heldDeliveries))d.artifactPaths=[...new Set(d.artifactPaths.map(a=>a===b?c:a))];for(let d of Object.values(a.conversations)){let a=d.migration;a&&(a.providerReceipt&&w(a.providerReceipt,b,c),a.pendingContinuityPaths=[...new Set(a.pendingContinuityPaths.map(a=>a===b?c:a))])}for(let d of Object.values(a.pendingSuccessorCleanups))w(d.receipt,b,c);let d=a.legacyResumePanes.panes[b];d&&(a.legacyResumePanes.panes[c]??=d,delete a.legacyResumePanes.panes[b])}(d,b,c)}j+=1,c=!0}if(g?.needsTitleCleanup){let b=g.conversationTitle??e.get(a.id)??g?.transcriptTitle??null;for(let c of a.generations)u(c.launchProfile.title)&&(c.launchProfile.title=b);let f=new Set(a.generations.map(a=>a.path));for(let a of Object.values(d.entries))f.has(a.artifactPath)&&a.launchProfile&&u(a.launchProfile.title)&&(a.launchProfile.title=b);for(let c of Object.values(d.receipts))s(d,c.conversationId)===a.id&&u(c.launchProfile.title)&&(c.launchProfile.title=b,b&&(c.identityWaveTitleBackfill=!0));b&&(i+=1),c=!0}c&&(a.updatedAt=b.now,h.add(a.engine))}for(let a of b.orchestratorSeats){let c=x(d,a,a.activatedAt??a.designatedAt??b.now),e=c.engine?{changed:!1,engine:null}:function(a,b){let c=b.conversationId?s(a,b.conversationId):null;if(!c||a.conversations[c])return{changed:!1,engine:null};let d=Object.values(a.receipts).find(b=>s(a,b.conversationId)===c);if(!d)return{changed:!1,engine:null};let e={project:b.project,seatEpoch:b.seatEpoch,conversationId:c,predecessorConversationId:b.predecessorConversationId?s(a,b.predecessorConversationId):null,designatedAt:b.designatedAt,activatedAt:b.activatedAt,path:b.path??null};return JSON.stringify(d.pendingOrchestratorSeatIdentity)===JSON.stringify(e)?{changed:!1,engine:d.engine}:(d.pendingOrchestratorSeatIdentity=e,{changed:!0,engine:d.engine})}(d,a),f=c.changed||e.changed,g=c.engine??e.engine;f&&g&&(k+=1,h.add(g))}for(let a of h)d.conversationRevision[a]+=1;return c||(d.identityMigrations[r]={completedAt:b.now,retitled:i,rekeyed:j,quarantinedRekeys:g.quarantined,edgesStamped:k}),{dryRun:c,alreadyCompleted:!1,retitled:i,rekeyed:j,quarantinedRekeys:g.quarantined,edgesStamped:k}}var z=c(55643),A=c(98934),B=c(14648);let C=Object.freeze(["reviewer","verifier"]);function D(a){return"string"==typeof a&&C.includes(a)}class E extends Error{constructor(a,b){super(b.guidance),this.receipt=a,this.rejection=b,this.name="SpawnAdmissionError"}}function F(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}let G="LLV_AGENT_REGISTRY_SQLITE";class H extends Error{constructor(...a){super(...a),this.name="RegistryBackendIdentityError"}}let I={readText(a){try{return g().readFileSync(a,"utf8")}catch(b){if("ENOENT"===b.code)return null;throw new H(`${i().basename(a)} is unreadable: ${b.code??"unknown error"}`)}},exists:a=>g().existsSync(a),writeText(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${(0,d.randomUUID)()}.tmp`,e=g().openSync(c,"wx",384);try{g().writeFileSync(e,b),g().fsyncSync(e)}finally{g().closeSync(e)}g().renameSync(c,a)}};function J(a){let b=i().basename(a).replace(/\.json$/,"");return i().join(i().dirname(a),`${b}.backend.json`)}function K(a){return a.endsWith(".json")?`${a.slice(0,-5)}.sqlite`:`${a}.sqlite`}function L(a){return"off"===a||"dual-write"===a||"read"===a||"sqlite"===a}function M(a=process.env){let b=a[G]??"off";if(L(b))return b;throw Error(`${G} must be off, dual-write, read, or sqlite`)}function N(a,b){let c;try{c=JSON.parse(a)}catch{throw new H(`${b} is not valid JSON`)}if(!c||"object"!=typeof c||Array.isArray(c))throw new H(`${b} is not an object`);let d=c;if(1!==d.schemaVersion)throw new H(`${b} declares schema version ${String(d.schemaVersion)}, but this build understands 1`);if(!L(d.mode))throw new H(`${b} declares an unknown backend mode`);let e=d.sqliteFile;if(null!==e&&"string"!=typeof e)throw new H(`${b} declares an invalid store filename`);if("string"==typeof e&&(""===e||e!==i().basename(e)))throw new H(`${b} must name its store as a bare filename`);if("off"!==d.mode&&null===e)throw new H(`${b} declares the ${d.mode} backend but names no store`);return{schemaVersion:1,mode:d.mode,sqliteFile:e??null,publishedAt:"string"==typeof d.publishedAt?d.publishedAt:""}}let O=new Set(["entries","receipts","conversations","lineageEdges"]),P=["entries","receipts","lineageEdges","memberships","conversations","conversationAliases","migrationIntents","heldDeliveries","deliveryOperationOwners","pendingSuccessorCleanups","pendingSupersedence"],Q=["importedResumePanes","legacyResumePanes","identityMigrations","conversationRevision","engineRouting","autoBalance","quotaObservations"];function R(a,b,c){if(null===a||"object"!=typeof a)return a;let d=c.get(a);if(d)return d;let e=new Proxy(a,{get:(a,d,e)=>R(Reflect.get(a,d,e),b,c),set:(a,c,d)=>(b(),Reflect.set(a,c,d)),deleteProperty:(a,c)=>(b(),Reflect.deleteProperty(a,c)),defineProperty:(a,c,d)=>(b(),Reflect.defineProperty(a,c,d))});return c.set(a,e),e}class S{markDecided(a){return this.decidedFiles.add(a),a}decideAssembled(a){return(0,z.$q)(a,this.mcpGrantPolicy),this.markDecided(a)}assertDecided(a){if(!this.decidedFiles.has(a))throw Error("agent registry rows cannot be persisted before the MCP grant decision has run (#739)")}constructor(a,b){this.filename=a,this.rowCache=new Map,this.revisionCache=null,this.readOnlyCache=null,this.decidedFiles=new WeakSet,g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});const c=process.getBuiltinModule?.("bun:sqlite");if(!c)throw Error("SQLite registry modes require the Bun runtime");const{Database:d}=c;this.db=new d(a,{create:!0,strict:!0}),this.normalize=b.normalize,this.onWriterWait=b.onWriterWait,this.onSnapshotLoad=b.onSnapshotLoad,this.onRowPayloadRead=b.onRowPayloadRead,this.onRowPayloadParse=b.onRowPayloadParse,this.onRevisionQuery=b.onRevisionQuery,this.mcpGrantPolicy=b.mcpGrantPolicy,this.db.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON; PRAGMA auto_vacuum = INCREMENTAL;"),this.db.exec(`
83
+ CREATE TABLE IF NOT EXISTS registry_meta (
84
+ key TEXT PRIMARY KEY,
85
+ value TEXT NOT NULL
86
+ );
87
+ CREATE TABLE IF NOT EXISTS registry_rows (
88
+ collection TEXT NOT NULL,
89
+ row_key TEXT NOT NULL,
90
+ value_json TEXT NOT NULL,
91
+ row_order INTEGER NOT NULL,
92
+ PRIMARY KEY(collection, row_key)
93
+ );
94
+ `),this.db.query("PRAGMA table_info(registry_rows)").all().some(a=>"row_order"===a.name)||this.db.exec(`
95
+ BEGIN IMMEDIATE;
96
+ ALTER TABLE registry_rows ADD COLUMN row_order INTEGER NOT NULL DEFAULT 0;
97
+ WITH ordered AS (
98
+ SELECT rowid, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY rowid) - 1 AS position
99
+ FROM registry_rows
100
+ )
101
+ UPDATE registry_rows
102
+ SET row_order = (SELECT position FROM ordered WHERE ordered.rowid = registry_rows.rowid);
103
+ INSERT INTO registry_meta(key, value) VALUES ('schema_version', '2')
104
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value;
105
+ COMMIT;
106
+ `),this.db.exec(`
107
+ CREATE INDEX IF NOT EXISTS registry_rows_collection_order
108
+ ON registry_rows(collection, row_order);
109
+ `),this.secureFiles(),this.importFirstBoot(b.initialSnapshot)}snapshot(){return this.loadSnapshot(!1)}loadSnapshot(a){this.onSnapshotLoad?.(),this.db.exec("BEGIN");try{let b=this.loadInTransaction(a);return this.db.exec("COMMIT"),b}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}revision(){for(let a=0;a<2;a+=1){let a=this.storageSignature();if(this.revisionCache?.signature===a)return this.revisionCache.revision;this.onRevisionQuery?.();let b=Number(this.meta("revision")??0),c=this.storageSignature();if(a===c)return this.revisionCache={signature:c,revision:b},b}this.onRevisionQuery?.();let a=Number(this.meta("revision")??0);return this.rememberRevision(a),a}readOnlySnapshot(){let a=this.revision();return this.readOnlyCache?.revision===a||(this.readOnlyCache=this.loadSnapshot(!0)),this.readOnlyCache}snapshotSpawns(a){this.db.exec("BEGIN");try{let b=(a,b)=>{let c=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?").get(a,b);return this.onRowPayloadRead?.(a,+!!c),c?this.parseRow(a,b,c.value_json,!0):void 0},c=(a,b,c)=>{let d={version:2,entries:{},receipts:{}};return d[a]={[b]:c},this.normalize(d)[a][b]},d={};for(let e of new Set(a)){let a=b("receipts",e);if(void 0===a)continue;let f=c("receipts",e,a);if(!f)continue;let g=new Set,h=f.conversationId,i=!1;for(;!g.has(h)&&g.size<64;){g.add(h);let a=b("conversationAliases",h);if("string"!=typeof a||!a.startsWith("conversation_"))break;h=a,i=64===g.size}let j=i?void 0:b("conversations",h),k=void 0===j?void 0:c("conversations",h,j);d[e]={launchId:f.launchId,state:f.state,error:f.error,engine:f.engine,cwd:f.cwd,createdAt:f.createdAt,materializedPath:k?.generations.at(-1)?.path??f.artifactPath}}return this.db.exec("COMMIT"),d}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}snapshotTitleConversations(a){this.db.exec("BEGIN");try{let b=(a,b)=>{let c=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?").get(a,b);return this.onRowPayloadRead?.(a,+!!c),c?this.parseRow(a,b,c.value_json,!0):void 0},c=(a,b)=>this.normalize({version:2,entries:{},receipts:{},conversations:{[a]:b}}).conversations[a],d=new Map;for(let e of[...new Set(a)].slice(0,2e3)){if(!e.startsWith("conversation_"))continue;let a=new Set,f=e,g=!1;for(;f;){if(a.has(f)){f=null;break}if(a.size>=64){g=!0;break}a.add(f);let c=b("conversationAliases",f);if("string"!=typeof c||!c.startsWith("conversation_"))break;f=c}if(!f||g)continue;let h=d.get(f),i=h?void 0:b("conversations",f),j=h?.conversation??(void 0===i?void 0:c(f,i));if(!j)continue;let k=h??{aliases:new Set,conversation:j};for(let b of a)b!==f&&k.aliases.add(b);d.set(f,k)}let e=[...d.values()].map(({aliases:a,conversation:b})=>({conversationId:b.id,aliases:[...a],ownedPaths:[...new Set([...[...b.generations].reverse().map(a=>a.path),...[...b.continuityPaths].reverse()])].slice(0,128)}));return this.db.exec("COMMIT"),e}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}mutate(a,b=!0){for(;;){let c,d,e,f;this.db.exec("BEGIN");try{c=this.loadLazyInTransaction(),e=a(c.file),d=c.changes(),this.db.exec("COMMIT")}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}let g=performance.now();this.db.exec("BEGIN IMMEDIATE");let h=d.rows.size>0||d.meta.size>0||d.order.size>0;try{if(this.onWriterWait?.(performance.now()-g),Number(this.meta("revision")??0)!==c.revision){this.db.exec("ROLLBACK");continue}f=h?c.revision+1:c.revision,h&&this.persistChanges(c.file,d,f),this.db.exec("COMMIT")}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}if(h&&(this.secureFiles(),this.updateCachesAfterCommit(c.file,d,f),this.rememberRevision(f)),b){let a=this.snapshot();return{result:e,file:a.file,revision:a.revision}}return{result:e,file:null,revision:f}}}replace(a,b){let c=this.decideAssembled(a);this.db.exec("BEGIN IMMEDIATE");try{let d=this.loadInTransaction();if(void 0!==b&&d.revision!==b)return this.db.exec("ROLLBACK"),{...d,replaced:!1};let e=d.revision+1;return this.persistDiff(d.file,c,e),this.db.exec("COMMIT"),this.secureFiles(),this.rowCache.clear(),this.readOnlyCache=null,this.rememberRevision(e),{file:a,revision:e,replaced:!0}}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}importFirstBoot(a){this.db.exec("BEGIN IMMEDIATE");try{let b=this.meta("migration_complete");"1"!==b&&(this.persistAll(this.decideAssembled(a),1),this.setMeta("schema_version","2"),this.setMeta("migration_complete","1")),this.db.exec("COMMIT"),this.secureFiles()}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}loadInTransaction(a=!1){let b=this.loadLazyInTransaction(!1,a);for(let a of P)b.file[a];for(let a of Q)b.file[a];return b}loadLazyInTransaction(a=!0,b=a){let c=this.markDecided(this.normalize({version:2,entries:{},receipts:{}})),d=!1,e=!1,f=()=>{if(!d&&!e){e=!0;try{(0,z.$q)(c,this.mcpGrantPolicy),d=!0}finally{e=!1}}},g=(a,b)=>(O.has(a)&&(0,z.oN)(b)&&f(),b),h=new Map,i=new Map,k=new Map,l=new Set;for(let d of P){let e=!1,j=c[d],m=()=>{},n=()=>{if(e)return;let f=new Set,l=new Map;if(a&&"deliveryOperationOwners"!==d){let a={},c=new Set,e=null,h=null,i=!1,k=null,n=new Map,o=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?"),p=this.db.query("SELECT row_key, value_json FROM registry_rows WHERE collection = ? ORDER BY row_order"),q=()=>{if(k)return k;for(let a of(k=p.all(d),this.onRowPayloadRead?.(d,k.length),h=new Set(e=k.map(a=>a.row_key)),k))l.set(a.row_key,a.value_json);return k};m=()=>{q()};let r=a=>{if(l.has(a))return l.get(a);let b=o.get(d,a)?.value_json??null;return this.onRowPayloadRead?.(d,+(null!==b)),l.set(a,b),b},s=e=>{if(!Object.hasOwn(a,e)){if(c.has(e))return;let f=r(e);if(null===f)return;let g={version:2,entries:{},receipts:{}};g[d]={[e]:structuredClone(this.parseRow(d,e,f,b))};let h=this.normalize(g)[d];if(!Object.hasOwn(h,e))return;a[e]=h[e]}return g(d,a[e])},t=()=>{if(i)return;let e=q(),f={};for(let g of e)Object.hasOwn(a,g.row_key)||c.has(g.row_key)||(f[g.row_key]=structuredClone(this.parseRow(d,g.row_key,g.value_json,b)));let g={version:2,entries:{},receipts:{}};for(let[b,c]of(g[d]=f,Object.entries(this.normalize(g)[d])))a[b]=c;i=!0},u=()=>(t(),[...e.filter(a=>!c.has(a)),...Object.keys(a).filter(a=>!h.has(a))]);j=new Proxy(a,{get:(a,b,c)=>{if("string"!=typeof b)return Reflect.get(a,b,c);let d=s(b);if(void 0===d)return;let e=n.get(b);return e||(e=new WeakMap,n.set(b,e)),R(d,()=>f.add(b),e)},set:(a,b,d)=>("string"==typeof b&&(r(b),f.add(b),c.delete(b),n.delete(b)),Reflect.set(a,b,d)),deleteProperty:(a,b)=>("string"==typeof b&&(r(b),f.add(b),c.add(b),n.delete(b)),Reflect.deleteProperty(a,b)),defineProperty:(a,b,d)=>("string"==typeof b&&(r(b),f.add(b),c.delete(b),n.delete(b)),Reflect.defineProperty(a,b,d)),has:(b,c)=>"string"==typeof c?void 0!==s(c):Reflect.has(a,c),ownKeys:()=>u(),getOwnPropertyDescriptor:(a,b)=>{if("string"!=typeof b)return;let c=s(b);if(void 0!==c)return{configurable:!0,enumerable:!0,writable:!0,value:c}}})}else{let e={},g=this.db.query("SELECT collection, row_key, value_json, row_order FROM registry_rows WHERE collection = ? ORDER BY row_order").all(d);for(let c of(this.onRowPayloadRead?.(d,g.length),g)){let f=this.parseRow(d,c.row_key,c.value_json,b);e[c.row_key]=a?structuredClone(f):f,l.set(c.row_key,c.value_json)}let h={version:2,entries:{},receipts:{}};if(h[d]=e,"deliveryOperationOwners"===d&&(h.heldDeliveries=c.heldDeliveries),j=this.normalize(h)[d],a){let a=new Map;j=new Proxy(j,{get:(b,c,d)=>{let e=Reflect.get(b,c,d);if("string"!=typeof c||!Object.hasOwn(b,c))return e;let g=a.get(c);return g||(g=new WeakMap,a.set(c,g)),R(e,()=>f.add(c),g)},set:(a,b,c)=>("string"==typeof b&&f.add(b),Reflect.set(a,b,c)),deleteProperty:(a,b)=>("string"==typeof b&&f.add(b),Reflect.deleteProperty(a,b)),defineProperty:(a,b,c)=>("string"==typeof b&&f.add(b),Reflect.defineProperty(a,b,c))})}m=()=>{}}e=!0,h.set(d,j),i.set(d,l),k.set(d,f)};Object.defineProperty(c,d,{configurable:!0,enumerable:!0,get:()=>(n(),!a&&O.has(d)&&f(),j),set:a=>{n(),m(),j=a,h.set(d,j),l.add(d)}})}let m=new Map,n=new Map;for(let a of Q){let b=!1,d=c[a],e=()=>{if(b)return;let c=this.meta(a);null!==c&&(d=JSON.parse(c)),b=!0,m.set(a,d),n.set(a,structuredClone(d))};Object.defineProperty(c,a,{configurable:!0,enumerable:!0,get:()=>(e(),d),set:b=>{e(),d=b,m.set(a,d)}})}return{file:c,revision:Number(this.meta("revision")??0),changes:()=>{let a={rows:new Map,meta:new Set,order:new Set};for(let[b,c]of h){let d=i.get(b),e=c,f=new Set([...l.has(b)?new Set([...d.keys(),...Object.keys(e)]):k.get(b)].filter(a=>{if(!Object.hasOwn(e,a))return d.has(a);let b=d.get(a);return void 0===b||JSON.stringify(e[a])!==b}));f.size>0&&a.rows.set(b,f),l.has(b)&&(a.rows.set(b,new Set([...Object.keys(d),...Object.keys(e)])),a.order.add(b))}for(let[b,c]of m)(0,j.isDeepStrictEqual)(n.get(b),c)||a.meta.add(b);return a}}}parseRow(a,b,c,d){if(!d)return this.onRowPayloadParse?.(a,1),JSON.parse(c);let e=this.rowCache.get(a);e||(e=new Map,this.rowCache.set(a,e));let f=e.get(b);if(f?.valueJson===c)return f.parsed;let g=JSON.parse(c);return this.onRowPayloadParse?.(a,1),e.set(b,{valueJson:c,parsed:g}),g}updateCachesAfterCommit(a,b,c){let d=this.readOnlyCache?.revision===c-1?this.readOnlyCache:null,e=d?{...d.file}:null;for(let[c,f]of b.rows){let g=a[c],h=this.rowCache.get(c);h||(h=new Map,this.rowCache.set(c,h));let i=e?{...d.file[c]}:null;for(let a of f){if(!Object.hasOwn(g,a)){h.delete(a),i&&delete i[a];continue}let b=JSON.stringify(g[a]),c=JSON.parse(b);h.set(a,{valueJson:b,parsed:c}),i&&(i[a]=c)}if(e&&i)if(b.order.has(c)){let a={};for(let b of Object.keys(g))Object.hasOwn(i,b)&&(a[b]=i[b]);e[c]=a}else e[c]=i}if(e){for(let c of b.meta)e[c]=structuredClone(a[c]);this.readOnlyCache={file:e,revision:c}}else this.readOnlyCache=null}persistAll(a,b){for(let b of(this.assertDecided(a),this.db.exec("DELETE FROM registry_rows"),P))for(let[c,[d,e]]of Object.entries(a[b]).entries())this.upsertRow(b,d,e,c);for(let b of Q)this.setMeta(b,JSON.stringify(a[b]));this.setMeta("revision",String(b))}persistDiff(a,b,c){for(let c of(this.assertDecided(b),P)){let d=a[c],e=b[c];for(let a of new Set([...Object.keys(d),...Object.keys(e)])){if(!(a in e)){this.db.query("DELETE FROM registry_rows WHERE collection = ? AND row_key = ?").run(c,a);continue}a in d&&(0,j.isDeepStrictEqual)(d[a],e[a])||this.upsertRow(c,a,e[a])}this.persistRowOrder(c,Object.keys(e))}for(let c of Q)(0,j.isDeepStrictEqual)(a[c],b[c])||this.setMeta(c,JSON.stringify(b[c]));this.setMeta("revision",String(c))}persistChanges(a,b,c){for(let[c,d]of(this.assertDecided(a),b.rows)){let b=a[c];for(let a of d)a in b?this.upsertRow(c,a,b[a]):this.db.query("DELETE FROM registry_rows WHERE collection = ? AND row_key = ?").run(c,a)}for(let c of b.order)this.persistRowOrder(c,Object.keys(a[c]));for(let c of b.meta)this.setMeta(c,JSON.stringify(a[c]));this.setMeta("revision",String(c))}upsertRow(a,b,c,d){void 0!==d?this.db.query(`
110
+ INSERT INTO registry_rows(collection, row_key, value_json, row_order) VALUES (?, ?, ?, ?)
111
+ ON CONFLICT(collection, row_key) DO UPDATE SET value_json = excluded.value_json, row_order = excluded.row_order
112
+ `).run(a,b,JSON.stringify(c),d):this.db.query(`
113
+ INSERT INTO registry_rows(collection, row_key, value_json, row_order)
114
+ SELECT ?, ?, ?, COALESCE(MAX(row_order) + 1, 0) FROM registry_rows WHERE collection = ?
115
+ ON CONFLICT(collection, row_key) DO UPDATE SET value_json = excluded.value_json
116
+ `).run(a,b,JSON.stringify(c),a)}persistRowOrder(a,b){for(let[c,d]of b.entries())this.db.query("UPDATE registry_rows SET row_order = ? WHERE collection = ? AND row_key = ?").run(c,a,d)}meta(a){return this.db.query("SELECT key, value FROM registry_meta WHERE key = ?").get(a)?.value??null}setMeta(a,b){this.db.query(`
117
+ INSERT INTO registry_meta(key, value) VALUES (?, ?)
118
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value
119
+ `).run(a,b)}secureFiles(){for(let a of[this.filename,`${this.filename}-wal`,`${this.filename}-shm`])g().existsSync(a)&&g().chmodSync(a,384)}storageSignature(){return[this.filename,`${this.filename}-wal`].map(a=>{try{let b=g().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(a){if("ENOENT"===a.code)return"missing";throw a}}).join("|")}rememberRevision(a){this.revisionCache={signature:this.storageSignature(),revision:a}}}var T=c(53812),U=c(88417);let V="structured-host:";class W extends Error{constructor(a,b){super(`Agent spawn limit reached: caller ${a} already has ${b} live children (cap: ${b}). Wait for a child to finish before spawning another helper.`),this.parentConversationId=a,this.cap=b,this.name="SpawnChildLimitError"}}class X extends Error{constructor(a,b){super(b),this.successorConversationId=a,this.name="SupersedenceConflictError"}}function Y(a){return(a.scope??"engine")==="engine"}function Z(a,b,c){if($(a,b,c?.pendingDeliveryConversationIds)||(c?c.uncertainDeliveryConversationIds.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivery-uncertain"===a.state)))return"busy";if(b.migration&&!["committed","rolled-back"].includes(b.migration.phase))return"idle";let d=b.generations.at(-1)?.path;return void 0!==d&&(c?c.activeHostPaths.has(d):Object.values(a.entries).some(a=>a.artifactPath===d&&["starting","live","idle","handoff"].includes(a.status)))||(c?c.pendingDeliveryConversationIds.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivered"!==a.state))?"idle":"deferred"}function $(a,b,c){let d=b.generations.at(-1)?.path,e=c?c.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivered"!==a.state),f="unknown"===b.turn.state&&"empty"===b.turn.source&&!!d&&!g().existsSync(d)&&!e;return"busy"===b.turn.state||"unknown"===b.turn.state&&!f}function _(a){let b=new Set,c=new Set;for(let d of Object.values(a.heldDeliveries))"delivery-uncertain"===d.state&&b.add(d.conversationId),"delivered"!==d.state&&c.add(d.conversationId);return{uncertainDeliveryConversationIds:b,pendingDeliveryConversationIds:c,activeHostPaths:new Set(Object.values(a.entries).filter(a=>["starting","live","idle","handoff"].includes(a.status)).map(a=>a.artifactPath).filter(a=>!!a))}}function aa(a){return null===a||"committed"===a.phase||"rolled-back"===a.phase||("waiting-turn"===a.phase||"requested"===a.phase)&&null===a.providerReceipt}function ab(a){return"resume-successor"===a.purpose&&"failed"!==a.state&&("completed"!==a.state||null===a.resumeSourcePath||a.artifactPath===a.resumeSourcePath)}let ac={now:()=>Date.now(),wait:async a=>{await new Promise(b=>setTimeout(b,a))}};function ad(a,b,c){let d=_(a);return JSON.stringify(Object.values(a.conversations).filter(a=>a.engine===b&&c.has(a.generations.at(-1)?.path??"")).map(b=>[b.id,Z(a,b,d)]).sort(([a],[b])=>a.localeCompare(b)))}function ae(a,b,c){let d=a.entries[b],e=new Set([d?.artifactPath,c.artifactPath].filter(a=>!!a)),f=new Set(["starting","live","idle","handoff"]),g=(d,e)=>{for(let[g,h]of Object.entries(a.entries)){let a=e&&g===b?c:h;if(a.artifactPath===d&&f.has(a.status))return!0}return e&&!(b in a.entries)&&c.artifactPath===d&&f.has(c.status)};return new Set([...e].filter(a=>g(a,!1)!==g(a,!0)))}function af(a,b,c,d){ad(a,b,d)!==c&&(a.conversationRevision[b]+=1,a.engineRouting[b].revision+=1)}function ag(a,b,c,d,f){let g=a.migration?.boardProject??null,h=a.migration&&"committed"!==a.migration.phase?a.migration.pendingContinuityPaths:[];return{intentId:c.id,phase:d,targetId:c.targetId,revision:c.revision,error:null,errorCode:null,operationId:e().randomUUID(),sourceGenerationId:b.id,successorLaunchProfile:null,providerReceipt:null,pendingContinuityPaths:h,boardProject:g,boardOperationId:a.migration?.boardOperationId??null,boardPlacementProject:a.migration?.boardPlacementProject??g??a.projectOwnership?.project??b.launchProfile.project,updatedAt:f}}function ah(a,b,c){let d=b.migration?.phase==="committed"?null:b.migration?.providerReceipt;d&&(a.pendingSuccessorCleanups[d.operationId]??={conversationId:b.id,receipt:d,createdAt:c,lastError:null})}function ai(a,b,c){for(let d of Object.values(a.heldDeliveries))d.conversationId===b.id&&"delivered"!==d.state&&"failed"!==d.state&&aj(a,d,c)}function aj(a,b,c){let d="delivery-uncertain"===b.state?`${c}; a prior delivery attempt may have been delivered because its journal outcome is unknown`:c;b.state="failed",b.text="",b.generationId=null,b.assignedAt=null,b.deliveredAt=null,b.error=d.slice(0,240),aK(a,b),aI(a,b)}function ak(a,b,c,d){let e=a.heldDeliveries[b];if(!e||!["held","assigned","delivery-uncertain"].includes(e.state))return null;let f=a.conversations[aY(a,e.conversationId)],g=f?.migration;return g&&"rolled-back"===g.phase&&g.intentId===c&&(0,p.bj)(e,g.updatedAt)?(aj(a,e,d),at(e)):null}function al(a){return`reconfigure:${a.operationId}:${a.revision}`}function am(a,b,c){let d=b.migration;if(!d||["committed","rolled-back","failed-recoverable"].includes(d.phase))return;let e=a.migrationIntents[d.intentId],f=al(c);if(e?.scope!=="conversation"||!e.requestIds.includes(f))return;let g=au(),h=new Set([b.generations.at(-1)?.path].filter(a=>!!a)),i=ad(a,b.engine,h);"stopped"!==e.state&&(e.state="stopped",e.stoppedAt=g,e.updatedAt=g),ah(a,b,g),aT(b),ai(a,b,p.JJ),b.migration={...d,phase:"rolled-back",pendingContinuityPaths:[],error:null,errorCode:null,updatedAt:g},b.updatedAt=g,af(a,b.engine,i,h)}class an extends Error{constructor(a,b){super("migration preview is stale"),this.expected=a,this.actual=b,this.name="MigrationRevisionError"}}class ao extends Error{constructor(a="client message id is already reserved for another request"){super(a),this.name="DeliveryReservationConflictError"}}let ap="1970-01-01T00:00:00.000Z";function aq(a=au()){return{enabled:!0,revision:0,cooldownUntil:null,departed:{},lastOutcome:null,lastTrigger:null,lastCheckAt:null,sustain:null,restartedAt:a}}let ar={version:2,entries:{},receipts:{},lineageEdges:{},memberships:{},identityMigrations:{},importedResumePanes:!1,legacyResumePanes:{serverPid:null,panes:{}},conversations:{},conversationAliases:{},conversationRevision:{claude:0,codex:0},migrationIntents:{},engineRouting:{claude:{activeAccountId:null,revision:0},codex:{activeAccountId:null,revision:0}},autoBalance:{claude:aq(),codex:aq()},quotaObservations:{claude:{},codex:{}},heldDeliveries:{},deliveryOperationOwners:{},pendingSuccessorCleanups:{},pendingSupersedence:{}};class as extends Error{}function at(a){return JSON.parse(JSON.stringify(a))}function au(){return new Date().toISOString()}let av=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]),aw=new Set(["starting","live","idle","handoff"]);function ax(a){return l.B.pidAlive(a.pid)&&(null===a.startIdentity||l.B.processIdentity(a.pid)===a.startIdentity)}function ay(a){return i().basename(a).match(/([0-9a-f-]{36})(?:\.jsonl)?$/i)?.[1]??e().randomUUID()}function az(a){if(!a||"object"!=typeof a||"codex-app-server"!==a.kind&&"claude-broker"!==a.kind)return null;let b=a.eventCursor;if(void 0!==b&&(!Number.isSafeInteger(b)||b<0))throw Error("structured host event cursor is invalid");let c=a.process&&"object"==typeof a.process&&"number"==typeof a.process.pid?{pid:a.process.pid,startIdentity:"string"==typeof a.process.startIdentity?a.process.startIdentity:null}:null;return{kind:a.kind,endpoint:"string"==typeof a.endpoint?a.endpoint:"",process:c,eventCursor:void 0===b?0:b,protocolVersion:"string"==typeof a.protocolVersion?a.protocolVersion:null,writerClaimEpoch:Number.isSafeInteger(a.writerClaimEpoch)&&(a.writerClaimEpoch??-1)>=0?a.writerClaimEpoch:0,activeTurnRef:"string"==typeof a.activeTurnRef?a.activeTurnRef:null,pendingAttention:Array.isArray(a.pendingAttention)?a.pendingAttention.filter(a=>"string"==typeof a):[],activeFlags:Array.isArray(a.activeFlags)?a.activeFlags.filter(a=>"string"==typeof a):[]}}function aA(a){let b=aq(ap);return a&&"object"==typeof a?{...b,...a,departed:a.departed&&"object"==typeof a.departed?a.departed:{},lastOutcome:a.lastOutcome&&"object"==typeof a.lastOutcome?a.lastOutcome:null,sustain:a.sustain&&"object"==typeof a.sustain?a.sustain:null}:b}function aB(a,b,c,d){c.launchProfile=(0,o.Ui)({...c.launchProfile,...d});let e=a.entries[(0,q.pp)({engine:b.engine,sessionId:c.id})];e&&(e.launchProfile=(0,o.Ui)({...e.launchProfile??c.launchProfile,...d}),e.updatedAt=au()),b.updatedAt=au()}function aC(a,b){let c={operationId:a?.operationId||b,kind:a?.kind==="steer"?"steer":"send",policy:a?.policy==="queue"||a?.policy==="steer-if-active"?a.policy:"interrupt-active"};(a?.turnId===null||"string"==typeof a?.turnId)&&(c.turnId=a.turnId);let d=(0,T.n)(a?.origin);return d&&(c.origin=d),c}function aD(a,b,c){let d=void 0===c.turnId?["absent"]:["present",c.turnId];return e().createHash("sha256").update(JSON.stringify(["held-delivery-request-v1",a,b,c.kind,c.policy,d])).digest("hex")}let aE="held delivery image references are corrupt; send the message again to re-admit its images";function aF(a){let b=a.state??"held",c="string"==typeof a.text?a.text:"",d=aC(a.command,a.id),e=c?aD(a.conversationId,c,d):null,f=a.payloadKind??"text",g=(0,U.kW)(a.runtimeImages??[],16),h="delivered"!==b&&(null===g||"runtime-images"===f&&(!Array.isArray(a.runtimeImages)||0===g.length));h&&(b="failed");let i=g??[],j="string"==typeof a.contentDigest?a.contentDigest:null;if(!j&&!h&&"delivered"!==b&&("text"===f||"runtime-images"===f))try{j=(0,U.rM)(c,i).contentDigest}catch{}return{...a,runtimeConversationId:"string"==typeof a.runtimeConversationId&&a.runtimeConversationId.startsWith("conversation_")?a.runtimeConversationId:a.conversationId,text:"delivered"===b?"":c,clientMessageId:a.clientMessageId??null,payloadKind:f,runtimeImages:i,contentDigest:j,artifactPaths:Array.isArray(a.artifactPaths)?a.artifactPaths.filter(a=>"string"==typeof a):[],command:d,requestDigest:"string"==typeof a.requestDigest?a.requestDigest:e,state:b,generationId:h?null:a.generationId??null,attempts:Number.isInteger(a.attempts)?a.attempts:0,assignedAt:h?null:a.assignedAt??null,deliveredAt:a.deliveredAt??null,error:h?aE:a.error??null}}function aG(a){return a?.state==="delivered"||a?.state==="failed"?a.state:null}function aH(a){return"failed"===a.state&&a.error?.startsWith(p.BD)===!0}function aI(a,b){let c=a.deliveryOperationOwners[b.command.operationId];c?.deliveryId===b.id&&(c.terminalState=aG(b))}function aJ(a,b){let c=b.clientMessageId;if(!c||!c.startsWith("spawn_"))return null;let d=c.slice(6);if(b.command.operationId!==`spawn_message_${d}`)return null;let e=a.receipts[d];return e&&"launch"===e.purpose&&aY(a,e.conversationId)===aY(a,b.conversationId)?e:null}function aK(a,b){if("failed"!==b.state)return;let c=aJ(a,b);!c||["completed","failed","conflicted"].includes(c.state)||(c.state="failed",c.error=b.error??"initial prompt delivery failed",c.admissionOwner=null)}function aL(a){let b=[];for(let c of Object.values(a.heldDeliveries)){let d=aJ(a,c);if(!d)continue;if("failed"===c.state&&!["completed","failed","conflicted"].includes(d.state)){let e=d.state;aK(a,c),d.state!==e&&b.push(c.id);continue}let e="failed"===d.state||"conflicted"===d.state,f=0===c.attempts&&("held"===c.state||"assigned"===c.state);e&&f&&(aj(a,c,"spawn failed before its initial message was delivered"),b.push(c.id))}return b}function aM(a,b,c,d,e,f){let g=aY(a,b),h=d?Object.values(a.heldDeliveries).find(b=>aY(a,b.conversationId)===g&&b.clientMessageId===d):void 0,i=aC(f,h?.id??"pending-delivery"),j=aD(g,c,i),k=function(a,b,c,d){let e=new Set([b]);for(let c of Object.keys(a.conversationAliases))aY(a,c)===b&&e.add(c);return new Set([...e].map(a=>aD(a,c,d)))}(a,g,c,i),l=!!(h?.requestDigest&&!k.has(h.requestDigest)||h?.contentDigest&&e&&e!==h.contentDigest),m=null;if(l){if("failed"!==h.state||h.error===aE)throw new ao;m=h,h=void 0}let n=null;if(!h&&f.operationId){let b=Object.values(a.heldDeliveries).find(a=>a.command.operationId===i.operationId),c=a.deliveryOperationOwners[i.operationId]??(b?.requestDigest?{conversationId:b.conversationId,runtimeConversationId:b.runtimeConversationId,clientMessageId:b.clientMessageId,deliveryId:b.id,command:b.command,requestDigest:b.requestDigest,contentDigest:b.contentDigest,createdAt:b.createdAt,terminalState:aG(b)}:null),f=c&&aY(a,c.conversationId)===g&&c.clientMessageId===d&&k.has(c.requestDigest)&&(!c.contentDigest||!e||c.contentDigest===e);if(c&&!f)throw new ao("operation id is already reserved for another client message");f&&c.terminalState&&(n=at(c))}return{canonicalId:g,existing:h,requestDigest:j,terminalOperationRetry:n,supersededFailed:m}}function aN(a,b,c,d,e,f){if(a.existing?.state==="delivered"||a.existing?.error===aE)return at(a.existing);let g=a.terminalOperationRetry;return g?.terminalState?{id:g.deliveryId,conversationId:a.canonicalId,runtimeConversationId:g.runtimeConversationId,text:b,createdAt:g.createdAt,clientMessageId:c,payloadKind:d,runtimeImages:e.map(a=>({...a})),contentDigest:f,artifactPaths:[],command:g.command,requestDigest:g.requestDigest,state:g.terminalState,generationId:null,attempts:0,assignedAt:null,deliveredAt:"delivered"===g.terminalState?g.createdAt:null,error:"failed"===g.terminalState?"delivery failed":null}:null}function aO(a,b,c){for(let b of Object.values(a.heldDeliveries))b.command.operationId!==b.id&&b.requestDigest&&(a.deliveryOperationOwners[b.command.operationId]??={conversationId:b.conversationId,runtimeConversationId:b.runtimeConversationId,clientMessageId:b.clientMessageId,deliveryId:b.id,command:b.command,requestDigest:b.requestDigest,contentDigest:b.contentDigest,createdAt:b.createdAt,terminalState:null},aI(a,b));let d=new Map,e=new Map;for(let c of Object.values(a.heldDeliveries)){let f=aY(a,c.conversationId);if(!b||f===aY(a,b)){if("delivered"===c.state){c.text="";let a=d.get(f)??[];a.push(c),d.set(f,a)}else if("failed"===c.state&&!c.error?.startsWith(p.BD)){let a=e.get(f)??[];a.push(c),e.set(f,a)}}}let f=0;for(let b of[d,e])for(let[d,e]of b){let g=[];for(let b of e)!function(a,b){if(void 0===b)return!1;let c=Date.parse(a.deliveredAt??a.createdAt);return Number.isFinite(c)&&b-c>6048e5}(b,c)?g.push(b):(delete a.heldDeliveries[b.id],f+=1);b.set(d,g)}for(let b of d.values())for(let c of(b.sort((a,b)=>(b.deliveredAt??b.createdAt).localeCompare(a.deliveredAt??a.createdAt)||b.id.localeCompare(a.id)),b.slice(100)))delete a.heldDeliveries[c.id],f+=1;for(let[b,c]of e){let d=Math.max(0,Math.min(50,99-Object.values(a.heldDeliveries).filter(c=>aY(a,c.conversationId)===b&&["held","assigned","delivery-uncertain"].includes(c.state)).length));for(let b of(c.sort((a,b)=>b.createdAt.localeCompare(a.createdAt)||b.id.localeCompare(a.id)),c.slice(d)))delete a.heldDeliveries[b.id],f+=1}let g=new Map;for(let[c,d]of Object.entries(a.deliveryOperationOwners)){if(null===d.terminalState)continue;let e=aY(a,d.conversationId);if(b&&e!==aY(a,b))continue;let f=g.get(e)??[];f.push([c,d]),g.set(e,f)}for(let b of g.values())for(let[c]of(b.sort(([a,b],[c,d])=>d.createdAt.localeCompare(b.createdAt)||c.localeCompare(a)),b.slice(200)))delete a.deliveryOperationOwners[c];return f}function aP(a,b){return a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b)}function aQ(a,b){a.generations.some(a=>a.path===b)||(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.migration&&"committed"!==a.migration.phase&&!a.migration.pendingContinuityPaths.includes(b)&&a.migration.pendingContinuityPaths.push(b))}function aR(a,b){!a.generations.some(a=>a.path===b)&&(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.providerForkPaths.includes(b)||a.providerForkPaths.push(b))}function aS(a,b,c){let d=Object.values(a.conversations).find(a=>a.id!==b.id&&a.engine===b.engine&&aP(a,c));if(d&&!a5(a,d,b,c))throw Error("migration continuity path has another durable owner")}function aT(a){let b=a.migration?.pendingContinuityPaths??[];0!==b.length&&(a.abandonedContinuityPaths=[...new Set([...a.abandonedContinuityPaths,...b])])}function aU(a,b){let c=a.generations[0];return null===a.migration&&1===a.generations.length&&c?.path===b&&0===a.continuityPaths.length}function aV(a,b){let c=100*(b.generations.length>1||null!==b.migration);for(let d of Object.values(a.receipts))d.conversationId===b.id&&(c+=20),d.parentConversationId===b.id&&(c+=5);for(let d of(a.lineageEdges[b.id]&&(c+=10),Object.values(a.lineageEdges)))d.parentConversationId===b.id&&(c+=5);for(let d of(a.memberships[b.id]?.length&&(c+=10),Object.values(a.heldDeliveries)))d.conversationId===b.id&&(c+=5);for(let d of Object.values(a.deliveryOperationOwners))d.conversationId===b.id&&(c+=5);return c}function aW(a,b){return[...b].sort((b,c)=>aV(a,c)-aV(a,b)||b.createdAt.localeCompare(c.createdAt)||b.id.localeCompare(c.id))[0]??null}function aX(a,b,c,d){let e=b.generations.find(a=>a.path===c)??b.generations.at(-1),f=a.lineageEdges[b.id],g=f?.source==="viewer-spawn"?f.parentConversationId:e?.launchProfile.parentConversationId;if(!e||!g||g===b.id)return;let h=aY(a,g),i=a.conversations[h];if(!i)return;let j=i.generations.at(-1);a.lineageEdges[b.id]={childConversationId:b.id,parentConversationId:h,childSessionKey:(0,q.sz)(b.engine,c),parentSessionKey:j?(0,q.sz)(i.engine,j.path):null,childArtifactPath:c,parentArtifactPath:j?.path??null,kind:f?.kind??"spawn",role:f?.role??null,reviewsConversationId:f?.reviewsConversationId??null,source:f?.source??"engine-native",evidence:f?.evidence??{launchId:null,clientAttemptId:null},createdAt:f?.createdAt??d}}function aY(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function aZ(a,b){let c=new Set,d=aY(a,b);for(;c.size<64&&!c.has(d);){c.add(d);let b=a.conversations[d]?.supersededBy?.conversationId;if(!b)break;d=aY(a,b)}return d}function a$(a,b){let c=b.generations.at(-1);if(!c)return!1;let d=a.entries[(0,q.pp)({engine:b.engine,sessionId:c.id})];return!!(d&&d.artifactPath===c.path&&("starting"===d.status||"live"===d.status))}function a_(a,b,c,d){let e=aY(a,c),f=aZ(a,b);if(!a.conversations[aY(a,b)])throw Error("supersedence predecessor is unknown");if(!a.conversations[e])throw Error("supersedence successor is unknown");if(f===e)return a.conversations[f]??null;let g=a.conversations[f];if(!g)throw Error("supersedence predecessor is unknown");if(aZ(a,e)===f)throw Error("supersedence chain would form a cycle");if(a$(a,g))throw new X(f,"supersedence chain already ends at a live conversation");return g.supersededBy={conversationId:e,at:au(),reason:d},g.updatedAt=g.supersededBy.at,a.conversationRevision[g.engine]+=1,g}function a0(a,b,c,d){try{a_(a,b,c,d),delete a.pendingSupersedence[aY(a,c)]}catch(f){if(!(f instanceof X))return;let e=aY(a,c);a.pendingSupersedence[e]??={predecessorConversationId:aY(a,b),successorConversationId:e,reason:d,stagedAt:au()}}}function a1(a,b,c,d){if("flow"!==c.kind&&"pipeline"!==c.kind&&"orchestrator"!==c.kind||!c.containerId.trim()||!c.role.trim()||!c.slot.trim())throw Error("durable membership is invalid");let e=aY(a,b),f=c.parentConversationId?aY(a,c.parentConversationId):null,g={conversationId:e,kind:c.kind,containerId:c.containerId,role:c.role,slot:c.slot,stageId:c.stageId??null,stageOrder:Number.isInteger(c.stageOrder)?c.stageOrder:null,round:Number.isInteger(c.round)?c.round:null,parentConversationId:f,runtime:c.runtime?{...c.runtime}:null,createdAt:d},h=a.memberships[e]??[],i=h.find(a=>a.kind===g.kind&&a.containerId===g.containerId&&a.slot===g.slot);if(i){if(JSON.stringify((({createdAt:a,...b})=>b)(i))!==JSON.stringify((({createdAt:a,...b})=>b)(g)))throw Error("durable membership is immutable");return i}return h.push(g),a.memberships[e]=h,g}function a2(a){return a4(a,at)}function a3(a){return a4(a,a=>a)}function a4(a,b){let c=new Map;for(let b of Object.values(a.conversations)){for(let a of b.generations)c.has(a.path)||c.set(a.path,b);for(let a of b.continuityPaths)c.has(a)||c.set(a,b)}return{conversationForPath(a){let d=c.get(a);return d?b(d):null},canonicalConversationId:b=>aY(a,b),conversation(c){let d=a.conversations[aY(a,c)];return d?b(d):null}}}function a5(a,b,c,d){if(!aU(b,d))return!1;for(let d of(b.migrationOptOut&&(!c.migrationOptOut||b.migrationOptOut.updatedAt>c.migrationOptOut.updatedAt)&&(c.migrationOptOut={...b.migrationOptOut}),c.agentRole??=b.agentRole,c.delegationDepth??=b.delegationDepth,Object.values(a.receipts)))d.conversationId===b.id&&(d.conversationId=c.id),d.parentConversationId===b.id&&(d.parentConversationId=c.id),d.launchProfile.parentConversationId===b.id&&(d.launchProfile={...d.launchProfile,parentConversationId:c.id});let e={};for(let d of Object.values(a.lineageEdges)){let a={...d,childConversationId:d.childConversationId===b.id?c.id:d.childConversationId,parentConversationId:d.parentConversationId===b.id?c.id:d.parentConversationId,reviewsConversationId:d.reviewsConversationId===b.id?c.id:d.reviewsConversationId};a.childConversationId!==a.parentConversationId&&(e[a.childConversationId]&&d.childConversationId!==c.id||(e[a.childConversationId]=a))}a.lineageEdges=e;let f={};for(let[d,e]of Object.entries(a.memberships)){let a=d===b.id?c.id:d,g=e.map(d=>({...d,conversationId:a,parentConversationId:d.parentConversationId===b.id?c.id:d.parentConversationId})),h=f[a]??[];for(let a of g)h.some(b=>b.kind===a.kind&&b.containerId===a.containerId&&b.slot===a.slot)||h.push(a);f[a]=h}for(let d of(a.memberships=f,Object.values(a.heldDeliveries)))d.conversationId===b.id&&(d.conversationId=c.id);for(let d of Object.values(a.deliveryOperationOwners))d.conversationId===b.id&&(d.conversationId=c.id);for(let d of Object.values(a.entries))d.launchProfile?.parentConversationId===b.id&&(d.launchProfile={...d.launchProfile,parentConversationId:c.id});for(let d of Object.values(a.conversations))for(let a of d.generations)a.launchProfile.parentConversationId===b.id&&(a.launchProfile={...a.launchProfile,parentConversationId:c.id});for(let[d,e]of Object.entries(a.conversationAliases))e===b.id&&(a.conversationAliases[d]=c.id);return a.conversationAliases[b.id]=c.id,delete a.conversations[b.id],a.conversationRevision[c.engine]+=1,a.engineRouting[c.engine].revision+=1,!0}function a6(a,b){if(!a)return!0;let c=Date.parse(a),d=Date.parse(b);return Number.isFinite(c)&&Number.isFinite(d)?d>=c:b>=a}function a7(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return null;let c=a.spec,d="string"==typeof a.retryAt?Date.parse(a.retryAt):NaN,e=(0,U.kW)(a.imageRefs??[],16);if(1!==a.version||!Number.isFinite(d)||"string"!=typeof a.accountId||!a.accountId||"en"!==a.locale&&"uk"!==a.locale||!c||"claude"!==c.engine&&"codex"!==c.engine||"string"!=typeof c.command||"string"!=typeof c.cwd||"string"!=typeof c.windowName||!c.launchProfile||"string"!=typeof a.prompt||!e)return null;try{(0,U.h1)(a.prompt)}catch{return null}return{version:1,retryAt:new Date(d).toISOString(),accountId:a.accountId,locale:a.locale,spec:{command:c.command,cwd:c.cwd,windowName:c.windowName,engine:c.engine,..."string"==typeof c.transcript?{transcript:c.transcript}:{},...!0===c.printMode?{printMode:!0}:{},launchProfile:(0,o.Ui)(c.launchProfile,b)},prompt:a.prompt,imageRefs:e,parentArtifactPath:"string"==typeof a.parentArtifactPath?a.parentArtifactPath:null,pipelineSourceConversationId:"string"==typeof a.pipelineSourceConversationId&&a.pipelineSourceConversationId.startsWith("conversation_")?a.pipelineSourceConversationId:null}}function a8(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"string"==typeof a.project&&a.project&&Number.isInteger(a.seatEpoch)&&!((a.seatEpoch??0)<1)&&"string"==typeof a.conversationId&&a.conversationId.startsWith("conversation_")&&(null===a.predecessorConversationId||"string"==typeof a.predecessorConversationId)&&"string"==typeof a.designatedAt&&(null===a.activatedAt||"string"==typeof a.activatedAt)?{project:a.project,seatEpoch:a.seatEpoch,conversationId:a.conversationId,predecessorConversationId:a.predecessorConversationId??null,designatedAt:a.designatedAt,activatedAt:a.activatedAt??null,path:"string"==typeof a.path?a.path:null}:null}function a9(a,b){let c="completed"===a.state||"failed"===a.state||"pane-bound"===a.state||"host-verified"===a.state||"prompt-delivered"===a.state||"path-pending"===a.state||"conflicted"===a.state?a.state:"starting",d=a.pane&&"object"==typeof a.pane&&"string"==typeof a.pane.paneId&&"string"==typeof a.pane.target?{...a.pane,display:"string"==typeof a.pane.display?a.pane.display:a.pane.target,target:a.pane.paneId}:null;return{...a,clientAttemptId:"string"==typeof a.clientAttemptId?a.clientAttemptId:null,requestDigest:"string"==typeof a.requestDigest?a.requestDigest:null,...!0===a.identityWaveTitleBackfill?{identityWaveTitleBackfill:!0}:{},pendingOrchestratorSeatIdentity:a8(a.pendingOrchestratorSeatIdentity),transport:"tmux"===a.transport||"structured"===a.transport?a.transport:null,admissionOwner:a.admissionOwner&&Number.isInteger(a.admissionOwner.pid)&&a.admissionOwner.pid>0?{pid:a.admissionOwner.pid,startIdentity:"string"==typeof a.admissionOwner.startIdentity?a.admissionOwner.startIdentity:null}:null,spawnCapabilityDigest:"string"==typeof a.spawnCapabilityDigest&&/^[0-9a-f]{64}$/.test(a.spawnCapabilityDigest)?a.spawnCapabilityDigest:null,conversationId:"string"==typeof a.conversationId&&a.conversationId.startsWith("conversation_")?a.conversationId:`conversation_${e().randomUUID()}`,purpose:"migration-successor"===a.purpose||"resume-successor"===a.purpose?a.purpose:"launch",supersedes:a.supersedes&&"string"==typeof a.supersedes.conversationId&&a.supersedes.conversationId.startsWith("conversation_")?{conversationId:a.supersedes.conversationId,reason:"stage-retry"===a.supersedes.reason||"manual"===a.supersedes.reason?a.supersedes.reason:"recovery-spawn"}:null,resumeSourcePath:"string"==typeof a.resumeSourcePath?a.resumeSourcePath:null,pathCorrelation:a.pathCorrelation&&"string"==typeof a.pathCorrelation.cwd&&"string"==typeof a.pathCorrelation.startedAt?a.pathCorrelation:null,accountId:"string"==typeof a.accountId?a.accountId:null,accountPin:!0===a.accountPin,parentConversationId:"string"==typeof a.parentConversationId&&a.parentConversationId.startsWith("conversation_")?a.parentConversationId:null,parentSource:"explicit"===a.parentSource||"inferred-caller"===a.parentSource?a.parentSource:null,state:c,artifactLifecycle:"materialized"===a.artifactLifecycle?"materialized":"pending",key:a.key&&"object"==typeof a.key&&("claude"===a.key.engine||"codex"===a.key.engine)&&"string"==typeof a.key.sessionId?a.key:null,pane:d,verifiedHost:a.verifiedHost&&"object"==typeof a.verifiedHost&&"tmux"===a.verifiedHost.kind?a.verifiedHost:null,target:d?.paneId??("string"==typeof a.target&&/^%\d+$/.test(a.target)?a.target:null),completionMode:"route-completed"===a.completionMode||"observed-completed"===a.completionMode||"route-recovered"===a.completionMode?a.completionMode:null,agentRole:bb(a.agentRole),delegationDepth:bc(a.delegationDepth),rejection:function(a){if(!a||"object"!=typeof a||"reviewer_origin_spawn"!==a.code&&"nesting_depth_exceeded"!==a.code)return null;let b=a.origin;return b&&("agent"===b.kind||"container"===b.kind)?{code:a.code,origin:{kind:b.kind,conversationId:"string"==typeof b.conversationId&&b.conversationId.startsWith("conversation_")?b.conversationId:null,role:bb(b.role),depth:Number.isInteger(b.depth)&&b.depth>=0?b.depth:0},requestedRole:bb(a.requestedRole),childDepth:Number.isInteger(a.childDepth)&&a.childDepth>=0?a.childDepth:0,maxDepth:Number.isInteger(a.maxDepth)&&a.maxDepth>=1?a.maxDepth:1,guidance:"string"==typeof a.guidance?a.guidance:"",rejectedAt:"string"==typeof a.rejectedAt?a.rejectedAt:au()}:null}(a.rejection),launchProfile:(0,o.Ui)({...a.launchProfile??{},cwd:a.launchProfile?.cwd??a.cwd},b),explicitProject:(0,o.QK)(a.explicitProject),launchDisplay:ba(a.launchDisplay),queuedPinnedSpawn:a7(a.queuedPinnedSpawn,b),...a.retryClaim&&"string"==typeof a.retryClaim.claimId&&"string"==typeof a.retryClaim.claimedAt?{retryClaim:{claimId:a.retryClaim.claimId,claimedAt:a.retryClaim.claimedAt}}:{}}}function ba(a){if(!a||"object"!=typeof a||"string"!=typeof a.prompt)return null;let b=Number.isInteger(a.images)&&a.images>=0?a.images:0,c="string"==typeof a.echo?a.echo:a.prompt;return a.prompt.trim()||c.trim()||0!==b?{prompt:a.prompt,images:b,echo:c}:null}function bb(a){return"string"==typeof a&&a.trim()?a.trim():null}function bc(a){return Number.isInteger(a)&&a>=0?a:null}function bd(a,b){var c;if(1===a.version&&a.entries&&a.receipts&&"object"==typeof a.entries&&"object"==typeof a.receipts){let c;return(0,z.g8)((c=a.legacyResumePanes,{...at(ar),autoBalance:{claude:aq(ap),codex:aq(ap)},entries:a.entries??{},receipts:Object.fromEntries(Object.entries(a.receipts??{}).map(([a,c])=>[a,a9(c,b)])),conversationAliases:{},importedResumePanes:!0===a.importedResumePanes,legacyResumePanes:c&&"object"==typeof c&&"panes"in c?{serverPid:"number"==typeof c.serverPid?c.serverPid:null,panes:c.panes??{}}:{serverPid:null,panes:{}}}),b)}if(2!==a.version||!a.entries||!a.receipts||"object"!=typeof a.entries||"object"!=typeof a.receipts)throw new as("agent registry schema is unsupported");let d=a.legacyResumePanes,e=a.heldDeliveries&&"object"==typeof a.heldDeliveries?Object.fromEntries(Object.entries(a.heldDeliveries).map(([a,b])=>[a,aF(b)])):{};return(0,z.g8)(function(a){for(let b of Object.values(a.receipts)){if("structured"!==b.transport||"completed"!==b.state||"pending"!==b.artifactLifecycle||!b.artifactPath)continue;let c=a.conversations[aY(a,b.conversationId)],d=c?.generations.find(a=>a.path===b.artifactPath),e="observed-completed"===b.completionMode||"route-recovered"===b.completionMode,f="launch"===b.purpose&&c?.generations.length===1&&0===c.continuityPaths.length&&null===c.migration&&null!==c.turn.observedAt&&void 0!==d;c?.engine===b.engine&&d&&(e||f)&&(b.artifactLifecycle="materialized")}return a}({version:2,entries:Object.fromEntries(Object.entries(a.entries).map(([a,c])=>[a,{...c,...c.launchProfile?{launchProfile:(0,o.Ui)(c.launchProfile,b)}:{},host:c.host&&"object"==typeof c.host&&"tmux"===c.host.kind?c.host:null,structuredHost:az(c.structuredHost)}])),receipts:Object.fromEntries(Object.entries(a.receipts).map(([a,c])=>[a,a9(c,b)])),lineageEdges:a.lineageEdges&&"object"==typeof a.lineageEdges?Object.fromEntries(Object.entries(a.lineageEdges).map(([a,b])=>{let c,d;return[a,(c="string"==typeof b.reviewsConversationId&&b.reviewsConversationId.startsWith("conversation_")?b.reviewsConversationId:null,d="string"==typeof b.role&&b.role.trim()?b.role.trim():null,{...b,kind:"review"===b.kind||c||"reviewer"===d?"review":"spawn",role:d,reviewsConversationId:c})]})):{},memberships:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a)){if(!c.startsWith("conversation_")||!Array.isArray(d))continue;let a=d.flatMap(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||"flow"!==a.kind&&"pipeline"!==a.kind&&"orchestrator"!==a.kind||"string"!=typeof a.containerId||!a.containerId||"string"!=typeof a.role||!a.role||"string"!=typeof a.slot||!a.slot)return[];let b=a.runtime&&"object"==typeof a.runtime&&("claude"===a.runtime.engine||"codex"===a.runtime.engine)?{engine:a.runtime.engine,model:"string"==typeof a.runtime.model?a.runtime.model:null,effort:"string"==typeof a.runtime.effort?a.runtime.effort:null}:null;return[{conversationId:c,kind:a.kind,containerId:a.containerId,role:a.role,slot:a.slot,stageId:"string"==typeof a.stageId?a.stageId:null,stageOrder:Number.isInteger(a.stageOrder)?a.stageOrder:null,round:Number.isInteger(a.round)?a.round:null,parentConversationId:"string"==typeof a.parentConversationId&&a.parentConversationId.startsWith("conversation_")?a.parentConversationId:null,runtime:b,createdAt:"string"==typeof a.createdAt?a.createdAt:au()}]});a.length&&(b[c]=a)}return b}(a.memberships),identityMigrations:!(c=a.identityMigrations)||"object"!=typeof c||Array.isArray(c)?{}:Object.fromEntries(Object.entries(c).flatMap(([a,b])=>{if(!b||"object"!=typeof b||Array.isArray(b))return[];let c=b.quarantinedRekeys??0;return"string"!=typeof b.completedAt||!Number.isSafeInteger(b.retitled)||b.retitled<0||!Number.isSafeInteger(b.rekeyed)||b.rekeyed<0||!Number.isSafeInteger(c)||c<0||!Number.isSafeInteger(b.edgesStamped)||b.edgesStamped<0?[]:[[a,{completedAt:b.completedAt,retitled:b.retitled,rekeyed:b.rekeyed,quarantinedRekeys:c,edgesStamped:b.edgesStamped}]]})),importedResumePanes:!0===a.importedResumePanes,legacyResumePanes:d&&"object"==typeof d&&"panes"in d?{serverPid:"number"==typeof d.serverPid?d.serverPid:null,panes:d.panes??{}}:{serverPid:null,panes:{}},conversations:a.conversations&&"object"==typeof a.conversations?Object.fromEntries(Object.entries(a.conversations).map(([a,c])=>{var d;let e,f,g,h,i,j,k,l,m,n,p,q,r,s;return[a,(f=(e=Array.isArray(c.generations)?c.generations.map(a=>({...a,launchProfile:(0,o.Ui)(a.launchProfile??{},b),historyHash:"string"==typeof a.historyHash?a.historyHash:null,host:a.host&&"object"==typeof a.host?a.host:null})):[]).at(-1),g=c.migration?.continuityPaths,h=(d=c.migration?.providerReceipt)&&"object"==typeof d?{...d,continuityPaths:Array.isArray(d.continuityPaths)?d.continuityPaths.filter(a=>"string"==typeof a):[]}:null,i=c.migration?.successorLaunchProfile&&"object"==typeof c.migration.successorLaunchProfile&&!Array.isArray(c.migration.successorLaunchProfile)?(0,o.Ui)(c.migration.successorLaunchProfile,b):null,j=Array.isArray(c.migration?.pendingContinuityPaths)?c.migration.pendingContinuityPaths.filter(a=>"string"==typeof a):c.migration?.phase!=="committed"&&h?[...new Set([...h.continuityPaths,h.path])]:[],k=c.migration&&"object"==typeof c.migration?{...c.migration,errorCode:c.migration.errorCode??null,operationId:c.migration.operationId??`${c.migration.intentId}:${c.id}:${c.migration.revision}`,sourceGenerationId:c.migration.sourceGenerationId??f?.id??"",successorLaunchProfile:i,providerReceipt:h,pendingContinuityPaths:j,boardProject:"string"==typeof c.migration.boardProject?c.migration.boardProject:null,boardOperationId:"string"==typeof c.migration.boardOperationId?c.migration.boardOperationId:null,boardPlacementProject:"string"==typeof c.migration.boardPlacementProject?c.migration.boardPlacementProject:null}:null,l=[...new Set([...Array.isArray(c.continuityPaths)?c.continuityPaths.filter(a=>"string"==typeof a):[],...Array.isArray(g)?g.filter(a=>"string"==typeof a):[],...k?.providerReceipt?.continuityPaths??[]])],m=Array.isArray(c.abandonedContinuityPaths)?[...new Set(c.abandonedContinuityPaths.filter(a=>"string"==typeof a))]:[],n=Array.isArray(c.providerForkPaths)?[...new Set(c.providerForkPaths.filter(a=>"string"==typeof a))].filter(a=>l.includes(a)):[],q=(p=c.migrationOptOut)&&"string"==typeof p.targetId&&"string"==typeof p.updatedAt?{targetId:p.targetId,updatedAt:p.updatedAt}:null,s=(r=c.supersededBy)&&"string"==typeof r.conversationId&&r.conversationId.startsWith("conversation_")&&"string"==typeof r.at?{conversationId:r.conversationId,at:r.at,reason:"stage-retry"===r.reason||"manual"===r.reason?r.reason:"recovery-spawn"}:null,{...c,generations:e,continuityPaths:l,abandonedContinuityPaths:m,providerForkPaths:n,projectOwnership:(0,o.MO)(c.projectOwnership),pinnedAccountId:"string"==typeof c.pinnedAccountId?c.pinnedAccountId:null,reconfigure:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a=>!a||"object"!=typeof a||Array.isArray(a)||null!==a.model&&"string"!=typeof a.model||null!==a.effort&&"string"!=typeof a.effort||null!==a.fast&&"boolean"!=typeof a.fast?null:{model:a.model??null,effort:a.effort??null,fast:a.fast??null},c=b(a.profile),d=b(a.previousProfile);return c&&d&&"string"==typeof a.operationId&&a.operationId&&Number.isSafeInteger(a.revision)&&!(a.revision<0)&&("applying"===a.status||"applied"===a.status||"failed"===a.status)?{operationId:a.operationId,revision:a.revision,status:a.status,profile:c,previousProfile:d,accountId:"string"==typeof a.accountId?a.accountId:null,error:"string"==typeof a.error?a.error:null}:null}(c.reconfigure),migration:k,migrationOptOut:q,supersededBy:s,agentRole:bb(c.agentRole),delegationDepth:bc(c.delegationDepth),turn:c.turn&&"object"==typeof c.turn?{state:c.turn.state,source:c.turn.source,terminalAt:c.turn.terminalAt??null,observedAt:c.turn.observedAt??null}:{state:"unknown",source:"empty",terminalAt:null,observedAt:null}})]})):{},conversationAliases:a.conversationAliases&&"object"==typeof a.conversationAliases?Object.fromEntries(Object.entries(a.conversationAliases).filter(([a,b])=>a.startsWith("conversation_")&&"string"==typeof b&&b.startsWith("conversation_"))):{},conversationRevision:a.conversationRevision&&"object"==typeof a.conversationRevision?{...ar.conversationRevision,...a.conversationRevision}:at(ar.conversationRevision),migrationIntents:a.migrationIntents&&"object"==typeof a.migrationIntents?a.migrationIntents:{},engineRouting:a.engineRouting&&"object"==typeof a.engineRouting?{...ar.engineRouting,...a.engineRouting}:at(ar.engineRouting),autoBalance:a.autoBalance&&"object"==typeof a.autoBalance?{claude:aA(a.autoBalance.claude),codex:aA(a.autoBalance.codex)}:{claude:aq(ap),codex:aq(ap)},quotaObservations:a.quotaObservations&&"object"==typeof a.quotaObservations?{...ar.quotaObservations,...a.quotaObservations}:at(ar.quotaObservations),heldDeliveries:e,deliveryOperationOwners:function(a,b){let c={};if(a&&"object"==typeof a&&!Array.isArray(a))for(let[d,e]of Object.entries(a)){if(!d||!e||"object"!=typeof e||Array.isArray(e)||"string"!=typeof e.conversationId||!e.conversationId.startsWith("conversation_")||null!==e.clientMessageId&&"string"!=typeof e.clientMessageId||"string"!=typeof e.deliveryId||!e.deliveryId||"string"!=typeof e.requestDigest||!e.requestDigest)continue;let a=e.settledDelivery&&"object"==typeof e.settledDelivery?aF(e.settledDelivery):null,f=a?.id===e.deliveryId&&a.command.operationId===d&&a.requestDigest===e.requestDigest&&null!==aG(a)?a:null,g=b[e.deliveryId],h=g?.command.operationId===d&&g.requestDigest===e.requestDigest?g:null,i=h?aG(h):"delivered"===e.terminalState||"failed"===e.terminalState?e.terminalState:aG(f);c[d]={conversationId:e.conversationId,runtimeConversationId:"string"==typeof e.runtimeConversationId&&e.runtimeConversationId.startsWith("conversation_")?e.runtimeConversationId:b[e.deliveryId]?.runtimeConversationId??e.conversationId,clientMessageId:e.clientMessageId,deliveryId:e.deliveryId,command:{...aC(e.command,d),operationId:d},requestDigest:e.requestDigest,contentDigest:"string"==typeof e.contentDigest?e.contentDigest:h?.contentDigest??f?.contentDigest??null,createdAt:"string"==typeof e.createdAt?e.createdAt:h?.createdAt??f?.createdAt??ap,terminalState:i}}for(let a of Object.values(b))a.command.operationId!==a.id&&a.requestDigest&&(c[a.command.operationId]??={conversationId:a.conversationId,runtimeConversationId:a.runtimeConversationId,clientMessageId:a.clientMessageId,deliveryId:a.id,command:a.command,requestDigest:a.requestDigest,contentDigest:a.contentDigest,createdAt:a.createdAt,terminalState:aG(a)});return c}(a.deliveryOperationOwners,e),pendingSuccessorCleanups:a.pendingSuccessorCleanups&&"object"==typeof a.pendingSuccessorCleanups?a.pendingSuccessorCleanups:{},pendingSupersedence:function(a){if(!a||"object"!=typeof a)return{};let b={};for(let[c,d]of Object.entries(a))d&&"string"==typeof d.predecessorConversationId&&d.predecessorConversationId.startsWith("conversation_")&&"string"==typeof d.successorConversationId&&d.successorConversationId.startsWith("conversation_")&&"string"==typeof d.stagedAt&&(b[c]={predecessorConversationId:d.predecessorConversationId,successorConversationId:d.successorConversationId,reason:"stage-retry"===d.reason||"manual"===d.reason?d.reason:"recovery-spawn",stagedAt:d.stagedAt});return b}(a.pendingSupersedence)}),b)}function be(a,b){try{let c=g().readFileSync(a,"utf8");return{file:(0,z.$q)(bd(JSON.parse(c),b),b),payload:c}}catch(a){if("ENOENT"===a.code)return{file:at(ar),payload:null};if(a instanceof as)throw a;throw new as(`agent registry cannot be read: ${a instanceof Error?a.message:String(a)}`)}}function bf(a,b){return be(a,b).file}function bg(a){try{let b=g().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(a){if("ENOENT"===a.code)return"missing";throw new as(`agent registry cannot be stated: ${a instanceof Error?a.message:String(a)}`)}}function bh(a){let b={...a};for(let a of Object.keys(b))null===b[a]&&delete b[a];return""===b.cwd&&delete b.cwd,"worker"===b.role&&delete b.role,!1===b.allowSubagents&&delete b.allowSubagents,b.mcpServers?.length===1&&"viewer"===b.mcpServers[0]&&delete b.mcpServers,b.plugins?.length===0&&delete b.plugins,b}function bi(a,b){return JSON.stringify({...a,...void 0===b?{}:{_sqliteRevision:b},entries:Object.fromEntries(Object.entries(a.entries).map(([a,b])=>[a,{...b,...b.launchProfile?{launchProfile:bh(b.launchProfile)}:{}}])),receipts:Object.fromEntries(Object.entries(a.receipts).map(([a,b])=>[a,{...b,launchProfile:bh(b.launchProfile)}])),conversations:Object.fromEntries(Object.entries(a.conversations).map(([a,b])=>[a,{...b,generations:b.generations.map(a=>({...a,launchProfile:bh(a.launchProfile)}))}]))})+"\n"}function bj(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${e().randomUUID()}.tmp`,d=null;try{d=g().openSync(c,"w",384),g().writeFileSync(d,b,"utf8"),g().fsyncSync(d),g().closeSync(d),d=null,g().renameSync(c,a);let e=g().openSync(i().dirname(a),"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==d&&g().closeSync(d);try{g().unlinkSync(c)}catch{}}}class bk extends Error{constructor(...a){super(...a),this.name="RegistryParityError"}}function bl(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"))._sqliteRevision;return Number.isInteger(b)&&Number(b)>=0?Number(b):null}catch(a){if("ENOENT"===a.code)return null;throw a}}class bm{constructor(a=(0,k.BQ)("agent-registry.json"),b=a=>l.B.pidAlive(a.pid)&&(null===a.startIdentity||l.B.processIdentity(a.pid)===a.startIdentity),c=ac,d={}){this.filename=a,this.ownerAlive=b,this.lockTiming=c,this.readOnlyCache=null,this.mirrorCheckpointPending=!1,this.mirrorCheckpointFailures=0,this.lastMirrorAt=null,this.lastMirroredRevision=null,this.mirrorDirty=!1,this.writerWaits=[],this.transactionDurations=[],this.transactionCount=0,this.transactionRateBuckets=new Map;const e=void 0!==d.sqliteMode?{mode:d.sqliteMode,sqliteFilename:null,source:"explicit"}:!0===d.resolveBackendIdentity?function(a,b=process.env,c=I){if(void 0!==b[G])return{mode:M(b),sqliteFilename:null,source:"environment"};let d=J(a),e=i().basename(d),f=K(a),g=c.readText(d);if(null===g){if(c.exists(f))throw new H(`the agent registry backend identity is unpublished while ${i().basename(f)} exists, so SQLite may be authoritative and the JSON mirror may be stale; start the registry writer with ${G} set so it publishes ${e}`);return{mode:"off",sqliteFilename:null,source:"json-only"}}let h=N(g,e);if("off"===h.mode){if(c.exists(f))throw new H(`${e} claims the JSON backend while ${i().basename(f)} exists; remove the stale store or republish the descriptor from the writer`);return{mode:"off",sqliteFilename:null,source:"descriptor"}}let j=i().join(i().dirname(d),h.sqliteFile);if(!c.exists(j))throw new H(`${e} names the ${h.mode} backend store ${h.sqliteFile}, which is unavailable`);return{mode:h.mode,sqliteFilename:j,source:"descriptor"}}(a):{mode:M(),sqliteFilename:null,source:"unmanaged"};this.sqliteMode=e.mode;const f=d.sqliteFilename??e.sqliteFilename??K(a);if(this.mcpGrantPolicy=d.mcpGrantPolicy,this.mirrorCheckpointMs=Math.max(0,d.mirrorCheckpointMs??5e3),this.now=d.now??Date.now,this.scheduleMirrorCheckpoint=d.scheduleMirrorCheckpoint??((a,b)=>setTimeout(a,b)),this.afterMirrorWrite=d.afterMirrorWrite,this.beforeDualWriteMutationReplace=d.beforeDualWriteMutationReplace,this.sqliteStore="off"===this.sqliteMode?null:new S(f,{initialSnapshot:bf(a,d.mcpGrantPolicy),normalize:a=>bd(a,d.mcpGrantPolicy),mcpGrantPolicy:d.mcpGrantPolicy,onWriterWait:a=>{this.recordMetric(this.writerWaits,a),d.onSqliteWriterWait?.(a)},onSnapshotLoad:d.onSqliteSnapshotLoad,onRowPayloadRead:d.onSqliteRowPayloadRead,onRowPayloadParse:d.onSqliteRowPayloadParse,onRevisionQuery:d.onSqliteRevisionQuery}),"off"===this.sqliteMode&&(this.cleanupStaleTempFiles(),this.compactAtStartup()),"dual-write"===this.sqliteMode&&(this.cleanupStaleTempFiles(),this.synchronizeDualWriteStartup(d.beforeDualWriteStartupReplace)),"read"===this.sqliteMode||"sqlite"===this.sqliteMode){const a=this.sqliteStore.snapshot(),b=bl(this.filename);if("read"===this.sqliteMode&&(null===b||b===a.revision)&&this.assertSqliteParity(a),null!==b&&b>a.revision)throw new bk("agent registry JSON mirror revision is ahead of SQLite");this.mirrorSqliteSnapshot(a)}"environment"===e.source&&function(a,b,c,d=I,e=()=>new Date().toISOString()){let f=J(a),g="off"===b?null:i().basename(c),h=d.readText(f);if(null!==h)try{let a=N(h,i().basename(f));if(a.mode===b&&a.sqliteFile===g)return}catch{}let j={schemaVersion:1,mode:b,sqliteFile:g,publishedAt:e()};d.writeText(f,`${JSON.stringify(j)}
120
+ `)}(a,this.sqliteMode,f)}assertSqliteParity(a=this.sqliteStore.snapshot()){let b=bf(this.filename,this.mcpGrantPolicy);if(!(0,j.isDeepStrictEqual)(a.file,b)){let c=[...new Set([...Object.keys(a.file),...Object.keys(b)])].filter(c=>!(0,j.isDeepStrictEqual)(a.file[c],b[c]));throw new bk(`agent registry JSON and SQLite snapshots differ: ${c.join(", ")}`)}}mirrorSqliteSnapshot(a){var b;b=this.filename,bj(b,bi(a.file,a.revision)),this.afterMirrorWrite?.();let c=this.sqliteStore.revision();this.lastMirrorAt=this.now(),this.lastMirroredRevision=a.revision,this.mirrorDirty=c>a.revision,this.mirrorDirty&&this.scheduleRollbackMirror()}recordMetric(a,b){a.push(b),a.length>512&&a.splice(0,a.length-512)}percentile(a){if(0===a.length)return null;let b=[...a].sort((a,b)=>a-b);return b[Math.min(b.length-1,Math.ceil(.95*b.length)-1)]}storageDiagnostics(){let a=this.sqliteStore?.revision()??null;null!==a&&null!==this.lastMirroredRevision&&a>this.lastMirroredRevision&&(this.mirrorDirty=!0);let b=Math.floor(this.now()/1e3);for(let a of this.transactionRateBuckets.keys())a<=b-60&&this.transactionRateBuckets.delete(a);let c=[...this.transactionRateBuckets.values()].reduce((a,b)=>a+b,0);return{backendMode:this.sqliteMode,revision:a,transactionCount:this.transactionCount,writerRatePerSecond:c/60,writerWaitP95Ms:this.percentile(this.writerWaits),transactionP95Ms:this.percentile(this.transactionDurations),mirrorCheckpointAtMs:this.lastMirrorAt,mirrorAgeMs:null===this.lastMirrorAt?null:Math.max(0,this.now()-this.lastMirrorAt),mirrorDirty:this.mirrorDirty}}checkpointRollbackMirror(){if(!this.sqliteStore||"dual-write"===this.sqliteMode)return;let a=this.sqliteStore.revision();(this.mirrorDirty||null===this.lastMirroredRevision||!(a<=this.lastMirroredRevision))&&(this.mirrorSqliteSnapshot(this.sqliteStore.snapshot()),this.mirrorCheckpointFailures=0)}checkpointRollbackMirrorForDemotion(a=2){if(this.sqliteStore&&"dual-write"!==this.sqliteMode){for(let b=0;b<a;b+=1)if(this.checkpointRollbackMirror(),!this.storageDiagnostics().mirrorDirty)return;throw Error(`agent registry rollback mirror did not converge after ${a} attempts`)}}scheduleRollbackMirror(a=this.mirrorCheckpointMs){this.mirrorCheckpointPending||(this.mirrorCheckpointPending=!0,this.scheduleMirrorCheckpoint(()=>{this.mirrorCheckpointPending=!1;try{this.checkpointRollbackMirror()}catch(b){console.error("agent registry rollback checkpoint failed",b),this.mirrorCheckpointFailures+=1;let a=Math.min(1e3*2**(this.mirrorCheckpointFailures-1),3e4);this.scheduleRollbackMirror(a)}},a).unref?.())}scheduleRollbackMirrorForCadence(){let a=null===this.lastMirrorAt?this.mirrorCheckpointMs:Math.max(0,this.now()-this.lastMirrorAt);this.scheduleRollbackMirror(Math.max(0,this.mirrorCheckpointMs-a))}cleanupStaleTempFiles(){let a,b=i().dirname(this.filename),c=`${i().basename(this.filename)}.`;try{a=g().readdirSync(b)}catch(a){if("ENOENT"===a.code)return;throw a}for(let d of a){if(!d.startsWith(c)||!d.endsWith(".tmp"))continue;let a=d.slice(c.length,-4).split("."),e=Number(a[0]);if(2===a.length&&Number.isInteger(e)&&!(e<=0)&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(a[1]??"")&&!this.ownerAlive({pid:e,startIdentity:null}))try{g().unlinkSync(i().join(b,d))}catch(a){if("ENOENT"!==a.code)throw a}}}compactAtStartup(){if(!g().existsSync(this.filename))return;let a=`${this.filename}.write-lock`,b=this.acquireLock(a,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{this.compactAtStartupLocked()}finally{this.releaseLock(b)}}compactAtStartupLocked(){let a,b;try{a=g().readFileSync(this.filename,"utf8")}catch(a){if("ENOENT"===a.code)return;throw a}try{b=bf(this.filename,this.mcpGrantPolicy)}catch(a){if(a instanceof as)return void console.error("agent registry startup compaction skipped:",a);throw a}aO(b,void 0,this.now()),bi(b)!==a&&bj(this.filename,bi(b,void 0))}synchronizeDualWriteStartup(a){let b=`${this.filename}.write-lock`,c=this.acquireLock(b,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{var d,e;let b=this.sqliteStore.snapshot();g().existsSync(this.filename)||(d=this.filename,e=b.file,bj(d,bi(e,void 0)));let c=bl(this.filename);if(null!==c&&c!==b.revision)throw new bk(`agent registry backend revisions differ: JSON ${c}, SQLite ${b.revision}`);this.assertSqliteParity(b),this.compactAtStartupLocked();let f=bf(this.filename,this.mcpGrantPolicy);a?.();let h=this.sqliteStore.replace(f,b.revision);if(!h.replaced)throw this.mirrorSqliteSnapshot(h),new bk(`agent registry SQLite revision changed during dual-write startup: expected ${b.revision}, current ${h.revision}`);this.assertSqliteParity()}finally{this.releaseLock(c)}}sameLock(a,b){try{let c=g().statSync(a);return c.dev===b.dev&&c.ino===b.ino}catch(a){if("ENOENT"===a.code)return!1;throw a}}lockOwnerFile(a){return g().statSync(a).isDirectory()?i().join(a,"owner.json"):a}lockToken(a){try{let b=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"));return"string"==typeof b.token?b.token:null}catch{return null}}finishRetirement(a,b){try{g().renameSync(a,b)}catch(c){let b=c.code;if("ENOENT"===b)return;if("EEXIST"===b||"ENOTEMPTY"===b)return void g().rmSync(a,{recursive:!0,force:!0});throw c}}restoreRecovery(a,b){for(;;)try{g().renameSync(b,a);return}catch(b){let a=b.code;if("ENOENT"===a)return;if("EEXIST"!==a&&"ENOTEMPTY"!==a)throw b;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,5)}}resolveInterruptedRelease(a){let b,c=`${a}.releasing`;if(!g().existsSync(c))return;let d=null;try{b=g().statSync(c),d=JSON.parse(g().readFileSync(this.lockOwnerFile(c),"utf8"))}catch(a){a.code;return}Number.isInteger(d.pid)&&d.pid>0&&this.ownerAlive(d)||(!Number.isInteger(d.pid)||d.pid<=0)&&this.lockTiming.now()-b.mtimeMs<1e3||g().rmSync(c,{recursive:!0,force:!0})}retireObservedLock(a,b,c,d){let e=`${a}.recovering`;if(!b.isDirectory){try{g().linkSync(a,e)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a)return;throw b}return this.sameLock(e,b)&&this.lockToken(e)===c&&this.sameLock(a,b)&&this.lockToken(a)===c?(g().rmSync(a,{force:!0}),void this.finishRetirement(e,`${a}.retired-${d}`)):void g().rmSync(e,{force:!0})}try{g().renameSync(a,e)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a||"ENOTEMPTY"===a)return;throw b}this.sameLock(e,b)&&this.lockToken(e)===c?this.finishRetirement(e,`${a}.retired-${d}`):this.restoreRecovery(a,e)}resolveInterruptedRecovery(a){let b,c=`${a}.recovering`;if(!g().existsSync(c))return;if(g().existsSync(a)){let b,c=null;try{b=g().statSync(a)}catch(a){if("ENOENT"===a.code)return;throw a}try{c=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"))}catch{return}if(c&&Number.isInteger(c.pid)&&c.pid>0&&this.ownerAlive(c))return;let d="string"==typeof c?.token?c.token:null,e=d&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(d)?d:`abandoned-${b.dev}-${b.ino}-${b.ctimeMs}`;this.sameLock(a,{dev:b.dev,ino:b.ino})&&this.lockToken(a)===d&&this.finishRetirement(a,`${a}.retired-${e}`)}let d=null;try{b=g().statSync(c),d=JSON.parse(g().readFileSync(this.lockOwnerFile(c),"utf8"))}catch(b){if("ENOENT"===b.code)return;this.finishRetirement(c,`${a}.retired-interrupted-invalid`);return}if(Number.isInteger(d.pid)&&d.pid>0&&this.ownerAlive(d)){if(g().existsSync(a))return;this.restoreRecovery(a,c);return}let e="string"==typeof d.token?d.token:null,f=e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?e:`interrupted-${b.dev}-${b.ino}-${b.ctimeMs}`;this.finishRetirement(c,`${a}.retired-${f}`)}recoverContendedLock(a){let b;try{b=g().statSync(a)}catch(a){if("ENOENT"===a.code)return;throw a}let c=null;try{c=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"))}catch{}if(c&&Number.isInteger(c.pid)&&c.pid>0){if(!this.ownerAlive(c)){let d="string"==typeof c.token&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.token)?c.token:`legacy-${b.dev}-${b.ino}-${b.ctimeMs}`;this.retireObservedLock(a,{dev:b.dev,ino:b.ino,isDirectory:b.isDirectory()},"string"==typeof c.token?c.token:null,d)}return}}tryAcquireLock(a,b){if(this.resolveInterruptedRelease(a),g().existsSync(`${a}.releasing`)||(this.resolveInterruptedRecovery(a),g().existsSync(`${a}.recovering`)))return null;let c=e().randomUUID(),d=`${a}.owner.pending-${c}`,f=null,h=null,j=!1;try{g().mkdirSync(d,448),f=g().openSync(i().join(d,"owner.json"),"wx",384),g().writeFileSync(f,JSON.stringify({...b,token:c}),"utf8"),g().fsyncSync(f),g().closeSync(f),f=null;let e=g().openSync(d,"r");try{g().fsyncSync(e);let a=g().fstatSync(e);h={dev:a.dev,ino:a.ino}}finally{g().closeSync(e)}try{g().symlinkSync(i().basename(d),a,"dir")}catch(c){let b=c.code;if("EEXIST"!==b)throw c;return g().rmSync(d,{recursive:!0,force:!0}),this.recoverContendedLock(a),null}j=!0;let k={lock:a,token:c,identity:h,storage:d};if(!this.sameLock(a,k.identity)||this.lockToken(a)!==c)return null;if(g().existsSync(`${a}.recovering`)||g().existsSync(`${a}.releasing`))return this.releaseLock(k),null;return k}catch(b){throw null!==f&&g().closeSync(f),h&&(j?this.releaseLock({lock:a,token:c,identity:h,storage:d}):this.retireObservedLock(a,{...h,isDirectory:!0},null,`failed-${c}`)),j||g().rmSync(d,{recursive:!0,force:!0}),b}}retireClaim(a,b){let c,d=`${b.lock}.releasing`;if(this.resolveInterruptedRelease(b.lock),g().existsSync(d))return!1;try{c=g().statSync(a).isDirectory()}catch(a){if("ENOENT"===a.code)return!1;throw a}if(c){try{g().renameSync(a,d)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a||"ENOTEMPTY"===a)return!1;throw b}return this.sameLock(d,b.identity)&&this.lockToken(d)===b.token?(g().rmSync(d,{recursive:!0,force:!0}),g().rmSync(b.storage,{recursive:!0,force:!0}),!0):(this.restoreRecovery(a,d),!1)}try{g().linkSync(a,d)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a)return!1;throw b}return this.sameLock(d,b.identity)&&this.lockToken(d)===b.token?(this.sameLock(a,b.identity)&&this.lockToken(a)===b.token&&g().rmSync(a,{force:!0}),g().rmSync(d,{force:!0}),g().rmSync(b.storage,{recursive:!0,force:!0}),!0):(g().rmSync(d,{force:!0}),!1)}releaseLock(a){for(let b of[a.lock,`${a.lock}.recovering`,a.lock])if(this.sameLock(b,a.identity)&&this.lockToken(b)===a.token&&this.retireClaim(b,a))return}lockBackoff(a,b){return Math.min(Math.min(5*2**Math.floor(a/20),50),b)}acquireLock(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});for(let c=0;;c+=1){let d=this.tryAcquireLock(a,b);if(d)return d;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,this.lockBackoff(c,50))}}async acquireLockAsync(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});for(let c=0;;c+=1){let d=this.tryAcquireLock(a,b);if(d)return d;await this.lockTiming.wait(this.lockBackoff(c,50))}}mutate(a){let b=performance.now(),c=this.mutateStorage(a);this.transactionCount+=1,this.recordMetric(this.transactionDurations,performance.now()-b);let d=Math.floor(this.now()/1e3);for(let a of(this.transactionRateBuckets.set(d,(this.transactionRateBuckets.get(d)??0)+1),this.transactionRateBuckets.keys()))a<=d-60&&this.transactionRateBuckets.delete(a);return c}mutateStorage(a){let b=b=>{let c=a(b);for(let[a,c]of Object.entries(b.pendingSupersedence)){let d=aY(b,c.predecessorConversationId),e=aY(b,c.successorConversationId);if(!b.conversations[d]||!b.conversations[e]){delete b.pendingSupersedence[a];continue}try{a_(b,d,e,c.reason),delete b.pendingSupersedence[a]}catch(c){if(c instanceof X)continue;delete b.pendingSupersedence[a]}}return c};if("read"===this.sqliteMode||"sqlite"===this.sqliteMode){let a=this.sqliteStore.mutate(b,!1);return"read"===this.sqliteMode&&(this.mirrorDirty=null===this.lastMirroredRevision||a.revision>this.lastMirroredRevision,this.mirrorDirty&&this.scheduleRollbackMirrorForCadence()),"sqlite"===this.sqliteMode&&(this.mirrorDirty=null===this.lastMirroredRevision||a.revision>this.lastMirroredRevision),a.result}let c=`${this.filename}.write-lock`,d=this.acquireLock(c,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{let a="dual-write"===this.sqliteMode?this.sqliteStore.snapshot():null;if(a){let b=bl(this.filename);if(null!==b&&b!==a.revision)throw new bk(`agent registry backend revisions differ: JSON ${b}, SQLite ${a.revision}`);this.assertSqliteParity(a)}let c=be(this.filename,this.mcpGrantPolicy),d=c.file,h=b(d),i=bi(d),j=c.payload!==i;if(j&&bj(this.filename,i),a&&!j&&this.assertSqliteParity(),a&&j){let b;try{this.beforeDualWriteMutationReplace?.(),b=this.sqliteStore.replace(d,a.revision)}catch(d){let b=this.sqliteStore.snapshot();if(b.revision===a.revision)if(null===c.payload){var e,f,g;e=this.filename,f=c.file,g=a.revision,bj(e,bi(f,g))}else bj(this.filename,c.payload);else this.mirrorSqliteSnapshot(b);throw d}if(!b.replaced)throw this.mirrorSqliteSnapshot(b),new bk(`agent registry SQLite revision changed during dual-write mutation: expected ${a.revision}, current ${b.revision}`);this.assertSqliteParity()}return h}finally{this.releaseLock(d)}}snapshot(){return"read"===this.sqliteMode||"sqlite"===this.sqliteMode?this.sqliteStore.snapshot().file:bf(this.filename,this.mcpGrantPolicy)}readOnlySnapshot(){if("read"===this.sqliteMode||"sqlite"===this.sqliteMode)return this.sqliteStore.readOnlySnapshot().file;for(let a=0;a<2;a+=1){let a=bg(this.filename);if(this.readOnlyCache?.signature===a)return this.readOnlyCache.snapshot;let b=bf(this.filename,this.mcpGrantPolicy),c=bg(this.filename);if(a===c)return this.readOnlyCache={signature:c,snapshot:b},b}return bf(this.filename,this.mcpGrantPolicy)}snapshotSpawns(a){return this.sqliteStore?this.sqliteStore.snapshotSpawns(a):function(a,b){let c={};for(let d of new Set(b)){let b=a.receipts[d];if(!b)continue;let e=new Set,f=b.conversationId;for(let b=0;b<64&&f&&!e.has(f);b+=1){e.add(f);let c=a.conversationAliases[f];if(!c)break;f=b+1===64?null:c}c[d]={launchId:b.launchId,state:b.state,error:b.error,engine:b.engine,cwd:b.cwd,createdAt:b.createdAt,materializedPath:(f?a.conversations[f]:void 0)?.generations.at(-1)?.path??b.artifactPath}}return c}(this.readOnlySnapshot(),a)}snapshotTitleConversations(a){return this.sqliteStore?.snapshotTitleConversations(a)??[]}spawnReceiptForClientAttempt(a){let b=Object.values(this.readOnlySnapshot().receipts).find(b=>b.clientAttemptId===a);return b?at(b):null}conversationIdForSpawnCapabilityDigest(a){if(!/^[0-9a-f]{64}$/.test(a))return null;let b=this.readOnlySnapshot(),c=Object.values(b.receipts).find(b=>b.spawnCapabilityDigest===a);return c?aY(b,c.conversationId):null}rotateSpawnCapabilityForReceipt(a){let b=e().randomBytes(32).toString("base64url"),c=e().createHash("sha256").update(b).digest("hex");return this.mutate(d=>{let e=d.receipts[a];if(!e)throw Error("spawn receipt is missing");let f=aY(d,e.conversationId);for(let a of Object.values(d.receipts))aY(d,a.conversationId)===f&&(a.spawnCapabilityDigest=null);return e.spawnCapabilityDigest=c,b})}rotateSpawnCapabilityForPath(a){let b=e().randomBytes(32).toString("base64url"),c=e().createHash("sha256").update(b).digest("hex");return this.mutate(d=>{let e=Object.values(d.conversations).find(b=>aP(b,a));if(!e)return null;let f=Object.values(d.receipts).filter(a=>aY(d,a.conversationId)===e.id).sort((a,b)=>b.createdAt.localeCompare(a.createdAt)),g=f[0];if(!g)return null;for(let a of f)a.spawnCapabilityDigest=null;return g.spawnCapabilityDigest=c,b})}beginSpawnRequest(a){let b=this.mutate(b=>this.beginSpawnRequestInFile(b,a));if("rejected"===b.kind||"replay"===b.kind&&b.receipt.rejection)throw new E(b.receipt,b.receipt.rejection);return b}beginSpawnRequestInFile(a,b){{var c;let d=b.conversationId?aY(a,b.conversationId):null,f=b.parentConversationId?aY(a,b.parentConversationId):null,h=b.reviewsConversationId?aY(a,b.reviewsConversationId):null,i="string"==typeof b.role&&b.role.trim()?b.role.trim():null;if("reviewer"===i&&!h&&b.origin?.kind!=="container")throw Error("reviewer spawn requires reviewsConversationId");if(h&&"reviewer"!==i)throw Error("reviewsConversationId requires reviewer role");let j=null==b.explicitProject?null:(0,o.QK)(b.explicitProject);if(null!=b.explicitProject&&!j)throw Error("explicit project is not a valid project key");let n=b.supersedes?aY(a,b.supersedes):null;if(n){if(!a.conversations[n])throw Error("supersedence predecessor is unknown");if(d===n)throw Error("a conversation cannot supersede itself")}let p=d?a.conversations[d]:null,r=b.launchProfile?.title,s=(0,o.Ui)({cwd:b.cwd,...b.launchProfile??{},title:(0,m.St)(r),...j?{project:j}:{},parentConversationId:f}),t=p?.generations.at(-1)?.launchProfile,u="resume-successor"===b.purpose&&t?{cwd:s.cwd||t.cwd,model:s.model??t.model,effort:s.effort??t.effort,fast:s.fast??t.fast,permissionMode:s.permissionMode??t.permissionMode,readOnly:s.readOnly??t.readOnly,allowSubagents:t.allowSubagents||s.allowSubagents,mcpServers:t.mcpServers,plugins:t.plugins??[],title:(0,m.St)(t.title)??(0,m.St)(s.title),project:s.project??t.project,parentConversationId:s.parentConversationId??t.parentConversationId,role:"root"===t.role||"root"===s.role?"root":"worker",goal:s.goal??t.goal,plan:s.plan??t.plan}:s;if(D(p?.agentRole)&&(u.allowSubagents=!1),(p?.agentRole||f)&&(u.plugins=[]),p&&p.engine!==b.engine)throw Error("spawn conversation ownership is invalid");if("resume-successor"===b.purpose&&p&&!aa(p.migration))throw Error("conversation migration prevents resume succession");if(b.clientAttemptId){let c=Object.values(a.receipts).find(a=>a.clientAttemptId===b.clientAttemptId);if(c){let d=(0,m.St)(c.launchProfile.title),e=(0,m.St)(u.title),f=!d||!e||d===e,g=c.requestDigest===(b.requestDigest??null)&&c.engine===b.engine&&c.cwd===b.cwd&&c.transport===(b.transport??null)&&c.accountPin===(!0===b.accountPin)&&c.explicitProject===j&&(c.supersedes?.conversationId??null)===n&&c.launchProfile.permissionMode===u.permissionMode&&f;if(g&&!d&&e){c.launchProfile.title=e;let b=aY(a,c.conversationId),d=a.conversations[b];if(d){let c=new Set(d.generations.map(a=>a.path));for(let a of d.generations)(0,m.St)(a.launchProfile.title)||(a.launchProfile.title=e);for(let b of Object.values(a.entries))c.has(b.artifactPath)&&b.launchProfile&&!(0,m.St)(b.launchProfile.title)&&(b.launchProfile.title=e);for(let c of Object.values(a.receipts))aY(a,c.conversationId)!==b||(0,m.St)(c.launchProfile.title)||(c.launchProfile.title=e);d.updatedAt=au(),a.conversationRevision[d.engine]+=1}}return{kind:g?"replay":"conflict",receipt:at(c)}}}if(!(0,m.St)(u.title))throw Error(m.QE);let v=b.purpose??"launch",w="launch"!==v||b.origin?.kind==="successor",x=!w&&b.origin?function(a,b){if("agent"!==b.kind&&"container"!==b.kind)return null;let c="agent"===b.kind?b.conversationId:b.creatorConversationId,d=c?F(a,c):null;return{kind:b.kind,conversationId:d,role:d?function(a,b){let c=F(a,b),d=a.conversations[c]?.agentRole;if("string"==typeof d&&d.trim())return d;let e=a.lineageEdges[c]?.role;if("string"==typeof e&&e.trim())return e;let f=[...a.memberships[c]??[]].sort((a,b)=>b.createdAt.localeCompare(a.createdAt))[0];return f?.role??null}(a,d):null,depth:d?function(a,b){let c=F(a,b),d=a.conversations[c]?.delegationDepth;if(Number.isInteger(d)&&d>=0)return d;if((a.memberships[c]??[]).length>0)return 1;let e=0,f=new Set([c]),g=c;for(;e<8;){let b=a.lineageEdges[g];if(!b||"viewer-spawn"!==b.source)break;let c=F(a,b.parentConversationId);if(f.has(c))break;f.add(c),e+=1;let d=a.conversations[c]?.delegationDepth;if(Number.isInteger(d)&&d>=0)return d+e;g=c}return e}(a,d):0}}(a,b.origin):null,y=w?p?.delegationDepth??null:x?x.depth+1:0,A=w?p?.agentRole??null:i,C="launch"===v&&b.origin&&"successor"!==b.origin.kind?{kind:b.origin.kind}:void 0;u.mcpServers=(0,z.VW)({origin:C,parentConversationId:f??u.parentConversationId,agentRole:A,delegationDepth:y,requested:u.mcpServers},this.mcpGrantPolicy);let E=null;if(x){let a=function(){let a;try{a=g().readFileSync((0,k.BQ)("spawn-nesting.json"),"utf8")}catch{return{maxAgentNestingDepth:2}}try{var b;let c=JSON.parse(a);if(1===c.schemaVersion&&(b=c.maxAgentNestingDepth,Number.isInteger(b)&&b>=1&&b<=4))return{maxAgentNestingDepth:c.maxAgentNestingDepth}}catch{}return{maxAgentNestingDepth:2}}().maxAgentNestingDepth;D(x.role)?E={code:"reviewer_origin_spawn",origin:x,requestedRole:i,childDepth:y??0,maxDepth:a,guidance:(c=x.role,`${"verifier"===c?"Verifier":"Reviewer"} sessions run every check in-session — filesystem, shell, GitHub, and browser access stay available, but child agents do not. For more perspectives, report the need to your parent so an operator or orchestrator adds a visible reviewer stage (POST /api/pipelines or POST ${B.nP}).`),rejectedAt:au()}:null!==y&&y>a&&(E={code:"nesting_depth_exceeded",origin:x,requestedRole:i,childDepth:y,maxDepth:a,guidance:`Agent nesting is capped at depth ${a} and this launch would create a depth-${y} child. Finish delegated work in-session or report the need to your parent. An operator can raise maxAgentNestingDepth in Viewer spawn settings (PATCH /api/spawn/policy).`,rejectedAt:au()})}if(!E&&void 0!==b.liveChildrenCap){if(!Number.isInteger(b.liveChildrenCap)||b.liveChildrenCap<1)throw Error("liveChildrenCap must be a positive integer");if(!f)throw Error("liveChildrenCap requires parentConversationId");if(function(a,b){let c=aY(a,b),d=new Set;for(let b of Object.values(a.lineageEdges)){if("viewer-spawn"!==b.source||aY(a,b.parentConversationId)!==c)continue;let e=aY(a,b.childConversationId),f=b.evidence.launchId?a.receipts[b.evidence.launchId]:null,g=function(a,b,c,d){let e=[d?.key,c.childSessionKey],f=a.conversations[b],g=f?.generations.at(-1);return e.push(g?(0,q.sz)(f.engine,g.path):null),[...new Set(e.filter(a=>!!a).map(q.pp))].flatMap(b=>a.entries[b]?[a.entries[b]]:[])}(a,e,b,f),h=[f?.verifiedHost?.agent,f?.pane?.panePid,...g.flatMap(a=>[a.host?.agent,a.structuredHost?.process])].filter(a=>!!a);if(h.some(ax)){d.add(e);continue}if(!(h.length>0)){if(f&&av.has(f.state)){if("starting"===f.state&&Date.now()-Date.parse(f.createdAt)>12e4)continue;d.add(e);continue}g.some(a=>aw.has(a.status))&&d.add(e)}}return d.size}(a,f)>=b.liveChildrenCap)throw new W(f,b.liveChildrenCap)}if(d&&b.spawnCapabilityDigest)for(let b of Object.values(a.receipts))aY(a,b.conversationId)===d&&(b.spawnCapabilityDigest=null);let G=au(),H={launchId:e().randomUUID(),clientAttemptId:b.clientAttemptId??null,requestDigest:b.requestDigest??null,pendingOrchestratorSeatIdentity:null,transport:b.transport??null,admissionOwner:"structured"===b.transport||!0===b.ownStartingActuation?{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)}:null,spawnCapabilityDigest:"string"==typeof b.spawnCapabilityDigest&&/^[0-9a-f]{64}$/.test(b.spawnCapabilityDigest)?b.spawnCapabilityDigest:null,conversationId:d??`conversation_${e().randomUUID()}`,purpose:b.purpose??"launch",supersedes:n?{conversationId:n,reason:b.supersedesReason??"recovery-spawn"}:null,resumeSourcePath:"resume-successor"===b.purpose?p?.generations.at(-1)?.path??null:null,pathCorrelation:"codex"===b.engine&&(b.purpose??"launch")==="launch"?{cwd:b.cwd,startedAt:G}:null,engine:b.engine,cwd:b.cwd,accountId:b.accountId??null,accountPin:!0===b.accountPin,parentConversationId:f,parentSource:f&&("explicit"===b.parentSource||"inferred-caller"===b.parentSource)?b.parentSource:null,createdAt:G,state:E?"failed":"starting",artifactPath:E?null:b.expectedArtifactPath??null,artifactLifecycle:"pending",key:null,pane:null,verifiedHost:null,target:null,completionMode:null,error:E?E.guidance:null,agentRole:A,delegationDepth:y,rejection:E,launchProfile:u,explicitProject:j,launchDisplay:ba(b.launchDisplay),queuedPinnedSpawn:null};if(a.receipts[H.launchId]=H,E)return{kind:"rejected",receipt:at(H)};if(H.parentConversationId&&H.parentConversationId!==H.conversationId){let c="resume-successor"===b.purpose?a.lineageEdges[H.conversationId]:null;if(c&&c.childConversationId===H.conversationId){let b=aY(a,c.parentConversationId);b!==H.conversationId&&(a.lineageEdges[H.conversationId]={...c,childConversationId:H.conversationId,parentConversationId:b,reviewsConversationId:c.reviewsConversationId?aY(a,c.reviewsConversationId):null})}else a.lineageEdges[H.conversationId]={childConversationId:H.conversationId,parentConversationId:H.parentConversationId,childSessionKey:null,parentSessionKey:b.parentSessionKey??null,childArtifactPath:null,parentArtifactPath:b.parentArtifactPath??null,kind:h||"reviewer"===i?"review":"spawn",role:i,reviewsConversationId:h,source:"viewer-spawn",evidence:{launchId:H.launchId,clientAttemptId:H.clientAttemptId,parentSource:H.parentSource},createdAt:H.createdAt}}for(let c of b.memberships??[])a1(a,H.conversationId,c,H.createdAt);return{kind:"created",receipt:at(H)}}}claimSpawnActuation(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");let e="starting"===d.state&&!d.key&&!d.pane,f="tmux"===b&&("pane-bound"===d.state||"host-verified"===d.state)&&!d.key&&!!d.pane;return d.transport!==b||!e&&!f||d.admissionOwner&&this.ownerAlive(d.admissionOwner)?{claimed:!1,receipt:at(d)}:(d.admissionOwner={pid:process.pid,startIdentity:l.B.processIdentity(process.pid)},{claimed:!0,receipt:at(d)})})}queuePinnedSpawn(a,b,c){return this.mutate(d=>{let e=d.receipts[a];if(!e)throw Error("unknown spawn receipt");let f=a7(b,this.mcpGrantPolicy);if(!f||"structured"!==e.transport&&"tmux"!==e.transport||"starting"!==e.state||e.key||e.pane||!e.accountPin||!e.accountId||f.accountId!==e.accountId||f.spec.engine!==e.engine||f.spec.cwd!==e.cwd)throw Error("queued pinned spawn payload conflicts with its durable receipt");return e.queuedPinnedSpawn=f,e.launchProfile=(0,o.Ui)({...e.launchProfile,title:c},this.mcpGrantPolicy),at(e)})}claimStartingStructuredSpawn(a){return this.claimSpawnActuation(a,"structured")}claimTmuxSpawnActuation(a){return this.claimSpawnActuation(a,"tmux")}releaseSpawnActuation(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");let e="starting"===d.state&&!d.key&&!d.pane,f="tmux"===d.transport&&("pane-bound"===d.state||"host-verified"===d.state)&&!d.key&&!!d.pane;return("structured"===d.transport||"tmux"===d.transport)&&(e||f)&&d.admissionOwner&&d.admissionOwner.pid===b.pid&&d.admissionOwner.startIdentity===b.startIdentity?(d.admissionOwner=null,{released:!0,receipt:at(d)}):{released:!1,receipt:at(d)}})}releaseStartingStructuredSpawn(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return"structured"!==d.transport||"starting"!==d.state||d.key||d.pane||!d.admissionOwner||d.admissionOwner.pid!==b.pid||d.admissionOwner.startIdentity!==b.startIdentity?{released:!1,receipt:at(d)}:(d.admissionOwner=null,{released:!0,receipt:at(d)})})}releaseStructuredSpawnAdmissionOwner(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return"structured"===d.transport&&d.admissionOwner&&d.admissionOwner.pid===b.pid&&d.admissionOwner.startIdentity===b.startIdentity?(d.admissionOwner=null,{released:!0,receipt:at(d)}):{released:!1,receipt:at(d)}})}claimFailedSpawnForRetry(a,b){if(!b.trim())throw Error("spawn retry claim id is required");return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.retryClaim?.claimId===b?{kind:"claimed",receipt:at(d)}:d.retryClaim?{kind:"conflict",receipt:at(d)}:"failed"!==d.state?{kind:"settled",receipt:at(d)}:(d.retryClaim={claimId:b,claimedAt:au()},{kind:"claimed",receipt:at(d)})})}rememberMembership(a,b){return this.mutate(c=>at(a1(c,a,b,au())))}runIdentityWaveMigration(a){return a.dryRun?y(at(this.readOnlySnapshot()),{...a,dryRun:!0}):(0,n.oV)(()=>this.mutate(b=>y(b,a)))}stampOrchestratorSeatIdentity(a){return this.mutate(b=>{let c=x(b,a,a.activatedAt??a.designatedAt);if(c.changed&&c.engine&&(b.conversationRevision[c.engine]+=1),c.engine)return c.changed;let d=Object.values(b.receipts).find(b=>b.conversationId===a.conversationId);if(!d)return!1;let e=a8(a);return!(!e||(0,j.isDeepStrictEqual)(d.pendingOrchestratorSeatIdentity,e))&&(d.pendingOrchestratorSeatIdentity=e,!0)})}beginSpawn(a,b,c={}){let d=this.beginSpawnRequest({engine:a,cwd:b,launchProfile:c});if("created"!==d.kind)throw Error("could not create spawn receipt");return d.receipt}bindSpawnPane(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.pane&&(d.pane.paneId!==b.paneId||d.pane.server.startIdentity!==b.server.startIdentity||d.pane.panePid.startIdentity!==b.panePid.startIdentity)?(d.state="conflicted",d.error="spawn_pane_conflict"):"failed"===d.state||"conflicted"===d.state||(d.pane={...b,display:b.display??b.target,target:b.paneId},d.target=b.paneId,"starting"===d.state&&(d.state="pane-bound")),at(d)})}markSpawnHostVerified(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.pane&&d.pane.paneId===b.paneId&&d.pane.server.pid===b.server.pid&&d.pane.server.startIdentity===b.server.startIdentity&&d.pane.panePid.pid===b.panePid.pid&&d.pane.panePid.startIdentity===b.panePid.startIdentity?"failed"===d.state||"conflicted"===d.state||(d.verifiedHost=b,d.target=b.paneId,("starting"===d.state||"pane-bound"===d.state)&&(d.state="host-verified")):(d.state="conflicted",d.error="spawn_host_identity_conflict"),at(d)})}markSpawnPromptDelivered(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");return c.verifiedHost&&("host-verified"===c.state||"pane-bound"===c.state||"starting"===c.state)&&(c.state="prompt-delivered","tmux"===c.transport&&c.queuedPinnedSpawn&&(c.launchProfile=(0,o.Ui)(c.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),c.queuedPinnedSpawn=null,c.admissionOwner=null)),at(c)})}markSpawnPathPending(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");return c.verifiedHost&&("prompt-delivered"===c.state||"host-verified"===c.state)&&(c.state="path-pending"),at(c)})}preserveSpawnArtifactOwnership(a,b){this.mutate(c=>{let d=c.receipts[a];d&&"completed"!==d.state&&"failed"!==d.state&&(d.state="path-pending",d.error=b,d.verifiedHost=null,d.target=null)})}confirmSpawnPaneAliveInFile(a,b,c,d){var e;let f=a.receipts[b];if(!f||"conflicted"!==f.state||!f.pane)return f??null;if(f.engine!==d.engine||f.cwd!==d.cwd||"agent never reached a launch-ready prompt"!==(e=f.error)&&e?.startsWith("agent never reached a launch-ready prompt:")!==!0&&"launch prompt was not accepted by the agent"!==e&&e?.startsWith("launch prompt was not accepted by the agent:")!==!0)return f;let g=f.pane,h=g.server.pid===c.server.pid&&(null===g.server.startIdentity||g.server.startIdentity===c.server.startIdentity),i=g.paneId===c.paneId&&g.panePid.pid===c.panePid.pid&&(null===g.panePid.startIdentity||g.panePid.startIdentity===c.panePid.startIdentity);return h&&i&&(f.state="host-verified",f.error=null,f.verifiedHost=c,f.target=c.paneId),f}confirmSpawnPaneAlive(a,b,c){let d=this.readOnlySnapshot().receipts[a];return d&&"conflicted"===d.state?this.mutate(d=>{let e=this.confirmSpawnPaneAliveInFile(d,a,b,c);return e?at(e):null}):d?at(d):null}settleSpawnInFile(a,b,c,d,f=!0){let g=a.receipts[b];if(!g)throw Error("unknown spawn receipt");let h=g.key?a.entries[(0,q.pp)(g.key)]:null,i=a=>("completed"!==g.state&&(g.state="conflicted",g.error=a),{kind:"conflict",receipt:at(g),code:a});if("observed-completed"===d&&c.host?.kind==="tmux"&&this.confirmSpawnPaneAliveInFile(a,b,c.host,{engine:c.key.engine,cwd:c.cwd}),"failed"===g.state||"conflicted"===g.state)return{kind:"conflict",receipt:at(g),code:"spawn_artifact_conflict"===g.error||"spawn_pane_conflict"===g.error||"spawn_identity_conflict"===g.error?g.error:"spawn_identity_conflict"};if(g.engine!==c.key.engine||g.cwd!==c.cwd)return i("spawn_identity_conflict");if(g.pane&&c.host?.kind==="tmux"&&(g.pane.paneId!==c.host.paneId||g.pane.server.pid!==c.host.server.pid||null!==g.pane.server.startIdentity&&c.host.server.startIdentity!==g.pane.server.startIdentity||g.pane.panePid.pid>0&&g.pane.panePid.pid!==c.host.panePid.pid||null!==g.pane.panePid.startIdentity&&c.host.panePid.startIdentity!==g.pane.panePid.startIdentity))return i("spawn_pane_conflict");let j=a.conversations[g.conversationId],k=j?.generations.find(a=>a.id===c.key.sessionId),l=j?(0,q.sz)(j.engine,c.artifactPath)?.sessionId??ay(c.artifactPath):null,n="completed"===g.state&&"resume-successor"===g.purpose&&null!==g.resumeSourcePath&&g.artifactPath===g.resumeSourcePath&&null!==g.artifactPath&&null!==g.key&&void 0!==j&&aP(j,g.artifactPath)&&aP(j,c.artifactPath)&&(0,q.pp)(g.key)===(0,q.pp)(c.key)&&k?.id===c.key.sessionId&&l===c.key.sessionId;if(g.artifactPath&&g.artifactPath!==c.artifactPath&&!n)return i("spawn_artifact_conflict");if(g.key&&(0,q.pp)(g.key)!==(0,q.pp)(c.key))return i("spawn_identity_conflict");let r=a.entries[(0,q.pp)(c.key)],s=!!r&&!!j&&(j.generations.some(a=>a.path===r.artifactPath)||j.continuityPaths.includes(r.artifactPath)),t="resume-successor"===g.purpose&&s&&k?.id===c.key.sessionId&&l===c.key.sessionId;if(r&&r.artifactPath!==c.artifactPath&&(!h||(0,q.pp)(h.key)!==(0,q.pp)(c.key))&&!t)return i("spawn_artifact_conflict");g.queuedPinnedSpawn&&(g.launchProfile=(0,o.Ui)(g.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),g.queuedPinnedSpawn=null);let u=au(),v=j??{id:g.conversationId,engine:g.engine,generations:[],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:g.accountPin?g.accountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{state:"unknown",source:"empty",terminalAt:null,observedAt:null},createdAt:u,updatedAt:u};if(v.agentRole??=g.agentRole,v.delegationDepth??=g.delegationDepth,"launch"===g.purpose&&g.accountPin&&g.accountId&&(v.pinnedAccountId=g.accountId),v.engine!==g.engine||"resume-successor"===g.purpose&&!aa(v.migration))return i("spawn_identity_conflict");if("migration-successor"===g.purpose){let b=Object.values(a.conversations).find(a=>a.id!==v.id&&a.engine===v.engine&&aP(a,c.artifactPath));if(b&&!a5(a,b,v,c.artifactPath))return i("spawn_artifact_conflict");aQ(v,c.artifactPath)}if("launch"===g.purpose){let b=Object.values(a.conversations).find(a=>a.id!==v.id&&a.engine===v.engine&&aP(a,c.artifactPath));if(b&&!a5(a,b,v,c.artifactPath))return i("spawn_artifact_conflict")}if("resume-successor"===g.purpose&&!aP(v,c.artifactPath)){let b=Object.values(a.conversations).find(a=>a.id!==v.id&&a.engine===v.engine&&aP(a,c.artifactPath));if(b&&!a5(a,b,v,c.artifactPath))return i("spawn_artifact_conflict");let d=(0,q.sz)(v.engine,c.artifactPath)?.sessionId??ay(c.artifactPath),e=v.generations.find(a=>a.id===d);if(e)v.continuityPaths.includes(e.path)||v.continuityPaths.push(e.path),e.path=c.artifactPath,e.accountId=g.accountId??e.accountId,e.launchProfile={...e.launchProfile,...g.launchProfile};else{let a=v.generations.at(-1);a&&null===a.archivedAt&&(a.archivedAt=u),v.generations.push({id:d,path:c.artifactPath,accountId:g.accountId,launchProfile:g.launchProfile,historyHash:null,host:null,createdAt:u,archivedAt:null})}if(a.conversationRevision[v.engine]+=1,a.engineRouting[v.engine].revision+=1,v.migration&&("waiting-turn"===v.migration.phase||"requested"===v.migration.phase)){let a=v.generations.at(-1);a&&(v.migration={...v.migration,sourceGenerationId:a.id,updatedAt:u})}}g.explicitProject&&!v.projectOwnership&&(v.projectOwnership={project:g.explicitProject,source:"operator",setAt:u,operationId:g.launchId}),"migration-successor"===g.purpose||v.generations.some(a=>a.path===c.artifactPath)||(v.generations.push({id:ay(c.artifactPath),path:c.artifactPath,accountId:g.accountId,launchProfile:g.launchProfile,historyHash:null,host:null,createdAt:u,archivedAt:null}),a.conversationRevision[v.engine]+=1,a.engineRouting[v.engine].revision+=1);let w=v.generations.find(a=>a.path===c.artifactPath),y=(0,m.St)(g.launchProfile.title,120);w&&y&&!(0,m.St)(w.launchProfile.title,120)&&(w.launchProfile.title=y,a.conversationRevision[v.engine]+=1,a.engineRouting[v.engine].revision+=1);let z=Object.values(a.migrationIntents).find(b=>b.engine===v.engine&&Y(b)&&(0,p.xc)(a,b,Date.parse(u))),A=v.generations.at(-1);z&&!v.pinnedAccountId&&A&&A.accountId!==z.targetId&&!v.migration&&(v.migration={intentId:z.id,phase:$(a,v)?"waiting-turn":"requested",targetId:z.targetId,revision:z.revision,error:null,errorCode:null,operationId:e().randomUUID(),sourceGenerationId:A.id,successorLaunchProfile:null,providerReceipt:null,pendingContinuityPaths:[],boardProject:null,boardOperationId:null,boardPlacementProject:v.projectOwnership?.project??A.launchProfile.project,updatedAt:u}),v.updatedAt=u,a.conversations[v.id]=v;let B={...c,accountId:g.accountId,launchProfile:g.launchProfile,updatedAt:u};if(a.entries[(0,q.pp)(c.key)]=B,g.key=c.key,g.artifactPath=c.artifactPath,g.pendingOrchestratorSeatIdentity){let b=g.pendingOrchestratorSeatIdentity,c=x(a,b,b.activatedAt??b.designatedAt);g.pendingOrchestratorSeatIdentity=null,c.changed&&c.engine&&(a.conversationRevision[c.engine]+=1)}let C=a.lineageEdges[g.conversationId];return C&&(C.childSessionKey=c.key,C.childArtifactPath=c.artifactPath),c.host?.kind==="tmux"&&(g.verifiedHost=c.host),null===g.target&&c.host?.kind==="tmux"&&(g.target=c.host.paneId),g.state=f?"completed":"path-pending",g.error=null,f&&(g.completionMode="observed-completed"===g.completionMode&&"route-completed"===d?"route-recovered":g.completionMode??d,g.supersedes&&a0(a,g.supersedes.conversationId,g.conversationId,g.supersedes.reason)),{kind:"settled",receipt:at(g),entry:at(B),conversation:at(v)}}stageStructuredSpawn(a,b){return this.mutate(c=>{let d=new Set([b.artifactPath]),e=ad(c,b.key.engine,d),f=this.settleSpawnInFile(c,a,{...b,structuredHostOperationId:a},"route-completed",!1);return af(c,b.key.engine,e,d),f})}finalizeStructuredSpawn(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");if("failed"===c.state||"conflicted"===c.state)return{kind:"conflict",receipt:at(c),code:"spawn_identity_conflict"};if(!c.key||!c.artifactPath)throw Error("structured spawn identity is incomplete");let d=b.entries[(0,q.pp)(c.key)],e=b.conversations[c.conversationId];if(d&&"string"==typeof d.structuredHostOperationId&&d.structuredHostOperationId!==a)return c.state="conflicted",c.error="spawn_identity_conflict",{kind:"conflict",receipt:at(c),code:"spawn_identity_conflict"};if(!d||!e||d.artifactPath!==c.artifactPath||!d.structuredHost?.process||!d.claimOwner||"unhosted"===d.status||"dead"===d.status)throw Error("structured spawn durable host setup is incomplete");return d.pendingAction=null,d.updatedAt=au(),c.state="completed",c.error=null,c.completionMode="route-completed",c.supersedes&&a0(b,c.supersedes.conversationId,c.conversationId,c.supersedes.reason),{kind:"settled",receipt:at(c),entry:at(d),conversation:at(e)}})}recoverDeliveredStructuredSpawn(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");if("failed"===c.state||"conflicted"===c.state)return{kind:"conflict",receipt:at(c),code:"spawn_identity_conflict"};if("path-pending"!==c.state||!c.key||!c.artifactPath)throw Error("structured spawn recovery identity is incomplete");let d=b.entries[(0,q.pp)(c.key)],e=b.conversations[c.conversationId];if(!d||!e||d.artifactPath!==c.artifactPath)throw Error("structured spawn recovery identity is unavailable");if(d.host||d.structuredHost?.process||d.claimOwner||"dead"!==d.status&&"unhosted"!==d.status)throw Error("structured spawn host loss is unconfirmed");let f={...d,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},g=ae(b,(0,q.pp)(c.key),f),h=ad(b,c.key.engine,g);return Object.assign(d,f,{updatedAt:au()}),c.state="completed",c.error=null,c.completionMode=c.completionMode??"route-recovered",c.supersedes&&a0(b,c.supersedes.conversationId,c.conversationId,c.supersedes.reason),af(b,c.key.engine,h,g),{kind:"settled",receipt:at(c),entry:at(d),conversation:at(e)}})}recoverStructuredSpawnFromEvidence(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");if("conflicted"===d.state||d.retryClaim)return{kind:"conflict",receipt:at(d),code:"spawn_identity_conflict"};let e=d.key?c.entries[(0,q.pp)(d.key)]:null,f=null;if(e){let{updatedAt:a,...b}=e;f=b}let g=b&&f&&(f.structuredHost?.process||f.claimOwner)?{...b,host:f.host,structuredHost:f.structuredHost,claimEpoch:f.claimEpoch,claimOwner:f.claimOwner,pendingAction:f.pendingAction}:b??f;return!g||d.key&&(0,q.pp)(d.key)!==(0,q.pp)(g.key)||d.artifactPath&&d.artifactPath!==g.artifactPath?{kind:"conflict",receipt:at(d),code:"spawn_identity_conflict"}:("failed"===d.state&&(d.state=d.key?"path-pending":"starting",d.error=null),this.settleSpawnInFile(c,a,g,"route-recovered"))})}settleSpawn(a,b,c="route-completed"){return this.mutate(d=>{let e=new Set([b.artifactPath]),f=ad(d,b.key.engine,e),g=this.settleSpawnInFile(d,a,b,c);return af(d,b.key.engine,f,e),g})}completeSpawn(a,b){let c=this.settleSpawn(a,b);if("conflict"===c.kind)throw Error(c.code);return c.entry}failSpawn(a,b){this.mutate(c=>{let d=c.receipts[a];if(d&&"completed"!==d.state&&"failed"!==d.state&&"conflicted"!==d.state){if("host-verified"===d.state||"prompt-delivered"===d.state){d.error=b;return}d.state=d.pane?"conflicted":"failed",d.error=b,"conflicted"===d.state&&(d.verifiedHost=null),("failed"===d.state||"conflicted"===d.state)&&d.queuedPinnedSpawn&&(d.launchProfile=(0,o.Ui)(d.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),d.queuedPinnedSpawn=null),aL(c)}})}terminalizeFailedSpawnDeliveries(){let a=this.readOnlySnapshot();return Object.values(a.heldDeliveries).some(b=>{let c=aJ(a,b);return!!c&&("failed"===b.state?!["completed","failed","conflicted"].includes(c.state):("failed"===c.state||"conflicted"===c.state)&&0===b.attempts&&("held"===b.state||"assigned"===b.state))})?this.mutate(a=>aL(a)):[]}failStructuredSpawn(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)return{claimed:!1,receipt:null,cleanup:null};if("completed"===d.state||"failed"===d.state||"conflicted"===d.state)return{claimed:!1,receipt:at(d),cleanup:null};if(d.state="failed",d.error=b,d.queuedPinnedSpawn&&(d.launchProfile=(0,o.Ui)(d.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),d.queuedPinnedSpawn=null),aL(c),!d.key||!d.artifactPath)return{claimed:!0,receipt:at(d),cleanup:null};let e=c.entries[(0,q.pp)(d.key)];if(!e||e.artifactPath!==d.artifactPath||"string"==typeof e.structuredHostOperationId&&e.structuredHostOperationId!==a)return{claimed:!0,receipt:at(d),cleanup:null};let f=e.structuredHostOperationId===a,g=null==e.structuredHostOperationId&&"spawn"===e.pendingAction;if(!f&&!g)return{claimed:!0,receipt:at(d),cleanup:null};let h={key:at(d.key),process:at(e.structuredHost?.process??null),releaseRegisteredHost:f},i="resume-successor"===d.purpose&&d.resumeSourcePath===d.artifactPath&&(e.structuredHost?.eventCursor??0)>0&&e.structuredHost?{...e.structuredHost,endpoint:"stdio:released",process:null,activeTurnRef:null,pendingAttention:[],activeFlags:[]}:null,j=ae(c,(0,q.pp)(d.key),{...e,host:null,structuredHost:i,status:"dead",claimOwner:null,pendingAction:null}),k=ad(c,d.key.engine,j);return e.host=null,e.structuredHost=i,e.status="dead",e.claimOwner=null,e.pendingAction=null,e.updatedAt=au(),af(c,d.key.engine,k,j),{claimed:!0,receipt:at(d),cleanup:h}})}invalidateSpawnHost(a,b){this.mutate(c=>{let d=c.receipts[a];d&&"failed"!==d.state&&"conflicted"!==d.state&&(d.state="conflicted",d.error=b,d.verifiedHost=null)})}upsert(a){return this.mutate(b=>{let c=(0,q.pp)(a.key),d=b.entries[c],e=void 0===a.structuredHost&&d?.structuredHost!==void 0?{...a,structuredHost:d.structuredHost}:a,f=ae(b,c,e),g=ad(b,a.key.engine,f),h={...e,updatedAt:au()};return b.entries[c]=h,af(b,a.key.engine,g,f),at(h)})}setStructuredHost(a,b,c){return this.mutate(d=>{let e=(0,q.pp)(a),f=d.entries[e];if(!f)throw Error("agent registry entry is missing");let g=ae(d,e,{...f,structuredHost:b?az(b):null,status:c??f.status}),h=ad(d,a.engine,g);return f.structuredHost=b?az(b):null,c&&(f.status=c),f.updatedAt=au(),af(d,a.engine,h,g),at(f)})}terminateStructuredHost(a,b){return this.mutate(c=>{let d=(0,q.pp)(a),e=c.entries[d];if(!e)return!1;let f=e.structuredHost?.process??null;if(b&&f&&(f.pid!==b.pid||f.startIdentity!==b.startIdentity))return!1;let g={...e,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},h=ae(c,d,g),i=ad(c,a.engine,h);return Object.assign(e,g,{updatedAt:au()}),af(c,a.engine,i,h),!0})}terminateInactiveStructuredHost(a,b,c){return this.mutate(d=>{let e=d.conversations[a],f=(0,q.pp)(b),g=d.entries[f],h=g?.structuredHost?.process??null,i=null!==h&&!this.ownerAlive(h);if(!e||e.engine!==b.engine||!e.generations.some(a=>a.id===b.sessionId)||!g||c&&(!h||h.pid!==c.process.pid||h.startIdentity!==c.process.startIdentity||g.claimEpoch!==c.claimEpoch||g.structuredHost?.writerClaimEpoch!==c.claimEpoch)||g.host||null!==h&&!i||g.claimOwner&&!i||!i&&"dead"!==g.status&&"unhosted"!==g.status)return!1;let j={...g,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},k=ae(d,f,j),l=ad(d,b.engine,k);return Object.assign(g,j,{updatedAt:au()}),af(d,b.engine,l,k),e.generations.at(-1)?.id===b.sessionId?"current":"predecessor"})}setStructuredHostClaimed(a,b,c,d,e,f=!1){return this.mutate(g=>{let h=(0,q.pp)(a),i=g.entries[h];if(!i?.structuredHost||i.claimOwner!==d||i.claimEpoch!==e||i.structuredHost.writerClaimEpoch!==e)return null;let k=az(b);if(!f&&i.status===c&&(0,j.isDeepStrictEqual)(az(i.structuredHost),k))return at(i);let l={...i,structuredHost:k,status:c},m=ae(g,h,l),n=ad(g,a.engine,m);return i.structuredHost=l.structuredHost,i.status=c,f&&(i.claimOwner=null),i.updatedAt=au(),af(g,a.engine,n,m),at(i)})}ownsStructuredHostClaim(a,b,c){let d=this.readOnlySnapshot().entries[(0,q.pp)(a)];return d?.claimOwner===b&&d.claimEpoch===c&&d.structuredHost?.writerClaimEpoch===c}claimStructuredHost(a,b,c={}){return this.mutate(d=>{let e=d.entries[(0,q.pp)(a)];if(!e?.structuredHost||"unhosted"===e.status&&!0!==c.allowUnhosted)return null;(0,z.k8)(d,a,this.mcpGrantPolicy);let f="unhosted"===e.status||"dead"===e.status,g=e.structuredHost.process;if(!f&&g&&this.ownerAlive(g))return null;let h=`${V}${JSON.stringify(b)}`;if(e.claimOwner){let a=function(a){if(!a.startsWith(V))return null;try{let b=JSON.parse(a.slice(V.length));return Number.isInteger(b.pid)&&b.pid>0?{pid:b.pid,startIdentity:"string"==typeof b.startIdentity?b.startIdentity:null}:null}catch{return null}}(e.claimOwner),d=!0===c.reclaimUnverifiedOwner&&null===e.structuredHost.process&&a?.startIdentity===null&&null!==b.startIdentity;if(!a||this.ownerAlive(a)&&!d)return null}return e.claimOwner=h,e.claimEpoch+=1,e.structuredHost.writerClaimEpoch=e.claimEpoch,e.updatedAt=au(),at(e)})}markUnhosted(a){this.mutate(b=>{let c=b.entries[(0,q.pp)(a)];if(!c)return;let d=c.structuredHost?.process?c.status:"unhosted",e={...c,host:null,status:d},f=ae(b,(0,q.pp)(a),e),g=ad(b,a.engine,f);c.host=null,c.status=d,c.updatedAt=au(),af(b,a.engine,g,f)})}claim(a,b){return this.mutate(c=>{let d=c.entries[(0,q.pp)(a)];if(!d)throw Error("agent registry entry is missing");if(d.claimOwner&&d.claimOwner!==b)throw Error("agent session is claimed by another operation");return d.claimOwner=b,d.claimEpoch+=1,d.updatedAt=au(),at(d)})}releaseClaim(a,b){this.mutate(c=>{let d=c.entries[(0,q.pp)(a)];d?.claimOwner===b&&(d.claimOwner=null,d.updatedAt=au())})}releaseStructuredHostClaim(a,b,c){return this.mutate(d=>{let e=d.entries[(0,q.pp)(a)];return!!e?.structuredHost&&e.claimOwner===b&&e.claimEpoch===c&&e.structuredHost.writerClaimEpoch===c&&(e.claimOwner=null,e.updatedAt=au(),!0)})}async withOperationLock(a,b,c){let d=`${this.filename}.locks/${encodeURIComponent((0,q.pp)(a))}`,e=await this.acquireLockAsync(d,b);try{return await c()}finally{this.releaseLock(e)}}importResumePanes(a,b){this.mutate(c=>{c.importedResumePanes&&c.legacyResumePanes.serverPid===a||(c.legacyResumePanes={serverPid:a,panes:Object.fromEntries(b)},c.importedResumePanes=!0)})}resumePanes(a){let b=this.readOnlySnapshot().legacyResumePanes;return b.serverPid===a?new Map(Object.entries(b.panes).map(([a,b])=>[a,at(b)])):new Map}rememberResumePane(a,b,c){this.mutate(d=>{d.legacyResumePanes.serverPid!==a&&(d.legacyResumePanes={serverPid:a,panes:{}}),d.legacyResumePanes.panes[b]=c,d.importedResumePanes=!0})}reconcileSpawnReceipts(a){let b=new Set([...a].map(q.pp));this.mutate(a=>{for(let c of Object.values(a.entries))b.has((0,q.pp)(c.key))&&(c.pendingAction=null);for(let c of Object.values(a.receipts)){if("starting"!==c.state||!c.artifactPath)continue;let d=Object.values(a.entries).find(a=>a.artifactPath===c.artifactPath)?.key;d&&b.has((0,q.pp)(d))&&(c.state="completed")}})}completeObservedSpawn(a,b){return this.settleSpawn(a,b,"observed-completed")}ensureConversation(a,b,c){return this.mutate(d=>{let f=Object.values(d.conversations).find(c=>c.engine===a&&aP(c,b));if(f)return at(f);let g=au(),h={id:`conversation_${e().randomUUID()}`,engine:a,generations:[{id:ay(b),path:b,accountId:c,launchProfile:(0,o.Ui)(),historyHash:null,host:null,createdAt:g,archivedAt:null}],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{state:"unknown",source:"empty",terminalAt:null,observedAt:null},createdAt:g,updatedAt:g};return d.conversations[h.id]=h,d.conversationRevision[a]+=1,d.engineRouting[a].revision+=1,at(h)})}reconcileConversations(a){return this.mutate(b=>{let c=new Set,d=new Map,f=function(a,b){let c=Object.values(a.receipts).flatMap(a=>{if("codex"!==a.engine||"path-pending"!==a.state||null!==a.artifactPath||!a.pathCorrelation)return[];let b=Date.parse(a.pathCorrelation.startedAt);return Number.isFinite(b)?[{launchId:a.launchId,cwd:a.pathCorrelation.cwd,accountId:a.accountId,expectedStart:b}]:[]});if(0===c.length)return new Map;let d=[];for(let c of b){if("codex"!==c.engine||!c.startedAt)continue;let b=Date.parse(c.startedAt);if(!Number.isFinite(b))continue;let e=(0,q.sz)(c.engine,c.path)?.sessionId??null;Object.values(a.conversations).filter(a=>a.engine===c.engine&&(aP(a,c.path)||null!==e&&a.generations.some(a=>a.id===e))).some(a=>!aU(a,c.path))||d.push({path:c.path,cwd:c.launchProfile.cwd,accountId:c.accountId,observedStart:b})}let e=new Map,f=a=>JSON.stringify([a.cwd,a.accountId]),g=new Set([...c.map(f),...d.map(f)]),h=(a,b,c,d)=>{let e=a[b][c];if(!e||d.count>e.count||d.count===e.count&&d.distance<e.distance){a[b][c]={...d,assignments:d.assignments.map(a=>[...a])};return}if(d.count!==e.count||d.distance!==e.distance)return;let f=new Set(e.assignments.map(a=>JSON.stringify(a)));for(let a of d.assignments){let b=JSON.stringify(a);if(!f.has(b)&&(e.assignments.push(a),f.add(b),2===e.assignments.length))break}};for(let a of g){let b=c.filter(b=>f(b)===a).sort((a,b)=>a.expectedStart-b.expectedStart||a.launchId.localeCompare(b.launchId)),g=d.filter(b=>f(b)===a).sort((a,b)=>a.observedStart-b.observedStart||a.path.localeCompare(b.path)),i=(a,b)=>a.observedStart>=b.expectedStart-1e3&&a.observedStart<=b.expectedStart+3e4;if(b.length>1&&g.length>1){let a=g.some(a=>b.filter(b=>i(a,b)).length>1),c=b.some(a=>g.filter(b=>i(b,a)).length>1);if(a||c)continue}let j=Array.from({length:g.length+1},()=>Array(b.length+1));j[0][0]={count:0,distance:0,assignments:[[]]};for(let a=0;a<=g.length;a+=1)for(let c=0;c<=b.length;c+=1){let d=j[a][c];if(!d||(a<g.length&&h(j,a+1,c,d),c<b.length&&h(j,a,c+1,d),a>=g.length||c>=b.length))continue;let e=g[a],f=b[c];i(e,f)&&h(j,a+1,c+1,{count:d.count+1,distance:d.distance+Math.abs(e.observedStart-f.expectedStart),assignments:d.assignments.map(a=>[...a,[e.path,f.launchId]])})}let k=j.at(-1)?.at(-1)?.assignments;if(k?.length===1)for(let[a,b]of k[0])e.set(a,b)}return e}(b,a),g=new Map,h=new Map,i=a=>{for(let b of a.generations){let c=g.get(b.path)??[];c.includes(a)||c.push(a),g.set(b.path,c);let d=h.get(`${a.engine}:${b.id}`)??[];d.includes(a)||d.push(a),h.set(`${a.engine}:${b.id}`,d)}for(let b of a.continuityPaths){let c=g.get(b)??[];c.includes(a)||c.push(a),g.set(b,c)}};for(let a of Object.values(b.conversations))i(a);(function(a,b,c,d){let e=b.filter(a=>"codex"===a.engine&&"string"==typeof a.forkSourceThreadId&&a.forkSourceThreadId.length>0&&(a.forkIntent??"provider-history")==="provider-history");if(0===e.length)return!1;let f=Object.values(a.conversations).filter(a=>"codex"===a.engine),g=new Map,h=new Map;for(let a of f)for(let b of a.generations)h.set(b.id,a),g.set(b.id,a);for(let a of f)for(let b of a.continuityPaths){let c=(0,q.sz)("codex",b)?.sessionId;c&&!g.has(c)&&g.set(c,a)}let i=!1,j=e;for(let b=0;b<e.length&&j.length>0;b+=1){let b=[],e=!1;for(let f of j){let j=(0,q.sz)("codex",f.path)?.sessionId??null,k=g.get(f.forkSourceThreadId);if(!k||a.conversations[k.id]!==k){b.push(f);continue}let l=j?h.get(j):void 0;if(l&&l.id!==k.id&&!aU(l,f.path))continue;let m=(c.get(f.path)??[]).filter(b=>a.conversations[b.id]===b&&"codex"===b.engine&&aP(b,f.path));if(m.some(a=>a.id===k.id)){k.providerForkPaths.includes(f.path)||k.generations.some(a=>a.path===f.path)||(aR(k,f.path),i=!0),j&&g.set(j,k);continue}let n=m.find(a=>aU(a,f.path));(!(m.length>0)||n)&&(!n||a5(a,n,k,f.path))&&(aR(k,f.path),a6(k.updatedAt,f.observedAt)&&(k.updatedAt=f.observedAt),d(k),j&&g.set(j,k),i=!0,e=!0)}if(!e)break;j=b}return i})(b,a,g,i)&&c.add("codex");let j=new Map,k=()=>{for(let a of(j.clear(),Object.values(b.receipts))){if("resume-successor"!==a.purpose)continue;let c=aY(b,a.conversationId),d=j.get(c)??[];d.push(a),j.set(c,d)}};k();let l=new Map;for(let a of Object.values(b.receipts)){let b=a.artifactPath?`${a.engine}:${a.artifactPath}`:null;b&&"migration-successor"===a.purpose&&"failed"!==a.state&&"conflicted"!==a.state&&!l.has(b)&&l.set(b,a)}let n=new Map;for(let a of Object.values(b.receipts)){if("structured"!==a.transport||"pending"!==a.artifactLifecycle||!a.artifactPath)continue;let b=`${a.engine}:${a.artifactPath}`,c=n.get(b)??[];c.push(a),n.set(b,c)}for(let p of a){for(let a of n.get(`${p.engine}:${p.path}`)??[])a.artifactLifecycle="materialized";let a=(0,q.sz)(p.engine,p.path)?.sessionId??null,r=f.get(p.path);if(a&&r){let d=b.receipts[r],e=d?this.settleSpawnInFile(b,r,{key:{engine:p.engine,sessionId:a},artifactPath:p.path,cwd:d.cwd,accountId:d.accountId,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},"observed-completed"):null;if(e?.kind==="settled"){c.add(p.engine),k();let a=b.conversations[aY(b,d.conversationId)];a&&i(a)}}let s=(g.get(p.path)??[]).filter(a=>b.conversations[a.id]===a&&a.engine===p.engine&&aP(a,p.path)),t=aW(b,s);if(t){let a=!1;for(let c of s)c.id!==t.id&&aU(c,p.path)&&(a=a5(b,c,t,p.path)||a);a&&k()}let u=a?`${p.engine}:${a}`:null,v=u?d.get(u):void 0;u&&void 0===v&&d.set(u,p.path);let w=a?aW(b,(h.get(`${p.engine}:${a}`)??[]).filter(c=>b.conversations[c.id]===c&&c.generations.some(b=>b.id===a))):null,x=null!==w&&!aa(w.migration)&&(j.get(w.id)??[]).some(ab),y=t??w??null,z=!1;if(!x&&t&&w&&t.id!==w.id&&a5(b,t,w,p.path)&&(t=w,y=w,z=!0,k()),!x&&(!t||z)&&w&&a){let b=w.generations.find(b=>b.id===a);b&&b.path!==p.path&&(void 0===v||v===p.path?(w.continuityPaths.includes(b.path)||w.continuityPaths.push(b.path),b.path=p.path):w.continuityPaths.includes(p.path)||w.continuityPaths.push(p.path),w.updatedAt=p.observedAt,i(w),c.add(p.engine))}if(!y){let a=l.get(`${p.engine}:${p.path}`),d=a?b.conversations[a.conversationId]:null;d&&(aQ(y=d,p.path),i(y),y.updatedAt=p.observedAt,c.add(p.engine))}if(!y){let a=p.observedAt;y={id:`conversation_${e().randomUUID()}`,engine:p.engine,generations:[{id:ay(p.path),path:p.path,accountId:p.accountId,launchProfile:(0,o.Ui)({...p.launchProfile,title:(0,m.St)(p.launchProfile.title)}),historyHash:null,host:null,createdAt:a,archivedAt:null}],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{...p.turn,observedAt:p.observedAt},createdAt:a,updatedAt:a},b.conversations[y.id]=y,i(y),aX(b,y,p.path,p.observedAt),c.add(p.engine);continue}let A=y.generations.find(a=>a.path===p.path);if(!A)continue;let B=A.accountId,C=A.launchProfile.role,D=y.turn.state,E=b.lineageEdges[y.id],F=p.launchProfile.parentConversationId;A.accountId=p.accountId??A.accountId,A.launchProfile={...A.launchProfile,...p.launchProfile,cwd:A.launchProfile.cwd||p.launchProfile.cwd,model:A.launchProfile.model??p.launchProfile.model,effort:A.launchProfile.effort??p.launchProfile.effort,fast:A.launchProfile.fast??p.launchProfile.fast,permissionMode:A.launchProfile.permissionMode??p.launchProfile.permissionMode,readOnly:A.launchProfile.readOnly??p.launchProfile.readOnly,mcpServers:A.launchProfile.mcpServers,title:(0,m.St)(A.launchProfile.title)??(0,m.St)(p.launchProfile.title),project:p.launchProfile.project??A.launchProfile.project,parentConversationId:E?.source==="viewer-spawn"?E.parentConversationId:F??A.launchProfile.parentConversationId,role:"root"===A.launchProfile.role||"root"===p.launchProfile.role?"root":"worker",goal:p.launchProfile.goal??A.launchProfile.goal,plan:p.launchProfile.plan??A.launchProfile.plan},aX(b,y,p.path,p.observedAt),(void 0===p.expectedTurnObservedAt||p.expectedTurnObservedAt===y.turn.observedAt)&&a6(y.turn.observedAt,p.observedAt)&&(y.turn={...p.turn,observedAt:p.observedAt}),a6(y.updatedAt,p.observedAt)&&(y.updatedAt=p.observedAt),(B!==A.accountId||C!==A.launchProfile.role||D!==y.turn.state)&&c.add(p.engine)}let p=(a,c)=>aW(b,(g.get(a)??[]).filter(d=>b.conversations[d.id]===d&&d.engine===c&&aP(d,a))),r=(a,c)=>{let d=new Set,e=c;for(;e&&!d.has(e);){if(e===a)return!0;d.add(e);let c=b.lineageEdges[e]?.parentConversationId;e=c?aY(b,c):void 0}return!1};for(let d of a){if(!d.parentArtifactPath)continue;let a=p(d.path,d.engine);if(!a||b.lineageEdges[a.id]?.source==="viewer-spawn")continue;let e=p(d.parentArtifactPath,d.engine);if(!e)continue;let f=aY(b,e.id);if(f===a.id||r(a.id,f))continue;let g=a.generations.find(a=>a.path===d.path)??a.generations.at(-1);if(!g)continue;g.launchProfile.parentConversationId!==f&&(g.launchProfile={...g.launchProfile,parentConversationId:f});let h=b.lineageEdges[a.id]?.parentConversationId??null;aX(b,a,d.path,d.observedAt),(b.lineageEdges[a.id]?.parentConversationId??null)!==h&&c.add(d.engine)}for(let a of c)b.conversationRevision[a]+=1,b.engineRouting[a].revision+=1;return at(b)})}conversationForPath(a){let b=Object.values(this.readOnlySnapshot().conversations).find(b=>aP(b,a));return b?at(b):null}canonicalConversationId(a){return aY(this.readOnlySnapshot(),a)}recordSupersedence(a,b,c="manual"){return this.mutate(d=>{let e=aY(d,a),f=aY(d,b);if(e===f)throw Error("a conversation cannot supersede itself");let g=a_(d,e,f,c);if(!g)throw Error("supersedence could not be recorded");return at(g)})}supersedenceChainTail(a){return aZ(this.readOnlySnapshot(),a)}supersedenceConflict(a){let b=this.readOnlySnapshot(),c=aZ(b,a),d=b.conversations[c];return d&&a$(b,d)?c:null}clearSupersedence(a){return this.mutate(b=>{let c=b.conversations[aY(b,a)];if(!c)return null;for(let[a,d]of(c.supersededBy&&(c.supersededBy=null,c.updatedAt=au(),b.conversationRevision[c.engine]+=1),Object.entries(b.pendingSupersedence)))aZ(b,d.predecessorConversationId)===c.id&&delete b.pendingSupersedence[a];return at(c)})}conversation(a){let b=this.readOnlySnapshot(),c=b.conversations[aY(b,a)];return c?at(c):null}launchProfileForPath(a){let b=this.readOnlySnapshot();for(let c of Object.values(b.conversations)){let b=c.generations.find(b=>b.path===a);if(b)return at(b.launchProfile);if(c.continuityPaths.includes(a)){let a=c.generations.at(-1);if(a)return at(a.launchProfile)}}let c=Object.values(b.receipts).find(b=>b.artifactPath===a);return c?at(c.launchProfile):null}transcriptAccountId(a,b){let c=this.readOnlySnapshot();for(let d of Object.values(c.conversations)){if(d.engine!==a)continue;let c=d.generations.find(a=>a.path===b);if(c?.accountId)return c.accountId;if(d.continuityPaths.includes(b)){let a=d.generations.at(-1);if(a?.accountId)return a.accountId}}let d=Object.values(c.receipts).find(c=>c.artifactPath===b&&c.engine===a);return d?.accountId??null}updateConversationLaunchProfile(a,b){return this.mutate(c=>{let d=c.conversations[aY(c,a)],e=d?.generations.at(-1);if(!d||!e)throw Error("viewer conversation is unknown");return aB(c,d,e,b),at(d)})}claimConversationReconfigure(a,b){if(!b.operationId||!Number.isSafeInteger(b.revision)||b.revision<0)throw Error("conversation reconfigure ownership is invalid");return this.mutate(c=>{let d=c.conversations[aY(c,a)],e=d?.generations.at(-1);if(!d||!e)throw Error("viewer conversation is unknown");let f=d.reconfigure??null;if(f&&(f.revision>b.revision||f.revision===b.revision&&f.operationId!==b.operationId))return{kind:"stale",state:at(f),conversation:at(d)};if(f?.operationId===b.operationId&&f.revision===b.revision){if(JSON.stringify(f.profile)!==JSON.stringify(b.profile)||f.accountId!==(b.accountId??null))throw Error("conversation reconfigure replay conflicts with durable ownership");return{kind:"replayed",state:at(f),conversation:at(d)}}let g=void 0!==b.accountId&&b.accountId===e.accountId&&d.migration?.targetId!==b.accountId,h=void 0!==b.accountId&&d.migration?.targetId===b.accountId;f?.status==="applying"&&null!==f.accountId&&(h&&!g?function(a,b,c,d){let e=b.migration;if(!e||["committed","rolled-back","failed-recoverable"].includes(e.phase))return;let f=a.migrationIntents[e.intentId];f?.scope==="conversation"&&f.requestIds.includes(al(c))&&(f.requestIds=[...f.requestIds.filter(a=>!a.startsWith("reconfigure:")),al(d)],f.updatedAt=au(),b.updatedAt=f.updatedAt)}(c,d,f,b):am(c,d,f));let i=f?.status==="applying"?f.previousProfile:b.previousProfile??{model:e.launchProfile.model,effort:e.launchProfile.effort,fast:e.launchProfile.fast},j={operationId:b.operationId,revision:b.revision,status:"applying",profile:at(b.profile),previousProfile:at(i),accountId:b.accountId??null,error:null};return aB(c,d,e,j.profile),d.reconfigure=j,{kind:"claimed",state:at(j),conversation:at(d)}})}settleConversationReconfigure(a,b,c,d,e=null){return this.mutate(f=>{let g=f.conversations[aY(f,a)],h=g?.generations.at(-1);if(!g||!h)throw Error("viewer conversation is unknown");let i=g.reconfigure??null;return i&&i.operationId===b&&i.revision===c?i.status===d?{kind:"replayed",state:at(i),conversation:at(g)}:"applying"!==i.status?{kind:"stale",state:at(i),conversation:at(g)}:("failed"===d&&(am(f,g,i),aB(f,g,h,i.previousProfile)),i.status=d,i.error="failed"===d?e:null,g.updatedAt=au(),{kind:"settled",state:at(i),conversation:at(g)}):{kind:"stale",state:i?at(i):null,conversation:at(g)}})}canonicalPath(a){let b=this.conversationForPath(a);return b?.generations.at(-1)?.path??a}setEngineRouting(a,b){return(0,n.oV)(()=>this.mutate(c=>{let d=c.engineRouting[a];return d.activeAccountId=b,d.revision+=1,d.revision}))}engineRouting(a){return at(this.readOnlySnapshot().engineRouting[a])}migrationScope(a,b){return function(a,b,c){let d={total:0,idle:0,busy:0,deferred:0,alreadyTarget:0},e=_(a);for(let f of Object.values(a.conversations)){if(f.engine!==b||f.pinnedAccountId)continue;let g=f.generations.at(-1);if(g&&null!==g.accountId){if(g.accountId===c){d.alreadyTarget+=1;continue}d.total+=1,d[Z(a,f,e)]+=1}}return d}(this.readOnlySnapshot(),a,b)}retireAccount(a,b,c,d={}){(0,n.oV)(()=>this.mutate(e=>{if((0,A.Vm)(e,a,b,d).length>0)throw Error("account has current conversations");let f=au(),g=e.engineRouting[a];g.activeAccountId===b&&(g.activeAccountId=c,g.revision+=1);let h=new Set;for(let c of Object.values(e.migrationIntents))c.engine===a&&c.targetId===b&&(h.add(c.id),"stopped"!==c.state&&(c.state="stopped",c.revision+=1,c.updatedAt=f,c.stoppedAt=f));if(0!==h.size)for(let a of Object.values(e.conversations))a.migration&&h.has(a.migration.intentId)&&(aT(a),ah(e,a,f),ai(e,a,p.JJ),a.migration=null,a.updatedAt=f,e.conversationRevision[a.engine]+=1)}))}commitMigrationIntent(a){return(0,n.oV)(()=>this.mutate(b=>{let c=Object.values(b.migrationIntents).find(b=>b.engine===a.engine&&b.requestIds.includes(a.requestId));if(c)return at(c);let d=b.engineRouting[a.engine];if(d.revision!==a.expectedRevision)throw new an(a.expectedRevision,d.revision);let f=Object.values(b.migrationIntents).find(b=>b.engine===a.engine&&"draining"===b.state&&Y(b));if(f?.origin==="manual"&&"auto"===a.origin)return at(f);let g=au();f?(f.requestIds.push(a.requestId),f.targetId=a.targetId,f.origin=a.origin,f.revision+=1,f.evidence=a.evidence??null,f.updatedAt=g):(f={id:e().randomUUID(),engine:a.engine,targetId:a.targetId,origin:a.origin,revision:1,state:"draining",createdAt:g,updatedAt:g,requestIds:[a.requestId],evidence:a.evidence??null,stoppedAt:null},b.migrationIntents[f.id]=f),d.activeAccountId=a.targetId,d.revision+=1;let h=0;for(let c of Object.values(b.conversations)){if(c.engine!==a.engine||c.pinnedAccountId||("manual"===a.origin&&c.migrationOptOut?.targetId===a.targetId&&(c.migrationOptOut=null),"auto"===a.origin&&c.migrationOptOut?.targetId===a.targetId))continue;let d=c.generations.at(-1);if(!d||null===d.accountId||d.accountId===a.targetId){d&&c.migration&&"committed"!==c.migration.phase&&(aT(c),ah(b,c,g),ai(b,c,p.JJ),c.migration=null,c.updatedAt=g);continue}let e=Z(b,c);((a.scope??"all")!=="active"||"deferred"!==e)&&(h+=1,ah(b,c,g),c.migration=ag(c,d,f,"busy"===e?"waiting-turn":"requested",g),c.updatedAt=g)}return 0===h&&(f.state="complete"),at(f)}))}requestConversationMigrationToActiveAccount(a){return this.mutate(b=>{let c=aY(b,a),d=b.conversations[c];if(!d)throw Error("viewer conversation is unknown");if(d.pinnedAccountId)return at(d);let f=b.engineRouting[d.engine].activeAccountId,g=d.generations.at(-1);if(!f||!g||null===g.accountId||g.accountId===f||d.migrationOptOut?.targetId===f||d.migration?.targetId===f&&!["committed","rolled-back"].includes(d.migration.phase))return at(d);let h=au(),i=Object.values(b.migrationIntents).filter(a=>a.engine===d.engine&&a.targetId===f&&"stopped"!==a.state&&Y(a)).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0];i?("draining"!==i.state&&(i.revision+=1),i.state="draining",i.updatedAt=h):(i={id:e().randomUUID(),engine:d.engine,targetId:f,origin:"manual",revision:1,state:"draining",createdAt:h,updatedAt:h,requestIds:[`lazy:${b.engineRouting[d.engine].revision}:${c}`],evidence:null,stoppedAt:null},b.migrationIntents[i.id]=i);let j="busy"===Z(b,d)?"waiting-turn":"requested";return ah(b,d,h),d.migration=ag(d,g,i,j,h),d.updatedAt=h,b.conversationRevision[d.engine]+=1,b.engineRouting[d.engine].revision+=1,at(d)})}requestConversationReseat(a,b,c){return this.mutate(d=>{let f=aY(d,a),g=d.conversations[f];if(!g)throw Error("viewer conversation is unknown");if(c&&(g.reconfigure?.operationId!==c.operationId||g.reconfigure.revision!==c.revision||"applying"!==g.reconfigure.status))throw Error("conversation reconfigure is superseded");let h=g.generations.at(-1);if(!h||null===h.accountId||h.accountId===b)return at(g);if(g.migration&&!["committed","rolled-back","failed-recoverable"].includes(g.migration.phase)){if(!c)return at(g);if(g.migration.targetId===b){let a=d.migrationIntents[g.migration.intentId];if(a?.scope==="conversation"){let b=al(c);a.requestIds=[...a.requestIds.filter(a=>!a.startsWith("reconfigure:")),b],a.updatedAt=au(),g.updatedAt=a.updatedAt}return at(g)}let a=au(),e=d.migrationIntents[g.migration.intentId];e?.scope==="conversation"&&"stopped"!==e.state&&(e.state="stopped",e.stoppedAt=a,e.updatedAt=a),aT(g),ah(d,g,a),g.migration={...g.migration,pendingContinuityPaths:[]}}let i=au();g.migrationOptOut?.targetId===b&&(g.migrationOptOut=null);let j=c?al(c):`reseat:${f}:${h.id}`,k=Object.values(d.migrationIntents).filter(a=>"conversation"===a.scope&&a.engine===g.engine&&a.targetId===b&&"stopped"!==a.state&&(c?a.requestIds.includes(j):a.requestIds.some(a=>a.startsWith(`reseat:${f}:`)))).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0];k?(k.requestIds.includes(j)||k.requestIds.push(j),"draining"!==k.state&&(k.revision+=1),k.state="draining",k.updatedAt=i):(k={id:e().randomUUID(),engine:g.engine,targetId:b,origin:"manual",scope:"conversation",revision:1,state:"draining",createdAt:i,updatedAt:i,requestIds:[j],evidence:null,stoppedAt:null},d.migrationIntents[k.id]=k);let l="busy"===Z(d,g)?"waiting-turn":"requested";return ah(d,g,i),g.migration=ag(g,h,k,l,i),g.updatedAt=i,d.conversationRevision[g.engine]+=1,d.engineRouting[g.engine].revision+=1,at(g)})}upsertMigrationIntent(a,b,c,d,f=null){return this.mutate(g=>{let h=Object.values(g.migrationIntents).find(b=>b.engine===a&&"draining"===b.state&&Y(b));if(h)return"manual"===h.origin&&"auto"===c||(h.requestIds.includes(d)||h.requestIds.push(d),(h.targetId!==b||h.origin!==c)&&(h.targetId=b,h.origin=c,h.revision+=1,h.evidence=f),h.updatedAt=au()),at(h);let i=au(),j={id:e().randomUUID(),engine:a,targetId:b,origin:c,revision:1,state:"draining",createdAt:i,updatedAt:i,requestIds:[d],evidence:f,stoppedAt:null};return g.migrationIntents[j.id]=j,at(j)})}setConversationMigration(a,b){return this.mutate(c=>{let d=aY(c,a),e=c.conversations[d];if(!e)throw Error("viewer conversation is unknown");let f=e.generations.at(-1);return e.migration=b?{...b,errorCode:b.errorCode??null,operationId:b.operationId??`${b.intentId}:${d}:${b.revision}`,sourceGenerationId:b.sourceGenerationId??f?.id??"",successorLaunchProfile:b.successorLaunchProfile??null,providerReceipt:b.providerReceipt??null,pendingContinuityPaths:b.pendingContinuityPaths??[],boardProject:b.boardProject??null,boardOperationId:b.boardOperationId??null,boardPlacementProject:b.boardPlacementProject??b.boardProject??null}:null,e.updatedAt=au(),at(e)})}transitionConversationMigration(a,b,c,d){return this.mutate(e=>{let f=e.conversations[aY(e,a)],g=f?.migration;if(!f||!g)throw Error("conversation has no migration");if(g.revision!==b||!c.includes(g.phase))throw Error("migration transition is stale");return f.migration={...g,...d,updatedAt:au()},f.updatedAt=au(),at(f)})}persistMigrationProviderReceipt(a,b,c,d){return this.mutate(e=>{let f=e.conversations[aY(e,a)],g=f?.migration;if(!f||!g)throw Error("conversation has no migration");if(g.revision!==b||g.operationId!==c)throw Error("migration provider receipt is stale");if("successor-starting"===g.phase){for(let a of[...new Set([...d.continuityPaths,d.path])])aQ(f,a);return f.migration={...g,phase:"verifying",providerReceipt:d,updatedAt:au()},f.updatedAt=au(),at(f)}let h=null!==g.providerReceipt&&(0,o.WB)(g.providerReceipt,d);if(("verifying"===g.phase||"committed"===g.phase)&&h)return at(f);throw Error("migration provider receipt conflicts with durable state")})}recordConversationContinuityPath(a,b){return this.mutate(c=>{let d=aY(c,a),e=c.conversations[d];if(!e)throw Error("viewer conversation is unknown");return aS(c,e,b),aQ(e,b),e.updatedAt=au(),at(e)})}recordMigrationContinuityPath(a,b,c){return this.mutate(d=>{let e=aY(d,a),f=d.conversations[e];if(!f)throw Error("viewer conversation is unknown");aS(d,f,b);let g=f.migration;if(g?.phase==="successor-starting"&&g.operationId===c.operationId&&g.revision===c.revision)aQ(f,b);else!f.generations.some(a=>a.path===b)&&(f.continuityPaths.includes(b)||f.continuityPaths.push(b),f.abandonedContinuityPaths.includes(b)||f.abandonedContinuityPaths.push(b));return f.updatedAt=au(),at(f)})}markMigrationBoardProjects(a){0!==a.length&&this.mutate(b=>{let c=au();for(let d of a){let a=b.conversations[aY(b,d.id)],e=a?.migration;a&&e&&"committed"===e.phase&&e.operationId===d.operationId&&(e.boardProject=d.project,e.boardOperationId=d.operationId,e.boardPlacementProject=d.project,e.updatedAt=c,a.updatedAt=c)}})}markMigrationBoardPlacementProjects(a){0!==a.length&&this.mutate(b=>{let c=au();for(let d of a){let a=b.conversations[aY(b,d.id)],e=a?.migration;a&&e&&"committed"===e.phase&&e.operationId===d.operationId&&(e.boardPlacementProject=d.project,e.updatedAt=c,a.updatedAt=c)}})}retryConversationMigration(a,b){return this.mutate(c=>{let d=c.conversations[aY(c,a)],f=d?.migration;if(!d||!f)throw Error("conversation has no migration");if(void 0!==b&&f.revision!==b)throw Error("migration revision is stale");let g=c.migrationIntents[f.intentId];if(!g||"stopped"===g.state)throw Error("migration intent is inactive");"complete"===g.state&&"failed-recoverable"===f.phase&&(g.state="draining",g.updatedAt=au());let h=d.generations.at(-1);if(!h)throw Error("conversation has no source generation");return d.migration={...f,phase:$(c,d)?"waiting-turn":"requested",targetId:g.targetId,revision:g.revision,operationId:"codex-fork-outcome-unknown"===f.errorCode||f.revision===g.revision?f.operationId:e().randomUUID(),sourceGenerationId:h.id,successorLaunchProfile:f.revision===g.revision?f.successorLaunchProfile??null:null,providerReceipt:null,pendingContinuityPaths:"committed"===f.phase?[]:f.pendingContinuityPaths,boardProject:f.boardProject,boardOperationId:f.boardOperationId,boardPlacementProject:f.boardPlacementProject,error:null,errorCode:null,updatedAt:au()},d.updatedAt=au(),at(d)})}commitSuccessor(a,b,c,d,e){return this.mutate(f=>{let g=f.conversations[aY(f,a)],h=g?.migration,i=e.operationId===d&&e.nativeId===b.id&&e.path===b.path&&(void 0===b.historyHash||e.historyHash===b.historyHash)&&(void 0===b.host||(0,j.isDeepStrictEqual)(e.host,b.host)),k=h?.providerReceipt!==null&&h?.providerReceipt!==void 0&&(0,o.WB)(h.providerReceipt,e);if(!g||!h||h.revision!==c||h.operationId!==d||h.targetId!==b.accountId||!k||!i)throw Error("migration succession ownership is stale");if("committed"===h.phase){let a=g.generations.at(-1);if(a?.id===b.id&&a.path===b.path)return at(g);throw Error("migration succession is already committed")}if("verifying"!==h.phase)throw Error("migration succession is not ready to commit");let l=g.generations.at(-1);if(!l)throw Error("viewer conversation has no native generation");let m=au();l.archivedAt=m;let n={...b,launchProfile:(0,o.Ui)(b.launchProfile??l.launchProfile),historyHash:b.historyHash??null,host:b.host??null,createdAt:m,archivedAt:null};g.generations.push(n),g.continuityPaths=g.continuityPaths.filter(a=>a!==n.path);let q=new Set(h.pendingContinuityPaths);return g.abandonedContinuityPaths=g.abandonedContinuityPaths.filter(a=>!q.has(a)),g.migration={...h,phase:"committed",updatedAt:au()},g.updatedAt=au(),ai(f,g,p.uK),f.conversationRevision[g.engine]+=1,f.engineRouting[g.engine].revision+=1,at(g)})}setMigrationIntentState(a,b,c,d=p.JJ){return this.mutate(e=>{let f=e.migrationIntents[a];if(!f)throw Error("migration intent is unknown");if(void 0!==c&&f.revision!==c)throw Error("migration intent revision is stale");let g=new Set(Object.values(e.conversations).filter(a=>a.engine===f.engine).map(a=>a.generations.at(-1)?.path).filter(a=>!!a)),h=ad(e,f.engine,g);if(f.state=b,f.stoppedAt="stopped"===b?au():f.stoppedAt,f.updatedAt=au(),"stopped"===b)for(let b of Object.values(e.conversations)){if(b.engine!==f.engine)continue;let c=b.generations.at(-1);if(e.engineRouting[b.engine].activeAccountId===f.targetId&&c?.accountId!==f.targetId&&(b.migrationOptOut={targetId:f.targetId,updatedAt:f.updatedAt},b.updatedAt=f.updatedAt),b.migration?.intentId===a&&"committed"!==b.migration.phase){if(ah(e,b,f.updatedAt),"rolled-back"===b.migration.phase){for(let c of Object.values(e.heldDeliveries))aY(e,c.conversationId)===b.id&&ak(e,c.id,a,d);continue}b.migration={...b.migration,phase:"rolled-back",error:null,errorCode:null,updatedAt:f.updatedAt},ai(e,b,d.slice(0,240))}}return af(e,f.engine,h,g),at(f)})}autoBalancePolicy(a){return at(this.readOnlySnapshot().autoBalance[a])}quotaObservations(a){return at(Object.values(this.readOnlySnapshot().quotaObservations[a]))}recordQuotaEvaluation(a){return this.mutate(b=>{for(let c of a.observations)c.engine===a.engine&&(b.quotaObservations[a.engine][c.accountId]=c);let c=b.autoBalance[a.engine];c.lastCheckAt=a.now;let d=!1;if(a.signature)if(c.sustain&&c.sustain.signature===a.signature&&c.sustain.bootId===a.bootId){let b=Date.parse(c.sustain.firstAt);c.sustain.lastAt=a.now,(d=Number.isFinite(b)&&Date.parse(a.now)-b>=a.minimumGapMs)&&(c.sustain=null,c.lastTrigger=a.evidence??null)}else c.sustain={signature:a.signature,firstAt:a.now,lastAt:a.now,bootId:a.bootId};else c.sustain=null;return c.revision+=1,{sustained:d,routeRevision:b.engineRouting[a.engine].revision,policy:at(c)}})}setAutoBalancePolicy(a,b,c){return this.mutate(d=>{let e=d.autoBalance[a];if(void 0!==c&&e.revision!==c)throw Error("automatic balance policy revision is stale");return e.enabled=b,b||(e.sustain=null),e.revision+=1,at(e)})}recordAutoBalanceOutcome(a,b,c,d){return this.mutate(e=>{let f=e.autoBalance[a];return f.cooldownUntil=d,f.lastOutcome={at:au(),kind:"complete"===b?"switched":"failed-partial"===b?"failed":"skipped",fromId:c?.sourceId??null,fromPercent:c?.sourcePercent??null,toId:c?.targetId??null,toPercent:c?.targetPercent??null,window:c?.sourceWindow??null,detail:"failed-partial"===b?"one or more sessions need operator recovery":null},f.lastTrigger=c,c&&(f.departed[c.sourceId]=au()),f.revision+=1,at(f)})}holdDelivery(a,b,c=null,d="text",f=[],g=null,h={}){if("text"===d&&!b)throw Error("held delivery must contain at most 32000 characters");if("runtime-images"===d&&0===f.length)throw Error("runtime-images delivery requires image references");return(0,U.h1)(b),this.mutate(i=>{let j=aM(i,a,b,c,g,h),{canonicalId:k,existing:l,requestDigest:m}=j;if(j.supersededFailed){let a=i.heldDeliveries[j.supersededFailed.id];a&&(a.clientMessageId=null)}let n=i.conversations[k],o=new Set([n?.generations.at(-1)?.path].filter(a=>!!a)),p=n?ad(i,n.engine,o):"",q=n?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(n.migration.phase),r=n?.generations.at(-1),s=a=>("delivered"===a.state||"delivery-uncertain"===a.state?aI(i,a):(a.deliveredAt=null,a.error=null,q?(a.state="held",a.generationId=null,a.assignedAt=null):r?(a.state="assigned",a.generationId=r.id,a.assignedAt=au()):(a.state="failed",a.generationId=null,a.assignedAt=null,a.error="delivery target is unavailable and remains recoverable"),aI(i,a),n&&af(i,n.engine,p,o)),at(a));if(l)return l.error===aE?at(l):s(l);let t=aN(j,b,c,d,f,g);if(t)return t;let u=e().randomUUID(),v={id:u,conversationId:k,runtimeConversationId:k,text:b,createdAt:au(),clientMessageId:c,payloadKind:d,runtimeImages:f.map(a=>({...a})),contentDigest:g,artifactPaths:[],command:aC(h,u),requestDigest:m,state:"held",generationId:null,attempts:0,assignedAt:null,deliveredAt:null,error:null};if(aO(i,k,this.now()),Object.values(i.heldDeliveries).filter(a=>a.conversationId===k&&["held","assigned","delivery-uncertain"].includes(a.state)).length>=100)throw Error("held delivery limit reached for conversation");return i.heldDeliveries[v.id]=v,h.operationId&&(i.deliveryOperationOwners[v.command.operationId]??={conversationId:k,runtimeConversationId:v.runtimeConversationId,clientMessageId:c,deliveryId:v.id,command:v.command,requestDigest:v.requestDigest,contentDigest:v.contentDigest,createdAt:v.createdAt,terminalState:null}),s(v)})}preflightDeliveryReservation(a,b,c,d,e,f,g={}){return aN(aM(this.readOnlySnapshot(),a,b,c,f,g),b,c,d,e,f)}pendingDeliveries(a){let b=this.readOnlySnapshot(),c=aY(b,a);return at(Object.values(b.heldDeliveries).filter(a=>a.conversationId===c&&"delivered"!==a.state).sort((a,b)=>a.createdAt.localeCompare(b.createdAt)||a.id.localeCompare(b.id)))}terminalizeHeldDelivery(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");return"delivered"!==d.state&&aj(c,d,b),at(d)})}terminalizeRolledBackMigrationDelivery(a,b,c){return this.mutate(d=>ak(d,a,b,c))}compactDeliveryReservations(){return this.mutate(a=>aO(a,void 0,this.now()))}queueSuccessorCleanup(a,b){this.mutate(c=>{let d=c.pendingSuccessorCleanups[b.operationId];c.pendingSuccessorCleanups[b.operationId]=d??{conversationId:aY(c,a),receipt:b,createdAt:au(),lastError:null}})}recordSuccessorCleanupFailure(a,b){this.mutate(c=>{let d=c.pendingSuccessorCleanups[a];d&&(d.lastError=b.slice(0,240))})}completeSuccessorCleanup(a){this.mutate(b=>{delete b.pendingSuccessorCleanups[a]})}beginDeliveryAttempt(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d||"assigned"!==d.state||d.generationId!==b)return null;let e=c.conversations[aY(c,d.conversationId)],f=new Set([e?.generations.at(-1)?.path].filter(a=>!!a)),g=e?ad(c,e.engine,f):"";return e?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(e.migration.phase)||e?.generations.at(-1)?.id!==b?null:(d.state="delivery-uncertain",d.attempts+=1,d.error="delivery started; recovery requires an explicit outcome",aI(c,d),e&&af(c,e.engine,g,f),at(d))})}recordDeliveryArtifacts(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");if("delivery-uncertain"!==d.state)throw Error("delivery attempt has not started");return d.artifactPaths=[...new Set(b)],at(d)})}restoreSnapshot(a,b){(0,n.oV)(()=>this.mutate(c=>{Object.assign(c,function a(b,c,d){if(JSON.stringify(c)===JSON.stringify(d))return b;if(JSON.stringify(b)===JSON.stringify(c))return void 0===d?void 0:at(d);if(b&&c&&d&&"object"==typeof b&&"object"==typeof c&&"object"==typeof d&&!Array.isArray(b)&&!Array.isArray(c)&&!Array.isArray(d)){let e={...b};for(let f of new Set([...Object.keys(c),...Object.keys(d)])){let g=a(b[f],c[f],d[f]);void 0===g?delete e[f]:e[f]=g}return e}return b}(c,a,b))}))}recordDeliveryOutcome(a,b,c=null){return this.mutate(d=>{let e=d.heldDeliveries[a];if(!e)throw Error("held delivery is unknown");if("delivered"===e.state||aH(e))return at(e);let f=d.conversations[aY(d,e.conversationId)],g=new Set([f?.generations.at(-1)?.path].filter(a=>!!a)),h=f?ad(d,f.engine,g):"";e.state=b,e.deliveredAt="delivered"===b?au():null,e.error=c?.slice(0,240)??null,"delivered"===b&&(e.text=""),"failed"===b&&aK(d,e),f&&af(d,f.engine,h,g);let i=at(e);return("delivered"===b||"failed"===b)&&aO(d,e.conversationId,this.now()),i})}recordDeliveryOutcomeForOperation(a,b,c,d=null){return this.recordDeliveryOutcomesForOperations([{conversationId:a,operationId:b,state:c,error:d}])[0]??null}recordDeliveryOutcomesForOperations(a){return this.mutate(b=>{let c=(a,c)=>`${aY(b,a)}\u0000${c}`,d=new Map;for(let a of Object.values(b.heldDeliveries)){let b=c(a.conversationId,a.command.operationId);d.has(b)||d.set(b,a)}let e=new Set,f=a.map(a=>{let f=aY(b,a.conversationId),g=d.get(c(f,a.operationId));if(!g||"delivered"===g.state)return g?at(g):null;let h="failed"===g.state&&"delivered"===a.state&&!aH(g);if("delivery-uncertain"!==g.state&&!h)return null;let i=b.conversations[f],j=new Set([i?.generations.at(-1)?.path].filter(a=>!!a)),k=i?ad(b,i.engine,j):"";return g.state=a.state,g.deliveredAt="delivered"===a.state?au():null,g.error=a.error?.slice(0,240)??null,"delivered"===a.state&&(g.text=""),"failed"===a.state&&aK(b,g),i&&af(b,i.engine,k,j),e.add(g.conversationId),at(g)});for(let a of e)aO(b,a,this.now());return f})}discardDelivery(a){this.mutate(b=>{let c=b.heldDeliveries[a],d=c?b.conversations[aY(b,c.conversationId)]:void 0,e=new Set([d?.generations.at(-1)?.path].filter(a=>!!a)),f=d?ad(b,d.engine,e):"";if(c){let a=b.deliveryOperationOwners[c.command.operationId];0===c.attempts&&a?.deliveryId===c.id&&delete b.deliveryOperationOwners[c.command.operationId]}delete b.heldDeliveries[a],d&&af(b,d.engine,f,e)})}requeueHeldDelivery(a){return this.placeDeliveryForRetry(a,!1)}retryUncertainDelivery(a){return this.placeDeliveryForRetry(a,!0)}requeueUnactuatedDelivery(a){return this.placeDeliveryForRetry(a,!0)}placeDeliveryForRetry(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");if("delivered"===d.state)return at(d);if("delivery-uncertain"===d.state&&!b)throw Error("uncertain delivery requires an explicit client retry");if(b&&"delivery-uncertain"!==d.state)throw Error("delivery outcome is already resolved");let e=c.conversations[aY(c,d.conversationId)],f=new Set([e?.generations.at(-1)?.path].filter(a=>!!a)),g=e?ad(c,e.engine,f):"";if(e?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(e.migration.phase))return d.state="held",d.generationId=null,d.assignedAt=null,d.deliveredAt=null,d.error=null,aI(c,d),e&&af(c,e.engine,g,f),at(d);let h=e?.generations.at(-1);return h?(d.state="assigned",d.generationId=h.id,d.assignedAt=au(),d.deliveredAt=null,d.error=null):(d.state="failed",d.deliveredAt=null,d.error="delivery target is unavailable and remains recoverable"),aI(c,d),e&&af(c,e.engine,g,f),at(d)})}rollbackConversationMigration(a,b){return this.mutate(c=>{let d=aY(c,a),e=c.conversations[d];if(!e?.migration)throw Error("conversation has no migration");if(void 0!==b&&e.migration.revision!==b)throw Error("migration revision is stale");let f=new Set([e.generations.at(-1)?.path].filter(a=>!!a)),g=ad(c,e.engine,f),h=au();return ah(c,e,h),c.engineRouting[e.engine].activeAccountId===e.migration.targetId&&(e.migrationOptOut={targetId:e.migration.targetId,updatedAt:h}),ai(c,e,p.Mi),e.migration={...e.migration,phase:"rolled-back",error:null,errorCode:null,updatedAt:h},e.updatedAt=h,af(c,e.engine,g,f),at(e)})}clearRolledBackConversationMigration(a,b){return this.mutate(c=>{let d=c.conversations[aY(c,a)],e=d?.migration;return!(!d||!e||"rolled-back"!==e.phase||e.intentId!==b||Object.values(c.heldDeliveries).some(a=>aY(c,a.conversationId)===d.id&&["held","assigned","delivery-uncertain"].includes(a.state)))&&(d.migration=null,d.updatedAt=au(),c.conversationRevision[d.engine]+=1,!0)})}}let bn=process;function bo(){return bn.__llvAgentRegistry??=new bm(void 0,void 0,void 0,{resolveBackendIdentity:!0}),bn.__llvAgentRegistry}},4351:(a,b,c)=>{c.d(b,{HI:()=>H,A5:()=>F,lV:()=>G,uX:()=>v,V9:()=>I,A9:()=>J,in:()=>y});var d=c(77598),e=c.n(d),f=c(31421),g=c(73024),h=c.n(g),i=c(48161),j=c.n(i),k=c(76760),l=c.n(k),m=c(10456),n=c(53133),o=c(3302);c(50920),c(53410);var p=c(17295);Object.freeze({repo:"https://github.com/chigwell/telegram-mcp",release:"v3.2.22",commit:"a61294362226bd93052f5a40b4a1b1269a99ce69",license:"Apache-2.0"}),Object.freeze(["wait_for_settled_message"]);var q=c(91836),r=c(55643),s=c(93812),t=c(2208),u=c(14648);function v(a){let b=j().homedir();if("1"===process.env.LLV_DOCKER_NSENTER_SHIMS&&("claude"===a||"codex"===a)){let b="/usr/local/bin/"+a;try{return h().accessSync(b,h().constants.X_OK),b}catch{}}for(let c of[l().join(b,".bun","bin",a),l().join(b,".npm-global","bin",a),l().join(b,".local","bin",a),l().join(b,"go","bin",a),"/usr/local/bin/"+a,"/usr/bin/"+a])try{return h().accessSync(c,h().constants.X_OK),c}catch{}return a}function w(a){let b=j().homedir(),c=[l().join(b,".bun","bin",a),l().join(b,".npm-global","bin",a),l().join(b,".local","bin",a),l().join(b,"go","bin",a)];for(let b of"1"===process.env.LLV_DOCKER_NSENTER_SHIMS?c:[...c,"/usr/local/bin/"+a,"/usr/bin/"+a])try{return h().accessSync(b,h().constants.X_OK),b}catch{}return a}function x(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function y(a,b){if(!/^[A-Za-z0-9_-]{43}$/.test(b))throw Error("Viewer spawn capability is invalid");return{...a,command:`( ${u.gY}=${x(b)}; export ${u.gY}; ${a.command} )`}}c(61899);let z=["ANTHROPIC_API_KEY","ANTHROPIC_AUTH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_BASE_URL","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","VERTEXAI_PROJECT","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","LLV_TOKEN"];function A(a,b){let c=b.includes("telegram")?function(a){if(!a.includes("telegram"))return"";let b=[process.execPath,function(a,...b){if(a)return a;let c=l().join(process.cwd(),...b);if(h().existsSync(c))return c;let d=l().join(process.cwd(),"..","..",...b);return h().existsSync(d)?d:c}(process.env.LLV_TELEGRAM_SESSION_READER,"bin","telegram-session-reader.mjs"),l().dirname((0,p.h2)())].map(x).join(" ");return`unset ${p.mq}; if ${p.mq}="$(${b} 2>/dev/null)" && [ "\${#${p.mq}}" -eq 43 ]; then export ${p.mq}; else unset ${p.mq}; fi; `}(b):`unset ${p.mq}; `;return`( ${c}${a} )`}function B(a,b=[]){let c=b.includes("telegram")?z:[...z,p.mq];return`env ${c.map(a=>`-u ${a}`).join(" ")} CLAUDE_CONFIG_DIR=${x(a)}`}function C(a,b){let c=b.includes("telegram")?"":` -u ${p.mq}`;return`env -u LLV_TOKEN${c} CODEX_HOME=${x(a)}`}function D(a,b,c){let d=new Set(c);return["features.plugins=false",...(function(a,b){let c={...process.env,CODEX_HOME:a};delete c.LLV_TOKEN;let d=(0,f.spawnSync)(process.env.LLV_CODEX_BINARY??v("codex"),["-c","features.plugins=false","mcp","list","--json"],{cwd:b,env:c,encoding:"utf8",timeout:1e4,maxBuffer:2097152});if(0===d.status)try{let a=JSON.parse(d.stdout);if(Array.isArray(a)&&a.every(a=>a&&"object"==typeof a&&"string"==typeof a.name))return a.map(a=>a.name)}catch{}throw Error("Codex MCP configuration could not be enumerated safely")})(a,b).map(a=>{let b=/^[A-Za-z0-9_-]+$/.test(a)?a:JSON.stringify(a);return`mcp_servers.${b}.enabled=${d.has(a)}`})]}function E(a,b){a.push("--settings",b.settingsPath,"--strict-mcp-config","--mcp-config",b.mcpConfigPath)}function F(a){return a.permissionMode?a.permissionMode:a.readOnly?"plan":"bypassPermissions"}function G(a,b,c={}){var d;let f=(d=c.mcpServers,(0,r.c1)(d));if("claude"===a){let a=e().randomUUID(),d=[v("claude")],g=F(c);c.readOnly?d.push("--permission-mode",g,"--disallowedTools","Edit,Write,NotebookEdit"):"bypassPermissions"===g?d.push("--dangerously-skip-permissions"):d.push("--permission-mode",g),d.push("--session-id",a),c.model&&d.push("--model",c.model),c.effort&&d.push("--effort",c.effort);let h=!!(c.claudeConfigDir&&(0,n.fg)(c.claudeConfigDir)),i=c.claudeConfigDir?c.deferClaudeSpawnPolicy?(0,u.GG)(c.claudeConfigDir,a):(0,u.UI)(c.claudeConfigDir,{allowSubagents:c.allowSubagents,cwd:b,mcpServers:f,baseSettingsPath:h?(0,n.ZK)():null,profileId:a}):null;i?E(d,i):d.push("--strict-mcp-config");let j=d.map(x).join(" ");return{command:A(h?`${B(c.claudeConfigDir,f)} ${j}`:j,f),cwd:b,windowName:"claude-new",engine:"claude",transcript:(0,q.eV)(b,a,c.claudeProjectsDir??l().join((0,n.Hy)(),"projects")),launchProfile:{cwd:b,model:c.model??null,effort:c.effort??null,fast:null,permissionMode:g,readOnly:c.readOnly??!1,allowSubagents:c.allowSubagents??!1,mcpServers:f,plugins:[],title:c.title?.trim()||null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null}}}let g=[v("codex")],h=c.codexHome??(0,m.O$)().home;for(let a of((0,m.yX)(h)&&g.push("-c","cli_auth_credentials_store=file"),D(h,b,f)))g.push("-c",a);c.model&&g.push("-m",c.model),c.effort&&g.push("-c",`model_reasoning_effort=${c.effort}`),null!=c.fast&&g.push("-c",`service_tier=${c.fast?"priority":"standard"}`),c.readOnly&&g.push("--sandbox","read-only"),c.allowSubagents||g.push("--disable","multi_agent");let i=g.map(x).join(" ");return{command:A(`${C(h,f)} ${i}`,f),cwd:b,windowName:"codex-new",engine:"codex",launchProfile:{cwd:b,model:c.model??null,effort:c.effort??null,fast:c.fast??null,permissionMode:c.readOnly?"never":null,readOnly:c.readOnly??!1,allowSubagents:c.allowSubagents??!1,mcpServers:f,plugins:[],title:c.title?.trim()||null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null}}}function H(a){if(!/^[0-9a-f-]{36}$/.test(a.candidateId))throw Error("candidate session id is invalid");let b=[v("claude"),"-p","--input-format","stream-json","--output-format","stream-json","--verbose","--replay-user-messages","--permission-prompt-tool","stdio"],c=F(a.profile);a.profile.readOnly||"plan"===c?b.push("--permission-mode","plan","--disallowedTools","Edit,Write,NotebookEdit"):"bypassPermissions"!==c?c.length<=64&&/^[a-zA-Z-]+$/.test(c)&&b.push("--permission-mode",c):b.push("--dangerously-skip-permissions");let d=(0,t.OV)(a.profile.model);d&&b.push("--model",d),a.profile.effort&&/^[a-z]+$/.test(a.profile.effort)&&b.push("--effort",a.profile.effort),b.push("--resume",a.sourcePath,"--fork-session","--session-id",a.candidateId);let e=a.profile.cwd||L(a.sourcePath);return E(b,(0,u.UI)(a.targetHome,{allowSubagents:a.profile.allowSubagents,baseSettingsPath:(0,n.fg)(a.targetHome)?(0,n.ZK)():null,profileId:a.candidateId,cwd:e,mcpServers:a.profile.mcpServers,mcpStatePath:(0,n.fg)(a.targetHome)?l().join(a.targetHome,".claude.json"):l().join(l().dirname(a.targetHome),".claude.json")})),{command:A(`${B(a.targetHome,a.profile.mcpServers)} ${b.map(x).join(" ")}`,a.profile.mcpServers),cwd:e,windowName:"claude-migration-successor",engine:"claude",transcript:(0,q.eV)(a.profile.cwd||L(a.sourcePath),a.candidateId,a.targetProjectsDir),printMode:!0,launchProfile:{...a.profile,model:d,permissionMode:c}}}function I(a,b,c={}){let d=l().basename(b),e=c.cwd&&c.cwd.trim()?c.cwd:null;if("claude-projects"===a&&d.endsWith(".jsonl")){if((0,o.kv)(b))return{ok:!1,reason:"a Claude subagent transcript has no session of its own to resume"};let a=d.slice(0,-6);if(!/^[0-9a-f-]{36}$/.test(a))return{ok:!1,reason:"the transcript filename carries no Claude session id"};let f=(0,n.qX)(b,c.accountId);return"unreadable"===f.kind?{ok:!1,reason:"the conversation transcript cannot be read from disk"}:"foreign"===f.kind?{ok:!1,reason:"the transcript is outside every Claude account transcript root the viewer knows"}:{ok:!0,engine:"claude",sessionId:a,home:f.home,cwd:e??L(b)}}if("codex-sessions"===a&&d.endsWith(".jsonl")){let a=d.match(/([0-9a-f-]{36})\.jsonl$/)?.[1];if(!a)return{ok:!1,reason:"the transcript filename carries no Codex session id"};let c=(0,m.yN)(b);return c?{ok:!0,engine:"codex",sessionId:a,home:c,cwd:e??L(b)}:{ok:!1,reason:"the transcript is outside every Codex account session root the viewer knows"}}return{ok:!1,reason:"this transcript belongs to no resumable agent session"}}function J(a,b,c={}){let d=I(a,b,c);return d.ok?function(a,b,c,d,e={}){var f;if(!/^[0-9a-f-]{36}$/.test(b))return null;let g=(f=e.mcpServers,(0,r.c1)(f));if("claude"===a){let a=(0,n.fg)(d),f=(0,u.UI)(d,{allowSubagents:e.allowSubagents,baseSettingsPath:a?(0,n.ZK)():null,profileId:`resume-${b}`,cwd:c,mcpServers:g,mcpStatePath:a?l().join(d,".claude.json"):l().join(l().dirname(d),".claude.json")}),h=[(e.hostTerminal?w:v)("claude")],i=F(e);e.readOnly||"plan"===i?h.push("--permission-mode","plan","--disallowedTools","Edit,Write,NotebookEdit"):"bypassPermissions"!==i&&/^[a-zA-Z-]+$/.test(i)?h.push("--permission-mode",i):h.push("--dangerously-skip-permissions"),E(h,f);let j=(0,t.OV)(e.model);j&&h.push("--model",j),e.effort&&h.push("--effort",e.effort),h.push("--resume",b);let k=h.map(x).join(" ");return{command:A(a?`${B(d,g)} ${k}`:k,g),cwd:c,windowName:"claude-resume",engine:"claude",launchProfile:{...K(c,j,e.effort??null),readOnly:e.readOnly??null,permissionMode:i,allowSubagents:e.allowSubagents??!1,mcpServers:g,plugins:(0,s.sJ)(e.plugins)}}}let h=`${(e.hostTerminal?w:v)("codex")}`;for(let a of((0,m.yX)(d)&&(h+=" -c cli_auth_credentials_store=file"),D(d,c,g)))h+=` -c ${x(a)}`;return e.model&&(h+=` -m ${x(e.model)}`),e.effort&&(h+=` -c ${x(`model_reasoning_effort=${e.effort}`)}`),null!=e.fast&&(h+=` -c ${x(`service_tier=${e.fast?"priority":"standard"}`)}`),e.readOnly&&(h+=" --sandbox read-only"),e.permissionMode&&["untrusted","on-request","never"].includes(e.permissionMode)&&(h+=` --ask-for-approval ${x(e.permissionMode)}`),e.allowSubagents||(h+=" --disable multi_agent"),h+=` resume ${b}`,{command:A(`${C(d,g)} ${h}`,g),cwd:c,windowName:"codex-resume",engine:"codex",launchProfile:{...K(c,e.model??null,e.effort??null),fast:e.fast??null,readOnly:e.readOnly??null,permissionMode:e.permissionMode??null,allowSubagents:e.allowSubagents??!1,mcpServers:g,plugins:(0,s.sJ)(e.plugins)}}}(d.engine,d.sessionId,d.cwd,d.home,c):null}function K(a,b,c){return{cwd:a,model:b,effort:c,fast:null,permissionMode:null,readOnly:null,allowSubagents:!1,mcpServers:["viewer"],plugins:[],title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null}}function L(a){return(0,q.tX)(a,{maxLines:30,requireDir:!0})??j().homedir()}},4406:(a,b,c)=>{c.d(b,{VB:()=>F,_v:()=>O,c0:()=>N,ww:()=>L}),c(77598);var d=c(73024),e=c.n(d),f=c(57726);c(53133),c(10456);var g=c(4116),h=c(31973),i=c(91836),j=c(26579),k=c(68574),l=c(92233),m=c(59376),n=c(7058),o=c(89831),p=c(52530),q=c(26200),r=c(873),s=c(85923),t=c(58347),u=c(41730),v=c(56458),w=c(91701);let x=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]);function y(a,b,c){let d=b.generations.at(-1);return!!d&&c.generationId===d.id&&(!!(null!==d.host&&void 0!==d.host||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.key.sessionId===d.id&&a.artifactPath===d.path&&(null!==a.structuredHost&&void 0!==a.structuredHost)!=(null!==a.host)))||Object.values(a.receipts).some(a=>a.engine===b.engine&&a.conversationId===b.id&&x.has(a.state)))}function z(a){return null!=a.rateLimit}function A(a,b,c){let d=b?.generations.at(-1);return"stalled"===a.activity&&"jsonl_turn_stalled"===a.activityReason&&"running"!==a.proc&&null===a.pid&&d?.path===a.path&&null===d.host&&!c}function B(a){return new Set(Object.values(a.entries).filter(a=>a.artifactPath&&["starting","live","idle","handoff"].includes(a.status)&&(null!==a.host||null!==a.structuredHost)).map(a=>a.artifactPath))}function C(a,b,c){let d=a.readOnlySnapshot().entries[(0,h.pp)({engine:b,sessionId:c.id})],e=d?.structuredHost;return!!e&&d.artifactPath===c.path&&("live"===d.status||"idle"===d.status)&&null!==e.process&&null!==e.process.startIdentity&&l.B.processIdentity(e.process.pid)===e.process.startIdentity&&null===e.activeTurnRef}async function D(a,b){let c=Date.now(),d=b.readOnlySnapshot(),e=new Map,g=new Map,h=B(d);await (0,k.pV)(Object.values(d.conversations),a=>{for(let b of a.generations)e.has(b.path)||e.set(b.path,a),g.has(b.path)||g.set(b.path,b.launchProfile);let b=a.generations.at(-1);for(let c of a.continuityPaths)e.has(c)||e.set(c,a),b&&!g.has(c)&&g.set(c,b.launchProfile)}),await (0,k.pV)(Object.values(d.receipts),a=>{a.artifactPath&&!g.has(a.artifactPath)&&g.set(a.artifactPath,a.launchProfile)});let j=process.env.LLV_ROOT_CONVERSATION_ID,l=j?.startsWith("conversation_")?b.canonicalConversationId(j):j,m=[];return await (0,k.pV)(a,a=>{let b="claude"===a.engine||"codex"===a.engine?a.engine:null;if(!b)return;let d=e.get(a.path)??null,j=a.parent?e.get(a.parent)??null:null,k=f.lD.resolveTranscriptOwner(b,a.path),p=1e3*a.mtime,r=(0,n.pk)(a.path,a.size,p,b),t=h.has(a.path),u=r.complete?r.recoveryReleased&&t?{state:"busy",source:"lifecycle",terminalAt:null}:r.turn:null,v=A(a,d,t);r.complete&&!1!==a.derivationComplete&&("pane_at_composer"===a.activityReason||z(a)||v)&&(0,n.Be)(a.path,a.size,p,b);let w=function(a,b,c,d){if(!b)return c&&("busy"===c.turn.state||"unknown"===c.turn.state)?{state:c.turn.state,source:c.turn.source,terminalAt:c.turn.terminalAt}:{state:"unknown",source:"empty",terminalAt:null};let e=!1!==a.derivationComplete;return"busy"===b.state&&e&&("pane_at_composer"===a.activityReason||z(a)||A(a,c,d))||"unknown"===b.state&&e&&("idle"===a.activity||"recent"===a.activity)?{state:"idle",source:"empty",terminalAt:null}:b}(a,u,d,t),x=g.get(a.path)??d?.generations.find(b=>b.path===a.path)?.launchProfile,y={size:a.size,mtimeMs:p};m.push({engine:b,path:a.path,accountId:k?.accountId??null,launchProfile:(0,s.Ui)({cwd:x?.cwd||a.cwd||(0,i.tX)(a.path,{maxLines:40,identity:y})||"",model:x?.model??a.launchModel??a.model,effort:x?.effort??a.effort??null,fast:x?.fast??null,permissionMode:x?.permissionMode??null,readOnly:x?.readOnly??null,title:(0,q.St)(a.title)??(0,q.St)(x?.title),project:a.project||x?.project||null,parentConversationId:j?.id??x?.parentConversationId??null,role:l&&d?.id===l?"root":x?.role??"worker",goal:a.goal??x?.goal??null,plan:a.plan??x?.plan??null}),turn:w,parentArtifactPath:a.parent,forkSourceThreadId:"codex"===b?void 0===a.nativeForkSourceThreadId?(0,o.XB)(a.path,a.size,p):a.nativeForkSourceThreadId:null,expectedTurnObservedAt:d?.turn.observedAt??null,startedAt:a.sessionStartedAt??(0,i.dH)(a.path,y),observedAt:!r.complete&&d?.turn.observedAt?d.turn.observedAt:new Date(Math.max(1e3*a.mtime,c)).toISOString()})}),m}async function E(a,b){let c=new Map,d=new Map;await (0,k.pV)(a,a=>{if("codex"!==a.engine||0===a.providerForkPaths.length)return;let b=a.generations.at(-1);if(!b)return;let e=a.projectOwnership?.project||b.launchProfile.project;if(!e)return;if(!d.has(e))try{d.set(e,(0,j.C9)(e))}catch(a){d.set(e,null),console.warn("[account-migration] adopted fork board placement skipped",{project:e,error:(0,u.Kb)(a)})}let f=d.get(e);if(!f)return;let g=new Set(f.prefs.hidden),h=f.pathAliases??{},i=a.providerForkPaths.filter(a=>a!==b.path&&!g.has(a)&&h[a]!==b.path).map(a=>({from:a,to:b.path}));0!==i.length&&c.set(e,[...c.get(e)??[],...i])}),await (0,k.pV)([...c],([a,c])=>{try{b(a,c,{targetPlacementAuthoritative:!0})}catch(b){console.warn("[account-migration] adopted fork board placement deferred",{project:a,paths:c.length,error:(0,u.Kb)(b)})}})}async function F(a=(0,g.tk)(),b,c={}){let d=b??await (0,m.CS)(),e=a.reconcileConversations(await D(d,a));return c.deferBoardRepair||await E(Object.values(e.conversations),c.remapBoardPaths??j.cw),e}function G(a,b){let c,d=a.generations.at(-1)?.path,f="unknown"===a.turn.state&&"empty"===a.turn.source&&!!d&&!e().existsSync(d),g=(c=a.migration?.sourceGenerationId,a.generations.find(a=>a.id===c)??a.generations.at(-1)),h=void 0!==g&&C(b,a.engine,g);return("terminal"===a.turn.state||"idle"===a.turn.state||!!f||!!h)&&!b.pendingDeliveries(a.id).some(a=>"delivery-uncertain"===a.state)}function H(a,b,c,d){var f;let g,h;try{g=e().statSync(b.path)}catch(a){return c&&"ENOENT"===a.code}let i=(0,n.pk)(b.path,g.size,g.mtimeMs,a.engine);if(!i.complete)return!1;try{h=e().statSync(b.path)}catch{return!1}if(h.size!==g.size||h.mtimeMs!==g.mtimeMs)return!1;if(i.composerReleased||C(d,a.engine,b))return!0;if(i.recoveryReleased&&(f=b.path,B(d.readOnlySnapshot()).has(f)))return!1;if("terminal"===i.turn.state)return!0;let j=a.turn.observedAt?Date.parse(a.turn.observedAt):NaN;return"codex"===a.engine&&"idle"===a.turn.state&&null===b.host&&Number.isFinite(j)&&j>=h.mtimeMs&&!(0,p.SP)([b.path],!0).has(b.path)}async function I(a,b,c,d){let e=[];await (0,k.pV)(a,a=>{let b=function(a){if(a.migration?.phase!=="committed")return null;let b=a.generations.at(-1),c=a.generations.find(b=>b.id===a.migration?.sourceGenerationId)??a.generations.at(-2);if(!c||!b||c.id===b.id)return null;let d=b.launchProfile.project||c.launchProfile.project||"other";if(a.migration.boardProject===d&&a.migration.boardOperationId===a.migration.operationId)return null;let e=[...new Set([...a.continuityPaths,...a.migration.providerReceipt?.continuityPaths??[]])],f=[...new Set([...a.generations.slice(0,-1).map(a=>a.path),...e])].filter(a=>a!==b.path);return{conversationId:a.id,operationId:a.migration.operationId,project:d,previousProject:a.migration.boardPlacementProject??a.migration.boardProject??c.launchProfile.project,placementPaths:[...new Set([c.path,b.path,...e])],pairs:f.map(a=>({from:a,to:b.path})),provisionalManual:e.filter(a=>a!==b.path)}}(a);b&&e.push(b)});let f=[];if(await (0,k.pV)(e,a=>{a.previousProject&&a.previousProject!==a.project&&f.push({fromProject:a.previousProject,toProject:a.project,paths:a.placementPaths})}),f.length>0)try{d(f)}catch(a){console.warn("[account-migration] board project repair deferred",{projects:f.length,error:(0,u.Kb)(a)});return}b.markMigrationBoardPlacementProjects(e.map(a=>({id:a.conversationId,operationId:a.operationId,project:a.project})));let g=new Map;await (0,k.pV)(e,a=>{let b=g.get(a.project)??[];b.push(a),g.set(a.project,b)});let h=[];await (0,k.pV)([...g],([a,b])=>{try{let d=c(a,b.flatMap(a=>a.pairs),{provisionalManual:[...new Set(b.flatMap(a=>a.provisionalManual))]}).pathAliases??{};if(!b.every(a=>a.pairs.every(({from:a,to:b})=>d[a]===b)))throw Error("board continuity aliases did not converge");h.push(...b.map(b=>({id:b.conversationId,operationId:b.operationId,project:a})))}catch(c){console.warn("[account-migration] board continuity repair deferred",{project:a,conversations:b.length,error:(0,u.Kb)(c)})}}),b.markMigrationBoardProjects(h)}async function J(a,b,c,d){if(!b)return;let e=c.migration?.phase==="committed",f=c.generations.at(-1),g=f?.host!==null&&f?.host!==void 0&&(0,s.Qq)(f.host,b.host);if(e&&f?.id===b.nativeId&&f.path===b.path&&g)return void d.completeSuccessorCleanup(b.operationId);d.queueSuccessorCleanup(c.id,b);try{await a.cleanup?.(b),d.completeSuccessorCleanup(b.operationId)}catch(a){d.recordSuccessorCleanupFailure(b.operationId,a instanceof Error?a.message:String(a))}}function K(a,b){let c=a.migration,d=a.reconfigure;return c?.phase==="verifying"&&null!==c.providerReceipt&&(0,s.WB)(c.providerReceipt,b)&&d?.status==="applying"&&d.accountId===c.targetId}async function L(a,b=(0,g.tk)(),c=new t.wh,d={}){var e,f,h;let i,k=b.conversation(a);if(!k?.migration)throw Error("conversation has no migration");if(e=k,f=d.reconfigureOperationId,i=e.reconfigure,i?.status==="applying"&&i.accountId===e.migration?.targetId&&i.operationId!==f)return k;let l=k.migration;if("waiting-turn"===l.phase){if(!G(k,b))return k;l=(k=b.transitionConversationMigration(k.id,l.revision,["waiting-turn"],{phase:"requested"})).migration}if("committed"===l.phase)return d.deferBoardRepair||await I([k],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5),b.conversation(k.id)??k;if("rolled-back"===l.phase||"failed-recoverable"===l.phase)return k;let m="copy"in c?{virtualSource:!0,async create(a){let b=await c.copy({engine:a.engine,sourcePath:a.source.path,targetHome:a.targetAccountId,conversationId:a.conversationId});return{operationId:a.operationId,nativeId:b.nativeId,path:b.path,continuityPaths:[],historyHash:"legacy-copy-port",host:{kind:"tmux",identity:"legacy-copy-port",epoch:1,verifiedAt:new Date().toISOString()}}},async verify(){}}:c,n=l.providerReceipt;try{if(l.providerReceipt)n=l.providerReceipt;else{if(!G(k,b))return k;let a=l.phase,c=c=>{let d=c.migration??l;return d.phase!==a&&("preparing"===d.phase||"successor-starting"===d.phase)?b.transitionConversationMigration(c.id,d.revision,[d.phase],{phase:a}):c},d=k.generations.find(a=>a.id===l.sourceGenerationId)??k.generations.at(-1);if(!d)throw Error("conversation has no source generation");if(!H(k,d,!0===m.virtualSource,b))return k;if("requested"===l.phase&&(l=(k=b.transitionConversationMigration(k.id,l.revision,["requested"],{phase:"preparing"})).migration),"preparing"===l.phase&&(l=(k=b.transitionConversationMigration(k.id,l.revision,["preparing"],{phase:"successor-starting"})).migration),l=(k=b.conversation(k.id)??k).migration??l,!G(k,b))return c(k);if(!(d=k.generations.find(a=>a.id===l.sourceGenerationId)??k.generations.at(-1)))throw Error("conversation has no source generation");if(!H(k,d,!0===m.virtualSource,b))return c(k);l.successorLaunchProfile||(l=(k=b.transitionConversationMigration(k.id,l.revision,["successor-starting"],{successorLaunchProfile:(0,s.Lf)(d.launchProfile)})).migration);let e=k.id,f={operationId:l.operationId,revision:l.revision},g={...d,launchProfile:l.successorLaunchProfile};if((n=await m.create({engine:k.engine,operationId:f.operationId,conversationId:e,source:g,targetAccountId:l.targetId,recordContinuityPath(a){b.recordMigrationContinuityPath(e,a,f)}})).operationId!==f.operationId)throw Error("successor receipt operation does not match");n=(l=(k=b.persistMigrationProviderReceipt(e,f.revision,f.operationId,n)).migration).providerReceipt??n}let a=k.generations.find(a=>a.id===l.sourceGenerationId)??k.generations.at(-1);if(!a)throw Error("conversation has no source generation");let c=l.successorLaunchProfile??(0,s.Lf)(a.launchProfile);if(!n||n.operationId!==l.operationId)throw Error("persisted successor receipt operation does not match");await m.verify(n,{engine:k.engine,targetAccountId:l.targetId,launchProfile:c});let e=k.id,f=n,g=l.revision,h=l.operationId,i=async()=>{if(d.ownsOperation&&!await d.ownsOperation())return!1;let a=b.conversation(e),c=a?.migration;return!!(a&&c?.phase==="verifying"&&c.revision===g&&c.operationId===h&&null!==c.providerReceipt&&(0,s.WB)(c.providerReceipt,f))},o=b.conversation(e);if(!o||!await i()||(await m.publishHost?.(f,{engine:k.engine,conversationId:e,targetAccountId:l.targetId,launchProfile:c,ownsOperation:i}),!(o=b.conversation(e))||!await i()))return o&&(K(o,f)||await J(m,f,o,b),d.deferBoardRepair||await I([o],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5)),b.conversation(e)??o??k;let p=b.commitSuccessor(e,{id:f.nativeId,path:f.path,accountId:l.targetId,launchProfile:c,historyHash:f.historyHash,host:f.host},g,h,f);return d.deferBoardRepair||await I([p],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5),b.conversation(p.id)??p}catch(i){let a=b.conversation(k.id);if(i instanceof t.IM||(0,r.gR)(i))return a??k;let c=a?.migration?.providerReceipt,e=null!==n&&null!=c&&!(0,s.WB)(c,n);if(a&&(!a.migration||a.migration.revision!==l.revision||a.migration.operationId!==l.operationId||"committed"===(h=a.migration.phase)||"rolled-back"===h||"failed-recoverable"===h||e))return await J(m,n,a,b),d.deferBoardRepair||await I([a],b,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5),b.conversation(a.id)??a;console.warn("[account-migration] recoverable successor provider failure",{conversationId:k.id,engine:k.engine,phase:l.phase,targetAccountId:l.targetId,error:(0,u.Kb)(i)});let f=i instanceof t.I1?{message:"Codex fork outcome is awaiting recovery",code:"codex-fork-outcome-unknown"}:(0,u.rI)(i),g=b.transitionConversationMigration(k.id,l.revision,["requested","preparing","successor-starting","verifying"],{phase:"failed-recoverable",error:f.message,errorCode:f.code});return await J(m,n,g,b),g}}async function M(a,b,c=(0,g.tk)()){let d=c.conversation(a),e=d?.generations.at(-1);e&&await (0,k.pV)(c.pendingDeliveries(a),async a=>{let d="delivery-uncertain"===a.state;if(d&&!b.reconcileUncertain||!d&&("assigned"!==a.state||a.generationId!==e.id))return;if("text"!==a.payloadKind&&"runtime-images"!==a.payloadKind)return void c.recordDeliveryOutcome(a.id,"failed","request-local delivery requires client retry");let f=d?a:c.beginDeliveryAttempt(a.id,e.id);if(!f)return;let g=f.clientMessageId??`migration:${f.id}`;try{let a={delivery:f,path:e.path,clientMessageId:g},h=d?await b.reconcileUncertain(a):await b.deliver(a);"held"===h?d||c.requeueUnactuatedDelivery(f.id):c.recordDeliveryOutcome(f.id,h,"failed"===h?"delivery failed and remains recoverable":null)}catch{c.recordDeliveryOutcome(f.id,"delivery-uncertain","delivery result is uncertain and remains recoverable")}})}async function N(a,b,c=(0,g.tk)(),d={}){let e=`${w.BD} its upgrade-era reservation has no durable owner evidence; send again to authorize a fresh delivery action`,f=c.readOnlySnapshot();await (0,k.pV)(Object.values(f.pendingSuccessorCleanups),async b=>{let d=c.conversation(b.conversationId);d&&await J(a,b.receipt,d,c)});let h=new Set;await (0,k.pV)(Object.values(f.heldDeliveries),a=>{"delivered"!==a.state&&("delivery-uncertain"!==a.state||b.reconcileUncertain)&&h.add(a.conversationId)}),await (0,k.pV)(Object.values(f.conversations),async g=>{let i=null!==g.migration||h.has(g.id)?c.conversation(g.id)??g:g;if(i.migration&&"committed"!==i.migration.phase&&"rolled-back"!==i.migration.phase&&b.reconcileUncertain&&c.pendingDeliveries(i.id).some(a=>"delivery-uncertain"===a.state)&&(await M(i.id,b,c),i=c.conversation(i.id)??i),!i.migration){let a=c.pendingDeliveries(i.id);for(let b of a)"held"!==b.state&&"assigned"!==b.state||y(f,i,b)||c.terminalizeHeldDelivery(b.id,e);a.some(a=>"assigned"===a.state&&y(f,i,a)||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await M(i.id,b,c);return}if("rolled-back"===i.migration.phase){for(let a of c.pendingDeliveries(i.id))("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)&&c.terminalizeRolledBackMigrationDelivery(a.id,i.migration.intentId,"delivery cancelled because its owning account migration was rolled back; send again to authorize a fresh delivery action");c.pendingDeliveries(i.id).some(a=>"assigned"===a.state||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await M(i.id,b,c);return}if("committed"===i.migration.phase){c.pendingDeliveries(i.id).some(a=>"assigned"===a.state||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await M(i.id,b,c);return}let j=i.migration,k=i.generations.find(a=>a.id===j.sourceGenerationId)??i.generations.at(-1);if(k?.accountId===null&&!j.providerReceipt)return void c.rollbackConversationMigration(i.id,j.revision);let l=await L(i.id,c,a,{...d,deferBoardRepair:!0});l.migration?.phase==="committed"&&c.pendingDeliveries(l.id).some(a=>"assigned"===a.state||"delivery-uncertain"===a.state&&b.reconcileUncertain)&&await M(l.id,b,c)}),await (0,k.Lh)();let i=c.readOnlySnapshot();await I(Object.values(i.conversations),c,d.remapBoardPaths??j.cw,d.transferBoardPathPlacements??j.L5);let l=new Map;await (0,k.pV)(Object.values(i.conversations),a=>{let b=a.migration?.intentId;if(!b)return;let c=l.get(b)??[];c.push(a),l.set(b,c)}),await (0,k.pV)(Object.values(i.migrationIntents),a=>{if("draining"!==a.state)return;let b=l.get(a.id)??[];if(!b.length||b.every(a=>["committed","rolled-back","failed-recoverable"].includes(a.migration?.phase??""))){if(c.setMigrationIntentState(a.id,"complete"),"conversation"===a.scope)return;let d=b.some(a=>a.migration?.phase==="failed-recoverable")?"failed-partial":"complete";c.recordAutoBalanceOutcome(a.engine,d,a.evidence,new Date(Date.now()+v.__).toISOString())}})}function O(a){return a.migration?["waiting-turn","requested","preparing","successor-starting","verifying"].includes(a.migration.phase)?"held":"failed-recoverable"===a.migration.phase?"recoverable":"deliver":"deliver"}},4863:(a,b,c)=>{c.d(b,{DL:()=>j,eh:()=>h,fM:()=>k});let d=new Set(["status","findings","confidence"]),e={APPROVE:"pass",REQUEST_CHANGES:"fail",COMMENT:"needs_decision","NO FINDINGS":"pass"},f=/^\s*(?:VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)|(NO FINDINGS))\s*$/i,g=/^REVIEW_READY(?::[^\r\n]*)?$/;function h(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>!d.has(a))||"pass"!==a.status&&"fail"!==a.status&&"needs_decision"!==a.status)return null;let b={status:a.status};if(void 0!==a.findings){if(!Array.isArray(a.findings)||a.findings.length>50)return null;let c=[];for(let b of a.findings){if("string"!=typeof b)return null;let a=b.trim();if(!a||a.length>2e3)return null;c.push(a)}b.findings=c}if(void 0!==a.confidence){if("number"!=typeof a.confidence||!Number.isFinite(a.confidence)||a.confidence<0||a.confidence>1)return null;b.confidence=a.confidence}return b}function i(a){var b;let c,d=[...a.matchAll(/```(?:json)?\s*([\s\S]*?)```/gi)].at(-1);if(!d||void 0===d.index)return{failureReason:"canonical completed assistant turn is missing a fenced JSON verdict"};let e=a.slice(d.index+d[0].length).trim();if(e&&!g.test(e))return{failureReason:"canonical completed assistant turn has unsupported text after the final fenced JSON verdict"};try{c=JSON.parse(d[1]??"")}catch{return{failureReason:"canonical completed assistant turn has malformed JSON in the final fenced verdict"}}let f=!(b=c)||"object"!=typeof b||Array.isArray(b)?null:h({status:b.status,...Object.hasOwn(b,"findings")?{findings:b.findings}:{},...Object.hasOwn(b,"confidence")?{confidence:b.confidence}:{}});return f?{index:d.index,verdict:f}:{failureReason:"canonical completed assistant turn is missing a valid status, findings, or confidence field"}}function j(a){let b=i(a);if("failureReason"in b)return b.failureReason;let c=k(a);return c&&"failureReason"in c?c.failureReason:"canonical completed assistant turn did not yield a valid final JSON verdict"}function k(a){let b=i(a);if("failureReason"in b)return null;let c=b.verdict,d=a.slice(0,b.index).trim(),g=d.slice(0,32e3);if("pass"===c.status&&c.findings?.length)return{failureReason:'contradictory stage verdict: status "pass" cannot include findings',output:g};for(let a of function(a){let b=[],c=null;for(let d of a.split(/\r?\n/)){let a=/^\s*(`{3,}|~{3,})(.*)$/.exec(d);if(a){let b=a[1],d=b[0];c?c.marker===d&&b.length>=c.length&&!a[2].trim()&&(c=null):c={marker:d,length:b.length};continue}if(c||/^\s*>/.test(d))continue;let e=f.exec(d);e&&b.push((e[1]??e[2]).toUpperCase())}return b}(d))if(e[a]!==c.status)return{failureReason:`contradictory stage verdict: prose marker "${a}" disagrees with JSON status "${c.status}"`,output:g};return{verdict:c,output:g}}},6568:(a,b,c)=>{c.d(b,{s7:()=>P});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(46193),l=c(50920),m=c(4351),n=c(14648),o=c(91836),p=c(92233),q=c(37788),r=c(52530),s=c(59988),t=c(33353),u=c(42580),v=c(88417);let w=`native-multi-agent-deny:${n.q5.join(",")}`;v.Zx;var x=c(36855),y=c(49172);class z{constructor(a=(0,l.BQ)("claude-delivery-ledger")){this.directory=a}load(a){let b=this.readRecords(a),c=[];for(let a of b)if("queued"===a.kind){if(c.some(b=>b.entry.id===a.entry.id))continue;c.push({entry:a.entry,disposition:a.disposition,queuedAt:a.queuedAt,delivered:!1})}else{let b=c.find(b=>b.entry.id===a.entryId);b&&(b.delivered=!0,b.engineMessageId=a.engineMessageId)}return c}recordQueued(a,b,c){let d=(0,t.h4)(b),e=this.load(a).find(a=>a.entry.id===d.id);if(e){if(!G(e.entry,d))throw Error("Claude delivery ledger entry id belongs to a different payload");return}this.append(a,{kind:"queued",entry:d,disposition:c,queuedAt:new Date().toISOString()})}confirmDelivered(a,b,c){let d=this.load(a).find(a=>a.entry.id===b);d&&!d.delivered&&this.append(a,{kind:"delivered",entryId:b,engineMessageId:c,deliveredAt:new Date().toISOString()})}readRecords(a){let b;try{b=h().readFileSync(this.filename(a),"utf8")}catch(a){if("ENOENT"===a.code)return[];throw a}let c=[],d=b.split("\n"),e=b.endsWith("\n");for(let[a,b]of d.entries()){let f;if(!b&&a===d.length-1&&e)continue;if(!b)throw Error("Claude delivery ledger contains an empty record");try{f=JSON.parse(b)}catch{if(a===d.length-1&&!e)break;throw Error("Claude delivery ledger contains malformed JSON")}let g=H(f);if(!g){if(a===d.length-1&&!e)break;throw Error("Claude delivery ledger contains an invalid record")}c.push(g)}return c}append(a,b){h().mkdirSync(this.directory,{recursive:!0,mode:448});let c=this.filename(a),d=h().openSync(c,"a+",384);try{h().fchmodSync(d,384),function(a,b,c){let d;if(0===h().fstatSync(a).size)return;let e=h().readFileSync(b,"utf8");if(e.endsWith("\n"))return;let f=e.lastIndexOf("\n")+1,g=e.slice(f);try{d=JSON.parse(g)}catch{d=null}c(d)?h().writeSync(a,"\n"):h().ftruncateSync(a,Buffer.byteLength(e.slice(0,f)))}(d,c,H),function(a,b){let c=0;for(;c<b.byteLength;){let d=h().writeSync(a,b,c,b.byteLength-c);if(!Number.isSafeInteger(d)||d<=0)throw Error("Claude delivery ledger write made no progress");c+=d}}(d,Buffer.from(`${JSON.stringify(b)}
121
+ `)),h().fsyncSync(d)}finally{h().closeSync(d)}}filename(a){return j().join(this.directory,`${encodeURIComponent(a)}.jsonl`)}}let A=["PATH","HOME","USER","LOGNAME","SHELL","TMPDIR","TMP","TEMP","LANG","LC_ALL","LC_CTYPE","TERM","COLORTERM","NO_COLOR","XDG_CONFIG_HOME","XDG_CACHE_HOME","XDG_DATA_HOME","XDG_STATE_HOME","XDG_RUNTIME_DIR","DBUS_SESSION_BUS_ADDRESS","SSL_CERT_FILE","SSL_CERT_DIR","LLV_SPAWN_CAPABILITY"],B="compact-sent-unobserved",C=x.u1+262144,D=[{pattern:/no conversation found with session id/i,reason:"the Claude CLI found no conversation with this session id"}];function E(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function F(a,b){let c=E(a);return c&&"string"==typeof c[b]?c[b]:null}function G(a,b){let c=(0,t.h4)(a),d=(0,t.h4)(b);return c.id===d.id&&c.contentDigest===d.contentDigest&&c.expectedTurnId===d.expectedTurnId}function H(a){let b=E(a);if(b?.kind==="queued"){let a=E(b.entry);if("string"!=typeof a?.id||!a.id||"turn-started"!==b.disposition&&"queued-next-turn"!==b.disposition||"string"!=typeof b.queuedAt)return null;try{return{...b,entry:(0,t.h4)(a)}}catch{return null}}return b?.kind==="delivered"&&"string"==typeof b.entryId&&("string"==typeof b.engineMessageId||null===b.engineMessageId)&&"string"==typeof b.deliveredAt?b:null}let I=function(a){return(0,s.j)(a instanceof Error?a.message:String(a)).replace(/(["']?(?:cookie|set-cookie)["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[redacted]").slice(0,500)};function J(a,b,c,e){return new Promise((f,g)=>{let h=(0,d.spawn)(a,b,{cwd:c,env:e,stdio:["ignore","pipe","pipe"]}),i="";h.stdout.setEncoding("utf8"),h.stdout.on("data",a=>{i.length<1048576&&(i+=a)}),h.stderr.on("data",()=>{}),h.on("error",a=>g(Error(`Claude subscription authentication probe failed: ${I(a)}`))),h.on("close",a=>f({status:a,stdout:i}))})}async function K(a,b,c){let d=await J(a,["auth","status"],c,b);if(0!==d.status)throw Error("Claude subscription authentication check failed");let e=null;try{e=E(JSON.parse(d.stdout))}catch{}if(!e)throw Error("Claude subscription authentication status was invalid");let f=await J(a,["--version"],c,b),g=0===f.status?f.stdout.match(/\b\d+\.\d+\.\d+\b/)?.[0]??null:null;return{loggedIn:!0===e.loggedIn,authMethod:"string"==typeof e.authMethod?e.authMethod:null,subscriptionType:"string"==typeof e.subscriptionType?e.subscriptionType:null,version:g}}function L(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>F(a,"text")??"").join(""):""}function M(a){return L(E(a.message)?.content)}function N(a){let b=E(a.message)?.content;if("string"==typeof b)return b.trim()?(0,v.rM)(b,[]):null;if(!Array.isArray(b))return null;let c=[],d="";for(let a of b){let b=E(a);if(b?.type==="text"&&"string"==typeof b.text){d+=b.text;continue}if(b?.type!=="image")continue;let e=E(b.source),g="string"==typeof e?.media_type?(0,v.CC)(e.media_type):null;if(e?.type!=="base64"||!g||"string"!=typeof e.data)return null;let h=Buffer.from(e.data,"base64");if(!h.length||h.toString("base64")!==e.data)return null;c.push({sha256:f().createHash("sha256").update(h).digest("hex"),mime:g,bytes:h.byteLength})}try{return(0,v.rM)(d,c)}catch{return null}}function O(a,b){return a.contentDigest===b.contentDigest||a.content.images.length>0&&b.imageCount===a.content.images.length&&b.text===a.content.text}class P{constructor(a,b,c,d){this.subscribers=new Set,this.events=[],this.deliveries=[],this.turnQueue=[],this.attentions=new Map,this.pendingControls=new Map,this.pendingAnswers=new Map,this.compactions=new Map,this.interruptedTurns=new Set,this.partialTurns=new Set,this.pendingDeliveries=new Map,this.stateListeners=new Set,this.stdoutDecoder=new k.StringDecoder("utf8"),this.stdoutBuffer="",this.stderrTail="",this.terminalExit=null,this.activeTurnId=null,this.releasing=!1,this.released=!1,this.dead=!1,this.reaped=!1,this.ledgerFailed=!1,this.writerFence=null,this.releasePromise=null,this.terminationTimer=null,this.terminationStarted=!1,this.releaseFence=null,this.child=a,this.identity=b,this.eventStore=d.eventStore??new u.mI,this.deliveryLedger=d.deliveryLedger??new z,this.readImage=d.readImage??(a=>(0,x.PF)().read(a)),this.compactEvidenceTimeoutMs=d.compactEvidenceTimeoutMs??3e5,this.requestTimeoutMs=d.requestTimeoutMs??3e4,this.shutdownGraceMs=d.shutdownGraceMs??1e3,this.onEventCursorRecovery=d.onEventCursorRecovery,this.signalProcess=d.signalProcess??process.kill,this.processIdentity=d.processIdentity??(a=>p.B.processIdentity(a)),this.childStartIdentity=a.pid?this.processIdentity(a.pid):null,this.releaseCleanup=d.releaseCleanup??null,this.cursor=d.initialEventCursor??0,this.protocolVersion=c.version??null,this.account={type:c.authMethod,planType:c.subscriptionType},this.launchFlags=d.allowSubagents?[v.Zx]:[v.Zx,w],this.reapedPromise=new Promise(a=>{this.resolveReaped=a}),a.stdout.on("data",a=>{this.acceptStdout("string"==typeof a?a:this.stdoutDecoder.write(a))}),a.stdout.on("end",()=>{let a=this.stdoutDecoder.end();a&&this.acceptStdout(a)}),a.stderr.on("data",a=>{var b;this.stderrTail=(this.stderrTail+("string"==typeof a?a:a.toString("utf8"))).slice(-512),this.terminalExit??=(b=this.stderrTail,D.find(a=>a.pattern.test(b))?.reason??null),this.terminalExit&&(this.stderrTail="")}),a.stdin.on("error",a=>{this.releasing||this.released||this.fail(Error(`Claude stream stdin failed: ${I(a)}`))}),a.on("error",a=>this.fail(Error(`Claude child failed: ${I(a)}`))),a.on("close",()=>{this.reaped=!0,this.terminationTimer&&(clearTimeout(this.terminationTimer),this.terminationTimer=null),this.resolveReaped(),this.releasing?this.finishRelease():this.dead?this.notifyStateListeners():this.releasing||this.released||this.fail(Error("Claude child exited"))})}static async start(a){return this.open(a.sessionId??f().randomUUID(),!1,a)}static async adopt(a,b){if(!a)throw Error("Claude session id is required for adoption");return this.open(a,!0,b)}static async open(a,b,c){let e,g,i=c.binary??process.env.LLV_CLAUDE_BINARY??"claude",j=function(a,b,c=!1){let d={NODE_ENV:a.NODE_ENV};for(let b of A)void 0!==a[b]&&(d[b]=a[b]);return c&&void 0!==a.GH_CONFIG_DIR&&(d.GH_CONFIG_DIR=a.GH_CONFIG_DIR),b&&(d.CLAUDE_CONFIG_DIR=b),d[r.VI]=(0,r.TK)(),d}(c.env??process.env,c.claudeConfigDir,!0===c.forwardGitHubConfig);try{e=await (c.readAuthStatus?.()??K(i,j,c.cwd))}catch(a){throw c.releaseCleanup?.(),a}if(!e.loggedIn||"claude.ai"!==e.authMethod||!e.subscriptionType)throw c.releaseCleanup?.(),Error("Claude stream hosting requires a claude.ai subscription login");let k=["-p","--input-format","stream-json","--output-format","stream-json","--verbose","--include-partial-messages","--replay-user-messages","--permission-prompt-tool","stdio","--permission-mode",(0,m.A5)(c)],l=[...c.allowSubagents?[]:n.q5,...c.readOnly?["Edit","Write","NotebookEdit"]:[]];if(l.length>0&&k.push("--disallowedTools",l.join(",")),c.claudeConfigDir){let b=`structured-${f().createHash("sha256").update(a).digest("hex").slice(0,24)}`,d=(0,n.UI)(c.claudeConfigDir,{allowSubagents:c.allowSubagents,baseSettingsPath:c.spawnPolicyBaseSettingsPath,profileId:b,cwd:c.cwd,mcpServers:c.mcpServers,mcpStatePath:c.mcpStatePath});k.push("--settings",d.settingsPath,"--strict-mcp-config","--mcp-config",d.mcpConfigPath)}else k.push("--strict-mcp-config");b?k.push("--resume",a):k.push("--session-id",a),c.model&&k.push("--model",c.model),c.effort&&k.push("--effort",c.effort),c.systemPrompt&&k.push("--system-prompt",c.systemPrompt),c.tools&&k.push("--tools",c.tools.join(","));let p=c.spawnProcess??((a,b,c)=>(0,d.spawn)(a,b,{...c,stdio:["pipe","pipe","pipe"]}));try{g=p(i,k,{cwd:c.cwd,env:(0,y.$)(j,c.mcpServers),detached:!0})}catch(a){throw c.releaseCleanup?.(),a}let q=new P(g,{sessionId:a},e,c);try{return q.restore(),q.reconcileTranscript(c.readTranscript?c.readTranscript(c.cwd,a):function(a,b,c){let d,e=(0,o.eV)(a,b,c);try{d=h().readFileSync(e,"utf8")}catch(a){if("ENOENT"===a.code)return[];throw a}let f=[];for(let a of d.split("\n")){if(!a)continue;let b=null;try{b=E(JSON.parse(a))}catch{continue}if(b?.type!=="user"||E(b.message)?.role!=="user")continue;let c=N(b);f.push({text:M(b),...c?{contentDigest:c.contentDigest}:{},...c?{imageCount:c.content.images.length}:{},uuid:F(b,"uuid"),timestamp:F(b,"timestamp")})}return f}(c.cwd,a,c.claudeProjectsDir)),q.emit({kind:"session-status",status:"idle"}),q}catch(a){try{await q.release()}catch(b){throw new t.EY(I(a),q,{cause:b})}throw Error(I(a))}}attach(a){if(!Number.isSafeInteger(a)||a<0)throw Error("afterSeq must be a non-negative integer");let b=this.events[0]?.seq;if(void 0!==b&&a+1<b)throw new t.AW(a,b);let c={afterSeq:a,queue:this.events.filter(b=>b.seq>a),wake:null,closed:!1};this.subscribers.add(c);let d=this.subscribers;return{async *[Symbol.asyncIterator](){try{for(;;){let a=c.queue.shift();if(a){a.seq>c.afterSeq&&(c.afterSeq=a.seq,yield a);continue}if(c.closed)break;await new Promise(a=>{c.wake=a}),c.wake=null}}finally{c.closed=!0,d.delete(c)}}}}async send(a){let b,c;if(this.unavailable())return{outcome:"rejected",reason:"dead-host"};if(!a.id)throw Error("queue entry id is required");let d=(0,t.h4)(a),e=this.deliveries.find(b=>b.entry.id===a.id);if(e&&!G(e.entry,d))throw Error("Claude queue entry id belongs to a different payload");if(!e&&void 0!==d.expectedTurnId&&d.expectedTurnId!==this.activeTurnId)return{outcome:"rejected",reason:"stale-turn"};if(e?.delivered)return{outcome:e.disposition,turnId:e.entry.id};let f=this.pendingDeliveries.get(a.id);if(f)return f.promise;let g=d.content.images.map(a=>({type:"image",source:{type:"base64",media_type:a.mime,data:this.readImage(a).toString("base64")}}));d.content.text&&g.push({type:"text",text:d.content.text});let h=e?.disposition??(this.activeTurnId?"queued-next-turn":"turn-started");try{this.deliveryLedger.recordQueued(this.identity.sessionId,d,h)}catch(a){throw this.failWithoutLedger(Error(`Claude delivery ledger failed: ${I(a)}`)),Error(`Claude delivery ledger failed: ${I(a)}`)}let i=e??{entry:structuredClone(d),disposition:h,delivered:!1};e||this.deliveries.push(i);let j=new Promise((a,d)=>{b=a,c=d}),k=setTimeout(()=>{this.pendingDeliveries.get(a.id)?.promise===j&&this.fail(Error("Claude delivery confirmation timed out; outcome is uncertain"))},this.requestTimeoutMs),l={promise:j,resolve:a=>b(a),reject:a=>c(a),timer:k};return this.pendingDeliveries.set(a.id,l),this.write({type:"user",session_id:this.identity.sessionId,message:{role:"user",content:g}}),this.turnQueue.push(a.id),this.activeTurnId?this.notifyStateListeners():(this.activeTurnId=a.id,this.emit({kind:"turn-started",turnId:a.id})),l.promise}async interrupt(a){if(this.unavailable())throw Error("Claude stream host is unavailable");if(!a||a!==this.activeTurnId)throw Error("active turn fence is stale");let b=f().randomUUID();await new Promise((c,d)=>{let e=setTimeout(()=>{this.pendingControls.delete(b);let a=Error("Claude interrupt timed out; outcome is uncertain");d(a),this.fail(a)},this.requestTimeoutMs);this.pendingControls.set(b,{resolve:c,reject:d,timer:e,interruptTurnId:a}),this.write({type:"control_request",request_id:b,request:{subtype:"interrupt"}})})}async compact(a){let b,c,d=this.compactions.get(a.operationId);if(d)return d.promise;if(this.unavailable())throw new t.BL("Claude stream host is unavailable","refused");if(a.threadId&&a.threadId!==this.identity.sessionId)throw new t.BL("compact target session is not the session this host owns","refused");if(this.activeTurnId)throw new t.BL("a turn is active; compaction would race it","refused");if([...this.compactions.values()].some(a=>!a.settled))throw new t.BL("a compaction is already running on this conversation","refused");let e=new Promise((a,d)=>{b=a,c=d}),f={promise:e,resolve:a=>b(a),reject:a=>c(a),settled:!1,timer:null};return this.compactions.set(a.operationId,f),e.catch(()=>void 0),this.write({type:"user",session_id:this.identity.sessionId,message:{role:"user",content:[{type:"text",text:"/compact"}]}}),f.timer=setTimeout(()=>{this.settleCompaction(f,new t.BL(B,"unverified"))},this.compactEvidenceTimeoutMs),e}settleCompaction(a,b){a.settled||(a.settled=!0,a.timer&&clearTimeout(a.timer),a.timer=null,b instanceof t.BL?a.reject(b):a.resolve(b))}settlePendingCompactions(a){for(let b of this.compactions.values())b.settled||this.settleCompaction(b,a)}async answer(a,b){if(this.unavailable())throw Error("Claude stream host is unavailable");if(!this.attentions.has(a))throw Error("attention request is missing or already answered");let c=this.attentions.get(a),d=E(b),e=d?.behavior==="allow"?{...d,updatedInput:{...E(c.input)??{},...E(d.updatedInput)??{}}}:b??{};if(this.pendingAnswers.has(a))throw Error("attention answer is already awaiting confirmation");await new Promise((b,c)=>{let d=setTimeout(()=>{this.pendingAnswers.delete(a);let b=Error("Claude attention answer timed out; outcome is uncertain");c(b),this.fail(b)},this.requestTimeoutMs);this.pendingAnswers.set(a,{resolve:b,reject:c,timer:d}),this.write({type:"control_response",response:{subtype:"success",request_id:a,response:e}})})}async health(){return this.currentState()}terminalExitReason(){return this.terminalExit}onStateChange(a){return this.stateListeners.add(a),a(this.currentState()),()=>this.stateListeners.delete(a)}setWriterFence(a){this.writerFence=a}async release(){if(!this.released){if(!this.releasePromise){let a=this.releaseAndReap();this.releasePromise=a,a.catch(()=>{this.releasePromise===a&&(this.releasePromise=null)})}return this.releasePromise}}async releaseIfOwned(a){let b=this.child.pid;if(this.released||this.releasing||null!==this.releasePromise||!b||null===a.startIdentity||b!==a.pid||this.childStartIdentity!==a.startIdentity||this.processIdentity(b)!==a.startIdentity)return!1;this.releaseFence=a;try{return await this.release(),!0}finally{this.releaseFence===a&&(this.releaseFence=null)}}unavailable(){if(this.dead||this.releasing||this.released)return!0;try{return this.writerFence?.()===!1}catch{return!0}}currentState(){let a=this.reaped||this.released?null:this.child.pid??null;return{status:this.dead?"dead":this.released?"unhosted":this.attentions.size?"attention":this.activeTurnId?"active":"idle",sessionKey:this.identity.sessionId,endpoint:a?`stdio:${a}`:"stdio:released",pid:a,processStartIdentity:a?this.processIdentity(a):null,eventCursor:this.cursor,protocolVersion:this.protocolVersion,activeTurnRef:this.activeTurnId,pendingAttention:[...this.attentions.keys()],activeFlags:[...this.launchFlags],account:this.account}}restore(){let a=this.eventStore.load(this.identity.sessionId);this.events.push(...a),this.cursor=(0,u.dq)(this.identity.sessionId,a.at(-1)?.seq??0,this.cursor,this.onEventCursorRecovery),this.deliveries.push(...this.deliveryLedger.load(this.identity.sessionId).map(a=>({...a,entry:(0,t.h4)(a.entry)})));let b=null;for(let c of a)"turn-started"===c.kind&&(b=c.turnId),"turn-ended"===c.kind&&c.turnId===b&&(b=null),"attention"===c.kind&&this.attentions.set(c.id,E(c.attention)??{}),"attention-resolved"===c.kind&&this.attentions.delete(c.id),"session-status"===c.kind&&("dead"===c.status||"unhosted"===c.status)&&(b=null,this.attentions.clear());for(let a of(b&&this.emit({kind:"turn-ended",turnId:b,status:"error"}),this.attentions.keys()))this.emit({kind:"attention-resolved",id:a,resolution:"host-restarted"});this.attentions.clear()}reconcileTranscript(a){let b=[...a];for(let a of this.deliveries){if(a.delivered)continue;let c=a.queuedAt?Date.parse(a.queuedAt):-1/0,d=b.findIndex(b=>{let d=b.timestamp?Date.parse(b.timestamp):1/0,e=b.contentDigest??(b.text.trim()?(0,v.rM)(b.text,[]).contentDigest:null);return null!==e&&O(a.entry,{contentDigest:e,text:b.text,imageCount:b.imageCount??0})&&d>=c});if(d<0)continue;let[e]=b.splice(d,1);this.deliveryLedger.confirmDelivered(this.identity.sessionId,a.entry.id,e?.uuid??null),a.delivered=!0,a.engineMessageId=e?.uuid??null}}emit(a){let b;if(this.ledgerFailed)return;try{b=(0,u.RO)(this.cursor)}catch(a){this.ledgerFailed=!0,this.failWithoutLedger(Error(I(a)));return}this.cursor=b;let c={...a,seq:b};try{this.eventStore.append(this.identity.sessionId,c)}catch(a){this.cursor=this.events.at(-1)?.seq??Math.max(0,this.cursor-1),this.ledgerFailed=!0,this.failWithoutLedger(Error(`runtime event ledger failed: ${I(a)}`));return}for(let a of(this.events.push(c),this.subscribers))a.queue.push(c),a.wake?.();this.notifyStateListeners()}acceptStdout(a){if(this.dead||this.released)return;this.stdoutBuffer+=a;let b=this.stdoutBuffer.indexOf("\n");for(;b>=0;){let a=this.stdoutBuffer.slice(0,b);if(this.stdoutBuffer=this.stdoutBuffer.slice(b+1),Buffer.byteLength(a)>C)return this.fail(Error("Claude emitted an oversized JSONL frame"));if(a&&this.acceptMessage(a),this.dead)return;b=this.stdoutBuffer.indexOf("\n")}Buffer.byteLength(this.stdoutBuffer)>C&&this.fail(Error("Claude emitted an oversized JSONL frame"))}acceptMessage(a){let b=null;try{b=E(JSON.parse(a))}catch{}if(!b)return this.fail(Error("Claude emitted malformed stream JSON"));let c=F(b,"type"),d=F(b,"session_id");if(d&&d!==this.identity.sessionId)return this.fail(Error("Claude emitted a different session id"));if("system"===c&&"init"===b.subtype)return"none"!==b.apiKeySource?this.fail(Error("Claude stream process did not use subscription OAuth")):void 0;if("system"===c&&"compact_boundary"===b.subtype)return void this.settlePendingCompactions({compactionId:F(b,"uuid")});if("user"===c){let a=N(b),c="user"===F(b.message,"role")&&null!==a?this.deliveries.find(b=>!b.delivered&&O(b.entry,{contentDigest:a.contentDigest,text:a.content.text,imageCount:a.content.images.length})):void 0;if(c)try{this.deliveryLedger.confirmDelivered(this.identity.sessionId,c.entry.id,F(b,"uuid")),c.delivered=!0,c.engineMessageId=F(b,"uuid");let a=this.pendingDeliveries.get(c.entry.id);a&&(this.pendingDeliveries.delete(c.entry.id),clearTimeout(a.timer),a.resolve({outcome:c.disposition,turnId:c.entry.id}))}catch(a){return this.failWithoutLedger(Error(`Claude delivery ledger failed: ${I(a)}`))}this.emit({kind:"item",turnId:this.activeTurnId,item:function(a,b){let c=E(a.message)??{},d=b?b.content.images.map(a=>({type:"image",source:{type:"runtime_ref",sha256:a.sha256,media_type:a.mime,bytes:a.bytes}})):[],e=b?.content.text??M(a);e&&d.push({type:"text",text:e});let f=E(a.message)?.content;if(Array.isArray(f))for(let a of f){let b=E(a),c=F(b,"tool_use_id");b?.type==="tool_result"&&c&&d.push({type:"tool_result",tool_use_id:c,...!0===b.is_error?{is_error:!0}:{}})}return{...a,...b?{contentDigest:b.contentDigest}:{},message:{...c,content:d}}}(b,a),phase:"completed"});return}if("stream_event"===c){let a=E(b.event),c=F(E(a?.delta),"text");a?.type==="content_block_delta"&&null!==c&&(this.activeTurnId&&this.partialTurns.add(this.activeTurnId),this.emit({kind:"delta",turnId:this.activeTurnId??"unknown",text:c}));return}if("assistant"===c){let a=L(E(b.message)?.content);!a||this.activeTurnId&&this.partialTurns.has(this.activeTurnId)||this.emit({kind:"delta",turnId:this.activeTurnId??"unknown",text:a}),this.emit({kind:"item",turnId:this.activeTurnId,item:b,phase:"completed"});return}if("control_request"===c){let a=F(b,"request_id");if(!a)return this.fail(Error("Claude control request had no request id"));let c=E(b.request)??{};return this.attentions.set(a,c),void this.emit({kind:"attention",id:a,method:F(c,"subtype")??"control_request",attention:c})}if("control_cancel_request"===c){let a=F(b,"request_id");if(!a)return this.fail(Error("Claude control cancellation had no request id"));if(!this.attentions.has(a))return;let c=this.pendingAnswers.get(a);return c&&(clearTimeout(c.timer),this.pendingAnswers.delete(a),c.reject(Error("Claude attention was cancelled before answer confirmation"))),this.attentions.delete(a),void this.emit({kind:"attention-resolved",id:a,resolution:"server-resolved"})}if("control_response"===c){let a=E(b.response)??b,c=F(a,"request_id");if(!c)return;let d=this.pendingAnswers.get(c);if(d){clearTimeout(d.timer),this.pendingAnswers.delete(c),this.attentions.delete(c),"error"===a.subtype?(d.reject(Error("Claude attention answer failed")),this.emit({kind:"attention-resolved",id:c,resolution:"server-resolved"})):(d.resolve(),this.emit({kind:"attention-resolved",id:c,resolution:"answered"}));return}let e=this.pendingControls.get(c);if(!e)return;clearTimeout(e.timer),this.pendingControls.delete(c),"error"===a.subtype?e.reject(Error("Claude control request failed")):(e.interruptTurnId&&this.interruptedTurns.add(e.interruptTurnId),e.resolve());return}"result"===c&&this.acceptResult(b)}acceptResult(a){let b=this.turnQueue.shift()??this.activeTurnId;if(!b)return void this.settlePendingCompactions(new t.BL("compact-declined","refused"));this.partialTurns.delete(b);let c=this.interruptedTurns.delete(b)||"interrupted"===a.subtype?"interrupted":"success"===a.subtype?"completed":"error";for(let a of(this.emit({kind:"turn-ended",turnId:b,status:c}),this.attentions.keys())){let b=this.pendingAnswers.get(a);b&&(clearTimeout(b.timer),this.pendingAnswers.delete(a),b.reject(Error("Claude attention expired with its turn before answer confirmation"))),this.emit({kind:"attention-resolved",id:a,resolution:"turn-ended"})}this.attentions.clear(),this.activeTurnId=this.turnQueue[0]??null,this.activeTurnId?this.emit({kind:"turn-started",turnId:this.activeTurnId}):this.emit({kind:"session-status",status:"idle"})}write(a){try{this.child.stdin.write(`${JSON.stringify(a)}
122
+ `)}catch(b){let a=Error(`Claude stream stdin failed: ${I(b)}`);throw this.fail(a),a}}async releaseAndReap(){if(this.releasing=!0,this.rejectPending(Error("Claude stream host released")),!this.startTermination()&&this.releaseFence)throw this.releasing=!1,Error("Claude child identity changed before signalling");if(!await this.waitForReap(2*this.shutdownGraceMs)){if(!this.signalReleaseGroup("SIGKILL")&&this.releaseFence)throw this.releasing=!1,Error("Claude child identity changed before signalling");if(!await this.waitForReap(this.shutdownGraceMs)){if(void 0!==this.child.pid&&(this.child.exitCode??null)===null&&(this.child.signalCode??null)===null)throw Error("Claude child could not be reaped");for(let a of[this.child.stdin,this.child.stdout,this.child.stderr])try{a?.destroy()}catch{}this.reaped=!0,this.terminationTimer&&(clearTimeout(this.terminationTimer),this.terminationTimer=null),this.resolveReaped()}}this.finishRelease()}finishRelease(){if(this.released)return;this.released=!0,this.releasing=!1,this.activeTurnId=null,this.attentions.clear(),this.emit({kind:"session-status",status:"unhosted"}),this.ledgerFailed&&this.notifyStateListeners(),this.closeSubscribers();let a=this.releaseCleanup;this.releaseCleanup=null,a?.()}async waitForReap(a){let b;if(this.reaped)return!0;try{return await Promise.race([this.reapedPromise.then(()=>!0),new Promise(c=>{b=setTimeout(()=>c(!1),a)})])}finally{b&&clearTimeout(b)}}fail(a){this.dead||this.released||(this.dead=!0,this.activeTurnId=null,this.attentions.clear(),this.rejectPending(a),this.emit({kind:"session-status",status:"dead"}),this.closeSubscribers(),this.startTermination())}failWithoutLedger(a){if(this.released){this.notifyStateListeners(),this.closeSubscribers();return}this.dead?this.notifyStateListeners():(this.ledgerFailed=!0,this.dead=!0,this.activeTurnId=null,this.attentions.clear(),this.rejectPending(a),this.notifyStateListeners(),this.closeSubscribers(),this.startTermination())}signalReleaseGroup(a){let b=this.releaseFence;if(b){let a=this.child.pid;if(!a||null===b.startIdentity||a!==b.pid||this.childStartIdentity!==b.startIdentity||this.processIdentity(a)!==b.startIdentity)return!1}return(0,q.f)(this.child,a,this.signalProcess)}startTermination(){if(this.terminationStarted||this.reaped)return!0;try{this.child.stdin.end()}catch{}return!!this.signalReleaseGroup("SIGTERM")&&(this.terminationStarted=!0,this.terminationTimer=setTimeout(()=>{this.terminationTimer=null,this.reaped||this.signalReleaseGroup("SIGKILL")},this.shutdownGraceMs),!0)}rejectPending(a){for(let b of this.pendingDeliveries.values())clearTimeout(b.timer),b.reject(Error(I(a)));for(let b of(this.pendingDeliveries.clear(),this.pendingControls.values()))clearTimeout(b.timer),b.reject(Error(I(a)));for(let b of(this.pendingControls.clear(),this.pendingAnswers.values()))clearTimeout(b.timer),b.reject(Error(I(a)));this.pendingAnswers.clear(),this.settlePendingCompactions(new t.BL(B,"unverified"))}closeSubscribers(){for(let a of this.subscribers)a.closed=!0,a.wake?.()}notifyStateListeners(){let a=this.currentState();for(let b of this.stateListeners)b(a)}}},7058:(a,b,c)=>{c.d(b,{Be:()=>t,He:()=>x,Hz:()=>y,Ko:()=>p,Ul:()=>s,mR:()=>v,pk:()=>q,sY:()=>m,w8:()=>w,wK:()=>r});var d=c(73024),e=c.n(d),f=c(94284),g=c(47985),h=c(52530),i=c(28388);(0,f.E)("turn").clear(),(0,f.E)("turn-evidence-v1").clear(),(0,f.E)("turn-evidence-v2").clear();let j=(0,f.E)("turn-evidence-v3"),k=(0,f.E)("tail-v3"),l=(0,f.E)("head-records-v2");function m(a,b,c,d=4194304,e=41){let f=l.get(a);if(f&&f.size===b&&f.mtimeMs===c&&f.nbytes===d&&f.recordLimit===e)return{records:f.records.slice(),complete:!0};let h=(0,g.zy)(a,b,c,{maxBytes:d,lineLimit:e});if(!h.complete||!h.value)return{records:[],complete:!1};let{text:i,read:j,bytes:k}=h.value,n=i.split("\n");j<b&&!i.endsWith("\n")&&(n=n.slice(0,-1));let o=[];for(let a of n.slice(0,e)){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&o.push(a)}catch{}}l.delete(a);let p=0;for(let a of l.values())p+=a.sourceBytes;for(;l.size>0&&(l.size>=64||p+k.length>0x1000000);){let a=l.keys().next().value;if(void 0===a)break;p-=l.get(a)?.sourceBytes??0,l.delete(a)}return l.set(a,{size:b,mtimeMs:c,nbytes:d,recordLimit:e,sourceBytes:k.length,records:o}),{records:o.slice(),complete:!0}}function n(a,b){let c=`${b.authoritative?"authoritative":"activity"}:${a}`;for(j.delete(c);j.size>=4096;){let a=j.keys().next().value;if(void 0===a)break;j.delete(a)}j.set(c,b)}function o(a,b,c,d){return"claude"===c&&!!d&&"terminal"===a.state&&null!==(0,i.v)(b)}function p(a){return"codex-sessions"===a?"codex":"openclaw-sessions"===a?"openclaw":"claude"}function q(a,b,c,d,e=!0){let f=`${e?"authoritative":"activity"}:${a}`,g=j.get(f);if(g&&g.size===b&&g.mtimeMs===c&&g.engine===d)return n(a,g),{turn:{...g.turn},complete:!0,composerReleased:g.composerReleased,recoveryReleased:g.recoveryReleased};let h=w(a,b,c),k=(0,i.j)(h.records,d,e),l=h.complete&&o(k,h.records,d,e);if(h.complete){n(a,{size:b,mtimeMs:c,engine:d,authoritative:e,turn:k,composerReleased:!1,recoveryReleased:l});let f=!e,g=`${f?"authoritative":"activity"}:${a}`,m=j.get(g),p=m?.size===b&&m.mtimeMs===c&&m.engine===d&&m.composerReleased,q=(0,i.j)(h.records,d,f);n(a,{size:b,mtimeMs:c,engine:d,authoritative:f,turn:q,composerReleased:p,recoveryReleased:o(q,h.records,d,f)})}return{turn:k,complete:h.complete,composerReleased:!1,recoveryReleased:l}}function r(a,b,c,d){for(let e of[`activity:${a}`,`authoritative:${a}`]){let a=j.get(e);if(a&&a.size===b&&a.mtimeMs===c&&a.engine===d)return{...a.turn}}return null}function s(a,b,c,d,e,f={}){let g=f.authoritative??!0,h=f.composerReleased??!1;"claude"===d&&g&&"terminal"===e.state||n(a,{size:b,mtimeMs:c,engine:d,authoritative:g,turn:{...e},composerReleased:h,recoveryReleased:!1})}function t(a,b,c,d){let e=`authoritative:${a}`,f=j.get(e);f&&f.size===b&&f.mtimeMs===c&&f.engine===d&&n(a,{...f,composerReleased:!0})}function u(a,b){return a.dev===b.dev&&a.ino===b.ino&&a.size===b.size&&a.mtimeNs===b.mtimeNs&&a.ctimeNs===b.ctimeNs}async function v(a,b=131072){let c=null;try{let d;c=await e().promises.open(a,"r");let f=await c.stat({bigint:!0});if(!f.isFile())return{integrity:"uncertain",records:[]};let g=Number(f.size);if(!Number.isSafeInteger(g))return{integrity:"uncertain",records:[]};let h=Math.min(g,b),i=g-h,j=+(i>0),k=i-j,l=Buffer.alloc(h+j),m=0;for(;m<l.length;){let a=await c.read(l,m,l.length-m,k+m);if(0===a.bytesRead)return{integrity:"uncertain",records:[]};m+=a.bytesRead}let n=await c.stat({bigint:!0}),o=await e().promises.stat(a,{bigint:!0});if(!u(f,n)||!u(n,o))return{integrity:"uncertain",records:[]};let p=l;if(i>0)if(10===l[0])p=l.subarray(1);else{let a=l.indexOf(10);if(a<0)return{integrity:"complete",prefixTruncated:!0,records:[]};p=l.subarray(a+1)}try{d=new TextDecoder("utf-8",{fatal:!0}).decode(p)}catch{return{integrity:"uncertain",records:[]}}let q=d.split("\n"),r=[];for(let a of q){let b,c=a.trim();if(c){try{b=JSON.parse(c)}catch{return{integrity:"uncertain",records:[]}}if(!b||"object"!=typeof b||Array.isArray(b))return{integrity:"uncertain",records:[]};r.push(b)}}return{integrity:"complete",prefixTruncated:i>0,records:r}}catch{return{integrity:"uncertain",records:[]}}finally{await c?.close().catch(()=>void 0)}}function w(a,b,c,d=131072){let f=k.get(a);if(f&&f.size===b&&f.mtimeMs===c&&f.nbytes===d)return{records:f.records.slice(),complete:!0,prefixTruncated:f.prefixTruncated};let g=function(a,b,c){let d=0,f="",g=!1;try{let h=e().openSync(a,"r");try{d=Math.max(0,b-c);let a=Buffer.alloc(Math.max(0,b-d)),i=0;for(;i<a.length;){let b=e().readSync(h,a,i,a.length-i,d+i);if(0===b)break;i+=b}g=i===a.length,f=a.toString("utf8",0,i)}finally{e().closeSync(h)}}catch{return{records:[],complete:!1,prefixTruncated:!1}}let h=f.split("\n");d>0&&h.length&&(h=h.slice(1));let i=[];for(let a of h){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&i.push(a)}catch{}}return{records:i,complete:g,prefixTruncated:d>0}}(a,b,d);if(!g.complete)return g;if(k.size>=64&&!k.has(a)){let a=k.keys().next().value;void 0!==a&&k.delete(a)}return k.set(a,{size:b,mtimeMs:c,nbytes:d,prefixTruncated:g.prefixTruncated,records:g.records}),{records:g.records.slice(),complete:!0,prefixTruncated:g.prefixTruncated}}function x(a,b,c,d=131072){return w(a,b,c,d).records}function y(a,b,c,d){let e=Date.now()/1e3-c;if("claude-tasks"===a&&b.endsWith(".output"))return(0,h.$w)().has(b)?{state:"live",reason:"output_held",complete:!0}:{state:e<900?"recent":"idle",reason:"output_released",complete:!0};let f=!0;if(b.endsWith(".jsonl")){let g=q(b,d,1e3*c,p(a),!1),h="terminal"===g.turn.state?"done":"busy"===g.turn.state?"busy":null;if(f=g.complete,"busy"===h)return e<180?{state:"live",reason:"jsonl_turn_open",complete:f}:{state:"stalled",reason:"jsonl_turn_stalled",complete:f};if("done"===h)return{state:e<900?"recent":"idle",reason:"jsonl_turn_completed",complete:f}}return e<20?{state:"live",reason:"mtime_fresh",complete:f}:e<900?{state:"recent",reason:"mtime_recent",complete:f}:{state:"idle",reason:"mtime_old",complete:f}}},7343:(a,b,c)=>{c.d(b,{bA:()=>ae,X$:()=>Q});var d=c(73024),e=c.n(d),f=c(51455),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(50920),l=c(14607),m=c(4116),n=c(23962),o=c(68574),p=c(94284),q=c(3302),r=c(89831),s=c(24534),t=c(62e3),u=c(38849);let v=(0,p.E)("needle-v2"),w=(0,p.E)("needle-tail-v1"),x=(0,p.E)("needle-tail-uuid-v1"),y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,z=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;function A(a,b,c){let d=Buffer.allocUnsafe(c),f=0;for(;f<c;){let g=e().readSync(a,d,f,c-f,b+f);if(0===g)break;f+=g}return{bytes:f===d.length?d:Buffer.from(d.subarray(0,f)),complete:f===c}}function B(a,b){for(let c of b.toString("utf8").match(z)??[])a.add(c.toLowerCase())}function C(a){return(0,i.createHash)("sha256").update(a).digest("base64url")}function D(a,b,c){let d,f=v.get(a);f&&f.hits&&f.sizes||(f={hits:f?.hits??{},scanned:f?.scanned??{},sizes:f?.sizes??{},observations:f?.observations??{},boundaries:f?.boundaries??{}},v.set(a,f));let g=Buffer.from(a),h=Math.max(0,g.length-1);try{d=e().statSync(b)}catch{return!1}let i=d.size,j=f.scanned[b]??0,k=f.sizes[b],l=f.observations[b],m=f.boundaries[b],n=!!(j>0&&!l);if(l)if((n||=l.dev!==d.dev||l.ino!==d.ino)||!(i>l.size))n||(n||=i!==l.size||d.mtimeMs!==l.mtimeMs);else if(!m||m.offset+m.bytes!==j||j>l.size)n=!0;else{if(c&&c.remaining<m.bytes)return!1;let a=null;try{a=e().openSync(b,"r");let d=A(a,m.offset,m.bytes);c&&(c.remaining-=d.bytes.length),n=!d.complete||C(d.bytes)!==m.fingerprint}catch{return!1}finally{null!==a&&e().closeSync(a)}}if((n||void 0!==k&&i<k)&&(j=0,f.scanned[b]=0,delete f.hits[b],delete f.boundaries[b],m=void 0),f.sizes[b]=i,f.hits[b])return!0;if(i<=j)return!1;let o=void 0===c?1/0:Math.min(Math.max(0,c.remaining),1048576);if(o<=0)return!1;try{let a=e().openSync(b,"r");try{let k=Math.max(0,j-h),l=Buffer.alloc(0),m=Buffer.alloc(0),n=!1,p=0;for(;k<i&&p<o;){let b=Math.min(1048576,Math.ceil(o-p),i-k),c=Buffer.alloc(b),d=e().readSync(a,c,0,b,k);if(!d)break;p+=d;let f=Buffer.concat([l,c.subarray(0,d)]);if(m=Buffer.concat([m,c.subarray(0,d)]).subarray(-65536),f.includes(g)){n=!0;break}l=h?c.subarray(Math.max(0,d-h),d):Buffer.alloc(0),k+=d}if(void 0!==c&&Number.isFinite(p)&&(c.remaining-=p),f.scanned[b]=n||k>=i?i:k,f.observations[b]={dev:d.dev,ino:d.ino,size:i,mtimeMs:d.mtimeMs},!n){let a=Buffer.from(m);f.boundaries[b]={offset:f.scanned[b]-a.length,bytes:a.length,fingerprint:C(a)}}return n&&(f.hits[b]=!0),n}finally{e().closeSync(a)}}catch{return!1}}var E=c(52530),F=c(69882);let G=(0,p.E)("sid-slug"),H=(0,p.E)("bgcmd"),I=(0,p.E)("background-index-v1"),J=(0,p.E)("chain-uuid"),K=(0,p.E)("compact-links-v1"),L=(0,p.E)("lineage-store-state-v1"),M="bg-commands.json",N="compact-chains.json";function O(){let a=(0,k.BQ)(M),b=L.get(a);return b||(b={backgroundLoaded:!1,backgroundDirty:!1,compactLoaded:!1,compactDirty:!1},L.set(a,b)),b}function P(a,b){let c=null;try{return e().mkdirSync(h().dirname(a),{recursive:!0,mode:448}),e().chmodSync(h().dirname(a),448),c=h().join(h().dirname(a),`.${h().basename(a)}.${process.pid}.${j().randomUUID()}.tmp`),e().writeFileSync(c,JSON.stringify(b)+"\n",{encoding:"utf8",mode:384}),e().renameSync(c,a),!0}catch{if(c)try{e().unlinkSync(c)}catch{}return!1}}function Q(a){for(let b of a){if(!0!==b.derivationComplete||"claude-tasks"!==b.root||!b.parent||!b.cmd&&!b.cmdDesc)continue;let a=(0,t.Y8)(F.GH["claude-tasks"],b.path),c=a?.[2];c&&U(H,c,{command:b.cmd??"",description:b.cmdDesc??"",source:b.parent})}}async function R(a){let b=new Map;await (0,o.pV)(a,a=>{if("claude-projects"!==a.root)return;let c=a.name.split(h().sep);if(2!==c.length)return;let d=c[0]??"";b.set(d,(b.get(d)??[]).concat(a))});let c=(a,b,c)=>{let d=new Map(c.map(a=>[a.path,a])),e=new Set;for(let c=a;c?.parent&&!e.has(c.path);c=d.get(c.parent))if(e.add(c.path),c.parent===b.path)return!0;return!1};await (0,o.pV)([...b.values()],async a=>{let b=[...a].sort((a,b)=>a.mtime-b.mtime);await (0,o.pV)(b,d=>{var f,g;let h=K.get(d.path),i=h?b.find(a=>a.path===h&&a!==d&&!a.parent):void 0;if(i&&!c(d,i,a)){i.parent=d.path;return}let j=function(a,b){let c=J.get(a);if(c&&(null!==c[1]||c[0]>=524288||c[0]>=b))return c[1];let d=null,f=0;try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,524288));for(let b of(f=e().readSync(c,a,0,a.length,0),a.toString("utf8",0,f).split("\n")))if(b.includes('"compact_boundary"')){d=b.match(/"logicalParentUuid"\s*:\s*"([0-9a-f-]{36})"/)?.[1]??null;break}}finally{e().closeSync(c)}}catch{return null}return J.set(a,[f,d]),d}(d.path,d.size);if(!j)return;let k=b.filter(a=>a!==d&&!a.parent).sort((a,b)=>b.mtime-a.mtime),l="live"===d.activity||"recent"===d.activity,m=k.find(a=>(function(a,b){let c;try{c=e().statSync(b)}catch{return!1}if(y.test(a))return function(a,b,c){let d=a.toLowerCase(),f=x.get(b);if(f?.dev===c.dev&&f.ino===c.ino&&f.size===c.size&&f.mtimeMs===c.mtimeMs){if(f.uuids.has(d))return!0;if(f.complete)return!1;let a=Math.min(c.size,1048576),g=a-Math.min(c.size,131072),h=null;try{h=e().openSync(b,"r");let i=A(h,c.size-a,g);return B(f.uuids,Buffer.concat([i.bytes,f.boundary])),i.complete&&(f.complete=!0,f.boundary=Buffer.alloc(0)),f.uuids.has(d)}catch{return!1}finally{null!==h&&e().closeSync(h)}}let g=new Set,h=Math.min(c.size,131072),i=null;try{i=e().openSync(b,"r");let a=A(i,c.size-h,h);B(g,a.bytes);let f=Math.min(c.size,1048576),j=f-h,k={dev:c.dev,ino:c.ino,size:c.size,mtimeMs:c.mtimeMs,uuids:g,complete:a.complete&&0===j,boundary:Buffer.from(a.bytes.subarray(0,Math.min(a.bytes.length,35)))};if(x.set(b,k),g.has(d)||k.complete)return g.has(d);let l=A(i,c.size-f,j);return B(g,Buffer.concat([l.bytes,k.boundary])),a.complete&&l.complete&&(k.complete=!0,k.boundary=Buffer.alloc(0)),g.has(d)}catch{return!1}finally{null!==i&&e().closeSync(i)}}(a,b,c);let d=`${a}\u0000${b}`,f=w.get(d);if(f?.hit)return!0;if(f?.size===c.size&&f.mtimeMs===c.mtimeMs)return!1;let g=Buffer.from(a),h=Math.min(c.size,131072),i=null;try{i=e().openSync(b,"r");let a=A(i,c.size-h,h);if(a.bytes.includes(g))return w.set(d,{size:c.size,mtimeMs:c.mtimeMs,hit:!0}),!0;let f=a.complete,j=!1,k=Math.min(c.size,1048576),l=k-h;if(l>0){let b=A(i,c.size-k,l);f&&=b.complete,j=Buffer.concat([b.bytes,a.bytes]).includes(g)}return(j||f)&&w.set(d,{size:c.size,mtimeMs:c.mtimeMs,hit:j}),j}catch{return!1}finally{null!==i&&e().closeSync(i)}})(j,a.path));m&&(f=d.path)!==(g=m.path)&&K.get(f)!==g&&(U(K,f,g),O().compactDirty=!0);let n=m??(l?k.find(a=>"live"!==a.activity):void 0);n&&!c(d,n,a)&&(n.parent=d.path)})})}async function S(a,b,c){let d;try{d=await c(()=>(0,f.readdir)(a,{withFileTypes:!0}))}catch{return[]}return(await Promise.all(d.map(async d=>{let e=h().join(a,d.name);return d.isDirectory()?S(e,b,c):d.isFile()&&b(e)?[e]:[]}))).flat()}async function T(a,b,c){let d=F.GH["claude-projects"],f=c??G.get(a)??null;if(!f){let c=(await S(d,b=>h().basename(b)===a+".jsonl",b))[0];if(!c)return[null,[]];f=h().basename(h().dirname(c)),G.set(a,f)}let g=h().join(d,f,a+".jsonl"),i=h().join(d,f,a,"subagents"),j=(await S(i,a=>h().basename(a).startsWith("agent-")&&a.endsWith(".jsonl"),b)).sort();return[e().existsSync(g)?g:null,j]}function U(a,b,c){for(a.delete(b),a.set(b,c);a.size>2e4;){let b=a.keys().next().value;if(void 0===b)break;a.delete(b)}}function V(a,b){if(b.includes('"tool_use"'))try{let c=JSON.parse(b);for(let b of(0,u.Em)((0,u.xK)(c.message)?.content)){if("tool_use"!==b.type||"string"!=typeof b.id)continue;let c=(0,u.xK)(b.input)??{},d="string"==typeof c.command?c.command:"",e="string"==typeof c.description?c.description:"";(d||e)&&U(a.toolUses,b.id,{command:d,description:e})}}catch{}if(b.includes("background with ID: ")){let c=b.match(/"tool_use_id"\s*:\s*"([^"]+)"/)?.[1];if(c)for(let d of b.matchAll(/background with ID: ([A-Za-z0-9_-]+)/g)){let b=d[1];b&&U(a.taskToolUses,b,c)}}for(let[b,c]of a.taskToolUses){let d=a.toolUses.get(c);d&&(d.command||d.description)&&U(a.commands,b,d)}}let W=(0,k.BQ)("codex-lineage.json"),X=(0,p.E)("codex-lineage"),Y=!1,Z=!1;function $(){if(Y)return;Y=!0;let a=(0,u.Vh)(W);if(a&&"object"==typeof a&&!Array.isArray(a)){for(let[b,c]of Object.entries(a))"string"!=typeof c||X.has(b)||X.set(b,c);X.size!==Object.keys(a).length&&(Z=!0)}}function _(a,b){if(X.get(a)!==b){for(X.set(a,b);X.size>2e4;){let a=X.keys().next().value;if(void 0===a)break;X.delete(a)}Z=!0}}function aa(){if(Z){Z=!1;try{e().mkdirSync(h().dirname(W),{recursive:!0}),e().writeFileSync(W,JSON.stringify(Object.fromEntries(X)))}catch{}}}async function ab(a,b){$();let c=new Map;await (0,o.pV)(a,a=>{if("codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return;let b=(0,r.Gz)(a.path);b&&c.set(b,a.path)}),await (0,o.pV)(a,a=>{if("codex-sessions"!==a.root||a.parent)return;let d=void 0===a.nativeParentThreadId?(0,r.S)(a.path,a.size,1e3*a.mtime):a.nativeParentThreadId,e=d?c.get(d)??null:null;e&&e!==a.path&&(a.parent=e,b&&_(a.path,e))}),b&&aa()}async function ac(a,b){$();let c=a.filter(a=>"codex-sessions"===a.root&&!a.parent);if(0===c.length)return;let d=new Map;await (0,o.pV)(a,a=>{("claude-projects"===a.root||"codex-sessions"===a.root)&&null!==a.pid&&d.set(a.pid,a.path)}),await (0,o.pV)(c,a=>{let c=null,e=new Set;for(let b=a.pid;null!==b&&!e.has(b)&&(e.add(b),!(e.size>15));b=(0,E.Ib)(b)){let e=d.get(b);if(e&&e!==a.path){c=e;break}}if(c)a.parent=c,b&&_(a.path,c);else{let b=X.get(a.path);b&&(a.parent=b)}}),b&&aa()}async function ad(a,b,c){let d=new Map(a.map(a=>[a.path,a]));await (0,o.pV)(a,a=>{let e=c.provenanceForChild(a.path);if("container-spawn"===e&&delete a.handoff,a.parent||"claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl")||a.path.includes(h().sep+"subagents"+h().sep))return;let f=(0,l._b)(a.path);if(!f&&null!==a.pid){let c=new Set;for(let b=a.pid;null!==b&&!c.has(b)&&(c.add(b),!(c.size>15||(f=(0,l.N0)(b))));b=(0,E.Ib)(b));b&&f&&f!==a.path&&(0,l.A6)(a.path,f)}f&&f!==a.path&&d.has(f)&&(a.parent=f,"container-spawn"!==e&&(a.handoff=!0))}),b&&(0,l.OA)()}async function ae(a,b={}){let c,d,f=!1!==b.persist,g=b.durableHandoffLineage??function(){try{var a;let b;return a=(0,m.tk)().readOnlySnapshot(),b=(0,m.MA)(a),{provenanceForChild(c){let d=b.conversationForPath(c);return d?(0,n.pN)(a,d.id,b):null}}}catch(a){if(a instanceof m.Ou)return{provenanceForChild:()=>null};throw a}}();!function(){let a=O();if(a.backgroundLoaded)return;a.backgroundLoaded=!0;let b=(0,u.Vh)((0,k.BQ)(M));if(b?.version!==1)return;let c=(0,u.xK)(b.commands);if(c)for(let[a,b]of Object.entries(c)){let c=(0,u.xK)(b);c&&"string"==typeof c.command&&"string"==typeof c.description&&"string"==typeof c.source&&(c.command||c.description)&&(H.has(a)||U(H,a,{command:c.command,description:c.description,source:c.source}))}}(),function(){let a=O();if(a.compactLoaded)return;a.compactLoaded=!0;let b=(0,u.Vh)((0,k.BQ)(N));if(b?.version!==1)return;let c=(0,u.xK)(b.links);if(c)for(let[a,b]of Object.entries(c))"string"!=typeof b||b===a||K.has(a)||U(K,a,b)}();let i=(c=0,d=[],async function(a){c>=48&&await new Promise(a=>d.push(a)),c+=1;try{return await a()}finally{c-=1,d.shift()?.()}}),j={remaining:262144},l={remaining:262144},p=new Map(a.map(a=>[a.path,a])),r=new Map;await (0,o.pV)(a,a=>{if("claude-tasks"!==a.root)return;let b=(0,t.Y8)(F.GH["claude-tasks"],a.path);b&&r.set(a,b)});let v=r.size;if(await (0,o.pV)(a,async a=>{if("claude-projects"===a.root){let b=(0,q.Zg)(a.name);if(b){let[c,d]=await T(b.parentSessionId,i,b.slug);a.parent=c;let e=(0,u.Vh)(a.path.slice(0,-6)+".meta.json")??{},f=(0,u.r$)(e.toolUseId),g=Number(e.spawnDepth??0);if(f&&g>=1){let b=function(a,b,c){if(void 0===c){for(let c of b)if(c&&D(a,c))return c;return null}let d=b.reduce((a,b)=>a+ +!!b,0);for(let e of b){if(!e)continue;let b=Math.ceil(Math.max(0,c.remaining)/d),f={remaining:b},g=D(a,e,f);if(Number.isFinite(b)&&(c.remaining=Math.max(0,c.remaining-(b-f.remaining))),d-=1,g)return e}return null}(f,d.filter(b=>b!==a.path).concat(c?[c]:[]),l);b&&(a.parent=b)}}}else if("claude-tasks"===a.root){let b=r.get(a);if(!b)return;let[c,d,f]=b,[g,k]=await T(d,i,c),l=Math.ceil(j.remaining/v),m={remaining:l},n=function(a,b,c,d){let f=H.get(a);if(f)return f;let g=null;for(let f of new Set([...b,...c])){if(!f)continue;let b=function(a,b,c){let d;try{d=e().statSync(b)}catch{return null}let f=I.get(b);if(!f||d.size<f.size||d.size===f.size&&d.mtimeMs!==f.mtimeMs){var g;f={size:g=d.size,mtimeMs:d.mtimeMs,offset:0,carry:Buffer.alloc(0),toolUses:new Map,taskToolUses:new Map,commands:new Map,complete:0===g},I.set(b,f)}else f.size=d.size,f.mtimeMs=d.mtimeMs,f.complete=f.offset>=d.size;let h=f.commands.get(a);if(h)return{...h,source:b};if(!f.complete&&c.remaining>0){let g=null;try{for(g=e().openSync(b,"r");f.offset<d.size&&c.remaining>0&&!f.commands.has(a);){let a=Math.min(65536,c.remaining,d.size-f.offset),b=Buffer.allocUnsafe(a),h=e().readSync(g,b,0,a,f.offset);if(0===h)break;f.offset+=h,c.remaining-=h,function(a,b){let c=a.carry.length?Buffer.concat([a.carry,b]):b,d=0;for(let b=c.indexOf(10,d);b>=0;b=c.indexOf(10,d))V(a,c.toString("utf8",d,b)),d=b+1;a.carry=d<c.length?Buffer.from(c.subarray(d)):Buffer.alloc(0)}(f,h===b.length?b:Buffer.from(b.subarray(0,h)))}f.complete=f.offset>=d.size,f.complete&&f.carry.length>0&&V(f,f.carry.toString("utf8"))}catch{}finally{null!==g&&e().closeSync(g)}}let i=f.commands.get(a);return i?{...i,source:b}:f.taskToolUses.has(a)?{command:"",description:"",source:b}:null}(a,f,d);if(b){if(b.command||b.description)return(H.get(a)?.command!==b.command||H.get(a)?.description!==b.description||H.get(a)?.source!==b.source)&&(U(H,a,b),O().backgroundDirty=!0),b;g??=b}}return g}(f,(g?[g]:[]).concat(k),function(a,b){let c,d=h().join(F.GH["claude-projects"],a);try{c=e().readdirSync(d,{withFileTypes:!0})}catch{return[]}let f=[];for(let a of c){if(!a.isFile()||!a.name.endsWith(".jsonl")||a.name===b+".jsonl")continue;let c=h().join(d,a.name);try{let a=e().statSync(c);if(a.size>0x4000000)continue;f.push({pathname:c,mtime:a.mtimeMs})}catch{continue}}return f.sort((a,b)=>b.mtime-a.mtime).slice(0,8).map(a=>a.pathname)}(c,d),m);if(j.remaining-=l-m.remaining,v-=1,n){a.parent=n.source,a.cmd=n.command,a.cmdDesc=n.description;let b=n.description||n.command;b&&(a.title=b.split(/\s+/).join(" ").slice(0,120))}else a.parent=g,a.title="Background task "+f,a.cmd="",a.cmdDesc=""}}),await ab(a,f),await ac(a,f),await ad(a,f,g),await R(a),await (0,o.pV)(a,a=>{a.parent&&p.has(a.parent)?a.project=(a=>{let b=new Set,c=a;for(;!b.has(c.path);){b.add(c.path);let a=p.get(c.parent??"");if(!a)return c.project;c=a}return a.project})(a):a.parent=null}),f){let a;!function(){let a=O();if(!a.backgroundDirty)return;let b=Object.fromEntries([...H].filter(([,a])=>a.command||a.description));P((0,k.BQ)(M),{version:1,commands:b})&&(a.backgroundDirty=!1)}(),(a=O()).compactDirty&&P((0,k.BQ)(N),{version:1,links:Object.fromEntries(K)})&&(a.compactDirty=!1),(0,s.Oc)()}}},7461:(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}},8164:(a,b,c)=>{function d(a,b){let c=RegExp(`^${b}:\\s+(\\d+)\\s*kB`,"m").exec(a);if(!c)return null;let d=Number(c[1]);return Number.isFinite(d)?1024*d:null}function e(a){let b=d(a,"MemTotal"),c=d(a,"MemAvailable");if(null===b||null===c||b<=0)return null;let e=d(a,"SwapTotal")??0,f=d(a,"SwapFree")??e;return{ramTotal:b,ramAvailable:c,swapTotal:e,swapUsed:Math.max(0,e-f)}}function f(a){return{rssBytes:d(a,"VmRSS")??0,swapBytes:d(a,"VmSwap")??0}}function g(a){let b=Number(/page size of (\d+) bytes/.exec(a)?.[1]);if(!Number.isFinite(b)||b<=0)return null;let c=b=>{let c=RegExp(`^${b}:\\s+(\\d+)\\.?`,"m").exec(a);return c?Number(c[1]):null},d=c("Pages free"),e=c("Pages inactive");return null===d||null===e?null:(d+e+(c("Pages purgeable")??0))*b}c.d(b,{CT:()=>k,Lc:()=>g,NW:()=>e,mO:()=>l,sW:()=>f,yh:()=>j});let h=/([\d.]+)\s*([KMGT])/;function i(a){let b=h.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isFinite(c)?Math.round(c*({K:1024,M:1048576,G:0x40000000,T:0x10000000000})[b[2]]):null}function j(a){let b=/total\s*=\s*(\S+)/.exec(a)?.[1],c=/used\s*=\s*(\S+)/.exec(a)?.[1];if(!b||!c)return null;let d=i(b),e=i(c);return null===d||null===e?null:{swapTotal:d,swapUsed:e}}function k(a){let b=new Map;for(let c of a.split("\n")){let a=/^\s*(\d+)\s+(\d+)\s*$/.exec(c);a&&b.set(Number(a[1]),1024*Number(a[2]))}return b}function l(a,b){let c=new Map;for(let[a,d]of b){if(a===d)continue;let b=c.get(d);b?b.push(a):c.set(d,[a])}let d=new Set([a]),e=[],f=[a];for(;f.length;){let a=f.pop();for(let b of(e.push(a),c.get(a)??[]))d.has(b)||(d.add(b),f.push(b))}return e}},8663:(a,b,c)=>{function d(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function e(a){return"string"==typeof a?a:""}function f(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>{if("string"==typeof a)return a;let b=d(a),c=e(b?.type);return"text"===c||"input_text"===c||"output_text"===c?e(b?.text):""}).join(""):""}function g(a,b){let c=d(a);if(!c)return null;let g=d(c.message),h=e(c.type),i=e(c.role)||e(g?.role);if("agentMessage"!==h&&"agent_message"!==h&&"assistant"!==h&&("message"!==h||"assistant"!==i))return null;let j=("string"==typeof c.text?c.text:"")||f(c.content)||f(g?.content);return j?{responseId:e(c.id)||e(c.uuid)||e(g?.id)||b,text:j}:null}function h(a){return Array.isArray(a)?a.flatMap(a=>{let b=d(a),c=e(b?.turnId),f=Array.isArray(b?.responses)?b.responses.flatMap(a=>{let b=d(a),c=e(b?.responseId);return c&&"string"==typeof b?.text?[{responseId:c,text:b.text}]:[]}):[];if(!c||0===f.length)return[];let g=e(b?.sourceTurnId),h=d(b?.streamChunk),i=h?.index,j=h?.startOffset,k=h?.endOffset,l=g&&Number.isInteger(i)&&Number.isInteger(j)&&Number.isInteger(k)&&i>=0&&j>=0&&k>j;return[{deliveryId:`voice:${JSON.stringify([c,f.map(a=>a.responseId)])}`,turnId:c,responses:f,ready:b?.ready===!0,...l?{sourceTurnId:g,streamChunk:{index:i,startOffset:j,endOffset:k}}:{}}]}):[]}function i(a){let b=`voice-stream:${a.sourceTurnId}:${a.chunkIndex}:${a.startOffset}:${a.endOffset}`,c=`${b}:response`;return h([{deliveryId:"derived",turnId:b,sourceTurnId:a.sourceTurnId,streamChunk:{index:a.chunkIndex,startOffset:a.startOffset,endOffset:a.endOffset},responses:[{responseId:c,text:a.text}],ready:!0}])[0]}function j(a,b,c){if(!Number.isInteger(b)||b<0||b>a.length)throw Error("voice delivery offset is invalid");let d=a.charCodeAt(b),e=a.charCodeAt(b-1);if(b>0&&d>=56320&&d<=57343&&e>=55296&&e<=56319)throw Error("voice delivery offset splits a Unicode scalar");if(!Number.isInteger(c)||c<4)throw Error("voice delivery chunk size is invalid");if(b===a.length)return null;let f=b,g=0;for(;f<a.length;){let d=a.codePointAt(f),e=d<=127?1:d<=2047?2:d<=65535?3:4;if(f>b&&g+e>c)break;g+=e,f+=d>65535?2:1}return f>b?{text:a.slice(b,f),nextOffset:f}:null}c.d(b,{Im:()=>h,N5:()=>i,_t:()=>j,mT:()=>g})},10456:(a,b,c)=>{c.d(b,{J0:()=>E,NE:()=>t,O:()=>J,O$:()=>K,Sq:()=>I,Ut:()=>P,b0:()=>M,hg:()=>R,m1:()=>r,vD:()=>N,yG:()=>Q,yN:()=>O,yX:()=>L});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(62142),l=c(14071);let m=/^[a-z0-9][a-z0-9-]{0,31}$/,n="default",o=["skills","prompts","config.toml","AGENTS.md","memories","rules"],p=null,q=new Set;class r extends Error{constructor(a){super(`unknown Codex account: ${a}`),this.name="UnknownAccountError"}}class s extends Error{constructor(){super("account label must contain visible text and be at most 80 characters"),this.name="InvalidAccountLabelError"}}class t extends Error{constructor(){super("Codex account registry is corrupt; repair or remove it before changing accounts"),this.name="CorruptCodexAccountsError"}}function u(){return i().resolve(process.env.LLV_CODEX_HOME||i().join(g().homedir(),".codex"))}function v(){return i().join(i().dirname((0,j.Pn)()),"accounts","codex")}function w(){return(0,j.BQ)("codex-accounts.json")}function x(){return{version:1,active:n,accounts:[],retired:[]}}function y(a,b){q.has(a)||(q.add(a),console.error(`[codex accounts] ${b}`))}function z(a){return i().join(v(),a)}function A(a,b=!1){if(!m.test(a)||a===n)return!1;let c=i().resolve(v()),d=i().resolve(z(a));if(i().dirname(d)!==c)return!1;try{let a=e().lstatSync(c),b=e().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink()||!b.isDirectory()||b.isSymbolicLink()||(63&b.mode)!=0)return!1;let f=e().realpathSync(c);return i().dirname(e().realpathSync(d))===f}catch{return!b}}function B(){let a,b=w(),c=`${b}:${function(a){try{let b=e().statSync(a);return`${b.mtimeMs}:${b.size}`}catch{return"missing"}}(b)}`;if(p?.key===c)return p.loaded;try{a=e().existsSync(b)?function(a,b){if(!a||"object"!=typeof a)return y(b,"registry is invalid; serving the default account"),{registry:x(),corrupt:!0};if(1!==a.version||"string"!=typeof a.active||!Array.isArray(a.accounts)||void 0!==a.retired&&!Array.isArray(a.retired))return y(b,"registry has an unsupported shape; serving the default account"),{registry:x(),corrupt:!0};let c=new Set,d=[],e=!1;for(let f of a.accounts){if(!(f&&"object"==typeof f&&"string"==typeof f.id&&"string"==typeof f.label&&"managed"===f.kind&&"number"==typeof f.createdAt&&(void 0===f.loginPane||null===f.loginPane||"object"==typeof f.loginPane&&"string"==typeof f.loginPane.paneId&&"string"==typeof f.loginPane.windowName&&(void 0===f.loginPane.startedAt||"number"==typeof f.loginPane.startedAt)))||c.has(f.id)||!A(f.id)){y(`${b}:${"object"==typeof f&&f?"invalid-account":"invalid-entry"}`,"ignored an invalid managed account record"),e=!0;continue}c.add(f.id),d.push({id:f.id,label:f.label,kind:"managed",createdAt:f.createdAt,loginPane:f.loginPane?{...f.loginPane,startedAt:f.loginPane.startedAt??0}:null})}let f=[];for(let d of a.retired??[]){if(!(d&&"object"==typeof d&&"string"==typeof d.id&&"string"==typeof d.label&&"number"==typeof d.retiredAt)||c.has(d.id)||!A(d.id)){y(`${b}:invalid-retired`,"ignored an invalid retired account record"),e=!0;continue}c.add(d.id),f.push({id:d.id,label:d.label,retiredAt:d.retiredAt})}return{registry:{version:1,active:a.active,accounts:d,retired:f},corrupt:e}}(JSON.parse(e().readFileSync(b,"utf8")),c):{registry:x(),corrupt:!1}}catch{y(c,"registry cannot be read; serving the default account"),a={registry:x(),corrupt:!0}}return p={key:c,loaded:a},a}function C(){let a=B();if(a.corrupt)throw new t;return a.registry}function D(a){return(0,l.oV)(()=>{let b=`${w()}.lock`,c=Date.now();for(e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});;){let d;try{d=e().openSync(b,"wx",384)}catch(a){if("EEXIST"!==a.code)throw a;try{if(Date.now()-e().statSync(b).mtimeMs>3e4){e().rmSync(b,{force:!0});continue}}catch{continue}if(Date.now()-c>=5e3)throw Error("Codex account registry is busy; retry shortly");Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,10);continue}try{return e().writeFileSync(d,`${process.pid}
123
+ `,"utf8"),a()}finally{e().closeSync(d),e().rmSync(b,{force:!0})}}})}function E(){return B().corrupt}function F(a){let b=w();e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${Date.now()}.tmp`);try{e().writeFileSync(c,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384}),e().renameSync(c,b),p=null}finally{e().rmSync(c,{force:!0})}}function G(a){try{return e().statSync(i().join(a,"auth.json")).isFile()}catch{return!1}}function H(a){let b=z(a.id);return{id:a.id,label:a.label,kind:"managed",home:b,sessionsDir:i().join(b,"sessions"),authPresent:G(b),loginPane:a.loginPane??null,createdAt:a.createdAt}}function I(){let a;return[{id:n,label:"Main",kind:"legacy",home:a=u(),sessionsDir:i().join(a,"sessions"),authPresent:G(a),loginPane:null,createdAt:0},...B().registry.accounts.map(H)]}function J(){let a=B().registry.active;return I().some(b=>b.id===a)?a:n}function K(a){let b=a??J(),c=I().find(a=>a.id===b);if(!c)throw new r(b);return{id:c.id,kind:c.kind,home:c.home,sessionsDir:c.sessionsDir}}function L(a){return I().some(b=>"managed"===b.kind&&b.home===a)}function M(a){D(()=>{p=null;let b=C();if(!I().some(b=>b.id===a))throw new r(a);F({...b,active:a})})}function N(){return[...new Set([...I().map(a=>a.sessionsDir),...B().registry.retired.map(a=>i().join(z(a.id),"sessions"))])]}function O(a){let b;try{b=e().realpathSync(a)}catch{return null}for(let a of I())try{let c=e().realpathSync(a.sessionsDir);if(b.startsWith(c+i().sep))return a.home}catch{continue}return null}function P(a){let b=a.trim();if(!b||b.length>80||/[\u0000-\u001f\u007f]/.test(b))throw new s;return D(()=>{p=null;let a=C(),c=function(a,b){let c=a.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"account";for(let a=0;;a+=1){let d=0===a?c:`${c.slice(0,32-String(a).length-1)}-${a}`;if(m.test(d)&&d!==n&&!b.has(d)&&!e().existsSync(z(d)))return d}}(b,new Set([...I().map(a=>a.id),...a.retired.map(a=>a.id)])),d=z(c),f=!1;try{for(let a of(e().mkdirSync(i().dirname(d),{recursive:!0,mode:448}),e().mkdirSync(d,{recursive:!1,mode:448}),f=!0,e().chmodSync(d,448),o))e().symlinkSync(i().join(u(),a),i().join(d,a));e().mkdirSync(i().join(d,"plugins"),{mode:448}),e().symlinkSync(i().join(u(),"plugins","cache"),i().join(d,"plugins","cache"));let g={id:c,label:b,kind:"managed",createdAt:Date.now(),loginPane:null};return F({...a,accounts:[...a.accounts,g]}),H(g)}catch(a){throw f&&e().rmSync(d,{recursive:!0,force:!0}),a}})}function Q(a,b){D(()=>{p=null;let c=C(),d=c.accounts.findIndex(b=>b.id===a);if(d<0)throw new r(a);let e=[...c.accounts];e[d]={...e[d],loginPane:b},F({...c,accounts:e})})}function R(a,b,c,d=Date.now()){if(a)return{state:"authenticated",clear:null!==b};if(!b)return{state:"idle",clear:!1};let e=d-b.startedAt<15e3;return c?c.windowName!==b.windowName?{state:"idle",clear:!0}:(0,k.g2)(c.command)?e?{state:"pending",clear:!1}:{state:"idle",clear:!0}:{state:"pending",clear:!1}:e?{state:"pending",clear:!1}:{state:"idle",clear:!0}}},10508:(a,b,c)=>{c.d(b,{J8:()=>n,Sn:()=>l,V_:()=>m,if:()=>j,uc:()=>k});var d=c(73024),e=c.n(d),f=c(2496),g=c(7058),h=c(38849),i=c(98918);function j(a){return k((0,g.He)(a.path,a.size,1e3*a.mtime),a.root,1e3*a.mtime)}function k(a,b,c){for(let d of[...a].reverse()){let a=Date.parse(String(d.timestamp??""))||c;if("codex-sessions"===b){let b=(0,h.xK)(d.payload)??{},c=(0,h.r$)(b.type);if("task_complete"===c){let c=(0,h.r$)(b.last_agent_message)?.trim();if(c)return{text:c,ts:a}}if("agent_message"===c)return{text:(0,h.r$)(b.message)??"",ts:a};if("message"===c&&"assistant"===b.role){let c=(0,h.Em)(b.content).map(a=>(0,h.r$)(a.text)??(0,h.r$)(a.input_text)??"").join("\n").trim();if(c)return{text:c,ts:a}}}if("claude-projects"===b&&"assistant"===d.type){let b=(0,h.Em)((0,h.xK)(d.message)?.content).filter(a=>"text"===a.type).map(a=>(0,h.r$)(a.text)??"").join("\n").trim();if(b)return{text:b,ts:a}}}return null}function l(a){let b=a.match(f.HU)?.[1];if(!b)return null;let c=(0,f.wV)(a,null),d=c?.findings.length??0,e=d>0||"REQUEST_CHANGES"!==b?d:(0,f.p9)(a);return{verdict:b,findingsCount:e,content:(0,i.Sn)(b,a)}}function m(a){if(!a.findingsPath)return null;try{return l(e().readFileSync(a.findingsPath,"utf8"))}catch{return null}}function n(a,b,c=a.reviewerRole?.engine??null){if(!a.reviewerPath)return null;let d=b.get(a.reviewerPath)??function(a,b){try{let c=e().statSync(a);return{path:a,root:"claude"===b||!b&&a.includes("/.claude/projects/")?"claude-projects":"codex-sessions",size:c.size,mtime:c.mtimeMs/1e3}}catch{return null}}(a.reviewerPath,c);if(!d)return null;let f=j(d);return f?l(f.text):null}},13818:(a,b,c)=>{c.d(b,{DQ:()=>l,WF:()=>j,cM:()=>e.cM,cf:()=>m,n$:()=>k});var d=c(31973);c(92233),c(2542),c(6568),c(33353);var e=c(29966);function f(a,b){return{kind:"codex-app-server",endpoint:a.endpoint,process:null===a.pid?null:{pid:a.pid,startIdentity:a.processStartIdentity},eventCursor:a.eventCursor,protocolVersion:a.protocolVersion,writerClaimEpoch:b,activeTurnRef:a.activeTurnRef,pendingAttention:a.pendingAttention,activeFlags:a.activeFlags}}function g(a,b){return{kind:"claude-broker",endpoint:a.endpoint,process:null===a.pid?null:{pid:a.pid,startIdentity:a.processStartIdentity},eventCursor:a.eventCursor,protocolVersion:a.protocolVersion,writerClaimEpoch:b,activeTurnRef:a.activeTurnRef,pendingAttention:a.pendingAttention,activeFlags:a.activeFlags}}function h(a,b){return a.length===b.length&&a.every((a,c)=>a===b[c])}async function i(a,b,c,d,e,f,g,i){let j;c.setWriterFence(()=>a.ownsStructuredHostClaim(b,d,e));let k=(c,h=!1)=>{let i=g(c,e),k=a.setStructuredHostClaimed(b,h&&"unhosted"===c.status?{...i,process:null}:i,h&&"dead"===f?"dead":"active"===c.status||"attention"===c.status?"live":"idle"===c.status?"idle":"unhosted"===c.status?"unhosted":"dead",d,e,h);if(!k)throw Error("structured host writer claim is stale");return j=structuredClone(c),k};try{k(await c.health())}catch(a){throw await c.release(),a}let l=Number.isFinite(i.cursorDebounceMs)?Math.max(0,i.cursorDebounceMs):3e4,m=!1,n=!1,o=!1,p=null,q=null,r=()=>{},s=()=>{null!==q&&(clearTimeout(q),q=null)},t=()=>{o||(o=!0,a.releaseStructuredHostClaim(b,d,e))},u=()=>{m||(m=!0,n=!0,p=null,s(),r(),t(),c.release())},v=()=>{let a=p;p=null,s(),a&&k(a)};return r=c.onStateChange(a=>{var b;if(m||n)return;let c="unhosted"===a.status||"dead"===a.status&&null===a.pid;if(!c&&(b=j).status===a.status&&b.endpoint===a.endpoint&&b.pid===a.pid&&b.processStartIdentity===a.processStartIdentity&&b.protocolVersion===a.protocolVersion&&b.activeTurnRef===a.activeTurnRef&&h(b.pendingAttention,a.pendingAttention)&&h(b.activeFlags,a.activeFlags)){p=structuredClone(a),null===q&&(q=setTimeout(()=>{if(q=null,!m&&!n&&null!==p)try{v()}catch{u()}},l),q.unref?.());return}p=null,s();try{k(a,c),c&&(o=!0,n=!0,r())}catch{u()}}),n&&r(),()=>{if(!n){try{v()}catch{u();return}n=!0,r(),t()}}}async function j(a,b,c,d,e,g="unhosted",h={}){return i(a,b,c,d,e,g,f,h)}async function k(a,b,c,d,e,f="unhosted",h={}){return i(a,b,c,d,e,f,g,h)}function l(a,b,c){let e=a.readOnlySnapshot().entries[(0,d.pp)(c)],f=e?.structuredHost?.process;return!!e&&!!f&&!!a.terminateInactiveStructuredHost(b,c,{process:f,claimEpoch:e.claimEpoch})}function m(a,b=()=>!1){let c=a.readOnlySnapshot();for(let e of Object.values(c.conversations)){if("terminal"!==e.turn.state&&!e.supersededBy)continue;let f=e.generations.at(-1);if(!f)continue;let g={engine:e.engine,sessionId:f.id},h=c.entries[(0,d.pp)(g)];!h?.structuredHost?.process||b(h)||l(a,e.id,g)}}},14071:(a,b,c)=>{c.d(b,{Cu:()=>E,gB:()=>p,oV:()=>D});var d=c(16698),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(50920),l=c(92233);let m=globalThis.__llvAccountMutationRuntime??={transactionContext:new d.AsyncLocalStorage,localWaiters:[],localHeld:!1},n=m.transactionContext,o=m.localWaiters;class p extends Error{constructor(a="account mutation is busy; retry shortly"){super(a),this.name="AccountMutationBusyError"}}function q(){let a=o.shift();a?a():m.localHeld=!1}async function r(){return m.localHeld?await new Promise(a=>o.push(a)):m.localHeld=!0,q}let s=function(){try{return h().readlinkSync("/proc/self/ns/pid")}catch{return null}}();function t(a,b){try{return Date.now()-h().statSync(a).mtimeMs>b}catch{return!1}}function u(a,b=null){if(null!==b&&t(a,b))return!0;try{let b=JSON.parse(h().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){if(("string"==typeof b.ns?b.ns:null)!==s)return t(a,3e4);if(!l.B.pidAlive(b.pid))return!0;if("string"!=typeof b.startIdentity)return!1;let c=l.B.processIdentity(b.pid);return null!==c&&c!==b.startIdentity}return t(a,3e4)}catch{return t(a,3e4)}}function v(a,b){try{JSON.parse(h().readFileSync(a,"utf8")).token===b&&h().rmSync(a,{force:!0})}catch{}}function w(){try{let a=JSON.parse(h().readFileSync((0,k.BQ)("account-mutation-revision.json"),"utf8"));return 1===a.version&&Number.isSafeInteger(a.revision)&&a.revision>=0?a.revision:0}catch{return 0}}function x(){let a=(0,k.BQ)("account-selection.lock"),b=`${a}.queue`;h().mkdirSync(b,{recursive:!0,mode:448});let c={pid:process.pid,startIdentity:l.B.processIdentity(process.pid),ns:s,token:f().randomUUID()},d=j().join(b,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${f().randomUUID()}.json`);return h().writeFileSync(d,JSON.stringify(c),{encoding:"utf8",flag:"wx",mode:384}),{lock:a,queue:b,owner:c,ticket:d}}function y(a){let b=new Date;try{return h().utimesSync(a,b,b),!0}catch{return!1}}function z(a){let b,c=[];for(let b of h().readdirSync(a.queue).filter(a=>a.endsWith(".json")).sort()){let d=j().join(a.queue,b);if(d!==a.ticket&&u(d,6e5)){h().rmSync(d,{force:!0});continue}h().existsSync(d)&&c.push(d)}if(c[0]!==a.ticket)return null;try{b=h().openSync(a.lock,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return u(a.lock)&&h().rmSync(a.lock,{force:!0}),null}try{h().writeFileSync(b,JSON.stringify(a.owner),"utf8"),h().fsyncSync(b)}catch(c){throw h().closeSync(b),h().rmSync(a.lock,{force:!0}),c}let d={active:!0,revision:w()},e=setInterval(()=>y(a.lock),1e4);return e.unref?.(),{context:d,release(){clearInterval(e),d.active=!1,h().closeSync(b),v(a.lock,a.owner.token),v(a.ticket,a.owner.token)}}}function A(a,b){return{context:a.context,release(){try{a.release()}finally{b()}}}}async function B(){let a=await r(),b=null;try{b=x();let d=Date.now();for(let e=0;e<2e3;e+=1){let e=z(b);if(e)return A(e,a);if(Date.now()-d>=1e4){d=Date.now();var c=b;if(!y(c.ticket))try{h().writeFileSync(c.ticket,JSON.stringify(c.owner),{encoding:"utf8",mode:384})}catch{}}await new Promise(a=>setTimeout(a,5))}throw Error("account mutation is busy; retry shortly")}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}function C(a){!function(a){let b=(0,k.BQ)("account-mutation-revision.json");if(w()!==a)throw Error("account mutation revision fence changed while locked");let c=`${b}.${process.pid}.${f().randomUUID()}.tmp`;h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});try{h().writeFileSync(c,JSON.stringify({version:1,revision:a+1})+"\n",{mode:384});let d=h().openSync(c,"r");try{h().fsyncSync(d)}finally{h().closeSync(d)}h().renameSync(c,b)}finally{h().rmSync(c,{force:!0})}}(a.revision),a.revision+=1}function D(a){let b=n.getStore();if(b?.active)return a();let c=function(){let a=function(){if(m.localHeld)throw new p("account mutation is busy in this process; retry shortly");return m.localHeld=!0,q}(),b=null;try{b=x();for(let c=0;c<2;c+=1){let c=z(b);if(c)return A(c,a)}throw new p}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}();try{return C(c.context),n.run(c.context,a)}finally{c.release()}}async function E(a){let b=n.getStore();if(b?.active)return a();let c=await B();try{return C(c.context),await n.run(c.context,a)}finally{c.release()}}},14252:(a,b,c)=>{c.d(b,{v:()=>i});var d=c(14648),e=c(55643),f=c(93812);let g=new Set(["auto","prompt","writes","approve"]);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function i(a,b=!1,c,j){let k=h(h(a)?.config),l=h(k?.mcp_servers);if(!k||!l)throw Error("config/read returned no MCP server table");let m=new Set((0,e.c1)(c)),n=null===h(l.viewer),o=n&&m.has("viewer")?{...l,viewer:(0,d.yD)()}:l,p=(0,f.sJ)(j);return{mcp_servers:Object.fromEntries(Object.entries(o).map(([a,b])=>{let c=h(b)?.default_tools_approval_mode,d="viewer"===a?"approve":"string"==typeof c&&g.has(c)?c:null;return[a,{..."viewer"===a&&n?b:{},enabled:m.has(a),...d?{default_tools_approval_mode:d}:{}}]})),features:{...d.Jj,plugins:p.length>0,multi_agent:b,realtime_conversation:!0},...p.length>0?{plugins:function(a,b){let c=new Set(Object.keys(h(a.plugins)??{}));for(let a of b)[...c].some(b=>b.split("@")[0]===a)||c.add(a);return Object.fromEntries([...c].map(a=>[a,{enabled:b.includes(a.split("@")[0])}]))}(k,p)}:{},include_apps_instructions:!1}}},14607:(a,b,c)=>{c.d(b,{A6:()=>s,N0:()=>r,OA:()=>v,_b:()=>t,d5:()=>u});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(50920),i=c(52530),j=c(4116),k=c(68574);let l=(0,h.BQ)("handoff-lineage.json"),m=null,n=null,o=null,p=!1;function q(){if(m&&n&&o)return{panes:m,children:n,conversationChildren:o};let a={};try{a=JSON.parse(e().readFileSync(l,"utf8"))}catch{}let b=function(a,b=i.pl){let c=new Map,d=new Map,e=new Map;for(let[d,e]of Object.entries(a.panes??{})){let a=Number(d);Number.isInteger(a)&&a>0&&"string"==typeof e&&b(a)&&c.set(a,e)}for(let[b,c]of Object.entries(a.children??{}))"string"==typeof c&&d.set(b,c);for(let[b,c]of Object.entries(a.conversationChildren??{}))b.startsWith("conversation_")&&c.startsWith("conversation_")&&e.set(b,c);let f=Object.keys(a.panes??{}).length+Object.keys(a.children??{}).length+Object.keys(a.conversationChildren??{}).length;return{panes:c,children:d,conversationChildren:e,dirty:c.size+d.size+e.size!==f}}(a);return m=b.panes,n=b.children,o=b.conversationChildren,b.dirty&&(p=!0),{panes:m,children:n,conversationChildren:o}}function r(a){return q().panes.get(a)??null}function s(a,b){let c=q();if(c.children.get(a)!==b){for(c.children.set(a,b);c.children.size>2e4;){let a=c.children.keys().next().value;if(void 0===a)break;c.children.delete(a)}p=!0}}function t(a){return q().children.get(a)??null}async function u(a=(0,j.tk)()){let b=q(),c=!1;await (0,k.pV)([...b.children],([d,e])=>{let f=a.conversationForPath(d),g=a.conversationForPath(e);f&&g&&b.conversationChildren.get(f.id)!==g.id&&(b.conversationChildren.set(f.id,g.id),c=!0)}),c&&(p=!0,v())}function v(){if(!p)return;p=!1;let a=q();try{e().mkdirSync(g().dirname(l),{recursive:!0}),e().writeFileSync(l,JSON.stringify({panes:Object.fromEntries([...a.panes].map(([a,b])=>[String(a),b])),children:Object.fromEntries(a.children),conversationChildren:Object.fromEntries(a.conversationChildren)}))}catch{}}},14648:(a,b,c)=>{c.d(b,{Jj:()=>u,q5:()=>n,gY:()=>q,nP:()=>p,UI:()=>E,GG:()=>w,Vw:()=>F,DV:()=>D,yD:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(77598),i=c.n(h),j=c(55643);let k="LLV_MANAGED_NATIVE_SUBAGENT_DENY=1 ",l=".llv",m=["enableAllProjectMcpServers","enabledMcpjsonServers","disabledMcpjsonServers"],n=Object.freeze(["Task","Agent","Workflow","TeamCreate","TeamDelete","SendMessage"]),o=n.join("|"),p="http://127.0.0.1:8898/api/spawn",q="LLV_SPAWN_CAPABILITY",r=`Send header x-llv-spawn-capability: $${q}.`,s=`Sub-agents are disabled on this surface. Spawn через POST ${p} with {engine, model, cwd, prompt, src: <your transcript path>, role, reviews?} and ${r} The worker then appears on the board with correct lineage.`,t=`Viewer spawn policy: avoid native sub-agent, collaboration, and background-agent features. Spawn every helper through POST ${p} with {engine, model, cwd, prompt, src: <your transcript path>, role, reviews?}. ${r} The worker appears on the board with correct lineage.`,u={plugins:!1,apps:!1,multi_agent:!1};function v(a=process.cwd()){let b=[g().resolve(a,"bin","mcp-server.mjs"),g().resolve(a,"..","..","bin","mcp-server.mjs")].find(a=>e().existsSync(a));if(!b)throw Error(`Viewer MCP launcher could not be resolved from package cwd: ${a}`);return{command:"bun",args:[b]}}function w(a,b){if(!/^[A-Za-z0-9_-]{1,128}$/.test(b))throw Error("Claude spawn policy profile id is invalid");let c=g().join(a,l,"hooks","deny-native-subagents.sh");return{settingsPath:g().join(a,l,"spawn-settings",`${b}.json`),mcpConfigPath:g().join(a,l,"spawn-mcp",`${b}.json`),hookPath:c,command:`${k}${y(c)}`}}function x(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function y(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function z(a,b,c){e().mkdirSync(g().dirname(a),{recursive:!0,mode:448});let d=g().join(g().dirname(a),`.${g().basename(a)}.${process.pid}.${i().randomUUID()}.tmp`);try{e().writeFileSync(d,b,{mode:c}),e().chmodSync(d,c),e().renameSync(d,a)}finally{e().rmSync(d,{force:!0})}}function A(a){let b;if(!e().existsSync(a))return{};try{b=JSON.parse(e().readFileSync(a,"utf8"))}catch{throw Error(`Claude settings are invalid JSON: ${a}`)}let c=x(b);if(!c)throw Error(`Claude settings must contain a JSON object: ${a}`);return c}function B(a){return Array.isArray(a)?a.filter(a=>"string"==typeof a):[]}function C(a){if(!a)return{};let b=g().resolve(a),c=b;for(let a=b;;a=g().dirname(a)){if(e().existsSync(g().join(a,".git"))){c=a;break}if(g().dirname(a)===a)break}let d=g().join(c,".mcp.json");return e().existsSync(d)?x(A(d).mcpServers)??{}:{}}function D(a,b){let c=g().join(a,".claude.json");try{let a=e().lstatSync(c);if(a.isSymbolicLink()||!a.isFile())throw Error(`Claude state path is unsafe: ${c}`)}catch(a){if("ENOENT"!==a.code)throw a}let d={};if(e().existsSync(c)){let a;try{a=JSON.parse(e().readFileSync(c,"utf8"))}catch{throw Error(`Claude state is invalid JSON: ${c}`)}let b=x(a);if(!b)throw Error(`Claude state must contain a JSON object: ${c}`);d=b}let f=void 0===d.projects?{}:x(d.projects);if(!f)throw Error(`Claude state projects must contain a JSON object: ${c}`);let h=void 0===f[b]?{}:x(f[b]);if(!h)throw Error(`Claude project state must contain a JSON object: ${b}`);z(c,JSON.stringify({...d,hasCompletedOnboarding:!0,bypassPermissionsModeAccepted:!0,projects:{...f,[b]:{...h,hasTrustDialogAccepted:!0,hasCompletedProjectOnboarding:!0}}},null,2)+"\n",384)}function E(a,b={}){var c,d;let f,h=g().join(a,"settings.json"),l=w(a,b.profileId??i().randomUUID()),n=e().existsSync(h),p=n?A(h):b.baseSettingsPath?A(b.baseSettingsPath):{},q=n?{}:p;if(!b.allowSubagents&&!0===p.disableAllHooks)throw Error("Claude settings disableAllHooks prevents the Viewer spawn policy from enforcing native sub-agent denial");if(!b.allowSubagents&&!0===p.allowManagedHooksOnly)throw Error("Claude settings allowManagedHooksOnly prevents the Viewer spawn policy from enforcing native sub-agent denial");let r=void 0===p.hooks?{}:x(p.hooks);if(!r)throw Error("Claude settings hooks must contain a JSON object");let t=function(a){if(void 0===a)return[];if(!Array.isArray(a))throw Error("Claude settings hooks.PreToolUse must be an array");return a.flatMap(a=>{let b=x(a);if(!b||!Array.isArray(b.hooks))return[a];let c=b.hooks.filter(a=>{var b;return!("string"==typeof(b=x(a)?.command)&&b.startsWith(k))});return c.length?[{...b,hooks:c}]:[]})}(r.PreToolUse);if(!b.allowSubagents){let a=`#!/bin/sh
83
124
  printf '%s\\n' ${y(s)} >&2
84
125
  exit 2
85
- `;z(l.hookPath,a,448),t.push({matcher:o,hooks:[{type:"command",command:l.command}]})}let u=b.allowSubagents?q:{...q,disableAllHooks:!1,allowManagedHooksOnly:!1},D=(c=b.cwd,d=b.mcpServers,f=function(a,b,c=g().join(a,".claude.json")){let d=e().existsSync(c)?A(c):{},f=x(d.mcpServers)??{},h=x(d.projects),i=b&&h?x(h[b]):null,j=C(b),k=x(i?.mcpServers)??{};return{...f,...j,...k}}(a,c,b.mcpStatePath),Object.fromEntries((0,j.c1)(d).flatMap(a=>{let b=x(f[a])??("viewer"===a?{type:"stdio",...v()}:null);return b?[[a,b]]:[]}))),F=new Set(Object.keys(D)),G=Object.keys(C(b.cwd)).filter(a=>!F.has(a)),H=Object.fromEntries(Object.entries(u).filter(([a])=>"mcpServers"!==a)),I=Object.fromEntries(m.flatMap(a=>void 0===p[a]?[]:[[a,p[a]]]));void 0!==p.enabledMcpjsonServers&&(I.enabledMcpjsonServers=B(p.enabledMcpjsonServers).filter(a=>F.has(a)));let J=[...new Set([...B(p.disabledMcpjsonServers),...G])];return J.length>0&&(I.disabledMcpjsonServers=J),z(l.settingsPath,JSON.stringify({...H,...I,hooks:{...r,PreToolUse:t}},null,2)+"\n",384),z(l.mcpConfigPath,JSON.stringify({mcpServers:D},null,2)+"\n",384),l}function F(a,b){return"codex"!==a?b:[b.trim(),t].filter(Boolean).join("\n\n")}},16777:(a,b,c)=>{c.d(b,{Q:()=>l,g:()=>t});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(79866);let l=7;function m(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function n(a){return"string"==typeof a&&a.trim()?a:null}function o(a,b){return Array.isArray(a)?[...new Set(a.flatMap(a=>{let c=n(m(a)?.[b]);return c?[c]:[]}))].sort():[]}function p(a){try{return JSON.parse(g().readFileSync(i().join((0,j.Pn)(),a),"utf8"))}catch{return null}}let q=["worktree-map.json","project-aliases.json"],r=null;function s(a,b){try{let c=g().statSync(i().join(a,b),{bigint:!0});return`${b}:${c.mtimeNs}:${c.size}`}catch{return`${b}:missing`}}function t(){let a=(0,j.Pn)(),b=function(a){let b=i().join(a,"state.sqlite"),c=[a],d=(0,k.Gw)(b,["flows","workflows"]);for(let[b,e]of[["flows","flows.json"],["workflows","workflows.json"]]){let f=d.get(b)??null;c.push(null===f?s(a,e):`${b}:sqlite:${f}`)}for(let b of q)c.push(s(a,b));return c.join("|")}(a);if(r?.signature===b)return r.key;let c=function(a){let b,c,d=e().createHash("sha1");d.update(a),d.update(`\0resolver-version\0${l}`);let f=i().join(a,"state.sqlite"),h=(0,k.M)(f,["flows","workflows"]),j=h.get("flows")??null,q=h.get("workflows")??null;d.update("\0flows\0"),d.update(JSON.stringify((b=m(null===j?p("flows.json"):{flows:j}))&&Array.isArray(b.flows)?b.flows.flatMap(a=>{let b=m(a),c=n(b?.project),d=n(b?.cwd);return b&&c&&d?[[c,d,n(b.implementerPath),o(b.rounds,"reviewerPath")]]:[]}):[])),d.update("\0workflows\0"),d.update(JSON.stringify((c=m(null===q?p("workflows.json"):{workflows:q}))&&Array.isArray(c.workflows)?c.workflows.flatMap(a=>{let b=m(a),c=n(b?.project),d=n(b?.repoDir),e=n(b?.worktreeDir);return b&&c&&(d||e)?[[c,d,e,o(b.stageRuns,"agentPath"),n(b.fixerPath)]]:[]}):[])),d.update("\0worktree-map.json\0");try{d.update(g().readFileSync(i().join(a,"worktree-map.json")))}catch{d.update("<missing>")}d.update("\0project-aliases.json\0");try{d.update(g().readFileSync(i().join(a,"project-aliases.json")))}catch{d.update("<missing>")}return d.digest("hex")}(a);return r={signature:b,key:c},c}},17295:(a,b,c)=>{c.d(b,{mq:()=>i,w0:()=>m,h2:()=>l});var d=c(77598),e=c(73024),f=c(76760),g=c.n(f),h=c(50920);let i="LLV_TELEGRAM_MCP_TOKEN";class j extends Error{constructor(a){super(`Telegram session storage is unsafe: ${a}`),this.name="UnsafeTelegramSessionError"}}function k(){return(0,h.BQ)("telegram")}function l(){return g().join(k(),"session.json")}function m(){try{let a=function(a){let b,c,g,h,i,j="function"==typeof process.getuid?process.getuid():null;try{b=e.lstatSync(a)}catch(a){if(a?.code==="ENOENT")return{status:"missing"};return{status:"unsafe",detail:"cannot inspect telegram directory"}}if(b.isSymbolicLink()||!b.isDirectory())return{status:"unsafe",detail:"telegram directory is unsafe"};if((63&b.mode)!=0||null!==j&&b.uid!==j)return{status:"unsafe",detail:"telegram directory ownership or permissions are unsafe"};let k=f.join(a,"session.json"),l=f.join(a,"connector-token");try{c=e.lstatSync(k)}catch(a){if(a?.code==="ENOENT")return{status:"missing"};return{status:"unsafe",detail:"cannot inspect session file"}}if(c.isSymbolicLink()||!c.isFile()||(63&c.mode)!=0||null!==j&&c.uid!==j)return{status:"unsafe",detail:"session file ownership or permissions are unsafe"};try{g=JSON.parse(e.readFileSync(k,"utf8"))}catch{return{status:"unsafe",detail:"session data is unreadable"}}if(!g||"object"!=typeof g||1!==g.version||"string"!=typeof g.credentialRef||"string"!=typeof g.sessionString||!g.sessionString||"string"!=typeof g.savedAt||"string"!=typeof g.connectorTokenSha256)return{status:"unsafe",detail:"session data is invalid"};try{h=e.lstatSync(l)}catch{return{status:"unsafe",detail:"connector token is missing or unreadable"}}if(h.isSymbolicLink()||!h.isFile()||(63&h.mode)!=0||null!==j&&h.uid!==j)return{status:"unsafe",detail:"connector token ownership or permissions are unsafe"};try{i=e.readFileSync(l,"utf8").trim()}catch{return{status:"unsafe",detail:"connector token is unreadable"}}let m=d.createHash("sha256").update(i).digest("hex");return/^[A-Za-z0-9_-]{43}$/.test(i)&&m===g.connectorTokenSha256?{status:"valid",sessionFile:g,connectorToken:i}:{status:"unsafe",detail:"connector token is invalid"}}(k());if("missing"===a.status)return null;if("unsafe"===a.status)throw new j(a.detail);let b=a.sessionFile;return{version:1,credentialRef:b.credentialRef,connectorToken:a.connectorToken,sessionString:b.sessionString,savedAt:b.savedAt}}catch(a){if(a instanceof j)throw a;throw new j("cannot read session storage")}}RegExp("^incoming_feed(-[0-9a-f]{16})?\\.jsonl$")},20707:(a,b,c)=>{c.d(b,{FX:()=>t,OQ:()=>v,fX:()=>D,pu:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(6466),k=c(50920),l=c(68574),m=c(65465),n=c(69611),o=c(96561),p=c(24534),q=c(16777);let r=-1/0,s=globalThis;function t(a){let b=(s.__llvProjectCatalogPublicationGeneration??0)+1;if(s.__llvProjectCatalogPublicationGeneration=b,!a)return{publication:b,persistence:null};let c=(s.__llvProjectCatalogPersistenceGeneration??0)+1;return s.__llvProjectCatalogPersistenceGeneration=c,{publication:b,persistence:c}}function u(a){return s.__llvProjectCatalogPublicationGeneration===a.publication}function v(a,b,c){return!!u(b)&&!!c&&((0,o.ru)(a),!0)}function w(){return(0,k.BQ)("project-catalog.json")}function x(a,b){return"codex-sessions"===a||"claude-projects"===a&&("session"===b||"subagent"===b)}function y(a){return"codex-sessions"===a?"codex":"claude-projects"===a?"claude":"shell"}function z(a){return"codex-sessions"===a?"codex":"claude-projects"===a?"claude":"plain"}function A(a,b){let c=i().basename(a.path);return"subagent"===b?"Subagent "+c.slice(6).split(".")[0]:"codex-sessions"===a.rootName?"Codex session":"claude-projects"===a.rootName?"Claude session":"Background task "+c.split(".")[0]}function B(a,b){a.files[b.path]={summaryVersion:b.summaryVersion,summaryIncomplete:b.summaryIncomplete,rootName:b.rootName,size:b.size,mtimeMs:b.mtimeMs,sidecarSize:b.sidecarSize,sidecarMtimeMs:b.sidecarMtimeMs,stateKey:b.stateKey,project:b.project,projectName:b.projectName,projectUnresolved:b.projectUnresolved,projectRoot:b.projectRoot,kind:b.kind,session:b.session,worktree:b.worktree,cwd:b.cwd??null,sessionStartedAt:b.sessionStartedAt??null,nativeParentThreadId:b.nativeParentThreadId??null,nativeForkSourceThreadId:b.nativeForkSourceThreadId??null,title:b.titleCached?b.title:void 0,engine:b.engine,fmt:b.fmt}}function C(a){return"claude-projects"!==a.rootName&&"claude-tasks"!==a.rootName?null:i().relative(a.root,a.path).split(i().sep)[0]||null}async function D(a,b={}){let c=!1!==b.persist||!0===b.persistIndex,d=b.scanToken??t(c),f=function(){try{let a=JSON.parse(g().readFileSync(w(),"utf8"));if(1!==a.version&&2!==a.version||!a.files||"object"!=typeof a.files||Array.isArray(a.files))return{version:2,resolutionVersion:q.Q,files:{}};let b={};for(let[c,d]of Object.entries(a.files)){if(!d||"object"!=typeof d||Array.isArray(d)||"codex-sessions"!==d.rootName&&"claude-projects"!==d.rootName&&"claude-tasks"!==d.rootName||"number"!=typeof d.size||"number"!=typeof d.mtimeMs||"string"!=typeof d.stateKey||"string"!=typeof d.project||void 0!==d.projectName&&"string"!=typeof d.projectName||void 0!==d.projectUnresolved&&!0!==d.projectUnresolved||void 0!==d.projectRoot&&null!==d.projectRoot&&"string"!=typeof d.projectRoot||"string"!=typeof d.kind)continue;let a="codex"===d.engine||"claude"===d.engine||"shell"===d.engine?d.engine:void 0,e="codex"===d.fmt||"claude"===d.fmt||"plain"===d.fmt?d.fmt:void 0,f="string"==typeof d.cwd?d.cwd:null===d.cwd?null:void 0,g="string"==typeof d.sessionStartedAt?d.sessionStartedAt:null===d.sessionStartedAt?null:void 0,h="string"==typeof d.nativeParentThreadId?d.nativeParentThreadId:null===d.nativeParentThreadId?null:void 0,i="string"==typeof d.nativeForkSourceThreadId?d.nativeForkSourceThreadId:null===d.nativeForkSourceThreadId?null:void 0,j="number"==typeof d.sidecarSize?d.sidecarSize:null===d.sidecarSize?null:void 0,k="number"==typeof d.sidecarMtimeMs?d.sidecarMtimeMs:null===d.sidecarMtimeMs?null:void 0,l=4===d.summaryVersion&&"string"==typeof d.title&&"string"==typeof d.projectName&&void 0!==a&&void 0!==e&&void 0!==f&&void 0!==g&&void 0!==h&&void 0!==i&&void 0!==d.projectRoot&&void 0!==j&&void 0!==k;b[c]={summaryVersion:l?4:void 0,summaryIncomplete:!l&&!0===d.summaryIncomplete||void 0,rootName:d.rootName,size:d.size,mtimeMs:d.mtimeMs,sidecarSize:j,sidecarMtimeMs:k,stateKey:d.stateKey,project:d.project,projectName:"string"==typeof d.projectName?d.projectName:(0,n.rj)(d.project),projectUnresolved:!0===d.projectUnresolved||void 0,projectRoot:"string"==typeof d.projectRoot?d.projectRoot:null===d.projectRoot?null:void 0,kind:d.kind,session:x(d.rootName,d.kind),worktree:"string"==typeof d.worktree?d.worktree:void 0,cwd:f,sessionStartedAt:g,nativeParentThreadId:h,nativeForkSourceThreadId:i,title:"string"==typeof d.title?d.title:void 0,engine:a,fmt:e}}return{version:2,resolutionVersion:a.resolutionVersion??0,files:b}}catch{return{version:2,resolutionVersion:q.Q,files:{}}}}(),h=(0,q.g)(),k={},o=new Map,u=new Map,E=new Map,F=new Map;await (0,l.pV)(a,a=>{F.set(a.path,f.files[a.path]?.project)});let G=await (0,l.j0)(a,a=>(function(a,b,c){let d=b.files[a.path],e=(0,p.tS)(a.rootName,a.path,a.st);if(e.complete&&d?.summaryVersion===4&&d.size===a.st.size&&d.mtimeMs===a.st.mtimeMs&&d.sidecarSize===e.sidecarSize&&d.sidecarMtimeMs===e.sidecarMtimeMs&&void 0!==d.projectRoot&&(b.resolutionVersion!==q.Q||d.stateKey!==c)){let e=(0,p.xn)(a.rootName,a.root,a.path,{project:d.project,projectName:d.projectName??(0,n.rj)(d.project),projectUnresolved:d.projectUnresolved,worktree:d.worktree,cwd:d.cwd??void 0,sessionStartedAt:d.sessionStartedAt,nativeParentThreadId:d.nativeParentThreadId,nativeForkSourceThreadId:d.nativeForkSourceThreadId,projectRoot:d.projectRoot,title:d.title??A(a,d.kind),engine:d.engine??y(a.rootName),kind:d.kind,fmt:d.fmt??z(a.rootName)},c),f={...d,path:a.path,stateKey:c,project:e.project,projectName:e.projectName,projectUnresolved:e.projectUnresolved,projectRoot:e.projectRoot??null,worktree:e.worktree,cwd:e.cwd,session:x(a.rootName,e.kind),title:e.title,titleCached:!0,engine:e.engine,kind:e.kind,fmt:e.fmt};return B(b,f),f}if(b.resolutionVersion===q.Q&&e.complete&&d&&d.size===a.st.size&&d.mtimeMs===a.st.mtimeMs&&(4!==d.summaryVersion||d.sidecarSize===e.sidecarSize&&d.sidecarMtimeMs===e.sidecarMtimeMs)&&d.stateKey===c&&void 0!==d.projectRoot){if(4!==d.summaryVersion){let b=(0,p.CL)(a.rootName,a.root,a.path,a.st,c,e),f=b.description,g=!0===d.summaryIncomplete;return{...d,summaryVersion:b.complete?4:void 0,summaryIncomplete:!!g&&!b.complete||void 0,sidecarSize:e.sidecarSize,sidecarMtimeMs:e.sidecarMtimeMs,path:a.path,project:g?f.project||"other":d.project,projectName:g?f.projectName:d.projectName??(0,n.rj)(d.project),projectUnresolved:g?f.projectUnresolved:d.projectUnresolved,projectRoot:g?f.projectRoot??null:d.projectRoot,kind:g?f.kind:d.kind,session:x(a.rootName,g?f.kind:d.kind),worktree:g?f.worktree:d.worktree,cwd:f.cwd,sessionStartedAt:f.sessionStartedAt,nativeParentThreadId:f.nativeParentThreadId,nativeForkSourceThreadId:f.nativeForkSourceThreadId,title:f.title,titleCached:!0,engine:f.engine,fmt:f.fmt}}return{path:a.path,...d,session:x(a.rootName,d.kind),cwd:d.cwd??void 0,sessionStartedAt:d.sessionStartedAt,nativeParentThreadId:d.nativeParentThreadId,nativeForkSourceThreadId:d.nativeForkSourceThreadId,title:d.title??A(a,d.kind),titleCached:"string"==typeof d.title,engine:d.engine??y(a.rootName),fmt:d.fmt??z(a.rootName)}}let f=(0,p.CL)(a.rootName,a.root,a.path,a.st,c,e),g=f.description,h=f.complete||d?.summaryVersion!==4?void 0:d,i={summaryVersion:f.complete?4:void 0,summaryIncomplete:!f.complete||void 0,path:a.path,rootName:a.rootName,size:a.st.size,mtimeMs:a.st.mtimeMs,sidecarSize:e.sidecarSize,sidecarMtimeMs:e.sidecarMtimeMs,stateKey:c,project:h?.project??(g.project||"other"),projectName:h?.projectName??g.projectName,projectUnresolved:h?.projectUnresolved??g.projectUnresolved,projectRoot:h?h.projectRoot??null:g.projectRoot??null,kind:g.kind,session:x(a.rootName,g.kind),worktree:h?.worktree??g.worktree,cwd:h?h.cwd??void 0:g.cwd,sessionStartedAt:h?h.sessionStartedAt:g.sessionStartedAt,nativeParentThreadId:h?h.nativeParentThreadId:g.nativeParentThreadId,nativeForkSourceThreadId:h?h.nativeForkSourceThreadId:g.nativeForkSourceThreadId,title:g.title,titleCached:!0,engine:g.engine,fmt:g.fmt};return B(b,i),i})(a,f,h)),H=!1!==b.complete&&G.every(a=>4===a.summaryVersion),I=new Map;await (0,l.pV)(a,(a,b)=>{let c=G[b],d="claude-projects"===c.rootName&&c.session?C(a):null;d&&I.set(d,c.project)}),await (0,l.pV)(a,(b,c)=>{let d=C(a[c]),e=d?I.get(d):void 0;e&&(G[c].project=e)});let J=new Map;await (0,l.pV)(G,a=>{k[a.path]={summaryVersion:a.summaryVersion,summaryIncomplete:a.summaryIncomplete,rootName:a.rootName,size:a.size,mtimeMs:a.mtimeMs,sidecarSize:a.sidecarSize,sidecarMtimeMs:a.sidecarMtimeMs,stateKey:a.stateKey,project:a.project,projectName:a.projectName,projectUnresolved:a.projectUnresolved,projectRoot:a.projectRoot,kind:a.kind,session:a.session,worktree:a.worktree,cwd:a.cwd??null,sessionStartedAt:a.sessionStartedAt??null,nativeParentThreadId:a.nativeParentThreadId??null,nativeForkSourceThreadId:a.nativeForkSourceThreadId??null,title:a.titleCached?a.title:void 0,engine:a.engine,fmt:a.fmt};let c=F.get(a.path);if(c&&c!==a.project){let b=J.get(c)??new Set;b.add(a.project),J.set(c,b)}let d=a.project||"other";E.set(a.path,d);let e=o.get(d);if(e||(e={project:d,displayName:a.projectName??(0,n.rj)(d),smt:0,conversations:0},o.set(d,e)),e.smt=Math.max(e.smt,a.mtimeMs/1e3),a.session&&(e.conversations+=1),a.projectRoot&&!b.excludedSummaryPaths?.has(a.path)){let b=u.get(d)??new Map,c=b.get(a.projectRoot)??{count:0,newest:0};c.count+=1,c.newest=Math.max(c.newest,a.mtimeMs),b.set(a.projectRoot,c),u.set(d,b)}}),await (0,l.pV)([...u],([a,b])=>{let c=[...b].sort(([a,b],[c,d])=>d.count-b.count||d.newest-b.newest||a.localeCompare(c))[0]?.[0];c&&(o.get(a).projectRoot=c)}),await (0,l.pV)([...b.excludedSummaryPaths??[]],a=>{let b=k[a],c=b?o.get(b.project||"other"):void 0;b?.session&&c&&c.conversations>0&&(c.conversations-=1)});let K=[],L=new Map;await (0,l.pV)(G,(b,c)=>{L.set(b.path,{project:b.project||"other",projectName:b.projectName??(0,n.rj)(b.project||"other"),projectUnresolved:b.projectUnresolved,worktree:b.worktree,cwd:b.cwd??void 0,sessionStartedAt:b.sessionStartedAt,nativeParentThreadId:b.nativeParentThreadId,nativeForkSourceThreadId:b.nativeForkSourceThreadId,projectRoot:b.projectRoot,title:b.title,engine:b.engine,kind:b.kind,fmt:b.fmt}),b.session&&("codex"===b.engine||"claude"===b.engine)&&K.push({path:b.path,root:b.rootName,name:i().relative(a[c].root,b.path),project:b.project||"other",projectName:b.projectName,projectUnresolved:b.projectUnresolved,worktree:b.worktree,title:b.title,firstPrompt:"",engine:b.engine,kind:b.kind,fmt:b.fmt,mtime:b.mtimeMs/1e3,size:b.size})});let M=null!==d.persistence&&s.__llvProjectCatalogPersistenceGeneration===d.persistence;if(v(K,d,H),M&&c&&H){let a=!0;if(!1!==b.persist)try{let b=function(a,b){let c=new Map,d=[];for(let[e,f]of a){if(1!==f.size){d.push(e);continue}let g=f.values().next().value,h=new Set([e]);for(;g&&(b.get(g)?.conversations??0)===0;){if(h.has(g)){g=void 0;break}h.add(g);let b=a.get(g);if(b?.size!==1)break;g=b.values().next().value}g&&g!==e&&(b.get(g)?.conversations??0)>0&&c.set(e,g)}return{migrations:c,conflicts:d}}(J,o);if(b.conflicts.length>0)throw Error("ambiguous catalog project identity");let c=b.migrations,d=[...c].map(([a,b])=>({source:a,target:b,displayName:o.get(b)?.displayName??(0,n.rj)(b)})),e=(0,m.JC)(),f=e.conflicts.length;for(let a of e.registrations){let b=c.get(a.source);if(b&&b!==a.target){f+=1;continue}c.set(a.source,a.target),d.push(a)}f>0&&console.error(`[project catalog] ${f} durable project alias source(s) unresolved; persisting the clean batch and retrying them on a later scan`),(a=(0,m.YX)(d))&&(a=(0,j.aM)(c)),a&&(a=(0,m.oh)(d))}catch{a=!1}a?function(a){let b,c="create state directory",d=w();try{let f=w();d=f,g().mkdirSync(i().dirname(f),{recursive:!0,mode:448}),g().chmodSync(i().dirname(f),448),b=i().join(i().dirname(f),`.${i().basename(f)}.${process.pid}.${e().randomUUID()}.tmp`),c="write temporary index",d=b,g().writeFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384}),c="rename temporary index",d=f,g().renameSync(b,f)}catch(a){if(void 0!==b)try{g().unlinkSync(b)}catch{}!function(a,b,c){let d=Date.now();if(d-r<6e4)return;r=d;let e=c instanceof Error?`${c.message}${"code"in c&&c.code?` (${String(c.code)})`:""}`:String(c);console.error(`[project catalog] ${a} failed for ${b}: ${e}; a later scan will retry`)}(c,d,a)}}({version:2,resolutionVersion:q.Q,files:k}):console.error("[project catalog] board project migration deferred; a later scan will retry")}return{projectCatalog:[...o.values()].filter(a=>a.conversations>0).sort((a,b)=>b.smt-a.smt||a.project.localeCompare(b.project)),projectByPath:E,conversationCatalog:K,summaryByPath:L,complete:H}}},24125:(a,b,c)=>{function d(a){return!!a.migratedTo}function e(a){return a.conversationId?"#c="+encodeURIComponent(a.conversationId):"#f="+encodeURIComponent(a.path)}function f(a,b){let c=null,e=null;for(let f of a)if(f.conversationId===b){if(f.path.startsWith("spawn:")){c=c??f;continue}if(e=e??f,!d(f))return f}return e??c}function g(a,b){let c=new Set,d=a;for(;void 0!==b[d]&&!c.has(d);)c.add(d),d=b[d];return d}function h(a){return a.some(d)?a.filter(a=>!d(a)):a}c.d(b,{H8:()=>g,Zo:()=>e,dN:()=>f,tB:()=>h})},24534:(a,b,c)=>{c.d(b,{CL:()=>ah,D$:()=>X,Oc:()=>P,hY:()=>W,ot:()=>V,q0:()=>ai,tS:()=>y,xn:()=>ag});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(50920),i=c(65465),j=c(79866),k=c(69611),l=c(26200),m=c(94284),n=c(89831),o=c(47985),p=c(38849),q=c(16777);(0,m.E)("meta-v4").clear(),(0,m.E)("title-v2").clear(),(0,m.E)("meta-v6").clear();let r=(0,m.E)("meta-transcript-v7");(0,m.E)("project-overlay-v1").clear();let s=(0,m.E)("project-overlay-v2"),t=(0,m.E)("title-v5");(0,m.E)("conversation-search-v1").clear(),(0,m.E)("codex-project-v5").clear();let u=(0,m.E)("repo-path-from-slug-v1"),v=(0,m.E)("claude-cwd-v3"),w=(0,m.E)("session-started-at-v1"),x=o.Eu;function y(a,b,c){let d="claude-projects"===a&&g().basename(b).startsWith("agent-")&&b.endsWith(".jsonl")?b.slice(0,-6)+".meta.json":null;if(!d)return{size:c.size,mtimeMs:c.mtimeMs,sidecarSize:null,sidecarMtimeMs:null,complete:!0};try{let a=e().statSync(d);return{size:c.size,mtimeMs:c.mtimeMs,sidecarSize:a.size,sidecarMtimeMs:a.mtimeMs,complete:!0}}catch(a){return{size:c.size,mtimeMs:c.mtimeMs,sidecarSize:null,sidecarMtimeMs:null,complete:"ENOENT"===a.code}}}let z=["<","#","Caveat:","{","[","This session is being continued"];function A(a){return(0,i.G$)(a)}function B(a){let b=g().sep+".claude"+g().sep+"worktrees"+g().sep,c=a.indexOf(b);if(c<0)return null;let d=a.slice(c+b.length).split(g().sep).filter(Boolean)[0];return d?{repo:a.slice(0,c),worktree:d}:null}function C(a){let b=a.split(g().sep);for(let a=1;a<b.length-1;a++){if("worktrees"!==b[a]&&".worktrees"!==b[a])continue;if(".claude"===b[a-1]||".codex"===b[a-1])break;let c=b[a+1];if(!c)break;return{repo:b.slice(0,a).join(g().sep)||g().sep,worktree:c}}return null}function D(a){let b=u.get(a);if(b&&b[0]>Date.now())return b[1];if(!a.startsWith("-"))return null;let c=[],d=[{pathname:g().parse(g().resolve(g().sep)).root,encoded:""}];for(let b=0;b<32&&d.length>0&&c.length<16;b+=1){let b=[];for(let f of d){let d;try{d=e().readdirSync(f.pathname,{withFileTypes:!0})}catch{continue}for(let h of d){let d=f.encoded+"-"+h.name.replace(/[^a-zA-Z0-9]/g,"-");if(d!==a&&!a.startsWith(d+"-"))continue;let i=g().join(f.pathname,h.name),j=h.isDirectory();if(!j&&h.isSymbolicLink())try{j=e().statSync(i).isDirectory()}catch{j=!1}j&&(d===a?c.push(i):b.push({pathname:i,encoded:d}))}}d=b.slice(0,64)}let f=c.filter(R),h=1===f.length?f[0]:1===c.length?c[0]:null;return u.set(a,[Date.now()+1e4,h]),h}function E(a){let b=g().sep+".codex"+g().sep+"worktrees"+g().sep,c=a.indexOf(b);if(c<0)return null;let[d,e]=a.slice(c+b.length).split(g().sep).filter(Boolean);return d&&e?{repo:"",worktree:d,projectHint:e}:null}let F=(0,m.E)("worktree-git"),G=(0,m.E)("project-info-cwd-v2"),H=(0,m.E)("persisted-project-v2");function I(a){return{project:k.Mv,displayName:k.MO,unresolved:!0,...a?{worktree:a}:{}}}function J(a,b,c){let d=(0,i.G$)(a);if(d===a&&d!==k.Mv&&!(0,k.z)(d))return I(b);let e=c?(0,k.im)(c):null,f=e?.project===d?e.displayName:(0,i.E2)().displayNames[d]??(0,k.rj)(d);return{project:d,displayName:f,...d===k.Mv?{unresolved:!0}:{},...b?{worktree:b}:{},...c?{repo:c}:{}}}let K="worktree-map.json",L=null,M=!1;function N(){let a=(0,h.Pn)();if(L&&L.dir===a)return L.map;let b=new Map;try{let c=JSON.parse(e().readFileSync(g().join(a,K),"utf8"));for(let[a,d]of Object.entries(c))"string"==typeof d?.repo&&"string"==typeof d?.worktree&&b.set(a,{repo:d.repo,worktree:d.worktree})}catch{}return L={dir:a,map:b},M=!1,b}function O(a){return N().get(a)??null}function P(){if(M&&L){M=!1;try{e().mkdirSync(L.dir,{recursive:!0}),e().writeFileSync(g().join(L.dir,K),JSON.stringify(Object.fromEntries(L.map)))}catch{}}}function Q(a){var b;let c,d,f=F.get(a);if(f&&f[0]>Date.now())return f[1];let h=null;try{let b=g().join(a,".git");e().lstatSync(b).isFile()&&(h=function(a,b){let c=/^gitdir:\s*(.+?)\s*$/m.exec(b)?.[1];if(!c)return null;let d=g().resolve(a,c).split(g().sep),e=d.lastIndexOf("worktrees"),f=e>=0?d[e+1]:void 0;return f&&".git"===d[e-1]?{repo:d.slice(0,e-1).join(g().sep)||g().sep,worktree:f}:null}(a,e().readFileSync(b,"utf8")))}catch{}return F.set(a,[Date.now()+6e4,h]),h&&(b=h,(d=(c=N()).get(a))&&d.repo===b.repo&&d.worktree===b.worktree||(c.set(a,b),M=!0)),h}function R(a){try{return e().lstatSync(g().join(a,".git")),!0}catch{return!1}}function S(a,b){if(null!==b)return b;let c=function(a){try{return JSON.parse(e().readFileSync(g().join((0,h.Pn)(),a),"utf8"))}catch{return null}}(`${a}.json`);return Array.isArray(c?.[a])?c[a]:[]}function T(a,b,c=!1){if("string"!=typeof a||!a.trim()||"string"!=typeof b||!b.trim())return null;let d=A(b.replace(/[^a-zA-Z0-9]/g,"-")),e=c||d!==a?g().basename(b):void 0,f=(0,k.V5)(b);return{project:a,worktree:e,...f?{repo:f}:{}}}function U(a=(0,q.g)()){let b=(0,h.Pn)(),c=H.get("state");if(c&&c[0]>Date.now()&&c[1]===b&&c[2]===a)return c[3];let d=new Map,e=new Map,f=new Map,i=(a,b)=>{b&&"string"==typeof a&&a.trim()&&e.set(a,b),((a,b)=>{if(!b||"string"!=typeof a||!a.endsWith(".jsonl"))return;let c=g().basename(g().dirname(a));c.startsWith("-")&&f.set(c,b)})(a,b)},k=(0,j.M)(g().join(b,"state.sqlite"),["flows","workflows"]);for(let a of S("flows",k.get("flows")??null)){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=T(a.project,a.cwd);if(b&&"string"==typeof a.cwd)for(let c of(d.set(a.cwd,b),i(a.implementerPath,b),Array.isArray(a.rounds)?a.rounds:[]))!c||"object"!=typeof c||Array.isArray(c)||i(c.reviewerPath,b)}for(let a of S("workflows",k.get("workflows")??null)){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=T(a.project,a.repoDir);b&&"string"==typeof a.repoDir&&d.set(a.repoDir,b);let c=T(a.project,a.worktreeDir,!0);for(let e of(c&&"string"==typeof a.worktreeDir&&d.set(a.worktreeDir,c),Array.isArray(a.stageRuns)?a.stageRuns:[]))!e||"object"!=typeof e||Array.isArray(e)||i(e.agentPath,c??b);i(a.fixerPath,c??b)}let l={byCwd:d,byPath:e,bySlug:f};return H.set("state",[Date.now()+1e4,b,a,l]),l}function V(a,b){if(!a.trim())return null;let c=b??(0,q.g)(),d=G.get(a);if(d&&d[0]>Date.now()&&d[1]===c)return d[2];let e=Z(a);if(e)return G.set(a,[Date.now()+1e4,c,e]),e;let f=E(a),g=B(a)??C(a)??(f?Q(a)??f:Q(a));if(!g&&!R(a)&&!(g=O(a))){let b=U(c).byCwd.get(a);if(b){let d=J(b.project,b.worktree,b.repo);return G.set(a,[Date.now()+1e4,c,d]),d}}let h=()=>{let b=(0,k.NP)(a);return b?{project:b.project,displayName:b.displayName,...g?.worktree?{worktree:g.worktree}:{}}:I(g?.worktree)},i=g?.repo||(0,k.V5)(a);if(!i){let b=f?.projectHint?J(f.projectHint,g?.worktree):h();return G.set(a,[Date.now()+1e4,c,b]),b}let j=(0,k.im)(i),l=j?{project:j.project,displayName:j.displayName,worktree:g?.worktree,repo:i}:h();return G.set(a,[Date.now()+1e4,c,l]),l}function W(a){return V(a)?.project??null}function X(a){let b=Z(a);if(b)return b.repo;let c=B(a)??C(a)??(E(a)?Q(a)??E(a):null)??Q(a)??O(a);return c?.repo||(0,k.V5)(a)||void 0}function Y(a){let b="--codex-worktrees-",c=null,d=1/0;for(let e of["--claude-worktrees-",b,"--worktrees-"]){let b=a.indexOf(e);b>=0&&b<d&&(c=e,d=b)}if(!c||!Number.isFinite(d))return null;let e=a.slice(d+c.length);if(c===b){let a=e.indexOf("-");if(a<=0)return null;let b=e.slice(0,a),c=e.slice(a+1),d=["--claude-worktrees-","--codex-worktrees-","--worktrees-","-worktrees-"].map(a=>c.indexOf(a)).filter(a=>a>=0).sort((a,b)=>a-b)[0],f=void 0===d?c:c.slice(0,d);return f?{project:f,worktree:b}:null}let f=["--claude-worktrees-","--codex-worktrees-","--worktrees-","-worktrees-"].map(a=>e.indexOf(a)).filter(a=>a>=0).sort((a,b)=>a-b)[0],g=void 0===f?e:e.slice(0,f);if(!g)return null;let h=a.slice(0,d),i=A(h);return i?{project:i,worktree:g,repo:D(h)??void 0}:null}function Z(a){let b=a.split(g().sep),c=b.findIndex(a=>/^claude-\d+$/.test(a)),d=c>=0?b[c+1]:void 0,e=c>=0?b[c+2]:void 0;if(!d||!e||"scratchpad"!==b[c+3])return null;let f=Y(d);if(f?.repo){let a=(0,k.im)(f.repo);if(a)return{...a,worktree:f.worktree,repo:f.repo}}if(f)return J(f.project,f.worktree,f.repo);let h=D(d);if(h){let a=(0,k.im)(h);if(a)return{...a,repo:h}}let i=A(d);return i?J(i):null}function $(a){let b="string"==typeof a?a.trim():"";return b&&!z.some(a=>b.startsWith(a))?b:null}function _(a,b,c){return b.size<=a.size||!c.complete||!c.value||c.value.read<a.headBytes||(0,o.HL)(c.value.bytes.subarray(0,a.headBytes))!==a.headFingerprint||null===a.value&&a.headBytes<x?null:{size:b.size,mtimeMs:b.mtimeMs,value:a.value,headBytes:c.value.read,headFingerprint:(0,o.HL)(c.value.bytes)}}function aa(a,b,c){return{size:a.size,mtimeMs:a.mtimeMs,value:c,headBytes:b.read,headFingerprint:(0,o.HL)(b.bytes)}}function ab(a,b){let c=v.get(a);if(c?.size===b.size&&c.mtimeMs===b.mtimeMs)return{value:c.value,complete:!0,headPreserved:!0};let d=(0,o.zy)(a,b.size,b.mtimeMs,{maxBytes:x});if(!d.complete||!d.value)return{value:c?.value??null,complete:!1,headPreserved:!1};if(c){let e=_(c,b,d);if(e)return v.set(a,e),{value:e.value,complete:!0,headPreserved:!0}}let e=function(a){for(let b of a)try{let a=JSON.parse(b),c=(0,p.xK)(a),d=(0,p.r$)(c?.cwd)??(0,p.r$)((0,p.xK)(c?.payload)?.cwd);if(d)return d}catch{continue}return null}(d.value.text.split("\n").slice(0,25));return v.set(a,aa(b,d.value,e)),{value:e,complete:!0,headPreserved:!1}}function ac(a,b){let c=w.get(a);if(c?.size===b.size&&c.mtimeMs===b.mtimeMs)return{value:c.value,complete:!0,headPreserved:!0};let d=(0,o.zy)(a,b.size,b.mtimeMs,{maxBytes:x});if(!d.complete||!d.value)return{value:c?.value??null,complete:!1,headPreserved:!1};if(c){let e=_(c,b,d);if(e)return w.set(a,e),{value:e.value,complete:!0,headPreserved:!0}}let e=null;for(let a of d.value.text.split("\n").slice(0,10))if(a.trim())try{let b=JSON.parse(a),c="string"==typeof b.payload?.timestamp?b.payload.timestamp:"string"==typeof b.timestamp?b.timestamp:null;if(c&&Number.isFinite(Date.parse(c))){e=new Date(c).toISOString();break}}catch{continue}return w.set(a,aa(b,d.value,e)),{value:e,complete:!0,headPreserved:!1}}function ad(a,b){let c=U(b).byPath.get(a);return c?J(c.project,c.worktree,c.repo):null}function ae(a,b,c){let d=t.get(a);if(d?.size===b.size&&d.mtimeMs===b.mtimeMs)return{value:d.value,complete:!0,headPreserved:!0};let e=(0,o.zy)(a,b.size,b.mtimeMs,{maxBytes:x});if(!e.complete||!e.value)return{value:d?.value??null,complete:!1,headPreserved:!1};if(d){let c=_(d,b,e);if(c)return t.set(a,c),{value:c.value,complete:!0,headPreserved:!0}}let f=function(a,b){for(let c of a){let a;try{let b=JSON.parse(c);if(!b||"object"!=typeof b||Array.isArray(b))continue;a=b}catch{continue}if("summary"===a.type){let b=$(a.summary);if(b)return b}if("ai-title"===a.type){let b=$(a.aiTitle);if(b)return b}let d=$(function(a,b){if(b){let b=(0,p.xK)(a.payload)??{};if("user_message"===b.type)return("string"==typeof b.message?b.message.trim():"")||null;if("message"===b.type&&"user"===b.role)return(0,p.Em)(b.content).map(a=>(0,p.r$)(a.text)??(0,p.r$)(a.input_text)??"").join(" ").trim()||null}else if("user"===a.type){let b=(0,p.xK)(a.message)?.content;return"string"==typeof b?b.trim()||null:(0,p.Em)(b).filter(a=>"text"===a.type).map(a=>(0,p.r$)(a.text)??"").join(" ").trim()||null}return null}(a,b));if(d)return d}return null}(e.value.text.split("\n").slice(0,151),c);return t.set(a,aa(b,e.value,f)),{value:f,complete:!0,headPreserved:!1}}function af(a,b,c,d,e,f){let h=s.get(c);if(e&&h&&h.stateKey===f&&h.cwd===d)return{project:h.project,projectName:h.projectName,projectUnresolved:h.projectUnresolved,worktree:h.worktree,projectRoot:h.projectRoot};let i=null;if("codex-sessions"===a)i=(d?V(d,f):null)??ad(c,f);else if("claude-projects"===a){let a=g().relative(b,c).split(g().sep)[0]??"",e=Y(a);i=(d?V(d,f):null)??ad(c,f)??(e?J(e.project,e.worktree,e.repo):J(A(a)))}else if("claude-tasks"===a){let a,d=g().relative(b,c).split(g().sep)[0]??"";i=((a=U(f).bySlug.get(d))?J(a.project,a.worktree,a.repo):null)??J(A(d))}let j={project:(i??=I()).project,projectName:i.displayName,projectUnresolved:i.unresolved,worktree:i.worktree,projectRoot:d?X(d)??null:void 0};return e&&s.set(c,{...j,stateKey:f,cwd:d}),j}function ag(a,b,c,d,e=(0,q.g)()){let f=af(a,b,c,d.cwd,!0,e);return{...d,project:f.project,projectName:f.projectName,projectUnresolved:f.projectUnresolved,worktree:f.worktree,projectRoot:f.projectRoot}}function ah(a,b,c,d,e=(0,q.g)(),f=y(a,c,d)){var h;let i,j,k,m=r.get(c);if(f.complete&&m&&(h=m.identity,h.size===f.size&&h.mtimeMs===f.mtimeMs&&h.sidecarSize===f.sidecarSize&&h.sidecarMtimeMs===f.sidecarMtimeMs))i=m.metadata,j=!0,k=!0;else{let b=function(a,b,c,d){let e,f=g().basename(b),h=d.complete,i=null,j=null,k=null,m=null,o="claude",q="",r="plain",s=d.complete;if("codex-sessions"===a){let a=s?ab(b,c):{value:null,complete:!1,headPreserved:!1};if(s&&=a.complete,h=a.complete,e=a.value??void 0,s){let a=ac(b,c);s&&=a.complete,i=a.value}if(s){let a=(0,n.H)(b,c.size,c.mtimeMs);s&&=a.complete,j=a.parent,k=a.forkedFrom}if(o="codex",q="session",r="codex",s){let a=ae(b,c,!0);s&&=a.complete,m=a.value}m??="Codex session"}else if("claude-projects"===a){let a=s?ab(b,c):{value:null,complete:!1,headPreserved:!1};if(s&&=a.complete,h=a.complete,e=a.value??void 0,s){let a=ac(b,c);s&&=a.complete,i=a.value}if(r="claude",f.startsWith("agent-")){q="subagent";let a=s?null===d.sidecarSize?{value:null,complete:d.complete}:(0,p.Y6)(b.slice(0,-6)+".meta.json"):{value:null,complete:!1};s&&=a.complete;let e=a.value??{};if(!(m=(0,p.r$)(e.description)??(0,p.r$)(e.name)??null)&&s){let a=ae(b,c,!1);s&&=a.complete,m=a.value}m??="Subagent "+f.slice(6).split(".")[0]}else{if(q="session",s){let a=ae(b,c,!1);s&&=a.complete,m=a.value}m??="Claude session"}}else"claude-tasks"===a&&(o="shell",q="background",m="Background task "+f.split(".")[0]);return{metadata:{cwd:e,sessionStartedAt:i,nativeParentThreadId:j,nativeForkSourceThreadId:k,title:(0,l.cr)(m??f,120),engine:o,kind:q,fmt:r},complete:s,cwdComplete:h}}(a,c,d,f);i=b.metadata,j=b.complete,k=b.cwdComplete,j&&r.set(c,{identity:f,metadata:i})}let o=af(a,b,c,i.cwd,k,e);return{description:{project:o.project,projectName:o.projectName,projectUnresolved:o.projectUnresolved,worktree:o.worktree,cwd:i.cwd,sessionStartedAt:i.sessionStartedAt,nativeParentThreadId:i.nativeParentThreadId,nativeForkSourceThreadId:i.nativeForkSourceThreadId,projectRoot:o.projectRoot,title:i.title,engine:i.engine,kind:i.kind,fmt:i.fmt},complete:j}}function ai(a,b,c,d,e=(0,q.g)(),f=y(a,c,d)){return ah(a,b,c,d,e,f).description}},25695:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(36855),e=c(88417);function f(a,b){return{images:[],error:{error:a,status:b}}}function g(a){let b;if(void 0!==a.images){if(!Array.isArray(a.images))return f("images must be an array",400);b=a.images}else if(void 0!==a.image){if(!a.image||"object"!=typeof a.image||Array.isArray(a.image))return f("invalid image",400);b=[a.image]}else b=[];if(b.length>d.sP)return f(`too many images (${d.sP} limit)`,413);let c=[],g=0,h=0;for(let a of b){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.base64||"string"!=typeof a.mime)return f("invalid image",400);if((g+=Buffer.byteLength(a.base64))>d.u1)return f("runtime image request encoding is too large",413);let b=function(a){if(!a||a.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(a))return null;let b=Buffer.from(a,"base64");return b.length>0&&b.toString("base64")===a?b:null}(a.base64);if(!b)return f("runtime image base64 is invalid",400);let i=(0,e.CC)(a.mime);if(!i)return f("unsupported image type",415);if(b.byteLength>d.DO)return f("image is too large (10 MB limit)",413);if(!(0,d.G)(b,i))return f("runtime image signature does not match MIME",415);if((h+=b.byteLength)>d.ON)return f("runtime image request is too large",413);c.push({base64:a.base64,mime:i})}return{images:c,error:null}}},26200:(a,b,c)=>{function d(a,b=160){let c=a.replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/[*_~#>]+/g,"").replace(/\s+/g," ").trim().replace(/(?:\/[^\s)]+){3,}/g,a=>{if(a.length<=40)return a;let b=a.split("/").filter(Boolean);return b.length>=2?".../"+b.slice(-2).join("/"):a}).replace(/\s+/g," ").trim();return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}function e(a,b=32){let c=d(a,b+20);return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}c.d(b,{HV:()=>e,cr:()=>d})},28388:(a,b,c)=>{c.d(b,{j:()=>l,v:()=>k});var d=c(38849);function e(a){let b=a.timestamp;return"string"==typeof b?b:null}let f=new Set(["authentication_failed","rate_limit"]);function g(a){return!0===a.isApiErrorMessage&&"string"==typeof a.error&&f.has(a.error)}function h(a){let b=(0,d.xK)(a.message)?.content;return"string"==typeof b?b:(0,d.Em)(b).map(a=>(0,d.r$)(a.text)??"").join("\n")}let i=/^no response requested\.?$/i,j=/^\s*\[Request interrupted by user(?: for tool use)?\]\s*$/;function k(a){let b=!1;for(let c=a.length-1;c>=0;c-=1){let f=a[c];if("result"===f.type)return b?{terminalAt:e(f)}:null;if("assistant"===f.type){if(g(f))return b?{terminalAt:e(f)}:null;if(!(!0!==f.isApiErrorMessage&&"<synthetic>"===(0,d.r$)(((0,d.xK)(f.message)??{}).model)&&i.test(h(f).trim())))return null;b=!0;continue}if("user"===f.type){if(!b&&!(!0===f.interruptedByShutdown||"interruptedMessageId"in f||j.test(h(f))))return null;b=!0}}return null}function l(a,b,c=!1){if(b){let b=!1,c=null,f=!1,g=new Set,h=0;for(let i of a){let a=(0,d.xK)(i.payload)??{},j=(0,d.r$)(a.type);if(!j)continue;if("task_started"===j||"turn_started"===j||"user_message"===j){b=!0,c=null,f=!1;continue}if("task_complete"===j||"turn_complete"===j||"turn_completed"===j||"turn_aborted"===j){0===g.size&&0===h?(b=!1,c=e(i),f=!0):(b=!0,c=null,f=!1);continue}if("agent_message"===j||"token_count"===j||"reasoning"===j)continue;let k=j.includes("output")||j.endsWith("_result");if(!(j.includes("tool")||j.includes("function")||j.includes("command")))continue;let l=(0,d.r$)(a.call_id)??(0,d.r$)(a.callId)??(0,d.r$)(a.id);k?l?g.delete(l):h>0&&(h-=1):l?g.add(l):h+=1,b=!0,c=null,f=!1}return f&&!b&&0===g.size&&0===h?{state:"terminal",source:"lifecycle",terminalAt:c}:b||g.size>0||h>0?{state:"busy",source:g.size>0||h>0?"tool":"lifecycle",terminalAt:null}:{state:"unknown",source:"empty",terminalAt:null}}if(c){let b={state:"unknown",source:"empty",terminalAt:null};for(let c of a)"result"===c.type?b={state:"terminal",source:"lifecycle",terminalAt:e(c)}:"user"===c.type?b={state:"busy",source:"lifecycle",terminalAt:null}:"assistant"===c.type&&(b=g(c)?{state:"terminal",source:"lifecycle",terminalAt:e(c)}:{state:"busy",source:"assistant",terminalAt:null});if("busy"!==b.state)return b;let c=k(a);return c?{state:"terminal",source:"lifecycle",terminalAt:c.terminalAt}:b}for(let b of[...a].reverse()){if("assistant"===b.type){if(g(b))return{state:"terminal",source:"lifecycle",terminalAt:e(b)};let a=(0,d.r$)(((0,d.xK)(b.message)??{}).stop_reason);if("end_turn"===a||"stop_sequence"===a)return{state:"terminal",source:"lifecycle",terminalAt:e(b)};return{state:"busy",source:"assistant",terminalAt:null}}if("user"===b.type)return{state:"busy",source:"lifecycle",terminalAt:null}}return{state:"unknown",source:"empty",terminalAt:null}}},29966:(a,b,c)=>{function d(a){return`${a} is unavailable; start agent-log-viewer through its CLI and check the CLI log for the host startup failure`}function e(a){if(void 0===a)return!1;switch(a.trim().replace(/^(["'])([\s\S]*)\1$/,"$2").trim().toLowerCase()){case"0":case"false":case"off":case"no":return!0;default:return!1}}function f(a=process.env){return!e(a.LLV_STRUCTURED_HOSTS)}function g(a=process.env){return!function(a=process.env){return e(a.LLV_RUNTIME_EVENTS)}(a)&&!!i(a)}function h(a=process.env){return!e(a.NEXT_PUBLIC_RUNTIME_UI)}function i(a=process.env){return a.LLV_RUNTIME_HOST_SOCKET?.trim()||null}c.d(b,{Ee:()=>h,S0:()=>i,Zn:()=>g,cM:()=>f,lN:()=>d})},30277:(a,b,c)=>{let d,e;c.d(b,{B:()=>D});var f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(8164);let k="/proc";function l(a){try{return g().readFileSync(i().join(k,String(a),"cmdline"),"utf8").split("\0").filter(Boolean)}catch{return[]}}function m(a){try{return g().readlinkSync(i().join(k,String(a),"cwd"))}catch{return null}}function n(a){let b;try{b=g().readFileSync(i().join(k,String(a),"stat"),"utf8")}catch{return null}return b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/)}function o(a){try{return(128&g().lstatSync(a).mode)!=0}catch{return!1}}function p(a){let b;try{b=g().readdirSync(k,{withFileTypes:!0})}catch{return}for(let c of b){let b;if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let d=Number(c.name),e=i().join(k,c.name,"fd");try{b=g().readdirSync(e,{withFileTypes:!0})}catch{continue}for(let c of b){let b,f=i().join(e,c.name);try{b=g().readlinkSync(f)}catch{continue}a(b,d,()=>o(f))}}}let q={name:"linux",pidAlive:function(a){return Number.isInteger(a)&&a>0&&g().existsSync(i().join(k,String(a)))},readArgv:l,readCwd:m,readPpid:function(a){let b=n(a),c=b?Number(b[1]):NaN;return Number.isInteger(c)&&c>1?c:null},processIdentity:function(a){let b=n(a),c=b?.[19];return c?`${a}:${c}`:null},readEnvVar:function(a,b){let c;try{c=g().readFileSync(i().join(k,String(a),"environ"),"utf8")}catch{return null}let d=b+"=",e=null;for(let a of c.split("\0"))a.startsWith(d)&&(e=a.slice(d.length));return e},listProcesses:function(){let a,b=[];try{a=g().readdirSync(k,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name);b.push({pid:a,argv:l(a),cwd:m(a),tty:function(a){let b=n(a),c=b?Number(b[4]):NaN;return Number.isInteger(c)&&c>0?c:0}(a)})}return b},systemMemory:function(){try{return(0,j.NW)(g().readFileSync(i().join(k,"meminfo"),"utf8"))}catch{return null}},processMemory:function(a){let b=new Map;for(let c of a)if(Number.isInteger(c)&&!(c<=0))try{b.set(c,(0,j.sW)(g().readFileSync(i().join(k,String(c),"status"),"utf8")))}catch{}return b},ppidMap:function(){let a,b=new Map;try{a=g().readdirSync(k,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name),d=n(a),e=d?Number(d[1]):NaN;Number.isInteger(e)&&e>0&&b.set(a,e)}return b},scanFdTargetsUnder:function(a,b){p(b)},scanFdTargetsFor:function(a,b){p(b)},pidWritesPath:function(a,b){let c,d;try{c=g().realpathSync(b)}catch{c=null}let e=i().join(k,String(a),"fd");try{d=g().readdirSync(e,{withFileTypes:!0})}catch{return!1}for(let a of d){let d,f=i().join(e,a.name);try{d=g().readlinkSync(f)}catch{continue}if((d===b||d===c)&&o(f))return!0}return!1},pidHoldsPath:function(a,b){let c;try{c=g().readdirSync(i().join(k,String(a),"fd"),{withFileTypes:!0})}catch{return!1}for(let d of c)try{if(g().readlinkSync(i().join(k,String(a),"fd",d.name))===b)return!0}catch{continue}return!1}};var r=c(31421),s=c(48161),t=c.n(s);let u=BigInt(1e6);function v(a,b){let c=(0,r.spawnSync)(a,b,{encoding:"utf8",maxBuffer:0x1000000,timeout:1e4});return c.error||"string"!=typeof c.stdout?"":c.stdout}let w=new Map,x=1,y=/^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.*)$/;function z(a,b){let c=0,d="";for(let e of a.split("\n")){if(!e)continue;let a=e[0],f=e.slice(1);if("p"===a)c=Number(f),d="";else if("f"===a)d="";else if("a"===a)d=f;else if("n"===a&&c>0&&f){let a="w"===d||"u"===d;b(f,c,()=>a)}}}let A=null;function B(){let a=Date.now();if(A&&a-A.at<5e3)return A.byPid;let b=function(a){let b=new Map;for(let c of a.split("\n")){let a=y.exec(c);if(!a)continue;let d=Number(a[1]),e=Number(a[2]),f=(a[4]??"").trim().split(/\s+/).filter(Boolean);b.set(d,{ppid:Number.isInteger(e)&&e>1?e:null,tty:function(a){if(!a||"?"===a||"??"===a||"-"===a)return 0;let b=w.get(a);return void 0===b&&(b=x,x+=1,w.set(a,b)),b}(a[3]??""),argv:f})}return b}(v("ps",["-axo","pid=,ppid=,tty=,args="])),c=function(a){let b=new Map,c=0;for(let d of a.split("\n")){if(!d)continue;let a=d[0],e=d.slice(1);"p"===a?c=Number(e):"n"===a&&c>0&&b.set(c,e)}return b}(v("lsof",["-w","-d","cwd","-Fpn"])),d=new Map;for(let[a,e]of b)d.set(a,{argv:e.argv,ppid:e.ppid,tty:e.tty,cwd:c.get(a)??null});return A={at:a,byPid:d},d}let C={name:"portable",pidAlive:function(a){if(!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}},readArgv:function(a){return B().get(a)?.argv??[]},readCwd:function(a){return B().get(a)?.cwd??null},readPpid:function(a){return B().get(a)?.ppid??null},processIdentity:function(a){return!Number.isInteger(a)||a<=0?null:"darwin"===process.platform?function(a){if(!Number.isInteger(a)||a<=0)return null;let b=function(){if(void 0!==d)return d;if("darwin"!==process.platform)return d=null;try{let a=c(85786),b=a.dlopen("/usr/lib/libproc.dylib",{proc_pidinfo:{args:[a.FFIType.i32,a.FFIType.i32,a.FFIType.u64,a.FFIType.ptr,a.FFIType.i32],returns:a.FFIType.i32}});d=(c,d)=>Number(b.symbols.proc_pidinfo(c,3,BigInt(0),a.ptr(d),d.byteLength))}catch{d=null}return d}();if(!b)return null;let e=Buffer.alloc(136);try{var f=b(a,e);if(!Number.isInteger(a)||a<=0||f<136||e.byteLength<136||e.readUInt32LE(12)!==a)return null;let c=e.readBigUInt64LE(120),d=e.readBigUInt64LE(128);return c===BigInt(0)||d>=u?null:`${a}:${c}:${d.toString().padStart(6,"0")}`}catch{return null}}(a):null},readEnvVar:function(){return null},listProcesses:function(){let a=[];for(let[b,c]of B())a.push({pid:b,argv:c.argv,cwd:c.cwd,tty:c.tty});return a},systemMemory:function(){let a=t().totalmem(),b=(0,j.Lc)(v("vm_stat",[]));if(!a||null===b)return null;let c=(0,j.yh)(v("sysctl",["-n","vm.swapusage"]));return{ramTotal:a,ramAvailable:Math.min(b,a),swapTotal:c?.swapTotal??0,swapUsed:c?.swapUsed??0}},processMemory:function(a){let b=new Set;for(let c of a)Number.isInteger(c)&&c>0&&b.add(c);let c=new Map;if(0===b.size)return c;for(let[a,d]of(0,j.CT)(v("ps",["-axo","pid=,rss="])))b.has(a)&&c.set(a,{rssBytes:d,swapBytes:0});return c},ppidMap:function(){let a=new Map;for(let[b,c]of B())null!==c.ppid&&a.set(b,c.ppid);return a},scanFdTargetsUnder:function(a,b){a&&g().existsSync(a)&&z(v("lsof",["-w","+D",a,"-Fpfan"]),b)},scanFdTargetsFor:function(a,b){let c=[...new Set(a.filter(Boolean))];0!==c.length&&z(v("lsof",["-w","-Fpfan","--",...c]),b)},pidWritesPath:function(a,b){let c=!1;return z(v("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),(a,b,d)=>{d()&&(c=!0)}),c},pidHoldsPath:function(a,b){let c=!1;return z(v("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),()=>{c=!0}),c}},D="portable"===(e=process.env.VIEWER_PROC_BACKEND)?C:"linux"===e||"linux"===process.platform?q:C},31612:(a,b,c)=>{c.d(b,{mZ:()=>q,EM:()=>H,M7:()=>J,Km:()=>I}),c(77598);var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(50920),i=c(65465),j=c(61899),k=c(2208),l=c(73385),m=c(79866),n=c(4863);let o=new Set([2,3,4,5]),p=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"];class q extends Error{constructor(a,b){super(a,b),this.name="PipelineStoreError"}}function r(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&!("claude"!==a.engine&&"codex"!==a.engine||null!==a.model&&"string"!=typeof a.model||a.model&&"claude"===a.engine&&!(0,k.OV)(a.model)||a.model&&"codex"===a.engine&&(a.model.length>128||!a.model.startsWith("gpt-")||/[\u0000-\u001f\u007f]/.test(a.model)))&&(null===a.effort||"string"==typeof a.effort&&!!(0,j.z9)(a.engine,a.effort))&&(null===a.roleId||p.includes(a.roleId))&&("read-only"===a.access||"read-write"===a.access)&&(null===a.promptScaffold||"string"==typeof a.promptScaffold&&a.promptScaffold.length<=l.le)}function s(a){return null===a||"string"==typeof a}function t(a){return null==a||!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.stageId&&Number.isInteger(a.attempt)&&a.attempt>=1&&("pass"===a.edge||"fail"===a.edge)}function u(a,b){var c,d;return!(!a||"object"!=typeof a||Array.isArray(a))&&a.n===b+1&&(void 0===a.historical||"boolean"==typeof a.historical)&&["pending","spawning","running","reviewing","committing","passed","failed","needs_decision","skipped"].includes(String(a.state))&&r(a.effectiveRole)&&s(a.launchId)&&s(a.conversationId)&&s(a.sessionId)&&s(a.agentPath)&&s(a.paneId)&&s(a.flowId)&&(void 0===a.expectedReviewHeadSha||s(a.expectedReviewHeadSha))&&(void 0===a.reviewHeadSha||s(a.reviewHeadSha))&&function(a){if(void 0===a)return!0;if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.hostClaim,c=null==b||"object"==typeof b&&!Array.isArray(b)&&/^(?:claude|codex):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(String(b.sessionKey))&&/^(?:default|unknown|managed:[0-9a-f]{12})$/.test(String(b.accountRef)),d=["waiting_ready","spawn_pending","spawning","reviewing","relay_pending","relaying","fixing","approved","done_comment","needs_decision","paused","closed"];return"string"==typeof a.generation&&(void 0===a.sourceRevision||Number.isInteger(a.sourceRevision)&&a.sourceRevision>=0)&&Number.isInteger(a.roundCount)&&a.roundCount>=0&&s(a.implementerHeadSha)&&s(a.reviewerHeadSha)&&(null===a.verdict||["APPROVE","REQUEST_CHANGES","COMMENT"].includes(String(a.verdict)))&&d.includes(String(a.relayState))&&(null===a.terminalState||d.includes(String(a.terminalState)))&&c&&"string"==typeof a.synchronizedAt&&s(a.sourceUpdatedAt)&&(null===a.lagMs||"number"==typeof a.lagMs&&Number.isFinite(a.lagMs)&&a.lagMs>=0)}(a.reviewFlowSync)&&s(a.startedAt)&&s(a.completedAt)&&(void 0===a.input||s(a.input))&&t(a.activatedBy)&&s(a.output)&&(null===(c=a.verdict)||null!==(0,n.eh)(c))&&s(a.error)&&(void 0===(d=a.verdictRecovery)||!(!d||"object"!=typeof d||Array.isArray(d))&&["pending","recovered","exhausted"].includes(String(d.state))&&Number.isInteger(d.checks)&&d.checks>=0&&Number.isInteger(d.maxChecks)&&d.maxChecks>=1&&d.checks<=d.maxChecks&&"string"==typeof d.startedAt&&"string"==typeof d.lastCheckedAt&&s(d.nextCheckAt)&&"string"==typeof d.reason&&d.reason.length>0&&d.reason.length<=1e3&&(null===d.messageTs||"number"==typeof d.messageTs&&Number.isFinite(d.messageTs)&&d.messageTs>=0))}function v(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.stageId&&Array.isArray(a.attempts)&&a.attempts.every(u)}function w(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.stageId&&Number.isInteger(a.attempt)&&s(a.conversationId)&&s(a.agentPath)&&(void 0===a.paneId||s(a.paneId))&&s(a.operationId)&&"string"==typeof a.detail&&"string"==typeof a.at}function x(a){var b;if(!a||"object"!=typeof a||Array.isArray(a))return!1;let c=a.role;if(!("string"==typeof a.id&&("run"===a.kind||"review-loop"===a.kind)&&"string"==typeof a.prompt&&(null===a.next||"string"==typeof a.next)&&(null==(b=a.onFail)||!(!b||"object"!=typeof b||Array.isArray(b))&&"string"==typeof b.to&&Number.isInteger(b.maxRounds)&&b.maxRounds>=1&&b.maxRounds<=9)&&(void 0===c||c&&"object"==typeof c&&!Array.isArray(c)&&p.includes(c.roleId))&&(void 0===a.engine||"claude"===a.engine||"codex"===a.engine)&&(void 0===a.model||null===a.model||"string"==typeof a.model)&&(void 0===a.effort||null===a.effort||"string"==typeof a.effort)&&(void 0===a.access||"read-only"===a.access||"read-write"===a.access)&&r(a.effectiveRole)))return!1;let d=a.effectiveRole,e=void 0===c?null:c.roleId;return d.roleId===e&&("review-loop"!==a.kind||"read-only"===d.access)&&(void 0===a.engine||a.engine===d.engine)&&(void 0===a.model||a.model===d.model)&&(void 0===a.effort||a.effort===d.effort)&&(void 0===a.access||a.access===d.access)&&(null!==e||null===d.promptScaffold)&&(null===e||!!d.promptScaffold?.trim())&&!0}function y(a){var b,c;if(!a||"object"!=typeof a||Array.isArray(a)||!("string"==typeof a.id&&"string"==typeof a.task&&Array.isArray(a.taskIds)&&a.taskIds.every(a=>"string"==typeof a)&&new Set(a.taskIds).size===a.taskIds.length&&(void 0===a.creationIntent||!(!(b=a.creationIntent)||"object"!=typeof b||Array.isArray(b))&&"task-spawn"===b.kind&&"string"==typeof b.taskId&&b.taskId.trim()&&"string"==typeof b.launchId&&b.launchId.trim())&&(void 0===a.spec||"string"==typeof a.spec)&&"string"==typeof a.project&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&"string"==typeof a.baseBranch&&"string"==typeof a.baseRef&&"string"==typeof a.lastPassedCommit&&(void 0===a.publishedCommit||s(a.publishedCommit))&&Array.isArray(a.stages)&&a.stages.every(x)&&Array.isArray(a.runs)&&a.runs.every(v)&&["draft","provisioning","running","needs_decision","paused","completed","closed"].includes(String(a.state))&&(null===a.pausedState||["provisioning","running","needs_decision","completed","closed"].includes(String(a.pausedState)))&&(void 0===a.pausedAt||s(a.pausedAt))&&(void 0===a.resumedAt||s(a.resumedAt))&&s(a.stateDetail)&&s(a.srcPath)&&s(a.srcConversationId)&&"string"==typeof a.createdAt&&s(a.closedAt)&&(void 0===a.hiddenAt||s(a.hiddenAt))&&(void 0===a.unconfirmedHosts||Array.isArray(a.unconfirmedHosts)&&a.unconfirmedHosts.every(w))&&(void 0===a.terminalReap||!(!(c=a.terminalReap)||"object"!=typeof c||Array.isArray(c))&&Number.isInteger(c.rounds)&&c.rounds>=0&&Number.isInteger(c.stopped)&&c.stopped>=0&&"string"==typeof c.lastAt&&s(c.settledAt))&&(void 0===a.restored||"boolean"==typeof a.restored)&&(void 0===a.pos||"object"==typeof a.pos&&null!==a.pos&&Number.isFinite(a.pos.x)&&Number.isFinite(a.pos.y))))return!1;let d=a.stages,e=a.runs,f=+("draft"!==a.state);if(d.length<f||d.length>8||e.length!==d.length)return!1;let h=d.map(a=>a.id);if(new Set(h).size!==h.length||null!==function(a){let b=new Set(a.map(a=>a.id)),c=new Map(a.map(a=>[a.id,a.next]));for(let c of a){if(null!==c.next&&!b.has(c.next))return`stage ${c.id} next must reference an existing stage`;if(c.next===c.id)return`stage ${c.id} pass edge may not target itself`;let a=c.onFail??null;if("review-loop"===c.kind&&a)return`review-loop stage ${c.id} does not support onFail`;if(a&&!b.has(a.to))return`stage ${c.id} onFail must reference an existing stage`;if(a&&(!Number.isInteger(a.maxRounds)||a.maxRounds<1||a.maxRounds>9))return`stage ${c.id} onFail maxRounds must be an integer between 1 and 9`}for(let b of a){let d=b.next;for(let e=0;null!==d;e+=1){if(d===b.id||e>a.length)return`pipeline pass edges form a cycle through stage ${b.id}`;d=c.get(d)??null}}for(let b of a)if("review-loop"===b.kind&&!a.some(d=>{if("run"!==d.kind)return!1;let e=d.next;for(let d=0;null!==e&&d<=a.length;d+=1){if(e===b.id)return!0;e=c.get(e)??null}return!1})){let c=a.filter(a=>"run"===a.kind);if(0===c.length)return`review-loop stage ${b.id} is unreachable: the pipeline has no run stage, and a review-loop reviews the session of a run stage that reaches it`;let d=c.findLast(a=>null===a.next)??c.at(-1);return`review-loop stage ${b.id} is unreachable: no run stage's next chain reaches it — set next: "${b.id}" on run stage ${d.id}`}return null}(d)||e.some((a,b)=>a.stageId!==d[b].id))return!1;let i=g().join(g().dirname(a.repoDir),`${g().basename(a.repoDir)}-pipeline-${a.id}`);if(a.worktreeDir!==i||a.branch!==`pipeline/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`)return!1;let j=a.cursor;if(null!==j&&(!j||"object"!=typeof j||!h.includes(j.stageId)||!["pending","spawning","running","reviewing","committing"].includes(j.state)||!(void 0===j.input||s(j.input))||!t(j.activatedBy)||null!=j.activatedBy&&!h.includes(j.activatedBy.stageId))||("completed"===a.state||"closed"===a.state)&&null!==j)return!1;if("draft"===a.state){if(0===d.length){if(null!==j)return!1}else if(j?.stageId!==d[0].id||"pending"!==j.state)return!1;if(e.some(a=>a.attempts.length>0))return!1;let b=!a.baseBranch&&!a.baseRef&&!a.lastPassedCommit,c=!!(a.baseBranch&&/^[0-9a-f]{40}$/i.test(a.baseRef)&&a.lastPassedCommit===a.baseRef);if(!b&&!c||a.closedAt)return!1}return!0}function z(a,b){let c=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch(b){if("ENOENT"===b.code)return null;throw new q(`could not read pipeline registry: ${a}`,{cause:b})}}(a);if(null===c)return[];if(!c||"object"!=typeof c||Array.isArray(c)){if(b)return[];throw new q("pipeline registry must be an object")}if("number"!=typeof c.schemaVersion||!o.has(c.schemaVersion)){if(b)return[];throw new q(`unsupported pipeline registry schema: ${String(c.schemaVersion)}`)}if(!Array.isArray(c.pipelines)){if(b)return[];throw new q("pipeline registry contains malformed records")}let d=c.pipelines.map(a=>{var b,d,e;let f;return f=2===(b=c.schemaVersion)?function(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let b=Array.isArray(a.stages)?a.stages.map(a=>a&&"object"==typeof a?{onFail:null,...a}:a):a.stages,c=Array.isArray(a.runs)?a.runs.map(a=>a&&"object"==typeof a&&Array.isArray(a.attempts)?{...a,attempts:a.attempts.map(a=>a&&"object"==typeof a?{input:null,activatedBy:null,...a}:a)}:a):a.runs,d=a.cursor&&"object"==typeof a.cursor?{input:null,activatedBy:null,...a.cursor}:a.cursor,e={...a,stages:b,runs:c,cursor:d};if("draft"===e.state&&Array.isArray(e.stages)&&0===e.stages.length){let a={id:"implement",kind:"run",prompt:"{{task}}",next:null,onFail:null,effectiveRole:{roleId:null,engine:"claude",model:null,effort:null,access:"read-write",promptScaffold:null}};e.stages=[a],e.runs=[{stageId:a.id,attempts:[]}],e.cursor={stageId:a.id,state:"pending",input:null,activatedBy:null}}return e}(a):a,b<4&&(f=!(d=f)||"object"!=typeof d||Array.isArray(d)?d:{taskIds:[],...d}),b<5&&(f=!(e=f)||"object"!=typeof e||Array.isArray(e)?e:Array.isArray(e.stages)?{...e,stages:e.stages.map(a=>!a||"object"!=typeof a||Array.isArray(a)?a:"review-loop"===a.kind?{...a,onFail:null}:a)}:e),f});if(!b&&!d.every(y))throw new q("pipeline registry contains malformed records");let f=b?d.filter(y):d;return b&&f.length!==d.length&&console.error(`[pipelines] skipped ${d.length-f.length} malformed archived pipeline record(s)`),f.map(A)}function A(a){return{...a,project:(0,i.G$)(a.project),taskIds:[...a.taskIds],creationIntent:a.creationIntent?{...a.creationIntent}:void 0,spec:"string"==typeof a.spec?a.spec:void 0,baseBranch:a.baseBranch??"",baseRef:a.baseRef??"",lastPassedCommit:a.lastPassedCommit??"",publishedCommit:a.publishedCommit??null,pausedState:a.pausedState??null,stateDetail:a.stateDetail??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,closedAt:a.closedAt??null,hiddenAt:a.hiddenAt??null,unconfirmedHosts:a.unconfirmedHosts?.length?a.unconfirmedHosts.map(a=>({...a})):void 0,terminalReap:a.terminalReap?{...a.terminalReap}:void 0,restored:void 0,stages:a.stages.map(a=>({...a,onFail:a.onFail??null})),cursor:a.cursor?{...a.cursor,input:a.cursor.input??null,activatedBy:a.cursor.activatedBy??null}:null,runs:a.runs.map(a=>({...a,attempts:Array.isArray(a.attempts)?a.attempts.map(a=>({...a,launchId:a.launchId??null,conversationId:a.conversationId??null,sessionId:a.sessionId??null,agentPath:a.agentPath??null,paneId:a.paneId??null,flowId:a.flowId??null,expectedReviewHeadSha:a.expectedReviewHeadSha??null,reviewHeadSha:a.reviewHeadSha??null,reviewFlowSync:a.reviewFlowSync?{...a.reviewFlowSync}:void 0,startedAt:a.startedAt??null,completedAt:a.completedAt??null,input:a.input??null,activatedBy:a.activatedBy??null,output:a.output??null,verdict:a.verdict??null,error:a.error??null,verdictRecovery:a.verdictRecovery?{...a.verdictRecovery}:void 0})):[]}))}}let B=null,C=new Map;function D(a){if(!y(a))throw new q("pipeline registry contains malformed records");return A(a)}function E(a){return"closed"===a.state?!!a.unconfirmedHosts?.length:"completed"!==a.state||!!a.unconfirmedHosts?.length||!a.terminalReap?.settledAt}function F(){return function(){let a=(0,h.BQ)("state.sqlite"),b=C.get(a);if(b)return b;(0,m.t0)(a,[{collection:"pipelines",schemaVersion:5,migrationId:"pipelines-json-v1",loadRecords:()=>z((0,h.BQ)("pipelines.json"),!1),key:a=>a.id,controllerActive:E},{collection:"pipelines_archive",schemaVersion:5,migrationId:"pipelines-archive-json-v1",loadRecords:()=>z((0,h.BQ)("pipelines-archive.json"),!0),key:a=>a.id,controllerActive:()=>!1}]);let c={schemaVersion:5,busyMessage:"pipeline state is busy",key:a=>a.id,decode:D,clone:A,decodeError:a=>a instanceof q?a:new q("pipeline registry contains malformed records",{cause:a}),validate:a=>{if(!y(a))throw new q("refusing to persist a malformed pipeline record")}},d={active:new m.UY(a,{...c,collection:"pipelines",controllerActive:E,strictDecode:!0}),archive:new m.UY(a,{...c,collection:"pipelines_archive",onDecodeError:a=>console.error("[pipelines] skipped malformed archived SQLite row",a)})};return C.set(a,d),d}().active}function G(){return F().signature()}function H(){return(function(){let a=G();if(B?.signature===a)return B.pipelines;let b=[...F().loadReadonly()],c=G();return a===c&&(B={signature:c,pipelines:b}),b})().map(A)}async function I(a){return F().mutate(a)}async function J(a){return F().mutate(a,void 0,!0)}},31973:(a,b,c)=>{c.d(b,{ce:()=>g,pp:()=>h,sz:()=>i});var d=c(76760),e=c.n(d);let f=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;function g(a,b){let c,d=(c=b.match(f)?.[0])&&c.length===b.length?c.toLowerCase():null;return d?{engine:a,sessionId:d}:null}function h(a){return`${a.engine}:${a.sessionId}`}function i(a,b){let c=e().basename(b).match(f);return c?g(a,c[0]):null}},32644:(a,b,c)=>{c.d(b,{s7:()=>N});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(46193),l=c(50920),m=c(4351),n=c(14648),o=c(91836),p=c(30277),q=c(37788),r=c(59988),s=c(33353),t=c(42580),u=c(36855),v=c(49172),w=c(88417);class x{constructor(a=(0,l.BQ)("claude-delivery-ledger")){this.directory=a}load(a){let b=this.readRecords(a),c=[];for(let a of b)if("queued"===a.kind){if(c.some(b=>b.entry.id===a.entry.id))continue;c.push({entry:a.entry,disposition:a.disposition,queuedAt:a.queuedAt,delivered:!1})}else{let b=c.find(b=>b.entry.id===a.entryId);b&&(b.delivered=!0,b.engineMessageId=a.engineMessageId)}return c}recordQueued(a,b,c){let d=(0,s.h4)(b),e=this.load(a).find(a=>a.entry.id===d.id);if(e){if(!E(e.entry,d))throw Error("Claude delivery ledger entry id belongs to a different payload");return}this.append(a,{kind:"queued",entry:d,disposition:c,queuedAt:new Date().toISOString()})}confirmDelivered(a,b,c){let d=this.load(a).find(a=>a.entry.id===b);d&&!d.delivered&&this.append(a,{kind:"delivered",entryId:b,engineMessageId:c,deliveredAt:new Date().toISOString()})}readRecords(a){let b;try{b=h().readFileSync(this.filename(a),"utf8")}catch(a){if("ENOENT"===a.code)return[];throw a}let c=[],d=b.split("\n"),e=b.endsWith("\n");for(let[a,b]of d.entries()){let f;if(!b&&a===d.length-1&&e)continue;if(!b)throw Error("Claude delivery ledger contains an empty record");try{f=JSON.parse(b)}catch{if(a===d.length-1&&!e)break;throw Error("Claude delivery ledger contains malformed JSON")}let g=F(f);if(!g){if(a===d.length-1&&!e)break;throw Error("Claude delivery ledger contains an invalid record")}c.push(g)}return c}append(a,b){h().mkdirSync(this.directory,{recursive:!0,mode:448});let c=this.filename(a),d=h().openSync(c,"a+",384);try{h().fchmodSync(d,384),function(a,b,c){let d;if(0===h().fstatSync(a).size)return;let e=h().readFileSync(b,"utf8");if(e.endsWith("\n"))return;let f=e.lastIndexOf("\n")+1,g=e.slice(f);try{d=JSON.parse(g)}catch{d=null}c(d)?h().writeSync(a,"\n"):h().ftruncateSync(a,Buffer.byteLength(e.slice(0,f)))}(d,c,F),function(a,b){let c=0;for(;c<b.byteLength;){let d=h().writeSync(a,b,c,b.byteLength-c);if(!Number.isSafeInteger(d)||d<=0)throw Error("Claude delivery ledger write made no progress");c+=d}}(d,Buffer.from(`${JSON.stringify(b)}
86
- `)),h().fsyncSync(d)}finally{h().closeSync(d)}}filename(a){return j().join(this.directory,`${encodeURIComponent(a)}.jsonl`)}}let y=["PATH","HOME","USER","LOGNAME","SHELL","TMPDIR","TMP","TEMP","LANG","LC_ALL","LC_CTYPE","TERM","COLORTERM","NO_COLOR","XDG_CONFIG_HOME","XDG_CACHE_HOME","XDG_DATA_HOME","XDG_STATE_HOME","XDG_RUNTIME_DIR","DBUS_SESSION_BUS_ADDRESS","SSL_CERT_FILE","SSL_CERT_DIR","LLV_SPAWN_CAPABILITY"],z=`native-multi-agent-deny:${n.q5.join(",")}`,A=u.u1+262144,B=[{pattern:/no conversation found with session id/i,reason:"the Claude CLI found no conversation with this session id"}];function C(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function D(a,b){let c=C(a);return c&&"string"==typeof c[b]?c[b]:null}function E(a,b){let c=(0,s.h4)(a),d=(0,s.h4)(b);return c.id===d.id&&c.contentDigest===d.contentDigest&&c.expectedTurnId===d.expectedTurnId}function F(a){let b=C(a);if(b?.kind==="queued"){let a=C(b.entry);if("string"!=typeof a?.id||!a.id||"turn-started"!==b.disposition&&"queued-next-turn"!==b.disposition||"string"!=typeof b.queuedAt)return null;try{return{...b,entry:(0,s.h4)(a)}}catch{return null}}return b?.kind==="delivered"&&"string"==typeof b.entryId&&("string"==typeof b.engineMessageId||null===b.engineMessageId)&&"string"==typeof b.deliveredAt?b:null}let G=function(a){return(0,r.j)(a instanceof Error?a.message:String(a)).replace(/(["']?(?:cookie|set-cookie)["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[redacted]").slice(0,500)};function H(a,b,c,e){return new Promise((f,g)=>{let h=(0,d.spawn)(a,b,{cwd:c,env:e,stdio:["ignore","pipe","pipe"]}),i="";h.stdout.setEncoding("utf8"),h.stdout.on("data",a=>{i.length<1048576&&(i+=a)}),h.stderr.on("data",()=>{}),h.on("error",a=>g(Error(`Claude subscription authentication probe failed: ${G(a)}`))),h.on("close",a=>f({status:a,stdout:i}))})}async function I(a,b,c){let d=await H(a,["auth","status"],c,b);if(0!==d.status)throw Error("Claude subscription authentication check failed");let e=null;try{e=C(JSON.parse(d.stdout))}catch{}if(!e)throw Error("Claude subscription authentication status was invalid");let f=await H(a,["--version"],c,b),g=0===f.status?f.stdout.match(/\b\d+\.\d+\.\d+\b/)?.[0]??null:null;return{loggedIn:!0===e.loggedIn,authMethod:"string"==typeof e.authMethod?e.authMethod:null,subscriptionType:"string"==typeof e.subscriptionType?e.subscriptionType:null,version:g}}function J(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>D(a,"text")??"").join(""):""}function K(a){return J(C(a.message)?.content)}function L(a){let b=C(a.message)?.content;if("string"==typeof b)return b.trim()?(0,w.rM)(b,[]):null;if(!Array.isArray(b))return null;let c=[],d="";for(let a of b){let b=C(a);if(b?.type==="text"&&"string"==typeof b.text){d+=b.text;continue}if(b?.type!=="image")continue;let e=C(b.source),g="string"==typeof e?.media_type?(0,w.CC)(e.media_type):null;if(e?.type!=="base64"||!g||"string"!=typeof e.data)return null;let h=Buffer.from(e.data,"base64");if(!h.length||h.toString("base64")!==e.data)return null;c.push({sha256:f().createHash("sha256").update(h).digest("hex"),mime:g,bytes:h.byteLength})}try{return(0,w.rM)(d,c)}catch{return null}}function M(a,b){return a.contentDigest===b.contentDigest||a.content.images.length>0&&b.imageCount===a.content.images.length&&b.text===a.content.text}class N{constructor(a,b,c,d){this.subscribers=new Set,this.events=[],this.deliveries=[],this.turnQueue=[],this.attentions=new Map,this.pendingControls=new Map,this.pendingAnswers=new Map,this.interruptedTurns=new Set,this.partialTurns=new Set,this.pendingDeliveries=new Map,this.stateListeners=new Set,this.stdoutDecoder=new k.StringDecoder("utf8"),this.stdoutBuffer="",this.stderrTail="",this.terminalExit=null,this.activeTurnId=null,this.releasing=!1,this.released=!1,this.dead=!1,this.reaped=!1,this.ledgerFailed=!1,this.writerFence=null,this.releasePromise=null,this.terminationTimer=null,this.terminationStarted=!1,this.child=a,this.identity=b,this.eventStore=d.eventStore??new t.mI,this.deliveryLedger=d.deliveryLedger??new x,this.readImage=d.readImage??(a=>(0,u.PF)().read(a)),this.requestTimeoutMs=d.requestTimeoutMs??3e4,this.shutdownGraceMs=d.shutdownGraceMs??1e3,this.onEventCursorRecovery=d.onEventCursorRecovery,this.signalProcess=d.signalProcess??process.kill,this.releaseCleanup=d.releaseCleanup??null,this.cursor=d.initialEventCursor??0,this.protocolVersion=c.version??null,this.account={type:c.authMethod,planType:c.subscriptionType},this.launchFlags=d.allowSubagents?[w.Zx]:[w.Zx,z],this.reapedPromise=new Promise(a=>{this.resolveReaped=a}),a.stdout.on("data",a=>{this.acceptStdout("string"==typeof a?a:this.stdoutDecoder.write(a))}),a.stdout.on("end",()=>{let a=this.stdoutDecoder.end();a&&this.acceptStdout(a)}),a.stderr.on("data",a=>{var b;this.stderrTail=(this.stderrTail+("string"==typeof a?a:a.toString("utf8"))).slice(-512),this.terminalExit??=(b=this.stderrTail,B.find(a=>a.pattern.test(b))?.reason??null),this.terminalExit&&(this.stderrTail="")}),a.stdin.on("error",a=>{this.releasing||this.released||this.fail(Error(`Claude stream stdin failed: ${G(a)}`))}),a.on("error",a=>this.fail(Error(`Claude child failed: ${G(a)}`))),a.on("close",()=>{this.reaped=!0,this.terminationTimer&&(clearTimeout(this.terminationTimer),this.terminationTimer=null),this.resolveReaped(),this.releasing?this.finishRelease():this.dead?this.notifyStateListeners():this.releasing||this.released||this.fail(Error("Claude child exited"))})}static async start(a){return this.open(a.sessionId??f().randomUUID(),!1,a)}static async adopt(a,b){if(!a)throw Error("Claude session id is required for adoption");return this.open(a,!0,b)}static async open(a,b,c){let e,g,i=c.binary??process.env.LLV_CLAUDE_BINARY??"claude",j=function(a,b,c=!1){let d={NODE_ENV:a.NODE_ENV};for(let b of y)void 0!==a[b]&&(d[b]=a[b]);return c&&void 0!==a.GH_CONFIG_DIR&&(d.GH_CONFIG_DIR=a.GH_CONFIG_DIR),b&&(d.CLAUDE_CONFIG_DIR=b),d}(c.env??process.env,c.claudeConfigDir,!0===c.forwardGitHubConfig);try{e=await (c.readAuthStatus?.()??I(i,j,c.cwd))}catch(a){throw c.releaseCleanup?.(),a}if(!e.loggedIn||"claude.ai"!==e.authMethod||!e.subscriptionType)throw c.releaseCleanup?.(),Error("Claude stream hosting requires a claude.ai subscription login");let k=["-p","--input-format","stream-json","--output-format","stream-json","--verbose","--include-partial-messages","--replay-user-messages","--permission-prompt-tool","stdio","--permission-mode",(0,m.A5)(c)],l=[...c.allowSubagents?[]:n.q5,...c.readOnly?["Edit","Write","NotebookEdit"]:[]];if(l.length>0&&k.push("--disallowedTools",l.join(",")),c.claudeConfigDir){let b=`structured-${f().createHash("sha256").update(a).digest("hex").slice(0,24)}`,d=(0,n.UI)(c.claudeConfigDir,{allowSubagents:c.allowSubagents,baseSettingsPath:c.spawnPolicyBaseSettingsPath,profileId:b,cwd:c.cwd,mcpServers:c.mcpServers,mcpStatePath:c.mcpStatePath});k.push("--settings",d.settingsPath,"--strict-mcp-config","--mcp-config",d.mcpConfigPath)}else k.push("--strict-mcp-config");b?k.push("--resume",a):k.push("--session-id",a),c.model&&k.push("--model",c.model),c.effort&&k.push("--effort",c.effort),c.systemPrompt&&k.push("--system-prompt",c.systemPrompt),c.tools&&k.push("--tools",c.tools.join(","));let p=c.spawnProcess??((a,b,c)=>(0,d.spawn)(a,b,{...c,stdio:["pipe","pipe","pipe"]}));try{g=p(i,k,{cwd:c.cwd,env:(0,v.$)(j,c.mcpServers),detached:!0})}catch(a){throw c.releaseCleanup?.(),a}let q=new N(g,{sessionId:a},e,c);try{return q.restore(),q.reconcileTranscript(c.readTranscript?c.readTranscript(c.cwd,a):function(a,b,c){let d,e=(0,o.eV)(a,b,c);try{d=h().readFileSync(e,"utf8")}catch(a){if("ENOENT"===a.code)return[];throw a}let f=[];for(let a of d.split("\n")){if(!a)continue;let b=null;try{b=C(JSON.parse(a))}catch{continue}if(b?.type!=="user"||C(b.message)?.role!=="user")continue;let c=L(b);f.push({text:K(b),...c?{contentDigest:c.contentDigest}:{},...c?{imageCount:c.content.images.length}:{},uuid:D(b,"uuid"),timestamp:D(b,"timestamp")})}return f}(c.cwd,a,c.claudeProjectsDir)),q.emit({kind:"session-status",status:"idle"}),q}catch(a){try{await q.release()}catch(b){throw new s.EY(G(a),q,{cause:b})}throw Error(G(a))}}attach(a){if(!Number.isSafeInteger(a)||a<0)throw Error("afterSeq must be a non-negative integer");let b=this.events[0]?.seq;if(void 0!==b&&a+1<b)throw new s.AW(a,b);let c={afterSeq:a,queue:this.events.filter(b=>b.seq>a),wake:null,closed:!1};this.subscribers.add(c);let d=this.subscribers;return{async *[Symbol.asyncIterator](){try{for(;;){let a=c.queue.shift();if(a){a.seq>c.afterSeq&&(c.afterSeq=a.seq,yield a);continue}if(c.closed)break;await new Promise(a=>{c.wake=a}),c.wake=null}}finally{c.closed=!0,d.delete(c)}}}}async send(a){let b,c;if(this.unavailable())return{outcome:"rejected",reason:"dead-host"};if(!a.id)throw Error("queue entry id is required");let d=(0,s.h4)(a),e=this.deliveries.find(b=>b.entry.id===a.id);if(e&&!E(e.entry,d))throw Error("Claude queue entry id belongs to a different payload");if(!e&&void 0!==d.expectedTurnId&&d.expectedTurnId!==this.activeTurnId)return{outcome:"rejected",reason:"stale-turn"};if(e?.delivered)return{outcome:e.disposition,turnId:e.entry.id};let f=this.pendingDeliveries.get(a.id);if(f)return f.promise;let g=d.content.images.map(a=>({type:"image",source:{type:"base64",media_type:a.mime,data:this.readImage(a).toString("base64")}}));d.content.text&&g.push({type:"text",text:d.content.text});let h=e?.disposition??(this.activeTurnId?"queued-next-turn":"turn-started");try{this.deliveryLedger.recordQueued(this.identity.sessionId,d,h)}catch(a){throw this.failWithoutLedger(Error(`Claude delivery ledger failed: ${G(a)}`)),Error(`Claude delivery ledger failed: ${G(a)}`)}let i=e??{entry:structuredClone(d),disposition:h,delivered:!1};e||this.deliveries.push(i);let j=new Promise((a,d)=>{b=a,c=d}),k=setTimeout(()=>{this.pendingDeliveries.get(a.id)?.promise===j&&this.fail(Error("Claude delivery confirmation timed out; outcome is uncertain"))},this.requestTimeoutMs),l={promise:j,resolve:a=>b(a),reject:a=>c(a),timer:k};return this.pendingDeliveries.set(a.id,l),this.write({type:"user",session_id:this.identity.sessionId,message:{role:"user",content:g}}),this.turnQueue.push(a.id),this.activeTurnId?this.notifyStateListeners():(this.activeTurnId=a.id,this.emit({kind:"turn-started",turnId:a.id})),l.promise}async interrupt(a){if(this.unavailable())throw Error("Claude stream host is unavailable");if(!a||a!==this.activeTurnId)throw Error("active turn fence is stale");let b=f().randomUUID();await new Promise((c,d)=>{let e=setTimeout(()=>{this.pendingControls.delete(b);let a=Error("Claude interrupt timed out; outcome is uncertain");d(a),this.fail(a)},this.requestTimeoutMs);this.pendingControls.set(b,{resolve:c,reject:d,timer:e,interruptTurnId:a}),this.write({type:"control_request",request_id:b,request:{subtype:"interrupt"}})})}async answer(a,b){if(this.unavailable())throw Error("Claude stream host is unavailable");if(!this.attentions.has(a))throw Error("attention request is missing or already answered");let c=this.attentions.get(a),d=C(b),e=d?.behavior==="allow"?{...d,updatedInput:{...C(c.input)??{},...C(d.updatedInput)??{}}}:b??{};if(this.pendingAnswers.has(a))throw Error("attention answer is already awaiting confirmation");await new Promise((b,c)=>{let d=setTimeout(()=>{this.pendingAnswers.delete(a);let b=Error("Claude attention answer timed out; outcome is uncertain");c(b),this.fail(b)},this.requestTimeoutMs);this.pendingAnswers.set(a,{resolve:b,reject:c,timer:d}),this.write({type:"control_response",response:{subtype:"success",request_id:a,response:e}})})}async health(){return this.currentState()}terminalExitReason(){return this.terminalExit}onStateChange(a){return this.stateListeners.add(a),a(this.currentState()),()=>this.stateListeners.delete(a)}setWriterFence(a){this.writerFence=a}async release(){if(!this.released){if(!this.releasePromise){let a=this.releaseAndReap();this.releasePromise=a,a.catch(()=>{this.releasePromise===a&&(this.releasePromise=null)})}return this.releasePromise}}unavailable(){if(this.dead||this.releasing||this.released)return!0;try{return this.writerFence?.()===!1}catch{return!0}}currentState(){let a=this.reaped||this.released?null:this.child.pid??null;return{status:this.dead?"dead":this.released?"unhosted":this.attentions.size?"attention":this.activeTurnId?"active":"idle",sessionKey:this.identity.sessionId,endpoint:a?`stdio:${a}`:"stdio:released",pid:a,processStartIdentity:a?p.B.processIdentity(a):null,eventCursor:this.cursor,protocolVersion:this.protocolVersion,activeTurnRef:this.activeTurnId,pendingAttention:[...this.attentions.keys()],activeFlags:[...this.launchFlags],account:this.account}}restore(){let a=this.eventStore.load(this.identity.sessionId);this.events.push(...a),this.cursor=(0,t.dq)(this.identity.sessionId,a.at(-1)?.seq??0,this.cursor,this.onEventCursorRecovery),this.deliveries.push(...this.deliveryLedger.load(this.identity.sessionId).map(a=>({...a,entry:(0,s.h4)(a.entry)})));let b=null;for(let c of a)"turn-started"===c.kind&&(b=c.turnId),"turn-ended"===c.kind&&c.turnId===b&&(b=null),"attention"===c.kind&&this.attentions.set(c.id,C(c.attention)??{}),"attention-resolved"===c.kind&&this.attentions.delete(c.id),"session-status"===c.kind&&("dead"===c.status||"unhosted"===c.status)&&(b=null,this.attentions.clear());for(let a of(b&&this.emit({kind:"turn-ended",turnId:b,status:"error"}),this.attentions.keys()))this.emit({kind:"attention-resolved",id:a,resolution:"host-restarted"});this.attentions.clear()}reconcileTranscript(a){let b=[...a];for(let a of this.deliveries){if(a.delivered)continue;let c=a.queuedAt?Date.parse(a.queuedAt):-1/0,d=b.findIndex(b=>{let d=b.timestamp?Date.parse(b.timestamp):1/0,e=b.contentDigest??(b.text.trim()?(0,w.rM)(b.text,[]).contentDigest:null);return null!==e&&M(a.entry,{contentDigest:e,text:b.text,imageCount:b.imageCount??0})&&d>=c});if(d<0)continue;let[e]=b.splice(d,1);this.deliveryLedger.confirmDelivered(this.identity.sessionId,a.entry.id,e?.uuid??null),a.delivered=!0,a.engineMessageId=e?.uuid??null}}emit(a){let b;if(this.ledgerFailed)return;try{b=(0,t.RO)(this.cursor)}catch(a){this.ledgerFailed=!0,this.failWithoutLedger(Error(G(a)));return}this.cursor=b;let c={...a,seq:b};try{this.eventStore.append(this.identity.sessionId,c)}catch(a){this.cursor=this.events.at(-1)?.seq??Math.max(0,this.cursor-1),this.ledgerFailed=!0,this.failWithoutLedger(Error(`runtime event ledger failed: ${G(a)}`));return}for(let a of(this.events.push(c),this.subscribers))a.queue.push(c),a.wake?.();this.notifyStateListeners()}acceptStdout(a){if(this.dead||this.released)return;this.stdoutBuffer+=a;let b=this.stdoutBuffer.indexOf("\n");for(;b>=0;){let a=this.stdoutBuffer.slice(0,b);if(this.stdoutBuffer=this.stdoutBuffer.slice(b+1),Buffer.byteLength(a)>A)return this.fail(Error("Claude emitted an oversized JSONL frame"));if(a&&this.acceptMessage(a),this.dead)return;b=this.stdoutBuffer.indexOf("\n")}Buffer.byteLength(this.stdoutBuffer)>A&&this.fail(Error("Claude emitted an oversized JSONL frame"))}acceptMessage(a){let b=null;try{b=C(JSON.parse(a))}catch{}if(!b)return this.fail(Error("Claude emitted malformed stream JSON"));let c=D(b,"type"),d=D(b,"session_id");if(d&&d!==this.identity.sessionId)return this.fail(Error("Claude emitted a different session id"));if("system"===c&&"init"===b.subtype)return"none"!==b.apiKeySource?this.fail(Error("Claude stream process did not use subscription OAuth")):void 0;if("user"===c){let a=L(b),c="user"===D(b.message,"role")&&null!==a?this.deliveries.find(b=>!b.delivered&&M(b.entry,{contentDigest:a.contentDigest,text:a.content.text,imageCount:a.content.images.length})):void 0;if(c)try{this.deliveryLedger.confirmDelivered(this.identity.sessionId,c.entry.id,D(b,"uuid")),c.delivered=!0,c.engineMessageId=D(b,"uuid");let a=this.pendingDeliveries.get(c.entry.id);a&&(this.pendingDeliveries.delete(c.entry.id),clearTimeout(a.timer),a.resolve({outcome:c.disposition,turnId:c.entry.id}))}catch(a){return this.failWithoutLedger(Error(`Claude delivery ledger failed: ${G(a)}`))}this.emit({kind:"item",turnId:this.activeTurnId,item:function(a,b){let c=C(a.message)??{},d=b?b.content.images.map(a=>({type:"image",source:{type:"runtime_ref",sha256:a.sha256,media_type:a.mime,bytes:a.bytes}})):[],e=b?.content.text??K(a);e&&d.push({type:"text",text:e});let f=C(a.message)?.content;if(Array.isArray(f))for(let a of f){let b=C(a),c=D(b,"tool_use_id");b?.type==="tool_result"&&c&&d.push({type:"tool_result",tool_use_id:c,...!0===b.is_error?{is_error:!0}:{}})}return{...a,...b?{contentDigest:b.contentDigest}:{},message:{...c,content:d}}}(b,a),phase:"completed"});return}if("stream_event"===c){let a=C(b.event),c=D(C(a?.delta),"text");a?.type==="content_block_delta"&&null!==c&&(this.activeTurnId&&this.partialTurns.add(this.activeTurnId),this.emit({kind:"delta",turnId:this.activeTurnId??"unknown",text:c}));return}if("assistant"===c){let a=J(C(b.message)?.content);!a||this.activeTurnId&&this.partialTurns.has(this.activeTurnId)||this.emit({kind:"delta",turnId:this.activeTurnId??"unknown",text:a}),this.emit({kind:"item",turnId:this.activeTurnId,item:b,phase:"completed"});return}if("control_request"===c){let a=D(b,"request_id");if(!a)return this.fail(Error("Claude control request had no request id"));let c=C(b.request)??{};return this.attentions.set(a,c),void this.emit({kind:"attention",id:a,method:D(c,"subtype")??"control_request",attention:c})}if("control_cancel_request"===c){let a=D(b,"request_id");if(!a)return this.fail(Error("Claude control cancellation had no request id"));if(!this.attentions.has(a))return;let c=this.pendingAnswers.get(a);return c&&(clearTimeout(c.timer),this.pendingAnswers.delete(a),c.reject(Error("Claude attention was cancelled before answer confirmation"))),this.attentions.delete(a),void this.emit({kind:"attention-resolved",id:a,resolution:"server-resolved"})}if("control_response"===c){let a=C(b.response)??b,c=D(a,"request_id");if(!c)return;let d=this.pendingAnswers.get(c);if(d){clearTimeout(d.timer),this.pendingAnswers.delete(c),this.attentions.delete(c),"error"===a.subtype?(d.reject(Error("Claude attention answer failed")),this.emit({kind:"attention-resolved",id:c,resolution:"server-resolved"})):(d.resolve(),this.emit({kind:"attention-resolved",id:c,resolution:"answered"}));return}let e=this.pendingControls.get(c);if(!e)return;clearTimeout(e.timer),this.pendingControls.delete(c),"error"===a.subtype?e.reject(Error("Claude control request failed")):(e.interruptTurnId&&this.interruptedTurns.add(e.interruptTurnId),e.resolve());return}"result"===c&&this.acceptResult(b)}acceptResult(a){let b=this.turnQueue.shift()??this.activeTurnId;if(!b)return;this.partialTurns.delete(b);let c=this.interruptedTurns.delete(b)||"interrupted"===a.subtype?"interrupted":"success"===a.subtype?"completed":"error";for(let a of(this.emit({kind:"turn-ended",turnId:b,status:c}),this.attentions.keys())){let b=this.pendingAnswers.get(a);b&&(clearTimeout(b.timer),this.pendingAnswers.delete(a),b.reject(Error("Claude attention expired with its turn before answer confirmation"))),this.emit({kind:"attention-resolved",id:a,resolution:"turn-ended"})}this.attentions.clear(),this.activeTurnId=this.turnQueue[0]??null,this.activeTurnId?this.emit({kind:"turn-started",turnId:this.activeTurnId}):this.emit({kind:"session-status",status:"idle"})}write(a){try{this.child.stdin.write(`${JSON.stringify(a)}
87
- `)}catch(b){let a=Error(`Claude stream stdin failed: ${G(b)}`);throw this.fail(a),a}}async releaseAndReap(){if(this.releasing=!0,this.rejectPending(Error("Claude stream host released")),this.startTermination(),!await this.waitForReap(2*this.shutdownGraceMs)&&((0,q.f)(this.child,"SIGKILL",this.signalProcess),!await this.waitForReap(this.shutdownGraceMs))){if(void 0!==this.child.pid&&(this.child.exitCode??null)===null&&(this.child.signalCode??null)===null)throw Error("Claude child could not be reaped");for(let a of[this.child.stdin,this.child.stdout,this.child.stderr])try{a?.destroy()}catch{}this.reaped=!0,this.terminationTimer&&(clearTimeout(this.terminationTimer),this.terminationTimer=null),this.resolveReaped()}this.finishRelease()}finishRelease(){if(this.released)return;this.released=!0,this.releasing=!1,this.activeTurnId=null,this.attentions.clear(),this.emit({kind:"session-status",status:"unhosted"}),this.ledgerFailed&&this.notifyStateListeners(),this.closeSubscribers();let a=this.releaseCleanup;this.releaseCleanup=null,a?.()}async waitForReap(a){let b;if(this.reaped)return!0;try{return await Promise.race([this.reapedPromise.then(()=>!0),new Promise(c=>{b=setTimeout(()=>c(!1),a)})])}finally{b&&clearTimeout(b)}}fail(a){this.dead||this.released||(this.dead=!0,this.activeTurnId=null,this.attentions.clear(),this.rejectPending(a),this.emit({kind:"session-status",status:"dead"}),this.closeSubscribers(),this.startTermination())}failWithoutLedger(a){if(this.released){this.notifyStateListeners(),this.closeSubscribers();return}this.dead?this.notifyStateListeners():(this.ledgerFailed=!0,this.dead=!0,this.activeTurnId=null,this.attentions.clear(),this.rejectPending(a),this.notifyStateListeners(),this.closeSubscribers(),this.startTermination())}startTermination(){if(!this.terminationStarted&&!this.reaped){this.terminationStarted=!0;try{this.child.stdin.end()}catch{}(0,q.f)(this.child,"SIGTERM",this.signalProcess),this.terminationTimer=setTimeout(()=>{this.terminationTimer=null,this.reaped||(0,q.f)(this.child,"SIGKILL",this.signalProcess)},this.shutdownGraceMs)}}rejectPending(a){for(let b of this.pendingDeliveries.values())clearTimeout(b.timer),b.reject(Error(G(a)));for(let b of(this.pendingDeliveries.clear(),this.pendingControls.values()))clearTimeout(b.timer),b.reject(Error(G(a)));for(let b of(this.pendingControls.clear(),this.pendingAnswers.values()))clearTimeout(b.timer),b.reject(Error(G(a)));this.pendingAnswers.clear()}closeSubscribers(){for(let a of this.subscribers)a.closed=!0,a.wake?.()}notifyStateListeners(){let a=this.currentState();for(let b of this.stateListeners)b(a)}}},33149:(a,b,c)=>{c.d(b,{$s:()=>i,pq:()=>k});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=(0,c(50920).BQ)("events.ndjson");function i(a,b){try{e().mkdirSync(g().dirname(h),{recursive:!0});try{e().statSync(h).size>4194304&&e().renameSync(h,h+".1")}catch{}let c={ts:new Date().toISOString(),action:a,...b};e().appendFileSync(h,JSON.stringify(c)+"\n","utf8")}catch{}}function j(a,b=128){return a?a.replace(/[^a-zA-Z0-9:_-]/g,"_").slice(0,b):null}function k(a){i("quota",{result:"live"===a.provenance?"ok":"error",meta:{engine:a.engine,accountId:j(a.accountId)??"unknown",accountKind:a.accountKind,envelope:a.envelope??"unknown",probePhase:a.probePhase,provenance:a.provenance,reasonCode:j(a.reasonCode)}})}},33353:(a,b,c)=>{c.d(b,{AW:()=>f,BL:()=>g,EY:()=>h,h4:()=>e});var d=c(88417);function e(a){let b=(0,d.rM)(a.content?.text??a.text??"",a.content?.images??a.images??[]);if(a.contentDigest&&a.contentDigest!==b.contentDigest)throw Error("queue entry content digest mismatch");return{id:a.id,content:b.content,contentDigest:b.contentDigest,...void 0!==a.expectedTurnId?{expectedTurnId:a.expectedTurnId}:{},...a.runtime?{runtime:a.runtime}:{},...a.selectedContext?{selectedContext:a.selectedContext}:{},...a.origin?{origin:a.origin}:{}}}class f extends Error{constructor(a,b){super(`runtime replay begins at sequence ${b}; requested after ${a}`),this.requestedAfterSeq=a,this.firstAvailableSeq=b,this.name="RuntimeReplayGapError"}}class g extends Error{constructor(a,b){super(a),this.phase=b,this.name="StructuredCompactError"}}class h extends Error{constructor(a,b,c){super(a,c),this.host=b,this.name="StructuredHostAdoptionCleanupError"}}},34219:(a,b,c)=>{function d(a){return["You are now in an implement-review loop controlled by the local log viewer.","",...a?["Pinned flow specification and acceptance criteria:",a,""]:["Before your first REVIEW_READY, write spec.md with the task statement and an acceptance-criteria list using entries such as `AC1: …`.",""],"Work normally in this long-lived implementer session. When the work is ready for a fresh independent review, end your final assistant message with a line that starts exactly with:","REVIEW_READY: <one-line note>","Do not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the work is actually ready for review.","","Every review round will use a fresh reviewer who sees the full diff from the captured base ref, with no history from earlier rounds. If the reviewer sends findings back, respond to each finding before the next marker using:","FIXED","or","REJECTED — <reason>","","Give concrete arguments for rejections because the next reviewer will be fresh and blind to previous discussion."].join("\n")}function e(a,b){return["You are the reviewer in an implement-review loop.\n",`Working directory: ${a.cwd}`,`Review scope: git diff ${a.baseRef}...HEAD plus uncommitted changes in the same working tree.`,`Exact review HEAD: ${b.reviewHeadSha??"unavailable"}`,"\nPinned flow specification and acceptance criteria:",a.spec?.trim()||"No pinned specification was supplied for this flow.",b.readyNote?`Ready note: ${b.readyNote}`:"Ready note: none provided.","\nRead-only requirement: run tests, builds, linters, searches, and other investigation commands as needed. Do not edit files, write notebooks, commit, stage, or mutate the working tree.\n\nOutput exactly this format:\nVERDICT: APPROVE | REQUEST_CHANGES | COMMENT\n\nThen write findings in Markdown. For each finding include severity, file, line, title, and explanation. Use REQUEST_CHANGES for required fixes, COMMENT for non-blocking notes, and APPROVE only when no blocking issues remain."].join("\n")}function f(a,b){return["Review round findings are below. Address every finding before the next review marker.\n",b.trim(),"\nFor each finding, respond with FIXED or REJECTED — <reason>. When the work is reviewable again, end your final assistant message with:\nREVIEW_READY: <one-line note>"].join("\n")}c.d(b,{SB:()=>d,i0:()=>f,qu:()=>e})},36385:(a,b,c)=>{c.d(b,{l:()=>e}),c(2208);var d=c(29966);function e(a=process.env){let b=a.LLV_SPAWN_TRANSPORT?.trim();if(!b)return(0,d.cM)(a)&&(0,d.Zn)(a)&&(0,d.Ee)(a)?"structured":"tmux";if("tmux"!==b&&"structured"!==b)throw Error("LLV_SPAWN_TRANSPORT must be tmux or structured");return b}c(88417)},36454:(a,b,c)=>{c.d(b,{io:()=>r,nn:()=>s,Bq:()=>u,Ki:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(10456);c(53133);var i=c(62862),j=c(40006),k=c(50920),l=c(92128),m=c(40216),n=c(44123);let o="app-server-initialize-timeout",p=globalThis;function q(){return{version:2,engines:{claude:{},codex:{}}}}function r(a,b){let c=((!p.__llvLimitsCache&&(p.__llvLimitsCache=function(){try{let a=JSON.parse(e().readFileSync((0,k.BQ)("limits-cache.json"),"utf8"));if(2===a.version&&a.engines&&"object"==typeof a.engines){let b=q();for(let c of["claude","codex"]){let d=a.engines[c];if(d&&"object"==typeof d)for(let[a,e]of Object.entries(d)){let d=function(a){if(!a||"object"!=typeof a||"number"!=typeof a.at||void 0===a.data||!a.provenance)return null;let b=a.provenance;return"live"!==b.source&&"transcript"!==b.source&&"cache"!==b.source&&"unavailable"!==b.source||"string"!=typeof b.reason&&null!==b.reason||"string"!=typeof b.staleSince&&null!==b.staleSince||void 0!==b.retryAt&&"string"!=typeof b.retryAt&&null!==b.retryAt||void 0!==a.baseData&&null!==a.baseData&&"object"!=typeof a.baseData||void 0!==a.retryAt&&null!==a.retryAt&&"number"!=typeof a.retryAt||void 0!==a.consecutive429s&&(!Number.isInteger(a.consecutive429s)||a.consecutive429s<0)||void 0!==a.consecutiveInitializeTimeouts&&(!Number.isInteger(a.consecutiveInitializeTimeouts)||a.consecutiveInitializeTimeouts<0)?null:a}(e);d&&(b.engines[c][a]="codex"===c?{...d,data:(0,l.Zc)(d.data),...void 0===d.baseData?{}:{baseData:(0,l.Zc)(d.baseData)}}:d)}}return b}if("number"==typeof a.at&&"string"==typeof a.accountId&&a.data?.codex){let b=!function(a){if(!a||"object"!=typeof a)return!1;let b=a=>!!a&&("live"===a.source||"transcript"===a.source||"cache"===a.source||"unavailable"===a.source)&&("string"==typeof a.reason||null===a.reason)&&("string"==typeof a.staleSince||null===a.staleSince)&&(void 0===a.retryAt||"string"==typeof a.retryAt||null===a.retryAt);return b(a.claude)&&b(a.codex)}(a.data.provenance)?{source:"cache",reason:"legacy cache provenance unavailable",staleSince:a.data.staleSince??null}:a.data.provenance.codex;return{version:2,engines:{claude:{},codex:{[a.accountId]:{at:a.at,data:(0,l.Zc)(a.data.codex),provenance:b}}}}}}catch{}return q()}()),p.__llvLimitsCache).engines[a][b]??null)?.provenance;return c?{...c}:null}async function s(a,b=Date.now,c=8e3){let d="",f=null;try{let b=JSON.parse(e().readFileSync(a,"utf8"));"string"==typeof b.claudeAiOauth?.accessToken&&(d=b.claudeAiOauth.accessToken),"string"==typeof b.claudeAiOauth?.subscriptionType&&(f=b.claudeAiOauth.subscriptionType)}catch(a){return{data:null,reason:`credentials unreadable: ${a instanceof Error?a.message:String(a)}`,source:"unavailable"}}if(!d)return{data:null,reason:"credentials missing access token",source:"unavailable"};try{let a=await fetch("https://api.anthropic.com/api/oauth/usage",{headers:{authorization:"Bearer "+d,"anthropic-beta":"oauth-2025-04-20"},signal:AbortSignal.timeout(c)});if(429===a.status)return{data:null,reason:n.u1,source:"unavailable",retryAt:function(a,b){if(!a)return;let c=Number(a);if(Number.isFinite(c)&&c>=0)return b+1e3*c;let d=Date.parse(a);if(Number.isFinite(d))return Math.max(b,d)}(a.headers.get("retry-after"),b())};if(401===a.status)return{data:null,reason:n.e4,source:"unavailable"};if(!a.ok)return{data:null,reason:`oauth usage status ${a.status}`,source:"unavailable"};let e=await a.json(),g={session:t(e.five_hour,l.Gn),weekly:t(e.seven_day,l.rX),plan:f,capturedAt:null};if(!g.session&&!g.weekly)return{data:null,reason:"oauth usage response had no windows",source:"unavailable"};return{data:g,reason:null,source:"live"}}catch(a){return{data:null,reason:`oauth usage fetch failed: ${a instanceof Error?a.message:String(a)}`,source:"unavailable"}}}function t(a,b){if(!a||"number"!=typeof a.utilization)return null;let c="string"==typeof a.resets_at?Date.parse(a.resets_at):NaN;return{usedPercent:a.utilization,resetsAt:Number.isFinite(c)?Math.round(c/1e3):null,windowMinutes:b}}function u(a,b=Math.round(Date.now()/1e3)){let c=a=>a?{usedPercent:a.usedPercent,resetsAt:a.resetsAt,windowMinutes:a.windowDurationMins}:null,d=(0,l.v9)(c(a.primary),c(a.secondary),b);return{session:d.session,weekly:d.weekly,plan:a.planType,capturedAt:b}}async function v(a={}){let b=a.account??(0,h.O$)(),c=a.now??Date.now,d=function(a=(0,h.O$)().sessionsDir){let b=0,c=null,d=null;for(let f of function(a){let b=new Set(function(a){let b=x(g().join(g().dirname(a),"history.jsonl"),196608);if(!b)return[];let c=[],d=new Set;for(let e of b.split("\n").reverse())if(e.includes('"session_id"'))try{let b=JSON.parse(e);if("string"!=typeof b.session_id||d.has(b.session_id))continue;d.add(b.session_id);let f=function(a,b){let c=/^([0-9a-f]{8})-([0-9a-f]{4})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.exec(b);if(!c)return null;let d=Number.parseInt(c[1]+c[2],16);if(!Number.isFinite(d))return null;let e=new Date(d);return Number.isNaN(e.getTime())?null:g().join(a,String(e.getFullYear()),String(e.getMonth()+1).padStart(2,"0"),String(e.getDate()).padStart(2,"0"))}(a,b.session_id);if(!f)continue;let h=w(f).find(a=>a.endsWith(`${b.session_id}.jsonl`));if(h&&c.push(g().join(f,h)),d.size>=12)break}catch{}return c}(a));for(let c of function(a){let b=[];for(let c of w(a))for(let d of w(g().join(a,c)))for(let e of w(g().join(a,c,d)))if(b.push(g().join(a,c,d,e)),b.length>=8)return b;return b}(a))for(let a of w(c).filter(a=>a.endsWith(".jsonl")).slice(0,12))b.add(g().join(c,a));let c=[];for(let a of b)try{c.push({p:a,m:e().statSync(a).mtimeMs})}catch{}return c.sort((a,b)=>b.m-a.m||b.p.localeCompare(a.p)).slice(0,12).map(a=>a.p)}(a)){b+=1;let a=function(a){let b=x(a,196608);if(!b)return{data:null,rejectedAt:null};let c=b.split("\n"),d=null,e=null;for(let a=c.length-1;a>=0;a--){let b=c[a];if(b.includes('"rate_limits"')||b.includes("usage_limit_exceeded"))try{let a=JSON.parse(b),c="string"==typeof a.timestamp?Date.parse(a.timestamp):NaN,f=Number.isFinite(c)?c/1e3:null;if(a.payload?.codex_error_info==="usage_limit_exceeded"||a.payload?.error?.codex_error_info==="usage_limit_exceeded"){null!==f&&(null===e||f>e)&&(e=f);continue}let g=a.payload?.rate_limits;if(!g)continue;let h=(0,l.v9)(A(g.primary,f),A(g.secondary,f),f);if(!h.session&&!h.weekly)continue;(!d||null===d.capturedAt||null!==f&&f>d.capturedAt)&&(d={session:h.session,weekly:h.weekly,plan:"string"==typeof g.plan_type?g.plan_type:null,capturedAt:f})}catch{}}return{data:d,rejectedAt:e}}(f);null!==a.rejectedAt&&(null===d||a.rejectedAt>d)&&(d=a.rejectedAt),a.data&&(!c||null===c.capturedAt||null!==a.data.capturedAt&&a.data.capturedAt>c.capturedAt)&&(c=a.data)}if(c){let a=null!==d&&(null===c.capturedAt||d>=c.capturedAt)?d:null;return{data:c,reason:null,source:"transcript",rejectedAt:a}}return null!==d?{data:null,reason:"usage-limit-exceeded",source:"transcript",rejectedAt:d}:{data:null,reason:0===b?"no codex session files":`no rate_limits event in newest ${b} session files`,source:"unavailable"}}(b.sessionsDir);try{let e=await (a.liveReader??(a=>(0,i.VD)().readRateLimits(a)))(b),f=c()/1e3,g=u(e,f),h=(d.data?z(d.data,d.rejectedAt):null)??z(g,d.rejectedAt),j=h??d.data;if(!j)return{data:g,reason:null,source:"live"};let k=a=>(0,m.I1)({limits:g,observedAt:g.capturedAt,stale:!1,source:"live"},{limits:a,observedAt:a.capturedAt,stale:!1,source:"transcript"},f),l=k(j),n=(0,m.ap)(l,"transcript"),o=h?d.data?(0,m.L1)(k(d.data)):g:null;return{data:(0,m.L1)(l),...o?{baseData:o}:{},reason:n?"transcript-reconciled":null,source:n?"transcript":"live"}}catch(f){let a=(0,j.XR)(f instanceof Error?f.message:String(f)),e=/request timed out:\s*initialize\b/i.test(a);if(console.warn(`[limits] Codex app-server probe for ${b.id} failed: ${a}`),d.data){let a=z(d.data,d.rejectedAt),b=a&&function(a,b){let c=y(a);if(!c||c.value.usedPercent<100)return!1;let d=c.value;if(null!==d.resetsAt)return d.resetsAt>b;if(null===d.observedAt||void 0===d.observedAt)return!0;let e="number"==typeof d.windowMinutes?d.windowMinutes:"weekly"===c.key?l.rX:l.Gn;return b-d.observedAt<60*e}(a,c()/1e3)?a:d.data;return{data:b,...b===a?{baseData:d.data}:{},reason:"transcript-fallback",source:"transcript",...e?{backoffReason:o}:{}}}if(null!==d.rejectedAt&&void 0!==d.rejectedAt)return{...d,...e?{backoffReason:o}:{}};return{data:null,reason:e?o:"app-server-unavailable",source:"unavailable"}}}function w(a){try{return e().readdirSync(a).sort().reverse()}catch{return[]}}function x(a,b){let c;try{c=e().openSync(a,"r")}catch{return null}try{let a=e().fstatSync(c).size,d=Math.min(a,b),f=Buffer.alloc(d);return e().readSync(c,f,0,d,a-d),f.toString("utf8")}catch{return null}finally{e().closeSync(c)}}function y(a){return["session","weekly"].flatMap(b=>a[b]?[{key:b,value:a[b]}]:[]).sort((a,b)=>b.value.usedPercent-a.value.usedPercent||a.key.localeCompare(b.key))[0]??null}function z(a,b){return null==b||!function(a,b){let c=y(a)?.value;if(!c)return!1;if(null===c.resetsAt)return!0;if("number"!=typeof c.windowMinutes)return b<=c.resetsAt;let d=60*c.windowMinutes;return b>=c.resetsAt-d&&b<c.resetsAt+d}(a,b)?null:function(a,b){let c=y(a);if(!c)return a;let d=null!==c.value.resetsAt&&c.value.resetsAt<=b?null:c.value.resetsAt,e={...a,[c.key]:{...c.value,usedPercent:100,resetsAt:d,observedAt:b,source:"transcript"}},f=[e.session?.observedAt,e.weekly?.observedAt].filter(a=>null!=a);return{...e,capturedAt:f.length?Math.min(...f):b}}(a,b)}function A(a,b){if(!a||"number"!=typeof a.used_percent)return null;let c=null;return"number"==typeof a.resets_at?c=a.resets_at:"number"==typeof a.resets_in_seconds&&null!==b&&(c=b+a.resets_in_seconds),{usedPercent:a.used_percent,resetsAt:c,windowMinutes:"number"==typeof a.window_minutes?a.window_minutes:null,observedAt:b}}},36855:(a,b,c)=>{c.d(b,{DO:()=>n,G:()=>u,N2:()=>w,ON:()=>o,PF:()=>L,ki:()=>q,sP:()=>m,u1:()=>p});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(30277),l=c(88417);let m=16,n=0xa00000,o=0x1200000,p=0x1800000;function q(a,b){return{supported:b,reason:b?null:"codex"===a?l.t6:l.gy,formats:[...l.in],maxImages:m,maxRawBytesPerImage:n,maxEncodedBytesPerRequest:p}}let r={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},s=new Int32Array(new SharedArrayBuffer(4));function t(a){Atomics.wait(s,0,0,a)}function u(a,b){if("image/png"===b)return a.length>=24&&a.subarray(0,8).equals(Buffer.from("89504e470d0a1a0a","hex"))&&"IHDR"===a.subarray(12,16).toString("ascii");if("image/jpeg"===b)return a.length>=4&&255===a[0]&&216===a[1]&&255===a[2]&&255===a.at(-2)&&217===a.at(-1);if("image/gif"===b){let b=a.subarray(0,6).toString("ascii");return a.length>=10&&("GIF87a"===b||"GIF89a"===b)}return a.length>=12&&"RIFF"===a.subarray(0,4).toString("ascii")&&"WEBP"===a.subarray(8,12).toString("ascii")}function v(a){let b=(0,l.CC)(a.mime);if(!b)throw Error("runtime image MIME is unsupported");let c=function(a){if(!a||a.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(a))throw Error("runtime image base64 is invalid");let b=Buffer.from(a,"base64");if(0===b.length||b.toString("base64")!==a)throw Error("runtime image base64 is invalid");return b}(a.base64);if(c.byteLength>n)throw Error("runtime image exceeds 10 MB");if(!u(c,b))throw Error("runtime image signature does not match MIME");return{data:c,mime:b}}function w(a){return a.map(a=>{let{data:b,mime:c}=v(a);return{sha256:e().createHash("sha256").update(b).digest("hex"),mime:c,bytes:b.byteLength}})}function x(a){let b=g().openSync(a,"r");try{g().fsyncSync(b)}finally{g().closeSync(b)}}let y=/^[a-f0-9]{64}$/,z=/^([a-f0-9]{64})\.(png|jpg|gif|webp)$/;function A(a,b,c){if(Array.isArray(a)){for(let d of a)A(d,b,c);return}if(!a||"object"!=typeof a)return;"string"==typeof a.sha256&&y.test(a.sha256)&&"string"==typeof a.mime&&(0,l.CC)(a.mime)&&Number.isSafeInteger(a.bytes)&&Number(a.bytes)>0&&b.add(a.sha256);let d=function(a){if("delivered"!==a.state||!Array.isArray(a.runtimeImages))return null;let b="string"==typeof a.deliveredAt?Date.parse(a.deliveredAt):"string"==typeof a.createdAt?Date.parse(a.createdAt):NaN;return Number.isFinite(b)?b:null}(a);for(let[e,f]of Object.entries(a))"runtimeImages"===e&&null!==d&&d<=c||A(f,b,c)}function B(a,b){let c=a.split("\n"),d=a.endsWith("\n"),e=[];for(let[a,f]of c.entries())if(f.trim())try{e.push(JSON.parse(f))}catch(e){if(a===c.length-1&&!d)break;throw Error(`${b} contains malformed JSON`,{cause:e})}return e}function C(a,b,c){let d;try{d=g().readFileSync(a,"utf8")}catch(a){if("ENOENT"===a.code)return;throw a}if(d.trim()){if(a.endsWith(".jsonl")||a.endsWith(".ndjson")){for(let e of B(d,a))A(e,b,c);return}A(JSON.parse(d),b,c)}}function D(a){let b=process.getBuiltinModule?.("bun:sqlite");if(!b)throw Error("runtime image reachability requires the Bun runtime");return new b.Database(a,{readonly:!0,strict:!0})}let E=new Set(["delivered","turn-started","steered"]);function F(a,b){let c;if("string"!=typeof a||!a.trim())return!1;try{c=JSON.parse(a)}catch{return!1}if(!c||"object"!=typeof c||Array.isArray(c))return!1;let d=c;if("string"!=typeof d.status||!E.has(d.status))return!1;let e="string"==typeof d.at?Date.parse(d.at):NaN;return Number.isFinite(e)&&e<=b}function G(a){let b;try{let c=g().openSync(a,g().constants.O_RDONLY|g().constants.O_NOFOLLOW);try{b=JSON.parse(g().readFileSync(c,"utf8"))}finally{g().closeSync(c)}}catch(a){if(["ENOENT","ELOOP"].includes(a.code??"")||a instanceof SyntaxError)return null;throw a}if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b;return Number.isSafeInteger(c.pid)&&!(c.pid<=0)&&(null===c.startIdentity||"string"==typeof c.startIdentity&&c.startIdentity)&&"string"==typeof c.token&&c.token?c:null}function H(a){return G(i().join(a,"owner.json"))}function I(a){return null!==a&&!!k.B.pidAlive(a.pid)&&(null===a.startIdentity||k.B.processIdentity(a.pid)===a.startIdentity)}class J{constructor(a=(0,j.BQ)("runtime-images"),b={}){this.root=a,this.maxBytes=b.maxBytes??function(){let a=process.env.LLV_RUNTIME_IMAGE_STORE_MAX_BYTES?.trim();if(!a)return 0x10000000;let b=Number(a);if(!Number.isSafeInteger(b)||b<=0)throw Error("runtime image storage quota is invalid");return b}(),this.fault=b.fault??(()=>{}),this.now=b.now??Date.now,this.abandonedPartialMaxAgeMs=b.abandonedPartialMaxAgeMs??36e5,this.gcGraceMs=b.gcGraceMs??36e5,this.reachableDigests=b.reachableDigests??(()=>(function(a=(0,j.Pn)(),b={}){let c=(b.now??Date.now())-(b.retiredGraceMs??864e5),d=new Set;return C(i().join(a,"agent-registry.json"),d,c),!function(a,b,c){if(!g().existsSync(a))return;let d=D(a);try{if(!d.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'registry_rows'").get())return;for(let a of d.query("SELECT value_json FROM registry_rows").all())A(JSON.parse(a.value_json),b,c)}finally{d.close()}}(i().join(a,"agent-registry.sqlite"),d,c),!function(a,b,c){let d;try{d=g().readdirSync(a,{withFileTypes:!0})}catch(a){if("ENOENT"===a.code)return;throw a}for(let e of d){let d;if(!e.isFile()||!e.name.endsWith(".jsonl"))continue;let f=i().join(a,e.name);try{d=g().readFileSync(f,"utf8")}catch(a){if("ENOENT"===a.code)continue;throw a}if(!d.trim())continue;let h=new Map,j=new Map;for(let a of B(d,f)){let d=a&&"object"==typeof a&&!Array.isArray(a)?a:null,e=d?.kind==="queued"&&d.entry&&"object"==typeof d.entry?d.entry:null;if(e&&"string"==typeof e.id){let a=h.get(e.id)??new Set;A(d,a,c),h.set(e.id,a);continue}if(d?.kind==="delivered"&&"string"==typeof d.entryId){let a="string"==typeof d.deliveredAt?Date.parse(d.deliveredAt):NaN;Number.isFinite(a)&&j.set(d.entryId,a);continue}A(a,b,c)}for(let[a,d]of h){let e=j.get(a);if(void 0===e||!(e<=c))for(let a of d)b.add(a)}}}(i().join(a,"claude-delivery-ledger"),d,c),!function(a,b,c){let d;try{d=g().readdirSync(a,{withFileTypes:!0})}catch(a){if("ENOENT"===a.code)return;throw a}for(let e of d)e.isFile()&&(e.name.endsWith(".json")||e.name.endsWith(".jsonl")||e.name.endsWith(".ndjson"))&&C(i().join(a,e.name),b,c)}(i().join(a,"structured-host-events"),d,c),!function(a,b,c){if(!g().existsSync(a))return;let d=D(a);try{let a=new Set(d.query("SELECT name FROM sqlite_master WHERE type = 'table'").all().map(a=>a.name));if(a.has("operations")){if(new Set(d.query("PRAGMA table_info(operations)").all().map(a=>a.name)).has("operation_id")){let a=d.query("SELECT operation_id, request_json, receipt_json FROM operations").all(),e=function(a,b){let c=new Map(a.map(a=>[a.operation_id,a])),d=new Map(a.map(a=>[a.operation_id,function(a){try{let b=JSON.parse(a);return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}(a.receipt_json)])),e=new Set;for(let a of d.values())"string"==typeof a?.retryOfOperationId&&e.add(a.retryOfOperationId);let f=new Map;for(let a of c.keys()){let b=a,c=new Set;for(;!c.has(b);){c.add(b);let a=d.get(b)?.retryOfOperationId;if("string"!=typeof a)break;b=a}let e=f.get(b)??new Set;e.add(a),f.set(b,e)}let g=new Set;for(let a of f.values()){let d=[...a].filter(a=>!e.has(a));if(0!==d.length&&d.every(a=>F(c.get(a)?.receipt_json,b)))for(let b of a)g.add(b)}return g}(a,c);for(let d of a)if(!e.has(d.operation_id))for(let a of[d.request_json,d.receipt_json])a.trim()&&A(JSON.parse(a),b,c)}else for(let a of d.query("SELECT request_json, receipt_json FROM operations").all())if(!F(a.receipt_json,c))for(let d of[a.request_json,a.receipt_json])d.trim()&&A(JSON.parse(d),b,c)}for(let[e,f]of[["events",["payload_json"]],["projections",["state_json"]],["entities",["state_json"]],["outbox",["payload_json"]],["producer_receipts",["event_json"]]])if(a.has(e))for(let a of d.query(`SELECT ${f.join(", ")} FROM ${e}`).all())for(let d of f){let e=a[d];"string"==typeof e&&e.trim()&&A(JSON.parse(e),b,c)}}finally{d.close()}}(i().join(a,"runtime-events.sqlite"),d,c),d})(i().dirname(this.root),{now:this.now()})),this.afterRootOpen=b.afterRootOpen??(()=>{}),this.writerLockStaleMs=b.writerLockStaleMs??3e4,this.writerLockWaitMs=b.writerLockWaitMs??5e3,this.procSelfFdPaths=b.procSelfFdPaths??g().existsSync("/proc/self/fd"),this.ensurePrivateRoot(),this.withWriterLock("maintenance",a=>this.removeAgedPartials(a))}putMany(a){if(a.length>m)throw Error("too many images");if(a.reduce((a,b)=>a+Buffer.byteLength(b.base64),0)>p)throw Error("runtime image request encoding is too large");let b=a.map(a=>this.validateUpload(a));if(b.reduce((a,b)=>a+b.data.byteLength,0)>o)throw Error("runtime image request is too large");return this.withWriterLock("write",a=>{this.assertQuota(a,b);let c=[],d=[];try{for(let{data:e,mime:f}of b){let{ref:b,created:g}=this.put(a,e,f);g&&c.push(i().join(a.path,i().basename(this.pathFor(b)))),d.push(b)}}catch(b){for(let a of c)g().rmSync(a,{force:!0});throw c.length&&x(a.path),b}return d})}read(a){let b=this.openRoot("read");try{return this.readFromRoot(b,a)}finally{g().closeSync(b.fd)}}pathFor(a){let b=(0,l.CC)(a.mime);if(!b||!/^[a-f0-9]{64}$/.test(a.sha256)||!Number.isSafeInteger(a.bytes)||a.bytes<=0)throw Error("runtime image ref is invalid");return i().join(this.root,`${a.sha256}.${r[b]}`)}validateUpload(a){return v(a)}assertQuota(a,b){let c=this.storedBytes(a),d=()=>{let c=new Map;for(let{data:d,mime:f}of b){let b=e().createHash("sha256").update(d).digest("hex"),h=i().join(a.path,`${b}.${r[f]}`);g().existsSync(h)||c.set(h,d.byteLength)}return[...c.values()].reduce((a,b)=>a+b,0)},f=d();if(c+f>this.maxBytes){let g=new Set(this.reachableDigests());for(let{data:a}of b)g.add(e().createHash("sha256").update(a).digest("hex"));this.collectGarbage(a,g),c=this.storedBytes(a),f=d()}if(c+f>this.maxBytes)throw Error("runtime image storage quota exceeded")}withWriterLock(a,b){this.ensurePrivateRoot();let c=this.openRoot(a),d=i().join(c.path,".writer-lock"),f=this.now()+this.writerLockWaitMs,h={pid:process.pid,startIdentity:k.B.processIdentity(process.pid),token:e().randomUUID()},j=!1;try{for(;!j&&(this.withWriterAcquisitionGate(c,f,()=>{this.assertRootPinned(c);let a=!1;try{g().mkdirSync(d,{mode:448}),a=!0}catch(a){if("EEXIST"!==a.code)throw a}if(a)try{g().writeFileSync(i().join(d,"owner.json"),JSON.stringify(h),{flag:"wx",mode:384}),j=!0;return}catch(a){if("EEXIST"===a.code)return;throw g().rmSync(d,{recursive:!0,force:!0}),a}try{let a=g().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink())throw Error("runtime image writer lock is unsafe");this.now()-a.mtimeMs>this.writerLockStaleMs&&!I(H(d))&&this.reclaimStaleWriterLock(c,d,a)}catch(a){if("ENOENT"!==a.code)throw a}}),!j);){if(this.now()>=f)throw Error("runtime image writer lock timed out");t(5)}if(H(d)?.token!==h.token)throw Error("runtime image writer lock was lost before entry");return b(c)}finally{j&&H(d)?.token===h.token&&g().rmSync(d,{recursive:!0,force:!0}),g().closeSync(c.fd)}}withWriterAcquisitionGate(a,b,c){let d=i().join(a.path,".writer-lock-gate.queue"),f=i().join(a.path,".writer-lock-gate"),h={pid:process.pid,startIdentity:k.B.processIdentity(process.pid),token:e().randomUUID()};g().mkdirSync(d,{recursive:!0,mode:448});let j=i().join(d,`${String(this.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`);g().writeFileSync(j,JSON.stringify(h),{flag:"wx",mode:384});let l=!1;try{for(;!l;){this.assertRootPinned(a);let c=[];for(let a of g().readdirSync(d).filter(a=>a.endsWith(".json")).sort()){let b=i().join(d,a),e=G(b);if(!e||!I(e)){g().rmSync(b,{force:!0});continue}c.push(b)}if(c[0]===j)try{g().mkdirSync(f,{mode:448}),g().writeFileSync(i().join(f,"owner.json"),JSON.stringify(h),{flag:"wx",mode:384}),l=!0}catch(a){if("EEXIST"!==a.code)throw a;I(H(f))||g().rmSync(f,{recursive:!0,force:!0})}if(!l){if(this.now()>=b)throw Error("runtime image writer lock timed out");t(5)}}return c()}finally{l&&H(f)?.token===h.token&&g().rmSync(f,{recursive:!0,force:!0}),g().rmSync(j,{force:!0})}}reclaimStaleWriterLock(a,b,c){let d,f=i().join(a.path,`.writer-lock-reclaim.${e().randomUUID()}`);try{g().renameSync(b,f)}catch(a){if("ENOENT"===a.code)return;throw a}try{d=g().lstatSync(f)}catch{return}if(d.ino===c.ino&&d.dev===c.dev)return void g().rmSync(f,{recursive:!0,force:!0});try{g().renameSync(f,b)}catch(a){throw Error("runtime image writer lock reclamation raced",{cause:a})}}removeAgedPartials(a){for(let b of(this.assertRootPinned(a),g().readdirSync(a.path,{withFileTypes:!0}))){if(!b.isFile()||!b.name.endsWith(".partial"))continue;let c=i().join(a.path,b.name),d=g().lstatSync(c);d.isFile()&&!d.isSymbolicLink()&&this.now()-d.mtimeMs>=this.abandonedPartialMaxAgeMs&&g().rmSync(c,{force:!0})}}storedBytes(a){this.assertRootPinned(a);let b=0;for(let c of g().readdirSync(a.path,{withFileTypes:!0})){if(!c.isFile()||!z.test(c.name))continue;let d=g().lstatSync(i().join(a.path,c.name));d.isFile()&&!d.isSymbolicLink()&&(b+=d.size)}return b}collectGarbage(a,b){for(let c of(this.assertRootPinned(a),g().readdirSync(a.path,{withFileTypes:!0}))){let d=c.isFile()?z.exec(c.name):null;if(!d||b.has(d[1]))continue;let e=i().join(a.path,c.name),f=g().lstatSync(e);!f.isFile()||f.isSymbolicLink()||this.now()-f.mtimeMs<this.gcGraceMs||g().rmSync(e,{force:!0})}x(a.path)}ensurePrivateRoot(){let a;try{a=g().lstatSync(this.root)}catch(b){if("ENOENT"!==b.code)throw b;g().mkdirSync(this.root,{recursive:!0,mode:448}),a=g().lstatSync(this.root)}let b=process.geteuid?.();if(!a.isDirectory()||a.isSymbolicLink()||void 0===b||a.uid!==b||(511&a.mode)!=448)throw Error("runtime image root is unsafe")}openRoot(a){let b;try{b=g().openSync(this.root,g().constants.O_RDONLY|g().constants.O_DIRECTORY|g().constants.O_NOFOLLOW)}catch(a){throw Error("runtime image root is unsafe",{cause:a})}try{let c,d=g().fstatSync(b),e=process.geteuid?.();if(!d.isDirectory()||void 0===e||d.uid!==e||(511&d.mode)!=448)throw Error("runtime image root is unsafe");this.afterRootOpen(a);try{c=g().lstatSync(this.root)}catch(a){throw Error("runtime image root changed during operation",{cause:a})}if(!c.isDirectory()||c.isSymbolicLink()||c.dev!==d.dev||c.ino!==d.ino)throw Error("runtime image root changed during operation");return this.procSelfFdPaths?{fd:b,path:`/proc/self/fd/${b}`,pinned:!0}:{fd:b,path:this.root,pinned:!1}}catch(a){throw g().closeSync(b),a}}assertRootPinned(a){let b;if(a.pinned)return;let c=g().fstatSync(a.fd);try{b=g().lstatSync(this.root)}catch(a){throw Error("runtime image root changed during operation",{cause:a})}if(!b.isDirectory()||b.isSymbolicLink()||b.dev!==c.dev||b.ino!==c.ino)throw Error("runtime image root changed during operation")}readFromRoot(a,b){let c;this.assertRootPinned(a);let d=i().join(a.path,i().basename(this.pathFor(b)));try{c=g().openSync(d,g().constants.O_RDONLY|g().constants.O_NOFOLLOW)}catch(c){let a=c.code;if("ENOENT"===a)throw Error(`runtime image ${b.sha256.slice(0,12)} is missing`);if("ELOOP"===a)throw Error("runtime image ref is unsafe");throw c}try{if(!g().fstatSync(c).isFile())throw Error("runtime image ref is unsafe");let a=g().readFileSync(c);if(a.byteLength!==b.bytes||e().createHash("sha256").update(a).digest("hex")!==b.sha256)throw Error(`runtime image ${b.sha256.slice(0,12)} digest mismatch`);if(!u(a,b.mime))throw Error(`runtime image ${b.sha256.slice(0,12)} signature mismatch`);return a}finally{g().closeSync(c)}}put(a,b,c){this.assertRootPinned(a);let d=e().createHash("sha256").update(b).digest("hex"),f={sha256:d,mime:c,bytes:b.byteLength},h=i().join(a.path,i().basename(this.pathFor(f)));if(g().existsSync(h)){this.readFromRoot(a,f),g().chmodSync(h,384);let b=new Date(this.now());return g().utimesSync(h,b,b),{ref:f,created:!1}}let j=i().join(a.path,`.${d}.${e().randomUUID()}.partial`),k=!1;try{let c=g().openSync(j,"wx",384);try{this.fault("write"),g().writeFileSync(c,b),this.fault("fsync"),g().fsyncSync(c)}finally{g().closeSync(c)}this.fault("link"),g().linkSync(j,h),k=!0,g().chmodSync(h,384),this.fault("directory-fsync"),x(a.path)}catch(b){if("EEXIST"===b.code)return this.readFromRoot(a,f),{ref:f,created:!1};throw k&&(g().rmSync(h,{force:!0}),x(a.path)),b}finally{g().rmSync(j,{force:!0}),x(a.path)}return{ref:f,created:k}}}let K=null;function L(){return K??=new J}},37788:(a,b,c)=>{function d(a,b,c=process.kill){if(!a||!Number.isInteger(a)||a<=0)return!1;try{return c(-a,b),!0}catch{return!1}}function e(a,b,c=process.kill){if(d(a.pid,b,c))return!0;try{return a.kill(b)}catch{return!1}}c.d(b,{f:()=>e,v:()=>d})},38849:(a,b,c)=>{c.d(b,{Em:()=>l,Vg:()=>j,Vh:()=>h,Y6:()=>g,r$:()=>i,xK:()=>k});var d=c(73024),e=c.n(d);let f=(0,c(94284).E)("json-v3");function g(a){let b,c,d;try{let d=e().statSync(a);b=d.mtimeMs,c=d.size}catch(a){return{value:null,complete:"ENOENT"===a.code}}let g=f.get(a);if(g?.[0]===c&&g[1]===b)return{value:g[2],complete:!0};try{d=JSON.parse(e().readFileSync(a,"utf8"))}catch{return{value:null,complete:!1}}let h=d&&"object"==typeof d&&!Array.isArray(d)?d:null;return f.set(a,[c,b,h]),{value:h,complete:!0}}function h(a){return g(a).value}function i(a){return"string"==typeof a?a:null}function j(a){return"number"==typeof a&&Number.isFinite(a)?a:null}function k(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function l(a){return Array.isArray(a)?a.filter(a=>null!==a&&"object"==typeof a&&!Array.isArray(a)):[]}},40006:(a,b,c)=>{c.d(b,{Fp:()=>j,XR:()=>e,qN:()=>d});class d extends Error{constructor(a){super(`Codex app-server protocol error: ${e(a)}`),this.name="CodexAppServerProtocolError"}}function e(a){return a.replace(/(bearer\s+)[^\s,;]+/gi,"$1[REDACTED]").replace(/(["']?(?:access|refresh|id)[_-]?token["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[REDACTED]").replace(/(["']?(?:api[_-]?key|authorization)["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[REDACTED]").slice(0,500)}function f(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function g(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function h(a){return"string"==typeof a&&a.length>0&&a.length<=512||"number"==typeof a&&Number.isSafeInteger(a)}function i(a){throw new d(a)}function j(a){var b;f(a)||i("message must be an object"),g(a,"jsonrpc")&&"2.0"!==a.jsonrpc&&i("jsonrpc must be 2.0 when present");let c=g(a,"jsonrpc")?"jsonrpc-2.0":"headerless",d=g(a,"id"),e=g(a,"method"),j=g(a,"result"),k=g(a,"error");return j||k?((e||!d||j===k)&&i("response shape is invalid"),h(a.id)||i("response id is invalid"),k)?(f(a.error)&&"number"==typeof a.error.code&&Number.isSafeInteger(a.error.code)&&"string"==typeof a.error.message&&!(a.error.message.length>2e3)||i("response error is invalid"),{kind:"response",envelope:c,id:a.id,error:{code:a.error.code,message:a.error.message}}):{kind:"response",envelope:c,id:a.id,result:a.result}:(e&&"string"==typeof(b=a.method)&&b.length>0&&b.length<=256||i("method is invalid"),d)?(h(a.id)||i(`server request ${a.method} has an invalid id`),{kind:"request",envelope:c,id:a.id,method:a.method,params:a.params}):{kind:"notification",envelope:c,method:a.method,params:a.params}}},40216:(a,b,c)=>{c.d(b,{Om:()=>m,L1:()=>k,ap:()=>l,I1:()=>j});var d=c(56458),e=c(92128),f=c(44123);function g(a,b,c){let d=a.limits?.[b];if(!d)return null;let e=d.observedAt??a.observedAt;return{value:d,observedAt:e,stale:a.stale||null!==e&&c-e>1200,source:d.source??a.source}}function h(a,b,c,d){var f;let g;if(a.value.usedPercent<100)return!1;if(null!==a.value.resetsAt)return a.value.resetsAt>d;if(null===a.observedAt)return!0;let h="number"==typeof a.value.windowMinutes?a.value.windowMinutes:"weekly"===c?e.rX:e.Gn;return!(d-a.observedAt>=60*h)&&(f=a.observedAt,!(g=b?.value)||null===g.resetsAt||"number"!=typeof g.windowMinutes||!(g.resetsAt-60*g.windowMinutes>f))}function i(a,b,c,d){if(!a)return b;if(!b)return a;let e=h(a,b,c,d);return e!==h(b,a,c,d)?e?a:b:null===a.observedAt?null===b.observedAt?a:b:null===b.observedAt?a:b.observedAt>a.observedAt?b:a}function j(a,b,c){let d=i(a?g(a,"session",c):null,b?g(b,"session",c):null,"session",c),e=i(a?g(a,"weekly",c):null,b?g(b,"weekly",c):null,"weekly",c),f=[a,b].filter(a=>!!a?.limits?.plan).sort((a,b)=>(b.observedAt??-1/0)-(a.observedAt??-1/0));return{session:d,weekly:e,plan:f[0]?.limits?.plan??null}}function k(a){if(!a.session&&!a.weekly)return null;let b=[a.session?.observedAt,a.weekly?.observedAt].filter(a=>null!=a);return{session:a.session?{...a.session.value,observedAt:a.session.observedAt,source:a.session.source}:null,weekly:a.weekly?{...a.weekly.value,observedAt:a.weekly.observedAt,source:a.weekly.source}:null,plan:a.plan,capturedAt:b.length?Math.min(...b):null}}function l(a,b){return a.session?.source===b||a.weekly?.source===b}function m(a,b,c,e=Date.now(),g=()=>null,h=()=>!1){let i=new Map;for(let a of Object.values(c.conversations))for(let b of a.generations)i.set(b.path,{conversationId:a.id,engine:a.engine,accountId:b.accountId});let j=new Map;for(let a of Object.values(c.entries??{})){let b=i.get(a.artifactPath);b&&a.accountId&&["starting","live","idle","handoff"].includes(a.status)&&h(a)&&j.set(a.artifactPath,{engine:b.engine,accountId:a.accountId})}let k={claude:new Map,codex:new Map},l=a.map(a=>{var b,h,l;let m,n=i.get(a.path),o=j.get(a.path),p=o?.accountId??n?.accountId??null,q=o?.engine??n?.engine,r=q&&p?c.quotaObservations[q][p]:void 0,s=o&&a.authoritativeTurn?.state==="busy"?(b=o.engine,h=o.accountId,(m=k[b]).has(h)||m.set(h,function(a,b=Date.now(),c=6e4){let d=function(a,b=Date.now(),c=6e4){if(a?.reason!==f.u1||!a.retryAt)return null;let d=Date.parse(a.retryAt);return!Number.isFinite(d)||b>d+(Number.isFinite(c)?Math.max(0,c):6e4)?null:new Date(d).toISOString()}(a,b,c);return d?{reason:"provider_throttled",retryAt:d}:null}(g(b,h),e)),m.get(h)??null):null,t=o||"running"===a.proc?function(a,b=Date.now()){if(!a)return null;let c=Date.parse(a.observedAt),e=Date.parse(a.authCheckedAt),f=(0,d.Wz)({engine:a.engine,accountId:a.accountId,authenticated:a.authenticated,limits:a.limits,provenance:a.provenance,observedAt:c,authCheckedAt:e},b);if(f?.percent!==0||!a.limits)return null;let g=["session","weekly"].flatMap(b=>{let c=a.limits?.[b];return c&&c.usedPercent>=100?[{window:b,resetAt:c.resetsAt}]:[]});if(!g.length)return null;let h=g.filter(a=>null===a.resetAt||1e3*a.resetAt>b);if(!h.length)return null;let i=h.find(a=>null===a.resetAt)??h.sort((a,b)=>b.resetAt-a.resetAt)[0];return{source:"account",accountId:a.accountId,window:i.window,resetAt:null!==i.resetAt&&1e3*i.resetAt>b?i.resetAt:null}}(r,e):null,u=(l=a.rateLimit,l?{source:"pane",accountId:p??l.accountId,window:t?.window??l.window,resetAt:t?.resetAt??l.resetAt}:t),v={...a};return delete v.providerThrottle,{...v,conversationId:a.conversationId??n?.conversationId,rateLimit:u,...s?{providerThrottle:s}:{}}}),n=new Map(l.map(a=>[a.path,a])),o=new Set(["waiting_ready","relaying","fixing"]);return{files:l,flows:b.map(a=>{let b=n.get(a.implementerPath),c=b?.rateLimit;return c&&o.has(a.state)?{...a,block:{reason:"rate_limited",conversationId:b.conversationId??a.implementerConversationId??null,accountId:c.accountId,resetAt:c.resetAt}}:a.block?{...a,block:null}:a})}}},41730:(a,b,c)=>{c.d(b,{Bc:()=>k,IO:()=>l,Kb:()=>u,PM:()=>v,Ux:()=>p,rI:()=>w,z4:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(40006);class k extends Error{constructor(a){super(a),this.code=a,this.name="HistorySecurityError"}}class l extends Error{constructor(a,b){super(b),this.detail=a,this.code="target-account-unavailable",this.name="MigrationTargetUnavailableError"}}function m(a){let b=process.getuid?.()??null;return null===b||a.uid===b}function n(a){let b;try{b=g().lstatSync(a)}catch{throw new k("unsafe-root")}if(!b.isDirectory()||b.isSymbolicLink()||!m(b)||(18&b.mode)!=0)throw new k("unsafe-root");return b}function o(a,b){return b===a||b.startsWith(a+i().sep)}function p(a,b,c=0x20000000){let d,e;n(b);let f=i().resolve(b),h=i().resolve(a);if(!o(f,h)||f===h)throw new k("unsafe-source");let j=i().relative(f,h),l=f;for(let a of j.split(i().sep).slice(0,-1))n(l=i().join(l,a));try{d=g().realpathSync(b),e=g().realpathSync(a)}catch{throw new k("unsafe-source")}if(!o(d,e))throw new k("unsafe-source");let q=g().lstatSync(a);if(!q.isFile()||q.isSymbolicLink()||1!==q.nlink||!m(q)||(18&q.mode)!=0)throw new k("unsafe-source");if(q.size>c)throw new k("history-too-large");let r=g().openSync(a,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0));try{let a=g().fstatSync(r);if(!a.isFile()||1!==a.nlink||!m(a)||a.dev!==q.dev||a.ino!==q.ino||a.size!==q.size)throw new k("unsafe-source")}finally{g().closeSync(r)}return{sourcePath:e,sourceRoot:d,size:q.size,device:q.dev,inode:q.ino,mtimeMs:q.mtimeMs,ctimeMs:q.ctimeMs}}function q(a,b){return 1===a.nlink&&a.dev===b.device&&a.ino===b.inode&&a.size===b.size&&a.mtimeMs===b.mtimeMs&&a.ctimeMs===b.ctimeMs}function r(a,b,c,d=!1){let f;try{f=g().lstatSync(a)}catch{throw new k(d?"history-collision":"unsafe-source")}if(!f.isFile()||f.isSymbolicLink()||1!==f.nlink||!m(f)||d&&(63&f.mode)!=0)throw new k(d?"history-collision":"unsafe-source");let h=g().openSync(a,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0)),i=e().createHash("sha256"),j=Buffer.allocUnsafe(1048576),l=0;try{let a=g().fstatSync(h);if(a.dev!==f.dev||a.ino!==f.ino||a.size!==f.size||c&&!q(a,c))throw new k(d?"history-collision":"history-integrity");for(;;){let a=g().readSync(h,j,0,j.length,null);if(0===a)break;if((l+=a)>b)throw new k("history-too-large");i.update(j.subarray(0,a))}let e=g().fstatSync(h);if(e.dev!==a.dev||e.ino!==a.ino||e.size!==a.size||e.mtimeMs!==a.mtimeMs||e.ctimeMs!==a.ctimeMs||l!==a.size)throw new k(d?"history-collision":"history-integrity")}finally{g().closeSync(h)}return{hash:i.digest("hex"),size:l}}function s(a,b,c=0x20000000){let d=p(a,b,c);return r(d.sourcePath,c,d)}function t(a,b){let c=i().dirname(a),d=`${a}.${process.pid}.${e().randomUUID()}.tmp`,f=null;try{f=g().openSync(d,"wx",384),g().writeFileSync(f,JSON.stringify(b)+"\n","utf8"),g().fsyncSync(f),g().closeSync(f),f=null,g().renameSync(d,a);let e=g().openSync(c,"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==f&&g().closeSync(f),g().rmSync(d,{force:!0})}}function u(a){return a instanceof Error?{type:(0,j.XR)(a.name||"Error"),message:(0,j.XR)(a.message)}:{type:typeof a,message:"provider failed without an Error detail"}}function v(a){let b=a.maxBytes??0x20000000,c=p(a.sourcePath,a.sourceRoot,b),d=function(a){if(!a||i().isAbsolute(a)||a.includes("\0"))throw new k("unsafe-root");let b=i().normalize(a);if(".."===b||b.startsWith(".."+i().sep))throw new k("unsafe-root");return b}(a.destinationRelative),f=function(a,b){n(a);let c=g().realpathSync(a);for(let d of b.split(i().sep).filter(a=>a&&"."!==a)){if("."===d||".."===d)throw new k("unsafe-root");let b=i().join(c,d);try{g().mkdirSync(b,{mode:448})}catch(a){if("EEXIST"!==a.code)throw a}n(b);let e=g().realpathSync(b);if(!o(g().realpathSync(a),e))throw new k("unsafe-root");c=e}return c}(a.targetRoot,i().dirname(d)),h=i().join(f,i().basename(d)),j=`${h}.llv-receipt.json`;if(g().existsSync(h)){g().existsSync(j)||function(a){let b=g().lstatSync(a);if(1===b.nlink)return;let c=i().dirname(a),d=`.${i().basename(a)}.`,e=g().readdirSync(c).filter(a=>a.startsWith(d)&&a.endsWith(".tmp")).map(a=>i().join(c,a)).filter(a=>{let c=g().lstatSync(a);return c.isFile()&&!c.isSymbolicLink()&&c.dev===b.dev&&c.ino===b.ino});if(e.length!==b.nlink-1)throw new k("history-collision");for(let a of e)g().unlinkSync(a);let f=g().openSync(c,"r");try{g().fsyncSync(f)}finally{g().closeSync(f)}if(1!==g().lstatSync(a).nlink)throw new k("history-collision")}(h);let d=function(a){try{let b=g().lstatSync(a);if(!b.isFile()||b.isSymbolicLink()||1!==b.nlink||!m(b)||(63&b.mode)!=0||b.size>4096)return null;let c=JSON.parse(g().readFileSync(a,"utf8"));return"string"==typeof c.operationId&&"string"==typeof c.hash&&"number"==typeof c.size?c:null}catch{return null}}(j),e=r(h,b,void 0,!0),f=r(c.sourcePath,b,c);if(null!==d&&(d.operationId===a.operationId||(a.priorOperationIds??[]).includes(d.operationId))&&d.hash===e.hash&&d.size===e.size&&f.hash===e.hash&&f.size===e.size)return d.operationId!==a.operationId&&t(j,{operationId:a.operationId,hash:e.hash,size:e.size}),{path:h,...e,reused:!0};if(!g().existsSync(j)&&f.hash===e.hash&&f.size===e.size)return t(j,{operationId:a.operationId,hash:e.hash,size:e.size}),{path:h,...e,reused:!0};throw new k("history-collision")}if(g().existsSync(j))throw new k("history-collision");let l=i().join(f,`.${i().basename(h)}.${process.pid}.${e().randomUUID()}.tmp`),s=g().openSync(c.sourcePath,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0)),u=null,v=e().createHash("sha256"),w=0;try{let d=g().fstatSync(s);if(d.dev!==c.device||d.ino!==c.inode||d.size!==c.size)throw new k("unsafe-source");u=g().openSync(l,g().constants.O_WRONLY|g().constants.O_CREAT|g().constants.O_EXCL|(g().constants.O_NOFOLLOW??0),384);let e=Buffer.allocUnsafe(1048576);for(;;){let a=g().readSync(s,e,0,e.length,null);if(0===a)break;if((w+=a)>b)throw new k("history-too-large");v.update(e.subarray(0,a));let c=0;for(;c<a;)c+=g().writeSync(u,e,c,a-c)}if(w!==c.size)throw new k("history-integrity");let i=g().fstatSync(s);if(!q(i,c))throw new k("history-integrity");g().fchmodSync(u,384),g().fsyncSync(u),g().closeSync(u),u=null;let m=g().realpathSync(a.targetRoot);if(!o(m,g().realpathSync(f)))throw new k("unsafe-root");try{g().linkSync(l,h)}catch(a){if("EEXIST"===a.code)throw new k("history-collision");throw a}g().rmSync(l,{force:!0});let n=g().openSync(f,"r");try{g().fsyncSync(n)}finally{g().closeSync(n)}a.afterDestinationPublished?.();let p=v.digest("hex");t(j,{operationId:a.operationId,hash:p,size:w});let r=g().openSync(f,"r");try{g().fsyncSync(r)}finally{g().closeSync(r)}return{path:h,hash:p,size:w,reused:!1}}finally{g().closeSync(s),null!==u&&g().closeSync(u),g().rmSync(l,{force:!0})}}function w(a){return a instanceof k?{code:a.code,message:({"unsafe-root":"account history root failed safety checks","unsafe-source":"source history failed safety checks","history-too-large":"source history exceeds the migration size limit","history-collision":"target history already contains a conflicting successor","history-integrity":"successor history failed integrity verification"})[a.code]}:a instanceof l?{code:a.code,message:"not-authenticated"===a.detail?"target account is not signed in; sign it in or switch to another account":"target account home failed safety checks; repair it or switch to another account"}:{code:"provider-failed",message:"successor provider failed a recoverable preflight"}}},42580:(a,b,c)=>{c.d(b,{RO:()=>r,dq:()=>s,mI:()=>u});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(57975),i=c(50920),j=c(8663);let k=globalThis;function l(){return k.__llvRuntimeEventLedgers??=new Map,k.__llvRuntimeEventLedgers}function m(a){return{dev:a.dev,ino:a.ino,size:a.size,mtimeMs:a.mtimeMs,ctimeMs:a.ctimeMs}}function n(a,b){return a.dev===b.dev&&a.ino===b.ino&&a.size===b.size&&a.mtimeMs===b.mtimeMs&&a.ctimeMs===b.ctimeMs}function o(a,b,c){let d=l();d.delete(a),d.set(a,{identity:b,events:c.slice()});let e=0;for(let a of d.values())e+=a.identity.size;for(;d.size>64||e>0x4000000;){let a=d.keys().next().value;if(void 0===a)break;let b=d.get(a);d.delete(a),e-=b?.identity.size??0}}function p(a){l().delete(a)}function q(a){console.warn("[structured host] runtime event cursor recovered",a)}function r(a){if(!Number.isSafeInteger(a)||a<0)throw Error("runtime event cursor is invalid");let b=a+1;if(!Number.isSafeInteger(b))throw Error("runtime event cursor cannot advance safely");return b}function s(a,b,c,d=q){if(!Number.isSafeInteger(b)||b<0)throw Error("runtime event durable tail sequence is invalid");if(!Number.isSafeInteger(c)||c<0)throw Error("runtime event registry cursor is invalid");let e=0===b&&c>0,f=e?c:b,g=r(f);if(c!==b)try{d({kind:"runtime-event-cursor-recovery",sessionId:a.slice(0,160),durableTailSeq:b,registryCursor:c,chosenNextSeq:g,action:e?"use-registry-cursor":"use-durable-tail",relation:e?"durable-ledger-empty":c<b?"registry-behind":"registry-ahead"})}catch{}return f}function t(a){if(!a||"object"!=typeof a||Array.isArray(a)||!Number.isSafeInteger(a.seq)||a.seq<=0)return!1;let b=a=>"string"==typeof a&&a.length>0;switch(a.kind){case"turn-started":return b(a.turnId);case"delta":return b(a.turnId)&&"string"==typeof a.text;case"item":return(b(a.turnId)||null===a.turnId)&&("started"===a.phase||"completed"===a.phase)&&Object.hasOwn(a,"item");case"voice-chunk":{if(!b(a.turnId))return!1;let c=(0,j.Im)([a.delivery])[0];return c?.ready===!0&&c.sourceTurnId===a.turnId&&void 0!==c.streamChunk&&(0,h.isDeepStrictEqual)(c,a.delivery)}case"turn-ended":return b(a.turnId)&&("completed"===a.status||"interrupted"===a.status||"error"===a.status);case"attention":return b(a.id)&&b(a.method)&&Object.hasOwn(a,"attention");case"attention-resolved":return b(a.id)&&("answered"===a.resolution||"host-restarted"===a.resolution||"server-resolved"===a.resolution||"turn-ended"===a.resolution);case"limits":return Object.hasOwn(a,"snapshot");case"realtime-delivery-progress":return b(a.deliveryId)&&b(a.digest)&&Number.isSafeInteger(a.responseIndex)&&a.responseIndex>=0&&Number.isSafeInteger(a.offset)&&a.offset>=0;case"realtime-delivery-acknowledged":return b(a.deliveryId)&&b(a.digest);case"session-status":return("active"===a.status||"idle"===a.status||"unhosted"===a.status||"dead"===a.status)&&(void 0===a.activeFlags||Array.isArray(a.activeFlags)&&a.activeFlags.every(b));default:return!1}}class u{constructor(a=(0,i.BQ)("structured-host-events")){this.directory=a,this.tails=new Map}load(a){let b,c,d,f,g=this.filename(a);try{b=e().statSync(g)}catch(a){if("ENOENT"===a.code)return p(g),[];throw a}let h=m(b),i=(f=(d=l()).get(g))&&n(f.identity,h)?(d.delete(g),d.set(g,f),f.events.slice()):null;if(i)return i;try{c=e().readFileSync(g,"utf8")}catch(a){if("ENOENT"===a.code)return[];throw a}let j=[],k=c.split("\n"),q=c.endsWith("\n");for(let[a,b]of k.entries()){let c;if(!b&&a===k.length-1&&q)continue;if(!b)throw Error("runtime event ledger contains an empty record");try{c=JSON.parse(b)}catch{if(a===k.length-1&&!q)break;throw Error("runtime event ledger contains malformed JSON")}if(!t(c)){if(a===k.length-1&&!q)break;throw Error("runtime event ledger contains an invalid event")}let d=j.at(-1);if(d&&c.seq!==d.seq+1)throw Error(`runtime event ledger sequence gap after ${d.seq}`);j.push(c)}try{let a=m(e().statSync(g));n(h,a)&&o(g,a,j)}catch{}return j}append(a,b){if(!t(b))throw Error("runtime event ledger append event is invalid");e().mkdirSync(this.directory,{recursive:!0,mode:448});let c=this.filename(a),d=e().openSync(c,"a+",384);try{(511&e().fstatSync(d).mode)!=384&&e().fchmodSync(d,384);let f=this.tails.get(a);if(f&&e().fstatSync(d).size===f.bytes||(f=this.reconcileTail(a,c,d)),f.lastSeq>0&&b.seq!==f.lastSeq+1)throw Error(`runtime event ledger sequence gap after ${f.lastSeq}`);let g=`${JSON.stringify(b)}
88
- `;e().writeSync(d,g),e().fsyncSync(d);let h={lastSeq:b.seq,bytes:f.bytes+Buffer.byteLength(g)};this.tails.set(a,h);let i=l().get(c),j=e().fstatSync(d);i&&i.identity.size===f.bytes&&(i.events.at(-1)?.seq??0)===f.lastSeq?o(c,m(j),[...i.events,b]):p(c)}finally{e().closeSync(d)}}reconcileTail(a,b,c){if(0===e().fstatSync(c).size){let b={lastSeq:0,bytes:0};return this.tails.set(a,b),b}let d=this.load(a),f=e().fstatSync(c).size,g=Buffer.allocUnsafe(1);if(!(f>0&&1===e().readSync(c,g,0,1,f-1)&&10===g[0])){let a,d=e().readFileSync(b,"utf8"),f=d.lastIndexOf("\n")+1,g=d.slice(f);try{a=JSON.parse(g)}catch{a=null}t(a)?e().writeSync(c,"\n"):e().ftruncateSync(c,Buffer.byteLength(d.slice(0,f)))}let h=e().fstatSync(c),i={lastSeq:d.at(-1)?.seq??0,bytes:h.size};return this.tails.set(a,i),o(b,m(h),d),i}filename(a){return g().join(this.directory,`${encodeURIComponent(a)}.jsonl`)}}},43271:(a,b,c)=>{c.d(b,{reconcileStructuredSpawnReplay:()=>X,sh:()=>aj,LH:()=>_});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(57726),k=c(53133),l=c(85881),m=c(4351),n=c(31973),o=c(14648),p=c(91836),q=c(50920),r=c(14607);let s="Pinned account quota is exhausted — queued until {retryAt}";var t=c(36454),u=c(30277),v=c(37788),w=c(70154),x=c(89364),y=c(59988),z=c(32644),A=c(6949),B=c(88602),C=c(29966),D=c(33353),E=c(53812),F=c(65862),G=c(13818),H=c(873),I=c(71256),J=c(36855),K=c(53835),L=c(88417);let M="llv-read-only-stage";async function N(a,b){return"codex"===a?{kind:"admissible",basis:"current",stale:!1,retryAt:null}:(0,l.Kw)(await (0,t.nn)(i().join(b.home,".credentials.json"),Date.now,600))}async function O(a,b={}){let c,d=b.attempts??3,e=b.sleep??(a=>new Promise(b=>setTimeout(b,a)));for(let b=1;b<=d;b+=1)try{return await a()}catch(a){if(!(0,B.o7)(a))throw a;c=a,b<d&&await e(250*b)}throw c}let P=new Set(["delivered","turn-started","steered"]),Q=new Set(["failed","rejected","uncertain","interrupted"]);class R extends Error{constructor(a){super(a),this.name="StructuredInitialMessageTimeoutError"}}async function S(a){if(a.pid===process.pid||null===a.startIdentity)return!1;let b=()=>u.B.processIdentity(a.pid)===a.startIdentity;if(!b())return!0;for(let c of["SIGTERM","SIGKILL"]){if(!(0,v.v)(a.pid,c))try{process.kill(a.pid,c)}catch{break}for(let a=0;a<20;a+=1){if(!b())return!0;a+1<20&&await new Promise(a=>setTimeout(a,25))}}return!b()}function T(a){if((0,B.o7)(a))return(0,C.lN)("structured spawn runtime host");let b=a instanceof Error?a.message:"structured spawn failed";return(0,y.j)(b).replace(/\s+/g," ").trim().slice(0,240)||"structured spawn failed"}function U(a,b){let c=a?.receipt.status;return c&&Q.has(c)?a.receipt.reason??`${b} ended as ${c}`:null}async function V(a,b,c={}){let d,e=c.now??Date.now,f=c.sleep??(a=>new Promise(b=>setTimeout(b,a))),g=c.timeoutMs??3e4,h=c.pollMs??250,i=e()+g,j=null;for(;;){let c=null;try{c=await a.operationStatus(b,{currentRetryLeaf:!0}),d=c?.receipt.status??d,j=null}catch(a){j=a instanceof Error?a.message:"runtime status read failed"}let k=c?.receipt.status??d;if(k&&P.has(k))return;if(k&&Q.has(k))throw Error(c?.receipt.reason??`structured initial message ended as ${k}`);if(e()>=i){if(j)throw new R(`structured initial message status remained unavailable for ${g}ms: ${j}`);throw new R(`structured initial message remained ${k??"pending"} for ${g}ms`)}await f(Math.min(h,i-e()))}}async function W(a,b){let c=0;for(;;){let d=await a.effectBatch(["runtime.spawn"],c);for(let a of d)if(a.payload.operationId===b)return a.payload;if(d.length<100)return null;let e=Math.max(...d.map(a=>a.eventSeq));if(!Number.isSafeInteger(e)||e<=c)throw Error("structured spawn replay effect page did not advance");c=e}}async function X(a,b,c,d={}){let e=b.readOnlySnapshot().receipts[a];if(!e)throw Error("unknown spawn receipt");if("completed"===e.state)return{...e,initialMessage:"delivered"};if("conflicted"===e.state)return{...e,initialMessage:"failed"};let[f,g,h]=await Promise.all([c.operationStatus(`spawn_message_${a}`,{currentRetryLeaf:!0}).catch(()=>null),c.operationStatus(a,{currentRetryLeaf:!0}).catch(()=>null),c.snapshot().catch(()=>null)]),i=f,j=!1;if(!i&&"path-pending"===e.state&&e.artifactPath){let d=await W(c,a).catch(()=>(j=!0,null)),f="string"==typeof d?.prompt?d.prompt:null,g=(0,L.kW)(d?.images??[],16);if(null!==f&&null!==g&&d?.conversationId===e.conversationId&&d.cwd===e.cwd&&(f.trim()||g.length)){let d=af(e,b),h=await (0,I.enqueueStructuredMessage)({path:e.artifactPath,conversationId:e.conversationId,clientMessageId:`spawn_${a}`,operationId:`spawn_message_${a}`,text:f,imageRefs:g,...d?{origin:d}:{}},{client:()=>c,registry:()=>b,enabled:()=>!0});h?.ok&&"held"!==h.outcome&&(i=await c.operationStatus(`spawn_message_${a}`,{currentRetryLeaf:!0}).catch(()=>null))}}let k=!!(i&&i.receipt.conversationId===e.conversationId&&P.has(i.receipt.status)),l=!!(e.artifactPath&&(0,w.x_)(e.artifactPath,e.engine));if(k||l){let c=h?.sessions.find(a=>a.conversationId===e.conversationId),d=c&&c.sessionKey.engine===e.engine&&c.cwd===e.cwd&&"string"==typeof c.artifactPath?c:null,f=d?{key:d.sessionKey,artifactPath:d.artifactPath,cwd:e.cwd,accountId:e.accountId,launchProfile:e.launchProfile,status:"dead"===d.host||"unhosted"===d.host?"dead":"running"===d.turn?"live":"idle",host:null,structuredHost:"codex-app-server"===d.hostKind||"claude-broker"===d.hostKind?{kind:d.hostKind,endpoint:"runtime:reconciled",process:null,eventCursor:d.revision,protocolVersion:null,writerClaimEpoch:0,activeTurnRef:d.activeTurnId,pendingAttention:d.attentionIds,activeFlags:[]}:null,claimEpoch:0,claimOwner:null,pendingAction:null}:void 0,g=b.recoverStructuredSpawnFromEvidence(a,f);if("settled"===g.kind)return{...g.receipt,initialMessage:"delivered"}}let m=i?.receipt.status,o=h?.sessions.find(a=>a.conversationId===e.conversationId&&a.cwd===e.cwd&&(!e.key||(0,n.pp)(a.sessionKey)===(0,n.pp)(e.key)))??null,p=o&&("registering"===o.host||"hosted"===o.host||"recovering"===o.host)?o:null,q=i?Date.parse(i.receipt.at):NaN,r=Number.isFinite(q)?q:Date.parse(e.createdAt),s=(d.now??Date.now)()-r,t=null!==h&&g?.receipt.conversationId===e.conversationId&&"delivered"===g.receipt.status&&null===p,u=d.timeoutMs??(t?3e4:3e5),v=U(i,"structured initial message")??U(g,"structured spawn");if(!v&&s>=u&&(v=p?`structured spawn durable setup remained incomplete for ${u}ms`:j?`structured spawn runtime effect history remained unavailable for ${u}ms`:h?`structured spawn runtime snapshot has no session after ${u}ms`:`structured spawn durable setup remained unconfirmed for ${u}ms`),v){v=v.slice(0,240);let f=b.failStructuredSpawn(a,v);if(!f.claimed){let c=f.receipt??b.readOnlySnapshot().receipts[a]??e;return{...c,initialMessage:"completed"===c.state?"delivered":"failed"}}let h=g?.receipt.status;if("pending"===h||"queued"===h||"delivering"===h)try{await c.transitionOperation(a,"failed",{reason:v})}catch(b){console.error("[spawn] runtime operation failure did not settle during reconciliation",{launchId:a,error:T(b)})}let i=f.cleanup;if(i){let c=!1,e=b.readOnlySnapshot().entries[(0,n.pp)(i.key)];if(i.releaseRegisteredHost&&e?.structuredHostOperationId===a)try{c=await (d.releaseHost??H.releaseStructuredDeliveryHost)(i.key)}catch(b){console.error("[spawn] registered host release failed during reconciliation",{launchId:a,error:T(b)})}if(!c&&i.process){let c=b.readOnlySnapshot().entries[(0,n.pp)(i.key)];if(i.releaseRegisteredHost?c?.structuredHostOperationId===a:c?.structuredHostOperationId==null&&c.artifactPath===f.receipt?.artifactPath&&"dead"===c.status&&null===c.claimOwner)try{await (d.terminateHostProcess??S)(i.process)||i.process.pid===process.pid||console.error("[spawn] staged host termination remained unconfirmed",{launchId:a,pid:i.process.pid})}catch(b){console.error("[spawn] staged host termination failed during reconciliation",{launchId:a,error:T(b)})}}}return{...b.readOnlySnapshot().receipts[a]??e,initialMessage:"failed"}}let x=b.readOnlySnapshot().receipts[a]??e;return{...x,initialMessage:"failed"===x.state||void 0!==m&&Q.has(m)?"failed":k||"completed"===x.state?"delivered":"queued"===m||"pending"===m||"delivering"===m?"queued":"pending"}}function Y(a){let b=a.queuedPinnedSpawn;return("structured"===a.transport?"starting"!==a.state||a.key||a.pane:"tmux"!==a.transport||a.key||("starting"!==a.state||a.pane)&&("pane-bound"!==a.state&&"host-verified"!==a.state||!a.pane))||"launch"!==a.purpose||!a.accountPin||!a.accountId||b?.accountId!==a.accountId||b.spec.engine!==a.engine||b.spec.cwd!==a.cwd?null:b}function Z(a,b,c){return"structured"===b.transport?a.failStructuredSpawn(b.launchId,c).receipt??b:(a.failSpawn(b.launchId,c),a.readOnlySnapshot().receipts[b.launchId]??b)}async function $(a,b,c,d){let f,g,h=Y(c),i=(d.now??Date.now)();if(!h||Date.parse(h.retryAt)>i)return c;let k="tmux"===c.transport?a.claimTmuxSpawnActuation(c.launchId):a.claimStartingStructuredSpawn(c.launchId);if(!k.claimed||!k.receipt.admissionOwner)return k.receipt;let l=Y(k.receipt);if(!l)return Z(a,k.receipt,"queued pinned spawn lost its durable admission payload");try{if((f=(d.resolveSpawnAccount??((a,b)=>j.lD.resolveSpawn(a,b)))(c.engine,l.accountId)).engine!==c.engine||f.accountId!==l.accountId)throw Error("queued pinned spawn resolved a different account");g="tmux"===c.transport&&k.receipt.pane?{kind:"admissible",basis:"current",stale:!1,retryAt:null}:await (d.resolvePinnedSpawnAdmission??N)(c.engine,f)}catch(b){return Z(a,k.receipt,T(b))}if("retry-at"===g.kind){var m;let b,d=Date.parse(g.retryAt);if(!Number.isFinite(d)||d<=i)return Z(a,k.receipt,"pinned account retry deadline did not advance");let e=new Date(d).toISOString(),f=a.queuePinnedSpawn(c.launchId,{...l,retryAt:e},(m=l.locale,("string"==typeof(b="uk"===m?"Квоту закріпленого акаунта вичерпано — запуск у черзі до {retryAt}":s)?b:s).replace("{retryAt}",e)));return f.admissionOwner?a.releaseSpawnActuation(f.launchId,f.admissionOwner).receipt:f}if("unavailable"===g.kind)return Z(a,k.receipt,`pinned account is unavailable: ${g.reason}`);let n=null,o=[];try{if("tmux"===c.transport){let b,e=l.imageRefs.length?(b=(0,J.PF)(),l.imageRefs.map(a=>({base64:b.read(a).toString("base64"),mime:a.mime}))):[],f=(0,x.Am)(l.prompt,e);o=f.imagePaths,await (d.spawnTmuxAgent??x.Tk)(l.spec,f.payload,k.receipt);let g=a.readOnlySnapshot().receipts[c.launchId];(g?.state==="prompt-delivered"||g?.state==="host-verified")&&a.markSpawnPathPending(c.launchId)}else{if(!b)throw Error((0,C.lN)("structured spawn runtime host"));n=await (d.spawnStructuredConversation??aj)({engine:c.engine,receipt:k.receipt,spec:l.spec,account:f,prompt:l.prompt,imageRefs:l.imageRefs,registry:a,client:b})}}catch(d){if("tmux"===c.transport){a.failSpawn(c.launchId,T(d));let b=a.readOnlySnapshot().receipts[c.launchId]??k.receipt;if(b.pane||(0,x.IJ)(o),b.queuedPinnedSpawn&&b.admissionOwner)return a.releaseSpawnActuation(b.launchId,b.admissionOwner).receipt;return b}let b=a.readOnlySnapshot().receipts[c.launchId];throw b?.queuedPinnedSpawn&&b.admissionOwner&&a.releaseSpawnActuation(b.launchId,b.admissionOwner),d}if(l.parentArtifactPath&&n?.path)try{(0,r.A6)(n.path,l.parentArtifactPath),(0,r.OA)()}catch(a){console.error("[spawn] queued handoff lineage persistence failed",{launchId:c.launchId,conversationId:c.conversationId,error:a})}if(n?.path&&b&&e().existsSync(n.path))try{await (d.publishFilesRevision??K.G)(b)}catch(a){console.error("[spawn] queued transcript materialization refresh failed",{launchId:c.launchId,conversationId:c.conversationId,error:a})}return a.readOnlySnapshot().receipts[c.launchId]??k.receipt}async function _(a,b,c={}){let d=c.now??Date.now,e=c.timeoutMs??3e5,f=c.actuationCap??50,g=c.reconcile??X,h=a.readOnlySnapshot(),i=[],j=[],k=0;for(let l of Object.values(h.receipts)){if(k>=f)break;if("completed"===l.state||"failed"===l.state||"conflicted"===l.state)continue;let m=Y(l);if(m){if(Date.parse(m.retryAt)>d()||"structured"===l.transport&&!b)continue;k+=1;try{let d=function(a,b){if("structured"!==b.transport||"launch"!==b.purpose||"starting"!==b.state&&"path-pending"!==b.state||"pending"!==b.artifactLifecycle)return null;let c=b.key?a.entries[(0,n.pp)(b.key)]:null;return c?.structuredHost?.process||c?.claimOwner?null:Object.values(a.receipts).some(a=>a.launchId!==b.launchId&&"structured"===a.transport&&"launch"===a.purpose&&"failed"!==a.state&&"conflicted"!==a.state&&(a.supersedes?.conversationId===b.conversationId||!!b.requestDigest&&a.requestDigest===b.requestDigest&&a.createdAt>b.createdAt))?"structured spawn was superseded by a newer launch of the same request":null}(h,l),e=d?Z(a,l,d):await $(a,b,l,c);"failed"===e.state||"conflicted"===e.state?i.push(l.launchId):"completed"===e.state&&j.push(l.launchId)}catch(a){console.error("[reaper] queued pinned spawn recovery failed",{launchId:l.launchId,error:a})}continue}let o=Date.parse(l.createdAt);if(!(!Number.isFinite(o)||d()-o<e)){if("tmux"===l.transport){if(!("starting"===l.state&&!l.key&&!l.pane&&!l.admissionOwner))continue;k+=1;try{a.failSpawn(l.launchId,`tmux spawn interrupted before durable queue publication or pane binding: ${l.launchId}`);let b=a.readOnlySnapshot().receipts[l.launchId];(b?.state==="failed"||b?.state==="conflicted")&&i.push(l.launchId)}catch(a){console.error("[reaper] stale tmux spawn reconciliation failed",{launchId:l.launchId,error:a})}continue}if("structured"===l.transport&&b){k+=1;try{let c=await g(l.launchId,a,b,{now:d,timeoutMs:e});"failed"===c.state?i.push(l.launchId):"completed"===c.state&&j.push(l.launchId)}catch(a){console.error("[reaper] stale structured spawn reconciliation failed",{launchId:l.launchId,error:a})}}}}return{examined:k,terminalized:i,recovered:j}}async function aa(a,b,c,d,e){let f=e?.key??b.key,g=e?.artifactPath??b.artifactPath;f&&g&&await a.append({scope:{type:"session",id:b.conversationId},kind:"session-status",producer:{kind:"codex"===f.engine?"codex-app-server":"claude-broker",eventKey:d},payload:{conversationId:b.conversationId,sessionKey:f,hostKind:"codex"===f.engine?"codex-app-server":"claude-broker",host:"dead",turn:"idle",provenance:"structured",accountId:c.accountId,parentConversationId:b.parentConversationId,cwd:c.cwd,artifactPath:g,capabilities:{steer:"codex"===f.engine,structuredAttention:!0,imageInput:(0,J.ki)(f.engine,!1),runtimeSettings:(0,F.wL)(f.engine)},activeTurnId:null}})}function ab(a,b){if("resume-successor"!==b.purpose)return null;let c=a.conversation(b.conversationId),d=c?.generations.find(a=>a.path===b.resumeSourcePath)??c?.generations.at(-1);return d?{key:{engine:b.engine,sessionId:d.id},artifactPath:d.path}:null}async function ac(a,b){let c=a.spec.launchProfile??{},d=ad(a),f=d?a.registry.readOnlySnapshot().entries[(0,n.pp)({engine:a.engine,sessionId:d})]?.structuredHost?.eventCursor:void 0;if(void 0!==f&&(!Number.isSafeInteger(f)||f<0))throw Error("structured resume event cursor is invalid");let h=function(a,b,c){let d={...b,...c?{LLV_SPAWN_CAPABILITY:c}:{}};if(!a)return{env:d,codex:{sandbox:"danger-full-access"},host:{},scratchDirectory:null,cleanup:()=>{}};let f=(void 0)??(0,q.BQ)("scratch");e().mkdirSync(f,{recursive:!0,mode:448});let h=e().mkdtempSync(i().join(f,"llv-read-only-stage-"));try{e().chmodSync(h,448);let a=i().join(h,"tmp");e().mkdirSync(a,{mode:448});let c=`permissions.${M}={extends=":read-only",filesystem={${JSON.stringify(h)}="write"}}`,f=()=>e().rmSync(h,{recursive:!0,force:!0});return{env:{...d,TMPDIR:a,GH_CONFIG_DIR:function(a){if(a.GH_CONFIG_DIR)return a.GH_CONFIG_DIR;let b=a.HOME||g().homedir();return i().join(a.XDG_CONFIG_HOME||i().join(b,".config"),"gh")}(b)},codex:{permissionProfile:M,permissionProfileConfig:c},host:{forwardGitHubConfig:!0,releaseCleanup:f},scratchDirectory:h,cleanup:f}}catch(a){throw e().rmSync(h,{recursive:!0,force:!0}),a}}(!0===c.readOnly,a.account.env,b),j=h.env;if("codex"===a.engine){let b={cwd:a.spec.cwd,codexHome:a.account.home,fileAuthCredentials:"managed"===a.account.kind,model:c.model??void 0,effort:c.effort??void 0,allowSubagents:c.allowSubagents,mcpServers:c.mcpServers,plugins:c.plugins,...h.codex,...h.host,approvalPolicy:c.permissionMode??void 0,initialEventCursor:f,env:j};return d?await A.o.adopt(d,b):await A.o.start(b)}let l=function(a,b=e().existsSync){let c=ab(a.registry,a.receipt);return c&&function(a,b=e().existsSync){return!!a.artifactPath&&b(a.artifactPath)}(c,b)?{kind:"resume",sessionId:c.key.sessionId}:{kind:"fresh",sessionId:c?.key.sessionId??(a.spec.transcript?i().basename(a.spec.transcript,".jsonl"):void 0)}}(a),o={cwd:a.spec.cwd,claudeConfigDir:a.account.home,claudeProjectsDir:a.account.transcriptRoot,spawnPolicyBaseSettingsPath:function(a,b=k.ZK){return"managed"===a.kind?b():null}(a.account),allowSubagents:c.allowSubagents,mcpServers:c.mcpServers,mcpStatePath:"managed"===a.account.kind?i().join(a.account.home,".claude.json"):i().join(i().dirname(a.account.home),".claude.json"),readOnly:!0===c.readOnly,model:c.model??void 0,effort:c.effort??void 0,permissionMode:(0,m.A5)(c),initialEventCursor:f,env:j,...h.host};return"resume"===l.kind?await z.s7.adopt(l.sessionId,o):await z.s7.start({...o,...l.sessionId?{sessionId:l.sessionId}:{}})}function ad(a){return ab(a.registry,a.receipt)?.key.sessionId??null}async function ae(a,b,c,d,e,f="unhosted"){return"codex"===b.engine?await (0,G.WF)(a,b,c,d,e,f):await (0,G.n$)(a,b,c,d,e,f)}function af(a,b){if(0===a.delegationDepth)return{kind:"operator"};if(null===a.delegationDepth||void 0===a.delegationDepth)return;let c=a.parentConversationId?b.conversation(a.parentConversationId):null,d=(0,E.S)(c?.agentRole??void 0);return{kind:"agent",...d?{role:d}:{}}}async function ag(a,b){if(!a.prompt.trim()&&!a.imageRefs?.length)return;let c=af(a.receipt,a.registry),d=await (0,I.enqueueStructuredMessage)({path:b,conversationId:a.receipt.conversationId,clientMessageId:`spawn_${a.receipt.launchId}`,operationId:`spawn_message_${a.receipt.launchId}`,text:a.prompt,imageRefs:a.imageRefs,...c?{origin:c}:{}},{client:()=>a.client,registry:()=>a.registry,enabled:()=>!0});if(!d?.ok){let a=d?.error??"structured spawn first-message delivery was unavailable";if(d?.transportUncertain)throw new R(a);throw Error(a)}if("held"===d.outcome)return"held";if("delivered"!==d.outcome){var e,f;let b,c;await V(a.client,d.operationId),e=a.registry,f=a.receipt.launchId,b=`spawn_${f}`,(c=Object.values(e.readOnlySnapshot().heldDeliveries).find(a=>a.clientMessageId===b))&&"delivered"!==c.state&&e.recordDeliveryOutcome(c.id,"delivered")}}async function ah(a){let b;if(!a)return null;try{b=await a.health()}catch{return null}return"dead"!==b.status?null:a.terminalExitReason?.()??"structured spawn host exited before its first message"}async function ai(a,b){await a?.release();let c=null;try{await b.unregister()}catch(a){c=a}if(b.stopPersistence(),c)throw c}async function aj(a,b={}){var c,d,e,f,g;let h=b.startHost??ac,i=b.bindHost??ae,j=b.publishHost??((a,b,c)=>(0,H.xq)({key:a,host:b},c)),k=b.deliverFirst??ag,l=b.processIdentity??(()=>({pid:process.pid,startIdentity:u.B.processIdentity(process.pid)})),m=a.receipt.launchId,q=ad(a),r=q?(0,n.ce)(a.engine,q):null,s=ab(a.registry,a.receipt),t=null,v={stopPersistence:()=>{},unregister:async()=>{}},w=null,x=null,y=!1,z=!1,A=!1,B=null,C=null,E=()=>{null!==B&&clearTimeout(B),B=null,C=null},F=a=>C?Promise.race([a,C]):a;try{let e;"claude"===a.engine&&"managed"===a.account.kind&&(0,o.DV)(a.account.home,a.spec.cwd);let f=a.imageRefs??[],g=a.prompt.trim()||f.length?(0,L.rM)(a.prompt,f):null;await O(()=>a.client.command({kind:"spawn",operationId:m,idempotencyKey:m,conversationId:a.receipt.conversationId,engine:a.engine,cwd:a.spec.cwd,prompt:g?.content.text??"",...g?.content.images.length?{images:g.content.images}:{},...g?{contentDigest:g.contentDigest}:{},accountId:a.account.accountId,parentConversationId:a.receipt.parentConversationId,..."resume-successor"===a.receipt.purpose?{sessionId:ad(a)}:{}}));let q=a.registry.rotateSpawnCapabilityForReceipt(a.receipt.launchId),s=r?a.registry.readOnlySnapshot().entries[(0,n.pp)(r)]:null;if(s?.structuredHost&&(x=a.registry.claimStructuredHost(r,l(),{allowUnhosted:!0}),!x?.claimOwner))throw z=!0,Error("structured resume host claim is unavailable");let u=b.durableSetupTimeoutMs??3e5;C=new Promise((a,b)=>{B=setTimeout(()=>{A=!0,b(Error(`structured spawn durable host setup timed out after ${u}ms`))},u),B.unref?.()});let D=h(a,q);D.then(async b=>{if(A)try{await b.release()}catch(b){console.error("[spawn] late structured host could not be released after setup timeout",{launchId:a.receipt.launchId,error:T(b)})}},()=>{}),t=await F(D);let G=function(a,b,c){if("codex"===a){let a=b.identity;if(!a.threadId)throw Error("structured Codex spawn returned no thread identity");if(!a.path)throw Error("structured Codex spawn feature gap: app-server returned no transcript path");let c=(0,n.ce)("codex",a.threadId);if(!c)throw Error("structured Codex spawn returned an invalid thread identity");return{key:c,path:a.path}}let d=b.identity;if(!d.sessionId)throw Error("structured Claude spawn returned no session identity");let e=(0,n.ce)("claude",d.sessionId);if(!e)throw Error("structured Claude spawn returned an invalid session identity");return{key:e,path:c.spec.transcript??(0,p.eV)(c.spec.cwd,d.sessionId,c.account.transcriptRoot)}}(a.engine,t,a);if(w=G.key,r&&(0,n.pp)(w)!==(0,n.pp)(r))throw Error("structured resume returned a different session identity");let H=x?.claimEpoch??0,I=x?.claimOwner??null,J=a.registry.stageStructuredSpawn(a.receipt.launchId,{key:w,artifactPath:G.path,cwd:a.spec.cwd,accountId:a.account.accountId,launchProfile:a.spec.launchProfile,status:"unhosted",host:null,structuredHost:function(a,b=0,c=0){return{kind:"codex"===a?"codex-app-server":"claude-broker",endpoint:"stdio:pending",process:null,eventCursor:b,protocolVersion:null,writerClaimEpoch:c,activeTurnRef:null,pendingAttention:[],activeFlags:[]}}(a.engine,x?.structuredHost?.eventCursor??0,H),claimEpoch:H,claimOwner:I,pendingAction:"spawn"});if("conflict"===J.kind)throw Error(`structured spawn registry conflict: ${J.code}`);let K=x?J.entry:a.registry.claimStructuredHost(w,l(),{allowUnhosted:!0});if(!K?.claimOwner)throw Error("structured spawn host claim is unavailable");y=null!==x,v.stopPersistence=await F(i(a.registry,w,t,K.claimOwner,K.claimEpoch));let M=async()=>{if(A)return!1;let b=a.registry.readOnlySnapshot(),c=b.receipts[a.receipt.launchId],d=b.entries[(0,n.pp)(w)];return!!(c&&"completed"!==c.state&&"failed"!==c.state&&"conflicted"!==c.state&&d?.structuredHostOperationId===a.receipt.launchId)};v.unregister=await F(j(w,t,M));try{e=await F(k(a,G.path))}catch(g){let b;if(!(g instanceof R))throw g;let f=await ah(t);if(f)throw Error(f);c=a.registry,d=a.receipt.launchId,(b=Object.values(c.readOnlySnapshot().heldDeliveries).find(a=>a.clientMessageId===`spawn_${d}`))&&"delivered"!==b.state&&c.recordDeliveryOutcome(b.id,"delivery-uncertain",g.message),e="held"}if("held"===e)return E(),a.registry.releaseStructuredSpawnAdmissionOwner(a.receipt.launchId,a.receipt.admissionOwner??l()),{ok:!0,target:null,path:G.path,..."claude"===a.engine?{effectivePermissionMode:a.spec.launchProfile?.permissionMode??"default"}:{},launchId:a.receipt.launchId,conversationId:a.receipt.conversationId,launched:!0,retrySafe:!1,initialMessage:"queued",state:"path-pending",transport:"structured"};await F(O(()=>a.client.transitionOperation(m,"delivered")));let N=a.registry.finalizeStructuredSpawn(a.receipt.launchId);if("conflict"===N.kind)throw Error(`structured spawn registry conflict: ${N.code}`);return E(),{ok:!0,target:null,path:G.path,..."claude"===a.engine?{effectivePermissionMode:a.spec.launchProfile?.permissionMode??"default"}:{},launchId:a.receipt.launchId,conversationId:N.conversation.id,launched:!0,retrySafe:!1,initialMessage:"delivered",state:"settled",transport:"structured"}}catch(k){E();let b=T(k);await a.client.transitionOperation(m,"failed",{reason:b}).catch(()=>{}),!t&&k instanceof D.EY&&(t=k.host,r&&x?.claimOwner&&(w=r,v.stopPersistence=await i(a.registry,r,t,x.claimOwner,x.claimEpoch,"dead")));try{await ai(t,v)}catch{throw k}let c=null,d=s;if(w){let b=a.registry.readOnlySnapshot().entries[(0,n.pp)(w)];b&&(c=b,d={key:w,artifactPath:b.artifactPath})}else s&&(c=a.registry.readOnlySnapshot().entries[(0,n.pp)(s.key)]??null);"string"==typeof c?.structuredHostOperationId&&c.structuredHostOperationId!==a.receipt.launchId&&(d=null);let h=!0;if(d&&!z)try{await aa(a.client,a.receipt,c??{accountId:a.account.accountId,cwd:a.spec.cwd},`structured-spawn-failed:${a.receipt.launchId}`,d)}catch{h=!1}!x||y&&h||(e=a.registry,f=x,g=h,f.claimOwner&&f.structuredHost&&(g&&e.setStructuredHostClaimed(f.key,{...f.structuredHost,endpoint:"stdio:released",process:null,activeTurnRef:null,pendingAttention:[],activeFlags:[]},"dead",f.claimOwner,f.claimEpoch,!0)||e.releaseStructuredHostClaim(f.key,f.claimOwner,f.claimEpoch)));let j="launch"===a.receipt.purpose;throw(h||j)&&(w?a.registry.failStructuredSpawn(a.receipt.launchId,b):a.registry.failSpawn(a.receipt.launchId,b)),k}}},44123:(a,b,c)=>{c.d(b,{e4:()=>e,u1:()=>d});let d="oauth-rate-limited",e="oauth-reauthentication-required"},44237:(a,b,c)=>{c.d(b,{iD:()=>v,Y:()=>u,C$:()=>s,xg:()=>x});var d=c(73024),e=c.n(d),f=c(55883),g=c(50920),h=c(24534),i=c(53174),j=c(89831);c(77598),c(76760);var k=c(31973);let l=()=>(0,g.BQ)("session-titles.json");class m extends Error{constructor(a){super(a),this.name="TitleStoreUnreadableError"}}function n(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.key&&a.key.length>0&&(null===a.title||"string"==typeof a.title&&a.title.length>0)&&"number"==typeof a.revision&&Number.isInteger(a.revision)&&a.revision>0&&"string"==typeof a.updatedAt}let o=new WeakMap,p=new WeakMap,q=null;function r(a,b,c=!0){let d=new Map,e=new Map,f=new Map,g=new Map,j=new Map,k=new Set;for(let b of Object.values(a.conversations)){let a=[...b.generations.map(a=>a.path),...b.continuityPaths];for(let c of(f.set(b.id,a),a))d.has(c)||d.set(c,b.id);let e=b.generations.at(-1);if(e){if(c){let{project:a}=(0,i.x)({projectOwnership:b.projectOwnership,cwd:e.launchProfile.cwd,launchProfileProject:e.launchProfile.project});a&&(g.set(e.path,a),e.launchProfile.cwd&&j.set(e.path,e.launchProfile.cwd))}for(let a of b.generations)a.path!==e.path&&k.add(a.path);for(let a of b.continuityPaths)a!==e.path&&k.add(a)}}for(let b of Object.keys(a.conversationAliases)){let c=function(a,b){let c=b,d=new Set;for(;!d.has(c);){d.add(c);let b=a.conversationAliases[c];if(!b)break;c=b}return c}(a,b);if(c===b)continue;let d=e.get(c);d?d.push(b):e.set(c,[b])}let l=new Map,m=new Map;return{signature:b,snapshot:a,conversationByPath:d,aliasesByCanonical:e,ownedPathsByConversation:f,projectByPath:g,projectMetadataByPath:{get(a){let b=l.get(a);if(void 0!==b)return b??void 0;let c=j.get(a),d=g.get(a);if(!c||!d)return void l.set(a,null);let e=m.get(c);m.has(c)||(e=(0,h.ot)(c),m.set(c,e));let f=e?.project===d?{displayName:e.displayName,...e.repo?{projectRoot:e.repo}:{},...e.unresolved?{unresolved:!0}:{}}:null;return l.set(a,f),f??void 0}},archivedPaths:k}}function s(a){let b=o.get(a);if(b)return b;let c=r(a,"snapshot");return o.set(a,c),c}function t(a,b=!1){let c;try{c=a.readOnlySnapshot()}catch(a){if(b&&!(a instanceof f.Ou))throw a;return null}return s(c)}function u(a,b,c=!0){let d=w(!0,void 0===b?void 0:c?s(b):function(a){let b=p.get(a);if(b)return b;let c=r(a,"snapshot-identity",!1);return p.set(a,c),c}(b),c);for(let b of a)d(b)}function v(a){let b=w(!1,function(){let a,b=(0,g.BQ)("agent-registry.json");try{let c=e().statSync(b,{bigint:!0});a=`${b}:${c.mtimeNs}:${c.size}`}catch{return null}if(q?.signature===a)return q;try{let c=(0,f.l5)(JSON.parse(e().readFileSync(b,"utf8")));return q=r(c,a)}catch{return null}}());for(let c of a)b(c)}function w(a=!0,b,c=!0){let d=new Map((function(a=l()){try{return function(a=l()){let b,c;try{b=e().readFileSync(a,"utf8")}catch(a){if("ENOENT"===a.code)return[];throw new m(`session titles store is unreadable: ${a.message}`)}try{c=JSON.parse(b)}catch{throw new m("session titles store is not valid JSON")}if(!c||"object"!=typeof c||Array.isArray(c))throw new m("session titles store has an unexpected shape");let d=c;if(void 0!==d.version&&1!==d.version)throw new m(`session titles store schema version ${String(d.version)} is unsupported`);if(!Array.isArray(d.titles))throw new m("session titles store is missing its titles array");let f=d.titles.filter(n);if(f.length!==d.titles.length)throw new m("session titles store contains malformed records");return f}(a)}catch{return[]}})().map(a=>[a.key,a])),g=void 0===b?t((0,f.tk)()):b,h=g?.snapshot??null,o=g?.conversationByPath??new Map,p=g?.aliasesByCanonical??new Map,q=g?.ownedPathsByConversation??new Map;return b=>{if("claude"!==b.engine&&"codex"!==b.engine)return;if(b.spawn){b.renamable=!1;return}let e=o.get(b.path);!b.conversationId&&e&&(b.conversationId=e);let f=e?h?.conversations[e]:void 0,l=f?.generations.at(-1);if(l?.path===b.path&&(b.title=l.launchProfile.title??b.title,c)){b.project=(0,i.x)({projectOwnership:f?.projectOwnership,cwd:l.launchProfile.cwd,launchProfileProject:l.launchProfile.project,fallbackProject:b.project}).project??b.project;let a=g?.projectMetadataByPath.get(b.path);a&&(b.projectName=a.displayName,b.projectRoot=a.projectRoot??b.projectRoot,b.projectUnresolved=a.unresolved),f?.projectOwnership&&(b.projectOwnership={...f.projectOwnership})}if(a&&(b.renamable=function(a){var b;if("claude"!==a.engine&&"codex"!==a.engine||a.kind&&"session"!==a.kind||!(!(b=a.path).slice(b.lastIndexOf("/")+1).startsWith("agent-")&&!b.includes("/subagents/")))return!1;let c=void 0===a.mtime?void 0:1e3*a.mtime;return!("codex"===a.engine&&(0,j.ET)(a.path,a.size,c))}(b)),d.size>0){let a=b.conversationId?p.get(b.conversationId)??[]:[],c=b.conversationId?q.get(b.conversationId)??[]:[];!function(a,b,c=[],d=[]){let e=function(a,b,c=[],d=[]){for(let e of function(a,b=[],c=[]){let d=[],e=new Set,f=a=>{e.has(a)||(e.add(a),d.push(a))};for(let c of(a.conversationId?.startsWith("conversation_")&&f(`conversation:${a.conversationId}`),b))c.startsWith("conversation_")&&c!==a.conversationId&&f(`conversation:${c}`);let g=b=>{if("claude"===a.engine||"codex"===a.engine){let c=(0,k.sz)(a.engine,b);c&&f(`uuid:${(0,k.pp)(c)}`)}f(`path:${b}`)};for(let b of(g(a.path),c))g(b);return d}(a,c,d)){let a=b.get(e);if(a)return a}return null}(a,b,c,d);e&&(a.titleRevision=e.revision,null!==e.title&&(void 0===a.autoTitle&&(a.autoTitle=a.title),a.title=e.title))}(b,d,a,c)}}}function x(a=!1){let b=t((0,f.tk)(),a);return b?{projectByPath:b.projectByPath,projectMetadataByPath:b.projectMetadataByPath,archivedPaths:b.archivedPaths}:{projectByPath:new Map,projectMetadataByPath:new Map,archivedPaths:new Set}}},45481:(a,b,c)=>{function d(a){return"string"==typeof a?a:""}function e(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function f(a){return"string"==typeof a?a:(Array.isArray(a)?a.map(e):[]).map(a=>d(a.text)).filter(Boolean).join("\n")}function g(a){return"string"==typeof a.origin?a.origin:d(e(a.origin).kind)}function h(a){return/^\[Request interrupted by user(?: for tool use)?\]$/.test(a)}function i(a){return/^<local-command-caveat>\s*Caveat:[\s\S]*<\/local-command-caveat>$/.test(a)}function j(a){return/^<task-notification\b[^>]*>[\s\S]*<\/task-notification>$/.test(a)}function k(a){if("human"===g(a)||"typed"===d(a.promptSource))return!1;if(!0===a.isMeta||!0===a.isCompactSummary||"interruptedMessageId"in a||"promptSource"in a||"origin"in a)return!0;let b=f(e(a.message).content).trim();return h(b)||i(b)||j(b)||/^This came from another Claude session\b[\s\S]*not typed by your user[\s\S]*$/.test(b)}function l(a){let b=g(a);if("human"===b||"peer"===b||"coordinator"===b)return!1;let c=d(a.promptSource);if("typed"===c||"sdk"===c)return!1;if(!0===a.isCompactSummary||"interruptedMessageId"in a||"command"===c||"system"===c||"task"===b||"task-notification"===b||!0===a.isMeta)return!0;let k=f(e(a.message).content).trim();return h(k)||i(k)||j(k)}c.d(b,{S2:()=>k,fR:()=>l,hB:()=>f,r1:()=>h})},47985:(a,b,c)=>{c.d(b,{Eu:()=>h,HL:()=>j,zy:()=>m});var d=c(77598),e=c(73024),f=c.n(e),g=c(94284);let h=131072,i=(0,g.E)("scanner-head-v1");function j(a){return(0,d.createHash)("sha256").update(a).digest("base64url")}function k(a){let b=0;for(let c of a)10===c&&(b+=1);return b}function l(a,b){let c=Buffer.from(a);return{value:{bytes:c,text:c.toString("utf8"),read:c.length},complete:b}}function m(a,b,c,d={}){let e=Math.min(Math.max(0,b),Math.max(0,d.maxBytes??h)),g=Math.max(0,d.lineLimit??0),j=i.get(a),n=j?.size===b&&j.mtimeMs===c,o=n?j.bytes:Buffer.alloc(0),p=g>0?k(o):0;if(o.length>=e||j?.eof&&n||g>0&&p>=g)return l(o.subarray(0,e),!0);let q=o.length>0?[o]:[],r=o.length,s=!1,t=null;try{for(t=f().openSync(a,"r");r<e;){let a=Math.min(h,e-r),b=Buffer.allocUnsafe(a),c=0,d=!1;for(;c<a;){let e=f().readSync(t,b,c,a-c,r+c);if(0===e){d=!0;break}if(g>0&&(p+=k(b.subarray(c,c+e))),c+=e,g>0&&p>=g)break}if(c>0&&(q.push(c===b.length?b:Buffer.from(b.subarray(0,c))),r+=c),g>0&&p>=g){s=!0;break}if(d)break}s||=r>=e}catch{return{value:null,complete:!1}}finally{null!==t&&f().closeSync(t)}let u=1===q.length?q[0]:Buffer.concat(q,r);if(!s)return l(u,!1);var v={size:b,mtimeMs:c,bytes:u,eof:r>=b};i.delete(a);let w=0;for(let a of i.values())w+=a.bytes.length;for(;i.size>0&&(i.size>=2048||w+v.bytes.length>0x2000000);){let a=i.keys().next().value;if(void 0===a)break;w-=i.get(a)?.bytes.length??0,i.delete(a)}return i.set(a,v),l(u,!0)}},49172:(a,b,c)=>{c.d(b,{$:()=>e});var d=c(17295);function e(a,b){let c={...a};if(delete c[d.mq],!b?.includes("telegram"))return c;try{let a=(0,d.w0)()?.connectorToken;a&&(c[d.mq]=a)}catch{}return c}},50076:(a,b,c)=>{c.d(b,{P7:()=>m,d2:()=>n,iv:()=>o});var d=c(45481),e=c(57564),f=c(7058),g=c(94284),h=c(38849);let i=(0,g.E)("last-turn-v5"),j=(0,g.E)("recent-turn-windows-v3");function k(a){if("string"!=typeof a)return null;let b=Date.parse(a);return Number.isFinite(b)?b:null}function l(a,b){if(b){let b=(0,h.xK)(a.payload)??{};return"user_message"===(0,h.r$)(b.type)?((0,h.r$)(b.message)??"").trim().length>0:"message"===(0,h.r$)(b.type)&&"user"===b.role&&(0,h.Em)(b.content).some(a=>((0,h.r$)(a.text)??(0,h.r$)(a.input_text)??"").trim().length>0)}if("user"!==a.type||(0,d.fR)(a))return!1;let c=(0,h.xK)(a.message)?.content;return"string"==typeof c?c.trim().length>0:(0,h.Em)(c).some(a=>"image"===a.type||"text"===a.type&&((0,h.r$)(a.text)??"").trim().length>0)}function m(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return{windows:[],prefixTruncated:!1,complete:!0};let b=1e3*a.mtime,c=j.get(a.path);if(c?.[0]===a.size&&c[1]===b)return structuredClone(c[2]);let g=(0,f.w8)(a.path,a.size,b),i={...function(a,b){let c=new Set,f=new Set,g=new Set;for(let i of a){let a=k(i.timestamp);if(null!==a){if(function(a,b){if(b){let b=(0,h.xK)(a.payload)??{},c=(0,h.r$)(b.type);return"agent_message"===c?((0,h.r$)(b.message)??"").trim().length>0:"message"===c&&"assistant"===b.role&&(0,h.Em)(b.content).some(a=>((0,h.r$)(a.text)??(0,h.r$)(a.output_text)??"").trim().length>0)}if("assistant"!==a.type||!0===a.isApiErrorMessage)return!1;let c=(0,h.xK)(a.message)??{};return"<synthetic>"!==(0,h.r$)(c.model)&&("string"==typeof c.content?c.content.trim().length>0:(0,h.Em)(c.content).some(a=>"text"===a.type&&((0,h.r$)(a.text)??"").trim().length>0))}(i,b)&&g.add(a),b){let b=(0,h.xK)(i.payload)??{},d="";"user_message"===(0,h.r$)(b.type)?d=(0,h.r$)(b.message)??"":"message"===(0,h.r$)(b.type)&&"user"===b.role&&(d=(0,h.Em)(b.content).map(a=>(0,h.r$)(a.text)??(0,h.r$)(a.input_text)??"").join("\n")),d&&(0,e.$)(d).structured&&c.add(a);continue}l(i,!1)&&("human"===("string"==typeof i.origin?i.origin:(0,h.r$)((0,h.xK)(i.origin)?.kind))||"typed"===i.promptSource?c.add(a):(0,d.S2)(i)||f.add(a))}}return{windows:function(a,b){let c=[],d=null,e=!1,f=null,g=null;for(let i of a){if(g=k(i.timestamp)??g,function(a,b){if(b)return!1;if("assistant"===a.type)return!0===a.isApiErrorMessage;if("user"!==a.type)return!1;if("interruptedMessageId"in a)return!0;let c=(0,h.xK)(a.message)?.content,d="string"==typeof c?c:(0,h.Em)(c).map(a=>(0,h.r$)(a.text)??"").join("\n");return/^\s*\[Request interrupted by user(?: for tool use)?\]\s*$/.test(d)}(i,b)){if(e&&null!==d){let a=Math.max(k(i.timestamp)??g??d,d);f={startedAt:d,endedAt:a},c.push(f)}e=!1;continue}if(l(i,b)){e&&null!==d||(d=k(i.timestamp),f=null),e=!0;continue}if(function(a,b){if(b){let b=(0,h.r$)(((0,h.xK)(a.payload)??{}).type);return"task_complete"===b||"turn_complete"===b||"turn_completed"===b||"turn_aborted"===b}if("result"===a.type)return!0;if("assistant"!==a.type)return!1;let c=(0,h.r$)(((0,h.xK)(a.message)??{}).stop_reason);return"end_turn"===c||"stop_sequence"===c}(i,b)){if(e&&null!==d){let a=Math.max(k(i.timestamp)??g??d,d);c.push({startedAt:d,endedAt:a})}e=!1,f=null;continue}f&&"assistant"===i.type&&(c.at(-1)===f&&c.pop(),f=null,e=!0)}return e&&null!==d&&c.push({startedAt:d,endedAt:null}),c}(a,b),operatorActionsAtMs:[...c].sort((a,b)=>a-b),unprovenancedUserActionsAtMs:[...f].sort((a,b)=>a-b),assistantMessagesAtMs:[...g].sort((a,b)=>a-b)}}(g.records,"codex-sessions"===a.root),prefixTruncated:g.prefixTruncated,complete:g.complete};return g.complete&&j.set(a.path,[a.size,b,i]),structuredClone(i)}function n(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=i.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=m(a),e=d.windows.at(-1)??null;return d.complete&&i.set(a.path,[a.size,b,e]),e}function o(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=m(a),c=b.assistantMessagesAtMs?.at(-1);return"number"==typeof c?c:b.prefixTruncated?void 0:null}},50887:(a,b,c)=>{c.d(b,{m3:()=>H,LJ:()=>G,Ku:()=>M,F5:()=>F,yv:()=>L,AB:()=>E,$n:()=>y,X$:()=>J});var d=c(4351),e=c(55883),f=c(57726),g=c(4406),h=c(74030),i=c(80502),j=c(73024),k=c.n(j),l=c(85923),m=c(31973),n=c(91836),o=c(3302),p=c(75060),q=c(59376),r=c(69882),s=c(30277),t=c(58874),u=c(88417),v=c(62142),w=c(89364);function x(a,b){return b?.supersededBy?{ok:!1,outcome:"failed",error:"superseded",status:409,successorConversationId:a.supersedenceChainTail(b.id)}:null}function y(a){return a.ok?"held"===a.outcome?"held":"delivered":"started"===a.actuation?"delivery-uncertain":"failed"}function z(a,b=500,c){return{ok:!1,outcome:"failed",error:a instanceof Error?a.message:String(a),status:b,...c?{actuation:c}:{}}}async function A(a){let b=await a;return b.ok?{...b,spawned:"resumed"===b.outcome}:b}function B(a,b){return a.ok||"started"===a.actuation||(0,w.IJ)(b),a}async function C(a){return(await (0,w.aI)()).has(a)?(0,w.u1)(a):"unknown"}async function D(a){return a&&(0,r.EG)(a)?(await (0,i.oe)(!0)).canonicalFor(a):null}async function E(a){return(await D(a))?.display??null}async function F(a){if(!a||!(0,r.EG)(a))return z("the conversation path is required to interrupt",400);let b=await D(a);if(null===b)return z("no active agent pane to interrupt",409);try{return await (0,w.EW)(b.paneId),{ok:!0,target:b.display}}catch(a){return z(a)}}async function G(a){if(!a||!(0,r.EG)(a))return z("the conversation path is required to compact",400);let b=await D(a);if(null===b)return z("no active agent pane to compact",409);try{return await (0,w.oF)(b.paneId,"/compact"),{ok:!0,target:b.display}}catch(a){return z(a)}}async function H(a,b,c,d){if(!a||!(0,r.EG)(a))return z("the conversation path is required to answer",400);if(!/^([1-9]|Tab|Enter|Escape)$/.test(b))return z("invalid key",400);let e=await D(a);if(null===e)return z("no active agent pane",409);try{let a=await (0,w.WS)(e.paneId,async()=>{let a=function(a,b,c,d){if(null!==(0,v._1)(a))return"blocked";if(!(0,v.cZ)(a))return"closed";let e=(0,v.fm)(a);if(/^[1-9]$/.test(b)){let a=e?.options.find(a=>String(a.value)===b);if(!a||"string"==typeof c&&c!==a.label||"string"==typeof d&&d!==e?.question)return"changed"}else if(e&&"string"==typeof d&&d!==e.question)return"changed";return null}(await (0,w.ZB)(e.paneId),b,c,d);return null===a&&await (0,w.V1)(e.paneId,[b]),a});if("blocked"===a)return z("pane is waiting for a confirmation that requires a manual decision",409);if("closed"===a)return z("pane is no longer waiting for a response",409);if("changed"===a)return z("the on-screen menu has changed",409);return{ok:!0,target:e.display}}catch(a){return z(a)}}function I(a,b){return"claude"!==b.engine&&"codex"!==b.engine?null:a.transcriptAccountId(b.engine,b.path)}async function J(a,b={}){if(!a||!(b.pathAllowed??r.EG)(a))return z("the conversation path is required to open",400);let c=b.registry??(0,e.tk)(),g=c.conversationForPath(a),h=x(c,g);if(h)return h;let j=b.recover??t.recoverDeadStructuredConversation,s=a=>({ok:!0,target:null,outcome:"resumed",spawned:a.spawned,structured:!0});try{let b=await j({path:a},{registry:c});if(b)return s(b)}catch(a){return z(a)}let u=(await (b.listFiles??q.CS)({pin:a})).find(b=>b.path===a);if(!u)return z("the viewer knows no transcript at this path",403);let v=null,w=g?null:"running"===u.proc?"session":(b.liveOwnership??p.uF)(u),y=null!==w&&await (b.livePaneHost??D)(a)!==null;if(!g&&!y){let d=(b.admit??function(a,b,c={}){if("claude"!==b.engine&&"codex"!==b.engine)return{ok:!1,reason:"this entry is not an agent conversation, so it has no session to continue"};let d=b.engine;if("claude"===d&&(0,o.kv)(b.path))return{ok:!1,reason:"a Claude subagent transcript has no session of its own to resume"};let e=(0,m.sz)(d,b.path);if(!e)return{ok:!1,reason:`the transcript filename carries no ${"claude"===d?"Claude":"Codex"} session id`};if(!(c.readable??function(a){try{return k().statSync(a).isFile()}catch{return!1}})(b.path))return{ok:!1,reason:"the conversation transcript cannot be read from disk"};let g=function(a,b,c,d){let e="running"===b.proc?"session":d(b);if(!e)return null;let f=a.readOnlySnapshot().entries[(0,m.pp)(c)];return f?.host||f?.structuredHost?null:e}(a,b,{engine:d,sessionId:e.sessionId},c.liveOwnership??p.uF);if("session"===g)return{ok:!1,blocking:!0,reason:"the session is still running in a terminal the viewer does not own; close it there, then continue from here"};if("cwd"===g)return{ok:!1,reason:`another ${"claude"===d?"Claude":"Codex"} process is running in this conversation's working directory, so the viewer cannot tell whether this session is still open there`};let h=(c.resolveAccount??f.lD.resolveTranscriptOwner)(d,b.path),i=(c.now??(()=>new Date().toISOString()))();a.reconcileConversations([{engine:d,path:b.path,accountId:h?.accountId??null,launchProfile:(0,l.Ui)({cwd:b.cwd||(c.headCwd??function(a){return(0,n.tX)(a,{maxLines:40})})(b.path)||"",model:b.launchModel??b.model,effort:b.effort??null,title:b.title||null,project:b.project||null}),turn:{state:"unknown",source:"empty",terminalAt:null},parentArtifactPath:b.parent,observedAt:i}]);let j=a.conversationForPath(b.path);return j?{ok:!0,conversationId:j.id}:{ok:!1,reason:"the viewer could not record an identity for this conversation"}})(c,u,{liveOwnership:()=>w});if(!d.ok&&d.blocking)return z(d.reason,409);if(d.ok)try{let b=await j({path:a,conversationId:d.conversationId},{registry:c});if(b)return s(b)}catch(a){return z(a)}else v=d.reason}let B=c.launchProfileForPath(u.path),C={model:u.launchModel??u.model,effort:u.effort,accountId:I(c,u),allowSubagents:B?.allowSubagents,plugins:B?.plugins,mcpServers:B?.mcpServers},E=(b.resumeSpecFor??d.A9)(u.root,u.path,C);if(!E){let a=(b.resumeEligibility??d.V9)(u.root,u.path,C);return a.ok?z(v??"this conversation cannot be resumed",409):z(a.reason,409)}try{return await A((b.deliver??i.Zp)({entry:u,spec:E,payload:""}))}catch(a){return z(a)}}function K(a,b){return Object.values(a.entries).filter(a=>a.artifactPath===b&&null!==a.host).sort((a,b)=>b.claimEpoch-a.claimEpoch||b.updatedAt.localeCompare(a.updatedAt))[0]??null}async function L(a,b={}){if(!a||!(b.pathAllowed??r.EG)(a))return z("the conversation path is required to close",400);let c=(await (b.listFiles??q.CS)({pin:a})).find(b=>b.path===a);if(c&&c.parent)return z("a branch shares its root conversation pane and cannot be closed independently",409);let d=b.registry??(0,e.tk)(),f=b.registry?()=>d.readOnlySnapshot():b.registrySnapshot??(()=>d.readOnlySnapshot()),g=K(f(),a);if(!g?.host)return z("no registered agent pane for this conversation",404);let h={pid:process.pid,startIdentity:s.B.processIdentity(process.pid)},i=b.registry||!b.registrySnapshot?a=>d.withOperationLock(g.key,h,a):a=>a();try{return await i(async()=>{let c=K(f(),a);if(!c?.host)return z("no registered agent pane for this conversation",404);if(!await (b.killHost??w.B$)(c.host))return z("the registered pane changed or its process did not exit",409);if(b.registry||!b.registrySnapshot){var e,g;let b=d.readOnlySnapshot().entries[`${c.key.engine}:${c.key.sessionId}`];b?.artifactPath===a&&(e=b.host,g=c.host,e&&e.kind===g.kind&&e.endpoint===g.endpoint&&e.paneId===g.paneId&&e.server.pid===g.server.pid&&e.server.startIdentity===g.server.startIdentity&&e.panePid.pid===g.panePid.pid&&e.panePid.startIdentity===g.panePid.startIdentity&&e.agent.pid===g.agent.pid&&e.agent.startIdentity===g.agent.startIdentity&&e.windowName===g.windowName&&e.argv.length===g.argv.length&&e.argv.every((a,b)=>a===g.argv[b]))&&d.markUnhosted(c.key)}return(0,w.HZ)(a),{ok:!0,target:c.host.paneId}})}catch(a){return z(a)}}async function M(a,b={}){let{pid:f,images:j}=a,k=a.text.trim(),l=Buffer.byteLength(k,"utf8"),m=j.length>0||l>32e3,n=(0,e.tk)(),o=a.conversationId?.startsWith("conversation_")?n.conversation(a.conversationId):n.conversationForPath(a.path),p=x(n,o);if(p)return p;if(o)try{let d=await (b.recover??t.recoverDeadStructuredConversation)({path:a.path,conversationId:o.id},{registry:n});if(d){let e=b.enqueueStructured??(await Promise.resolve().then(c.bind(c,71256))).enqueueStructuredMessage,f=await e({path:d.path,conversationId:d.conversationId,clientMessageId:a.clientMessageId,text:k,hasImages:j.length>0,...a.origin?{origin:a.origin}:{}},{registry:()=>n});if(!f)return z("structured delivery ownership is unavailable",503);if(!f.ok)return z(f.error,f.status);if("held"===f.outcome)return{ok:!0,target:d.spawned?null:f.target,outcome:"held",spawned:d.spawned,structured:!0};return{ok:!0,target:d.spawned?null:f.target,outcome:f.outcome,spawned:d.spawned,structured:!0,operationId:f.operationId,receipt:f.receipt}}}catch(a){return z(a)}let s=o?.generations.at(-1)?.path??a.path,v=null,y=[];if(o&&!a.reservedDeliveryId){let b;if("held"===(0,g._v)(o)&&m)return z("request-local delivery waits for migration completion",409);try{let c=l>32e3?"":k,d=null;try{d=(0,u.rM)(k,[]).contentDigest}catch{d=null}b=n.holdDelivery(o.id,c,a.clientMessageId??null,j.length?"ephemeral-images":l>32e3?"ephemeral-text":"text",[],d,a.origin?{origin:a.origin}:{})}catch(a){return z(a,409)}if("delivered"===b.state)return{ok:!0,target:o.id};if("delivery-uncertain"===b.state&&(y=b.artifactPaths,b=n.retryUncertainDelivery(b.id)),"held"===b.state)return m?(n.discardDelivery(b.id),z("request-local delivery waits for migration completion",409)):((0,h.U)(),{ok:!0,target:o.id,outcome:"held"});if("assigned"!==b.state||!b.generationId)return m&&n.discardDelivery(b.id),z("delivery target is unavailable",409);let c=n.beginDeliveryAttempt(b.id,b.generationId);if(!c)return m?(n.discardDelivery(b.id),z("request-local delivery waits for migration completion",409)):(n.requeueHeldDelivery(b.id),(0,h.U)(),{ok:!0,target:o.id,outcome:"held"});v=c.id;let d=n.conversation(o.id);s=d?.generations.find(a=>a.id===c.generationId)?.path??s}let D="none",E=a=>{try{return v&&(a.ok?n.recordDeliveryOutcome(v,"delivered"):"started"!==a.actuation&&n.discardDelivery(v)),a}catch(a){return z(a,500,"none"===D?void 0:"started")}},F=[],G=()=>y.length>0?{payload:[k,...y].filter(Boolean).join("\n"),imagePaths:y}:(b.buildImagePayload??w.Am)(k,j),H=()=>{v&&F.length>0&&n.recordDeliveryArtifacts(v,F)};try{let c=null;if(!s&&null!==f){let a=await (b.targetForKnownPid??C)(f);if("unknown"===a&&!s)return E(z("process is unknown to the viewer",403));c="unknown"===a?null:a}if(null!==c){let a=G();return F=a.imagePaths,H(),await (b.sendText??w.oF)(c,a.payload),D="completed",E({ok:!0,target:c,...F.length?{imagePaths:F}:{}})}if(!s||!(b.pathAllowed??r.EG)(s))return E(z("process is not in a tmux session",409));let e=await (b.listFiles??q.CS)({pin:s}),g=e.find(a=>a.path===s);if(!g)return E(z("file is unknown to the viewer",403));let h=n.launchProfileForPath(g.path),j=(b.resumeSpecFor??d.A9)(g.root,g.path,{model:a.resumeModel??g.launchModel??g.model,effort:a.resumeEffort??g.effort,..."boolean"==typeof a.resumeFast?{fast:a.resumeFast}:{},accountId:I(n,g),allowSubagents:h?.allowSubagents,plugins:h?.plugins,mcpServers:h?.mcpServers});if(j){let a=G();F=a.imagePaths,H();let c=await A((b.deliver??i.Zp)({entry:g,spec:j,payload:a.payload}));if(!c.ok)return D="started"===c.actuation?"started":"none",E(B(c,F));return D="completed",E({...c,...F.length?{imagePaths:F}:{}})}let k=new Map(e.map(a=>[a.path,a])),l=new Set,m=g;for(;m.parent&&k.has(m.parent)&&!l.has(m.path);)l.add(m.path),m=k.get(m.parent);if(m.path===g.path)return E(z("this conversation cannot be resumed",409));let o=n.launchProfileForPath(m.path),p=(b.resumeSpecFor??d.A9)(m.root,m.path,{model:m.launchModel??m.model,effort:m.effort,accountId:I(n,m),allowSubagents:o?.allowSubagents,plugins:o?.plugins,mcpServers:o?.mcpServers});if(!p)return E(z("root session is unavailable for messaging",409));let t=G();F=t.imagePaths,H();let u=`User message for your branch \xab${g.title.slice(0,100)}\xbb — forward it or handle it yourself:
126
+ `;z(l.hookPath,a,448),t.push({matcher:o,hooks:[{type:"command",command:l.command}]})}let u=b.allowSubagents?q:{...q,disableAllHooks:!1,allowManagedHooksOnly:!1},D=(c=b.cwd,d=b.mcpServers,f=function(a,b,c=g().join(a,".claude.json")){let d=e().existsSync(c)?A(c):{},f=x(d.mcpServers)??{},h=x(d.projects),i=b&&h?x(h[b]):null,j=C(b),k=x(i?.mcpServers)??{};return{...f,...j,...k}}(a,c,b.mcpStatePath),Object.fromEntries((0,j.c1)(d).flatMap(a=>{let b=x(f[a])??("viewer"===a?{type:"stdio",...v()}:null);return b?[[a,b]]:[]}))),F=new Set(Object.keys(D)),G=Object.keys(C(b.cwd)).filter(a=>!F.has(a)),H=Object.fromEntries(Object.entries(u).filter(([a])=>"mcpServers"!==a)),I=Object.fromEntries(m.flatMap(a=>void 0===p[a]?[]:[[a,p[a]]]));void 0!==p.enabledMcpjsonServers&&(I.enabledMcpjsonServers=B(p.enabledMcpjsonServers).filter(a=>F.has(a)));let J=[...new Set([...B(p.disabledMcpjsonServers),...G])];return J.length>0&&(I.disabledMcpjsonServers=J),z(l.settingsPath,JSON.stringify({...H,...I,hooks:{...r,PreToolUse:t}},null,2)+"\n",384),z(l.mcpConfigPath,JSON.stringify({mcpServers:D},null,2)+"\n",384),l}function F(a,b){return"codex"!==a?b:[b.trim(),t].filter(Boolean).join("\n\n")}},16777:(a,b,c)=>{c.d(b,{Q:()=>l,g:()=>t});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(79866);let l=7;function m(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function n(a){return"string"==typeof a&&a.trim()?a:null}function o(a,b){return Array.isArray(a)?[...new Set(a.flatMap(a=>{let c=n(m(a)?.[b]);return c?[c]:[]}))].sort():[]}function p(a){try{return JSON.parse(g().readFileSync(i().join((0,j.Pn)(),a),"utf8"))}catch{return null}}let q=["worktree-map.json","project-aliases.json"],r=null;function s(a,b){try{let c=g().statSync(i().join(a,b),{bigint:!0});return`${b}:${c.mtimeNs}:${c.size}`}catch{return`${b}:missing`}}function t(){let a=(0,j.Pn)(),b=function(a){let b=i().join(a,"state.sqlite"),c=[a],d=(0,k.Gw)(b,["flows","workflows"]);for(let[b,e]of[["flows","flows.json"],["workflows","workflows.json"]]){let f=d.get(b)??null;c.push(null===f?s(a,e):`${b}:sqlite:${f}`)}for(let b of q)c.push(s(a,b));return c.join("|")}(a);if(r?.signature===b)return r.key;let c=function(a){let b,c,d=e().createHash("sha1");d.update(a),d.update(`\0resolver-version\0${l}`);let f=i().join(a,"state.sqlite"),h=(0,k.M)(f,["flows","workflows"]),j=h.get("flows")??null,q=h.get("workflows")??null;d.update("\0flows\0"),d.update(JSON.stringify((b=m(null===j?p("flows.json"):{flows:j}))&&Array.isArray(b.flows)?b.flows.flatMap(a=>{let b=m(a),c=n(b?.project),d=n(b?.cwd);return b&&c&&d?[[c,d,n(b.implementerPath),o(b.rounds,"reviewerPath")]]:[]}):[])),d.update("\0workflows\0"),d.update(JSON.stringify((c=m(null===q?p("workflows.json"):{workflows:q}))&&Array.isArray(c.workflows)?c.workflows.flatMap(a=>{let b=m(a),c=n(b?.project),d=n(b?.repoDir),e=n(b?.worktreeDir);return b&&c&&(d||e)?[[c,d,e,o(b.stageRuns,"agentPath"),n(b.fixerPath)]]:[]}):[])),d.update("\0worktree-map.json\0");try{d.update(g().readFileSync(i().join(a,"worktree-map.json")))}catch{d.update("<missing>")}d.update("\0project-aliases.json\0");try{d.update(g().readFileSync(i().join(a,"project-aliases.json")))}catch{d.update("<missing>")}return d.digest("hex")}(a);return r={signature:b,key:c},c}},17295:(a,b,c)=>{c.d(b,{mq:()=>i,w0:()=>m,h2:()=>l});var d=c(77598),e=c(73024),f=c(76760),g=c.n(f),h=c(50920);let i="LLV_TELEGRAM_MCP_TOKEN";class j extends Error{constructor(a){super(`Telegram session storage is unsafe: ${a}`),this.name="UnsafeTelegramSessionError"}}function k(){return(0,h.BQ)("telegram")}function l(){return g().join(k(),"session.json")}function m(){try{let a=function(a){let b,c,g,h,i,j="function"==typeof process.getuid?process.getuid():null;try{b=e.lstatSync(a)}catch(a){if(a?.code==="ENOENT")return{status:"missing"};return{status:"unsafe",detail:"cannot inspect telegram directory"}}if(b.isSymbolicLink()||!b.isDirectory())return{status:"unsafe",detail:"telegram directory is unsafe"};if((63&b.mode)!=0||null!==j&&b.uid!==j)return{status:"unsafe",detail:"telegram directory ownership or permissions are unsafe"};let k=f.join(a,"session.json"),l=f.join(a,"connector-token");try{c=e.lstatSync(k)}catch(a){if(a?.code==="ENOENT")return{status:"missing"};return{status:"unsafe",detail:"cannot inspect session file"}}if(c.isSymbolicLink()||!c.isFile()||(63&c.mode)!=0||null!==j&&c.uid!==j)return{status:"unsafe",detail:"session file ownership or permissions are unsafe"};try{g=JSON.parse(e.readFileSync(k,"utf8"))}catch{return{status:"unsafe",detail:"session data is unreadable"}}if(!g||"object"!=typeof g||1!==g.version||"string"!=typeof g.credentialRef||"string"!=typeof g.sessionString||!g.sessionString||"string"!=typeof g.savedAt||"string"!=typeof g.connectorTokenSha256)return{status:"unsafe",detail:"session data is invalid"};try{h=e.lstatSync(l)}catch{return{status:"unsafe",detail:"connector token is missing or unreadable"}}if(h.isSymbolicLink()||!h.isFile()||(63&h.mode)!=0||null!==j&&h.uid!==j)return{status:"unsafe",detail:"connector token ownership or permissions are unsafe"};try{i=e.readFileSync(l,"utf8").trim()}catch{return{status:"unsafe",detail:"connector token is unreadable"}}let m=d.createHash("sha256").update(i).digest("hex");return/^[A-Za-z0-9_-]{43}$/.test(i)&&m===g.connectorTokenSha256?{status:"valid",sessionFile:g,connectorToken:i}:{status:"unsafe",detail:"connector token is invalid"}}(k());if("missing"===a.status)return null;if("unsafe"===a.status)throw new j(a.detail);let b=a.sessionFile;return{version:1,credentialRef:b.credentialRef,connectorToken:a.connectorToken,sessionString:b.sessionString,savedAt:b.savedAt}}catch(a){if(a instanceof j)throw a;throw new j("cannot read session storage")}}RegExp("^incoming_feed(-[0-9a-f]{16})?\\.jsonl$")},20707:(a,b,c)=>{c.d(b,{FX:()=>t,OQ:()=>v,fX:()=>D,pu:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(26579),k=c(50920),l=c(68574),m=c(65465),n=c(69611),o=c(96561),p=c(24534),q=c(16777);let r=-1/0,s=globalThis;function t(a){let b=(s.__llvProjectCatalogPublicationGeneration??0)+1;if(s.__llvProjectCatalogPublicationGeneration=b,!a)return{publication:b,persistence:null};let c=(s.__llvProjectCatalogPersistenceGeneration??0)+1;return s.__llvProjectCatalogPersistenceGeneration=c,{publication:b,persistence:c}}function u(a){return s.__llvProjectCatalogPublicationGeneration===a.publication}function v(a,b,c){return!!u(b)&&!!c&&((0,o.ru)(a),!0)}function w(){return(0,k.BQ)("project-catalog.json")}function x(a,b){return"codex-sessions"===a||"openclaw-sessions"===a||"claude-projects"===a&&("session"===b||"subagent"===b)}function y(a){return"codex-sessions"===a?"codex":"claude-projects"===a?"claude":"openclaw-sessions"===a?"openclaw":"shell"}function z(a){return"codex-sessions"===a?"codex":"claude-projects"===a?"claude":"openclaw-sessions"===a?"openclaw":"plain"}function A(a,b){let c=i().basename(a.path);return"subagent"===b?"Subagent "+c.slice(6).split(".")[0]:"codex-sessions"===a.rootName?"Codex session":"claude-projects"===a.rootName?"Claude session":"openclaw-sessions"===a.rootName?"OpenClaw session":"Background task "+c.split(".")[0]}function B(a,b){a.files[b.path]={summaryVersion:b.summaryVersion,summaryIncomplete:b.summaryIncomplete,rootName:b.rootName,size:b.size,mtimeMs:b.mtimeMs,sidecarSize:b.sidecarSize,sidecarMtimeMs:b.sidecarMtimeMs,stateKey:b.stateKey,project:b.project,projectName:b.projectName,projectUnresolved:b.projectUnresolved,projectRoot:b.projectRoot,kind:b.kind,session:b.session,worktree:b.worktree,cwd:b.cwd??null,sessionStartedAt:b.sessionStartedAt??null,nativeParentThreadId:b.nativeParentThreadId??null,nativeForkSourceThreadId:b.nativeForkSourceThreadId??null,title:b.titleCached?b.title:void 0,engine:b.engine,fmt:b.fmt}}function C(a){return"claude-projects"!==a.rootName&&"claude-tasks"!==a.rootName?null:i().relative(a.root,a.path).split(i().sep)[0]||null}async function D(a,b={}){let c=!1!==b.persist||!0===b.persistIndex,d=b.scanToken??t(c),f=function(){try{let a=JSON.parse(g().readFileSync(w(),"utf8"));if(1!==a.version&&2!==a.version||!a.files||"object"!=typeof a.files||Array.isArray(a.files))return{version:2,resolutionVersion:q.Q,files:{}};let b={};for(let[c,d]of Object.entries(a.files)){if(!d||"object"!=typeof d||Array.isArray(d)||"codex-sessions"!==d.rootName&&"claude-projects"!==d.rootName&&"claude-tasks"!==d.rootName&&"openclaw-sessions"!==d.rootName||"number"!=typeof d.size||"number"!=typeof d.mtimeMs||"string"!=typeof d.stateKey||"string"!=typeof d.project||void 0!==d.projectName&&"string"!=typeof d.projectName||void 0!==d.projectUnresolved&&!0!==d.projectUnresolved||void 0!==d.projectRoot&&null!==d.projectRoot&&"string"!=typeof d.projectRoot||"string"!=typeof d.kind)continue;let a="codex"===d.engine||"claude"===d.engine||"shell"===d.engine||"openclaw"===d.engine?d.engine:void 0,e="codex"===d.fmt||"claude"===d.fmt||"plain"===d.fmt||"openclaw"===d.fmt?d.fmt:void 0,f="string"==typeof d.cwd?d.cwd:null===d.cwd?null:void 0,g="string"==typeof d.sessionStartedAt?d.sessionStartedAt:null===d.sessionStartedAt?null:void 0,h="string"==typeof d.nativeParentThreadId?d.nativeParentThreadId:null===d.nativeParentThreadId?null:void 0,i="string"==typeof d.nativeForkSourceThreadId?d.nativeForkSourceThreadId:null===d.nativeForkSourceThreadId?null:void 0,j="number"==typeof d.sidecarSize?d.sidecarSize:null===d.sidecarSize?null:void 0,k="number"==typeof d.sidecarMtimeMs?d.sidecarMtimeMs:null===d.sidecarMtimeMs?null:void 0,l=4===d.summaryVersion&&"string"==typeof d.title&&"string"==typeof d.projectName&&void 0!==a&&void 0!==e&&void 0!==f&&void 0!==g&&void 0!==h&&void 0!==i&&void 0!==d.projectRoot&&void 0!==j&&void 0!==k;b[c]={summaryVersion:l?4:void 0,summaryIncomplete:!l&&!0===d.summaryIncomplete||void 0,rootName:d.rootName,size:d.size,mtimeMs:d.mtimeMs,sidecarSize:j,sidecarMtimeMs:k,stateKey:d.stateKey,project:d.project,projectName:"string"==typeof d.projectName?d.projectName:(0,n.rj)(d.project),projectUnresolved:!0===d.projectUnresolved||void 0,projectRoot:"string"==typeof d.projectRoot?d.projectRoot:null===d.projectRoot?null:void 0,kind:d.kind,session:x(d.rootName,d.kind),worktree:"string"==typeof d.worktree?d.worktree:void 0,cwd:f,sessionStartedAt:g,nativeParentThreadId:h,nativeForkSourceThreadId:i,title:"string"==typeof d.title?d.title:void 0,engine:a,fmt:e}}return{version:2,resolutionVersion:a.resolutionVersion??0,files:b}}catch{return{version:2,resolutionVersion:q.Q,files:{}}}}(),h=(0,q.g)(),k={},o=new Map,u=new Map,E=new Map,F=new Map;await (0,l.pV)(a,a=>{F.set(a.path,f.files[a.path]?.project)});let G=await (0,l.j0)(a,a=>(function(a,b,c){let d=b.files[a.path],e=(0,p.tS)(a.rootName,a.path,a.st);if(e.complete&&d?.summaryVersion===4&&d.size===a.st.size&&d.mtimeMs===a.st.mtimeMs&&d.sidecarSize===e.sidecarSize&&d.sidecarMtimeMs===e.sidecarMtimeMs&&void 0!==d.projectRoot&&(b.resolutionVersion!==q.Q||d.stateKey!==c)){let e=(0,p.xn)(a.rootName,a.root,a.path,{project:d.project,projectName:d.projectName??(0,n.rj)(d.project),projectUnresolved:d.projectUnresolved,worktree:d.worktree,cwd:d.cwd??void 0,sessionStartedAt:d.sessionStartedAt,nativeParentThreadId:d.nativeParentThreadId,nativeForkSourceThreadId:d.nativeForkSourceThreadId,projectRoot:d.projectRoot,title:d.title??A(a,d.kind),engine:d.engine??y(a.rootName),kind:d.kind,fmt:d.fmt??z(a.rootName)},c),f={...d,path:a.path,stateKey:c,project:e.project,projectName:e.projectName,projectUnresolved:e.projectUnresolved,projectRoot:e.projectRoot??null,worktree:e.worktree,cwd:e.cwd,session:x(a.rootName,e.kind),title:e.title,titleCached:!0,engine:e.engine,kind:e.kind,fmt:e.fmt};return B(b,f),f}if(b.resolutionVersion===q.Q&&e.complete&&d&&d.size===a.st.size&&d.mtimeMs===a.st.mtimeMs&&(4!==d.summaryVersion||d.sidecarSize===e.sidecarSize&&d.sidecarMtimeMs===e.sidecarMtimeMs)&&d.stateKey===c&&void 0!==d.projectRoot){if(4!==d.summaryVersion){let b=(0,p.CL)(a.rootName,a.root,a.path,a.st,c,e),f=b.description,g=!0===d.summaryIncomplete;return{...d,summaryVersion:b.complete?4:void 0,summaryIncomplete:!!g&&!b.complete||void 0,sidecarSize:e.sidecarSize,sidecarMtimeMs:e.sidecarMtimeMs,path:a.path,project:g?f.project||"other":d.project,projectName:g?f.projectName:d.projectName??(0,n.rj)(d.project),projectUnresolved:g?f.projectUnresolved:d.projectUnresolved,projectRoot:g?f.projectRoot??null:d.projectRoot,kind:g?f.kind:d.kind,session:x(a.rootName,g?f.kind:d.kind),worktree:g?f.worktree:d.worktree,cwd:f.cwd,sessionStartedAt:f.sessionStartedAt,nativeParentThreadId:f.nativeParentThreadId,nativeForkSourceThreadId:f.nativeForkSourceThreadId,title:f.title,titleCached:!0,engine:f.engine,fmt:f.fmt}}return{path:a.path,...d,session:x(a.rootName,d.kind),cwd:d.cwd??void 0,sessionStartedAt:d.sessionStartedAt,nativeParentThreadId:d.nativeParentThreadId,nativeForkSourceThreadId:d.nativeForkSourceThreadId,title:d.title??A(a,d.kind),titleCached:"string"==typeof d.title,engine:d.engine??y(a.rootName),fmt:d.fmt??z(a.rootName)}}let f=(0,p.CL)(a.rootName,a.root,a.path,a.st,c,e),g=f.description,h=f.complete||d?.summaryVersion!==4?void 0:d,i={summaryVersion:f.complete?4:void 0,summaryIncomplete:!f.complete||void 0,path:a.path,rootName:a.rootName,size:a.st.size,mtimeMs:a.st.mtimeMs,sidecarSize:e.sidecarSize,sidecarMtimeMs:e.sidecarMtimeMs,stateKey:c,project:h?.project??(g.project||"other"),projectName:h?.projectName??g.projectName,projectUnresolved:h?.projectUnresolved??g.projectUnresolved,projectRoot:h?h.projectRoot??null:g.projectRoot??null,kind:g.kind,session:x(a.rootName,g.kind),worktree:h?.worktree??g.worktree,cwd:h?h.cwd??void 0:g.cwd,sessionStartedAt:h?h.sessionStartedAt:g.sessionStartedAt,nativeParentThreadId:h?h.nativeParentThreadId:g.nativeParentThreadId,nativeForkSourceThreadId:h?h.nativeForkSourceThreadId:g.nativeForkSourceThreadId,title:g.title,titleCached:!0,engine:g.engine,fmt:g.fmt};return B(b,i),i})(a,f,h)),H=!1!==b.complete&&G.every(a=>4===a.summaryVersion),I=new Map;await (0,l.pV)(a,(a,b)=>{let c=G[b],d="claude-projects"===c.rootName&&c.session?C(a):null;d&&I.set(d,c.project)}),await (0,l.pV)(a,(b,c)=>{let d=C(a[c]),e=d?I.get(d):void 0;e&&(G[c].project=e)});let J=new Map;await (0,l.pV)(G,a=>{k[a.path]={summaryVersion:a.summaryVersion,summaryIncomplete:a.summaryIncomplete,rootName:a.rootName,size:a.size,mtimeMs:a.mtimeMs,sidecarSize:a.sidecarSize,sidecarMtimeMs:a.sidecarMtimeMs,stateKey:a.stateKey,project:a.project,projectName:a.projectName,projectUnresolved:a.projectUnresolved,projectRoot:a.projectRoot,kind:a.kind,session:a.session,worktree:a.worktree,cwd:a.cwd??null,sessionStartedAt:a.sessionStartedAt??null,nativeParentThreadId:a.nativeParentThreadId??null,nativeForkSourceThreadId:a.nativeForkSourceThreadId??null,title:a.titleCached?a.title:void 0,engine:a.engine,fmt:a.fmt};let c=F.get(a.path);if(c&&c!==a.project){let b=J.get(c)??new Set;b.add(a.project),J.set(c,b)}let d=a.project||"other";E.set(a.path,d);let e=o.get(d);if(e||(e={project:d,displayName:a.projectName??(0,n.rj)(d),smt:0,conversations:0},o.set(d,e)),e.smt=Math.max(e.smt,a.mtimeMs/1e3),a.session&&(e.conversations+=1),a.projectRoot&&!b.excludedSummaryPaths?.has(a.path)){let b=u.get(d)??new Map,c=b.get(a.projectRoot)??{count:0,newest:0};c.count+=1,c.newest=Math.max(c.newest,a.mtimeMs),b.set(a.projectRoot,c),u.set(d,b)}}),await (0,l.pV)([...u],([a,b])=>{let c=[...b].sort(([a,b],[c,d])=>d.count-b.count||d.newest-b.newest||a.localeCompare(c))[0]?.[0];c&&(o.get(a).projectRoot=c)}),await (0,l.pV)([...b.excludedSummaryPaths??[]],a=>{let b=k[a],c=b?o.get(b.project||"other"):void 0;b?.session&&c&&c.conversations>0&&(c.conversations-=1)});let K=[],L=new Map;await (0,l.pV)(G,(b,c)=>{L.set(b.path,{project:b.project||"other",projectName:b.projectName??(0,n.rj)(b.project||"other"),projectUnresolved:b.projectUnresolved,worktree:b.worktree,cwd:b.cwd??void 0,sessionStartedAt:b.sessionStartedAt,nativeParentThreadId:b.nativeParentThreadId,nativeForkSourceThreadId:b.nativeForkSourceThreadId,projectRoot:b.projectRoot,title:b.title,engine:b.engine,kind:b.kind,fmt:b.fmt}),b.session&&("codex"===b.engine||"claude"===b.engine||"openclaw"===b.engine)&&K.push({path:b.path,root:b.rootName,name:i().relative(a[c].root,b.path),project:b.project||"other",projectName:b.projectName,projectUnresolved:b.projectUnresolved,worktree:b.worktree,title:b.title,firstPrompt:"",engine:b.engine,kind:b.kind,fmt:b.fmt,mtime:b.mtimeMs/1e3,size:b.size})});let M=null!==d.persistence&&s.__llvProjectCatalogPersistenceGeneration===d.persistence;if(v(K,d,H),M&&c&&H){let a=!0;if(!1!==b.persist)try{let b=function(a,b){let c=new Map,d=[];for(let[e,f]of a){if(1!==f.size){d.push(e);continue}let g=f.values().next().value,h=new Set([e]);for(;g&&(b.get(g)?.conversations??0)===0;){if(h.has(g)){g=void 0;break}h.add(g);let b=a.get(g);if(b?.size!==1)break;g=b.values().next().value}g&&g!==e&&(b.get(g)?.conversations??0)>0&&c.set(e,g)}return{migrations:c,conflicts:d}}(J,o);if(b.conflicts.length>0)throw Error("ambiguous catalog project identity");let c=b.migrations,d=[...c].map(([a,b])=>({source:a,target:b,displayName:o.get(b)?.displayName??(0,n.rj)(b)})),e=(0,m.JC)(),f=e.conflicts.length;for(let a of e.registrations){let b=c.get(a.source);if(b&&b!==a.target){f+=1;continue}c.set(a.source,a.target),d.push(a)}f>0&&console.error(`[project catalog] ${f} durable project alias source(s) unresolved; persisting the clean batch and retrying them on a later scan`),(a=(0,m.YX)(d))&&(a=(0,j.aM)(c)),a&&(a=(0,m.oh)(d))}catch{a=!1}a?function(a){let b,c="create state directory",d=w();try{let f=w();d=f,g().mkdirSync(i().dirname(f),{recursive:!0,mode:448}),g().chmodSync(i().dirname(f),448),b=i().join(i().dirname(f),`.${i().basename(f)}.${process.pid}.${e().randomUUID()}.tmp`),c="write temporary index",d=b,g().writeFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384}),c="rename temporary index",d=f,g().renameSync(b,f)}catch(a){if(void 0!==b)try{g().unlinkSync(b)}catch{}!function(a,b,c){let d=Date.now();if(d-r<6e4)return;r=d;let e=c instanceof Error?`${c.message}${"code"in c&&c.code?` (${String(c.code)})`:""}`:String(c);console.error(`[project catalog] ${a} failed for ${b}: ${e}; a later scan will retry`)}(c,d,a)}}({version:2,resolutionVersion:q.Q,files:k}):console.error("[project catalog] board project migration deferred; a later scan will retry")}return{projectCatalog:[...o.values()].filter(a=>a.conversations>0).sort((a,b)=>b.smt-a.smt||a.project.localeCompare(b.project)),projectByPath:E,conversationCatalog:K,summaryByPath:L,complete:H}}},23962:(a,b,c)=>{c.d(b,{pN:()=>k,vg:()=>q});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(4116),i=c(24534),j=c(53174);function k(a,b,c=(0,h.MA)(a)){let d=c.canonicalConversationId(b),e=a.lineageEdges[d];if(!e||"viewer-spawn"!==e.source)return null;let f=e.evidence.launchId?a.receipts[e.evidence.launchId]:null,g=c.canonicalConversationId(e.parentConversationId),i=f?.createdAt??e.createdAt,j=(a.memberships[d]??[]).some(a=>a.createdAt===i&&null!==a.parentConversationId&&c.canonicalConversationId(a.parentConversationId)===g),l=e.evidence.parentSource??f?.parentSource??null,m=f?.delegationDepth!==null&&f?.delegationDepth!==void 0&&f.delegationDepth>0;return j||"inferred-caller"===l||m?"container-spawn":"operator-handoff"}function l(a,b){let c=(0,h.MA)(a),d=c.canonicalConversationId(b.conversationId),e=c.conversation(d),f=b.key?e?.generations.findIndex(a=>a.id===b.key?.sessionId)??-1:-1;return f>=0?{conversationId:d,generation:f+1}:b.key||e&&0!==e.generations.length?{conversationId:d}:{conversationId:d,generation:1}}function m(a){return a.startsWith("spawn:")}function n(a){return Object.values(a.receipts).filter(a=>"structured"===a.transport&&"launch"===a.purpose)}function o(a,b){let c=Date.parse(a.createdAt);return!Number.isFinite(c)||b-c<9e5}function p(a){try{let b=e().statSync(a);return e().accessSync(a,e().constants.R_OK),b.isFile()?{mtimeMs:b.mtimeMs,size:b.size}:null}catch{return null}}function q(a,b,c=Date.now(),d=p){let e=new Map(a.map(a=>[a.path,a])),f=new Set(e.keys()),i=function(a,b){let c=(0,h.MA)(a),d=new Map;for(let b of n(a)){let a=c.canonicalConversationId(b.conversationId),e=d.get(a);(!e||e.createdAt<b.createdAt)&&d.set(a,b)}return[...d.values()].filter(a=>!function(a,b){if("completed"!==a.state&&"failed"!==a.state&&"conflicted"!==a.state)return!1;let c=Date.parse(a.createdAt);return Number.isFinite(c)&&b-c>=864e5}(a,b))}(b,c),j=[],k=new Map,s=function(a){let b=(0,h.MA)(a),c={};for(let d of n(a))c[`spawn:${d.launchId}`]=b.canonicalConversationId(d.conversationId);return c}(b);for(let a of i){let i=function(a,b){let c,d,e,f=(c=l(a,b),d=(0,h.MA)(a),Object.values(a.heldDeliveries).find(a=>d.canonicalConversationId(a.conversationId)===c.conversationId&&a.clientMessageId===`spawn_${b.launchId}`&&a.command.operationId===`spawn_message_${b.launchId}`)??null),g=l(a,b),i="failed"===b.state||"conflicted"===b.state,j=f?.state==="delivered"||"completed"===b.state,k=!!f||"prompt-delivered"===b.state,m="pane-bound"===b.state||"host-verified"===b.state||!!(b.key||b.artifactPath),n="starting",o="pending";i?(n="failed",o="failed"):j?(n="route-recovered"===b.completionMode?"live-late-success":"recovered",o="delivered"):f?.state==="delivery-uncertain"&&f.error?.startsWith("structured initial message")?(n="recoverable-timeout",o="queued"):f?.state==="delivery-uncertain"?(n="reconciling",o="queued"):k?(n="queued",o="queued"):m&&(n="binding");let p=(e=b.launchDisplay)&&(e.prompt.trim()||e.echo.trim()||e.images>0)?{prompt:e.prompt,promptImages:e.images,promptEcho:e.echo}:f&&(f.text.trim()||f.runtimeImages.length)?{prompt:f.text,promptImages:f.runtimeImages.length,promptEcho:f.text}:null,q=j&&(Date.parse(f?.deliveredAt??"")||Date.parse(b.createdAt))||void 0;return{launchId:b.launchId,clientAttemptId:b.clientAttemptId,accountId:b.accountId,accountPin:b.accountPin,conversationId:g.conversationId,...void 0!==g.generation?{generation:g.generation}:{},state:n,initialMessage:o,retrySafe:"failed"===b.state,error:b.error,...void 0!==q?{deliveredAt:q}:{},...p?{promptImages:p.promptImages,promptAt:Date.parse(b.createdAt)||void 0,promptEcho:p.promptEcho,prompt:p.prompt}:{}}}(b,a),n=function(a,b,c,d,e,f,i){let j,k,l,n,p,q=(k=(j=(0,h.MA)(b)).canonicalConversationId(c.conversationId),l=j.conversation(k)?.generations??[],n=c.key?l.find(a=>a.id===c.key?.sessionId):void 0,p=c.key?b.entries[`${c.key.engine}:${c.key.sessionId}`]:void 0,n?.path??p?.artifactPath??c.artifactPath??null);if(q&&!m(q)){let j=a.get(q);if(j&&!m(j.path))return{entry:j,projected:!1,artifactPresent:!0};let k=i(q);if(k)return"pending"===c.artifactLifecycle||o(c,f)?{entry:function(a,b,c,d,e,f,i){let j=r(a,b,c,d,e);if(j.path=f,j.name=g().basename(f),delete j.spawn,i&&"object"==typeof i){var k;let c,d,f,g,l,m;j.mtime=i.mtimeMs/1e3,j.size=i.size,Object.assign(j,(k=i.mtimeMs,d=(c=(0,h.MA)(a)).canonicalConversationId(b.conversationId),f=c.conversation(d)?.turn,l=Number.isFinite(g=Date.parse(f?.observedAt??""))&&g>=Math.trunc(k)?f:null,m=(e-k)/1e3,l?.state==="busy"?m<180?{activity:"live",activityReason:"jsonl_turn_open"}:{activity:"stalled",activityReason:"jsonl_turn_stalled"}:l?.state==="terminal"?{activity:m<900?"recent":"idle",activityReason:"jsonl_turn_completed"}:m<20?{activity:"live",activityReason:"mtime_fresh"}:m<900?{activity:"recent",activityReason:"mtime_recent"}:{activity:"idle",activityReason:"mtime_old"}))}return j}(b,c,d,e,f,q,k),projected:!0,artifactPresent:!0}:{entry:null,projected:!1,artifactPresent:!0}}return{entry:null,projected:!1,artifactPresent:!1}}(e,b,a,i,f,c,d);if(n.entry){n.projected&&j.push(n.entry),function(a,b,c,d){let e,f="recovered"===a.state||"live-late-success"===a.state;if(!f&&"failed"!==a.state)return!0;let g=Date.parse(b);return(!f||"number"!=typeof(e=d?.lastAssistantMessageAt)||!!Number.isFinite(g)&&!(e>=g))&&(!Number.isFinite(g)||c-g<9e5)}(i,a.createdAt,c,n.entry)&&k.set(n.entry.path,function(a){if(void 0===a.prompt&&void 0===a.promptEcho&&void 0===a.promptImages&&void 0===a.promptAt)return a;let b={...a};return delete b.prompt,delete b.promptImages,delete b.promptAt,delete b.promptEcho,b}(i));continue}("pending"===a.artifactLifecycle||n.artifactPresent&&o(a,c))&&j.push(r(b,a,i,f,c))}return{cards:j,facts:k,routes:s}}function r(a,b,c,d,e){var f;let l,m,n=(0,h.MA)(a).canonicalConversationId(b.conversationId),o=a.conversations[n]?.projectOwnership??(b.explicitProject?{project:b.explicitProject,source:"operator",setAt:b.createdAt,operationId:b.launchId}:null),p=(0,j.x)({projectOwnership:o,cwd:b.cwd,launchProfileProject:b.launchProfile.project,fallbackProject:g().basename(b.cwd)}),q=a.lineageEdges[n],r=q?.parentConversationId??b.parentConversationId,s=r?a.conversations[r]?.generations.at(-1)?.path??null:null,t=a.memberships[n]??[],u=k(a,n),v=!!(s&&d.has(s)&&"container-spawn"!==u);return{path:`spawn:${b.launchId}`,root:"codex"===b.engine?"codex-sessions":"claude-projects",name:`spawn:${b.launchId}`,project:p.project??g().basename(b.cwd),...o?{projectOwnership:o}:{},cwd:b.cwd,projectRoot:(0,i.D$)(b.cwd)??null,...p.worktree?{worktree:p.worktree}:{},title:b.launchProfile.title??("codex"===b.engine?"Codex":"Claude"),engine:b.engine,kind:"session",fmt:b.engine,spawnOrigin:"viewer",parent:s&&d.has(s)?s:null,...v?{handoff:!0}:{},mtime:Date.parse(b.createdAt)/1e3,size:0,activity:(f=b.createdAt,l="failed"===c.state||"recovered"===c.state,m=Date.parse(f),l&&Number.isFinite(m)&&e-m>=9e5?"idle":"failed"===c.state?"stalled":"recovered"===c.state?"recent":"live"),activityReason:`structured_spawn_${c.state}`,proc:null,pid:null,model:b.launchProfile.model,launchModel:b.launchProfile.model,effort:b.launchProfile.effort,fast:b.launchProfile.fast,pendingQuestion:null,plan:b.launchProfile.plan,goal:b.launchProfile.goal,waitingInput:null,conversationId:n,generation:c.generation,...q||t.length?{durableLineage:{kind:q?.kind??"spawn",role:b.agentRole??q?.role??null,depth:b.delegationDepth,parentConversationId:q?.parentConversationId??b.parentConversationId,reviewsConversationId:q?.reviewsConversationId??null,memberships:t.map(a=>({kind:a.kind,containerId:a.containerId,role:a.role,slot:a.slot,stageId:a.stageId,stageOrder:a.stageOrder,round:a.round,parentConversationId:a.parentConversationId}))}}:{},spawn:c}}},24125:(a,b,c)=>{function d(a){return!!a.migratedTo}function e(a){return a.conversationId?"#c="+encodeURIComponent(a.conversationId):"#f="+encodeURIComponent(a.path)}function f(a,b){let c=null,e=null;for(let f of a)if(f.conversationId===b){if(f.path.startsWith("spawn:")){c=c??f;continue}if(e=e??f,!d(f))return f}return e??c}function g(a,b){let c=new Set,d=a;for(;void 0!==b[d]&&!c.has(d);)c.add(d),d=b[d];return d}function h(a){return a.some(d)?a.filter(a=>!d(a)):a}c.d(b,{H8:()=>g,Zo:()=>e,dN:()=>f,tB:()=>h})},24534:(a,b,c)=>{c.d(b,{CL:()=>am,D$:()=>aa,Oc:()=>S,hY:()=>_,ot:()=>$,q0:()=>an,tS:()=>B,xn:()=>al});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(65465),l=c(79866),m=c(69611),n=c(26200),o=c(94284),p=c(89831),q=c(47985),r=c(38849),s=c(45899),t=c(16777);(0,o.E)("meta-v4").clear(),(0,o.E)("title-v2").clear(),(0,o.E)("meta-v6").clear();let u=(0,o.E)("meta-transcript-v7");(0,o.E)("project-overlay-v1").clear();let v=(0,o.E)("project-overlay-v2"),w=(0,o.E)("title-v5");(0,o.E)("conversation-search-v1").clear(),(0,o.E)("codex-project-v5").clear();let x=(0,o.E)("repo-path-from-slug-v1"),y=(0,o.E)("claude-cwd-v3"),z=(0,o.E)("session-started-at-v1"),A=q.Eu;function B(a,b,c){let d="claude-projects"===a&&i().basename(b).startsWith("agent-")&&b.endsWith(".jsonl")?b.slice(0,-6)+".meta.json":null;if(!d)return{size:c.size,mtimeMs:c.mtimeMs,sidecarSize:null,sidecarMtimeMs:null,complete:!0};try{let a=e().statSync(d);return{size:c.size,mtimeMs:c.mtimeMs,sidecarSize:a.size,sidecarMtimeMs:a.mtimeMs,complete:!0}}catch(a){return{size:c.size,mtimeMs:c.mtimeMs,sidecarSize:null,sidecarMtimeMs:null,complete:"ENOENT"===a.code}}}let C=["<","#","Caveat:","{","[","This session is being continued"];function D(a){return(0,k.G$)(a)}function E(a){let b=i().sep+".claude"+i().sep+"worktrees"+i().sep,c=a.indexOf(b);if(c<0)return null;let d=a.slice(c+b.length).split(i().sep).filter(Boolean)[0];return d?{repo:a.slice(0,c),worktree:d}:null}function F(a){let b=a.split(i().sep);for(let a=1;a<b.length-1;a++){if("worktrees"!==b[a]&&".worktrees"!==b[a])continue;if(".claude"===b[a-1]||".codex"===b[a-1])break;let c=b[a+1];if(!c)break;return{repo:b.slice(0,a).join(i().sep)||i().sep,worktree:c}}return null}function G(a){let b=x.get(a);if(b&&b[0]>Date.now())return b[1];if(!a.startsWith("-"))return null;let c=[],d=[{pathname:i().parse(i().resolve(i().sep)).root,encoded:""}];for(let b=0;b<32&&d.length>0&&c.length<16;b+=1){let b=[];for(let f of d){let d;try{d=e().readdirSync(f.pathname,{withFileTypes:!0})}catch{continue}for(let g of d){let d=f.encoded+"-"+g.name.replace(/[^a-zA-Z0-9]/g,"-");if(d!==a&&!a.startsWith(d+"-"))continue;let h=i().join(f.pathname,g.name),j=g.isDirectory();if(!j&&g.isSymbolicLink())try{j=e().statSync(h).isDirectory()}catch{j=!1}j&&(d===a?c.push(h):b.push({pathname:h,encoded:d}))}}d=b.slice(0,64)}let f=c.filter(U),g=1===f.length?f[0]:1===c.length?c[0]:null;return x.set(a,[Date.now()+1e4,g]),g}function H(a){let b=i().sep+".codex"+i().sep+"worktrees"+i().sep,c=a.indexOf(b);if(c<0)return null;let[d,e]=a.slice(c+b.length).split(i().sep).filter(Boolean);return d&&e?{repo:"",worktree:d,projectHint:e}:null}let I=(0,o.E)("worktree-git"),J=(0,o.E)("project-info-cwd-v2"),K=(0,o.E)("persisted-project-v2");function L(a){return{project:m.Mv,displayName:m.MO,unresolved:!0,...a?{worktree:a}:{}}}function M(a,b,c){let d=(0,k.G$)(a);if(d===a&&d!==m.Mv&&!(0,m.z)(d))return L(b);let e=c?(0,m.im)(c):null,f=e?.project===d?e.displayName:(0,k.E2)().displayNames[d]??(0,m.rj)(d);return{project:d,displayName:f,...d===m.Mv?{unresolved:!0}:{},...b?{worktree:b}:{},...c?{repo:c}:{}}}let N="worktree-map.json",O=null,P=!1;function Q(){let a=(0,j.Pn)();if(O&&O.dir===a)return O.map;let b=new Map;try{let c=JSON.parse(e().readFileSync(i().join(a,N),"utf8"));for(let[a,d]of Object.entries(c))"string"==typeof d?.repo&&"string"==typeof d?.worktree&&b.set(a,{repo:d.repo,worktree:d.worktree})}catch{}return O={dir:a,map:b},P=!1,b}function R(a){return Q().get(a)??null}function S(){if(P&&O){P=!1;try{e().mkdirSync(O.dir,{recursive:!0}),e().writeFileSync(i().join(O.dir,N),JSON.stringify(Object.fromEntries(O.map)))}catch{}}}function T(a){var b;let c,d,f=I.get(a);if(f&&f[0]>Date.now())return f[1];let g=null;try{let b=i().join(a,".git");e().lstatSync(b).isFile()&&(g=function(a,b){let c=/^gitdir:\s*(.+?)\s*$/m.exec(b)?.[1];if(!c)return null;let d=i().resolve(a,c).split(i().sep),e=d.lastIndexOf("worktrees"),f=e>=0?d[e+1]:void 0;return f&&".git"===d[e-1]?{repo:d.slice(0,e-1).join(i().sep)||i().sep,worktree:f}:null}(a,e().readFileSync(b,"utf8")))}catch{}return I.set(a,[Date.now()+6e4,g]),g&&(b=g,(d=(c=Q()).get(a))&&d.repo===b.repo&&d.worktree===b.worktree||(c.set(a,b),P=!0)),g}function U(a){try{return e().lstatSync(i().join(a,".git")),!0}catch{return!1}}function V(a,b){if(null!==b)return b;let c=function(a){try{return JSON.parse(e().readFileSync(i().join((0,j.Pn)(),a),"utf8"))}catch{return null}}(`${a}.json`);return Array.isArray(c?.[a])?c[a]:[]}function W(a,b,c=!1){if("string"!=typeof a||!a.trim()||"string"!=typeof b||!b.trim())return null;let d=D(b.replace(/[^a-zA-Z0-9]/g,"-")),e=c||d!==a?i().basename(b):void 0,f=(0,m.V5)(b);return{project:a,worktree:e,...f?{repo:f}:{}}}function X(a=(0,t.g)()){let b=(0,j.Pn)(),c=K.get("state");if(c&&c[0]>Date.now()&&c[1]===b&&c[2]===a)return c[3];let d=new Map,e=new Map,f=new Map,g=(a,b)=>{b&&"string"==typeof a&&a.trim()&&e.set(a,b),((a,b)=>{if(!b||"string"!=typeof a||!a.endsWith(".jsonl"))return;let c=i().basename(i().dirname(a));c.startsWith("-")&&f.set(c,b)})(a,b)},h=(0,l.M)(i().join(b,"state.sqlite"),["flows","workflows"]);for(let a of V("flows",h.get("flows")??null)){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=W(a.project,a.cwd);if(b&&"string"==typeof a.cwd)for(let c of(d.set(a.cwd,b),g(a.implementerPath,b),Array.isArray(a.rounds)?a.rounds:[]))!c||"object"!=typeof c||Array.isArray(c)||g(c.reviewerPath,b)}for(let a of V("workflows",h.get("workflows")??null)){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=W(a.project,a.repoDir);b&&"string"==typeof a.repoDir&&d.set(a.repoDir,b);let c=W(a.project,a.worktreeDir,!0);for(let e of(c&&"string"==typeof a.worktreeDir&&d.set(a.worktreeDir,c),Array.isArray(a.stageRuns)?a.stageRuns:[]))!e||"object"!=typeof e||Array.isArray(e)||g(e.agentPath,c??b);g(a.fixerPath,c??b)}let k={byCwd:d,byPath:e,bySlug:f};return K.set("state",[Date.now()+1e4,b,a,k]),k}let Y=/^\.openclaw(?:-[A-Za-z0-9._-]+)?$/;function Z(a){let b=i().resolve(a);if("workspace"!==i().basename(b))return null;let c=i().dirname(b),d=process.env.OPENCLAW_STATE_DIR?.trim();return void 0!==d&&""!==d&&i().resolve(d)===c||i().dirname(c)===g().homedir()&&Y.test(i().basename(c))?{project:(0,m.qe)(b),displayName:"OpenClaw"}:null}function $(a,b){if(!a.trim())return null;let c=b??(0,t.g)(),d=J.get(a);if(d&&d[0]>Date.now()&&d[1]===c)return d[2];let e=ac(a);if(e)return J.set(a,[Date.now()+1e4,c,e]),e;let f=Z(a);if(f)return J.set(a,[Date.now()+1e4,c,f]),f;let g=H(a),h=E(a)??F(a)??(g?T(a)??g:T(a));if(!h&&!U(a)&&!(h=R(a))){let b=X(c).byCwd.get(a);if(b){let d=M(b.project,b.worktree,b.repo);return J.set(a,[Date.now()+1e4,c,d]),d}}let i=()=>{let b=(0,m.NP)(a);return b?{project:b.project,displayName:b.displayName,...h?.worktree?{worktree:h.worktree}:{}}:L(h?.worktree)},j=h?.repo||(0,m.V5)(a);if(!j){let b=g?.projectHint?M(g.projectHint,h?.worktree):i();return J.set(a,[Date.now()+1e4,c,b]),b}let k=(0,m.im)(j),l=k?{project:k.project,displayName:k.displayName,worktree:h?.worktree,repo:j}:i();return J.set(a,[Date.now()+1e4,c,l]),l}function _(a){return $(a)?.project??null}function aa(a){let b=ac(a);if(b)return b.repo;if(Z(a))return;let c=E(a)??F(a)??(H(a)?T(a)??H(a):null)??T(a)??R(a);return c?.repo||(0,m.V5)(a)||void 0}function ab(a){let b="--codex-worktrees-",c=null,d=1/0;for(let e of["--claude-worktrees-",b,"--worktrees-"]){let b=a.indexOf(e);b>=0&&b<d&&(c=e,d=b)}if(!c||!Number.isFinite(d))return null;let e=a.slice(d+c.length);if(c===b){let a=e.indexOf("-");if(a<=0)return null;let b=e.slice(0,a),c=e.slice(a+1),d=["--claude-worktrees-","--codex-worktrees-","--worktrees-","-worktrees-"].map(a=>c.indexOf(a)).filter(a=>a>=0).sort((a,b)=>a-b)[0],f=void 0===d?c:c.slice(0,d);return f?{project:f,worktree:b}:null}let f=["--claude-worktrees-","--codex-worktrees-","--worktrees-","-worktrees-"].map(a=>e.indexOf(a)).filter(a=>a>=0).sort((a,b)=>a-b)[0],g=void 0===f?e:e.slice(0,f);if(!g)return null;let h=a.slice(0,d),i=D(h);return i?{project:i,worktree:g,repo:G(h)??void 0}:null}function ac(a){let b=a.split(i().sep),c=b.findIndex(a=>/^claude-\d+$/.test(a)),d=c>=0?b[c+1]:void 0,e=c>=0?b[c+2]:void 0;if(!d||!e||"scratchpad"!==b[c+3])return null;let f=ab(d);if(f?.repo){let a=(0,m.im)(f.repo);if(a)return{...a,worktree:f.worktree,repo:f.repo}}if(f)return M(f.project,f.worktree,f.repo);let g=G(d);if(g){let a=(0,m.im)(g);if(a)return{...a,repo:g}}let h=D(d);return h?M(h):null}function ad(a){let b="string"==typeof a?a.trim():"";return b&&!C.some(a=>b.startsWith(a))?b:null}function ae(a,b,c){return b.size<=a.size||!c.complete||!c.value||c.value.read<a.headBytes||(0,q.HL)(c.value.bytes.subarray(0,a.headBytes))!==a.headFingerprint||null===a.value&&a.headBytes<A?null:{size:b.size,mtimeMs:b.mtimeMs,value:a.value,headBytes:c.value.read,headFingerprint:(0,q.HL)(c.value.bytes)}}function af(a,b,c){return{size:a.size,mtimeMs:a.mtimeMs,value:c,headBytes:b.read,headFingerprint:(0,q.HL)(b.bytes)}}function ag(a,b){let c=y.get(a);if(c?.size===b.size&&c.mtimeMs===b.mtimeMs)return{value:c.value,complete:!0,headPreserved:!0};let d=(0,q.zy)(a,b.size,b.mtimeMs,{maxBytes:A});if(!d.complete||!d.value)return{value:c?.value??null,complete:!1,headPreserved:!1};if(c){let e=ae(c,b,d);if(e)return y.set(a,e),{value:e.value,complete:!0,headPreserved:!0}}let e=function(a){for(let b of a)try{let a=JSON.parse(b),c=(0,r.xK)(a),d=(0,r.r$)(c?.cwd)??(0,r.r$)((0,r.xK)(c?.payload)?.cwd);if(d)return d}catch{continue}return null}(d.value.text.split("\n").slice(0,25));return y.set(a,af(b,d.value,e)),{value:e,complete:!0,headPreserved:!1}}function ah(a,b){let c=z.get(a);if(c?.size===b.size&&c.mtimeMs===b.mtimeMs)return{value:c.value,complete:!0,headPreserved:!0};let d=(0,q.zy)(a,b.size,b.mtimeMs,{maxBytes:A});if(!d.complete||!d.value)return{value:c?.value??null,complete:!1,headPreserved:!1};if(c){let e=ae(c,b,d);if(e)return z.set(a,e),{value:e.value,complete:!0,headPreserved:!0}}let e=null;for(let a of d.value.text.split("\n").slice(0,10))if(a.trim())try{let b=JSON.parse(a),c="string"==typeof b.payload?.timestamp?b.payload.timestamp:"string"==typeof b.timestamp?b.timestamp:null;if(c&&Number.isFinite(Date.parse(c))){e=new Date(c).toISOString();break}}catch{continue}return z.set(a,af(b,d.value,e)),{value:e,complete:!0,headPreserved:!1}}function ai(a,b){let c=X(b).byPath.get(a);return c?M(c.project,c.worktree,c.repo):null}function aj(a,b,c){let d=w.get(a);if(d?.size===b.size&&d.mtimeMs===b.mtimeMs)return{value:d.value,complete:!0,headPreserved:!0};let e=(0,q.zy)(a,b.size,b.mtimeMs,{maxBytes:A});if(!e.complete||!e.value)return{value:d?.value??null,complete:!1,headPreserved:!1};if(d){let c=ae(d,b,e);if(c)return w.set(a,c),{value:c.value,complete:!0,headPreserved:!0}}let f=function(a,b){for(let c of a){let a;try{let b=JSON.parse(c);if(!b||"object"!=typeof b||Array.isArray(b))continue;a=b}catch{continue}if("summary"===a.type){let b=ad(a.summary);if(b)return b}if("ai-title"===a.type){let b=ad(a.aiTitle);if(b)return b}let d=ad(function(a,b){if("openclaw"===b){let b=(0,s.j5)(a);if(!b||"user"!==b.role)return null;let c=b.content;return"string"==typeof c?c.trim()||null:(0,r.Em)(c).filter(a=>"text"===a.type).map(a=>(0,r.r$)(a.text)??"").join(" ").trim()||null}if("codex"===b){let b=(0,r.xK)(a.payload)??{};if("user_message"===b.type)return("string"==typeof b.message?b.message.trim():"")||null;if("message"===b.type&&"user"===b.role)return(0,r.Em)(b.content).map(a=>(0,r.r$)(a.text)??(0,r.r$)(a.input_text)??"").join(" ").trim()||null}else if("user"===a.type){let b=(0,r.xK)(a.message)?.content;return"string"==typeof b?b.trim()||null:(0,r.Em)(b).filter(a=>"text"===a.type).map(a=>(0,r.r$)(a.text)??"").join(" ").trim()||null}return null}(a,b));if(d)return d}return null}(e.value.text.split("\n").slice(0,151),c);return w.set(a,af(b,e.value,f)),{value:f,complete:!0,headPreserved:!1}}function ak(a,b,c,d,e,f){let g=v.get(c);if(e&&g&&g.stateKey===f&&g.cwd===d)return{project:g.project,projectName:g.projectName,projectUnresolved:g.projectUnresolved,worktree:g.worktree,projectRoot:g.projectRoot};let h=null;if("codex-sessions"===a)h=(d?$(d,f):null)??ai(c,f);else if("claude-projects"===a){let a=i().relative(b,c).split(i().sep)[0]??"",e=ab(a);h=(d?$(d,f):null)??ai(c,f)??(e?M(e.project,e.worktree,e.repo):M(D(a)))}else if("openclaw-sessions"===a)h=(d?$(d,f):null)??ai(c,f);else if("claude-tasks"===a){let a,d=i().relative(b,c).split(i().sep)[0]??"";h=((a=X(f).bySlug.get(d))?M(a.project,a.worktree,a.repo):null)??M(D(d))}let j={project:(h??=L()).project,projectName:h.displayName,projectUnresolved:h.unresolved,worktree:h.worktree,projectRoot:d?aa(d)??null:void 0};return e&&v.set(c,{...j,stateKey:f,cwd:d}),j}function al(a,b,c,d,e=(0,t.g)()){let f=ak(a,b,c,d.cwd,!0,e);return{...d,project:f.project,projectName:f.projectName,projectUnresolved:f.projectUnresolved,worktree:f.worktree,projectRoot:f.projectRoot}}function am(a,b,c,d,e=(0,t.g)(),f=B(a,c,d)){var g;let h,j,k,l=u.get(c);if(f.complete&&l&&(g=l.identity,g.size===f.size&&g.mtimeMs===f.mtimeMs&&g.sidecarSize===f.sidecarSize&&g.sidecarMtimeMs===f.sidecarMtimeMs))h=l.metadata,j=!0,k=!0;else{let b=function(a,b,c,d){let e,f=i().basename(b),g=d.complete,h=null,j=null,k=null,l=null,m="claude",o="",q="plain",s=d.complete;if("codex-sessions"===a){let a=s?ag(b,c):{value:null,complete:!1,headPreserved:!1};if(s&&=a.complete,g=a.complete,e=a.value??void 0,s){let a=ah(b,c);s&&=a.complete,h=a.value}if(s){let a=(0,p.H)(b,c.size,c.mtimeMs);s&&=a.complete,j=a.parent,k=a.forkedFrom}if(m="codex",o="session",q="codex",s){let a=aj(b,c,"codex");s&&=a.complete,l=a.value}l??="Codex session"}else if("claude-projects"===a){let a=s?ag(b,c):{value:null,complete:!1,headPreserved:!1};if(s&&=a.complete,g=a.complete,e=a.value??void 0,s){let a=ah(b,c);s&&=a.complete,h=a.value}if(q="claude",f.startsWith("agent-")){o="subagent";let a=s?null===d.sidecarSize?{value:null,complete:d.complete}:(0,r.Y6)(b.slice(0,-6)+".meta.json"):{value:null,complete:!1};s&&=a.complete;let e=a.value??{};if(!(l=(0,r.r$)(e.description)??(0,r.r$)(e.name)??null)&&s){let a=aj(b,c,"claude");s&&=a.complete,l=a.value}l??="Subagent "+f.slice(6).split(".")[0]}else{if(o="session",s){let a=aj(b,c,"claude");s&&=a.complete,l=a.value}l??="Claude session"}}else if("openclaw-sessions"===a){let a=s?ag(b,c):{value:null,complete:!1,headPreserved:!1};if(s&&=a.complete,g=a.complete,e=a.value??void 0,s){let a=ah(b,c);s&&=a.complete,h=a.value}if(m="openclaw",o="session",q="openclaw",s){let a=aj(b,c,"openclaw");s&&=a.complete,l=a.value}l??="OpenClaw session"}else"claude-tasks"===a&&(m="shell",o="background",l="Background task "+f.split(".")[0]);return{metadata:{cwd:e,sessionStartedAt:h,nativeParentThreadId:j,nativeForkSourceThreadId:k,title:(0,n.cr)(l??f,120),engine:m,kind:o,fmt:q},complete:s,cwdComplete:g}}(a,c,d,f);h=b.metadata,j=b.complete,k=b.cwdComplete,j&&u.set(c,{identity:f,metadata:h})}let m=ak(a,b,c,h.cwd,k,e);return{description:{project:m.project,projectName:m.projectName,projectUnresolved:m.projectUnresolved,worktree:m.worktree,cwd:h.cwd,sessionStartedAt:h.sessionStartedAt,nativeParentThreadId:h.nativeParentThreadId,nativeForkSourceThreadId:h.nativeForkSourceThreadId,projectRoot:m.projectRoot,title:h.title,engine:h.engine,kind:h.kind,fmt:h.fmt},complete:j}}function an(a,b,c,d,e=(0,t.g)(),f=B(a,c,d)){return am(a,b,c,d,e,f).description}},25695:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(36855),e=c(88417);function f(a,b){return{images:[],error:{error:a,status:b}}}function g(a){let b;if(void 0!==a.images){if(!Array.isArray(a.images))return f("images must be an array",400);b=a.images}else if(void 0!==a.image){if(!a.image||"object"!=typeof a.image||Array.isArray(a.image))return f("invalid image",400);b=[a.image]}else b=[];if(b.length>d.sP)return f(`too many images (${d.sP} limit)`,413);let c=[],g=0,h=0;for(let a of b){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.base64||"string"!=typeof a.mime)return f("invalid image",400);if((g+=Buffer.byteLength(a.base64))>d.u1)return f("runtime image request encoding is too large",413);let b=function(a){if(!a||a.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(a))return null;let b=Buffer.from(a,"base64");return b.length>0&&b.toString("base64")===a?b:null}(a.base64);if(!b)return f("runtime image base64 is invalid",400);let i=(0,e.CC)(a.mime);if(!i)return f("unsupported image type",415);if(b.byteLength>d.DO)return f("image is too large (10 MB limit)",413);if(!(0,d.G)(b,i))return f("runtime image signature does not match MIME",415);if((h+=b.byteLength)>d.ON)return f("runtime image request is too large",413);c.push({base64:a.base64,mime:i})}return{images:c,error:null}}},26200:(a,b,c)=>{function d(a,b=160){let c=a.replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/[*_~#>]+/g,"").replace(/\s+/g," ").trim().replace(/(?:\/[^\s)]+){3,}/g,a=>{if(a.length<=40)return a;let b=a.split("/").filter(Boolean);return b.length>=2?".../"+b.slice(-2).join("/"):a}).replace(/\s+/g," ").trim();return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}function e(a,b=32){let c=d(a,b+20);return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}c.d(b,{HV:()=>e,QE:()=>g,St:()=>h,V0:()=>j,bF:()=>k,cr:()=>d,tU:()=>i});let f=new Set(["codex session","claude session","codex","claude"]),g="title is required for every new spawn";function h(a,b=160){var c;if("string"!=typeof a)return null;let e=a.trim(),g=d(e,b);return!e||!/[\p{L}\p{N}]/u.test(g)||"string"==typeof(c=e)&&f.has(c.toLocaleLowerCase().replace(/[\p{P}\p{S}\s]+/gu," ").trim())?null:e.length>b?e.slice(0,b-1).trimEnd()+"…":e}function i(a,b=160){let c=h(a,b);return c?d(c,b):null}function j(a,b=60){return i(a?.split(/\r?\n/,1)[0]??"",b)}function k(a,b,c="New task"){let e="string"==typeof a&&d(a,40)||"agent",f=j(b,60)??i(c,60)??"New task";return d(`${e} \xb7 ${f}`,120)}},26579:(a,b,c)=>{c.d(b,{C9:()=>R,aM:()=>V,cw:()=>T,L5:()=>U});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(92233),l=c(65465);let m="viewMode",n="taskPanelOpen",o="idleCollapseMinutes",p="path:",q=a=>`${p}${a}`,r=a=>`favorite:${a}`,s=a=>`fold:${a}`,t=a=>`tray:${a}`;function u(a,b){let c=new Set,d=a;for(;void 0!==b[d]&&!c.has(d);)c.add(d),d=b[d];return d}function v(a,b){return a.startsWith(p)?q(u(a.slice(p.length),b)):a}let w={absent:0,manual:1,pinned:2,expanded:3,hidden:4};function x(a,b){let c=new Map,d=(a,d)=>{let e=u(a,b),f=c.get(e);(void 0===f||(w[d]??0)>(w[f]??0))&&c.set(e,d)};for(let b of a.prefs.hidden)d(b,"hidden");for(let b of a.prefs.expanded)d(b,"expanded");for(let b of a.prefs.manual)d(b,(a.explicitManual??[]).includes(b)?"pinned":"manual");return c}function y(a,b){let c=new Set(a??[]),d=new Set(b??[]);return[...new Set([...c,...d])].filter(a=>c.has(a)!==d.has(a))}function z(a){return[...new Set(a)]}function A(a){return a.pathAliases??{}}function B(a,b){let c=new Set,d=a;for(;void 0!==b[d];){if(c.has(d))throw Error("board path alias cycle");c.add(d),d=b[d]}return d}function C(a,b=A(a)){let c=function(a){let b={};for(let c of Object.keys(a)){let d=B(c,a);c!==d&&(b[c]=d)}return b}(b),d=z(a.prefs.hidden.map(a=>B(a,c))),e=new Set(d),f=a=>z(a.map(a=>B(a,c)).filter(a=>!e.has(a))),g=f(a.prefs.manual),h=new Set(g);return{...a,pathAliases:c,explicitManual:f(a.explicitManual??[]).filter(a=>h.has(a)),prefs:{...a.prefs,manual:g,hidden:d,expanded:f(a.prefs.expanded),favorites:z(a.prefs.favorites??[]),foldedEngineChildIds:z(a.prefs.foldedEngineChildIds??[]),expandedEngineTrayParentIds:z(a.prefs.expandedEngineTrayParentIds??[]),seenAt:Object.fromEntries(Object.entries(a.prefs.seenAt??{}).sort((a,b)=>b[1]-a[1]).slice(0,512)),idleCollapseMinutes:void 0===a.prefs.idleCollapseMinutes?120:a.prefs.idleCollapseMinutes}}}function D(a,b){var c;let d,e,f,g=C(a);for(let a of b){if("remap-paths"===a.kind){g=function(a,b,c=!1){let d=A(a),e=b.filter(({from:a,to:b})=>B(a,d)!==B(b,d));if(0===e.length)return C(a);let f=new Set(b.map(({from:a})=>B(a,d))),g=new Set(e.map(({to:a})=>B(a,d))),h=a=>{if(c)return!0;let b=B(a,d);return!g.has(b)||f.has(b)},i=a.prefs.manual.filter(h),j=(a.explicitManual??[]).filter(h),k={...d};for(let{from:a,to:b}of e)k[a]=b;return C({...a,explicitManual:j,prefs:{...a.prefs,manual:i}},k)}(g,a.pairs,a.targetPlacementAuthoritative);continue}if("reconcile-roots"===a.kind){g=function(a,b,c){let d=A(a),e=new Set(c.map(a=>B(a,d))),f=a.prefs.manual.filter(a=>!e.has(a)),g=(a.explicitManual??[]).filter(a=>!e.has(a)),h=new Set([...f,...a.prefs.hidden,...Object.values(d).map(a=>B(a,d))]);for(let a of b.map(a=>B(a,d)))h.has(a)||(f.push(a),h.add(a));return C({...a,explicitManual:g,prefs:{...a.prefs,manual:f}})}(g,a.roots,a.removeManual);continue}if("restore"===a.kind){g=function(a,b,c){let d={...a.prefs,hidden:a.prefs.hidden.filter(a=>a!==b)},e=(a.explicitManual??[]).filter(a=>a!==b);if("auto"===c)return C({...a,explicitManual:e,prefs:d});let f={...d,manual:d.manual.filter(a=>a!==b),expanded:d.expanded.filter(a=>a!==b)};return C({...a,explicitManual:"manual"===c?[...e,b]:e,prefs:"manual"===c?{...f,manual:[...f.manual,b]}:{...f,expanded:[...f.expanded,b]}})}(g,B(a.path,A(g)),a.placement);continue}if("set-favorite"===a.kind){let b=a.favorite?z([...g.prefs.favorites,a.id]):g.prefs.favorites.filter(b=>b!==a.id);g=C({...g,prefs:{...g.prefs,favorites:b}});continue}if("mark-seen"===a.kind){let b=g.prefs.seenAt??{},c=Math.max(b[a.id]??0,Math.floor(a.at));g=C({...g,prefs:{...g.prefs,seenAt:{...b,[a.id]:c}}});continue}if("set-engine-child-fold"===a.kind){let b=g.prefs.foldedEngineChildIds??[],c=a.folded?z([...b,a.id]):b.filter(b=>b!==a.id),d=B(a.path,A(g));g=C({...g,explicitManual:a.folded?(g.explicitManual??[]).filter(a=>a!==d):g.explicitManual,prefs:{...g.prefs,foldedEngineChildIds:c,manual:a.folded?g.prefs.manual.filter(a=>a!==d):g.prefs.manual,expanded:a.folded?g.prefs.expanded.filter(a=>a!==d):g.prefs.expanded}});continue}if("set-engine-tray-expanded"===a.kind){let b=g.prefs.expandedEngineTrayParentIds??[],c=a.expanded?z([...b,a.parentId]):b.filter(b=>b!==a.parentId);g=C({...g,prefs:{...g.prefs,expandedEngineTrayParentIds:c}});continue}if("set-presentation"===a.kind){g=C({...g,prefs:{...g.prefs,...void 0===a.viewMode?{}:{viewMode:a.viewMode},...void 0===a.taskPanelOpen?{}:{taskPanelOpen:a.taskPanelOpen},...void 0===a.idleCollapseMinutes?{}:{idleCollapseMinutes:a.idleCollapseMinutes}}});continue}let b=B(a.path,A(g));g=C({...g,explicitManual:(g.explicitManual??[]).filter(a=>a!==b),prefs:{...g.prefs,manual:g.prefs.manual.filter(a=>a!==b),expanded:g.prefs.expanded.filter(a=>a!==b),hidden:z([...g.prefs.hidden,b])}})}return d=A(c=g),e=new Set(c.prefs.hidden.map(a=>B(a,d))),f=a.prefs.hidden.filter(a=>e.has(B(a,d))),{...c,prefs:{...c.prefs,hidden:z([...f,...c.prefs.hidden])}}}let E=(0,j.BQ)("board.json"),F={manual:[],hidden:[],expanded:[],favorites:[],foldedEngineChildIds:[],expandedEngineTrayParentIds:[],seenAt:{},idleCollapseMinutes:120,viewMode:null,taskPanelOpen:!1};class G extends Error{constructor(a="board state unavailable"){super(a)}}function H(a){return Array.isArray(a)&&a.every(a=>"string"==typeof a)}function I(a){var b,c,d;if(!a||"object"!=typeof a||Array.isArray(a))return!1;let e=a.prefs;return 1===a.schemaVersion&&Number.isInteger(a.revision)&&a.revision>=0&&"string"==typeof a.updatedAt&&!!e&&H(e.manual)&&H(e.hidden)&&H(e.expanded)&&(void 0===e.favorites||H(e.favorites))&&(void 0===e.foldedEngineChildIds||H(e.foldedEngineChildIds))&&(void 0===e.expandedEngineTrayParentIds||H(e.expandedEngineTrayParentIds))&&(void 0===e.seenAt||!(!(b=e.seenAt)||"object"!=typeof b||Array.isArray(b))&&Object.values(b).every(a=>"number"==typeof a&&Number.isFinite(a)&&a>=0))&&(void 0===e.idleCollapseMinutes||null===e.idleCollapseMinutes||Number.isInteger(e.idleCollapseMinutes)&&e.idleCollapseMinutes>0&&e.idleCollapseMinutes<=43200)&&(void 0===a.explicitManual||H(a.explicitManual))&&(void 0===a.pathAliases||!(!(c=a.pathAliases)||"object"!=typeof c||Array.isArray(c))&&Object.values(c).every(a=>"string"==typeof a))&&(void 0===a.keyRevisions||!(!(d=a.keyRevisions)||"object"!=typeof d||Array.isArray(d))&&Object.values(d).every(a=>Number.isInteger(a)&&a>=0))&&(void 0===a.keyRevisionFloor||Number.isInteger(a.keyRevisionFloor)&&a.keyRevisionFloor>=0)&&(null===e.viewMode||"scheme"===e.viewMode||"list"===e.viewMode)&&"boolean"==typeof e.taskPanelOpen}function J(){return{schemaVersion:1,revision:0,updatedAt:new Date(0).toISOString(),pathAliases:{},explicitManual:[],keyRevisions:{},keyRevisionFloor:0,prefs:{...F,manual:[],hidden:[],expanded:[]}}}function K(a,b,c,d=[]){return{...b,schemaVersion:1,revision:c,updatedAt:new Date().toISOString(),pathAliases:b.pathAliases??{},...function(a,b,c,d=[]){let e=b.pathAliases??{},f={};for(let b of[a,...d])for(let[a,c]of Object.entries(b.keyRevisions??{})){let b=v(a,e);f[b]=Math.max(f[b]??0,c)}for(let d of function(a,b){let c=new Set,d=b.pathAliases??{},e=x(a,d),f=x(b,d);for(let a of new Set([...e.keys(),...f.keys()]))(e.get(a)??"absent")!==(f.get(a)??"absent")&&c.add(q(a));for(let d of y(a.prefs.favorites,b.prefs.favorites))c.add(r(d));for(let d of y(a.prefs.foldedEngineChildIds,b.prefs.foldedEngineChildIds))c.add(s(d));for(let d of y(a.prefs.expandedEngineTrayParentIds,b.prefs.expandedEngineTrayParentIds))c.add(t(d));return a.prefs.viewMode!==b.prefs.viewMode&&c.add(m),a.prefs.taskPanelOpen!==b.prefs.taskPanelOpen&&c.add(n),(void 0===a.prefs.idleCollapseMinutes?120:a.prefs.idleCollapseMinutes)!==(void 0===b.prefs.idleCollapseMinutes?120:b.prefs.idleCollapseMinutes)&&c.add(o),c}(a,b))f[d]=c;let g=function(a){let b=a.pathAliases??{},c=new Set([m,n,o]);for(let d of x(a,b).keys())c.add(q(d));for(let b of a.prefs.favorites??[])c.add(r(b));for(let b of a.prefs.foldedEngineChildIds??[])c.add(s(b));for(let b of a.prefs.expandedEngineTrayParentIds??[])c.add(t(b));return c}(b),h={},i=[];for(let[a,b]of Object.entries(f))g.has(a)?h[a]=b:i.push([a,b]);i.sort((a,b)=>b[1]-a[1]||a[0].localeCompare(b[0]));let j=Math.max(a.keyRevisionFloor??0,...d.map(a=>a.keyRevisionFloor??0));for(let[a,b]of i.slice(0,512))h[a]=b;for(let[,a]of i.slice(512))j=Math.max(j,a);for(let[a,b]of Object.entries(h))!g.has(a)&&b<=j&&delete h[a];return{keyRevisions:h,keyRevisionFloor:j}}(a,b,c,d)}}function L(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if(!b||"object"!=typeof b.projects||null===b.projects||Array.isArray(b.projects))throw new G("invalid board state");if(!Object.values(b.projects).every(I))throw new G("invalid board project state");return{projects:Object.fromEntries(Object.entries(b.projects).map(([a,b])=>[a,{...b,pathAliases:b.pathAliases??{},explicitManual:b.explicitManual??b.prefs.manual,keyRevisions:function(a,b){let c={};for(let[d,e]of Object.entries(a)){let a=v(d,b);c[a]=Math.max(c[a]??0,e)}return c}(b.keyRevisions??{},b.pathAliases??{}),keyRevisionFloor:b.keyRevisionFloor??0,prefs:{...b.prefs,favorites:b.prefs.favorites??[],foldedEngineChildIds:b.prefs.foldedEngineChildIds??[],expandedEngineTrayParentIds:b.prefs.expandedEngineTrayParentIds??[],seenAt:b.prefs.seenAt??{},idleCollapseMinutes:void 0===b.prefs.idleCollapseMinutes?120:b.prefs.idleCollapseMinutes}}]))}}catch(a){if("ENOENT"===a.code)return{projects:{}};if(a instanceof G)throw a;throw new G}}function M(a,b){g().mkdirSync(i().dirname(b),{recursive:!0});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),d=null;try{d=g().openSync(c,"wx",384),g().writeFileSync(d,JSON.stringify(a,null,2)+"\n","utf8"),g().fsyncSync(d),g().closeSync(d),d=null,g().renameSync(c,b);let e=g().openSync(i().dirname(b),"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==d&&g().closeSync(d),g().rmSync(c,{force:!0})}}function N(a){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,a)}function O(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){let c,d="string"==typeof b.startIdentity?b.startIdentity:null;return!k.B.pidAlive(b.pid)||(null!==d?(c=k.B.processIdentity(b.pid),null!==c&&c!==d):Date.now()-g().statSync(a).mtimeMs>3e4)}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function P(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function Q(a,b){let c=`${a}.write-lock`,d=`${a}.write-locks`;g().mkdirSync(d,{recursive:!0,mode:448});let f={pid:process.pid,startIdentity:k.B.processIdentity(process.pid),token:e().randomUUID()},h=i().join(d,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`);g().writeFileSync(h,JSON.stringify(f),{encoding:"utf8",flag:"wx",mode:384});try{for(let a=0;a<1e3;a+=1){let a,e=[];for(let a of g().readdirSync(d).filter(a=>a.endsWith(".json")).sort()){let b=i().join(d,a);if(O(b)){g().rmSync(b,{force:!0});continue}g().existsSync(b)&&e.push(b)}if(e[0]!==h){N(5);continue}try{a=g().openSync(c,"wx",384)}catch(a){if("EEXIST"!==a.code)throw a;O(c)&&g().rmSync(c,{force:!0}),N(5);continue}try{return g().writeFileSync(a,JSON.stringify(f),"utf8"),g().fsyncSync(a),b()}finally{g().closeSync(a),P(c,f.token)}}throw new G("board state is busy")}finally{P(h,f.token)}}function R(a,b=E){return L(b).projects[(0,l.G$)(a)]??J()}function S(a,b){return JSON.stringify({prefs:a.prefs,pathAliases:a.pathAliases??{},explicitManual:a.explicitManual??[]})===JSON.stringify({prefs:b.prefs,pathAliases:b.pathAliases??{},explicitManual:b.explicitManual??[]})}function T(a,b,c={}){var d,e;let f=c.filePath??null??E;return d=(0,l.G$)(a),e=a=>{if(0===b.length||b.every(({from:b,to:c})=>a.pathAliases?.[b]===c))return a;let d=c.provisionalManual?.filter(b=>a.pathAliases?.[b]===void 0&&a.prefs.manual.includes(b))??[],e=[];return d.length&&e.push({kind:"reconcile-roots",roots:[],removeManual:d}),e.push({kind:"remap-paths",pairs:b,targetPlacementAuthoritative:c.targetPlacementAuthoritative}),D(a,e)},Q(f,()=>{let a=L(f),b=a.projects[d]??J(),c=e(b);if(S(b,c))return b;let g=K(b,c,b.revision+1);return a.projects[d]=g,M(a,f),g})}function U(a,b=E){0!==a.length&&Q(b,()=>{let c=L(b),d=!1;for(let b of a){if(b.fromProject===b.toProject)continue;let a=c.projects[b.fromProject];if(!a)continue;let e=D(a,[]),f=D(c.projects[b.toProject]??J(),[]);for(let a of[...new Set(b.paths)]){let b=Object.entries(e.pathAliases??{}).filter(([,b])=>b===a);if(b.length>0&&(f=D({...f,pathAliases:{...f.pathAliases??{},...Object.fromEntries(b)}},[])),!(e.prefs.hidden.includes(a)||e.prefs.expanded.includes(a)||e.prefs.manual.includes(a))&&0===b.length)continue;let c=e.prefs.hidden.includes(a)?"hidden":e.prefs.expanded.includes(a)?"expanded":e.prefs.manual.includes(a)?"manual":"auto",d=f.prefs.hidden.includes(a)?"hidden":f.prefs.expanded.includes(a)?"expanded":f.prefs.manual.includes(a)?"manual":"auto",g="hidden"===c||"hidden"===d?"hidden":"auto"!==d?d:c,h=(e.explicitManual??[]).includes(a)||(f.explicitManual??[]).includes(a);e={...e,explicitManual:(e.explicitManual??[]).filter(b=>b!==a),pathAliases:Object.fromEntries(Object.entries(e.pathAliases??{}).filter(([,b])=>b!==a)),prefs:{...e.prefs,manual:e.prefs.manual.filter(b=>b!==a),hidden:e.prefs.hidden.filter(b=>b!==a),expanded:e.prefs.expanded.filter(b=>b!==a)}};let i={...f.prefs,manual:f.prefs.manual.filter(b=>b!==a),hidden:f.prefs.hidden.filter(b=>b!==a),expanded:f.prefs.expanded.filter(b=>b!==a)};f={...f,explicitManual:"manual"===g&&h?[...(f.explicitManual??[]).filter(b=>b!==a),a]:(f.explicitManual??[]).filter(b=>b!==a),prefs:"hidden"===g?{...i,hidden:[...i.hidden,a]}:"expanded"===g?{...i,expanded:[...i.expanded,a]}:"manual"===g?{...i,manual:[...i.manual,a]}:i}}S(a,e)||(c.projects[b.fromProject]=K(a,e,a.revision+1),d=!0);let g=c.projects[b.toProject]??J();S(g,f)||(c.projects[b.toProject]=K(g,f,g.revision+1),d=!0)}d&&M(c,b)})}function V(a,b=(0,j.BQ)("board.json")){return 0===a.size||Q(b,()=>{let c=L(b),d=!1,e=!0,f=new Map;for(let[b,c]of a)b!==c&&f.set(c,[...f.get(c)??[],b]);for(let[a,b]of f){let f=b.flatMap(a=>c.projects[a]?[c.projects[a]]:[]);if(0===f.length)continue;let g=c.projects[a];if(!g&&1===f.length){for(let d of(c.projects[a]=f[0],b))delete c.projects[d];d=!0;continue}try{let e=g?[g,...f]:f,h=function(a){let b=a.map((a,b)=>({state:a,index:b,timestamp:Date.parse(a.updatedAt)})).sort((a,b)=>(Number.isFinite(a.timestamp)?a.timestamp:0)-(Number.isFinite(b.timestamp)?b.timestamp:0)||a.index-b.index).map(({state:a})=>a),c=b.reduce((a,b)=>({...a,...b.pathAliases??{}}),{}),d=new Map,e=null,f=!1,g=c;for(let a of b){let b=D({...a,pathAliases:c},[]);for(let a of(g=b.pathAliases??{},["manual","hidden","expanded"]))for(let c of b.prefs[a])d.delete(c),d.set(c,a);e=b.prefs.viewMode,f=b.prefs.taskPanelOpen}let h={manual:[],hidden:[],expanded:[],favorites:[...new Set(b.flatMap(a=>a.prefs.favorites??[]))],foldedEngineChildIds:[...new Set(b.flatMap(a=>a.prefs.foldedEngineChildIds??[]))],expandedEngineTrayParentIds:[...new Set(b.flatMap(a=>a.prefs.expandedEngineTrayParentIds??[]))],seenAt:function(a){let b={};for(let c of a)for(let[a,d]of Object.entries(c??{}))b[a]=Math.max(b[a]??0,d);return b}(b.map(a=>a.prefs.seenAt)),viewMode:e,taskPanelOpen:f};for(let[a,b]of d)h[b].push(a);let i=new Set(h.manual),j=[...new Set(b.flatMap(a=>a.explicitManual??[]))].map(a=>g[a]??a).filter(a=>i.has(a));return{...b.at(-1),pathAliases:g,explicitManual:j,prefs:h}}(e),i=K(g??J(),h,Math.max(...e.map(a=>a.revision))+1,f);for(let d of(c.projects[a]=g&&S(g,i)&&JSON.stringify({keys:g.keyRevisions??{},floor:g.keyRevisionFloor??0})===JSON.stringify({keys:i.keyRevisions??{},floor:i.keyRevisionFloor??0})?g:i,b))delete c.projects[d];d=!0}catch{e=!1;continue}}return d&&M(c,b),e})}},28388:(a,b,c)=>{c.d(b,{j:()=>m,v:()=>l});var d=c(45899),e=c(38849);function f(a){let b=a.timestamp;return"string"==typeof b?b:null}let g=new Set(["authentication_failed","rate_limit"]);function h(a){return!0===a.isApiErrorMessage&&"string"==typeof a.error&&g.has(a.error)}function i(a){let b=(0,e.xK)(a.message)?.content;return"string"==typeof b?b:(0,e.Em)(b).map(a=>(0,e.r$)(a.text)??"").join("\n")}let j=/^no response requested\.?$/i,k=/^\s*\[Request interrupted by user(?: for tool use)?\]\s*$/;function l(a){let b=!1;for(let c=a.length-1;c>=0;c-=1){let d=a[c];if("result"===d.type)return b?{terminalAt:f(d)}:null;if("assistant"===d.type){if(h(d))return b?{terminalAt:f(d)}:null;if(!(!0!==d.isApiErrorMessage&&"<synthetic>"===(0,e.r$)(((0,e.xK)(d.message)??{}).model)&&j.test(i(d).trim())))return null;b=!0;continue}if("user"===d.type){if(!b&&!(!0===d.interruptedByShutdown||"interruptedMessageId"in d||k.test(i(d))))return null;b=!0}}return null}function m(a,b,c=!1){if("openclaw"===b){for(let b=a.length-1;b>=0;b-=1){let c=a[b],g=(0,d.j5)(c);if(g){if("assistant"===g.role){if(!(0,d.Re)(c))continue;let a=(0,e.r$)(g.stopReason);if("stop"===a||"error"===a||"aborted"===a)return{state:"terminal",source:"lifecycle",terminalAt:f(c)};return{state:"busy",source:"assistant",terminalAt:null}}if("user"===g.role)return{state:"busy",source:"lifecycle",terminalAt:null}}}return{state:"unknown",source:"empty",terminalAt:null}}if("codex"===b){let b=!1,c=null,d=!1,g=new Set,h=0;for(let i of a){let a=(0,e.xK)(i.payload)??{},j=(0,e.r$)(a.type);if(!j)continue;if("task_started"===j||"turn_started"===j||"user_message"===j){b=!0,c=null,d=!1;continue}if("task_complete"===j||"turn_complete"===j||"turn_completed"===j||"turn_aborted"===j){0===g.size&&0===h?(b=!1,c=f(i),d=!0):(b=!0,c=null,d=!1);continue}if("agent_message"===j||"token_count"===j||"reasoning"===j)continue;let k=j.includes("output")||j.endsWith("_result");if(!(j.includes("tool")||j.includes("function")||j.includes("command")))continue;let l=(0,e.r$)(a.call_id)??(0,e.r$)(a.callId)??(0,e.r$)(a.id);k?l?g.delete(l):h>0&&(h-=1):l?g.add(l):h+=1,b=!0,c=null,d=!1}return d&&!b&&0===g.size&&0===h?{state:"terminal",source:"lifecycle",terminalAt:c}:b||g.size>0||h>0?{state:"busy",source:g.size>0||h>0?"tool":"lifecycle",terminalAt:null}:{state:"unknown",source:"empty",terminalAt:null}}if(c){let b={state:"unknown",source:"empty",terminalAt:null};for(let c of a)"result"===c.type?b={state:"terminal",source:"lifecycle",terminalAt:f(c)}:"user"===c.type?b={state:"busy",source:"lifecycle",terminalAt:null}:"assistant"===c.type&&(b=h(c)?{state:"terminal",source:"lifecycle",terminalAt:f(c)}:{state:"busy",source:"assistant",terminalAt:null});if("busy"!==b.state)return b;let c=l(a);return c?{state:"terminal",source:"lifecycle",terminalAt:c.terminalAt}:b}for(let b of[...a].reverse()){if("assistant"===b.type){if(h(b))return{state:"terminal",source:"lifecycle",terminalAt:f(b)};let a=(0,e.r$)(((0,e.xK)(b.message)??{}).stop_reason);if("end_turn"===a||"stop_sequence"===a)return{state:"terminal",source:"lifecycle",terminalAt:f(b)};return{state:"busy",source:"assistant",terminalAt:null}}if("user"===b.type)return{state:"busy",source:"lifecycle",terminalAt:null}}return{state:"unknown",source:"empty",terminalAt:null}}},29966:(a,b,c)=>{function d(a){return`${a} is unavailable; start agent-log-viewer through its CLI and check the CLI log for the host startup failure`}function e(a){if(void 0===a)return!1;switch(a.trim().replace(/^(["'])([\s\S]*)\1$/,"$2").trim().toLowerCase()){case"0":case"false":case"off":case"no":return!0;default:return!1}}function f(a=process.env){return!e(a.LLV_STRUCTURED_HOSTS)}function g(a=process.env){return!function(a=process.env){return e(a.LLV_RUNTIME_EVENTS)}(a)&&!!i(a)}function h(a=process.env){return!e(a.NEXT_PUBLIC_RUNTIME_UI)}function i(a=process.env){return a.LLV_RUNTIME_HOST_SOCKET?.trim()||null}c.d(b,{Ee:()=>h,S0:()=>i,Zn:()=>g,cM:()=>f,lN:()=>d})},31612:(a,b,c)=>{c.d(b,{mZ:()=>q,EM:()=>H,M7:()=>J,Km:()=>I}),c(77598);var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(50920),i=c(65465),j=c(61899),k=c(2208),l=c(73385),m=c(79866),n=c(4863);let o=new Set([2,3,4,5]),p=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"];class q extends Error{constructor(a,b){super(a,b),this.name="PipelineStoreError"}}function r(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&!("claude"!==a.engine&&"codex"!==a.engine||null!==a.model&&"string"!=typeof a.model||a.model&&"claude"===a.engine&&!(0,k.OV)(a.model)||a.model&&"codex"===a.engine&&(a.model.length>128||!a.model.startsWith("gpt-")||/[\u0000-\u001f\u007f]/.test(a.model)))&&(null===a.effort||"string"==typeof a.effort&&!!(0,j.z9)(a.engine,a.effort))&&(null===a.roleId||p.includes(a.roleId))&&("read-only"===a.access||"read-write"===a.access)&&(null===a.promptScaffold||"string"==typeof a.promptScaffold&&a.promptScaffold.length<=l.le)}function s(a){return null===a||"string"==typeof a}function t(a){return null==a||!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.stageId&&Number.isInteger(a.attempt)&&a.attempt>=1&&("pass"===a.edge||"fail"===a.edge)}function u(a,b){var c,d;return!(!a||"object"!=typeof a||Array.isArray(a))&&a.n===b+1&&(void 0===a.historical||"boolean"==typeof a.historical)&&["pending","spawning","running","reviewing","committing","passed","failed","needs_decision","skipped"].includes(String(a.state))&&r(a.effectiveRole)&&s(a.launchId)&&s(a.conversationId)&&s(a.sessionId)&&s(a.agentPath)&&s(a.paneId)&&s(a.flowId)&&(void 0===a.expectedReviewHeadSha||s(a.expectedReviewHeadSha))&&(void 0===a.reviewHeadSha||s(a.reviewHeadSha))&&function(a){if(void 0===a)return!0;if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.hostClaim,c=null==b||"object"==typeof b&&!Array.isArray(b)&&/^(?:claude|codex):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(String(b.sessionKey))&&/^(?:default|unknown|managed:[0-9a-f]{12})$/.test(String(b.accountRef)),d=["waiting_ready","spawn_pending","spawning","reviewing","relay_pending","relaying","fixing","approved","done_comment","needs_decision","paused","closed"];return"string"==typeof a.generation&&(void 0===a.sourceRevision||Number.isInteger(a.sourceRevision)&&a.sourceRevision>=0)&&Number.isInteger(a.roundCount)&&a.roundCount>=0&&s(a.implementerHeadSha)&&s(a.reviewerHeadSha)&&(null===a.verdict||["APPROVE","REQUEST_CHANGES","COMMENT"].includes(String(a.verdict)))&&d.includes(String(a.relayState))&&(null===a.terminalState||d.includes(String(a.terminalState)))&&c&&"string"==typeof a.synchronizedAt&&s(a.sourceUpdatedAt)&&(null===a.lagMs||"number"==typeof a.lagMs&&Number.isFinite(a.lagMs)&&a.lagMs>=0)}(a.reviewFlowSync)&&s(a.startedAt)&&s(a.completedAt)&&(void 0===a.input||s(a.input))&&t(a.activatedBy)&&s(a.output)&&(null===(c=a.verdict)||null!==(0,n.eh)(c))&&s(a.error)&&(void 0===(d=a.verdictRecovery)||!(!d||"object"!=typeof d||Array.isArray(d))&&["pending","recovered","exhausted"].includes(String(d.state))&&Number.isInteger(d.checks)&&d.checks>=0&&Number.isInteger(d.maxChecks)&&d.maxChecks>=1&&d.checks<=d.maxChecks&&"string"==typeof d.startedAt&&"string"==typeof d.lastCheckedAt&&s(d.nextCheckAt)&&"string"==typeof d.reason&&d.reason.length>0&&d.reason.length<=1e3&&(null===d.messageTs||"number"==typeof d.messageTs&&Number.isFinite(d.messageTs)&&d.messageTs>=0))}function v(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.stageId&&Array.isArray(a.attempts)&&a.attempts.every(u)}function w(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.stageId&&Number.isInteger(a.attempt)&&s(a.conversationId)&&s(a.agentPath)&&(void 0===a.paneId||s(a.paneId))&&s(a.operationId)&&"string"==typeof a.detail&&"string"==typeof a.at}function x(a){var b;if(!a||"object"!=typeof a||Array.isArray(a))return!1;let c=a.role;if(!("string"==typeof a.id&&("run"===a.kind||"review-loop"===a.kind)&&"string"==typeof a.prompt&&(null===a.next||"string"==typeof a.next)&&(null==(b=a.onFail)||!(!b||"object"!=typeof b||Array.isArray(b))&&"string"==typeof b.to&&Number.isInteger(b.maxRounds)&&b.maxRounds>=1&&b.maxRounds<=9)&&(void 0===c||c&&"object"==typeof c&&!Array.isArray(c)&&p.includes(c.roleId))&&(void 0===a.engine||"claude"===a.engine||"codex"===a.engine)&&(void 0===a.model||null===a.model||"string"==typeof a.model)&&(void 0===a.effort||null===a.effort||"string"==typeof a.effort)&&(void 0===a.access||"read-only"===a.access||"read-write"===a.access)&&r(a.effectiveRole)))return!1;let d=a.effectiveRole,e=void 0===c?null:c.roleId;return d.roleId===e&&("review-loop"!==a.kind||"read-only"===d.access)&&(void 0===a.engine||a.engine===d.engine)&&(void 0===a.model||a.model===d.model)&&(void 0===a.effort||a.effort===d.effort)&&(void 0===a.access||a.access===d.access)&&(null!==e||null===d.promptScaffold)&&(null===e||!!d.promptScaffold?.trim())&&!0}function y(a){var b,c;if(!a||"object"!=typeof a||Array.isArray(a)||!("string"==typeof a.id&&"string"==typeof a.task&&Array.isArray(a.taskIds)&&a.taskIds.every(a=>"string"==typeof a)&&new Set(a.taskIds).size===a.taskIds.length&&(void 0===a.creationIntent||!(!(b=a.creationIntent)||"object"!=typeof b||Array.isArray(b))&&"task-spawn"===b.kind&&"string"==typeof b.taskId&&b.taskId.trim()&&"string"==typeof b.launchId&&b.launchId.trim())&&(void 0===a.spec||"string"==typeof a.spec)&&"string"==typeof a.project&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&"string"==typeof a.baseBranch&&"string"==typeof a.baseRef&&"string"==typeof a.lastPassedCommit&&(void 0===a.publishedCommit||s(a.publishedCommit))&&Array.isArray(a.stages)&&a.stages.every(x)&&Array.isArray(a.runs)&&a.runs.every(v)&&["draft","provisioning","running","needs_decision","paused","completed","closed"].includes(String(a.state))&&(null===a.pausedState||["provisioning","running","needs_decision","completed","closed"].includes(String(a.pausedState)))&&(void 0===a.pausedAt||s(a.pausedAt))&&(void 0===a.resumedAt||s(a.resumedAt))&&s(a.stateDetail)&&s(a.srcPath)&&s(a.srcConversationId)&&"string"==typeof a.createdAt&&s(a.closedAt)&&(void 0===a.hiddenAt||s(a.hiddenAt))&&(void 0===a.unconfirmedHosts||Array.isArray(a.unconfirmedHosts)&&a.unconfirmedHosts.every(w))&&(void 0===a.terminalReap||!(!(c=a.terminalReap)||"object"!=typeof c||Array.isArray(c))&&Number.isInteger(c.rounds)&&c.rounds>=0&&Number.isInteger(c.stopped)&&c.stopped>=0&&"string"==typeof c.lastAt&&s(c.settledAt))&&(void 0===a.restored||"boolean"==typeof a.restored)&&(void 0===a.pos||"object"==typeof a.pos&&null!==a.pos&&Number.isFinite(a.pos.x)&&Number.isFinite(a.pos.y))))return!1;let d=a.stages,e=a.runs,f=+("draft"!==a.state);if(d.length<f||d.length>8||e.length!==d.length)return!1;let h=d.map(a=>a.id);if(new Set(h).size!==h.length||null!==function(a){let b=new Set(a.map(a=>a.id)),c=new Map(a.map(a=>[a.id,a.next]));for(let c of a){if(null!==c.next&&!b.has(c.next))return`stage ${c.id} next must reference an existing stage`;if(c.next===c.id)return`stage ${c.id} pass edge may not target itself`;let a=c.onFail??null;if("review-loop"===c.kind&&a)return`review-loop stage ${c.id} does not support onFail`;if(a&&!b.has(a.to))return`stage ${c.id} onFail must reference an existing stage`;if(a&&(!Number.isInteger(a.maxRounds)||a.maxRounds<1||a.maxRounds>9))return`stage ${c.id} onFail maxRounds must be an integer between 1 and 9`}for(let b of a){let d=b.next;for(let e=0;null!==d;e+=1){if(d===b.id||e>a.length)return`pipeline pass edges form a cycle through stage ${b.id}`;d=c.get(d)??null}}for(let b of a)if("review-loop"===b.kind&&!a.some(d=>{if("run"!==d.kind)return!1;let e=d.next;for(let d=0;null!==e&&d<=a.length;d+=1){if(e===b.id)return!0;e=c.get(e)??null}return!1})){let c=a.filter(a=>"run"===a.kind);if(0===c.length)return`review-loop stage ${b.id} is unreachable: the pipeline has no run stage, and a review-loop reviews the session of a run stage that reaches it`;let d=c.findLast(a=>null===a.next)??c.at(-1);return`review-loop stage ${b.id} is unreachable: no run stage's next chain reaches it — set next: "${b.id}" on run stage ${d.id}`}return null}(d)||e.some((a,b)=>a.stageId!==d[b].id))return!1;let i=g().join(g().dirname(a.repoDir),`${g().basename(a.repoDir)}-pipeline-${a.id}`);if(a.worktreeDir!==i||a.branch!==`pipeline/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`)return!1;let j=a.cursor;if(null!==j&&(!j||"object"!=typeof j||!h.includes(j.stageId)||!["pending","spawning","running","reviewing","committing"].includes(j.state)||!(void 0===j.input||s(j.input))||!t(j.activatedBy)||null!=j.activatedBy&&!h.includes(j.activatedBy.stageId))||("completed"===a.state||"closed"===a.state)&&null!==j)return!1;if("draft"===a.state){if(0===d.length){if(null!==j)return!1}else if(j?.stageId!==d[0].id||"pending"!==j.state)return!1;if(e.some(a=>a.attempts.length>0))return!1;let b=!a.baseBranch&&!a.baseRef&&!a.lastPassedCommit,c=!!(a.baseBranch&&/^[0-9a-f]{40}$/i.test(a.baseRef)&&a.lastPassedCommit===a.baseRef);if(!b&&!c||a.closedAt)return!1}return!0}function z(a,b){let c=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch(b){if("ENOENT"===b.code)return null;throw new q(`could not read pipeline registry: ${a}`,{cause:b})}}(a);if(null===c)return[];if(!c||"object"!=typeof c||Array.isArray(c)){if(b)return[];throw new q("pipeline registry must be an object")}if("number"!=typeof c.schemaVersion||!o.has(c.schemaVersion)){if(b)return[];throw new q(`unsupported pipeline registry schema: ${String(c.schemaVersion)}`)}if(!Array.isArray(c.pipelines)){if(b)return[];throw new q("pipeline registry contains malformed records")}let d=c.pipelines.map(a=>{var b,d,e;let f;return f=2===(b=c.schemaVersion)?function(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let b=Array.isArray(a.stages)?a.stages.map(a=>a&&"object"==typeof a?{onFail:null,...a}:a):a.stages,c=Array.isArray(a.runs)?a.runs.map(a=>a&&"object"==typeof a&&Array.isArray(a.attempts)?{...a,attempts:a.attempts.map(a=>a&&"object"==typeof a?{input:null,activatedBy:null,...a}:a)}:a):a.runs,d=a.cursor&&"object"==typeof a.cursor?{input:null,activatedBy:null,...a.cursor}:a.cursor,e={...a,stages:b,runs:c,cursor:d};if("draft"===e.state&&Array.isArray(e.stages)&&0===e.stages.length){let a={id:"implement",kind:"run",prompt:"{{task}}",next:null,onFail:null,effectiveRole:{roleId:null,engine:"claude",model:null,effort:null,access:"read-write",promptScaffold:null}};e.stages=[a],e.runs=[{stageId:a.id,attempts:[]}],e.cursor={stageId:a.id,state:"pending",input:null,activatedBy:null}}return e}(a):a,b<4&&(f=!(d=f)||"object"!=typeof d||Array.isArray(d)?d:{taskIds:[],...d}),b<5&&(f=!(e=f)||"object"!=typeof e||Array.isArray(e)?e:Array.isArray(e.stages)?{...e,stages:e.stages.map(a=>!a||"object"!=typeof a||Array.isArray(a)?a:"review-loop"===a.kind?{...a,onFail:null}:a)}:e),f});if(!b&&!d.every(y))throw new q("pipeline registry contains malformed records");let f=b?d.filter(y):d;return b&&f.length!==d.length&&console.error(`[pipelines] skipped ${d.length-f.length} malformed archived pipeline record(s)`),f.map(A)}function A(a){return{...a,project:(0,i.G$)(a.project),taskIds:[...a.taskIds],creationIntent:a.creationIntent?{...a.creationIntent}:void 0,spec:"string"==typeof a.spec?a.spec:void 0,baseBranch:a.baseBranch??"",baseRef:a.baseRef??"",lastPassedCommit:a.lastPassedCommit??"",publishedCommit:a.publishedCommit??null,pausedState:a.pausedState??null,stateDetail:a.stateDetail??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,closedAt:a.closedAt??null,hiddenAt:a.hiddenAt??null,unconfirmedHosts:a.unconfirmedHosts?.length?a.unconfirmedHosts.map(a=>({...a})):void 0,terminalReap:a.terminalReap?{...a.terminalReap}:void 0,restored:void 0,stages:a.stages.map(a=>({...a,onFail:a.onFail??null})),cursor:a.cursor?{...a.cursor,input:a.cursor.input??null,activatedBy:a.cursor.activatedBy??null}:null,runs:a.runs.map(a=>({...a,attempts:Array.isArray(a.attempts)?a.attempts.map(a=>({...a,launchId:a.launchId??null,conversationId:a.conversationId??null,sessionId:a.sessionId??null,agentPath:a.agentPath??null,paneId:a.paneId??null,flowId:a.flowId??null,expectedReviewHeadSha:a.expectedReviewHeadSha??null,reviewHeadSha:a.reviewHeadSha??null,reviewFlowSync:a.reviewFlowSync?{...a.reviewFlowSync}:void 0,startedAt:a.startedAt??null,completedAt:a.completedAt??null,input:a.input??null,activatedBy:a.activatedBy??null,output:a.output??null,verdict:a.verdict??null,error:a.error??null,verdictRecovery:a.verdictRecovery?{...a.verdictRecovery}:void 0})):[]}))}}let B=null,C=new Map;function D(a){if(!y(a))throw new q("pipeline registry contains malformed records");return A(a)}function E(a){return"closed"===a.state?!!a.unconfirmedHosts?.length:"completed"!==a.state||!!a.unconfirmedHosts?.length||!a.terminalReap?.settledAt}function F(){return function(){let a=(0,h.BQ)("state.sqlite"),b=C.get(a);if(b)return b;(0,m.t0)(a,[{collection:"pipelines",schemaVersion:5,migrationId:"pipelines-json-v1",loadRecords:()=>z((0,h.BQ)("pipelines.json"),!1),key:a=>a.id,controllerActive:E},{collection:"pipelines_archive",schemaVersion:5,migrationId:"pipelines-archive-json-v1",loadRecords:()=>z((0,h.BQ)("pipelines-archive.json"),!0),key:a=>a.id,controllerActive:()=>!1}]);let c={schemaVersion:5,busyMessage:"pipeline state is busy",key:a=>a.id,decode:D,clone:A,decodeError:a=>a instanceof q?a:new q("pipeline registry contains malformed records",{cause:a}),validate:a=>{if(!y(a))throw new q("refusing to persist a malformed pipeline record")}},d={active:new m.UY(a,{...c,collection:"pipelines",controllerActive:E,strictDecode:!0}),archive:new m.UY(a,{...c,collection:"pipelines_archive",onDecodeError:a=>console.error("[pipelines] skipped malformed archived SQLite row",a)})};return C.set(a,d),d}().active}function G(){return F().signature()}function H(){return(function(){let a=G();if(B?.signature===a)return B.pipelines;let b=[...F().loadReadonly()],c=G();return a===c&&(B={signature:c,pipelines:b}),b})().map(A)}async function I(a){return F().mutate(a)}async function J(a){return F().mutate(a,void 0,!0)}},31973:(a,b,c)=>{c.d(b,{ce:()=>g,pp:()=>h,sz:()=>i});var d=c(76760),e=c.n(d);let f=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;function g(a,b){let c,d=(c=b.match(f)?.[0])&&c.length===b.length?c.toLowerCase():null;return d?{engine:a,sessionId:d}:null}function h(a){return`${a.engine}:${a.sessionId}`}function i(a,b){let c=e().basename(b).match(f);return c?g(a,c[0]):null}},33149:(a,b,c)=>{c.d(b,{$s:()=>i,pq:()=>k});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=(0,c(50920).BQ)("events.ndjson");function i(a,b){try{e().mkdirSync(g().dirname(h),{recursive:!0});try{e().statSync(h).size>4194304&&e().renameSync(h,h+".1")}catch{}let c={ts:new Date().toISOString(),action:a,...b};e().appendFileSync(h,JSON.stringify(c)+"\n","utf8")}catch{}}function j(a,b=128){return a?a.replace(/[^a-zA-Z0-9:_-]/g,"_").slice(0,b):null}function k(a){i("quota",{result:"live"===a.provenance?"ok":"error",meta:{engine:a.engine,accountId:j(a.accountId)??"unknown",accountKind:a.accountKind,envelope:a.envelope??"unknown",probePhase:a.probePhase,provenance:a.provenance,reasonCode:j(a.reasonCode)}})}},33353:(a,b,c)=>{c.d(b,{AW:()=>f,BL:()=>g,EY:()=>h,h4:()=>e});var d=c(88417);function e(a){let b=(0,d.rM)(a.content?.text??a.text??"",a.content?.images??a.images??[]);if(a.contentDigest&&a.contentDigest!==b.contentDigest)throw Error("queue entry content digest mismatch");return{id:a.id,content:b.content,contentDigest:b.contentDigest,...void 0!==a.expectedTurnId?{expectedTurnId:a.expectedTurnId}:{},...a.runtime?{runtime:a.runtime}:{},...a.selectedContext?{selectedContext:a.selectedContext}:{},...a.origin?{origin:a.origin}:{}}}class f extends Error{constructor(a,b){super(`runtime replay begins at sequence ${b}; requested after ${a}`),this.requestedAfterSeq=a,this.firstAvailableSeq=b,this.name="RuntimeReplayGapError"}}class g extends Error{constructor(a,b){super(a),this.phase=b,this.name="StructuredCompactError"}}class h extends Error{constructor(a,b,c){super(a,c),this.host=b,this.name="StructuredHostAdoptionCleanupError"}}},34219:(a,b,c)=>{function d(a){return["You are now in an implement-review loop controlled by the local log viewer.","",...a?["Pinned flow specification and acceptance criteria:",a,""]:["Before your first REVIEW_READY, write spec.md with the task statement and an acceptance-criteria list using entries such as `AC1: …`.",""],"Work normally in this long-lived implementer session. When the work is ready for a fresh independent review, end your final assistant message with a line that starts exactly with:","REVIEW_READY: <one-line note>","Do not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the work is actually ready for review.","","Every review round will use a fresh reviewer who sees the full diff from the captured base ref, with no history from earlier rounds. If the reviewer sends findings back, respond to each finding before the next marker using:","FIXED","or","REJECTED — <reason>","","Give concrete arguments for rejections because the next reviewer will be fresh and blind to previous discussion."].join("\n")}function e(a,b){return["You are the reviewer in an implement-review loop.\n",`Working directory: ${a.cwd}`,`Review scope: git diff ${a.baseRef}...HEAD plus uncommitted changes in the same working tree.`,`Exact review HEAD: ${b.reviewHeadSha??"unavailable"}`,"\nPinned flow specification and acceptance criteria:",a.spec?.trim()||"No pinned specification was supplied for this flow.",b.readyNote?`Ready note: ${b.readyNote}`:"Ready note: none provided.","\nRead-only requirement: run tests, builds, linters, searches, and other investigation commands as needed. Do not edit files, write notebooks, commit, stage, or mutate the working tree.\n\nOutput exactly this format:\nVERDICT: APPROVE | REQUEST_CHANGES | COMMENT\n\nThen write findings in Markdown. For each finding include severity, file, line, title, and explanation. Use REQUEST_CHANGES for required fixes, COMMENT for non-blocking notes, and APPROVE only when no blocking issues remain."].join("\n")}function f(a,b){return["Review round findings are below. Address every finding before the next review marker.\n",b.trim(),"\nFor each finding, respond with FIXED or REJECTED — <reason>. When the work is reviewable again, end your final assistant message with:\nREVIEW_READY: <one-line note>"].join("\n")}c.d(b,{SB:()=>d,i0:()=>f,qu:()=>e})},36385:(a,b,c)=>{c.d(b,{l:()=>e}),c(2208);var d=c(29966);function e(a=process.env){let b=a.LLV_SPAWN_TRANSPORT?.trim();if(!b)return(0,d.cM)(a)&&(0,d.Zn)(a)&&(0,d.Ee)(a)?"structured":"tmux";if("tmux"!==b&&"structured"!==b)throw Error("LLV_SPAWN_TRANSPORT must be tmux or structured");return b}c(88417)},36454:(a,b,c)=>{c.d(b,{io:()=>r,nn:()=>s,Bq:()=>u,Ki:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(10456);c(53133);var i=c(62862),j=c(40006),k=c(50920),l=c(92128),m=c(40216),n=c(44123);let o="app-server-initialize-timeout",p=globalThis;function q(){return{version:2,engines:{claude:{},codex:{}}}}function r(a,b){let c=((!p.__llvLimitsCache&&(p.__llvLimitsCache=function(){try{let a=JSON.parse(e().readFileSync((0,k.BQ)("limits-cache.json"),"utf8"));if(2===a.version&&a.engines&&"object"==typeof a.engines){let b=q();for(let c of["claude","codex"]){let d=a.engines[c];if(d&&"object"==typeof d)for(let[a,e]of Object.entries(d)){let d=function(a){if(!a||"object"!=typeof a||"number"!=typeof a.at||void 0===a.data||!a.provenance)return null;let b=a.provenance;return"live"!==b.source&&"transcript"!==b.source&&"cache"!==b.source&&"unavailable"!==b.source||"string"!=typeof b.reason&&null!==b.reason||"string"!=typeof b.staleSince&&null!==b.staleSince||void 0!==b.retryAt&&"string"!=typeof b.retryAt&&null!==b.retryAt||void 0!==a.baseData&&null!==a.baseData&&"object"!=typeof a.baseData||void 0!==a.retryAt&&null!==a.retryAt&&"number"!=typeof a.retryAt||void 0!==a.consecutive429s&&(!Number.isInteger(a.consecutive429s)||a.consecutive429s<0)||void 0!==a.consecutiveInitializeTimeouts&&(!Number.isInteger(a.consecutiveInitializeTimeouts)||a.consecutiveInitializeTimeouts<0)?null:a}(e);d&&(b.engines[c][a]="codex"===c?{...d,data:(0,l.Zc)(d.data),...void 0===d.baseData?{}:{baseData:(0,l.Zc)(d.baseData)}}:d)}}return b}if("number"==typeof a.at&&"string"==typeof a.accountId&&a.data?.codex){let b=!function(a){if(!a||"object"!=typeof a)return!1;let b=a=>!!a&&("live"===a.source||"transcript"===a.source||"cache"===a.source||"unavailable"===a.source)&&("string"==typeof a.reason||null===a.reason)&&("string"==typeof a.staleSince||null===a.staleSince)&&(void 0===a.retryAt||"string"==typeof a.retryAt||null===a.retryAt);return b(a.claude)&&b(a.codex)}(a.data.provenance)?{source:"cache",reason:"legacy cache provenance unavailable",staleSince:a.data.staleSince??null}:a.data.provenance.codex;return{version:2,engines:{claude:{},codex:{[a.accountId]:{at:a.at,data:(0,l.Zc)(a.data.codex),provenance:b}}}}}}catch{}return q()}()),p.__llvLimitsCache).engines[a][b]??null)?.provenance;return c?{...c}:null}async function s(a,b=Date.now,c=8e3){let d="",f=null;try{let b=JSON.parse(e().readFileSync(a,"utf8"));"string"==typeof b.claudeAiOauth?.accessToken&&(d=b.claudeAiOauth.accessToken),"string"==typeof b.claudeAiOauth?.subscriptionType&&(f=b.claudeAiOauth.subscriptionType)}catch(a){return{data:null,reason:`credentials unreadable: ${a instanceof Error?a.message:String(a)}`,source:"unavailable"}}if(!d)return{data:null,reason:"credentials missing access token",source:"unavailable"};try{let a=await fetch("https://api.anthropic.com/api/oauth/usage",{headers:{authorization:"Bearer "+d,"anthropic-beta":"oauth-2025-04-20"},signal:AbortSignal.timeout(c)});if(429===a.status)return{data:null,reason:n.u1,source:"unavailable",retryAt:function(a,b){if(!a)return;let c=Number(a);if(Number.isFinite(c)&&c>=0)return b+1e3*c;let d=Date.parse(a);if(Number.isFinite(d))return Math.max(b,d)}(a.headers.get("retry-after"),b())};if(401===a.status)return{data:null,reason:n.e4,source:"unavailable"};if(!a.ok)return{data:null,reason:`oauth usage status ${a.status}`,source:"unavailable"};let e=await a.json(),g={session:t(e.five_hour,l.Gn),weekly:t(e.seven_day,l.rX),plan:f,capturedAt:null};if(!g.session&&!g.weekly)return{data:null,reason:"oauth usage response had no windows",source:"unavailable"};return{data:g,reason:null,source:"live"}}catch(a){return{data:null,reason:`oauth usage fetch failed: ${a instanceof Error?a.message:String(a)}`,source:"unavailable"}}}function t(a,b){if(!a||"number"!=typeof a.utilization)return null;let c="string"==typeof a.resets_at?Date.parse(a.resets_at):NaN;return{usedPercent:a.utilization,resetsAt:Number.isFinite(c)?Math.round(c/1e3):null,windowMinutes:b}}function u(a,b=Math.round(Date.now()/1e3)){let c=a=>a?{usedPercent:a.usedPercent,resetsAt:a.resetsAt,windowMinutes:a.windowDurationMins}:null,d=(0,l.v9)(c(a.primary),c(a.secondary),b);return{session:d.session,weekly:d.weekly,plan:a.planType,capturedAt:b}}async function v(a={}){let b=a.account??(0,h.O$)(),c=a.now??Date.now,d=function(a=(0,h.O$)().sessionsDir){let b=0,c=null,d=null;for(let f of function(a){let b=new Set(function(a){let b=x(g().join(g().dirname(a),"history.jsonl"),196608);if(!b)return[];let c=[],d=new Set;for(let e of b.split("\n").reverse())if(e.includes('"session_id"'))try{let b=JSON.parse(e);if("string"!=typeof b.session_id||d.has(b.session_id))continue;d.add(b.session_id);let f=function(a,b){let c=/^([0-9a-f]{8})-([0-9a-f]{4})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.exec(b);if(!c)return null;let d=Number.parseInt(c[1]+c[2],16);if(!Number.isFinite(d))return null;let e=new Date(d);return Number.isNaN(e.getTime())?null:g().join(a,String(e.getFullYear()),String(e.getMonth()+1).padStart(2,"0"),String(e.getDate()).padStart(2,"0"))}(a,b.session_id);if(!f)continue;let h=w(f).find(a=>a.endsWith(`${b.session_id}.jsonl`));if(h&&c.push(g().join(f,h)),d.size>=12)break}catch{}return c}(a));for(let c of function(a){let b=[];for(let c of w(a))for(let d of w(g().join(a,c)))for(let e of w(g().join(a,c,d)))if(b.push(g().join(a,c,d,e)),b.length>=8)return b;return b}(a))for(let a of w(c).filter(a=>a.endsWith(".jsonl")).slice(0,12))b.add(g().join(c,a));let c=[];for(let a of b)try{c.push({p:a,m:e().statSync(a).mtimeMs})}catch{}return c.sort((a,b)=>b.m-a.m||b.p.localeCompare(a.p)).slice(0,12).map(a=>a.p)}(a)){b+=1;let a=function(a){let b=x(a,196608);if(!b)return{data:null,rejectedAt:null};let c=b.split("\n"),d=null,e=null;for(let a=c.length-1;a>=0;a--){let b=c[a];if(b.includes('"rate_limits"')||b.includes("usage_limit_exceeded"))try{let a=JSON.parse(b),c="string"==typeof a.timestamp?Date.parse(a.timestamp):NaN,f=Number.isFinite(c)?c/1e3:null;if(a.payload?.codex_error_info==="usage_limit_exceeded"||a.payload?.error?.codex_error_info==="usage_limit_exceeded"){null!==f&&(null===e||f>e)&&(e=f);continue}let g=a.payload?.rate_limits;if(!g)continue;let h=(0,l.v9)(A(g.primary,f),A(g.secondary,f),f);if(!h.session&&!h.weekly)continue;(!d||null===d.capturedAt||null!==f&&f>d.capturedAt)&&(d={session:h.session,weekly:h.weekly,plan:"string"==typeof g.plan_type?g.plan_type:null,capturedAt:f})}catch{}}return{data:d,rejectedAt:e}}(f);null!==a.rejectedAt&&(null===d||a.rejectedAt>d)&&(d=a.rejectedAt),a.data&&(!c||null===c.capturedAt||null!==a.data.capturedAt&&a.data.capturedAt>c.capturedAt)&&(c=a.data)}if(c){let a=null!==d&&(null===c.capturedAt||d>=c.capturedAt)?d:null;return{data:c,reason:null,source:"transcript",rejectedAt:a}}return null!==d?{data:null,reason:"usage-limit-exceeded",source:"transcript",rejectedAt:d}:{data:null,reason:0===b?"no codex session files":`no rate_limits event in newest ${b} session files`,source:"unavailable"}}(b.sessionsDir);try{let e=await (a.liveReader??(a=>(0,i.VD)().readRateLimits(a)))(b),f=c()/1e3,g=u(e,f),h=(d.data?z(d.data,d.rejectedAt):null)??z(g,d.rejectedAt),j=h??d.data;if(!j)return{data:g,reason:null,source:"live"};let k=a=>(0,m.I1)({limits:g,observedAt:g.capturedAt,stale:!1,source:"live"},{limits:a,observedAt:a.capturedAt,stale:!1,source:"transcript"},f),l=k(j),n=(0,m.ap)(l,"transcript"),o=h?d.data?(0,m.L1)(k(d.data)):g:null;return{data:(0,m.L1)(l),...o?{baseData:o}:{},reason:n?"transcript-reconciled":null,source:n?"transcript":"live"}}catch(f){let a=(0,j.XR)(f instanceof Error?f.message:String(f)),e=/request timed out:\s*initialize\b/i.test(a);if(console.warn(`[limits] Codex app-server probe for ${b.id} failed: ${a}`),d.data){let a=z(d.data,d.rejectedAt),b=a&&function(a,b){let c=y(a);if(!c||c.value.usedPercent<100)return!1;let d=c.value;if(null!==d.resetsAt)return d.resetsAt>b;if(null===d.observedAt||void 0===d.observedAt)return!0;let e="number"==typeof d.windowMinutes?d.windowMinutes:"weekly"===c.key?l.rX:l.Gn;return b-d.observedAt<60*e}(a,c()/1e3)?a:d.data;return{data:b,...b===a?{baseData:d.data}:{},reason:"transcript-fallback",source:"transcript",...e?{backoffReason:o}:{}}}if(null!==d.rejectedAt&&void 0!==d.rejectedAt)return{...d,...e?{backoffReason:o}:{}};return{data:null,reason:e?o:"app-server-unavailable",source:"unavailable"}}}function w(a){try{return e().readdirSync(a).sort().reverse()}catch{return[]}}function x(a,b){let c;try{c=e().openSync(a,"r")}catch{return null}try{let a=e().fstatSync(c).size,d=Math.min(a,b),f=Buffer.alloc(d);return e().readSync(c,f,0,d,a-d),f.toString("utf8")}catch{return null}finally{e().closeSync(c)}}function y(a){return["session","weekly"].flatMap(b=>a[b]?[{key:b,value:a[b]}]:[]).sort((a,b)=>b.value.usedPercent-a.value.usedPercent||a.key.localeCompare(b.key))[0]??null}function z(a,b){return null==b||!function(a,b){let c=y(a)?.value;if(!c)return!1;if(null===c.resetsAt)return!0;if("number"!=typeof c.windowMinutes)return b<=c.resetsAt;let d=60*c.windowMinutes;return b>=c.resetsAt-d&&b<c.resetsAt+d}(a,b)?null:function(a,b){let c=y(a);if(!c)return a;let d=null!==c.value.resetsAt&&c.value.resetsAt<=b?null:c.value.resetsAt,e={...a,[c.key]:{...c.value,usedPercent:100,resetsAt:d,observedAt:b,source:"transcript"}},f=[e.session?.observedAt,e.weekly?.observedAt].filter(a=>null!=a);return{...e,capturedAt:f.length?Math.min(...f):b}}(a,b)}function A(a,b){if(!a||"number"!=typeof a.used_percent)return null;let c=null;return"number"==typeof a.resets_at?c=a.resets_at:"number"==typeof a.resets_in_seconds&&null!==b&&(c=b+a.resets_in_seconds),{usedPercent:a.used_percent,resetsAt:c,windowMinutes:"number"==typeof a.window_minutes?a.window_minutes:null,observedAt:b}}},36493:(a,b,c)=>{c.r(b),c.d(b,{recoverDeadStructuredConversation:()=>u,structuredHostProcessAlive:()=>p});var d=c(57726),e=c(85923),f=c(74030),g=c(4116),h=c(31973),i=c(92233),j=c(26200),k=c(88602),l=c(13818),m=c(43271),n=c(36385);class o extends Error{constructor(){super("structured recovery operation is superseded"),this.name="StructuredRecoverySupersededError"}}function p(a){return!!a&&!!Number.isInteger(a.pid)&&!(a.pid<=0)&&!!i.B.pidAlive(a.pid)&&(null===a.startIdentity||i.B.processIdentity(a.pid)===a.startIdentity)}let q=globalThis,r=q.__llvStructuredRecovery??=new Map;function s(a,b,c=!1){let d=b.conversationId?.startsWith("conversation_")?a.conversation(b.conversationId):a.conversationForPath(b.path),f=d?.generations.at(-1);if(!d||!f)return null;let g={engine:d.engine,sessionId:f.id},i=a.readOnlySnapshot(),k=i.entries[(0,h.pp)(g)];if(k?.host)return null;let l=k?.status==="dead"||k?.status==="unhosted",m=!!(p(k?.structuredHost?.process??null)&&k?.claimOwner&&null===k.pendingAction&&!l),n=(0,e.Ui)(c?{...k?.launchProfile??{},...f.launchProfile,cwd:f.launchProfile.cwd||k?.launchProfile?.cwd||k?.cwd}:{...f.launchProfile,...k?.launchProfile??{},cwd:k?.launchProfile?.cwd||f.launchProfile.cwd||k?.cwd}),o=(0,j.St)(f.launchProfile.title,120)??(0,j.St)(k?.launchProfile?.title,120),q=(0,e.Ui)({...n,title:o??(0,j.bF)("recovery",n.goal?.objective??n.cwd,"Conversation recovery")}),r=i.lineageEdges[d.id]?.parentConversationId??q.parentConversationId,t=r&&r!==d.id?a.canonicalConversationId(r):null;return{conversationId:d.id,engine:d.engine,key:g,path:f.path,accountId:f.accountId??k?.accountId??null,parentConversationId:t===d.id?null:t,spec:{command:"",cwd:q.cwd,windowName:"structured-resume",engine:d.engine,transcript:f.path,launchProfile:q},publishReady:m}}async function t(a,b,c,e){let g=b.ownership,h=async()=>{if(g&&!await g.owns())throw new o},j=(b.processIdentity??(()=>({pid:process.pid,startIdentity:i.B.processIdentity(process.pid)})))();return c.withOperationLock(e.key,j,async()=>{await h();let e=s(c,a,!!g);if(!e||!e.publishReady&&((0,l.DQ)(c,e.conversationId,e.key),!(e=s(c,a,!!g))))return null;if(e.publishReady){if(!g)return{target:null,path:e.path,conversationId:e.conversationId,spawned:!1};if(await g.releaseHost(e.key),await h(),c.terminateStructuredHost(e.key),await h(),!(e=s(c,a,!0)))return null}let i=void 0===b.client?(0,k.sS)():b.client;if(!i)throw Error("structured recovery runtime host is unavailable");let j=(b.resolveAccount??d.lD.resolveSpawn)(e.engine,e.accountId),n=c.beginSpawnRequest({engine:e.engine,cwd:e.spec.cwd,transport:"structured",accountId:j.accountId,conversationId:e.conversationId,parentConversationId:e.parentConversationId,purpose:"resume-successor",origin:{kind:"successor"},expectedArtifactPath:e.path,launchProfile:e.spec.launchProfile});if("created"!==n.kind)throw Error("structured recovery reservation is unavailable");try{await h()}catch(a){throw c.failSpawn(n.receipt.launchId,"structured recovery operation was superseded"),a}let o=await (b.spawn??m.sh)({engine:e.engine,receipt:n.receipt,spec:e.spec,account:j,prompt:"",registry:c,client:i});if(!o.ok||!o.path)throw Error("structured recovery host did not publish its transcript");try{await h()}catch(a){throw await g?.releaseHost(e.key),c.terminateStructuredHost(e.key),a}return(b.requestDeliveryDrain??f.U)(),{target:null,path:o.path,conversationId:e.conversationId,spawned:!0}})}async function u(a,b={}){if("structured"!==(b.transport??n.l)())return null;let c=b.registry??(0,g.tk)();if(b.ownership&&!await b.ownership.owns())throw new o;let d=s(c,a,!!b.ownership);if(!d)return null;let e=b.ownership?`${c.filename}:${d.conversationId}:${b.ownership.operationId}:${b.ownership.revision}`:`${c.filename}:${d.conversationId}`,f=r.get(e);if(f)return f;if(d.publishReady&&!b.ownership)return{target:null,path:d.path,conversationId:d.conversationId,spawned:!1};let h=t(a,b,c,d);r.set(e,h);try{return await h}finally{r.get(e)===h&&r.delete(e)}}},36855:(a,b,c)=>{c.d(b,{DO:()=>n,G:()=>u,N2:()=>w,ON:()=>o,PF:()=>L,ki:()=>q,sP:()=>m,u1:()=>p});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(92233),l=c(88417);let m=16,n=0xa00000,o=0x1200000,p=0x1800000;function q(a,b){return{supported:b,reason:b?null:"codex"===a?l.t6:l.gy,formats:[...l.in],maxImages:m,maxRawBytesPerImage:n,maxEncodedBytesPerRequest:p}}let r={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},s=new Int32Array(new SharedArrayBuffer(4));function t(a){Atomics.wait(s,0,0,a)}function u(a,b){if("image/png"===b)return a.length>=24&&a.subarray(0,8).equals(Buffer.from("89504e470d0a1a0a","hex"))&&"IHDR"===a.subarray(12,16).toString("ascii");if("image/jpeg"===b)return a.length>=4&&255===a[0]&&216===a[1]&&255===a[2]&&255===a.at(-2)&&217===a.at(-1);if("image/gif"===b){let b=a.subarray(0,6).toString("ascii");return a.length>=10&&("GIF87a"===b||"GIF89a"===b)}return a.length>=12&&"RIFF"===a.subarray(0,4).toString("ascii")&&"WEBP"===a.subarray(8,12).toString("ascii")}function v(a){let b=(0,l.CC)(a.mime);if(!b)throw Error("runtime image MIME is unsupported");let c=function(a){if(!a||a.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(a))throw Error("runtime image base64 is invalid");let b=Buffer.from(a,"base64");if(0===b.length||b.toString("base64")!==a)throw Error("runtime image base64 is invalid");return b}(a.base64);if(c.byteLength>n)throw Error("runtime image exceeds 10 MB");if(!u(c,b))throw Error("runtime image signature does not match MIME");return{data:c,mime:b}}function w(a){return a.map(a=>{let{data:b,mime:c}=v(a);return{sha256:e().createHash("sha256").update(b).digest("hex"),mime:c,bytes:b.byteLength}})}function x(a){let b=g().openSync(a,"r");try{g().fsyncSync(b)}finally{g().closeSync(b)}}let y=/^[a-f0-9]{64}$/,z=/^([a-f0-9]{64})\.(png|jpg|gif|webp)$/;function A(a,b,c){if(Array.isArray(a)){for(let d of a)A(d,b,c);return}if(!a||"object"!=typeof a)return;"string"==typeof a.sha256&&y.test(a.sha256)&&"string"==typeof a.mime&&(0,l.CC)(a.mime)&&Number.isSafeInteger(a.bytes)&&Number(a.bytes)>0&&b.add(a.sha256);let d=function(a){if("delivered"!==a.state||!Array.isArray(a.runtimeImages))return null;let b="string"==typeof a.deliveredAt?Date.parse(a.deliveredAt):"string"==typeof a.createdAt?Date.parse(a.createdAt):NaN;return Number.isFinite(b)?b:null}(a);for(let[e,f]of Object.entries(a))"runtimeImages"===e&&null!==d&&d<=c||A(f,b,c)}function B(a,b){let c=a.split("\n"),d=a.endsWith("\n"),e=[];for(let[a,f]of c.entries())if(f.trim())try{e.push(JSON.parse(f))}catch(e){if(a===c.length-1&&!d)break;throw Error(`${b} contains malformed JSON`,{cause:e})}return e}function C(a,b,c){let d;try{d=g().readFileSync(a,"utf8")}catch(a){if("ENOENT"===a.code)return;throw a}if(d.trim()){if(a.endsWith(".jsonl")||a.endsWith(".ndjson")){for(let e of B(d,a))A(e,b,c);return}A(JSON.parse(d),b,c)}}function D(a){let b=process.getBuiltinModule?.("bun:sqlite");if(!b)throw Error("runtime image reachability requires the Bun runtime");return new b.Database(a,{readonly:!0,strict:!0})}let E=new Set(["delivered","turn-started","steered"]);function F(a,b){let c;if("string"!=typeof a||!a.trim())return!1;try{c=JSON.parse(a)}catch{return!1}if(!c||"object"!=typeof c||Array.isArray(c))return!1;let d=c;if("string"!=typeof d.status||!E.has(d.status))return!1;let e="string"==typeof d.at?Date.parse(d.at):NaN;return Number.isFinite(e)&&e<=b}function G(a){let b;try{let c=g().openSync(a,g().constants.O_RDONLY|g().constants.O_NOFOLLOW);try{b=JSON.parse(g().readFileSync(c,"utf8"))}finally{g().closeSync(c)}}catch(a){if(["ENOENT","ELOOP"].includes(a.code??"")||a instanceof SyntaxError)return null;throw a}if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b;return Number.isSafeInteger(c.pid)&&!(c.pid<=0)&&(null===c.startIdentity||"string"==typeof c.startIdentity&&c.startIdentity)&&"string"==typeof c.token&&c.token?c:null}function H(a){return G(i().join(a,"owner.json"))}function I(a){return null!==a&&!!k.B.pidAlive(a.pid)&&(null===a.startIdentity||k.B.processIdentity(a.pid)===a.startIdentity)}class J{constructor(a=(0,j.BQ)("runtime-images"),b={}){this.root=a,this.maxBytes=b.maxBytes??function(){let a=process.env.LLV_RUNTIME_IMAGE_STORE_MAX_BYTES?.trim();if(!a)return 0x10000000;let b=Number(a);if(!Number.isSafeInteger(b)||b<=0)throw Error("runtime image storage quota is invalid");return b}(),this.fault=b.fault??(()=>{}),this.now=b.now??Date.now,this.abandonedPartialMaxAgeMs=b.abandonedPartialMaxAgeMs??36e5,this.gcGraceMs=b.gcGraceMs??36e5,this.reachableDigests=b.reachableDigests??(()=>(function(a=(0,j.Pn)(),b={}){let c=(b.now??Date.now())-(b.retiredGraceMs??864e5),d=new Set;return C(i().join(a,"agent-registry.json"),d,c),!function(a,b,c){if(!g().existsSync(a))return;let d=D(a);try{if(!d.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'registry_rows'").get())return;for(let a of d.query("SELECT value_json FROM registry_rows").all())A(JSON.parse(a.value_json),b,c)}finally{d.close()}}(i().join(a,"agent-registry.sqlite"),d,c),!function(a,b,c){let d;try{d=g().readdirSync(a,{withFileTypes:!0})}catch(a){if("ENOENT"===a.code)return;throw a}for(let e of d){let d;if(!e.isFile()||!e.name.endsWith(".jsonl"))continue;let f=i().join(a,e.name);try{d=g().readFileSync(f,"utf8")}catch(a){if("ENOENT"===a.code)continue;throw a}if(!d.trim())continue;let h=new Map,j=new Map;for(let a of B(d,f)){let d=a&&"object"==typeof a&&!Array.isArray(a)?a:null,e=d?.kind==="queued"&&d.entry&&"object"==typeof d.entry?d.entry:null;if(e&&"string"==typeof e.id){let a=h.get(e.id)??new Set;A(d,a,c),h.set(e.id,a);continue}if(d?.kind==="delivered"&&"string"==typeof d.entryId){let a="string"==typeof d.deliveredAt?Date.parse(d.deliveredAt):NaN;Number.isFinite(a)&&j.set(d.entryId,a);continue}A(a,b,c)}for(let[a,d]of h){let e=j.get(a);if(void 0===e||!(e<=c))for(let a of d)b.add(a)}}}(i().join(a,"claude-delivery-ledger"),d,c),!function(a,b,c){let d;try{d=g().readdirSync(a,{withFileTypes:!0})}catch(a){if("ENOENT"===a.code)return;throw a}for(let e of d)e.isFile()&&(e.name.endsWith(".json")||e.name.endsWith(".jsonl")||e.name.endsWith(".ndjson"))&&C(i().join(a,e.name),b,c)}(i().join(a,"structured-host-events"),d,c),!function(a,b,c){if(!g().existsSync(a))return;let d=D(a);try{let a=new Set(d.query("SELECT name FROM sqlite_master WHERE type = 'table'").all().map(a=>a.name));if(a.has("operations")){if(new Set(d.query("PRAGMA table_info(operations)").all().map(a=>a.name)).has("operation_id")){let a=d.query("SELECT operation_id, request_json, receipt_json FROM operations").all(),e=function(a,b){let c=new Map(a.map(a=>[a.operation_id,a])),d=new Map(a.map(a=>[a.operation_id,function(a){try{let b=JSON.parse(a);return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}(a.receipt_json)])),e=new Set;for(let a of d.values())"string"==typeof a?.retryOfOperationId&&e.add(a.retryOfOperationId);let f=new Map;for(let a of c.keys()){let b=a,c=new Set;for(;!c.has(b);){c.add(b);let a=d.get(b)?.retryOfOperationId;if("string"!=typeof a)break;b=a}let e=f.get(b)??new Set;e.add(a),f.set(b,e)}let g=new Set;for(let a of f.values()){let d=[...a].filter(a=>!e.has(a));if(0!==d.length&&d.every(a=>F(c.get(a)?.receipt_json,b)))for(let b of a)g.add(b)}return g}(a,c);for(let d of a)if(!e.has(d.operation_id))for(let a of[d.request_json,d.receipt_json])a.trim()&&A(JSON.parse(a),b,c)}else for(let a of d.query("SELECT request_json, receipt_json FROM operations").all())if(!F(a.receipt_json,c))for(let d of[a.request_json,a.receipt_json])d.trim()&&A(JSON.parse(d),b,c)}for(let[e,f]of[["events",["payload_json"]],["projections",["state_json"]],["entities",["state_json"]],["outbox",["payload_json"]],["producer_receipts",["event_json"]]])if(a.has(e))for(let a of d.query(`SELECT ${f.join(", ")} FROM ${e}`).all())for(let d of f){let e=a[d];"string"==typeof e&&e.trim()&&A(JSON.parse(e),b,c)}}finally{d.close()}}(i().join(a,"runtime-events.sqlite"),d,c),d})(i().dirname(this.root),{now:this.now()})),this.afterRootOpen=b.afterRootOpen??(()=>{}),this.writerLockStaleMs=b.writerLockStaleMs??3e4,this.writerLockWaitMs=b.writerLockWaitMs??5e3,this.procSelfFdPaths=b.procSelfFdPaths??g().existsSync("/proc/self/fd"),this.ensurePrivateRoot(),this.withWriterLock("maintenance",a=>this.removeAgedPartials(a))}putMany(a){if(a.length>m)throw Error("too many images");if(a.reduce((a,b)=>a+Buffer.byteLength(b.base64),0)>p)throw Error("runtime image request encoding is too large");let b=a.map(a=>this.validateUpload(a));if(b.reduce((a,b)=>a+b.data.byteLength,0)>o)throw Error("runtime image request is too large");return this.withWriterLock("write",a=>{this.assertQuota(a,b);let c=[],d=[];try{for(let{data:e,mime:f}of b){let{ref:b,created:g}=this.put(a,e,f);g&&c.push(i().join(a.path,i().basename(this.pathFor(b)))),d.push(b)}}catch(b){for(let a of c)g().rmSync(a,{force:!0});throw c.length&&x(a.path),b}return d})}read(a){let b=this.openRoot("read");try{return this.readFromRoot(b,a)}finally{g().closeSync(b.fd)}}pathFor(a){let b=(0,l.CC)(a.mime);if(!b||!/^[a-f0-9]{64}$/.test(a.sha256)||!Number.isSafeInteger(a.bytes)||a.bytes<=0)throw Error("runtime image ref is invalid");return i().join(this.root,`${a.sha256}.${r[b]}`)}validateUpload(a){return v(a)}assertQuota(a,b){let c=this.storedBytes(a),d=()=>{let c=new Map;for(let{data:d,mime:f}of b){let b=e().createHash("sha256").update(d).digest("hex"),h=i().join(a.path,`${b}.${r[f]}`);g().existsSync(h)||c.set(h,d.byteLength)}return[...c.values()].reduce((a,b)=>a+b,0)},f=d();if(c+f>this.maxBytes){let g=new Set(this.reachableDigests());for(let{data:a}of b)g.add(e().createHash("sha256").update(a).digest("hex"));this.collectGarbage(a,g),c=this.storedBytes(a),f=d()}if(c+f>this.maxBytes)throw Error("runtime image storage quota exceeded")}withWriterLock(a,b){this.ensurePrivateRoot();let c=this.openRoot(a),d=i().join(c.path,".writer-lock"),f=this.now()+this.writerLockWaitMs,h={pid:process.pid,startIdentity:k.B.processIdentity(process.pid),token:e().randomUUID()},j=!1;try{for(;!j&&(this.withWriterAcquisitionGate(c,f,()=>{this.assertRootPinned(c);let a=!1;try{g().mkdirSync(d,{mode:448}),a=!0}catch(a){if("EEXIST"!==a.code)throw a}if(a)try{g().writeFileSync(i().join(d,"owner.json"),JSON.stringify(h),{flag:"wx",mode:384}),j=!0;return}catch(a){if("EEXIST"===a.code)return;throw g().rmSync(d,{recursive:!0,force:!0}),a}try{let a=g().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink())throw Error("runtime image writer lock is unsafe");this.now()-a.mtimeMs>this.writerLockStaleMs&&!I(H(d))&&this.reclaimStaleWriterLock(c,d,a)}catch(a){if("ENOENT"!==a.code)throw a}}),!j);){if(this.now()>=f)throw Error("runtime image writer lock timed out");t(5)}if(H(d)?.token!==h.token)throw Error("runtime image writer lock was lost before entry");return b(c)}finally{j&&H(d)?.token===h.token&&g().rmSync(d,{recursive:!0,force:!0}),g().closeSync(c.fd)}}withWriterAcquisitionGate(a,b,c){let d=i().join(a.path,".writer-lock-gate.queue"),f=i().join(a.path,".writer-lock-gate"),h={pid:process.pid,startIdentity:k.B.processIdentity(process.pid),token:e().randomUUID()};g().mkdirSync(d,{recursive:!0,mode:448});let j=i().join(d,`${String(this.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`);g().writeFileSync(j,JSON.stringify(h),{flag:"wx",mode:384});let l=!1;try{for(;!l;){this.assertRootPinned(a);let c=[];for(let a of g().readdirSync(d).filter(a=>a.endsWith(".json")).sort()){let b=i().join(d,a),e=G(b);if(!e||!I(e)){g().rmSync(b,{force:!0});continue}c.push(b)}if(c[0]===j)try{g().mkdirSync(f,{mode:448}),g().writeFileSync(i().join(f,"owner.json"),JSON.stringify(h),{flag:"wx",mode:384}),l=!0}catch(a){if("EEXIST"!==a.code)throw a;I(H(f))||g().rmSync(f,{recursive:!0,force:!0})}if(!l){if(this.now()>=b)throw Error("runtime image writer lock timed out");t(5)}}return c()}finally{l&&H(f)?.token===h.token&&g().rmSync(f,{recursive:!0,force:!0}),g().rmSync(j,{force:!0})}}reclaimStaleWriterLock(a,b,c){let d,f=i().join(a.path,`.writer-lock-reclaim.${e().randomUUID()}`);try{g().renameSync(b,f)}catch(a){if("ENOENT"===a.code)return;throw a}try{d=g().lstatSync(f)}catch{return}if(d.ino===c.ino&&d.dev===c.dev)return void g().rmSync(f,{recursive:!0,force:!0});try{g().renameSync(f,b)}catch(a){throw Error("runtime image writer lock reclamation raced",{cause:a})}}removeAgedPartials(a){for(let b of(this.assertRootPinned(a),g().readdirSync(a.path,{withFileTypes:!0}))){if(!b.isFile()||!b.name.endsWith(".partial"))continue;let c=i().join(a.path,b.name),d=g().lstatSync(c);d.isFile()&&!d.isSymbolicLink()&&this.now()-d.mtimeMs>=this.abandonedPartialMaxAgeMs&&g().rmSync(c,{force:!0})}}storedBytes(a){this.assertRootPinned(a);let b=0;for(let c of g().readdirSync(a.path,{withFileTypes:!0})){if(!c.isFile()||!z.test(c.name))continue;let d=g().lstatSync(i().join(a.path,c.name));d.isFile()&&!d.isSymbolicLink()&&(b+=d.size)}return b}collectGarbage(a,b){for(let c of(this.assertRootPinned(a),g().readdirSync(a.path,{withFileTypes:!0}))){let d=c.isFile()?z.exec(c.name):null;if(!d||b.has(d[1]))continue;let e=i().join(a.path,c.name),f=g().lstatSync(e);!f.isFile()||f.isSymbolicLink()||this.now()-f.mtimeMs<this.gcGraceMs||g().rmSync(e,{force:!0})}x(a.path)}ensurePrivateRoot(){let a;try{a=g().lstatSync(this.root)}catch(b){if("ENOENT"!==b.code)throw b;g().mkdirSync(this.root,{recursive:!0,mode:448}),a=g().lstatSync(this.root)}let b=process.geteuid?.();if(!a.isDirectory()||a.isSymbolicLink()||void 0===b||a.uid!==b||(511&a.mode)!=448)throw Error("runtime image root is unsafe")}openRoot(a){let b;try{b=g().openSync(this.root,g().constants.O_RDONLY|g().constants.O_DIRECTORY|g().constants.O_NOFOLLOW)}catch(a){throw Error("runtime image root is unsafe",{cause:a})}try{let c,d=g().fstatSync(b),e=process.geteuid?.();if(!d.isDirectory()||void 0===e||d.uid!==e||(511&d.mode)!=448)throw Error("runtime image root is unsafe");this.afterRootOpen(a);try{c=g().lstatSync(this.root)}catch(a){throw Error("runtime image root changed during operation",{cause:a})}if(!c.isDirectory()||c.isSymbolicLink()||c.dev!==d.dev||c.ino!==d.ino)throw Error("runtime image root changed during operation");return this.procSelfFdPaths?{fd:b,path:`/proc/self/fd/${b}`,pinned:!0}:{fd:b,path:this.root,pinned:!1}}catch(a){throw g().closeSync(b),a}}assertRootPinned(a){let b;if(a.pinned)return;let c=g().fstatSync(a.fd);try{b=g().lstatSync(this.root)}catch(a){throw Error("runtime image root changed during operation",{cause:a})}if(!b.isDirectory()||b.isSymbolicLink()||b.dev!==c.dev||b.ino!==c.ino)throw Error("runtime image root changed during operation")}readFromRoot(a,b){let c;this.assertRootPinned(a);let d=i().join(a.path,i().basename(this.pathFor(b)));try{c=g().openSync(d,g().constants.O_RDONLY|g().constants.O_NOFOLLOW)}catch(c){let a=c.code;if("ENOENT"===a)throw Error(`runtime image ${b.sha256.slice(0,12)} is missing`);if("ELOOP"===a)throw Error("runtime image ref is unsafe");throw c}try{if(!g().fstatSync(c).isFile())throw Error("runtime image ref is unsafe");let a=g().readFileSync(c);if(a.byteLength!==b.bytes||e().createHash("sha256").update(a).digest("hex")!==b.sha256)throw Error(`runtime image ${b.sha256.slice(0,12)} digest mismatch`);if(!u(a,b.mime))throw Error(`runtime image ${b.sha256.slice(0,12)} signature mismatch`);return a}finally{g().closeSync(c)}}put(a,b,c){this.assertRootPinned(a);let d=e().createHash("sha256").update(b).digest("hex"),f={sha256:d,mime:c,bytes:b.byteLength},h=i().join(a.path,i().basename(this.pathFor(f)));if(g().existsSync(h)){this.readFromRoot(a,f),g().chmodSync(h,384);let b=new Date(this.now());return g().utimesSync(h,b,b),{ref:f,created:!1}}let j=i().join(a.path,`.${d}.${e().randomUUID()}.partial`),k=!1;try{let c=g().openSync(j,"wx",384);try{this.fault("write"),g().writeFileSync(c,b),this.fault("fsync"),g().fsyncSync(c)}finally{g().closeSync(c)}this.fault("link"),g().linkSync(j,h),k=!0,g().chmodSync(h,384),this.fault("directory-fsync"),x(a.path)}catch(b){if("EEXIST"===b.code)return this.readFromRoot(a,f),{ref:f,created:!1};throw k&&(g().rmSync(h,{force:!0}),x(a.path)),b}finally{g().rmSync(j,{force:!0}),x(a.path)}return{ref:f,created:k}}}let K=null;function L(){return K??=new J}},37788:(a,b,c)=>{function d(a,b,c=process.kill){if(!a||!Number.isInteger(a)||a<=0)return!1;try{return c(-a,b),!0}catch{return!1}}function e(a,b,c=process.kill){if(d(a.pid,b,c))return!0;try{return a.kill(b)}catch{return!1}}c.d(b,{f:()=>e,v:()=>d})},38849:(a,b,c)=>{c.d(b,{Em:()=>l,Vg:()=>j,Vh:()=>h,Y6:()=>g,r$:()=>i,xK:()=>k});var d=c(73024),e=c.n(d);let f=(0,c(94284).E)("json-v3");function g(a){let b,c,d;try{let d=e().statSync(a);b=d.mtimeMs,c=d.size}catch(a){return{value:null,complete:"ENOENT"===a.code}}let g=f.get(a);if(g?.[0]===c&&g[1]===b)return{value:g[2],complete:!0};try{d=JSON.parse(e().readFileSync(a,"utf8"))}catch{return{value:null,complete:!1}}let h=d&&"object"==typeof d&&!Array.isArray(d)?d:null;return f.set(a,[c,b,h]),{value:h,complete:!0}}function h(a){return g(a).value}function i(a){return"string"==typeof a?a:null}function j(a){return"number"==typeof a&&Number.isFinite(a)?a:null}function k(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function l(a){return Array.isArray(a)?a.filter(a=>null!==a&&"object"==typeof a&&!Array.isArray(a)):[]}},40006:(a,b,c)=>{c.d(b,{Fp:()=>j,XR:()=>e,qN:()=>d});class d extends Error{constructor(a){super(`Codex app-server protocol error: ${e(a)}`),this.name="CodexAppServerProtocolError"}}function e(a){return a.replace(/(bearer\s+)[^\s,;]+/gi,"$1[REDACTED]").replace(/(["']?(?:access|refresh|id)[_-]?token["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[REDACTED]").replace(/(["']?(?:api[_-]?key|authorization)["']?\s*[:=]\s*["']?)[^\s,"'}]+/gi,"$1[REDACTED]").slice(0,500)}function f(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function g(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function h(a){return"string"==typeof a&&a.length>0&&a.length<=512||"number"==typeof a&&Number.isSafeInteger(a)}function i(a){throw new d(a)}function j(a){var b;f(a)||i("message must be an object"),g(a,"jsonrpc")&&"2.0"!==a.jsonrpc&&i("jsonrpc must be 2.0 when present");let c=g(a,"jsonrpc")?"jsonrpc-2.0":"headerless",d=g(a,"id"),e=g(a,"method"),j=g(a,"result"),k=g(a,"error");return j||k?((e||!d||j===k)&&i("response shape is invalid"),h(a.id)||i("response id is invalid"),k)?(f(a.error)&&"number"==typeof a.error.code&&Number.isSafeInteger(a.error.code)&&"string"==typeof a.error.message&&!(a.error.message.length>2e3)||i("response error is invalid"),{kind:"response",envelope:c,id:a.id,error:{code:a.error.code,message:a.error.message}}):{kind:"response",envelope:c,id:a.id,result:a.result}:(e&&"string"==typeof(b=a.method)&&b.length>0&&b.length<=256||i("method is invalid"),d)?(h(a.id)||i(`server request ${a.method} has an invalid id`),{kind:"request",envelope:c,id:a.id,method:a.method,params:a.params}):{kind:"notification",envelope:c,method:a.method,params:a.params}}},40216:(a,b,c)=>{c.d(b,{Om:()=>m,L1:()=>k,ap:()=>l,I1:()=>j});var d=c(56458),e=c(92128),f=c(44123);function g(a,b,c){let d=a.limits?.[b];if(!d)return null;let e=d.observedAt??a.observedAt;return{value:d,observedAt:e,stale:a.stale||null!==e&&c-e>1200,source:d.source??a.source}}function h(a,b,c,d){var f;let g;if(a.value.usedPercent<100)return!1;if(null!==a.value.resetsAt)return a.value.resetsAt>d;if(null===a.observedAt)return!0;let h="number"==typeof a.value.windowMinutes?a.value.windowMinutes:"weekly"===c?e.rX:e.Gn;return!(d-a.observedAt>=60*h)&&(f=a.observedAt,!(g=b?.value)||null===g.resetsAt||"number"!=typeof g.windowMinutes||!(g.resetsAt-60*g.windowMinutes>f))}function i(a,b,c,d){if(!a)return b;if(!b)return a;let e=h(a,b,c,d);return e!==h(b,a,c,d)?e?a:b:null===a.observedAt?null===b.observedAt?a:b:null===b.observedAt?a:b.observedAt>a.observedAt?b:a}function j(a,b,c){let d=i(a?g(a,"session",c):null,b?g(b,"session",c):null,"session",c),e=i(a?g(a,"weekly",c):null,b?g(b,"weekly",c):null,"weekly",c),f=[a,b].filter(a=>!!a?.limits?.plan).sort((a,b)=>(b.observedAt??-1/0)-(a.observedAt??-1/0));return{session:d,weekly:e,plan:f[0]?.limits?.plan??null}}function k(a){if(!a.session&&!a.weekly)return null;let b=[a.session?.observedAt,a.weekly?.observedAt].filter(a=>null!=a);return{session:a.session?{...a.session.value,observedAt:a.session.observedAt,source:a.session.source}:null,weekly:a.weekly?{...a.weekly.value,observedAt:a.weekly.observedAt,source:a.weekly.source}:null,plan:a.plan,capturedAt:b.length?Math.min(...b):null}}function l(a,b){return a.session?.source===b||a.weekly?.source===b}function m(a,b,c,e=Date.now(),g=()=>null,h=()=>!1){let i=new Map;for(let a of Object.values(c.conversations))for(let b of a.generations)i.set(b.path,{conversationId:a.id,engine:a.engine,accountId:b.accountId});let j=new Map;for(let a of Object.values(c.entries??{})){let b=i.get(a.artifactPath);b&&a.accountId&&["starting","live","idle","handoff"].includes(a.status)&&h(a)&&j.set(a.artifactPath,{engine:b.engine,accountId:a.accountId})}let k={claude:new Map,codex:new Map},l=a.map(a=>{var b,h,l;let m,n=i.get(a.path),o=j.get(a.path),p=o?.accountId??n?.accountId??null,q=o?.engine??n?.engine,r=q&&p?c.quotaObservations[q][p]:void 0,s=o&&a.authoritativeTurn?.state==="busy"?(b=o.engine,h=o.accountId,(m=k[b]).has(h)||m.set(h,function(a,b=Date.now(),c=6e4){let d=function(a,b=Date.now(),c=6e4){if(a?.reason!==f.u1||!a.retryAt)return null;let d=Date.parse(a.retryAt);return!Number.isFinite(d)||b>d+(Number.isFinite(c)?Math.max(0,c):6e4)?null:new Date(d).toISOString()}(a,b,c);return d?{reason:"provider_throttled",retryAt:d}:null}(g(b,h),e)),m.get(h)??null):null,t=o||"running"===a.proc?function(a,b=Date.now()){if(!a)return null;let c=Date.parse(a.observedAt),e=Date.parse(a.authCheckedAt),f=(0,d.Wz)({engine:a.engine,accountId:a.accountId,authenticated:a.authenticated,limits:a.limits,provenance:a.provenance,observedAt:c,authCheckedAt:e},b);if(f?.percent!==0||!a.limits)return null;let g=["session","weekly"].flatMap(b=>{let c=a.limits?.[b];return c&&c.usedPercent>=100?[{window:b,resetAt:c.resetsAt}]:[]});if(!g.length)return null;let h=g.filter(a=>null===a.resetAt||1e3*a.resetAt>b);if(!h.length)return null;let i=h.find(a=>null===a.resetAt)??h.sort((a,b)=>b.resetAt-a.resetAt)[0];return{source:"account",accountId:a.accountId,window:i.window,resetAt:null!==i.resetAt&&1e3*i.resetAt>b?i.resetAt:null}}(r,e):null,u=(l=a.rateLimit,l?{source:"pane",accountId:p??l.accountId,window:t?.window??l.window,resetAt:t?.resetAt??l.resetAt}:t),v={...a};return delete v.providerThrottle,{...v,conversationId:a.conversationId??n?.conversationId,rateLimit:u,...s?{providerThrottle:s}:{}}}),n=new Map(l.map(a=>[a.path,a])),o=new Set(["waiting_ready","relaying","fixing"]);return{files:l,flows:b.map(a=>{let b=n.get(a.implementerPath),c=b?.rateLimit;return c&&o.has(a.state)?{...a,block:{reason:"rate_limited",conversationId:b.conversationId??a.implementerConversationId??null,accountId:c.accountId,resetAt:c.resetAt}}:a.block?{...a,block:null}:a})}}},41730:(a,b,c)=>{c.d(b,{Bc:()=>k,IO:()=>l,Kb:()=>u,PM:()=>v,Ux:()=>p,rI:()=>w,z4:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(40006);class k extends Error{constructor(a){super(a),this.code=a,this.name="HistorySecurityError"}}class l extends Error{constructor(a,b){super(b),this.detail=a,this.code="target-account-unavailable",this.name="MigrationTargetUnavailableError"}}function m(a){let b=process.getuid?.()??null;return null===b||a.uid===b}function n(a){let b;try{b=g().lstatSync(a)}catch{throw new k("unsafe-root")}if(!b.isDirectory()||b.isSymbolicLink()||!m(b)||(18&b.mode)!=0)throw new k("unsafe-root");return b}function o(a,b){return b===a||b.startsWith(a+i().sep)}function p(a,b,c=0x20000000){let d,e;n(b);let f=i().resolve(b),h=i().resolve(a);if(!o(f,h)||f===h)throw new k("unsafe-source");let j=i().relative(f,h),l=f;for(let a of j.split(i().sep).slice(0,-1))n(l=i().join(l,a));try{d=g().realpathSync(b),e=g().realpathSync(a)}catch{throw new k("unsafe-source")}if(!o(d,e))throw new k("unsafe-source");let q=g().lstatSync(a);if(!q.isFile()||q.isSymbolicLink()||1!==q.nlink||!m(q)||(18&q.mode)!=0)throw new k("unsafe-source");if(q.size>c)throw new k("history-too-large");let r=g().openSync(a,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0));try{let a=g().fstatSync(r);if(!a.isFile()||1!==a.nlink||!m(a)||a.dev!==q.dev||a.ino!==q.ino||a.size!==q.size)throw new k("unsafe-source")}finally{g().closeSync(r)}return{sourcePath:e,sourceRoot:d,size:q.size,device:q.dev,inode:q.ino,mtimeMs:q.mtimeMs,ctimeMs:q.ctimeMs}}function q(a,b){return 1===a.nlink&&a.dev===b.device&&a.ino===b.inode&&a.size===b.size&&a.mtimeMs===b.mtimeMs&&a.ctimeMs===b.ctimeMs}function r(a,b,c,d=!1){let f;try{f=g().lstatSync(a)}catch{throw new k(d?"history-collision":"unsafe-source")}if(!f.isFile()||f.isSymbolicLink()||1!==f.nlink||!m(f)||d&&(63&f.mode)!=0)throw new k(d?"history-collision":"unsafe-source");let h=g().openSync(a,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0)),i=e().createHash("sha256"),j=Buffer.allocUnsafe(1048576),l=0;try{let a=g().fstatSync(h);if(a.dev!==f.dev||a.ino!==f.ino||a.size!==f.size||c&&!q(a,c))throw new k(d?"history-collision":"history-integrity");for(;;){let a=g().readSync(h,j,0,j.length,null);if(0===a)break;if((l+=a)>b)throw new k("history-too-large");i.update(j.subarray(0,a))}let e=g().fstatSync(h);if(e.dev!==a.dev||e.ino!==a.ino||e.size!==a.size||e.mtimeMs!==a.mtimeMs||e.ctimeMs!==a.ctimeMs||l!==a.size)throw new k(d?"history-collision":"history-integrity")}finally{g().closeSync(h)}return{hash:i.digest("hex"),size:l}}function s(a,b,c=0x20000000){let d=p(a,b,c);return r(d.sourcePath,c,d)}function t(a,b){let c=i().dirname(a),d=`${a}.${process.pid}.${e().randomUUID()}.tmp`,f=null;try{f=g().openSync(d,"wx",384),g().writeFileSync(f,JSON.stringify(b)+"\n","utf8"),g().fsyncSync(f),g().closeSync(f),f=null,g().renameSync(d,a);let e=g().openSync(c,"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==f&&g().closeSync(f),g().rmSync(d,{force:!0})}}function u(a){return a instanceof Error?{type:(0,j.XR)(a.name||"Error"),message:(0,j.XR)(a.message)}:{type:typeof a,message:"provider failed without an Error detail"}}function v(a){let b=a.maxBytes??0x20000000,c=p(a.sourcePath,a.sourceRoot,b),d=function(a){if(!a||i().isAbsolute(a)||a.includes("\0"))throw new k("unsafe-root");let b=i().normalize(a);if(".."===b||b.startsWith(".."+i().sep))throw new k("unsafe-root");return b}(a.destinationRelative),f=function(a,b){n(a);let c=g().realpathSync(a);for(let d of b.split(i().sep).filter(a=>a&&"."!==a)){if("."===d||".."===d)throw new k("unsafe-root");let b=i().join(c,d);try{g().mkdirSync(b,{mode:448})}catch(a){if("EEXIST"!==a.code)throw a}n(b);let e=g().realpathSync(b);if(!o(g().realpathSync(a),e))throw new k("unsafe-root");c=e}return c}(a.targetRoot,i().dirname(d)),h=i().join(f,i().basename(d)),j=`${h}.llv-receipt.json`;if(g().existsSync(h)){g().existsSync(j)||function(a){let b=g().lstatSync(a);if(1===b.nlink)return;let c=i().dirname(a),d=`.${i().basename(a)}.`,e=g().readdirSync(c).filter(a=>a.startsWith(d)&&a.endsWith(".tmp")).map(a=>i().join(c,a)).filter(a=>{let c=g().lstatSync(a);return c.isFile()&&!c.isSymbolicLink()&&c.dev===b.dev&&c.ino===b.ino});if(e.length!==b.nlink-1)throw new k("history-collision");for(let a of e)g().unlinkSync(a);let f=g().openSync(c,"r");try{g().fsyncSync(f)}finally{g().closeSync(f)}if(1!==g().lstatSync(a).nlink)throw new k("history-collision")}(h);let d=function(a){try{let b=g().lstatSync(a);if(!b.isFile()||b.isSymbolicLink()||1!==b.nlink||!m(b)||(63&b.mode)!=0||b.size>4096)return null;let c=JSON.parse(g().readFileSync(a,"utf8"));return"string"==typeof c.operationId&&"string"==typeof c.hash&&"number"==typeof c.size?c:null}catch{return null}}(j),e=r(h,b,void 0,!0),f=r(c.sourcePath,b,c);if(null!==d&&(d.operationId===a.operationId||(a.priorOperationIds??[]).includes(d.operationId))&&d.hash===e.hash&&d.size===e.size&&f.hash===e.hash&&f.size===e.size)return d.operationId!==a.operationId&&t(j,{operationId:a.operationId,hash:e.hash,size:e.size}),{path:h,...e,reused:!0};if(!g().existsSync(j)&&f.hash===e.hash&&f.size===e.size)return t(j,{operationId:a.operationId,hash:e.hash,size:e.size}),{path:h,...e,reused:!0};throw new k("history-collision")}if(g().existsSync(j))throw new k("history-collision");let l=i().join(f,`.${i().basename(h)}.${process.pid}.${e().randomUUID()}.tmp`),s=g().openSync(c.sourcePath,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0)),u=null,v=e().createHash("sha256"),w=0;try{let d=g().fstatSync(s);if(d.dev!==c.device||d.ino!==c.inode||d.size!==c.size)throw new k("unsafe-source");u=g().openSync(l,g().constants.O_WRONLY|g().constants.O_CREAT|g().constants.O_EXCL|(g().constants.O_NOFOLLOW??0),384);let e=Buffer.allocUnsafe(1048576);for(;;){let a=g().readSync(s,e,0,e.length,null);if(0===a)break;if((w+=a)>b)throw new k("history-too-large");v.update(e.subarray(0,a));let c=0;for(;c<a;)c+=g().writeSync(u,e,c,a-c)}if(w!==c.size)throw new k("history-integrity");let i=g().fstatSync(s);if(!q(i,c))throw new k("history-integrity");g().fchmodSync(u,384),g().fsyncSync(u),g().closeSync(u),u=null;let m=g().realpathSync(a.targetRoot);if(!o(m,g().realpathSync(f)))throw new k("unsafe-root");try{g().linkSync(l,h)}catch(a){if("EEXIST"===a.code)throw new k("history-collision");throw a}g().rmSync(l,{force:!0});let n=g().openSync(f,"r");try{g().fsyncSync(n)}finally{g().closeSync(n)}a.afterDestinationPublished?.();let p=v.digest("hex");t(j,{operationId:a.operationId,hash:p,size:w});let r=g().openSync(f,"r");try{g().fsyncSync(r)}finally{g().closeSync(r)}return{path:h,hash:p,size:w,reused:!1}}finally{g().closeSync(s),null!==u&&g().closeSync(u),g().rmSync(l,{force:!0})}}function w(a){return a instanceof k?{code:a.code,message:({"unsafe-root":"account history root failed safety checks","unsafe-source":"source history failed safety checks","history-too-large":"source history exceeds the migration size limit","history-collision":"target history already contains a conflicting successor","history-integrity":"successor history failed integrity verification"})[a.code]}:a instanceof l?{code:a.code,message:"not-authenticated"===a.detail?"target account is not signed in; sign it in or switch to another account":"target account home failed safety checks; repair it or switch to another account"}:{code:"provider-failed",message:"successor provider failed a recoverable preflight"}}},42580:(a,b,c)=>{c.d(b,{RO:()=>r,dq:()=>s,mI:()=>u});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(57975),i=c(50920),j=c(8663);let k=globalThis;function l(){return k.__llvRuntimeEventLedgers??=new Map,k.__llvRuntimeEventLedgers}function m(a){return{dev:a.dev,ino:a.ino,size:a.size,mtimeMs:a.mtimeMs,ctimeMs:a.ctimeMs}}function n(a,b){return a.dev===b.dev&&a.ino===b.ino&&a.size===b.size&&a.mtimeMs===b.mtimeMs&&a.ctimeMs===b.ctimeMs}function o(a,b,c){let d=l();d.delete(a),d.set(a,{identity:b,events:c.slice()});let e=0;for(let a of d.values())e+=a.identity.size;for(;d.size>64||e>0x4000000;){let a=d.keys().next().value;if(void 0===a)break;let b=d.get(a);d.delete(a),e-=b?.identity.size??0}}function p(a){l().delete(a)}function q(a){console.warn("[structured host] runtime event cursor recovered",a)}function r(a){if(!Number.isSafeInteger(a)||a<0)throw Error("runtime event cursor is invalid");let b=a+1;if(!Number.isSafeInteger(b))throw Error("runtime event cursor cannot advance safely");return b}function s(a,b,c,d=q){if(!Number.isSafeInteger(b)||b<0)throw Error("runtime event durable tail sequence is invalid");if(!Number.isSafeInteger(c)||c<0)throw Error("runtime event registry cursor is invalid");let e=0===b&&c>0,f=e?c:b,g=r(f);if(c!==b)try{d({kind:"runtime-event-cursor-recovery",sessionId:a.slice(0,160),durableTailSeq:b,registryCursor:c,chosenNextSeq:g,action:e?"use-registry-cursor":"use-durable-tail",relation:e?"durable-ledger-empty":c<b?"registry-behind":"registry-ahead"})}catch{}return f}function t(a){if(!a||"object"!=typeof a||Array.isArray(a)||!Number.isSafeInteger(a.seq)||a.seq<=0)return!1;let b=a=>"string"==typeof a&&a.length>0;switch(a.kind){case"turn-started":return b(a.turnId);case"delta":return b(a.turnId)&&"string"==typeof a.text;case"item":return(b(a.turnId)||null===a.turnId)&&("started"===a.phase||"completed"===a.phase)&&Object.hasOwn(a,"item");case"voice-chunk":{if(!b(a.turnId))return!1;let c=(0,j.Im)([a.delivery])[0];return c?.ready===!0&&c.sourceTurnId===a.turnId&&void 0!==c.streamChunk&&(0,h.isDeepStrictEqual)(c,a.delivery)}case"turn-ended":return b(a.turnId)&&("completed"===a.status||"interrupted"===a.status||"error"===a.status);case"attention":return b(a.id)&&b(a.method)&&Object.hasOwn(a,"attention");case"attention-resolved":return b(a.id)&&("answered"===a.resolution||"host-restarted"===a.resolution||"server-resolved"===a.resolution||"turn-ended"===a.resolution);case"limits":return Object.hasOwn(a,"snapshot");case"realtime-delivery-progress":return b(a.deliveryId)&&b(a.digest)&&Number.isSafeInteger(a.responseIndex)&&a.responseIndex>=0&&Number.isSafeInteger(a.offset)&&a.offset>=0;case"realtime-delivery-acknowledged":return b(a.deliveryId)&&b(a.digest);case"session-status":return("active"===a.status||"idle"===a.status||"unhosted"===a.status||"dead"===a.status)&&(void 0===a.activeFlags||Array.isArray(a.activeFlags)&&a.activeFlags.every(b));default:return!1}}class u{constructor(a=(0,i.BQ)("structured-host-events")){this.directory=a,this.tails=new Map}load(a){let b,c,d,f,g=this.filename(a);try{b=e().statSync(g)}catch(a){if("ENOENT"===a.code)return p(g),[];throw a}let h=m(b),i=(f=(d=l()).get(g))&&n(f.identity,h)?(d.delete(g),d.set(g,f),f.events.slice()):null;if(i)return i;try{c=e().readFileSync(g,"utf8")}catch(a){if("ENOENT"===a.code)return[];throw a}let j=[],k=c.split("\n"),q=c.endsWith("\n");for(let[a,b]of k.entries()){let c;if(!b&&a===k.length-1&&q)continue;if(!b)throw Error("runtime event ledger contains an empty record");try{c=JSON.parse(b)}catch{if(a===k.length-1&&!q)break;throw Error("runtime event ledger contains malformed JSON")}if(!t(c)){if(a===k.length-1&&!q)break;throw Error("runtime event ledger contains an invalid event")}let d=j.at(-1);if(d&&c.seq!==d.seq+1)throw Error(`runtime event ledger sequence gap after ${d.seq}`);j.push(c)}try{let a=m(e().statSync(g));n(h,a)&&o(g,a,j)}catch{}return j}append(a,b){if(!t(b))throw Error("runtime event ledger append event is invalid");e().mkdirSync(this.directory,{recursive:!0,mode:448});let c=this.filename(a),d=e().openSync(c,"a+",384);try{(511&e().fstatSync(d).mode)!=384&&e().fchmodSync(d,384);let f=this.tails.get(a);if(f&&e().fstatSync(d).size===f.bytes||(f=this.reconcileTail(a,c,d)),f.lastSeq>0&&b.seq!==f.lastSeq+1)throw Error(`runtime event ledger sequence gap after ${f.lastSeq}`);let g=`${JSON.stringify(b)}
127
+ `;e().writeSync(d,g),e().fsyncSync(d);let h={lastSeq:b.seq,bytes:f.bytes+Buffer.byteLength(g)};this.tails.set(a,h);let i=l().get(c),j=e().fstatSync(d);i&&i.identity.size===f.bytes&&(i.events.at(-1)?.seq??0)===f.lastSeq?o(c,m(j),[...i.events,b]):p(c)}finally{e().closeSync(d)}}reconcileTail(a,b,c){if(0===e().fstatSync(c).size){let b={lastSeq:0,bytes:0};return this.tails.set(a,b),b}let d=this.load(a),f=e().fstatSync(c).size,g=Buffer.allocUnsafe(1);if(!(f>0&&1===e().readSync(c,g,0,1,f-1)&&10===g[0])){let a,d=e().readFileSync(b,"utf8"),f=d.lastIndexOf("\n")+1,g=d.slice(f);try{a=JSON.parse(g)}catch{a=null}t(a)?e().writeSync(c,"\n"):e().ftruncateSync(c,Buffer.byteLength(d.slice(0,f)))}let h=e().fstatSync(c),i={lastSeq:d.at(-1)?.seq??0,bytes:h.size};return this.tails.set(a,i),o(b,m(h),d),i}filename(a){return g().join(this.directory,`${encodeURIComponent(a)}.jsonl`)}}},43271:(a,b,c)=>{c.d(b,{reconcileStructuredSpawnReplay:()=>X,sh:()=>aj,LH:()=>_});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(57726),k=c(53133),l=c(85881),m=c(4351),n=c(31973),o=c(14648),p=c(91836),q=c(50920),r=c(14607);let s="Pinned account quota is exhausted — queued until {retryAt}";var t=c(36454),u=c(92233),v=c(37788),w=c(70154),x=c(89364),y=c(59988),z=c(6568),A=c(2542),B=c(88602),C=c(29966),D=c(33353),E=c(53812),F=c(65862),G=c(13818),H=c(873),I=c(71256),J=c(36855),K=c(53835),L=c(88417);let M="llv-read-only-stage";async function N(a,b){return"codex"===a?{kind:"admissible",basis:"current",stale:!1,retryAt:null}:(0,l.Kw)(await (0,t.nn)(i().join(b.home,".credentials.json"),Date.now,600))}async function O(a,b={}){let c,d=b.attempts??3,e=b.sleep??(a=>new Promise(b=>setTimeout(b,a)));for(let b=1;b<=d;b+=1)try{return await a()}catch(a){if(!(0,B.o7)(a))throw a;c=a,b<d&&await e(250*b)}throw c}let P=new Set(["delivered","turn-started","steered"]),Q=new Set(["failed","rejected","uncertain","interrupted"]);class R extends Error{constructor(a){super(a),this.name="StructuredInitialMessageTimeoutError"}}async function S(a){if(a.pid===process.pid||null===a.startIdentity)return!1;let b=()=>u.B.processIdentity(a.pid)===a.startIdentity;if(!b())return!0;for(let c of["SIGTERM","SIGKILL"]){if(!(0,v.v)(a.pid,c))try{process.kill(a.pid,c)}catch{break}for(let a=0;a<20;a+=1){if(!b())return!0;a+1<20&&await new Promise(a=>setTimeout(a,25))}}return!b()}function T(a){if((0,B.o7)(a))return(0,C.lN)("structured spawn runtime host");let b=a instanceof Error?a.message:"structured spawn failed";return(0,y.j)(b).replace(/\s+/g," ").trim().slice(0,240)||"structured spawn failed"}function U(a,b){let c=a?.receipt.status;return c&&Q.has(c)?a.receipt.reason??`${b} ended as ${c}`:null}async function V(a,b,c={}){let d,e=c.now??Date.now,f=c.sleep??(a=>new Promise(b=>setTimeout(b,a))),g=c.timeoutMs??3e4,h=c.pollMs??250,i=e()+g,j=null;for(;;){let c=null;try{c=await a.operationStatus(b,{currentRetryLeaf:!0}),d=c?.receipt.status??d,j=null}catch(a){j=a instanceof Error?a.message:"runtime status read failed"}let k=c?.receipt.status??d;if(k&&P.has(k))return;if(k&&Q.has(k))throw Error(c?.receipt.reason??`structured initial message ended as ${k}`);if(e()>=i){if(j)throw new R(`structured initial message status remained unavailable for ${g}ms: ${j}`);throw new R(`structured initial message remained ${k??"pending"} for ${g}ms`)}await f(Math.min(h,i-e()))}}async function W(a,b){let c=0;for(;;){let d=await a.effectBatch(["runtime.spawn"],c);for(let a of d)if(a.payload.operationId===b)return a.payload;if(d.length<100)return null;let e=Math.max(...d.map(a=>a.eventSeq));if(!Number.isSafeInteger(e)||e<=c)throw Error("structured spawn replay effect page did not advance");c=e}}async function X(a,b,c,d={}){let e=b.readOnlySnapshot().receipts[a];if(!e)throw Error("unknown spawn receipt");if("completed"===e.state)return{...e,initialMessage:"delivered"};if("conflicted"===e.state)return{...e,initialMessage:"failed"};let[f,g,h]=await Promise.all([c.operationStatus(`spawn_message_${a}`,{currentRetryLeaf:!0}).catch(()=>null),c.operationStatus(a,{currentRetryLeaf:!0}).catch(()=>null),c.snapshot().catch(()=>null)]),i=f,j=!1;if(!i&&"path-pending"===e.state&&e.artifactPath){let d=await W(c,a).catch(()=>(j=!0,null)),f="string"==typeof d?.prompt?d.prompt:null,g=(0,L.kW)(d?.images??[],16);if(null!==f&&null!==g&&d?.conversationId===e.conversationId&&d.cwd===e.cwd&&(f.trim()||g.length)){let d=af(e,b),h=await (0,I.enqueueStructuredMessage)({path:e.artifactPath,conversationId:e.conversationId,clientMessageId:`spawn_${a}`,operationId:`spawn_message_${a}`,text:f,imageRefs:g,...d?{origin:d}:{}},{client:()=>c,registry:()=>b,enabled:()=>!0});h?.ok&&"held"!==h.outcome&&(i=await c.operationStatus(`spawn_message_${a}`,{currentRetryLeaf:!0}).catch(()=>null))}}let k=!!(i&&i.receipt.conversationId===e.conversationId&&P.has(i.receipt.status)),l=!!(e.artifactPath&&(0,w.x_)(e.artifactPath,e.engine));if(k||l){let c=h?.sessions.find(a=>a.conversationId===e.conversationId),d=c&&c.sessionKey.engine===e.engine&&c.cwd===e.cwd&&"string"==typeof c.artifactPath?c:null,f=d?{key:d.sessionKey,artifactPath:d.artifactPath,cwd:e.cwd,accountId:e.accountId,launchProfile:e.launchProfile,status:"dead"===d.host||"unhosted"===d.host?"dead":"running"===d.turn?"live":"idle",host:null,structuredHost:"codex-app-server"===d.hostKind||"claude-broker"===d.hostKind?{kind:d.hostKind,endpoint:"runtime:reconciled",process:null,eventCursor:d.revision,protocolVersion:null,writerClaimEpoch:0,activeTurnRef:d.activeTurnId,pendingAttention:d.attentionIds,activeFlags:[]}:null,claimEpoch:0,claimOwner:null,pendingAction:null}:void 0,g=b.recoverStructuredSpawnFromEvidence(a,f);if("settled"===g.kind)return{...g.receipt,initialMessage:"delivered"}}let m=i?.receipt.status,o=h?.sessions.find(a=>a.conversationId===e.conversationId&&a.cwd===e.cwd&&(!e.key||(0,n.pp)(a.sessionKey)===(0,n.pp)(e.key)))??null,p=o&&("registering"===o.host||"hosted"===o.host||"recovering"===o.host)?o:null,q=i?Date.parse(i.receipt.at):NaN,r=Number.isFinite(q)?q:Date.parse(e.createdAt),s=(d.now??Date.now)()-r,t=null!==h&&g?.receipt.conversationId===e.conversationId&&"delivered"===g.receipt.status&&null===p,u=d.timeoutMs??(t?3e4:3e5),v=U(i,"structured initial message")??U(g,"structured spawn");if(!v&&s>=u&&(v=p?`structured spawn durable setup remained incomplete for ${u}ms`:j?`structured spawn runtime effect history remained unavailable for ${u}ms`:h?`structured spawn runtime snapshot has no session after ${u}ms`:`structured spawn durable setup remained unconfirmed for ${u}ms`),v){v=v.slice(0,240);let f=b.failStructuredSpawn(a,v);if(!f.claimed){let c=f.receipt??b.readOnlySnapshot().receipts[a]??e;return{...c,initialMessage:"completed"===c.state?"delivered":"failed"}}let h=g?.receipt.status;if("pending"===h||"queued"===h||"delivering"===h)try{await c.transitionOperation(a,"failed",{reason:v})}catch(b){console.error("[spawn] runtime operation failure did not settle during reconciliation",{launchId:a,error:T(b)})}let i=f.cleanup;if(i){let c=!1,e=b.readOnlySnapshot().entries[(0,n.pp)(i.key)];if(i.releaseRegisteredHost&&e?.structuredHostOperationId===a)try{c=await (d.releaseHost??H.releaseStructuredDeliveryHost)(i.key)}catch(b){console.error("[spawn] registered host release failed during reconciliation",{launchId:a,error:T(b)})}if(!c&&i.process){let c=b.readOnlySnapshot().entries[(0,n.pp)(i.key)];if(i.releaseRegisteredHost?c?.structuredHostOperationId===a:c?.structuredHostOperationId==null&&c.artifactPath===f.receipt?.artifactPath&&"dead"===c.status&&null===c.claimOwner)try{await (d.terminateHostProcess??S)(i.process)||i.process.pid===process.pid||console.error("[spawn] staged host termination remained unconfirmed",{launchId:a,pid:i.process.pid})}catch(b){console.error("[spawn] staged host termination failed during reconciliation",{launchId:a,error:T(b)})}}}return{...b.readOnlySnapshot().receipts[a]??e,initialMessage:"failed"}}let x=b.readOnlySnapshot().receipts[a]??e;return{...x,initialMessage:"failed"===x.state||void 0!==m&&Q.has(m)?"failed":k||"completed"===x.state?"delivered":"queued"===m||"pending"===m||"delivering"===m?"queued":"pending"}}function Y(a){let b=a.queuedPinnedSpawn;return("structured"===a.transport?"starting"!==a.state||a.key||a.pane:"tmux"!==a.transport||a.key||("starting"!==a.state||a.pane)&&("pane-bound"!==a.state&&"host-verified"!==a.state||!a.pane))||"launch"!==a.purpose||!a.accountPin||!a.accountId||b?.accountId!==a.accountId||b.spec.engine!==a.engine||b.spec.cwd!==a.cwd?null:b}function Z(a,b,c){return"structured"===b.transport?a.failStructuredSpawn(b.launchId,c).receipt??b:(a.failSpawn(b.launchId,c),a.readOnlySnapshot().receipts[b.launchId]??b)}async function $(a,b,c,d){let f,g,h=Y(c),i=(d.now??Date.now)();if(!h||Date.parse(h.retryAt)>i)return c;let k="tmux"===c.transport?a.claimTmuxSpawnActuation(c.launchId):a.claimStartingStructuredSpawn(c.launchId);if(!k.claimed||!k.receipt.admissionOwner)return k.receipt;let l=Y(k.receipt);if(!l)return Z(a,k.receipt,"queued pinned spawn lost its durable admission payload");try{if((f=(d.resolveSpawnAccount??((a,b)=>j.lD.resolveSpawn(a,b)))(c.engine,l.accountId)).engine!==c.engine||f.accountId!==l.accountId)throw Error("queued pinned spawn resolved a different account");g="tmux"===c.transport&&k.receipt.pane?{kind:"admissible",basis:"current",stale:!1,retryAt:null}:await (d.resolvePinnedSpawnAdmission??N)(c.engine,f)}catch(b){return Z(a,k.receipt,T(b))}if("retry-at"===g.kind){var m;let b,d=Date.parse(g.retryAt);if(!Number.isFinite(d)||d<=i)return Z(a,k.receipt,"pinned account retry deadline did not advance");let e=new Date(d).toISOString(),f=a.queuePinnedSpawn(c.launchId,{...l,retryAt:e},(m=l.locale,("string"==typeof(b="uk"===m?"Квоту закріпленого акаунта вичерпано — запуск у черзі до {retryAt}":s)?b:s).replace("{retryAt}",e)));return f.admissionOwner?a.releaseSpawnActuation(f.launchId,f.admissionOwner).receipt:f}if("unavailable"===g.kind)return Z(a,k.receipt,`pinned account is unavailable: ${g.reason}`);let n=null,o=[];try{if("tmux"===c.transport){let b,e=l.imageRefs.length?(b=(0,J.PF)(),l.imageRefs.map(a=>({base64:b.read(a).toString("base64"),mime:a.mime}))):[],f=(0,x.Am)(l.prompt,e);o=f.imagePaths,await (d.spawnTmuxAgent??x.Tk)(l.spec,f.payload,k.receipt);let g=a.readOnlySnapshot().receipts[c.launchId];(g?.state==="prompt-delivered"||g?.state==="host-verified")&&a.markSpawnPathPending(c.launchId)}else{if(!b)throw Error((0,C.lN)("structured spawn runtime host"));n=await (d.spawnStructuredConversation??aj)({engine:c.engine,receipt:k.receipt,spec:l.spec,account:f,prompt:l.prompt,imageRefs:l.imageRefs,registry:a,client:b})}}catch(d){if("tmux"===c.transport){a.failSpawn(c.launchId,T(d));let b=a.readOnlySnapshot().receipts[c.launchId]??k.receipt;if(b.pane||(0,x.IJ)(o),b.queuedPinnedSpawn&&b.admissionOwner)return a.releaseSpawnActuation(b.launchId,b.admissionOwner).receipt;return b}let b=a.readOnlySnapshot().receipts[c.launchId];throw b?.queuedPinnedSpawn&&b.admissionOwner&&a.releaseSpawnActuation(b.launchId,b.admissionOwner),d}if(l.parentArtifactPath&&n?.path)try{(0,r.A6)(n.path,l.parentArtifactPath),(0,r.OA)()}catch(a){console.error("[spawn] queued handoff lineage persistence failed",{launchId:c.launchId,conversationId:c.conversationId,error:a})}if(n?.path&&b&&e().existsSync(n.path))try{await (d.publishFilesRevision??K.G)(b)}catch(a){console.error("[spawn] queued transcript materialization refresh failed",{launchId:c.launchId,conversationId:c.conversationId,error:a})}return a.readOnlySnapshot().receipts[c.launchId]??k.receipt}async function _(a,b,c={}){let d=c.now??Date.now,e=c.timeoutMs??3e5,f=c.actuationCap??50,g=c.reconcile??X,h=a.readOnlySnapshot(),i=[],j=[],k=0;for(let l of Object.values(h.receipts)){if(k>=f)break;if("completed"===l.state||"failed"===l.state||"conflicted"===l.state)continue;let m=Y(l);if(m){if(Date.parse(m.retryAt)>d()||"structured"===l.transport&&!b)continue;k+=1;try{let d=function(a,b){if("structured"!==b.transport||"launch"!==b.purpose||"starting"!==b.state&&"path-pending"!==b.state||"pending"!==b.artifactLifecycle)return null;let c=b.key?a.entries[(0,n.pp)(b.key)]:null;return c?.structuredHost?.process||c?.claimOwner?null:Object.values(a.receipts).some(a=>a.launchId!==b.launchId&&"structured"===a.transport&&"launch"===a.purpose&&"failed"!==a.state&&"conflicted"!==a.state&&(a.supersedes?.conversationId===b.conversationId||!!b.requestDigest&&a.requestDigest===b.requestDigest&&a.createdAt>b.createdAt))?"structured spawn was superseded by a newer launch of the same request":null}(h,l),e=d?Z(a,l,d):await $(a,b,l,c);"failed"===e.state||"conflicted"===e.state?i.push(l.launchId):"completed"===e.state&&j.push(l.launchId)}catch(a){console.error("[reaper] queued pinned spawn recovery failed",{launchId:l.launchId,error:a})}continue}let o=Date.parse(l.createdAt);if(!(!Number.isFinite(o)||d()-o<e)){if("tmux"===l.transport){if(!("starting"===l.state&&!l.key&&!l.pane&&!l.admissionOwner))continue;k+=1;try{a.failSpawn(l.launchId,`tmux spawn interrupted before durable queue publication or pane binding: ${l.launchId}`);let b=a.readOnlySnapshot().receipts[l.launchId];(b?.state==="failed"||b?.state==="conflicted")&&i.push(l.launchId)}catch(a){console.error("[reaper] stale tmux spawn reconciliation failed",{launchId:l.launchId,error:a})}continue}if("structured"===l.transport&&b){k+=1;try{let c=await g(l.launchId,a,b,{now:d,timeoutMs:e});"failed"===c.state?i.push(l.launchId):"completed"===c.state&&j.push(l.launchId)}catch(a){console.error("[reaper] stale structured spawn reconciliation failed",{launchId:l.launchId,error:a})}}}}return{examined:k,terminalized:i,recovered:j}}async function aa(a,b,c,d,e){let f=e?.key??b.key,g=e?.artifactPath??b.artifactPath;f&&g&&await a.append({scope:{type:"session",id:b.conversationId},kind:"session-status",producer:{kind:"codex"===f.engine?"codex-app-server":"claude-broker",eventKey:d},payload:{conversationId:b.conversationId,sessionKey:f,hostKind:"codex"===f.engine?"codex-app-server":"claude-broker",host:"dead",turn:"idle",provenance:"structured",accountId:c.accountId,parentConversationId:b.parentConversationId,cwd:c.cwd,artifactPath:g,capabilities:{steer:"codex"===f.engine,structuredAttention:!0,imageInput:(0,J.ki)(f.engine,!1),runtimeSettings:(0,F.wL)(f.engine)},activeTurnId:null}})}function ab(a,b){if("resume-successor"!==b.purpose)return null;let c=a.conversation(b.conversationId),d=c?.generations.find(a=>a.path===b.resumeSourcePath)??c?.generations.at(-1);return d?{key:{engine:b.engine,sessionId:d.id},artifactPath:d.path}:null}async function ac(a,b){let c=a.spec.launchProfile??{},d=ad(a),f=d?a.registry.readOnlySnapshot().entries[(0,n.pp)({engine:a.engine,sessionId:d})]?.structuredHost?.eventCursor:void 0;if(void 0!==f&&(!Number.isSafeInteger(f)||f<0))throw Error("structured resume event cursor is invalid");let h=function(a,b,c){let d={...b,...c?{LLV_SPAWN_CAPABILITY:c}:{}};if(!a)return{env:d,codex:{sandbox:"danger-full-access"},host:{},scratchDirectory:null,cleanup:()=>{}};let f=(void 0)??(0,q.BQ)("scratch");e().mkdirSync(f,{recursive:!0,mode:448});let h=e().mkdtempSync(i().join(f,"llv-read-only-stage-"));try{e().chmodSync(h,448);let a=i().join(h,"tmp");e().mkdirSync(a,{mode:448});let c=`permissions.${M}={extends=":read-only",filesystem={${JSON.stringify(h)}="write"}}`,f=()=>e().rmSync(h,{recursive:!0,force:!0});return{env:{...d,TMPDIR:a,GH_CONFIG_DIR:function(a){if(a.GH_CONFIG_DIR)return a.GH_CONFIG_DIR;let b=a.HOME||g().homedir();return i().join(a.XDG_CONFIG_HOME||i().join(b,".config"),"gh")}(b)},codex:{permissionProfile:M,permissionProfileConfig:c},host:{forwardGitHubConfig:!0,releaseCleanup:f},scratchDirectory:h,cleanup:f}}catch(a){throw e().rmSync(h,{recursive:!0,force:!0}),a}}(!0===c.readOnly,a.account.env,b),j=h.env;if("codex"===a.engine){let b={cwd:a.spec.cwd,codexHome:a.account.home,fileAuthCredentials:"managed"===a.account.kind,model:c.model??void 0,effort:c.effort??void 0,allowSubagents:c.allowSubagents,mcpServers:c.mcpServers,plugins:c.plugins,...h.codex,...h.host,approvalPolicy:c.permissionMode??void 0,initialEventCursor:f,env:j};return d?await A.o.adopt(d,b):await A.o.start(b)}let l=function(a,b=e().existsSync){let c=ab(a.registry,a.receipt);return c&&function(a,b=e().existsSync){return!!a.artifactPath&&b(a.artifactPath)}(c,b)?{kind:"resume",sessionId:c.key.sessionId}:{kind:"fresh",sessionId:c?.key.sessionId??(a.spec.transcript?i().basename(a.spec.transcript,".jsonl"):void 0)}}(a),o={cwd:a.spec.cwd,claudeConfigDir:a.account.home,claudeProjectsDir:a.account.transcriptRoot,spawnPolicyBaseSettingsPath:function(a,b=k.ZK){return"managed"===a.kind?b():null}(a.account),allowSubagents:c.allowSubagents,mcpServers:c.mcpServers,mcpStatePath:"managed"===a.account.kind?i().join(a.account.home,".claude.json"):i().join(i().dirname(a.account.home),".claude.json"),readOnly:!0===c.readOnly,model:c.model??void 0,effort:c.effort??void 0,permissionMode:(0,m.A5)(c),initialEventCursor:f,env:j,...h.host};return"resume"===l.kind?await z.s7.adopt(l.sessionId,o):await z.s7.start({...o,...l.sessionId?{sessionId:l.sessionId}:{}})}function ad(a){return ab(a.registry,a.receipt)?.key.sessionId??null}async function ae(a,b,c,d,e,f="unhosted"){return"codex"===b.engine?await (0,G.WF)(a,b,c,d,e,f):await (0,G.n$)(a,b,c,d,e,f)}function af(a,b){if(0===a.delegationDepth)return{kind:"operator"};if(null===a.delegationDepth||void 0===a.delegationDepth)return;let c=a.parentConversationId?b.conversation(a.parentConversationId):null,d=(0,E.S)(c?.agentRole??void 0);return{kind:"agent",...d?{role:d}:{}}}async function ag(a,b){if(!a.prompt.trim()&&!a.imageRefs?.length)return;let c=af(a.receipt,a.registry),d=await (0,I.enqueueStructuredMessage)({path:b,conversationId:a.receipt.conversationId,clientMessageId:`spawn_${a.receipt.launchId}`,operationId:`spawn_message_${a.receipt.launchId}`,text:a.prompt,imageRefs:a.imageRefs,...c?{origin:c}:{}},{client:()=>a.client,registry:()=>a.registry,enabled:()=>!0});if(!d?.ok){let a=d?.error??"structured spawn first-message delivery was unavailable";if(d?.transportUncertain)throw new R(a);throw Error(a)}if("held"===d.outcome)return"held";if("delivered"!==d.outcome){var e,f;let b,c;await V(a.client,d.operationId),e=a.registry,f=a.receipt.launchId,b=`spawn_${f}`,(c=Object.values(e.readOnlySnapshot().heldDeliveries).find(a=>a.clientMessageId===b))&&"delivered"!==c.state&&e.recordDeliveryOutcome(c.id,"delivered")}}async function ah(a){let b;if(!a)return null;try{b=await a.health()}catch{return null}return"dead"!==b.status?null:a.terminalExitReason?.()??"structured spawn host exited before its first message"}async function ai(a,b){await a?.release();let c=null;try{await b.unregister()}catch(a){c=a}if(b.stopPersistence(),c)throw c}async function aj(a,b={}){var c,d,e,f,g;let h=b.startHost??ac,i=b.bindHost??ae,j=b.publishHost??((a,b,c)=>(0,H.xq)({key:a,host:b},c)),k=b.deliverFirst??ag,l=b.processIdentity??(()=>({pid:process.pid,startIdentity:u.B.processIdentity(process.pid)})),m=a.receipt.launchId,q=ad(a),r=q?(0,n.ce)(a.engine,q):null,s=ab(a.registry,a.receipt),t=null,v={stopPersistence:()=>{},unregister:async()=>{}},w=null,x=null,y=!1,z=!1,A=!1,B=null,C=null,E=()=>{null!==B&&clearTimeout(B),B=null,C=null},F=a=>C?Promise.race([a,C]):a;try{let e;"claude"===a.engine&&"managed"===a.account.kind&&(0,o.DV)(a.account.home,a.spec.cwd);let f=a.imageRefs??[],g=a.prompt.trim()||f.length?(0,L.rM)(a.prompt,f):null;await O(()=>a.client.command({kind:"spawn",operationId:m,idempotencyKey:m,conversationId:a.receipt.conversationId,engine:a.engine,cwd:a.spec.cwd,prompt:g?.content.text??"",...g?.content.images.length?{images:g.content.images}:{},...g?{contentDigest:g.contentDigest}:{},accountId:a.account.accountId,parentConversationId:a.receipt.parentConversationId,..."resume-successor"===a.receipt.purpose?{sessionId:ad(a)}:{}}));let q=a.registry.rotateSpawnCapabilityForReceipt(a.receipt.launchId),s=r?a.registry.readOnlySnapshot().entries[(0,n.pp)(r)]:null;if(s?.structuredHost&&(x=a.registry.claimStructuredHost(r,l(),{allowUnhosted:!0}),!x?.claimOwner))throw z=!0,Error("structured resume host claim is unavailable");let u=b.durableSetupTimeoutMs??3e5;C=new Promise((a,b)=>{B=setTimeout(()=>{A=!0,b(Error(`structured spawn durable host setup timed out after ${u}ms`))},u),B.unref?.()});let D=h(a,q);D.then(async b=>{if(A)try{await b.release()}catch(b){console.error("[spawn] late structured host could not be released after setup timeout",{launchId:a.receipt.launchId,error:T(b)})}},()=>{}),t=await F(D);let G=function(a,b,c){if("codex"===a){let a=b.identity;if(!a.threadId)throw Error("structured Codex spawn returned no thread identity");if(!a.path)throw Error("structured Codex spawn feature gap: app-server returned no transcript path");let c=(0,n.ce)("codex",a.threadId);if(!c)throw Error("structured Codex spawn returned an invalid thread identity");return{key:c,path:a.path}}let d=b.identity;if(!d.sessionId)throw Error("structured Claude spawn returned no session identity");let e=(0,n.ce)("claude",d.sessionId);if(!e)throw Error("structured Claude spawn returned an invalid session identity");return{key:e,path:c.spec.transcript??(0,p.eV)(c.spec.cwd,d.sessionId,c.account.transcriptRoot)}}(a.engine,t,a);if(w=G.key,r&&(0,n.pp)(w)!==(0,n.pp)(r))throw Error("structured resume returned a different session identity");let H=x?.claimEpoch??0,I=x?.claimOwner??null,J=a.registry.stageStructuredSpawn(a.receipt.launchId,{key:w,artifactPath:G.path,cwd:a.spec.cwd,accountId:a.account.accountId,launchProfile:a.spec.launchProfile,status:"unhosted",host:null,structuredHost:function(a,b=0,c=0){return{kind:"codex"===a?"codex-app-server":"claude-broker",endpoint:"stdio:pending",process:null,eventCursor:b,protocolVersion:null,writerClaimEpoch:c,activeTurnRef:null,pendingAttention:[],activeFlags:[]}}(a.engine,x?.structuredHost?.eventCursor??0,H),claimEpoch:H,claimOwner:I,pendingAction:"spawn"});if("conflict"===J.kind)throw Error(`structured spawn registry conflict: ${J.code}`);let K=x?J.entry:a.registry.claimStructuredHost(w,l(),{allowUnhosted:!0});if(!K?.claimOwner)throw Error("structured spawn host claim is unavailable");y=null!==x,v.stopPersistence=await F(i(a.registry,w,t,K.claimOwner,K.claimEpoch));let M=async()=>{if(A)return!1;let b=a.registry.readOnlySnapshot(),c=b.receipts[a.receipt.launchId],d=b.entries[(0,n.pp)(w)];return!!(c&&"completed"!==c.state&&"failed"!==c.state&&"conflicted"!==c.state&&d?.structuredHostOperationId===a.receipt.launchId)};v.unregister=await F(j(w,t,M));try{e=await F(k(a,G.path))}catch(g){let b;if(!(g instanceof R))throw g;let f=await ah(t);if(f)throw Error(f);c=a.registry,d=a.receipt.launchId,(b=Object.values(c.readOnlySnapshot().heldDeliveries).find(a=>a.clientMessageId===`spawn_${d}`))&&"delivered"!==b.state&&c.recordDeliveryOutcome(b.id,"delivery-uncertain",g.message),e="held"}if("held"===e)return E(),a.registry.releaseStructuredSpawnAdmissionOwner(a.receipt.launchId,a.receipt.admissionOwner??l()),{ok:!0,target:null,path:G.path,..."claude"===a.engine?{effectivePermissionMode:a.spec.launchProfile?.permissionMode??"default"}:{},launchId:a.receipt.launchId,conversationId:a.receipt.conversationId,launched:!0,retrySafe:!1,initialMessage:"queued",state:"path-pending",transport:"structured"};await F(O(()=>a.client.transitionOperation(m,"delivered")));let N=a.registry.finalizeStructuredSpawn(a.receipt.launchId);if("conflict"===N.kind)throw Error(`structured spawn registry conflict: ${N.code}`);return E(),{ok:!0,target:null,path:G.path,..."claude"===a.engine?{effectivePermissionMode:a.spec.launchProfile?.permissionMode??"default"}:{},launchId:a.receipt.launchId,conversationId:N.conversation.id,launched:!0,retrySafe:!1,initialMessage:"delivered",state:"settled",transport:"structured"}}catch(k){E();let b=T(k);await a.client.transitionOperation(m,"failed",{reason:b}).catch(()=>{}),!t&&k instanceof D.EY&&(t=k.host,r&&x?.claimOwner&&(w=r,v.stopPersistence=await i(a.registry,r,t,x.claimOwner,x.claimEpoch,"dead")));try{await ai(t,v)}catch{throw k}let c=null,d=s;if(w){let b=a.registry.readOnlySnapshot().entries[(0,n.pp)(w)];b&&(c=b,d={key:w,artifactPath:b.artifactPath})}else s&&(c=a.registry.readOnlySnapshot().entries[(0,n.pp)(s.key)]??null);"string"==typeof c?.structuredHostOperationId&&c.structuredHostOperationId!==a.receipt.launchId&&(d=null);let h=!0;if(d&&!z)try{await aa(a.client,a.receipt,c??{accountId:a.account.accountId,cwd:a.spec.cwd},`structured-spawn-failed:${a.receipt.launchId}`,d)}catch{h=!1}!x||y&&h||(e=a.registry,f=x,g=h,f.claimOwner&&f.structuredHost&&(g&&e.setStructuredHostClaimed(f.key,{...f.structuredHost,endpoint:"stdio:released",process:null,activeTurnRef:null,pendingAttention:[],activeFlags:[]},"dead",f.claimOwner,f.claimEpoch,!0)||e.releaseStructuredHostClaim(f.key,f.claimOwner,f.claimEpoch)));let j="launch"===a.receipt.purpose;throw(h||j)&&(w?a.registry.failStructuredSpawn(a.receipt.launchId,b):a.registry.failSpawn(a.receipt.launchId,b)),k}}},44123:(a,b,c)=>{c.d(b,{e4:()=>e,sb:()=>f,u1:()=>d});let d="oauth-rate-limited",e="oauth-reauthentication-required",f=512},44237:(a,b,c)=>{c.d(b,{iD:()=>v,Y:()=>u,C$:()=>s,xg:()=>x});var d=c(73024),e=c.n(d),f=c(4116),g=c(50920),h=c(24534),i=c(53174),j=c(89831);c(77598),c(76760);var k=c(31973);c(26200);let l=()=>(0,g.BQ)("session-titles.json");class m extends Error{constructor(a){super(a),this.name="TitleStoreUnreadableError"}}function n(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.key&&a.key.length>0&&(null===a.title||"string"==typeof a.title&&a.title.length>0)&&"number"==typeof a.revision&&Number.isInteger(a.revision)&&a.revision>0&&"string"==typeof a.updatedAt}let o=new WeakMap,p=new WeakMap,q=null;function r(a,b,c=!0){let d=new Map,e=new Map,f=new Map,g=new Map,j=new Map,k=new Set;for(let b of Object.values(a.conversations)){let a=[...b.generations.map(a=>a.path),...b.continuityPaths];for(let c of(f.set(b.id,a),a))d.has(c)||d.set(c,b.id);let e=b.generations.at(-1);if(e){if(c){let{project:a}=(0,i.x)({projectOwnership:b.projectOwnership,cwd:e.launchProfile.cwd,launchProfileProject:e.launchProfile.project});a&&(g.set(e.path,a),e.launchProfile.cwd&&j.set(e.path,e.launchProfile.cwd))}for(let a of b.generations)a.path!==e.path&&k.add(a.path);for(let a of b.continuityPaths)a!==e.path&&k.add(a)}}for(let b of Object.keys(a.conversationAliases)){let c=function(a,b){let c=b,d=new Set;for(;!d.has(c);){d.add(c);let b=a.conversationAliases[c];if(!b)break;c=b}return c}(a,b);if(c===b)continue;let d=e.get(c);d?d.push(b):e.set(c,[b])}let l=new Map,m=new Map;return{signature:b,snapshot:a,conversationByPath:d,aliasesByCanonical:e,ownedPathsByConversation:f,projectByPath:g,projectMetadataByPath:{get(a){let b=l.get(a);if(void 0!==b)return b??void 0;let c=j.get(a),d=g.get(a);if(!c||!d)return void l.set(a,null);let e=m.get(c);m.has(c)||(e=(0,h.ot)(c),m.set(c,e));let f=e?.project===d?{displayName:e.displayName,...e.repo?{projectRoot:e.repo}:{},...e.unresolved?{unresolved:!0}:{}}:null;return l.set(a,f),f??void 0}},archivedPaths:k}}function s(a){let b=o.get(a);if(b)return b;let c=r(a,"snapshot");return o.set(a,c),c}function t(a,b=!1){let c;try{c=a.readOnlySnapshot()}catch(a){if(b&&!(a instanceof f.Ou))throw a;return null}return s(c)}function u(a,b,c=!0){let d=w(!0,void 0===b?void 0:c?s(b):function(a){let b=p.get(a);if(b)return b;let c=r(a,"snapshot-identity",!1);return p.set(a,c),c}(b),c);for(let b of a)d(b)}function v(a){let b=w(!1,function(){let a,b=(0,g.BQ)("agent-registry.json");try{let c=e().statSync(b,{bigint:!0});a=`${b}:${c.mtimeNs}:${c.size}`}catch{return null}if(q?.signature===a)return q;try{let c=(0,f.l5)(JSON.parse(e().readFileSync(b,"utf8")));return q=r(c,a)}catch{return null}}());for(let c of a)b(c)}function w(a=!0,b,c=!0){let d=new Map((function(a=l()){try{return function(a=l()){let b,c;try{b=e().readFileSync(a,"utf8")}catch(a){if("ENOENT"===a.code)return[];throw new m(`session titles store is unreadable: ${a.message}`)}try{c=JSON.parse(b)}catch{throw new m("session titles store is not valid JSON")}if(!c||"object"!=typeof c||Array.isArray(c))throw new m("session titles store has an unexpected shape");let d=c;if(void 0!==d.version&&1!==d.version)throw new m(`session titles store schema version ${String(d.version)} is unsupported`);if(!Array.isArray(d.titles))throw new m("session titles store is missing its titles array");let f=d.titles.filter(n);if(f.length!==d.titles.length)throw new m("session titles store contains malformed records");return f}(a)}catch{return[]}})().map(a=>[a.key,a])),g=void 0===b?t((0,f.tk)()):b,h=g?.snapshot??null,o=g?.conversationByPath??new Map,p=g?.aliasesByCanonical??new Map,q=g?.ownedPathsByConversation??new Map;return b=>{if("claude"!==b.engine&&"codex"!==b.engine)return;if(b.spawn){b.renamable=!1;return}let e=o.get(b.path);!b.conversationId&&e&&(b.conversationId=e);let f=e?h?.conversations[e]:void 0,l=f?.generations.at(-1);if(l?.path===b.path&&(b.title=l.launchProfile.title??b.title,c)){b.project=(0,i.x)({projectOwnership:f?.projectOwnership,cwd:l.launchProfile.cwd,launchProfileProject:l.launchProfile.project,fallbackProject:b.project}).project??b.project;let a=g?.projectMetadataByPath.get(b.path);a&&(b.projectName=a.displayName,b.projectRoot=a.projectRoot??b.projectRoot,b.projectUnresolved=a.unresolved),f?.projectOwnership&&(b.projectOwnership={...f.projectOwnership})}if(a&&(b.renamable=function(a){var b;if("claude"!==a.engine&&"codex"!==a.engine||a.kind&&"session"!==a.kind||!(!(b=a.path).slice(b.lastIndexOf("/")+1).startsWith("agent-")&&!b.includes("/subagents/")))return!1;let c=void 0===a.mtime?void 0:1e3*a.mtime;return!("codex"===a.engine&&(0,j.ET)(a.path,a.size,c))}(b)),d.size>0){let a=b.conversationId?p.get(b.conversationId)??[]:[],c=b.conversationId?q.get(b.conversationId)??[]:[];!function(a,b,c=[],d=[]){let e=function(a,b,c=[],d=[]){for(let e of function(a,b=[],c=[]){let d=[],e=new Set,f=a=>{e.has(a)||(e.add(a),d.push(a))};for(let c of(a.conversationId?.startsWith("conversation_")&&f(`conversation:${a.conversationId}`),b))c.startsWith("conversation_")&&c!==a.conversationId&&f(`conversation:${c}`);let g=b=>{if("claude"===a.engine||"codex"===a.engine){let c=(0,k.sz)(a.engine,b);c&&f(`uuid:${(0,k.pp)(c)}`)}f(`path:${b}`)};for(let b of(g(a.path),c))g(b);return d}(a,c,d)){let a=b.get(e);if(a)return a}return null}(a,b,c,d);e&&(a.titleRevision=e.revision,null!==e.title&&(void 0===a.autoTitle&&(a.autoTitle=a.title),a.title=e.title))}(b,d,a,c)}}}function x(a=!1){let b=t((0,f.tk)(),a);return b?{projectByPath:b.projectByPath,projectMetadataByPath:b.projectMetadataByPath,archivedPaths:b.archivedPaths}:{projectByPath:new Map,projectMetadataByPath:new Map,archivedPaths:new Set}}},45481:(a,b,c)=>{function d(a){return"string"==typeof a?a:""}function e(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function f(a){return"string"==typeof a?a:(Array.isArray(a)?a.map(e):[]).map(a=>d(a.text)).filter(Boolean).join("\n")}function g(a){return/^\[Request interrupted by user(?: for tool use)?\]$/.test(a)}function h(a){let b="string"==typeof a.origin?a.origin:d(e(a.origin).kind);if("human"===b||"peer"===b||"coordinator"===b)return!1;let c=d(a.promptSource);if("typed"===c||"sdk"===c)return!1;if(!0===a.isCompactSummary||"interruptedMessageId"in a||"command"===c||"system"===c||"task"===b||"task-notification"===b||!0===a.isMeta)return!0;let h=f(e(a.message).content).trim();return g(h)||/^<local-command-caveat>\s*Caveat:[\s\S]*<\/local-command-caveat>$/.test(h)||/^<task-notification\b[^>]*>[\s\S]*<\/task-notification>$/.test(h)}c.d(b,{fR:()=>h,hB:()=>f,r1:()=>g})},45899:(a,b,c)=>{c.d(b,{Re:()=>h,j5:()=>g,mu:()=>f});var d=c(38849);let e=[".trajectory.",".checkpoint.",".acp-stream.",".deleted.",".bak"];function f(a){return!!a.endsWith(".jsonl")&&!e.some(b=>a.includes(b))}function g(a){return"message"===a.type?(0,d.xK)(a.message):null}function h(a){let b=g(a);return b&&"assistant"===b.role?"openclaw"===(0,d.r$)(b.provider)?null:b:null}},47985:(a,b,c)=>{c.d(b,{Eu:()=>h,HL:()=>j,zy:()=>m});var d=c(77598),e=c(73024),f=c.n(e),g=c(94284);let h=131072,i=(0,g.E)("scanner-head-v1");function j(a){return(0,d.createHash)("sha256").update(a).digest("base64url")}function k(a){let b=0;for(let c of a)10===c&&(b+=1);return b}function l(a,b){let c=Buffer.from(a);return{value:{bytes:c,text:c.toString("utf8"),read:c.length},complete:b}}function m(a,b,c,d={}){let e=Math.min(Math.max(0,b),Math.max(0,d.maxBytes??h)),g=Math.max(0,d.lineLimit??0),j=i.get(a),n=j?.size===b&&j.mtimeMs===c,o=n?j.bytes:Buffer.alloc(0),p=g>0?k(o):0;if(o.length>=e||j?.eof&&n||g>0&&p>=g)return l(o.subarray(0,e),!0);let q=o.length>0?[o]:[],r=o.length,s=!1,t=null;try{for(t=f().openSync(a,"r");r<e;){let a=Math.min(h,e-r),b=Buffer.allocUnsafe(a),c=0,d=!1;for(;c<a;){let e=f().readSync(t,b,c,a-c,r+c);if(0===e){d=!0;break}if(g>0&&(p+=k(b.subarray(c,c+e))),c+=e,g>0&&p>=g)break}if(c>0&&(q.push(c===b.length?b:Buffer.from(b.subarray(0,c))),r+=c),g>0&&p>=g){s=!0;break}if(d)break}s||=r>=e}catch{return{value:null,complete:!1}}finally{null!==t&&f().closeSync(t)}let u=1===q.length?q[0]:Buffer.concat(q,r);if(!s)return l(u,!1);var v={size:b,mtimeMs:c,bytes:u,eof:r>=b};i.delete(a);let w=0;for(let a of i.values())w+=a.bytes.length;for(;i.size>0&&(i.size>=2048||w+v.bytes.length>0x2000000);){let a=i.keys().next().value;if(void 0===a)break;w-=i.get(a)?.bytes.length??0,i.delete(a)}return i.set(a,v),l(u,!0)}},49172:(a,b,c)=>{c.d(b,{$:()=>e});var d=c(17295);function e(a,b){let c={...a};if(delete c[d.mq],!b?.includes("telegram"))return c;try{let a=(0,d.w0)()?.connectorToken;a&&(c[d.mq]=a)}catch{}return c}},49370:(a,b,c)=>{let d;c.d(b,{P3:()=>f});let e=BigInt(1e6);function f(a){if(!Number.isInteger(a)||a<=0)return null;let b=function(){if(void 0!==d)return d;if("darwin"!==process.platform)return d=null;try{let a=c(85786),b=a.dlopen("/usr/lib/libproc.dylib",{proc_pidinfo:{args:[a.FFIType.i32,a.FFIType.i32,a.FFIType.u64,a.FFIType.ptr,a.FFIType.i32],returns:a.FFIType.i32}});d=(c,d)=>Number(b.symbols.proc_pidinfo(c,3,BigInt(0),a.ptr(d),d.byteLength))}catch{d=null}return d}();if(!b)return null;let f=Buffer.alloc(136);try{var g=b(a,f);if(!Number.isInteger(a)||a<=0||g<136||f.byteLength<136||f.readUInt32LE(12)!==a)return null;let c=f.readBigUInt64LE(120),d=f.readBigUInt64LE(128);return c===BigInt(0)||d>=e?null:`${a}:${c}:${d.toString().padStart(6,"0")}`}catch{return null}}},50076:(a,b,c)=>{c.d(b,{P7:()=>k,d2:()=>l,iv:()=>m});var d=c(45481),e=c(7058),f=c(94284),g=c(38849);let h=(0,f.E)("last-turn-v5"),i=(0,f.E)("recent-turn-windows-v3");function j(a){if("string"!=typeof a)return null;let b=Date.parse(a);return Number.isFinite(b)?b:null}function k(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return{windows:[],prefixTruncated:!1,complete:!0};let b=1e3*a.mtime,c=i.get(a.path);if(c?.[0]===a.size&&c[1]===b)return structuredClone(c[2]);let f=(0,e.w8)(a.path,a.size,b),h={...function(a,b){let c=new Set;for(let d of a){let a=j(d.timestamp);null!==a&&function(a,b){if(b){let b=(0,g.xK)(a.payload)??{},c=(0,g.r$)(b.type);return"agent_message"===c?((0,g.r$)(b.message)??"").trim().length>0:"message"===c&&"assistant"===b.role&&(0,g.Em)(b.content).some(a=>((0,g.r$)(a.text)??(0,g.r$)(a.output_text)??"").trim().length>0)}if("assistant"!==a.type||!0===a.isApiErrorMessage)return!1;let c=(0,g.xK)(a.message)??{};return"<synthetic>"!==(0,g.r$)(c.model)&&("string"==typeof c.content?c.content.trim().length>0:(0,g.Em)(c.content).some(a=>"text"===a.type&&((0,g.r$)(a.text)??"").trim().length>0))}(d,b)&&c.add(a)}return{windows:function(a,b){let c=[],e=null,f=!1,h=null,i=null;for(let k of a){if(i=j(k.timestamp)??i,function(a,b){if(b)return!1;if("assistant"===a.type)return!0===a.isApiErrorMessage;if("user"!==a.type)return!1;if("interruptedMessageId"in a)return!0;let c=(0,g.xK)(a.message)?.content,d="string"==typeof c?c:(0,g.Em)(c).map(a=>(0,g.r$)(a.text)??"").join("\n");return/^\s*\[Request interrupted by user(?: for tool use)?\]\s*$/.test(d)}(k,b)){if(f&&null!==e){let a=Math.max(j(k.timestamp)??i??e,e);h={startedAt:e,endedAt:a},c.push(h)}f=!1;continue}if(function(a,b){if(b){let b=(0,g.xK)(a.payload)??{};return"user_message"===(0,g.r$)(b.type)?((0,g.r$)(b.message)??"").trim().length>0:"message"===(0,g.r$)(b.type)&&"user"===b.role&&(0,g.Em)(b.content).some(a=>((0,g.r$)(a.text)??(0,g.r$)(a.input_text)??"").trim().length>0)}if("user"!==a.type||(0,d.fR)(a))return!1;let c=(0,g.xK)(a.message)?.content;return"string"==typeof c?c.trim().length>0:(0,g.Em)(c).some(a=>"image"===a.type||"text"===a.type&&((0,g.r$)(a.text)??"").trim().length>0)}(k,b)){f&&null!==e||(e=j(k.timestamp),h=null),f=!0;continue}if(function(a,b){if(b){let b=(0,g.r$)(((0,g.xK)(a.payload)??{}).type);return"task_complete"===b||"turn_complete"===b||"turn_completed"===b||"turn_aborted"===b}if("result"===a.type)return!0;if("assistant"!==a.type)return!1;let c=(0,g.r$)(((0,g.xK)(a.message)??{}).stop_reason);return"end_turn"===c||"stop_sequence"===c}(k,b)){if(f&&null!==e){let a=Math.max(j(k.timestamp)??i??e,e);c.push({startedAt:e,endedAt:a})}f=!1,h=null;continue}h&&"assistant"===k.type&&(c.at(-1)===h&&c.pop(),h=null,f=!0)}return f&&null!==e&&c.push({startedAt:e,endedAt:null}),c}(a,b),assistantMessagesAtMs:[...c].sort((a,b)=>a-b)}}(f.records,"codex-sessions"===a.root),prefixTruncated:f.prefixTruncated,complete:f.complete};return f.complete&&i.set(a.path,[a.size,b,h]),structuredClone(h)}function l(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=h.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=k(a),e=d.windows.at(-1)??null;return d.complete&&h.set(a.path,[a.size,b,e]),e}function m(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=k(a),c=b.assistantMessagesAtMs?.at(-1);return"number"==typeof c?c:b.prefixTruncated?void 0:null}},50887:(a,b,c)=>{c.d(b,{m3:()=>H,LJ:()=>G,Ku:()=>M,F5:()=>F,yv:()=>L,AB:()=>E,$n:()=>y,X$:()=>J});var d=c(4351),e=c(4116),f=c(57726),g=c(4406),h=c(74030),i=c(80502),j=c(73024),k=c.n(j),l=c(85923),m=c(31973),n=c(91836),o=c(3302),p=c(75060),q=c(59376),r=c(69882),s=c(92233),t=c(36493),u=c(88417),v=c(62142),w=c(89364);function x(a,b){return b?.supersededBy?{ok:!1,outcome:"failed",error:"superseded",status:409,successorConversationId:a.supersedenceChainTail(b.id)}:null}function y(a){return a.ok?"held"===a.outcome?"held":"delivered":"started"===a.actuation?"delivery-uncertain":"failed"}function z(a,b=500,c){return{ok:!1,outcome:"failed",error:a instanceof Error?a.message:String(a),status:b,...c?{actuation:c}:{}}}async function A(a){let b=await a;return b.ok?{...b,spawned:"resumed"===b.outcome}:b}function B(a,b){return a.ok||"started"===a.actuation||(0,w.IJ)(b),a}async function C(a){return(await (0,w.aI)()).has(a)?(0,w.u1)(a):"unknown"}async function D(a){return a&&(0,r.EG)(a)?(await (0,i.oe)(!0)).canonicalFor(a):null}async function E(a){return(await D(a))?.display??null}async function F(a){if(!a||!(0,r.EG)(a))return z("the conversation path is required to interrupt",400);let b=await D(a);if(null===b)return z("no active agent pane to interrupt",409);try{return await (0,w.EW)(b.paneId),{ok:!0,target:b.display}}catch(a){return z(a)}}async function G(a){if(!a||!(0,r.EG)(a))return z("the conversation path is required to compact",400);let b=await D(a);if(null===b)return z("no active agent pane to compact",409);try{return await (0,w.oF)(b.paneId,"/compact"),{ok:!0,target:b.display}}catch(a){return z(a)}}async function H(a,b,c,d){if(!a||!(0,r.EG)(a))return z("the conversation path is required to answer",400);if(!/^([1-9]|Tab|Enter|Escape)$/.test(b))return z("invalid key",400);let e=await D(a);if(null===e)return z("no active agent pane",409);try{let a=await (0,w.WS)(e.paneId,async()=>{let a=function(a,b,c,d){if(null!==(0,v._1)(a))return"blocked";if(!(0,v.cZ)(a))return"closed";let e=(0,v.fm)(a);if(/^[1-9]$/.test(b)){let a=e?.options.find(a=>String(a.value)===b);if(!a||"string"==typeof c&&c!==a.label||"string"==typeof d&&d!==e?.question)return"changed"}else if(e&&"string"==typeof d&&d!==e.question)return"changed";return null}(await (0,w.ZB)(e.paneId),b,c,d);return null===a&&await (0,w.V1)(e.paneId,[b]),a});if("blocked"===a)return z("pane is waiting for a confirmation that requires a manual decision",409);if("closed"===a)return z("pane is no longer waiting for a response",409);if("changed"===a)return z("the on-screen menu has changed",409);return{ok:!0,target:e.display}}catch(a){return z(a)}}function I(a,b){return"claude"!==b.engine&&"codex"!==b.engine?null:a.transcriptAccountId(b.engine,b.path)}async function J(a,b={}){if(!a||!(b.pathAllowed??r.EG)(a))return z("the conversation path is required to open",400);let c=b.registry??(0,e.tk)(),g=c.conversationForPath(a),h=x(c,g);if(h)return h;let j=b.recover??t.recoverDeadStructuredConversation,s=a=>({ok:!0,target:null,outcome:"resumed",spawned:a.spawned,structured:!0});try{let b=await j({path:a},{registry:c});if(b)return s(b)}catch(a){return z(a)}let u=(await (b.listFiles??q.CS)({pin:a})).find(b=>b.path===a);if(!u)return z("the viewer knows no transcript at this path",403);let v=null,w=g?null:"running"===u.proc?"session":(b.liveOwnership??p.uF)(u),y=null!==w&&await (b.livePaneHost??D)(a)!==null;if(!g&&!y){let d=(b.admit??function(a,b,c={}){if("claude"!==b.engine&&"codex"!==b.engine)return{ok:!1,reason:"this entry is not an agent conversation, so it has no session to continue"};let d=b.engine;if("claude"===d&&(0,o.kv)(b.path))return{ok:!1,reason:"a Claude subagent transcript has no session of its own to resume"};let e=(0,m.sz)(d,b.path);if(!e)return{ok:!1,reason:`the transcript filename carries no ${"claude"===d?"Claude":"Codex"} session id`};if(!(c.readable??function(a){try{return k().statSync(a).isFile()}catch{return!1}})(b.path))return{ok:!1,reason:"the conversation transcript cannot be read from disk"};let g=function(a,b,c,d){let e="running"===b.proc?"session":d(b);if(!e)return null;let f=a.readOnlySnapshot().entries[(0,m.pp)(c)];return f?.host||f?.structuredHost?null:e}(a,b,{engine:d,sessionId:e.sessionId},c.liveOwnership??p.uF);if("session"===g)return{ok:!1,blocking:!0,reason:"the session is still running in a terminal the viewer does not own; close it there, then continue from here"};if("cwd"===g)return{ok:!1,reason:`another ${"claude"===d?"Claude":"Codex"} process is running in this conversation's working directory, so the viewer cannot tell whether this session is still open there`};let h=(c.resolveAccount??f.lD.resolveTranscriptOwner)(d,b.path),i=(c.now??(()=>new Date().toISOString()))();a.reconcileConversations([{engine:d,path:b.path,accountId:h?.accountId??null,launchProfile:(0,l.Ui)({cwd:b.cwd||(c.headCwd??function(a){return(0,n.tX)(a,{maxLines:40})})(b.path)||"",model:b.launchModel??b.model,effort:b.effort??null,title:b.title||null,project:b.project||null}),turn:{state:"unknown",source:"empty",terminalAt:null},parentArtifactPath:b.parent,observedAt:i}]);let j=a.conversationForPath(b.path);return j?{ok:!0,conversationId:j.id}:{ok:!1,reason:"the viewer could not record an identity for this conversation"}})(c,u,{liveOwnership:()=>w});if(!d.ok&&d.blocking)return z(d.reason,409);if(d.ok)try{let b=await j({path:a,conversationId:d.conversationId},{registry:c});if(b)return s(b)}catch(a){return z(a)}else v=d.reason}let B=c.launchProfileForPath(u.path),C={model:u.launchModel??u.model,effort:u.effort,accountId:I(c,u),allowSubagents:B?.allowSubagents,plugins:B?.plugins,mcpServers:B?.mcpServers},E=(b.resumeSpecFor??d.A9)(u.root,u.path,C);if(!E){let a=(b.resumeEligibility??d.V9)(u.root,u.path,C);return a.ok?z(v??"this conversation cannot be resumed",409):z(a.reason,409)}try{return await A((b.deliver??i.Zp)({entry:u,spec:E,payload:""}))}catch(a){return z(a)}}function K(a,b){return Object.values(a.entries).filter(a=>a.artifactPath===b&&null!==a.host).sort((a,b)=>b.claimEpoch-a.claimEpoch||b.updatedAt.localeCompare(a.updatedAt))[0]??null}async function L(a,b={}){if(!a||!(b.pathAllowed??r.EG)(a))return z("the conversation path is required to close",400);let c=(await (b.listFiles??q.CS)({pin:a})).find(b=>b.path===a);if(c&&c.parent)return z("a branch shares its root conversation pane and cannot be closed independently",409);let d=b.registry??(0,e.tk)(),f=b.registry?()=>d.readOnlySnapshot():b.registrySnapshot??(()=>d.readOnlySnapshot()),g=K(f(),a);if(!g?.host)return z("no registered agent pane for this conversation",404);let h={pid:process.pid,startIdentity:s.B.processIdentity(process.pid)},i=b.registry||!b.registrySnapshot?a=>d.withOperationLock(g.key,h,a):a=>a();try{return await i(async()=>{let c=K(f(),a);if(!c?.host)return z("no registered agent pane for this conversation",404);if(!await (b.killHost??w.B$)(c.host))return z("the registered pane changed or its process did not exit",409);if(b.registry||!b.registrySnapshot){var e,g;let b=d.readOnlySnapshot().entries[`${c.key.engine}:${c.key.sessionId}`];b?.artifactPath===a&&(e=b.host,g=c.host,e&&e.kind===g.kind&&e.endpoint===g.endpoint&&e.paneId===g.paneId&&e.server.pid===g.server.pid&&e.server.startIdentity===g.server.startIdentity&&e.panePid.pid===g.panePid.pid&&e.panePid.startIdentity===g.panePid.startIdentity&&e.agent.pid===g.agent.pid&&e.agent.startIdentity===g.agent.startIdentity&&e.windowName===g.windowName&&e.argv.length===g.argv.length&&e.argv.every((a,b)=>a===g.argv[b]))&&d.markUnhosted(c.key)}return(0,w.HZ)(a),{ok:!0,target:c.host.paneId}})}catch(a){return z(a)}}async function M(a,b={}){let{pid:f,images:j}=a,k=a.text.trim(),l=Buffer.byteLength(k,"utf8"),m=j.length>0||l>32e3,n=(0,e.tk)(),o=a.conversationId?.startsWith("conversation_")?n.conversation(a.conversationId):n.conversationForPath(a.path),p=x(n,o);if(p)return p;if(o)try{let d=await (b.recover??t.recoverDeadStructuredConversation)({path:a.path,conversationId:o.id},{registry:n});if(d){let e=b.enqueueStructured??(await Promise.resolve().then(c.bind(c,71256))).enqueueStructuredMessage,f=await e({path:d.path,conversationId:d.conversationId,clientMessageId:a.clientMessageId,text:k,hasImages:j.length>0,...a.origin?{origin:a.origin}:{}},{registry:()=>n});if(!f)return z("structured delivery ownership is unavailable",503);if(!f.ok)return z(f.error,f.status);if("held"===f.outcome)return{ok:!0,target:d.spawned?null:f.target,outcome:"held",spawned:d.spawned,structured:!0};return{ok:!0,target:d.spawned?null:f.target,outcome:f.outcome,spawned:d.spawned,structured:!0,operationId:f.operationId,receipt:f.receipt}}}catch(a){return z(a)}let s=o?.generations.at(-1)?.path??a.path,v=null,y=[];if(o&&!a.reservedDeliveryId){let b;if("held"===(0,g._v)(o)&&m)return z("request-local delivery waits for migration completion",409);try{let c=l>32e3?"":k,d=null;try{d=(0,u.rM)(k,[]).contentDigest}catch{d=null}b=n.holdDelivery(o.id,c,a.clientMessageId??null,j.length?"ephemeral-images":l>32e3?"ephemeral-text":"text",[],d,a.origin?{origin:a.origin}:{})}catch(a){return z(a,409)}if("delivered"===b.state)return{ok:!0,target:o.id};if("delivery-uncertain"===b.state&&(y=b.artifactPaths,b=n.retryUncertainDelivery(b.id)),"held"===b.state)return m?(n.discardDelivery(b.id),z("request-local delivery waits for migration completion",409)):((0,h.U)(),{ok:!0,target:o.id,outcome:"held"});if("assigned"!==b.state||!b.generationId)return m&&n.discardDelivery(b.id),z("delivery target is unavailable",409);let c=n.beginDeliveryAttempt(b.id,b.generationId);if(!c)return m?(n.discardDelivery(b.id),z("request-local delivery waits for migration completion",409)):(n.requeueHeldDelivery(b.id),(0,h.U)(),{ok:!0,target:o.id,outcome:"held"});v=c.id;let d=n.conversation(o.id);s=d?.generations.find(a=>a.id===c.generationId)?.path??s}let D="none",E=a=>{try{return v&&(a.ok?n.recordDeliveryOutcome(v,"delivered"):"started"!==a.actuation&&n.discardDelivery(v)),a}catch(a){return z(a,500,"none"===D?void 0:"started")}},F=[],G=()=>y.length>0?{payload:[k,...y].filter(Boolean).join("\n"),imagePaths:y}:(b.buildImagePayload??w.Am)(k,j),H=()=>{v&&F.length>0&&n.recordDeliveryArtifacts(v,F)};try{let c=null;if(!s&&null!==f){let a=await (b.targetForKnownPid??C)(f);if("unknown"===a&&!s)return E(z("process is unknown to the viewer",403));c="unknown"===a?null:a}if(null!==c){let a=G();return F=a.imagePaths,H(),await (b.sendText??w.oF)(c,a.payload),D="completed",E({ok:!0,target:c,...F.length?{imagePaths:F}:{}})}if(!s||!(b.pathAllowed??r.EG)(s))return E(z("process is not in a tmux session",409));let e=await (b.listFiles??q.CS)({pin:s}),g=e.find(a=>a.path===s);if(!g)return E(z("file is unknown to the viewer",403));let h=n.launchProfileForPath(g.path),j=(b.resumeSpecFor??d.A9)(g.root,g.path,{model:a.resumeModel??g.launchModel??g.model,effort:a.resumeEffort??g.effort,..."boolean"==typeof a.resumeFast?{fast:a.resumeFast}:{},accountId:I(n,g),allowSubagents:h?.allowSubagents,plugins:h?.plugins,mcpServers:h?.mcpServers});if(j){let a=G();F=a.imagePaths,H();let c=await A((b.deliver??i.Zp)({entry:g,spec:j,payload:a.payload}));if(!c.ok)return D="started"===c.actuation?"started":"none",E(B(c,F));return D="completed",E({...c,...F.length?{imagePaths:F}:{}})}let k=new Map(e.map(a=>[a.path,a])),l=new Set,m=g;for(;m.parent&&k.has(m.parent)&&!l.has(m.path);)l.add(m.path),m=k.get(m.parent);if(m.path===g.path)return E(z("this conversation cannot be resumed",409));let o=n.launchProfileForPath(m.path),p=(b.resumeSpecFor??d.A9)(m.root,m.path,{model:m.launchModel??m.model,effort:m.effort,accountId:I(n,m),allowSubagents:o?.allowSubagents,plugins:o?.plugins,mcpServers:o?.mcpServers});if(!p)return E(z("root session is unavailable for messaging",409));let t=G();F=t.imagePaths,H();let u=`User message for your branch \xab${g.title.slice(0,100)}\xbb — forward it or handle it yourself:
89
128
  ${t.payload}`,v=F.length?{imagePaths:F}:{},x=await A((b.deliver??i.Zp)({entry:m,spec:p,payload:u}));if(!x.ok)return D="started"===x.actuation?"started":"none",E(B(x,F));return D="completed",E({...x,...v})}catch(b){let a="completed"===D||b instanceof w.SS;if(!a){if(v)try{n.discardDelivery(v)}catch{}(0,w.IJ)(F)}return z(b,500,a?"started":void 0)}}},50920:(a,b,c)=>{c.d(b,{ks:()=>n,oy:()=>t,Pn:()=>r,BQ:()=>s});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h);function j(a=process.env){return"1"===a.LLV_STAGING}let k="agent-log-viewer",l="live-log-viewer";function m(){return process.env.XDG_CONFIG_HOME||i().join(g().homedir(),".config")}function n(a){var b=m(),c=a;let d=i().join(b,k,c);if(e().existsSync(d))return d;let f=i().join(b,l,c);return e().existsSync(f)?f:d}let o=new Set,p=".migrated-from-legacy";function q(a,b){if("1"===process.env.LLV_RESOURCE_OBSERVATION_WORKER||o.has(a))return;let c=i().join(a,p),d=()=>`${new Date().toISOString()} ${b}
90
- `;try{if(e().existsSync(c))return void o.add(a);if(!e().existsSync(b)){e().mkdirSync(a,{recursive:!0}),e().writeFileSync(c,d()),o.add(a);return}if(!e().existsSync(a)){e().mkdirSync(i().dirname(a),{recursive:!0});let c=`${a}.migrating.${process.pid}`;e().rmSync(c,{recursive:!0,force:!0});try{e().cpSync(b,c,{recursive:!0}),e().writeFileSync(i().join(c,p),d()),e().renameSync(c,a)}catch(a){throw e().rmSync(c,{recursive:!0,force:!0}),a}o.add(a);return}e().cpSync(b,a,{recursive:!0,force:!1,errorOnExist:!1}),e().writeFileSync(c,d()),o.add(a)}catch(c){console.error(`viewer state migration ${b} -> ${a} failed; will retry:`,c)}}function r(){let a=process.env.LLV_STATE_DIR;if(j()){var b=a;let c=b||i().join(m(),k,"state-staging"),d=i().resolve(c);if([i().join(m(),k,"state"),i().join(m(),l,"state"),i().join(g().homedir(),".claude","viewer-state")].some(a=>i().resolve(a)===d))throw Error(`staging mode refuses the production state dir ${d}; set LLV_STATE_DIR to a staging-only dir`);return c}if(a)return a;let c=i().join(m(),k,"state");return q(c,i().join(g().homedir(),".claude","viewer-state")),c}function s(...a){return i().join(r(),...a)}function t(){if(j())return s("inbox");let a=i().join(m(),k,"inbox");return q(a,i().join(g().homedir(),".claude","viewer-inbox")),a}},51720:(a,b,c)=>{c.d(b,{s:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91836),i=c(89831),j=c(52530),k=c(69882);function l(a){return new Promise(b=>setTimeout(b,a))}async function m(a){if(a.knownTranscript)return a.knownTranscript;if("codex"!==a.engine)return null;let b=a.panePid;if("number"!=typeof b||!Number.isInteger(b)||b<=0)return null;let c=a.env??{},d=c.now??Date.now,f=c.sleep??l,m=c.candidatePaths??(b=>(function(a,b=k.GH["codex-sessions"]){let c=a-5e3,d=[],f=(a,b)=>{let h;if(!(b>6)){try{h=e().readdirSync(a,{withFileTypes:!0})}catch{return}for(let i of h){let h=g().join(a,i.name);if(i.isDirectory()){f(h,b+1);continue}if(i.isFile()&&i.name.endsWith(".jsonl"))try{let a=e().statSync(h);a.mtimeMs>=c&&d.push({path:h,mtimeMs:a.mtimeMs})}catch{continue}}}};return f(b,0),d.sort((a,b)=>b.mtimeMs-a.mtimeMs).slice(0,32).map(a=>a.path)})(b,a.codexSessionsDir??k.GH["codex-sessions"])),n=c.holderPidByPath??(a=>(0,j.SP)(a,!0)),o=c.parentPidOf??j.Ib,p=c.timeoutMs??2500,q=c.pollMs??150,r=d()+p;for(;;){let c=function(a,b,c,d){let f=d.holderPidByPath(a);for(let g of a){let a=f.get(g);if(void 0!==a&&function(a,b){let c=(0,h.tX)(a,{bytes:8192,maxLines:10});return null===c||c===b}(g,c)&&!function(a){try{let b=e().statSync(a);return(0,i.ET)(a,b.size)}catch{return!1}}(g)&&function(a,b,c){let d=new Set;for(let e=a;null!==e&&!d.has(e);e=c(e)){if(e===b)return!0;if(d.add(e),d.size>64)break}return!1}(a,b,d.parentPidOf))return g}return null}(m(a.startedAtMs),b,a.cwd,{holderPidByPath:n,parentPidOf:o});if(c)return c;if(d()>=r)return null;await f(q)}}},52114:(a,b,c)=>{c.d(b,{yj:()=>k,zC:()=>p});var d=c(31421),e=c(40006),f=c(37788),g=c(14252),h=c(65377);let i=["-c","cli_auth_credentials_store=file","-c","mcp_servers={}","app-server"],j={now:()=>Date.now(),setTimeout:(a,b)=>setTimeout(a,b),clearTimeout:a=>clearTimeout(a)};class k extends Error{constructor(a,b="definite"){super((0,e.XR)(a)),this.outcome=b,this.name="CodexAppServerError"}}function l(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function m(a){return new k(`Codex app-server protocol error: ${a}`,"unknown")}function n(a,b,c){if("string"!=typeof a[b]||!a[b])throw m(`${c} response is missing ${b}`);return a[b]}function o(a,b){if(null==a)return null;if(!l(a)||"number"!=typeof a.usedPercent||!Number.isFinite(a.usedPercent)||a.usedPercent<0||a.usedPercent>100)throw m(`${b} response has an invalid rate-limit window`);let c=a.resetsAt,d=a.windowDurationMins;if(null!=c&&("number"!=typeof c||!Number.isInteger(c)||c<0))throw m(`${b} response has an invalid reset timestamp`);if(null!=d&&("number"!=typeof d||!Number.isInteger(d)||d<0))throw m(`${b} response has an invalid window duration`);return{usedPercent:a.usedPercent,resetsAt:"number"==typeof c?c:null,windowDurationMins:"number"==typeof d?d:null}}class p{constructor(a,b,c,d,f,g){this.child=a,this.clock=b,this.requestTimeoutMs=c,this.shutdownGraceMs=d,this.maxStdoutBufferBytes=f,this.signalProcess=g,this.pending=new Map,this.notificationListeners=new Set,this.requestListeners=new Set,this.lifecycleListeners=new Set,this.nextId=1,this.stdoutChunks=[],this.stdoutBufferBytes=0,this.stderrTail="",this.lastInboundEnvelope=null,this.closed=!1,this.reaped=!1,this.shutdownTimer=null,a.stdout.on("data",a=>this.acceptStdout(String(a))),a.stderr?.on("data",a=>{this.stderrTail=(0,e.XR)((this.stderrTail+String(a)).slice(-2e3))}),a.on("error",a=>this.fail(new k(`Codex app-server child error: ${a.message}`,"unknown"))),a.on("close",(a,b)=>{this.reaped=!0,this.emitLifecycle({type:"reaped"});let c=this.stderrTail?`: ${this.stderrTail}`:"";this.closed||this.fail(new k(`Codex app-server exited (code ${a??"none"}, signal ${b??"none"})${c}`,"unknown"))})}static async start(a){let b=new p((a.spawn??function(a,b){return(0,d.spawn)(process.env.LLV_CODEX_BINARY||"codex",[...b],{env:{...(0,h.Fd)(process.env),CODEX_HOME:a},stdio:["pipe","pipe","pipe"],detached:!0})})(a.home,i),a.clock??j,a.requestTimeoutMs??1e4,a.shutdownGraceMs??1e3,a.maxStdoutBufferBytes??0x4000000,a.signalProcess??process.kill);try{let a=await b.request("initialize",{clientInfo:{name:"agent-log-viewer",version:"0.11.7"},capabilities:{experimentalApi:!0}});if(!l(a))throw m("initialize response must be an object");return b.notify("initialized"),b}catch(a){throw b.close(),a}}onNotification(a){return this.notificationListeners.add(a),()=>this.notificationListeners.delete(a)}onRequest(a){return this.requestListeners.add(a),()=>this.requestListeners.delete(a)}onLifecycle(a){return this.lifecycleListeners.add(a),()=>this.lifecycleListeners.delete(a)}inboundEnvelope(){return this.lastInboundEnvelope}async readAccount(){let a=await this.request("account/read",{});if(!l(a)||"boolean"!=typeof a.requiresOpenaiAuth)throw m("account/read response is malformed");if(null!==a.account&&void 0!==a.account&&!l(a.account))throw m("account/read response has an invalid account");return{account:l(a.account)?{..."string"==typeof a.account.type?{type:a.account.type}:{},..."string"==typeof a.account.email||null===a.account.email?{email:a.account.email}:{},..."string"==typeof a.account.planType||null===a.account.planType?{planType:a.account.planType}:{}}:null,requiresOpenaiAuth:a.requiresOpenaiAuth}}async startDeviceLogin(){let a=await this.request("account/login/start",{type:"chatgptDeviceCode"});if(!l(a)||"chatgptDeviceCode"!==a.type)throw m("account/login/start response has an unexpected type");return{loginId:n(a,"loginId","account/login/start"),verificationUrl:n(a,"verificationUrl","account/login/start"),userCode:n(a,"userCode","account/login/start")}}async cancelLogin(a){let b=await this.request("account/login/cancel",{loginId:a});if(!l(b)||"canceled"!==b.status&&"notFound"!==b.status)throw m("account/login/cancel response is malformed");return b.status}async readRateLimits(){let a=await this.request("account/rateLimits/read");if(!l(a)||!l(a.rateLimits))throw m("account/rateLimits/read response is malformed");let b=a.rateLimits;return{rateLimits:{primary:o(b.primary,"account/rateLimits/read"),secondary:o(b.secondary,"account/rateLimits/read"),planType:"string"==typeof b.planType?b.planType:null}}}async forkThread(a){let b=await this.request("thread/fork",{threadId:a}),c=l(b)&&l(b.thread)?b.thread:b;if(!l(c))throw m("thread/fork response is malformed");return{id:n(c,"id","thread/fork"),path:"string"==typeof c.path?c.path:null}}async resumeThread(a,b={}){let c=await this.request("config/read",{...b.cwd?{cwd:b.cwd}:{},includeLayers:!1}),d={...(0,g.v)(c),...b.effort?{model_reasoning_effort:b.effort}:{}},e=await this.request("thread/resume",{threadId:a,...b.path?{path:b.path}:{},...b.cwd?{cwd:b.cwd}:{},...b.model?{model:b.model}:{},...null!=b.fast?{serviceTier:b.fast?"priority":"standard"}:{},...b.approvalPolicy?{approvalPolicy:b.approvalPolicy}:{},...b.sandbox?{sandbox:b.sandbox}:{},config:d}),f=l(e)&&l(e.thread)?e.thread:e;if(!l(f))throw m("thread/resume response is malformed");return{id:n(f,"id","thread/resume"),path:"string"==typeof f.path?f.path:null}}async readThread(a){let b=await this.request("thread/read",{threadId:a,includeTurns:!0}),c=l(b)&&l(b.thread)?b.thread:b;if(!l(c))throw m("thread/read response is malformed");return{id:n(c,"id","thread/read"),path:"string"==typeof c.path?c.path:null}}async setThreadName(a,b){await this.request("thread/name/set",{threadId:a,name:b})}async setThreadGoal(a,b,c){await this.request("thread/goal/set",{threadId:a,objective:b,...c?{status:c}:{}})}close(){if(!this.closed){for(let a of(this.closed=!0,this.stdoutChunks=[],this.stdoutBufferBytes=0,this.pending.values()))this.clock.clearTimeout(a.timeout),a.reject(new k("Codex app-server client closed","unknown"));this.pending.clear(),this.beginShutdown(),this.emitLifecycle({type:"closed"})}}notify(a,b){this.write({jsonrpc:"2.0",method:a,...b?{params:b}:{}})}request(a,b){if(this.closed)return Promise.reject(new k("Codex app-server client is closed"));let c=this.nextId++;return new Promise((d,e)=>{let f=this.clock.setTimeout(()=>{if(!this.pending.has(c))return;this.pending.delete(c);let b=new k(`Codex app-server request timed out: ${a}`,"unknown");e(b),this.fail(b)},this.requestTimeoutMs);this.pending.set(c,{method:a,resolve:d,reject:e,timeout:f});try{this.write({jsonrpc:"2.0",id:c,method:a,...b?{params:b}:{}})}catch(a){this.pending.delete(c),this.clock.clearTimeout(f),e(a instanceof Error?a:new k(String(a)))}})}write(a){try{this.child.stdin.write(JSON.stringify(a)+"\n")}catch(a){throw new k(`could not write to Codex app-server: ${a instanceof Error?a.message:String(a)}`)}}acceptStdout(a){if(this.closed)return;let b=0,c=a.indexOf("\n",b);for(;c>=0;){let d=a.slice(b,c);if(this.stdoutBufferBytes+Buffer.byteLength(d,"utf8")>this.maxStdoutBufferBytes)return void this.fail(m("received an oversized JSONL line"));let e=this.stdoutChunks.length>0?this.stdoutChunks.join("")+d:d;this.stdoutChunks=[],this.stdoutBufferBytes=0;let f=e.trim();if(f&&this.acceptMessage(f),this.closed)return;b=c+1,c=a.indexOf("\n",b)}let d=a.slice(b);if(!d)return;let e=Buffer.byteLength(d,"utf8");this.stdoutBufferBytes+e>this.maxStdoutBufferBytes?this.fail(m("received an oversized unterminated JSONL line")):(this.stdoutChunks.push(d),this.stdoutBufferBytes+=e)}acceptMessage(a){let b,c;try{b=JSON.parse(a)}catch{this.fail(m("received malformed JSON"));return}try{c=(0,e.Fp)(b)}catch(b){let a=b instanceof e.qN?b.message:"received malformed JSON-RPC";this.fail(new k(a,"unknown"));return}if(this.lastInboundEnvelope=c.envelope,"request"===c.kind){let a=this.requestListeners.values().next().value;if(!a){console.warn(`[codex app-server] rejected unhandled server request ${c.method}`),this.write({jsonrpc:"2.0",id:c.id,error:{code:-32601,message:"Viewer has no handler for this request"}});return}Promise.resolve(a({id:c.id,method:c.method,params:c.params})).then(a=>this.write({jsonrpc:"2.0",id:c.id,result:a??{}})).catch(a=>this.write({jsonrpc:"2.0",id:c.id,error:{code:-32e3,message:(0,e.XR)(a instanceof Error?a.message:"request handler failed")}}));return}if("notification"===c.kind){let a={method:c.method,params:c.params};for(let b of this.notificationListeners)try{b(a)}catch{}return}let d=c.id;if("number"!=typeof d)return void this.fail(m("response has an invalid id"));let f=this.pending.get(d);if(!f)return void this.fail(m(`response id ${d} has no matching request`));if(this.pending.delete(d),this.clock.clearTimeout(f.timeout),c.error){let a;f.reject((a=c.error.message,new k(`Codex app-server request failed: ${a}`)))}else f.resolve(c.result)}fail(a){if(!this.closed){for(let b of(this.closed=!0,this.stdoutChunks=[],this.stdoutBufferBytes=0,this.pending.values()))this.clock.clearTimeout(b.timeout),b.reject(a);this.pending.clear(),this.beginShutdown(),this.emitLifecycle({type:"failed",error:a})}}beginShutdown(){try{this.child.stdin.end()}catch{}this.reaped?(0,f.v)(this.child.pid,"SIGTERM",this.signalProcess):(0,f.f)(this.child,"SIGTERM",this.signalProcess),this.shutdownTimer||(this.shutdownTimer=this.clock.setTimeout(()=>{this.shutdownTimer=null,this.reaped?(0,f.v)(this.child.pid,"SIGKILL",this.signalProcess):(0,f.f)(this.child,"SIGKILL",this.signalProcess)},this.shutdownGraceMs))}emitLifecycle(a){for(let b of this.lifecycleListeners)try{b(a)}catch{}}}},52530:(a,b,c)=>{c.d(b,{$U:()=>q,$w:()=>n,Bj:()=>v,FQ:()=>p,Fe:()=>r,Ib:()=>u,SP:()=>o,Vt:()=>t,pl:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(30277),i=c(69882);let j=null,k=null,l=null;function m(a){return Number.isInteger(a)&&a>0&&h.B.pidAlive(a)}function n(a=!1){let b=Date.now();if(!a&&j&&b-j.at<12e3)return j.map;let c=new Map;return h.B.scanFdTargetsUnder(i.GH["claude-tasks"],(a,b)=>{a.endsWith(".output")&&!c.has(a)&&c.set(a,b)}),j={at:b,map:c},c}function o(a,b=!1){let c=new Map;for(let b of a){if(c.size>=512)break;if(!b)continue;c.set(b,b);let a=function(a){try{return e().realpathSync(a)}catch{return null}}(b);a&&c.set(a,b)}let d=[...c.keys()].sort().join("\0"),f=Date.now();if(!b&&k&&k.key===d&&f-k.at<12e3)return k.map;let g=new Map;return c.size>0&&h.B.scanFdTargetsFor([...c.keys()],(a,b,d)=>{let e=c.get(a);e&&!g.has(e)&&d()&&g.set(e,b)}),k={at:f,key:d,map:g},g}function p(a,b){return h.B.pidWritesPath(a,b)}function q(a){return h.B.readArgv(a)}function r(a){for(let b of a.slice(0,2)){let a=g().basename(b);if("claude"===a||"claude.exe"===a)return"claude";if("codex"===a||"codex.exe"===a)return"codex"}return null}let s=new Set(["daemon","--bg-pty-host","--bg-spare"]);function t(a){return a.some(a=>s.has(a))}function u(a){return h.B.readPpid(a)}function v(a=!1){let b=Date.now();if(!a&&l&&b-l.at<12e3)return l.list;let c=[];for(let a of h.B.listProcesses()){let b=r(a.argv);null===b||t(a.argv)||null!==a.cwd&&c.push({pid:a.pid,engine:b,argv:a.argv,cwd:a.cwd,tty:a.tty})}return l={at:b,list:c},c}},53133:(a,b,c)=>{c.d(b,{Fn:()=>L,Hy:()=>w,No:()=>M,OL:()=>u,UV:()=>s,Yb:()=>J,ZK:()=>T,fM:()=>U,fg:()=>X,kK:()=>N,o1:()=>A,ob:()=>O,pW:()=>Q,qX:()=>R,ss:()=>P,x0:()=>W,y3:()=>S});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(65377),l=c(14071);let m=/^[a-z0-9][a-z0-9-]{0,31}$/,n="default",o=["skills","commands","agents"],p=["settings.json"],q=new Set([".credentials.json",".claude.json","projects","history.jsonl","session-env","shell-snapshots","file-history","todos","cache","debug","backups","paste-cache","plugins","mcp.json","settings.local.json"]),r=null;class s extends Error{constructor(a){super(`unknown Claude account: ${a}`),this.name="UnknownClaudeAccountError"}}class t extends Error{constructor(){super("account label must contain visible text and be at most 80 characters"),this.name="InvalidClaudeAccountLabelError"}}class u extends Error{constructor(){super("Claude account registry is corrupt; repair or remove it before changing accounts"),this.name="CorruptClaudeAccountsError"}}class v extends Error{constructor(){super("managed Claude home failed safety checks"),this.name="UnsafeClaudeHomeError"}}function w(){return i().resolve(process.env.LLV_CLAUDE_HOME||i().join(g().homedir(),".claude"))}function x(){return i().join(i().dirname((0,j.Pn)()),"accounts","claude")}function y(){return(0,j.BQ)("claude-accounts.json")}function z(){return i().join(i().dirname((0,j.Pn)()),"shared","claude")}function A(){return i().join(z(),"projects")}function B(a){let b=i().join(a,"projects");try{if(!e().lstatSync(b).isSymbolicLink())return b;let a=A();if(e().realpathSync(b)===e().realpathSync(a))return a}catch{}return b}function C(a){return i().join(x(),a)}function D(){return{version:1,active:n,accounts:[],retired:[]}}function E(a,b=!1){if(!m.test(a)||a===n)return!1;let c=i().resolve(x()),d=i().resolve(C(a));if(i().dirname(d)!==c)return!1;try{var f;let a=e().lstatSync(c),b=e().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink()||!b.isDirectory()||b.isSymbolicLink()||(f=b.mode,(63&f)!=0||(511&f)!=448))return!1;return i().dirname(e().realpathSync(d))===e().realpathSync(c)}catch{return!b}}function F(){let a,b=y(),c=`${b}:${function(a){try{let b=e().statSync(a);return`${b.mtimeMs}:${b.size}`}catch{return"missing"}}(b)}`;if(r?.key===c)return r.loaded;try{a=e().existsSync(b)?function(a){if(!a||"object"!=typeof a||1!==a.version||"string"!=typeof a.active||!Array.isArray(a.accounts)||void 0!==a.retired&&!Array.isArray(a.retired))return{registry:D(),corrupt:!0};let b=new Set,c=!1,d=[];for(let e of a.accounts){if(!(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.label&&"managed"===e.kind&&"number"==typeof e.createdAt&&E(e.id))||b.has(e.id)){c=!0;continue}b.add(e.id),d.push(e)}let e=[];for(let d of a.retired??[]){if(!(d&&"object"==typeof d&&"string"==typeof d.id&&"string"==typeof d.label&&"number"==typeof d.retiredAt&&E(d.id))||b.has(d.id)){c=!0;continue}b.add(d.id),e.push(d)}return{registry:{version:1,active:a.active,accounts:d,retired:e},corrupt:c}}(JSON.parse(e().readFileSync(b,"utf8"))):{registry:D(),corrupt:!1}}catch{a={registry:D(),corrupt:!0}}return r={key:c,loaded:a},a}function G(){let a=F();if(a.corrupt)throw new u;return a.registry}function H(a){return(0,l.oV)(()=>{let b=`${y()}.lock`,c=Date.now();for(e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});;)try{let c=e().openSync(b,"wx",384);try{return e().writeFileSync(c,`${process.pid}
91
- `,"utf8"),a()}finally{e().closeSync(c),e().rmSync(b,{force:!0})}}catch(a){if("EEXIST"!==a.code)throw a;try{if(Date.now()-e().statSync(b).mtimeMs>3e4){e().rmSync(b,{force:!0});continue}}catch{continue}if(Date.now()-c>=5e3)throw Error("Claude account registry is busy; retry shortly");Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,10)}})}function I(a){let b=y();e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${Date.now()}.tmp`);try{e().writeFileSync(c,JSON.stringify(a,null,2)+"\n",{mode:384});let d=e().openSync(c,"r");try{e().fsyncSync(d)}finally{e().closeSync(d)}e().renameSync(c,b);let f=e().openSync(i().dirname(b),"r");try{e().fsyncSync(f)}finally{e().closeSync(f)}r=null}finally{e().rmSync(c,{force:!0})}}function J(a,b=!1){let c=i().join(a,".credentials.json");try{let a=e().lstatSync(c);return a.isFile()&&!a.isSymbolicLink()&&a.uid===(process.getuid?.()??a.uid)&&(63&a.mode)==0}catch{return!b}}function K(a){let b=C(a.id);return{...a,home:b,projectsDir:B(b),authPresent:J(b,!0)}}function L(){let a;return[{id:n,label:"Main",kind:"legacy",home:a=w(),projectsDir:B(a),authPresent:J(a,!0),createdAt:0},...F().registry.accounts.map(K)]}function M(){let a=F().registry.active;return L().some(b=>b.id===a)?a:n}function N(){return F().corrupt}function O(a){let b=L().find(b=>b.id===(a??M()));if(!b)throw new s(a??"");if("managed"===b.kind&&(!E(b.id,!0)||!J(b.home)))throw new v;return{id:b.id,kind:b.kind,home:b.home,projectsDir:b.projectsDir}}function P(a){H(()=>{r=null;let b=G();if(!L().some(b=>b.id===a))throw new s(a);I({...b,active:a})})}function Q(){return[...new Set([...L().map(a=>a.projectsDir),...F().registry.retired.map(a=>B(C(a.id)))])]}function R(a,b){let c;try{c=e().realpathSync(a)}catch{return{kind:"unreadable"}}let d=L(),f=null;try{f=e().realpathSync(A())}catch{}for(let a of d)try{let b=e().realpathSync(a.projectsDir);if(null!==f&&b===f)continue;if(c.startsWith(b+i().sep))return{kind:"owned",accountId:a.id,home:a.home,source:"path"}}catch{}let g=b?d.find(a=>a.id===b):void 0;if(g)return{kind:"owned",accountId:g.id,home:g.home,source:"recorded"};if(null!==f&&c.startsWith(f+i().sep)){let a=M(),b=d.find(b=>b.id===a)??d[0];if(b)return{kind:"owned",accountId:b.id,home:b.home,source:"shared-store"}}return{kind:"foreign"}}function S(a){let b=R(a);return"owned"===b.kind&&"path"===b.source?b.home:null}function T(){let a=i().join(z(),"settings.json");return e().existsSync(a)?a:null}function U(a){let b=a.trim();if(!b||b.length>80||/[\u0000-\u001f\u007f]/.test(b))throw new t;return H(()=>{r=null;let a=G(),c=function(a,b){let c=a.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"account";for(let a=0;;a+=1){let d=a?`-${a}`:"",f=`${c.slice(0,32-d.length)}${d}`;if(m.test(f)&&f!==n&&!b.has(f)&&!e().existsSync(C(f)))return f}}(b,new Set([...L().map(a=>a.id),...a.retired.map(a=>a.id)])),d=C(c),f=!1;try{e().mkdirSync(i().dirname(d),{recursive:!0,mode:448}),e().chmodSync(i().dirname(d),448),e().mkdirSync(d,{mode:448}),e().chmodSync(d,448),f=!0;let g=function(){let a=z(),b=`${a}.tmp-${process.pid}-${Date.now()}`,c={files:0,bytes:0};e().rmSync(b,{recursive:!0,force:!0}),e().mkdirSync(b,{recursive:!0,mode:448});try{for(let a of[...o,...p]){let d=i().join(w(),a);e().existsSync(d)&&function a(b,c,d){let f=e().lstatSync(b);if(!f.isSymbolicLink()&&(f.isDirectory()||f.isFile())){if(f.isFile()){if(++d.files>2e3||(d.bytes+=f.size)>0x1000000)throw Error("Claude capability snapshot exceeds safety limit");e().mkdirSync(i().dirname(c),{recursive:!0,mode:448}),e().copyFileSync(b,c),e().chmodSync(c,384);return}for(let f of(e().mkdirSync(c,{recursive:!0,mode:448}),e().readdirSync(b,{withFileTypes:!0})))q.has(f.name)||a(i().join(b,f.name),i().join(c,f.name),d)}}(d,i().join(b,a),c)}return e().mkdirSync(i().dirname(a),{recursive:!0,mode:448}),e().chmodSync(i().dirname(a),448),e().rmSync(a,{recursive:!0,force:!0}),e().renameSync(b,a),e().chmodSync(a,448),a}catch(a){throw e().rmSync(b,{recursive:!0,force:!0}),a}}();for(let a of o){let b=i().join(g,a);e().existsSync(b)&&e().symlinkSync(b,i().join(d,a))}e().mkdirSync(i().join(d,"projects"),{mode:448});let h={id:c,label:b,kind:"managed",createdAt:Date.now()};return I({...a,accounts:[...a.accounts,h]}),K(h)}catch(a){throw f&&e().rmSync(d,{recursive:!0,force:!0}),a}})}let V=["ANTHROPIC_API_KEY","ANTHROPIC_AUTH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_BASE_URL","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","VERTEXAI_PROJECT","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"];function W(a,b=process.env){let c={...(0,k.Fd)(b),CLAUDE_CONFIG_DIR:a};for(let a of V)delete c[a];return c}function X(a){return L().some(b=>"managed"===b.kind&&b.home===a&&E(b.id,!0))}},53174:(a,b,c)=>{c.d(b,{x:()=>g});var d=c(65465),e=c(69611),f=c(24534);function g(a){let b=a.cwd?.trim(),c=Object.hasOwn(a,"cwdInfo")?a.cwdInfo??null:b?(0,f.ot)(b):null,g=a.projectOwnership?.project.trim();if(g){let a=(0,d.G$)(g),b=c?.project&&c.project!==e.Mv;if(!(b&&a===c?.displayName)&&(a!==e.Mv||!b))return{project:a,...c?.worktree?{worktree:c.worktree}:{},source:"ownership"}}if(c?.project)return{project:c.project,...c.worktree?{worktree:c.worktree}:{},source:"cwd"};let h=a.launchProfileProject?.trim();if(h)return{project:(0,d.G$)(h),source:"launch-profile"};let i=a.fallbackProject?.trim();return i?{project:(0,d.G$)(i),source:"fallback"}:{project:null,source:null}}},53388:(a,b,c)=>{c.d(b,{Ix:()=>l,V8:()=>n,ae:()=>q,dA:()=>s,ot:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(52530),j=c(65377),k=c(78906);let l=(a,b,c)=>{let e=(0,d.spawnSync)(a,b,{cwd:c,encoding:"utf8"});return e.error?{code:null,stdout:"",stderr:e.error.message}:{code:e.status,stdout:e.stdout??"",stderr:e.stderr??""}};function m(a,b){let c=(b.stderr||b.stdout||"no output").trim();return{ok:!1,error:`${a}: ${c}`}}function n(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(!d||"HEAD"===d)return{ok:!1,error:"the repo checkout is detached; a workflow needs a branch to target"};let e=b("git",["worktree","add","-b",a.branch,a.worktreeDir,"HEAD"],a.repoDir);if(0!==e.code){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==c.code||c.stdout.trim()!==a.branch)return m("git worktree add",e)}let f=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==f.code)return m("resolving the workflow base ref",f);let g=f.stdout.trim();return g?{ok:!0,baseBranch:d,baseRef:g}:{ok:!1,error:"git returned an empty base ref"}}function o(a){let b=a.template.setup;if(!b)return{pid:null,error:"workflow has no setup command"};let c=(0,k.VO)(a.id);f().mkdirSync(h().dirname(c),{recursive:!0}),f().rmSync(c,{force:!0});let e=f().openSync((0,k._F)(a.id),"w"),g=f().openSync((0,k.RK)(a.id),"w");try{let f=(0,d.spawn)("sh",["-c",'sh -c "$LLV_SETUP_CMD"; printf \'%s\' "$?" > "$LLV_SETUP_EXIT"'],{cwd:a.worktreeDir,env:{...(0,j.Fd)(process.env),LLV_SETUP_CMD:b,LLV_SETUP_EXIT:c},detached:!0,stdio:["ignore",e,g]});return f.unref(),{pid:f.pid??null}}catch(a){return{pid:null,error:a instanceof Error?a.message:String(a)}}finally{f().closeSync(e),f().closeSync(g)}}function p(a){try{return f().readFileSync(a,"utf8")}catch{return""}}function q(a,b=Date.now()){let c=p((0,k.VO)(a.id)).trim();if(""!==c){if("0"===c)return{status:"done",detail:""};let b=p((0,k.RK)(a.id)).trim().split("\n").slice(-3).join("\n");return{status:"failed",detail:`setup exited with code ${c}${b?`: ${b}`:""}`}}if(null!=a.setupPid&&(0,i.pl)(a.setupPid))return{status:"running",detail:""};let d=function(a,b){try{return b-f().statSync(a).mtimeMs}catch{return null}}((0,k._F)(a.id),b);return null!==d&&d<3e3?{status:"running",detail:""}:{status:"failed",detail:"setup was interrupted before it finished"}}function r(a){let b=a.task.split("\n").map(a=>a.trim()).find(Boolean)??a.name;return b.length>72?b.slice(0,69)+"…":b}function s(a,b,c){let d=c("git",["status","--porcelain"],a.worktreeDir);if(0!==d.code)return m("checking the worktree state",d);let e=d.stdout.split("\n").filter(a=>a.trim());if(e.length){let a=e.slice(0,3).map(a=>a.slice(3).trim()||a.trim()),b=e.length>a.length?`, +${e.length-a.length} more`:"";return{ok:!1,error:`the worktree has uncommitted changes (${a.join(", ")}${b}) — commit them, then retry the finish`}}return"merge"===a.template.finish?function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(d!==a.baseBranch)return{ok:!1,error:`the repo checkout is on ${d}; check out ${a.baseBranch} before merging`};let e=b("git",["merge","--no-ff",a.branch,"-m",`Merge ${a.branch}: ${r(a)}`],a.repoDir);return 0!==e.code?(b("git",["merge","--abort"],a.repoDir),m("git merge",e)):{ok:!0,prUrl:null}}(a,c):function(a,b,c){let d=c("git",["push","-u","origin",a.branch],a.worktreeDir);if(0!==d.code)return m("git push",d);let e=c("gh",["pr","create","--title",r(a),"--body",b,"--base",a.baseBranch,"--head",a.branch],a.worktreeDir);if(0===e.code){var f;return{ok:!0,prUrl:(f=e.stdout,f.match(/https:\/\/\S+\/pull\/\d+/)?.[0]??null)}}if(/already exists/i.test(e.stderr)){let b=c("gh",["pr","view",a.branch,"--json","url","--jq",".url"],a.worktreeDir);if(0===b.code&&b.stdout.trim())return{ok:!0,prUrl:b.stdout.trim()}}return m("gh pr create",e)}(a,b,c)}},53410:(a,b,c)=>{c.d(b,{Ol:()=>o,Qm:()=>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(30277);let k=new Int32Array(new SharedArrayBuffer(4));class l extends Error{constructor(a){super(a),this.name="FileTransactionBusyError"}}function m(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){let a="string"==typeof b.startIdentity?b.startIdentity:null;if(!j.B.pidAlive(b.pid))return!0;if(null!==a){let c=j.B.processIdentity(b.pid);return null!==c&&c!==a}return!1}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function n(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function o(a,b,c){let d,f,h,o,p=(d=`${a}.write-lock`,f=`${a}.write-locks`,g().mkdirSync(f,{recursive:!0,mode:448}),h={pid:process.pid,startIdentity:j.B.processIdentity(process.pid),token:e().randomUUID()},o=i().join(f,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`),g().writeFileSync(o,JSON.stringify(h),{encoding:"utf8",flag:"wx",mode:384}),{lockPath:d,queuePath:f,owner:h,ticketPath:o});try{for(let a=0;a<6e3;a+=1){let a=function(a){let b;if(function(a){let b=[];for(let c of g().readdirSync(a.queuePath).filter(a=>a.endsWith(".json")).sort()){let d=i().join(a.queuePath,c);if(m(d)){g().rmSync(d,{force:!0});continue}g().existsSync(d)&&b.push(d)}return b[0]??null}(a)!==a.ticketPath)return null;try{b=g().openSync(a.lockPath,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return m(a.lockPath)&&g().rmSync(a.lockPath,{force:!0}),null}try{return g().writeFileSync(b,JSON.stringify(a.owner),"utf8"),g().fsyncSync(b),b}catch(c){throw g().closeSync(b),g().rmSync(a.lockPath,{force:!0}),c}}(p);if(null===a){Atomics.wait(k,0,0,5);continue}try{return c()}finally{g().closeSync(a),n(p.lockPath,p.owner.token)}}throw new l(b)}finally{n(p.ticketPath,p.owner.token)}}},53812:(a,b,c)=>{c.d(b,{S:()=>e,n:()=>f});let d=/^[A-Za-z0-9_.:-]{1,64}$/;function e(a){return"string"==typeof a&&d.test(a)?a:void 0}function f(a){if(!a||"object"!=typeof a||Array.isArray(a)||"operator"!==a.kind&&"agent"!==a.kind)return null;let b="agent"===a.kind?e(a.role):void 0;return{kind:a.kind,...b?{role:b}:{}}}},53835:(a,b,c)=>{c.d(b,{G:()=>e});let d=Promise.resolve();function e(a){let b=d.catch(()=>void 0).then(async()=>{let b=await a.snapshot();await a.append({scope:{type:"system",id:"files"},kind:"files.revision",payload:{filesRevision:b.filesRevision+1},producer:{kind:"structured-spawn-materialized"}})});return d=b,b}},54132:(a,b,c)=>{c.d(b,{O:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920);function k(a){let b=a.trim().replace(/\s+/gu," ");return e().createHash("sha256").update(b).digest("hex")}function l(a){return a.query("PRAGMA table_info(transcript_messages)").all().some(a=>"body_hash"===a.name)}function m(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function n(a){return"string"==typeof a?a.trim():(Array.isArray(a)?a.filter(a=>null!==m(a)):[]).filter(a=>"text"===a.type||"input_text"===a.type||"output_text"===a.type).map(a=>"string"==typeof a.text?a.text:"").filter(Boolean).join("\n").trim()}async function*o(a){let b=[],c=0,d=0,e=1,f=0;for await(let h of g().createReadStream(a)){let a=Buffer.isBuffer(h)?h:Buffer.from(h),g=0;for(;;){let h=a.indexOf(10,g);if(h<0)break;let i=a.subarray(g,h),j=c+i.length,k=b.length?Buffer.concat(i.length?[...b,i]:b,j):i,l=13===k.at(-1)?k.subarray(0,-1):k;yield{bytes:l,byteOffset:d,lineNumber:e},e+=1,b=[],c=0,d=f+(g=h+1)}if(g<a.length){let d=a.subarray(g);b.push(d),c+=d.length}f+=a.length}if(c){let a=1===b.length?b[0]:Buffer.concat(b,c),f=13===a.at(-1)?a.subarray(0,-1):a;yield{bytes:f,byteOffset:d,lineNumber:e}}}async function*p(a){let b=new Map,c=[];for await(let d of o(a.path)){let e;if(!d.bytes.length)continue;try{e=JSON.parse(d.bytes.toString("utf8"))}catch{continue}let f=function(a,b,c,d){let e=null,f="",g="claude";if("claude"===b.engine&&("user"===a.type||"assistant"===a.type))e=a.type,f=n(m(a.message)?.content);else if("codex"===b.engine&&"response_item"===a.type){g="response";let b=m(a.payload);b?.type==="message"&&("user"===b.role||"assistant"===b.role)?(e=b.role,f=n(b.content)):b?.type==="agent_message"&&(e="assistant",f=n(b.content))}else if("codex"===b.engine&&"event_msg"===a.type){g="event";let b=m(a.payload);b?.type==="user_message"?(e="user",f="string"==typeof b.message?b.message.trim():""):b?.type==="agent_message"&&(e="assistant",f="string"==typeof b.message?b.message.trim():"")}return e&&f?{body:f,speaker:e,timestamp:function(a){if("string"!=typeof a)return null;let b=Date.parse(a);return Number.isFinite(b)?Math.floor(b/1e3):null}(a.timestamp??a.created_at),byteOffset:c,lineNumber:d,representation:g}:null}(m(e)??{},a,d.byteOffset,d.lineNumber);if(!f)continue;if("claude"!==f.representation){let a=`${f.speaker}\0${f.body}`,d=b.get(a),e=d&&(null!==f.timestamp&&null!==d.timestamp?2>=Math.abs(f.timestamp-d.timestamp):f.lineNumber-d.lineNumber<=2);if(d&&d.representation!==f.representation&&e)continue;let g={representation:f.representation,timestamp:f.timestamp,lineNumber:f.lineNumber};for(b.set(a,g),c.push({key:a,message:g});c.length>8;){let a=c.shift();b.get(a.key)===a.message&&b.delete(a.key)}}let{representation:g,...h}=f;yield h}}function q(a,b){a.query("DELETE FROM transcript_messages_fts WHERE rowid IN (SELECT id FROM transcript_messages WHERE transcript_path = ?)").run(b),a.query("DELETE FROM transcript_messages WHERE transcript_path = ?").run(b),a.query("DELETE FROM transcript_files WHERE path = ?").run(b)}async function r(a,b={}){let c=function(){let a=(0,j.BQ)("transcript-search.sqlite");g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(function(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("Transcript search requires the Bun runtime");return a.Database}())(a,{create:!0,strict:!0});try{return b.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = NORMAL; PRAGMA foreign_keys = ON;"),b.exec(`
129
+ `;try{if(e().existsSync(c))return void o.add(a);if(!e().existsSync(b)){e().mkdirSync(a,{recursive:!0}),e().writeFileSync(c,d()),o.add(a);return}if(!e().existsSync(a)){e().mkdirSync(i().dirname(a),{recursive:!0});let c=`${a}.migrating.${process.pid}`;e().rmSync(c,{recursive:!0,force:!0});try{e().cpSync(b,c,{recursive:!0}),e().writeFileSync(i().join(c,p),d()),e().renameSync(c,a)}catch(a){throw e().rmSync(c,{recursive:!0,force:!0}),a}o.add(a);return}e().cpSync(b,a,{recursive:!0,force:!1,errorOnExist:!1}),e().writeFileSync(c,d()),o.add(a)}catch(c){console.error(`viewer state migration ${b} -> ${a} failed; will retry:`,c)}}function r(){let a=process.env.LLV_STATE_DIR;if(j()){var b=a;let c=b||i().join(m(),k,"state-staging"),d=i().resolve(c);if([i().join(m(),k,"state"),i().join(m(),l,"state"),i().join(g().homedir(),".claude","viewer-state")].some(a=>i().resolve(a)===d))throw Error(`staging mode refuses the production state dir ${d}; set LLV_STATE_DIR to a staging-only dir`);return c}if(a)return a;let c=i().join(m(),k,"state");return q(c,i().join(g().homedir(),".claude","viewer-state")),c}function s(...a){return i().join(r(),...a)}function t(){if(j())return s("inbox");let a=i().join(m(),k,"inbox");return q(a,i().join(g().homedir(),".claude","viewer-inbox")),a}},51720:(a,b,c)=>{c.d(b,{s:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91836),i=c(89831),j=c(52530),k=c(69882);function l(a){return new Promise(b=>setTimeout(b,a))}async function m(a){if(a.knownTranscript)return a.knownTranscript;if("codex"!==a.engine)return null;let b=a.panePid;if("number"!=typeof b||!Number.isInteger(b)||b<=0)return null;let c=a.env??{},d=c.now??Date.now,f=c.sleep??l,m=c.candidatePaths??(b=>(function(a,b=k.GH["codex-sessions"]){let c=a-5e3,d=[],f=(a,b)=>{let h;if(!(b>6)){try{h=e().readdirSync(a,{withFileTypes:!0})}catch{return}for(let i of h){let h=g().join(a,i.name);if(i.isDirectory()){f(h,b+1);continue}if(i.isFile()&&i.name.endsWith(".jsonl"))try{let a=e().statSync(h);a.mtimeMs>=c&&d.push({path:h,mtimeMs:a.mtimeMs})}catch{continue}}}};return f(b,0),d.sort((a,b)=>b.mtimeMs-a.mtimeMs).slice(0,32).map(a=>a.path)})(b,a.codexSessionsDir??k.GH["codex-sessions"])),n=c.holderPidByPath??(a=>(0,j.SP)(a,!0)),o=c.parentPidOf??j.Ib,p=c.timeoutMs??2500,q=c.pollMs??150,r=d()+p;for(;;){let c=function(a,b,c,d){let f=d.holderPidByPath(a);for(let g of a){let a=f.get(g);if(void 0!==a&&function(a,b){let c=(0,h.tX)(a,{bytes:8192,maxLines:10});return null===c||c===b}(g,c)&&!function(a){try{let b=e().statSync(a);return(0,i.ET)(a,b.size)}catch{return!1}}(g)&&function(a,b,c){let d=new Set;for(let e=a;null!==e&&!d.has(e);e=c(e)){if(e===b)return!0;if(d.add(e),d.size>64)break}return!1}(a,b,d.parentPidOf))return g}return null}(m(a.startedAtMs),b,a.cwd,{holderPidByPath:n,parentPidOf:o});if(c)return c;if(d()>=r)return null;await f(q)}}},52114:(a,b,c)=>{c.d(b,{yj:()=>k,zC:()=>p});var d=c(31421),e=c(40006),f=c(37788),g=c(14252),h=c(65377);let i=["-c","cli_auth_credentials_store=file","-c","mcp_servers={}","app-server"],j={now:()=>Date.now(),setTimeout:(a,b)=>setTimeout(a,b),clearTimeout:a=>clearTimeout(a)};class k extends Error{constructor(a,b="definite"){super((0,e.XR)(a)),this.outcome=b,this.name="CodexAppServerError"}}function l(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function m(a){return new k(`Codex app-server protocol error: ${a}`,"unknown")}function n(a,b,c){if("string"!=typeof a[b]||!a[b])throw m(`${c} response is missing ${b}`);return a[b]}function o(a,b){if(null==a)return null;if(!l(a)||"number"!=typeof a.usedPercent||!Number.isFinite(a.usedPercent)||a.usedPercent<0||a.usedPercent>100)throw m(`${b} response has an invalid rate-limit window`);let c=a.resetsAt,d=a.windowDurationMins;if(null!=c&&("number"!=typeof c||!Number.isInteger(c)||c<0))throw m(`${b} response has an invalid reset timestamp`);if(null!=d&&("number"!=typeof d||!Number.isInteger(d)||d<0))throw m(`${b} response has an invalid window duration`);return{usedPercent:a.usedPercent,resetsAt:"number"==typeof c?c:null,windowDurationMins:"number"==typeof d?d:null}}class p{constructor(a,b,c,d,f,g){this.child=a,this.clock=b,this.requestTimeoutMs=c,this.shutdownGraceMs=d,this.maxStdoutBufferBytes=f,this.signalProcess=g,this.pending=new Map,this.notificationListeners=new Set,this.requestListeners=new Set,this.lifecycleListeners=new Set,this.nextId=1,this.stdoutChunks=[],this.stdoutBufferBytes=0,this.stderrTail="",this.lastInboundEnvelope=null,this.closed=!1,this.reaped=!1,this.shutdownTimer=null,a.stdout.on("data",a=>this.acceptStdout(String(a))),a.stderr?.on("data",a=>{this.stderrTail=(0,e.XR)((this.stderrTail+String(a)).slice(-2e3))}),a.on("error",a=>this.fail(new k(`Codex app-server child error: ${a.message}`,"unknown"))),a.on("close",(a,b)=>{this.reaped=!0,this.emitLifecycle({type:"reaped"});let c=this.stderrTail?`: ${this.stderrTail}`:"";this.closed||this.fail(new k(`Codex app-server exited (code ${a??"none"}, signal ${b??"none"})${c}`,"unknown"))})}static async start(a){let b=new p((a.spawn??function(a,b){return(0,d.spawn)(process.env.LLV_CODEX_BINARY||"codex",[...b],{env:{...(0,h.Fd)(process.env),CODEX_HOME:a},stdio:["pipe","pipe","pipe"],detached:!0})})(a.home,i),a.clock??j,a.requestTimeoutMs??1e4,a.shutdownGraceMs??1e3,a.maxStdoutBufferBytes??0x4000000,a.signalProcess??process.kill);try{let a=await b.request("initialize",{clientInfo:{name:"agent-log-viewer",version:"0.11.7"},capabilities:{experimentalApi:!0}});if(!l(a))throw m("initialize response must be an object");return b.notify("initialized"),b}catch(a){throw b.close(),a}}onNotification(a){return this.notificationListeners.add(a),()=>this.notificationListeners.delete(a)}onRequest(a){return this.requestListeners.add(a),()=>this.requestListeners.delete(a)}onLifecycle(a){return this.lifecycleListeners.add(a),()=>this.lifecycleListeners.delete(a)}inboundEnvelope(){return this.lastInboundEnvelope}async readAccount(){let a=await this.request("account/read",{});if(!l(a)||"boolean"!=typeof a.requiresOpenaiAuth)throw m("account/read response is malformed");if(null!==a.account&&void 0!==a.account&&!l(a.account))throw m("account/read response has an invalid account");return{account:l(a.account)?{..."string"==typeof a.account.type?{type:a.account.type}:{},..."string"==typeof a.account.email||null===a.account.email?{email:a.account.email}:{},..."string"==typeof a.account.planType||null===a.account.planType?{planType:a.account.planType}:{}}:null,requiresOpenaiAuth:a.requiresOpenaiAuth}}async startDeviceLogin(){let a=await this.request("account/login/start",{type:"chatgptDeviceCode"});if(!l(a)||"chatgptDeviceCode"!==a.type)throw m("account/login/start response has an unexpected type");return{loginId:n(a,"loginId","account/login/start"),verificationUrl:n(a,"verificationUrl","account/login/start"),userCode:n(a,"userCode","account/login/start")}}async cancelLogin(a){let b=await this.request("account/login/cancel",{loginId:a});if(!l(b)||"canceled"!==b.status&&"notFound"!==b.status)throw m("account/login/cancel response is malformed");return b.status}async readRateLimits(){let a=await this.request("account/rateLimits/read");if(!l(a)||!l(a.rateLimits))throw m("account/rateLimits/read response is malformed");let b=a.rateLimits;return{rateLimits:{primary:o(b.primary,"account/rateLimits/read"),secondary:o(b.secondary,"account/rateLimits/read"),planType:"string"==typeof b.planType?b.planType:null}}}async forkThread(a){let b=await this.request("thread/fork",{threadId:a}),c=l(b)&&l(b.thread)?b.thread:b;if(!l(c))throw m("thread/fork response is malformed");return{id:n(c,"id","thread/fork"),path:"string"==typeof c.path?c.path:null}}async resumeThread(a,b={}){let c=await this.request("config/read",{...b.cwd?{cwd:b.cwd}:{},includeLayers:!1}),d={...(0,g.v)(c),...b.effort?{model_reasoning_effort:b.effort}:{}},e=await this.request("thread/resume",{threadId:a,...b.path?{path:b.path}:{},...b.cwd?{cwd:b.cwd}:{},...b.model?{model:b.model}:{},...null!=b.fast?{serviceTier:b.fast?"priority":"standard"}:{},...b.approvalPolicy?{approvalPolicy:b.approvalPolicy}:{},...b.sandbox?{sandbox:b.sandbox}:{},config:d}),f=l(e)&&l(e.thread)?e.thread:e;if(!l(f))throw m("thread/resume response is malformed");return{id:n(f,"id","thread/resume"),path:"string"==typeof f.path?f.path:null}}async readThread(a){let b=await this.request("thread/read",{threadId:a,includeTurns:!0}),c=l(b)&&l(b.thread)?b.thread:b;if(!l(c))throw m("thread/read response is malformed");return{id:n(c,"id","thread/read"),path:"string"==typeof c.path?c.path:null}}async setThreadName(a,b){await this.request("thread/name/set",{threadId:a,name:b})}async setThreadGoal(a,b,c){await this.request("thread/goal/set",{threadId:a,objective:b,...c?{status:c}:{}})}close(){if(!this.closed){for(let a of(this.closed=!0,this.stdoutChunks=[],this.stdoutBufferBytes=0,this.pending.values()))this.clock.clearTimeout(a.timeout),a.reject(new k("Codex app-server client closed","unknown"));this.pending.clear(),this.beginShutdown(),this.emitLifecycle({type:"closed"})}}notify(a,b){this.write({jsonrpc:"2.0",method:a,...b?{params:b}:{}})}request(a,b){if(this.closed)return Promise.reject(new k("Codex app-server client is closed"));let c=this.nextId++;return new Promise((d,e)=>{let f=this.clock.setTimeout(()=>{if(!this.pending.has(c))return;this.pending.delete(c);let b=new k(`Codex app-server request timed out: ${a}`,"unknown");e(b),this.fail(b)},this.requestTimeoutMs);this.pending.set(c,{method:a,resolve:d,reject:e,timeout:f});try{this.write({jsonrpc:"2.0",id:c,method:a,...b?{params:b}:{}})}catch(a){this.pending.delete(c),this.clock.clearTimeout(f),e(a instanceof Error?a:new k(String(a)))}})}write(a){try{this.child.stdin.write(JSON.stringify(a)+"\n")}catch(a){throw new k(`could not write to Codex app-server: ${a instanceof Error?a.message:String(a)}`)}}acceptStdout(a){if(this.closed)return;let b=0,c=a.indexOf("\n",b);for(;c>=0;){let d=a.slice(b,c);if(this.stdoutBufferBytes+Buffer.byteLength(d,"utf8")>this.maxStdoutBufferBytes)return void this.fail(m("received an oversized JSONL line"));let e=this.stdoutChunks.length>0?this.stdoutChunks.join("")+d:d;this.stdoutChunks=[],this.stdoutBufferBytes=0;let f=e.trim();if(f&&this.acceptMessage(f),this.closed)return;b=c+1,c=a.indexOf("\n",b)}let d=a.slice(b);if(!d)return;let e=Buffer.byteLength(d,"utf8");this.stdoutBufferBytes+e>this.maxStdoutBufferBytes?this.fail(m("received an oversized unterminated JSONL line")):(this.stdoutChunks.push(d),this.stdoutBufferBytes+=e)}acceptMessage(a){let b,c;try{b=JSON.parse(a)}catch{this.fail(m("received malformed JSON"));return}try{c=(0,e.Fp)(b)}catch(b){let a=b instanceof e.qN?b.message:"received malformed JSON-RPC";this.fail(new k(a,"unknown"));return}if(this.lastInboundEnvelope=c.envelope,"request"===c.kind){let a=this.requestListeners.values().next().value;if(!a){console.warn(`[codex app-server] rejected unhandled server request ${c.method}`),this.write({jsonrpc:"2.0",id:c.id,error:{code:-32601,message:"Viewer has no handler for this request"}});return}Promise.resolve(a({id:c.id,method:c.method,params:c.params})).then(a=>this.write({jsonrpc:"2.0",id:c.id,result:a??{}})).catch(a=>this.write({jsonrpc:"2.0",id:c.id,error:{code:-32e3,message:(0,e.XR)(a instanceof Error?a.message:"request handler failed")}}));return}if("notification"===c.kind){let a={method:c.method,params:c.params};for(let b of this.notificationListeners)try{b(a)}catch{}return}let d=c.id;if("number"!=typeof d)return void this.fail(m("response has an invalid id"));let f=this.pending.get(d);if(!f)return void this.fail(m(`response id ${d} has no matching request`));if(this.pending.delete(d),this.clock.clearTimeout(f.timeout),c.error){let a;f.reject((a=c.error.message,new k(`Codex app-server request failed: ${a}`)))}else f.resolve(c.result)}fail(a){if(!this.closed){for(let b of(this.closed=!0,this.stdoutChunks=[],this.stdoutBufferBytes=0,this.pending.values()))this.clock.clearTimeout(b.timeout),b.reject(a);this.pending.clear(),this.beginShutdown(),this.emitLifecycle({type:"failed",error:a})}}beginShutdown(){try{this.child.stdin.end()}catch{}this.reaped?(0,f.v)(this.child.pid,"SIGTERM",this.signalProcess):(0,f.f)(this.child,"SIGTERM",this.signalProcess),this.shutdownTimer||(this.shutdownTimer=this.clock.setTimeout(()=>{this.shutdownTimer=null,this.reaped?(0,f.v)(this.child.pid,"SIGKILL",this.signalProcess):(0,f.f)(this.child,"SIGKILL",this.signalProcess)},this.shutdownGraceMs))}emitLifecycle(a){for(let b of this.lifecycleListeners)try{b(a)}catch{}}}},52530:(a,b,c)=>{c.d(b,{$U:()=>r,$w:()=>o,Bj:()=>B,FQ:()=>q,Fe:()=>s,Ib:()=>A,SP:()=>p,TK:()=>u,Tu:()=>v,VI:()=>t,Vt:()=>z,pl:()=>n,qM:()=>x,qP:()=>w});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(50920),i=c(92233),j=c(69882);let k=null,l=null,m=null;function n(a){return Number.isInteger(a)&&a>0&&i.B.pidAlive(a)}function o(a=!1){let b=Date.now();if(!a&&k&&b-k.at<12e3)return k.map;let c=new Map;return i.B.scanFdTargetsUnder(j.GH["claude-tasks"],(a,b)=>{a.endsWith(".output")&&!c.has(a)&&c.set(a,b)}),k={at:b,map:c},c}function p(a,b=!1){let c=new Map;for(let b of a){if(c.size>=512)break;if(!b)continue;c.set(b,b);let a=function(a){try{return e().realpathSync(a)}catch{return null}}(b);a&&c.set(a,b)}let d=[...c.keys()].sort().join("\0"),f=Date.now();if(!b&&l&&l.key===d&&f-l.at<12e3)return l.map;let g=new Map;return c.size>0&&i.B.scanFdTargetsFor([...c.keys()],(a,b,d)=>{let e=c.get(a);e&&!g.has(e)&&d()&&g.set(e,b)}),l={at:f,key:d,map:g},g}function q(a,b){return i.B.pidWritesPath(a,b)}function r(a){return i.B.readArgv(a)}function s(a){for(let b of a.slice(0,2)){let a=g().basename(b);if("claude"===a||"claude.exe"===a)return"claude";if("codex"===a||"codex.exe"===a)return"codex"}return null}let t="LLV_STRUCTURED_HOST";function u(){return(0,h.BQ)()}function v(a){return i.B.readEnvVar(a,t)}function w(a){let b=s(a);if(null===b||z(a))return null;if("codex"===b)return a.includes("app-server")?"codex":null;let c=a.includes("-p")||a.includes("--print"),d=a.some((b,c)=>"--input-format"===b&&"stream-json"===a[c+1]);return c&&d?"claude":null}function x(a){return a.includes("--fork-session")}let y=new Set(["daemon","--bg-pty-host","--bg-spare"]);function z(a){return a.some(a=>y.has(a))}function A(a){return i.B.readPpid(a)}function B(a=!1){let b=Date.now();if(!a&&m&&b-m.at<12e3)return m.list;let c=[];for(let a of i.B.listProcesses()){let b=s(a.argv);null===b||z(a.argv)||null!==a.cwd&&c.push({pid:a.pid,engine:b,argv:a.argv,cwd:a.cwd,tty:a.tty})}return m={at:b,list:c},c}},53133:(a,b,c)=>{c.d(b,{Fn:()=>L,Hy:()=>w,No:()=>M,OL:()=>u,UV:()=>s,Yb:()=>J,ZK:()=>T,fM:()=>U,fg:()=>X,kK:()=>N,o1:()=>A,ob:()=>O,pW:()=>Q,qX:()=>R,ss:()=>P,x0:()=>W,y3:()=>S});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(65377),l=c(14071);let m=/^[a-z0-9][a-z0-9-]{0,31}$/,n="default",o=["skills","commands","agents"],p=["settings.json"],q=new Set([".credentials.json",".claude.json","projects","history.jsonl","session-env","shell-snapshots","file-history","todos","cache","debug","backups","paste-cache","plugins","mcp.json","settings.local.json"]),r=null;class s extends Error{constructor(a){super(`unknown Claude account: ${a}`),this.name="UnknownClaudeAccountError"}}class t extends Error{constructor(){super("account label must contain visible text and be at most 80 characters"),this.name="InvalidClaudeAccountLabelError"}}class u extends Error{constructor(){super("Claude account registry is corrupt; repair or remove it before changing accounts"),this.name="CorruptClaudeAccountsError"}}class v extends Error{constructor(){super("managed Claude home failed safety checks"),this.name="UnsafeClaudeHomeError"}}function w(){return i().resolve(process.env.LLV_CLAUDE_HOME||i().join(g().homedir(),".claude"))}function x(){return i().join(i().dirname((0,j.Pn)()),"accounts","claude")}function y(){return(0,j.BQ)("claude-accounts.json")}function z(){return i().join(i().dirname((0,j.Pn)()),"shared","claude")}function A(){return i().join(z(),"projects")}function B(a){let b=i().join(a,"projects");try{if(!e().lstatSync(b).isSymbolicLink())return b;let a=A();if(e().realpathSync(b)===e().realpathSync(a))return a}catch{}return b}function C(a){return i().join(x(),a)}function D(){return{version:1,active:n,accounts:[],retired:[]}}function E(a,b=!1){if(!m.test(a)||a===n)return!1;let c=i().resolve(x()),d=i().resolve(C(a));if(i().dirname(d)!==c)return!1;try{var f;let a=e().lstatSync(c),b=e().lstatSync(d);if(!a.isDirectory()||a.isSymbolicLink()||!b.isDirectory()||b.isSymbolicLink()||(f=b.mode,(63&f)!=0||(511&f)!=448))return!1;return i().dirname(e().realpathSync(d))===e().realpathSync(c)}catch{return!b}}function F(){let a,b=y(),c=`${b}:${function(a){try{let b=e().statSync(a);return`${b.mtimeMs}:${b.size}`}catch{return"missing"}}(b)}`;if(r?.key===c)return r.loaded;try{a=e().existsSync(b)?function(a){if(!a||"object"!=typeof a||1!==a.version||"string"!=typeof a.active||!Array.isArray(a.accounts)||void 0!==a.retired&&!Array.isArray(a.retired))return{registry:D(),corrupt:!0};let b=new Set,c=!1,d=[];for(let e of a.accounts){if(!(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.label&&"managed"===e.kind&&"number"==typeof e.createdAt&&E(e.id))||b.has(e.id)){c=!0;continue}b.add(e.id),d.push(e)}let e=[];for(let d of a.retired??[]){if(!(d&&"object"==typeof d&&"string"==typeof d.id&&"string"==typeof d.label&&"number"==typeof d.retiredAt&&E(d.id))||b.has(d.id)){c=!0;continue}b.add(d.id),e.push(d)}return{registry:{version:1,active:a.active,accounts:d,retired:e},corrupt:c}}(JSON.parse(e().readFileSync(b,"utf8"))):{registry:D(),corrupt:!1}}catch{a={registry:D(),corrupt:!0}}return r={key:c,loaded:a},a}function G(){let a=F();if(a.corrupt)throw new u;return a.registry}function H(a){return(0,l.oV)(()=>{let b=`${y()}.lock`,c=Date.now();for(e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});;)try{let c=e().openSync(b,"wx",384);try{return e().writeFileSync(c,`${process.pid}
130
+ `,"utf8"),a()}finally{e().closeSync(c),e().rmSync(b,{force:!0})}}catch(a){if("EEXIST"!==a.code)throw a;try{if(Date.now()-e().statSync(b).mtimeMs>3e4){e().rmSync(b,{force:!0});continue}}catch{continue}if(Date.now()-c>=5e3)throw Error("Claude account registry is busy; retry shortly");Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,10)}})}function I(a){let b=y();e().mkdirSync(i().dirname(b),{recursive:!0,mode:448});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${Date.now()}.tmp`);try{e().writeFileSync(c,JSON.stringify(a,null,2)+"\n",{mode:384});let d=e().openSync(c,"r");try{e().fsyncSync(d)}finally{e().closeSync(d)}e().renameSync(c,b);let f=e().openSync(i().dirname(b),"r");try{e().fsyncSync(f)}finally{e().closeSync(f)}r=null}finally{e().rmSync(c,{force:!0})}}function J(a,b=!1){let c=i().join(a,".credentials.json");try{let a=e().lstatSync(c);return a.isFile()&&!a.isSymbolicLink()&&a.uid===(process.getuid?.()??a.uid)&&(63&a.mode)==0}catch{return!b}}function K(a){let b=C(a.id);return{...a,home:b,projectsDir:B(b),authPresent:J(b,!0)}}function L(){let a;return[{id:n,label:"Main",kind:"legacy",home:a=w(),projectsDir:B(a),authPresent:J(a,!0),createdAt:0},...F().registry.accounts.map(K)]}function M(){let a=F().registry.active;return L().some(b=>b.id===a)?a:n}function N(){return F().corrupt}function O(a){let b=L().find(b=>b.id===(a??M()));if(!b)throw new s(a??"");if("managed"===b.kind&&(!E(b.id,!0)||!J(b.home)))throw new v;return{id:b.id,kind:b.kind,home:b.home,projectsDir:b.projectsDir}}function P(a){H(()=>{r=null;let b=G();if(!L().some(b=>b.id===a))throw new s(a);I({...b,active:a})})}function Q(){return[...new Set([...L().map(a=>a.projectsDir),...F().registry.retired.map(a=>B(C(a.id)))])]}function R(a,b){let c;try{c=e().realpathSync(a)}catch{return{kind:"unreadable"}}let d=L(),f=null;try{f=e().realpathSync(A())}catch{}for(let a of d)try{let b=e().realpathSync(a.projectsDir);if(null!==f&&b===f)continue;if(c.startsWith(b+i().sep))return{kind:"owned",accountId:a.id,home:a.home,source:"path"}}catch{}let g=b?d.find(a=>a.id===b):void 0;if(g)return{kind:"owned",accountId:g.id,home:g.home,source:"recorded"};if(null!==f&&c.startsWith(f+i().sep)){let a=M(),b=d.find(b=>b.id===a)??d[0];if(b)return{kind:"owned",accountId:b.id,home:b.home,source:"shared-store"}}return{kind:"foreign"}}function S(a){let b=R(a);return"owned"===b.kind&&"path"===b.source?b.home:null}function T(){let a=i().join(z(),"settings.json");return e().existsSync(a)?a:null}function U(a){let b=a.trim();if(!b||b.length>80||/[\u0000-\u001f\u007f]/.test(b))throw new t;return H(()=>{r=null;let a=G(),c=function(a,b){let c=a.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"account";for(let a=0;;a+=1){let d=a?`-${a}`:"",f=`${c.slice(0,32-d.length)}${d}`;if(m.test(f)&&f!==n&&!b.has(f)&&!e().existsSync(C(f)))return f}}(b,new Set([...L().map(a=>a.id),...a.retired.map(a=>a.id)])),d=C(c),f=!1;try{e().mkdirSync(i().dirname(d),{recursive:!0,mode:448}),e().chmodSync(i().dirname(d),448),e().mkdirSync(d,{mode:448}),e().chmodSync(d,448),f=!0;let g=function(){let a=z(),b=`${a}.tmp-${process.pid}-${Date.now()}`,c={files:0,bytes:0};e().rmSync(b,{recursive:!0,force:!0}),e().mkdirSync(b,{recursive:!0,mode:448});try{for(let a of[...o,...p]){let d=i().join(w(),a);e().existsSync(d)&&function a(b,c,d){let f=e().lstatSync(b);if(!f.isSymbolicLink()&&(f.isDirectory()||f.isFile())){if(f.isFile()){if(++d.files>2e3||(d.bytes+=f.size)>0x1000000)throw Error("Claude capability snapshot exceeds safety limit");e().mkdirSync(i().dirname(c),{recursive:!0,mode:448}),e().copyFileSync(b,c),e().chmodSync(c,384);return}for(let f of(e().mkdirSync(c,{recursive:!0,mode:448}),e().readdirSync(b,{withFileTypes:!0})))q.has(f.name)||a(i().join(b,f.name),i().join(c,f.name),d)}}(d,i().join(b,a),c)}return e().mkdirSync(i().dirname(a),{recursive:!0,mode:448}),e().chmodSync(i().dirname(a),448),e().rmSync(a,{recursive:!0,force:!0}),e().renameSync(b,a),e().chmodSync(a,448),a}catch(a){throw e().rmSync(b,{recursive:!0,force:!0}),a}}();for(let a of o){let b=i().join(g,a);e().existsSync(b)&&e().symlinkSync(b,i().join(d,a))}e().mkdirSync(i().join(d,"projects"),{mode:448});let h={id:c,label:b,kind:"managed",createdAt:Date.now()};return I({...a,accounts:[...a.accounts,h]}),K(h)}catch(a){throw f&&e().rmSync(d,{recursive:!0,force:!0}),a}})}let V=["ANTHROPIC_API_KEY","ANTHROPIC_AUTH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_BASE_URL","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","VERTEXAI_PROJECT","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"];function W(a,b=process.env){let c={...(0,k.Fd)(b),CLAUDE_CONFIG_DIR:a};for(let a of V)delete c[a];return c}function X(a){return L().some(b=>"managed"===b.kind&&b.home===a&&E(b.id,!0))}},53174:(a,b,c)=>{c.d(b,{x:()=>g});var d=c(65465),e=c(69611),f=c(24534);function g(a){let b=a.cwd?.trim(),c=Object.hasOwn(a,"cwdInfo")?a.cwdInfo??null:b?(0,f.ot)(b):null,g=a.projectOwnership?.project.trim();if(g){let a=(0,d.G$)(g),b=c?.project&&c.project!==e.Mv;if(!(b&&a===c?.displayName)&&(a!==e.Mv||!b))return{project:a,...c?.worktree?{worktree:c.worktree}:{},source:"ownership"}}if(c?.project)return{project:c.project,...c.worktree?{worktree:c.worktree}:{},source:"cwd"};let h=a.launchProfileProject?.trim();if(h)return{project:(0,d.G$)(h),source:"launch-profile"};let i=a.fallbackProject?.trim();return i?{project:(0,d.G$)(i),source:"fallback"}:{project:null,source:null}}},53388:(a,b,c)=>{c.d(b,{Ix:()=>l,V8:()=>n,ae:()=>q,dA:()=>s,ot:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(52530),j=c(65377),k=c(78906);let l=(a,b,c)=>{let e=(0,d.spawnSync)(a,b,{cwd:c,encoding:"utf8"});return e.error?{code:null,stdout:"",stderr:e.error.message}:{code:e.status,stdout:e.stdout??"",stderr:e.stderr??""}};function m(a,b){let c=(b.stderr||b.stdout||"no output").trim();return{ok:!1,error:`${a}: ${c}`}}function n(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(!d||"HEAD"===d)return{ok:!1,error:"the repo checkout is detached; a workflow needs a branch to target"};let e=b("git",["worktree","add","-b",a.branch,a.worktreeDir,"HEAD"],a.repoDir);if(0!==e.code){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==c.code||c.stdout.trim()!==a.branch)return m("git worktree add",e)}let f=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==f.code)return m("resolving the workflow base ref",f);let g=f.stdout.trim();return g?{ok:!0,baseBranch:d,baseRef:g}:{ok:!1,error:"git returned an empty base ref"}}function o(a){let b=a.template.setup;if(!b)return{pid:null,error:"workflow has no setup command"};let c=(0,k.VO)(a.id);f().mkdirSync(h().dirname(c),{recursive:!0}),f().rmSync(c,{force:!0});let e=f().openSync((0,k._F)(a.id),"w"),g=f().openSync((0,k.RK)(a.id),"w");try{let f=(0,d.spawn)("sh",["-c",'sh -c "$LLV_SETUP_CMD"; printf \'%s\' "$?" > "$LLV_SETUP_EXIT"'],{cwd:a.worktreeDir,env:{...(0,j.Fd)(process.env),LLV_SETUP_CMD:b,LLV_SETUP_EXIT:c},detached:!0,stdio:["ignore",e,g]});return f.unref(),{pid:f.pid??null}}catch(a){return{pid:null,error:a instanceof Error?a.message:String(a)}}finally{f().closeSync(e),f().closeSync(g)}}function p(a){try{return f().readFileSync(a,"utf8")}catch{return""}}function q(a,b=Date.now()){let c=p((0,k.VO)(a.id)).trim();if(""!==c){if("0"===c)return{status:"done",detail:""};let b=p((0,k.RK)(a.id)).trim().split("\n").slice(-3).join("\n");return{status:"failed",detail:`setup exited with code ${c}${b?`: ${b}`:""}`}}if(null!=a.setupPid&&(0,i.pl)(a.setupPid))return{status:"running",detail:""};let d=function(a,b){try{return b-f().statSync(a).mtimeMs}catch{return null}}((0,k._F)(a.id),b);return null!==d&&d<3e3?{status:"running",detail:""}:{status:"failed",detail:"setup was interrupted before it finished"}}function r(a){let b=a.task.split("\n").map(a=>a.trim()).find(Boolean)??a.name;return b.length>72?b.slice(0,69)+"…":b}function s(a,b,c){let d=c("git",["status","--porcelain"],a.worktreeDir);if(0!==d.code)return m("checking the worktree state",d);let e=d.stdout.split("\n").filter(a=>a.trim());if(e.length){let a=e.slice(0,3).map(a=>a.slice(3).trim()||a.trim()),b=e.length>a.length?`, +${e.length-a.length} more`:"";return{ok:!1,error:`the worktree has uncommitted changes (${a.join(", ")}${b}) — commit them, then retry the finish`}}return"merge"===a.template.finish?function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return m("resolving the repo branch",c);let d=c.stdout.trim();if(d!==a.baseBranch)return{ok:!1,error:`the repo checkout is on ${d}; check out ${a.baseBranch} before merging`};let e=b("git",["merge","--no-ff",a.branch,"-m",`Merge ${a.branch}: ${r(a)}`],a.repoDir);return 0!==e.code?(b("git",["merge","--abort"],a.repoDir),m("git merge",e)):{ok:!0,prUrl:null}}(a,c):function(a,b,c){let d=c("git",["push","-u","origin",a.branch],a.worktreeDir);if(0!==d.code)return m("git push",d);let e=c("gh",["pr","create","--title",r(a),"--body",b,"--base",a.baseBranch,"--head",a.branch],a.worktreeDir);if(0===e.code){var f;return{ok:!0,prUrl:(f=e.stdout,f.match(/https:\/\/\S+\/pull\/\d+/)?.[0]??null)}}if(/already exists/i.test(e.stderr)){let b=c("gh",["pr","view",a.branch,"--json","url","--jq",".url"],a.worktreeDir);if(0===b.code&&b.stdout.trim())return{ok:!0,prUrl:b.stdout.trim()}}return m("gh pr create",e)}(a,b,c)}},53410:(a,b,c)=>{c.d(b,{Ol:()=>o,Qm:()=>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(92233);let k=new Int32Array(new SharedArrayBuffer(4));class l extends Error{constructor(a){super(a),this.name="FileTransactionBusyError"}}function m(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){let a="string"==typeof b.startIdentity?b.startIdentity:null;if(!j.B.pidAlive(b.pid))return!0;if(null!==a){let c=j.B.processIdentity(b.pid);return null!==c&&c!==a}return!1}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function n(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function o(a,b,c){let d,f,h,o,p=(d=`${a}.write-lock`,f=`${a}.write-locks`,g().mkdirSync(f,{recursive:!0,mode:448}),h={pid:process.pid,startIdentity:j.B.processIdentity(process.pid),token:e().randomUUID()},o=i().join(f,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`),g().writeFileSync(o,JSON.stringify(h),{encoding:"utf8",flag:"wx",mode:384}),{lockPath:d,queuePath:f,owner:h,ticketPath:o});try{for(let a=0;a<6e3;a+=1){let a=function(a){let b;if(function(a){let b=[];for(let c of g().readdirSync(a.queuePath).filter(a=>a.endsWith(".json")).sort()){let d=i().join(a.queuePath,c);if(m(d)){g().rmSync(d,{force:!0});continue}g().existsSync(d)&&b.push(d)}return b[0]??null}(a)!==a.ticketPath)return null;try{b=g().openSync(a.lockPath,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return m(a.lockPath)&&g().rmSync(a.lockPath,{force:!0}),null}try{return g().writeFileSync(b,JSON.stringify(a.owner),"utf8"),g().fsyncSync(b),b}catch(c){throw g().closeSync(b),g().rmSync(a.lockPath,{force:!0}),c}}(p);if(null===a){Atomics.wait(k,0,0,5);continue}try{return c()}finally{g().closeSync(a),n(p.lockPath,p.owner.token)}}throw new l(b)}finally{n(p.ticketPath,p.owner.token)}}},53812:(a,b,c)=>{c.d(b,{S:()=>e,n:()=>f});let d=/^[A-Za-z0-9_.:-]{1,64}$/;function e(a){return"string"==typeof a&&d.test(a)?a:void 0}function f(a){if(!a||"object"!=typeof a||Array.isArray(a)||"operator"!==a.kind&&"agent"!==a.kind)return null;let b="agent"===a.kind?e(a.role):void 0;return{kind:a.kind,...b?{role:b}:{}}}},53835:(a,b,c)=>{c.d(b,{G:()=>e});let d=Promise.resolve();function e(a){let b=d.catch(()=>void 0).then(async()=>{let b=await a.snapshot();await a.append({scope:{type:"system",id:"files"},kind:"files.revision",payload:{filesRevision:b.filesRevision+1},producer:{kind:"structured-spawn-materialized"}})});return d=b,b}},54132:(a,b,c)=>{c.d(b,{O:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920);function k(a){let b=a.trim().replace(/\s+/gu," ");return e().createHash("sha256").update(b).digest("hex")}function l(a){return a.query("PRAGMA table_info(transcript_messages)").all().some(a=>"body_hash"===a.name)}function m(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function n(a){return"string"==typeof a?a.trim():(Array.isArray(a)?a.filter(a=>null!==m(a)):[]).filter(a=>"text"===a.type||"input_text"===a.type||"output_text"===a.type).map(a=>"string"==typeof a.text?a.text:"").filter(Boolean).join("\n").trim()}async function*o(a){let b=[],c=0,d=0,e=1,f=0;for await(let h of g().createReadStream(a)){let a=Buffer.isBuffer(h)?h:Buffer.from(h),g=0;for(;;){let h=a.indexOf(10,g);if(h<0)break;let i=a.subarray(g,h),j=c+i.length,k=b.length?Buffer.concat(i.length?[...b,i]:b,j):i,l=13===k.at(-1)?k.subarray(0,-1):k;yield{bytes:l,byteOffset:d,lineNumber:e},e+=1,b=[],c=0,d=f+(g=h+1)}if(g<a.length){let d=a.subarray(g);b.push(d),c+=d.length}f+=a.length}if(c){let a=1===b.length?b[0]:Buffer.concat(b,c),f=13===a.at(-1)?a.subarray(0,-1):a;yield{bytes:f,byteOffset:d,lineNumber:e}}}async function*p(a){let b=new Map,c=[];for await(let d of o(a.path)){let e;if(!d.bytes.length)continue;try{e=JSON.parse(d.bytes.toString("utf8"))}catch{continue}let f=function(a,b,c,d){let e=null,f="",g="claude";if("claude"===b.engine&&("user"===a.type||"assistant"===a.type))e=a.type,f=n(m(a.message)?.content);else if("codex"===b.engine&&"response_item"===a.type){g="response";let b=m(a.payload);b?.type==="message"&&("user"===b.role||"assistant"===b.role)?(e=b.role,f=n(b.content)):b?.type==="agent_message"&&(e="assistant",f=n(b.content))}else if("codex"===b.engine&&"event_msg"===a.type){g="event";let b=m(a.payload);b?.type==="user_message"?(e="user",f="string"==typeof b.message?b.message.trim():""):b?.type==="agent_message"&&(e="assistant",f="string"==typeof b.message?b.message.trim():"")}return e&&f?{body:f,speaker:e,timestamp:function(a){if("string"!=typeof a)return null;let b=Date.parse(a);return Number.isFinite(b)?Math.floor(b/1e3):null}(a.timestamp??a.created_at),byteOffset:c,lineNumber:d,representation:g}:null}(m(e)??{},a,d.byteOffset,d.lineNumber);if(!f)continue;if("claude"!==f.representation){let a=`${f.speaker}\0${f.body}`,d=b.get(a),e=d&&(null!==f.timestamp&&null!==d.timestamp?2>=Math.abs(f.timestamp-d.timestamp):f.lineNumber-d.lineNumber<=2);if(d&&d.representation!==f.representation&&e)continue;let g={representation:f.representation,timestamp:f.timestamp,lineNumber:f.lineNumber};for(b.set(a,g),c.push({key:a,message:g});c.length>8;){let a=c.shift();b.get(a.key)===a.message&&b.delete(a.key)}}let{representation:g,...h}=f;yield h}}function q(a,b){a.query("DELETE FROM transcript_messages_fts WHERE rowid IN (SELECT id FROM transcript_messages WHERE transcript_path = ?)").run(b),a.query("DELETE FROM transcript_messages WHERE transcript_path = ?").run(b),a.query("DELETE FROM transcript_files WHERE path = ?").run(b)}async function r(a,b={}){let c=function(){let a=(0,j.BQ)("transcript-search.sqlite");g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(function(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("Transcript search requires the Bun runtime");return a.Database}())(a,{create:!0,strict:!0});try{return b.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = NORMAL; PRAGMA foreign_keys = ON;"),b.exec(`
92
131
  CREATE TABLE IF NOT EXISTS transcript_files (
93
132
  path TEXT PRIMARY KEY,
94
133
  size INTEGER NOT NULL,
@@ -129,46 +168,7 @@ ${t.payload}`,v=F.length?{imagePaths:F}:{},x=await A((b.deliver??i.Zp)({entry:m,
129
168
  `)}catch(b){try{a.exec("ROLLBACK")}catch{}throw b}}}(b),function(a){for(let b of[a,`${a}-wal`,`${a}-shm`])try{g().chmodSync(b,384)}catch(a){if("ENOENT"!==a.code)throw a}}(a),b}catch(a){throw b.close(),a}}(),d=b.readMessages??p,e=0,f=0,h=0,m=[];try{let g=c.query("SELECT size, mtime_ms, project, engine FROM transcript_files WHERE path = ?"),i=c.query("UPDATE transcript_files SET project = ?, engine = ? WHERE path = ?");for(let b of a){let a=g.get(b.path);if(a?.size===b.size&&a.mtime_ms===b.mtimeMs){(a.project!==b.project||a.engine!==b.engine)&&i.run(b.project,b.engine,b.path),f+=1;continue}e+=1,c.exec("BEGIN IMMEDIATE");try{q(c,b.path),c.query("INSERT INTO transcript_files(path, size, mtime_ms, project, engine, messages_count, indexed_at) VALUES (?, ?, ?, ?, ?, 0, ?)").run(b.path,b.size,b.mtimeMs,b.project,b.engine,Math.floor(Date.now()/1e3));let a=0;for await(let e of d(b)){let d=c.query("INSERT INTO transcript_messages(transcript_path, message_index, speaker, timestamp, byte_offset, line_number, body, body_hash) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING id").get(b.path,a,e.speaker,e.timestamp,e.byteOffset,e.lineNumber,e.body,k(e.body));c.query("INSERT INTO transcript_messages_fts(rowid, body) VALUES (?, ?)").run(d.id,e.body),a+=1}c.query("UPDATE transcript_files SET messages_count = ? WHERE path = ?").run(a,b.path),c.exec("COMMIT"),h+=a}catch(a){try{c.exec("ROLLBACK")}catch{}m.push({path:b.path,error:a instanceof Error?a.message:String(a)})}}if(b.complete){let b=new Set(a.map(a=>a.path)),d=c.query("SELECT path FROM transcript_files").all();c.exec("BEGIN IMMEDIATE");try{for(let a of d)b.has(a.path)||q(c,a.path);c.exec("COMMIT")}catch(a){try{c.exec("ROLLBACK")}catch{}throw a}}return{filesRead:e,filesSkipped:f,messagesIndexed:h,failures:m}}finally{c.close()}}let s=globalThis;async function t(a,b){let c=await r(a,{complete:b});if(c.failures.length)throw Error(`${c.failures.length} transcript file(s) could not be indexed`)}async function u(a){for(;a.pending;){let b=a.pending;delete a.pending;try{await b.run(b.feed.sources,b.feed.complete)}catch(b){let a=b instanceof Error?b.message:String(b);console.error(`[transcript search] background indexing failed: ${a}; a later scan will retry`)}}}function v(a,b={}){let c=s.__llvTranscriptFeed??={scheduled:!1,idleWaiters:[]};c.pending={feed:a,run:b.run??t},c.active||c.scheduled||(c.scheduled=!0,setImmediate(()=>(function a(b){if(b.scheduled=!1,b.active)return;let c=u(b);b.active=c,c.finally(()=>{if(b.active===c&&delete b.active,b.pending&&!b.scheduled)b.scheduled=!0,setImmediate(()=>a(b));else if(!b.scheduled&&!b.active&&!b.pending)for(let a of b.idleWaiters.splice(0))a()})})(c)))}},55204:(a,b,c)=>{c.d(b,{aW:()=>l,OH:()=>n,fy:()=>m,X2:()=>k,hB:()=>j});var d=c(61899),e=c(2208);let f={engine:"claude",model:"opus",effort:"high"},g={engine:"codex",model:"gpt-5.6-terra",effort:"low"};var h=c(80026),i=c(73385);function j(a,b){var c;let d="builder"===a.id&&"frontend"===b.domain?"\n\nUI/frontend implementation guidance: follow the approved interaction and visual contract, preserve accessible semantics, responsive behavior, and English/Ukrainian parity.":"";return c=a.promptScaffold,c.replace(/\{\{([A-Za-z][A-Za-z0-9]*)\}\}/g,(a,c)=>String(b[c]??"")).replace(/^(Repository|Issue query|Urgent list):\s*\n/gm,"")+d}function k(a){return a.safetyFences.length?`
130
169
 
131
170
  Safety fences:
132
- ${a.safetyFences.map(a=>`- ${a}`).join("\n")}`:""}function l(a,b){return"builder"!==a.id?a.config:"frontend"===b.domain?f:"apply-fixes"===b.mode?g:a.config}function m(a,b={},c={},f=(0,i.pQ)()){let g=f.find(b=>b.id===a);if(!g)return{ok:!1,error:`unknown role: ${a} (allowed: ${f.map(a=>a.id).join(", ")})`};let n=function(a,b,{requireRequired:c=!0}={}){if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return{ok:!1,error:"roleParams must be an object"};let d=b??{},e=new Map(a.parameters.map(a=>[a.key,a]));for(let b of Object.keys(d))if(!e.has(b)){let c=a.parameters.map(a=>a.key).join(", ")||"none";return{ok:!1,error:`unknown role parameter: ${b} (${a.id} accepts: ${c})`}}let f={};for(let b of a.parameters){let a=d[b.key];if(void 0===a||""===a){if(b.required&&c)return{ok:!1,error:`missing required role parameter: ${b.key}`};f[b.key]=(0,h.y)(b);continue}if("integer"===b.kind){if(!Number.isInteger(a)||"number"!=typeof a||void 0!==b.min&&a<b.min||void 0!==b.max&&a>b.max)return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=a;continue}let e=function(a){if("string"!=typeof a)return null;let b=a.trim();return b&&b.length<=2e3?b:null}(a);if(!e||"select"===b.kind&&!b.options?.includes(e))return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=e}return{ok:!0,value:f}}(g,b);if(!n.ok)return n;let o=function(a,b,c){let f={...l(a,b),...c};if("claude"!==f.engine&&"codex"!==f.engine)return{ok:!1,error:"engine must be claude or codex"};let g=(0,e.RC)(f.engine,f.model);return"error"in g?{ok:!1,error:g.error}:(f.model=g.model,(0,d.z9)(f.engine,f.effort))?{ok:!0,value:f}:{ok:!1,error:`effort for ${f.engine} must be one of: ${"codex"===f.engine?"low, medium, high, xhigh":"low, medium, high, xhigh, max"}`}}(g,n.value,c);return o.ok?{ok:!0,value:{definition:g,config:o.value,params:n.value,prompt:j(g,n.value)+k(g),requiresDeploymentConfirmation:"deployer"===g.id}}:o}function n(){return(0,i.pQ)()}},55643:(a,b,c)=>{c.d(b,{$q:()=>w,VW:()=>n,c1:()=>o,g8:()=>v,k8:()=>x,oN:()=>q});var d=c(93812),e=c(31973);let f=Object.freeze(["viewer"]),g=Object.freeze(["viewer","telegram"]),h=Object.freeze([...g]),i=Object.freeze([...f]);Object.freeze(["viewer","telegram"]);let j=Object.freeze({grantable:g,operatorRoot:h,delegated:i});function k(a){return["viewer",...new Set(a.filter(a=>"viewer"!==a))]}function l(a,b=j){let c=function(a,b=j){return"operator-root"===a?b.operatorRoot:b.delegated}(a.origin,b);return k((null==a.requested?c:c.filter(b=>a.requested.includes(b))).filter(a=>b.grantable.includes(a)))}function m(a){return"delegated"===(0,d.GU)(a)?"delegated":a.origin?.kind==="operator"||0===a.delegationDepth?"operator-root":"delegated"}function n(a,b=j){return l({origin:m(a),requested:a.requested},b)}function o(a,b=j){return Array.isArray(a)?k(a.filter(a=>"string"==typeof a&&b.grantable.includes(a))):[...f]}function p(a){return 1===a.length&&"viewer"===a[0]}function q(a){let b=a=>Array.isArray(a)&&!p(a);return!!a&&"object"==typeof a&&(!!b(a.launchProfile?.mcpServers)||!!Array.isArray(a.generations)&&a.generations.some(a=>{let c=a?.launchProfile;return b(c?.mcpServers)}))}function r(a,b){return a.length===b.length&&a.every((a,c)=>a===b[c])}function s(a,b,c){let d=new Map,g=new Map,h=new Map,i=new Map;for(let[k,n]of Object.entries(a.conversations)){let o=a.lineageEdges?.[k],q=!!(o?.parentConversationId&&o.parentConversationId!==k);for(let a of(i.set(k,m({parentConversationId:n.generations.at(-1)?.launchProfile.parentConversationId??null,agentRole:n.agentRole,delegationDepth:n.delegationDepth})),n.generations)){var j;let i=(j=n.engine,(0,e.pp)({engine:j,sessionId:a.id})),k=function(a,b,c,d){let e=b.launchProfile.mcpServers;if(p(e))return e;let g=m({parentConversationId:b.launchProfile.parentConversationId,agentRole:a.agentRole,delegationDepth:a.delegationDepth});return d&&"delegated"!==g?[...f]:l({origin:g,requested:e},c)}(n,a,b,q);c&&!r(a.launchProfile.mcpServers,k)&&(a.launchProfile.mcpServers=k);let o=q?"delegated":m({parentConversationId:a.launchProfile.parentConversationId,agentRole:n.agentRole,delegationDepth:n.delegationDepth});if(h.has(i)?h.get(i)!==o&&h.set(i,null):h.set(i,o),d.has(i)){let a=d.get(i);null!==a&&r(a,k)||d.set(i,null)}else d.set(i,k);let s=a.path;s&&(g.has(s)?g.get(s)!==i&&g.set(s,null):g.set(s,i))}}return{grants:d,pathOwner:g,origins:h,conversationOrigins:i}}function t(a,b,c){if(b.key&&(0,e.pp)({engine:b.key.engine,sessionId:b.key.sessionId})!==a)return null;if(b.artifactPath){let d=c.pathOwner.get(b.artifactPath);if(void 0!==d&&d!==a)return null}if(c.grants.has(a))return c.grants.get(a)}function u(a,b,c){let d=s(a,b,!0);for(let[b,e]of Object.entries(a.entries)){let a=e.launchProfile?.mcpServers;if(!a||p(a))continue;let g=t(b,e,d);if(void 0===g&&!c)continue;let h=g??f;r(a,h)||(e.launchProfile.mcpServers=[...h])}let g=function(a,b){let c=new Map,d=(a,b)=>{let d=c.get(a)??new Set;d.add(b),c.set(a,d)};for(let[b,c]of Object.entries(a.lineageEdges??{})){if(!c.parentConversationId||c.parentConversationId===b)continue;let a=c.evidence?.launchId;"string"==typeof a&&a&&d(a,"delegated")}for(let[c,f]of Object.entries(a.receipts??{})){let g=f.conversationId;if(g){let e=a.lineageEdges?.[g];e?.parentConversationId&&e.parentConversationId!==g&&d(c,"delegated");let f=b.conversationOrigins.get(g);f&&d(c,f)}if(!f.key)continue;let h=(0,e.pp)({engine:f.key.engine,sessionId:f.key.sessionId});if(!b.origins.has(h))continue;let i=b.origins.get(h);if(i)d(c,i);else for(let a of["operator-root","delegated"])d(c,a)}return c}(a,d);for(let[c,d]of Object.entries(a.receipts??{})){let a=d.launchProfile?.mcpServers;if(!a||p(a))continue;let e=function(a,b,c,d){let e=m({agentRole:c.agentRole,delegationDepth:c.delegationDepth,parentConversationId:c.parentConversationId}),f=a.get(b);return f&&(f.size>1||!f.has(e))?null:l({origin:e,requested:c.launchProfile.mcpServers},d)}(g,c,d,b)??f;r(a,e)||(d.launchProfile.mcpServers=[...e])}return a}function v(a,b=j){return u(a,b,!1)}function w(a,b=j){return u(a,b,!0)}function x(a,b,c=j){let d=(0,e.pp)({engine:b.engine,sessionId:b.sessionId}),g=a.entries[d],h=g?.launchProfile?.mcpServers;if(!g||!h||p(h))return;let i=t(d,g,s(a,c,!1))??f;r(h,i)||(g.launchProfile.mcpServers=[...i])}},55883:(a,b,c)=>{c.d(b,{ph:()=>af,Ou:()=>aj,tk:()=>be,oP:()=>aV,l5:()=>a3,MA:()=>aW,kU:()=>aQ});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57975),k=c(50920),l=c(30277),m=c(14071),n=c(85923),o=c(91701),p=c(55643),q=c(98934),r=c(14648);let s=Object.freeze(["reviewer","verifier"]);function t(a){return"string"==typeof a&&s.includes(a)}class u extends Error{constructor(a,b){super(b.guidance),this.receipt=a,this.rejection=b,this.name="SpawnAdmissionError"}}function v(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}var w=c(31973);let x="LLV_AGENT_REGISTRY_SQLITE";class y extends Error{constructor(...a){super(...a),this.name="RegistryBackendIdentityError"}}let z={readText(a){try{return g().readFileSync(a,"utf8")}catch(b){if("ENOENT"===b.code)return null;throw new y(`${i().basename(a)} is unreadable: ${b.code??"unknown error"}`)}},exists:a=>g().existsSync(a),writeText(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${(0,d.randomUUID)()}.tmp`,e=g().openSync(c,"wx",384);try{g().writeFileSync(e,b),g().fsyncSync(e)}finally{g().closeSync(e)}g().renameSync(c,a)}};function A(a){let b=i().basename(a).replace(/\.json$/,"");return i().join(i().dirname(a),`${b}.backend.json`)}function B(a){return a.endsWith(".json")?`${a.slice(0,-5)}.sqlite`:`${a}.sqlite`}function C(a){return"off"===a||"dual-write"===a||"read"===a||"sqlite"===a}function D(a=process.env){let b=a[x]??"off";if(C(b))return b;throw Error(`${x} must be off, dual-write, read, or sqlite`)}function E(a,b){let c;try{c=JSON.parse(a)}catch{throw new y(`${b} is not valid JSON`)}if(!c||"object"!=typeof c||Array.isArray(c))throw new y(`${b} is not an object`);let d=c;if(1!==d.schemaVersion)throw new y(`${b} declares schema version ${String(d.schemaVersion)}, but this build understands 1`);if(!C(d.mode))throw new y(`${b} declares an unknown backend mode`);let e=d.sqliteFile;if(null!==e&&"string"!=typeof e)throw new y(`${b} declares an invalid store filename`);if("string"==typeof e&&(""===e||e!==i().basename(e)))throw new y(`${b} must name its store as a bare filename`);if("off"!==d.mode&&null===e)throw new y(`${b} declares the ${d.mode} backend but names no store`);return{schemaVersion:1,mode:d.mode,sqliteFile:e??null,publishedAt:"string"==typeof d.publishedAt?d.publishedAt:""}}let F=new Set(["entries","receipts","conversations","lineageEdges"]),G=["entries","receipts","lineageEdges","memberships","conversations","conversationAliases","migrationIntents","heldDeliveries","deliveryOperationOwners","pendingSuccessorCleanups","pendingSupersedence"],H=["importedResumePanes","legacyResumePanes","conversationRevision","engineRouting","autoBalance","quotaObservations"];function I(a,b,c){if(null===a||"object"!=typeof a)return a;let d=c.get(a);if(d)return d;let e=new Proxy(a,{get:(a,d,e)=>I(Reflect.get(a,d,e),b,c),set:(a,c,d)=>(b(),Reflect.set(a,c,d)),deleteProperty:(a,c)=>(b(),Reflect.deleteProperty(a,c)),defineProperty:(a,c,d)=>(b(),Reflect.defineProperty(a,c,d))});return c.set(a,e),e}class J{markDecided(a){return this.decidedFiles.add(a),a}decideAssembled(a){return(0,p.$q)(a,this.mcpGrantPolicy),this.markDecided(a)}assertDecided(a){if(!this.decidedFiles.has(a))throw Error("agent registry rows cannot be persisted before the MCP grant decision has run (#739)")}constructor(a,b){this.filename=a,this.rowCache=new Map,this.revisionCache=null,this.readOnlyCache=null,this.decidedFiles=new WeakSet,g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});const c=process.getBuiltinModule?.("bun:sqlite");if(!c)throw Error("SQLite registry modes require the Bun runtime");const{Database:d}=c;this.db=new d(a,{create:!0,strict:!0}),this.normalize=b.normalize,this.onWriterWait=b.onWriterWait,this.onSnapshotLoad=b.onSnapshotLoad,this.onRowPayloadRead=b.onRowPayloadRead,this.onRowPayloadParse=b.onRowPayloadParse,this.onRevisionQuery=b.onRevisionQuery,this.mcpGrantPolicy=b.mcpGrantPolicy,this.db.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON; PRAGMA auto_vacuum = INCREMENTAL;"),this.db.exec(`
133
- CREATE TABLE IF NOT EXISTS registry_meta (
134
- key TEXT PRIMARY KEY,
135
- value TEXT NOT NULL
136
- );
137
- CREATE TABLE IF NOT EXISTS registry_rows (
138
- collection TEXT NOT NULL,
139
- row_key TEXT NOT NULL,
140
- value_json TEXT NOT NULL,
141
- row_order INTEGER NOT NULL,
142
- PRIMARY KEY(collection, row_key)
143
- );
144
- `),this.db.query("PRAGMA table_info(registry_rows)").all().some(a=>"row_order"===a.name)||this.db.exec(`
145
- BEGIN IMMEDIATE;
146
- ALTER TABLE registry_rows ADD COLUMN row_order INTEGER NOT NULL DEFAULT 0;
147
- WITH ordered AS (
148
- SELECT rowid, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY rowid) - 1 AS position
149
- FROM registry_rows
150
- )
151
- UPDATE registry_rows
152
- SET row_order = (SELECT position FROM ordered WHERE ordered.rowid = registry_rows.rowid);
153
- INSERT INTO registry_meta(key, value) VALUES ('schema_version', '2')
154
- ON CONFLICT(key) DO UPDATE SET value = excluded.value;
155
- COMMIT;
156
- `),this.db.exec(`
157
- CREATE INDEX IF NOT EXISTS registry_rows_collection_order
158
- ON registry_rows(collection, row_order);
159
- `),this.secureFiles(),this.importFirstBoot(b.initialSnapshot)}snapshot(){return this.loadSnapshot(!1)}loadSnapshot(a){this.onSnapshotLoad?.(),this.db.exec("BEGIN");try{let b=this.loadInTransaction(a);return this.db.exec("COMMIT"),b}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}revision(){for(let a=0;a<2;a+=1){let a=this.storageSignature();if(this.revisionCache?.signature===a)return this.revisionCache.revision;this.onRevisionQuery?.();let b=Number(this.meta("revision")??0),c=this.storageSignature();if(a===c)return this.revisionCache={signature:c,revision:b},b}this.onRevisionQuery?.();let a=Number(this.meta("revision")??0);return this.rememberRevision(a),a}readOnlySnapshot(){let a=this.revision();return this.readOnlyCache?.revision===a||(this.readOnlyCache=this.loadSnapshot(!0)),this.readOnlyCache}snapshotSpawns(a){this.db.exec("BEGIN");try{let b=(a,b)=>{let c=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?").get(a,b);return this.onRowPayloadRead?.(a,+!!c),c?this.parseRow(a,b,c.value_json,!0):void 0},c=(a,b,c)=>{let d={version:2,entries:{},receipts:{}};return d[a]={[b]:c},this.normalize(d)[a][b]},d={};for(let e of new Set(a)){let a=b("receipts",e);if(void 0===a)continue;let f=c("receipts",e,a);if(!f)continue;let g=new Set,h=f.conversationId,i=!1;for(;!g.has(h)&&g.size<64;){g.add(h);let a=b("conversationAliases",h);if("string"!=typeof a||!a.startsWith("conversation_"))break;h=a,i=64===g.size}let j=i?void 0:b("conversations",h),k=void 0===j?void 0:c("conversations",h,j);d[e]={launchId:f.launchId,state:f.state,error:f.error,engine:f.engine,cwd:f.cwd,createdAt:f.createdAt,materializedPath:k?.generations.at(-1)?.path??f.artifactPath}}return this.db.exec("COMMIT"),d}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}snapshotTitleConversations(a){this.db.exec("BEGIN");try{let b=(a,b)=>{let c=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?").get(a,b);return this.onRowPayloadRead?.(a,+!!c),c?this.parseRow(a,b,c.value_json,!0):void 0},c=(a,b)=>this.normalize({version:2,entries:{},receipts:{},conversations:{[a]:b}}).conversations[a],d=new Map;for(let e of[...new Set(a)].slice(0,2e3)){if(!e.startsWith("conversation_"))continue;let a=new Set,f=e,g=!1;for(;f;){if(a.has(f)){f=null;break}if(a.size>=64){g=!0;break}a.add(f);let c=b("conversationAliases",f);if("string"!=typeof c||!c.startsWith("conversation_"))break;f=c}if(!f||g)continue;let h=d.get(f),i=h?void 0:b("conversations",f),j=h?.conversation??(void 0===i?void 0:c(f,i));if(!j)continue;let k=h??{aliases:new Set,conversation:j};for(let b of a)b!==f&&k.aliases.add(b);d.set(f,k)}let e=[...d.values()].map(({aliases:a,conversation:b})=>({conversationId:b.id,aliases:[...a],ownedPaths:[...new Set([...[...b.generations].reverse().map(a=>a.path),...[...b.continuityPaths].reverse()])].slice(0,128)}));return this.db.exec("COMMIT"),e}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}mutate(a,b=!0){for(;;){let c,d,e,f;this.db.exec("BEGIN");try{c=this.loadLazyInTransaction(),e=a(c.file),d=c.changes(),this.db.exec("COMMIT")}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}let g=performance.now();this.db.exec("BEGIN IMMEDIATE");let h=d.rows.size>0||d.meta.size>0||d.order.size>0;try{if(this.onWriterWait?.(performance.now()-g),Number(this.meta("revision")??0)!==c.revision){this.db.exec("ROLLBACK");continue}f=h?c.revision+1:c.revision,h&&this.persistChanges(c.file,d,f),this.db.exec("COMMIT")}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}if(h&&(this.secureFiles(),this.updateCachesAfterCommit(c.file,d,f),this.rememberRevision(f)),b){let a=this.snapshot();return{result:e,file:a.file,revision:a.revision}}return{result:e,file:null,revision:f}}}replace(a,b){let c=this.decideAssembled(a);this.db.exec("BEGIN IMMEDIATE");try{let d=this.loadInTransaction();if(void 0!==b&&d.revision!==b)return this.db.exec("ROLLBACK"),{...d,replaced:!1};let e=d.revision+1;return this.persistDiff(d.file,c,e),this.db.exec("COMMIT"),this.secureFiles(),this.rowCache.clear(),this.readOnlyCache=null,this.rememberRevision(e),{file:a,revision:e,replaced:!0}}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}importFirstBoot(a){this.db.exec("BEGIN IMMEDIATE");try{let b=this.meta("migration_complete");"1"!==b&&(this.persistAll(this.decideAssembled(a),1),this.setMeta("schema_version","2"),this.setMeta("migration_complete","1")),this.db.exec("COMMIT"),this.secureFiles()}catch(a){try{this.db.exec("ROLLBACK")}catch{}throw a}}loadInTransaction(a=!1){let b=this.loadLazyInTransaction(!1,a);for(let a of G)b.file[a];for(let a of H)b.file[a];return b}loadLazyInTransaction(a=!0,b=a){let c=this.markDecided(this.normalize({version:2,entries:{},receipts:{}})),d=!1,e=!1,f=()=>{if(!d&&!e){e=!0;try{(0,p.$q)(c,this.mcpGrantPolicy),d=!0}finally{e=!1}}},g=(a,b)=>(F.has(a)&&(0,p.oN)(b)&&f(),b),h=new Map,i=new Map,k=new Map,l=new Set;for(let d of G){let e=!1,j=c[d],m=()=>{},n=()=>{if(e)return;let f=new Set,l=new Map;if(a&&"deliveryOperationOwners"!==d){let a={},c=new Set,e=null,h=null,i=!1,k=null,n=new Map,o=this.db.query("SELECT value_json FROM registry_rows WHERE collection = ? AND row_key = ?"),p=this.db.query("SELECT row_key, value_json FROM registry_rows WHERE collection = ? ORDER BY row_order"),q=()=>{if(k)return k;for(let a of(k=p.all(d),this.onRowPayloadRead?.(d,k.length),h=new Set(e=k.map(a=>a.row_key)),k))l.set(a.row_key,a.value_json);return k};m=()=>{q()};let r=a=>{if(l.has(a))return l.get(a);let b=o.get(d,a)?.value_json??null;return this.onRowPayloadRead?.(d,+(null!==b)),l.set(a,b),b},s=e=>{if(!Object.hasOwn(a,e)){if(c.has(e))return;let f=r(e);if(null===f)return;let g={version:2,entries:{},receipts:{}};g[d]={[e]:structuredClone(this.parseRow(d,e,f,b))};let h=this.normalize(g)[d];if(!Object.hasOwn(h,e))return;a[e]=h[e]}return g(d,a[e])},t=()=>{if(i)return;let e=q(),f={};for(let g of e)Object.hasOwn(a,g.row_key)||c.has(g.row_key)||(f[g.row_key]=structuredClone(this.parseRow(d,g.row_key,g.value_json,b)));let g={version:2,entries:{},receipts:{}};for(let[b,c]of(g[d]=f,Object.entries(this.normalize(g)[d])))a[b]=c;i=!0},u=()=>(t(),[...e.filter(a=>!c.has(a)),...Object.keys(a).filter(a=>!h.has(a))]);j=new Proxy(a,{get:(a,b,c)=>{if("string"!=typeof b)return Reflect.get(a,b,c);let d=s(b);if(void 0===d)return;let e=n.get(b);return e||(e=new WeakMap,n.set(b,e)),I(d,()=>f.add(b),e)},set:(a,b,d)=>("string"==typeof b&&(r(b),f.add(b),c.delete(b),n.delete(b)),Reflect.set(a,b,d)),deleteProperty:(a,b)=>("string"==typeof b&&(r(b),f.add(b),c.add(b),n.delete(b)),Reflect.deleteProperty(a,b)),defineProperty:(a,b,d)=>("string"==typeof b&&(r(b),f.add(b),c.delete(b),n.delete(b)),Reflect.defineProperty(a,b,d)),has:(b,c)=>"string"==typeof c?void 0!==s(c):Reflect.has(a,c),ownKeys:()=>u(),getOwnPropertyDescriptor:(a,b)=>{if("string"!=typeof b)return;let c=s(b);if(void 0!==c)return{configurable:!0,enumerable:!0,writable:!0,value:c}}})}else{let e={},g=this.db.query("SELECT collection, row_key, value_json, row_order FROM registry_rows WHERE collection = ? ORDER BY row_order").all(d);for(let c of(this.onRowPayloadRead?.(d,g.length),g)){let f=this.parseRow(d,c.row_key,c.value_json,b);e[c.row_key]=a?structuredClone(f):f,l.set(c.row_key,c.value_json)}let h={version:2,entries:{},receipts:{}};if(h[d]=e,"deliveryOperationOwners"===d&&(h.heldDeliveries=c.heldDeliveries),j=this.normalize(h)[d],a){let a=new Map;j=new Proxy(j,{get:(b,c,d)=>{let e=Reflect.get(b,c,d);if("string"!=typeof c||!Object.hasOwn(b,c))return e;let g=a.get(c);return g||(g=new WeakMap,a.set(c,g)),I(e,()=>f.add(c),g)},set:(a,b,c)=>("string"==typeof b&&f.add(b),Reflect.set(a,b,c)),deleteProperty:(a,b)=>("string"==typeof b&&f.add(b),Reflect.deleteProperty(a,b)),defineProperty:(a,b,c)=>("string"==typeof b&&f.add(b),Reflect.defineProperty(a,b,c))})}m=()=>{}}e=!0,h.set(d,j),i.set(d,l),k.set(d,f)};Object.defineProperty(c,d,{configurable:!0,enumerable:!0,get:()=>(n(),!a&&F.has(d)&&f(),j),set:a=>{n(),m(),j=a,h.set(d,j),l.add(d)}})}let m=new Map,n=new Map;for(let a of H){let b=!1,d=c[a],e=()=>{if(b)return;let c=this.meta(a);null!==c&&(d=JSON.parse(c)),b=!0,m.set(a,d),n.set(a,structuredClone(d))};Object.defineProperty(c,a,{configurable:!0,enumerable:!0,get:()=>(e(),d),set:b=>{e(),d=b,m.set(a,d)}})}return{file:c,revision:Number(this.meta("revision")??0),changes:()=>{let a={rows:new Map,meta:new Set,order:new Set};for(let[b,c]of h){let d=i.get(b),e=c,f=new Set([...l.has(b)?new Set([...d.keys(),...Object.keys(e)]):k.get(b)].filter(a=>{if(!Object.hasOwn(e,a))return d.has(a);let b=d.get(a);return void 0===b||JSON.stringify(e[a])!==b}));f.size>0&&a.rows.set(b,f),l.has(b)&&(a.rows.set(b,new Set([...Object.keys(d),...Object.keys(e)])),a.order.add(b))}for(let[b,c]of m)(0,j.isDeepStrictEqual)(n.get(b),c)||a.meta.add(b);return a}}}parseRow(a,b,c,d){if(!d)return this.onRowPayloadParse?.(a,1),JSON.parse(c);let e=this.rowCache.get(a);e||(e=new Map,this.rowCache.set(a,e));let f=e.get(b);if(f?.valueJson===c)return f.parsed;let g=JSON.parse(c);return this.onRowPayloadParse?.(a,1),e.set(b,{valueJson:c,parsed:g}),g}updateCachesAfterCommit(a,b,c){let d=this.readOnlyCache?.revision===c-1?this.readOnlyCache:null,e=d?{...d.file}:null;for(let[c,f]of b.rows){let g=a[c],h=this.rowCache.get(c);h||(h=new Map,this.rowCache.set(c,h));let i=e?{...d.file[c]}:null;for(let a of f){if(!Object.hasOwn(g,a)){h.delete(a),i&&delete i[a];continue}let b=JSON.stringify(g[a]),c=JSON.parse(b);h.set(a,{valueJson:b,parsed:c}),i&&(i[a]=c)}if(e&&i)if(b.order.has(c)){let a={};for(let b of Object.keys(g))Object.hasOwn(i,b)&&(a[b]=i[b]);e[c]=a}else e[c]=i}if(e){for(let c of b.meta)e[c]=structuredClone(a[c]);this.readOnlyCache={file:e,revision:c}}else this.readOnlyCache=null}persistAll(a,b){for(let b of(this.assertDecided(a),this.db.exec("DELETE FROM registry_rows"),G))for(let[c,[d,e]]of Object.entries(a[b]).entries())this.upsertRow(b,d,e,c);for(let b of H)this.setMeta(b,JSON.stringify(a[b]));this.setMeta("revision",String(b))}persistDiff(a,b,c){for(let c of(this.assertDecided(b),G)){let d=a[c],e=b[c];for(let a of new Set([...Object.keys(d),...Object.keys(e)])){if(!(a in e)){this.db.query("DELETE FROM registry_rows WHERE collection = ? AND row_key = ?").run(c,a);continue}a in d&&(0,j.isDeepStrictEqual)(d[a],e[a])||this.upsertRow(c,a,e[a])}this.persistRowOrder(c,Object.keys(e))}for(let c of H)(0,j.isDeepStrictEqual)(a[c],b[c])||this.setMeta(c,JSON.stringify(b[c]));this.setMeta("revision",String(c))}persistChanges(a,b,c){for(let[c,d]of(this.assertDecided(a),b.rows)){let b=a[c];for(let a of d)a in b?this.upsertRow(c,a,b[a]):this.db.query("DELETE FROM registry_rows WHERE collection = ? AND row_key = ?").run(c,a)}for(let c of b.order)this.persistRowOrder(c,Object.keys(a[c]));for(let c of b.meta)this.setMeta(c,JSON.stringify(a[c]));this.setMeta("revision",String(c))}upsertRow(a,b,c,d){void 0!==d?this.db.query(`
160
- INSERT INTO registry_rows(collection, row_key, value_json, row_order) VALUES (?, ?, ?, ?)
161
- ON CONFLICT(collection, row_key) DO UPDATE SET value_json = excluded.value_json, row_order = excluded.row_order
162
- `).run(a,b,JSON.stringify(c),d):this.db.query(`
163
- INSERT INTO registry_rows(collection, row_key, value_json, row_order)
164
- SELECT ?, ?, ?, COALESCE(MAX(row_order) + 1, 0) FROM registry_rows WHERE collection = ?
165
- ON CONFLICT(collection, row_key) DO UPDATE SET value_json = excluded.value_json
166
- `).run(a,b,JSON.stringify(c),a)}persistRowOrder(a,b){for(let[c,d]of b.entries())this.db.query("UPDATE registry_rows SET row_order = ? WHERE collection = ? AND row_key = ?").run(c,a,d)}meta(a){return this.db.query("SELECT key, value FROM registry_meta WHERE key = ?").get(a)?.value??null}setMeta(a,b){this.db.query(`
167
- INSERT INTO registry_meta(key, value) VALUES (?, ?)
168
- ON CONFLICT(key) DO UPDATE SET value = excluded.value
169
- `).run(a,b)}secureFiles(){for(let a of[this.filename,`${this.filename}-wal`,`${this.filename}-shm`])g().existsSync(a)&&g().chmodSync(a,384)}storageSignature(){return[this.filename,`${this.filename}-wal`].map(a=>{try{let b=g().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(a){if("ENOENT"===a.code)return"missing";throw a}}).join("|")}rememberRevision(a){this.revisionCache={signature:this.storageSignature(),revision:a}}}var K=c(53812),L=c(88417);let M="structured-host:";class N extends Error{constructor(a,b){super(`Agent spawn limit reached: caller ${a} already has ${b} live children (cap: ${b}). Wait for a child to finish before spawning another helper.`),this.parentConversationId=a,this.cap=b,this.name="SpawnChildLimitError"}}class O extends Error{constructor(a,b){super(b),this.successorConversationId=a,this.name="SupersedenceConflictError"}}function P(a){return(a.scope??"engine")==="engine"}function Q(a,b,c){if(R(a,b,c?.pendingDeliveryConversationIds)||(c?c.uncertainDeliveryConversationIds.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivery-uncertain"===a.state)))return"busy";if(b.migration&&!["committed","rolled-back"].includes(b.migration.phase))return"idle";let d=b.generations.at(-1)?.path;return void 0!==d&&(c?c.activeHostPaths.has(d):Object.values(a.entries).some(a=>a.artifactPath===d&&["starting","live","idle","handoff"].includes(a.status)))||(c?c.pendingDeliveryConversationIds.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivered"!==a.state))?"idle":"deferred"}function R(a,b,c){let d=b.generations.at(-1)?.path,e=c?c.has(b.id):Object.values(a.heldDeliveries).some(a=>a.conversationId===b.id&&"delivered"!==a.state),f="unknown"===b.turn.state&&"empty"===b.turn.source&&!!d&&!g().existsSync(d)&&!e;return"busy"===b.turn.state||"unknown"===b.turn.state&&!f}function S(a){let b=new Set,c=new Set;for(let d of Object.values(a.heldDeliveries))"delivery-uncertain"===d.state&&b.add(d.conversationId),"delivered"!==d.state&&c.add(d.conversationId);return{uncertainDeliveryConversationIds:b,pendingDeliveryConversationIds:c,activeHostPaths:new Set(Object.values(a.entries).filter(a=>["starting","live","idle","handoff"].includes(a.status)).map(a=>a.artifactPath).filter(a=>!!a))}}function T(a){return null===a||"committed"===a.phase||"rolled-back"===a.phase||("waiting-turn"===a.phase||"requested"===a.phase)&&null===a.providerReceipt}function U(a){return"resume-successor"===a.purpose&&"failed"!==a.state&&("completed"!==a.state||null===a.resumeSourcePath||a.artifactPath===a.resumeSourcePath)}let V={now:()=>Date.now(),wait:async a=>{await new Promise(b=>setTimeout(b,a))}};function W(a,b,c){let d=S(a);return JSON.stringify(Object.values(a.conversations).filter(a=>a.engine===b&&c.has(a.generations.at(-1)?.path??"")).map(b=>[b.id,Q(a,b,d)]).sort(([a],[b])=>a.localeCompare(b)))}function X(a,b,c){let d=a.entries[b],e=new Set([d?.artifactPath,c.artifactPath].filter(a=>!!a)),f=new Set(["starting","live","idle","handoff"]),g=(d,e)=>{for(let[g,h]of Object.entries(a.entries)){let a=e&&g===b?c:h;if(a.artifactPath===d&&f.has(a.status))return!0}return e&&!(b in a.entries)&&c.artifactPath===d&&f.has(c.status)};return new Set([...e].filter(a=>g(a,!1)!==g(a,!0)))}function Y(a,b,c,d){W(a,b,d)!==c&&(a.conversationRevision[b]+=1,a.engineRouting[b].revision+=1)}function Z(a,b,c,d,f){let g=a.migration?.boardProject??null,h=a.migration&&"committed"!==a.migration.phase?a.migration.pendingContinuityPaths:[];return{intentId:c.id,phase:d,targetId:c.targetId,revision:c.revision,error:null,errorCode:null,operationId:e().randomUUID(),sourceGenerationId:b.id,providerReceipt:null,pendingContinuityPaths:h,boardProject:g,boardOperationId:a.migration?.boardOperationId??null,boardPlacementProject:a.migration?.boardPlacementProject??g??a.projectOwnership?.project??b.launchProfile.project,updatedAt:f}}function $(a,b,c){let d=b.migration?.phase==="committed"?null:b.migration?.providerReceipt;d&&(a.pendingSuccessorCleanups[d.operationId]??={conversationId:b.id,receipt:d,createdAt:c,lastError:null})}function _(a,b,c){for(let d of Object.values(a.heldDeliveries))d.conversationId===b.id&&"delivered"!==d.state&&"failed"!==d.state&&aa(a,d,c)}function aa(a,b,c){let d="delivery-uncertain"===b.state?`${c}; a prior delivery attempt may have been delivered because its journal outcome is unknown`:c;b.state="failed",b.text="",b.generationId=null,b.assignedAt=null,b.deliveredAt=null,b.error=d.slice(0,240),aB(a,b),az(a,b)}function ab(a,b,c,d){let e=a.heldDeliveries[b];if(!e||!["held","assigned","delivery-uncertain"].includes(e.state))return null;let f=a.conversations[aP(a,e.conversationId)],g=f?.migration;return g&&"rolled-back"===g.phase&&g.intentId===c&&(0,o.bj)(e,g.updatedAt)?(aa(a,e,d),ak(e)):null}function ac(a){return`reconfigure:${a.operationId}:${a.revision}`}function ad(a,b,c){let d=b.migration;if(!d||["committed","rolled-back","failed-recoverable"].includes(d.phase))return;let e=a.migrationIntents[d.intentId],f=ac(c);if(e?.scope!=="conversation"||!e.requestIds.includes(f))return;let g=al(),h=new Set([b.generations.at(-1)?.path].filter(a=>!!a)),i=W(a,b.engine,h);"stopped"!==e.state&&(e.state="stopped",e.stoppedAt=g,e.updatedAt=g),$(a,b,g),aK(b),_(a,b,o.JJ),b.migration={...d,phase:"rolled-back",pendingContinuityPaths:[],error:null,errorCode:null,updatedAt:g},b.updatedAt=g,Y(a,b.engine,i,h)}class ae extends Error{constructor(a,b){super("migration preview is stale"),this.expected=a,this.actual=b,this.name="MigrationRevisionError"}}class af extends Error{constructor(a="client message id is already reserved for another request"){super(a),this.name="DeliveryReservationConflictError"}}let ag="1970-01-01T00:00:00.000Z";function ah(a=al()){return{enabled:!0,revision:0,cooldownUntil:null,departed:{},lastOutcome:null,lastTrigger:null,lastCheckAt:null,sustain:null,restartedAt:a}}let ai={version:2,entries:{},receipts:{},lineageEdges:{},memberships:{},importedResumePanes:!1,legacyResumePanes:{serverPid:null,panes:{}},conversations:{},conversationAliases:{},conversationRevision:{claude:0,codex:0},migrationIntents:{},engineRouting:{claude:{activeAccountId:null,revision:0},codex:{activeAccountId:null,revision:0}},autoBalance:{claude:ah(),codex:ah()},quotaObservations:{claude:{},codex:{}},heldDeliveries:{},deliveryOperationOwners:{},pendingSuccessorCleanups:{},pendingSupersedence:{}};class aj extends Error{}function ak(a){return JSON.parse(JSON.stringify(a))}function al(){return new Date().toISOString()}let am=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]),an=new Set(["starting","live","idle","handoff"]);function ao(a){return l.B.pidAlive(a.pid)&&(null===a.startIdentity||l.B.processIdentity(a.pid)===a.startIdentity)}function ap(a){return i().basename(a).match(/([0-9a-f-]{36})(?:\.jsonl)?$/i)?.[1]??e().randomUUID()}function aq(a){if(!a||"object"!=typeof a||"codex-app-server"!==a.kind&&"claude-broker"!==a.kind)return null;let b=a.eventCursor;if(void 0!==b&&(!Number.isSafeInteger(b)||b<0))throw Error("structured host event cursor is invalid");let c=a.process&&"object"==typeof a.process&&"number"==typeof a.process.pid?{pid:a.process.pid,startIdentity:"string"==typeof a.process.startIdentity?a.process.startIdentity:null}:null;return{kind:a.kind,endpoint:"string"==typeof a.endpoint?a.endpoint:"",process:c,eventCursor:void 0===b?0:b,protocolVersion:"string"==typeof a.protocolVersion?a.protocolVersion:null,writerClaimEpoch:Number.isSafeInteger(a.writerClaimEpoch)&&(a.writerClaimEpoch??-1)>=0?a.writerClaimEpoch:0,activeTurnRef:"string"==typeof a.activeTurnRef?a.activeTurnRef:null,pendingAttention:Array.isArray(a.pendingAttention)?a.pendingAttention.filter(a=>"string"==typeof a):[],activeFlags:Array.isArray(a.activeFlags)?a.activeFlags.filter(a=>"string"==typeof a):[]}}function ar(a){let b=ah(ag);return a&&"object"==typeof a?{...b,...a,departed:a.departed&&"object"==typeof a.departed?a.departed:{},lastOutcome:a.lastOutcome&&"object"==typeof a.lastOutcome?a.lastOutcome:null,sustain:a.sustain&&"object"==typeof a.sustain?a.sustain:null}:b}function as(a,b,c,d){c.launchProfile=(0,n.Ui)({...c.launchProfile,...d});let e=a.entries[(0,w.pp)({engine:b.engine,sessionId:c.id})];e&&(e.launchProfile=(0,n.Ui)({...e.launchProfile??c.launchProfile,...d}),e.updatedAt=al()),b.updatedAt=al()}function at(a,b){let c={operationId:a?.operationId||b,kind:a?.kind==="steer"?"steer":"send",policy:a?.policy==="queue"||a?.policy==="steer-if-active"?a.policy:"interrupt-active"};(a?.turnId===null||"string"==typeof a?.turnId)&&(c.turnId=a.turnId);let d=(0,K.n)(a?.origin);return d&&(c.origin=d),c}function au(a,b,c){let d=void 0===c.turnId?["absent"]:["present",c.turnId];return e().createHash("sha256").update(JSON.stringify(["held-delivery-request-v1",a,b,c.kind,c.policy,d])).digest("hex")}let av="held delivery image references are corrupt; send the message again to re-admit its images";function aw(a){let b=a.state??"held",c="string"==typeof a.text?a.text:"",d=at(a.command,a.id),e=c?au(a.conversationId,c,d):null,f=a.payloadKind??"text",g=(0,L.kW)(a.runtimeImages??[],16),h="delivered"!==b&&(null===g||"runtime-images"===f&&(!Array.isArray(a.runtimeImages)||0===g.length));h&&(b="failed");let i=g??[],j="string"==typeof a.contentDigest?a.contentDigest:null;if(!j&&!h&&"delivered"!==b&&("text"===f||"runtime-images"===f))try{j=(0,L.rM)(c,i).contentDigest}catch{}return{...a,runtimeConversationId:"string"==typeof a.runtimeConversationId&&a.runtimeConversationId.startsWith("conversation_")?a.runtimeConversationId:a.conversationId,text:"delivered"===b?"":c,clientMessageId:a.clientMessageId??null,payloadKind:f,runtimeImages:i,contentDigest:j,artifactPaths:Array.isArray(a.artifactPaths)?a.artifactPaths.filter(a=>"string"==typeof a):[],command:d,requestDigest:"string"==typeof a.requestDigest?a.requestDigest:e,state:b,generationId:h?null:a.generationId??null,attempts:Number.isInteger(a.attempts)?a.attempts:0,assignedAt:h?null:a.assignedAt??null,deliveredAt:a.deliveredAt??null,error:h?av:a.error??null}}function ax(a){return a?.state==="delivered"||a?.state==="failed"?a.state:null}function ay(a){return"failed"===a.state&&a.error?.startsWith(o.BD)===!0}function az(a,b){let c=a.deliveryOperationOwners[b.command.operationId];c?.deliveryId===b.id&&(c.terminalState=ax(b))}function aA(a,b){let c=b.clientMessageId;if(!c||!c.startsWith("spawn_"))return null;let d=c.slice(6);if(b.command.operationId!==`spawn_message_${d}`)return null;let e=a.receipts[d];return e&&"launch"===e.purpose&&aP(a,e.conversationId)===aP(a,b.conversationId)?e:null}function aB(a,b){if("failed"!==b.state)return;let c=aA(a,b);!c||["completed","failed","conflicted"].includes(c.state)||(c.state="failed",c.error=b.error??"initial prompt delivery failed",c.admissionOwner=null)}function aC(a){let b=[];for(let c of Object.values(a.heldDeliveries)){let d=aA(a,c);if(!d)continue;if("failed"===c.state&&!["completed","failed","conflicted"].includes(d.state)){let e=d.state;aB(a,c),d.state!==e&&b.push(c.id);continue}let e="failed"===d.state||"conflicted"===d.state,f=0===c.attempts&&("held"===c.state||"assigned"===c.state);e&&f&&(aa(a,c,"spawn failed before its initial message was delivered"),b.push(c.id))}return b}function aD(a,b,c,d,e,f){let g=aP(a,b),h=d?Object.values(a.heldDeliveries).find(b=>aP(a,b.conversationId)===g&&b.clientMessageId===d):void 0,i=at(f,h?.id??"pending-delivery"),j=au(g,c,i),k=function(a,b,c,d){let e=new Set([b]);for(let c of Object.keys(a.conversationAliases))aP(a,c)===b&&e.add(c);return new Set([...e].map(a=>au(a,c,d)))}(a,g,c,i),l=!!(h?.requestDigest&&!k.has(h.requestDigest)||h?.contentDigest&&e&&e!==h.contentDigest),m=null;if(l){if("failed"!==h.state||h.error===av)throw new af;m=h,h=void 0}let n=null;if(!h&&f.operationId){let b=Object.values(a.heldDeliveries).find(a=>a.command.operationId===i.operationId),c=a.deliveryOperationOwners[i.operationId]??(b?.requestDigest?{conversationId:b.conversationId,runtimeConversationId:b.runtimeConversationId,clientMessageId:b.clientMessageId,deliveryId:b.id,command:b.command,requestDigest:b.requestDigest,contentDigest:b.contentDigest,createdAt:b.createdAt,terminalState:ax(b)}:null),f=c&&aP(a,c.conversationId)===g&&c.clientMessageId===d&&k.has(c.requestDigest)&&(!c.contentDigest||!e||c.contentDigest===e);if(c&&!f)throw new af("operation id is already reserved for another client message");f&&c.terminalState&&(n=ak(c))}return{canonicalId:g,existing:h,requestDigest:j,terminalOperationRetry:n,supersededFailed:m}}function aE(a,b,c,d,e,f){if(a.existing?.state==="delivered"||a.existing?.error===av)return ak(a.existing);let g=a.terminalOperationRetry;return g?.terminalState?{id:g.deliveryId,conversationId:a.canonicalId,runtimeConversationId:g.runtimeConversationId,text:b,createdAt:g.createdAt,clientMessageId:c,payloadKind:d,runtimeImages:e.map(a=>({...a})),contentDigest:f,artifactPaths:[],command:g.command,requestDigest:g.requestDigest,state:g.terminalState,generationId:null,attempts:0,assignedAt:null,deliveredAt:"delivered"===g.terminalState?g.createdAt:null,error:"failed"===g.terminalState?"delivery failed":null}:null}function aF(a,b,c){for(let b of Object.values(a.heldDeliveries))b.command.operationId!==b.id&&b.requestDigest&&(a.deliveryOperationOwners[b.command.operationId]??={conversationId:b.conversationId,runtimeConversationId:b.runtimeConversationId,clientMessageId:b.clientMessageId,deliveryId:b.id,command:b.command,requestDigest:b.requestDigest,contentDigest:b.contentDigest,createdAt:b.createdAt,terminalState:null},az(a,b));let d=new Map,e=new Map;for(let c of Object.values(a.heldDeliveries)){let f=aP(a,c.conversationId);if(!b||f===aP(a,b)){if("delivered"===c.state){c.text="";let a=d.get(f)??[];a.push(c),d.set(f,a)}else if("failed"===c.state&&!c.error?.startsWith(o.BD)){let a=e.get(f)??[];a.push(c),e.set(f,a)}}}let f=0;for(let b of[d,e])for(let[d,e]of b){let g=[];for(let b of e)!function(a,b){if(void 0===b)return!1;let c=Date.parse(a.deliveredAt??a.createdAt);return Number.isFinite(c)&&b-c>6048e5}(b,c)?g.push(b):(delete a.heldDeliveries[b.id],f+=1);b.set(d,g)}for(let b of d.values())for(let c of(b.sort((a,b)=>(b.deliveredAt??b.createdAt).localeCompare(a.deliveredAt??a.createdAt)||b.id.localeCompare(a.id)),b.slice(100)))delete a.heldDeliveries[c.id],f+=1;for(let[b,c]of e){let d=Math.max(0,Math.min(50,99-Object.values(a.heldDeliveries).filter(c=>aP(a,c.conversationId)===b&&["held","assigned","delivery-uncertain"].includes(c.state)).length));for(let b of(c.sort((a,b)=>b.createdAt.localeCompare(a.createdAt)||b.id.localeCompare(a.id)),c.slice(d)))delete a.heldDeliveries[b.id],f+=1}let g=new Map;for(let[c,d]of Object.entries(a.deliveryOperationOwners)){if(null===d.terminalState)continue;let e=aP(a,d.conversationId);if(b&&e!==aP(a,b))continue;let f=g.get(e)??[];f.push([c,d]),g.set(e,f)}for(let b of g.values())for(let[c]of(b.sort(([a,b],[c,d])=>d.createdAt.localeCompare(b.createdAt)||c.localeCompare(a)),b.slice(200)))delete a.deliveryOperationOwners[c];return f}function aG(a,b){return a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b)}function aH(a,b){a.generations.some(a=>a.path===b)||(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.migration&&"committed"!==a.migration.phase&&!a.migration.pendingContinuityPaths.includes(b)&&a.migration.pendingContinuityPaths.push(b))}function aI(a,b){!a.generations.some(a=>a.path===b)&&(a.continuityPaths.includes(b)||a.continuityPaths.push(b),a.providerForkPaths.includes(b)||a.providerForkPaths.push(b))}function aJ(a,b,c){let d=Object.values(a.conversations).find(a=>a.id!==b.id&&a.engine===b.engine&&aG(a,c));if(d&&!aY(a,d,b,c))throw Error("migration continuity path has another durable owner")}function aK(a){let b=a.migration?.pendingContinuityPaths??[];0!==b.length&&(a.abandonedContinuityPaths=[...new Set([...a.abandonedContinuityPaths,...b])])}function aL(a,b){let c=a.generations[0];return null===a.migration&&1===a.generations.length&&c?.path===b&&0===a.continuityPaths.length}function aM(a,b){let c=100*(b.generations.length>1||null!==b.migration);for(let d of Object.values(a.receipts))d.conversationId===b.id&&(c+=20),d.parentConversationId===b.id&&(c+=5);for(let d of(a.lineageEdges[b.id]&&(c+=10),Object.values(a.lineageEdges)))d.parentConversationId===b.id&&(c+=5);for(let d of(a.memberships[b.id]?.length&&(c+=10),Object.values(a.heldDeliveries)))d.conversationId===b.id&&(c+=5);for(let d of Object.values(a.deliveryOperationOwners))d.conversationId===b.id&&(c+=5);return c}function aN(a,b){return[...b].sort((b,c)=>aM(a,c)-aM(a,b)||b.createdAt.localeCompare(c.createdAt)||b.id.localeCompare(c.id))[0]??null}function aO(a,b,c,d){let e=b.generations.find(a=>a.path===c)??b.generations.at(-1),f=a.lineageEdges[b.id],g=f?.source==="viewer-spawn"?f.parentConversationId:e?.launchProfile.parentConversationId;if(!e||!g||g===b.id)return;let h=aP(a,g),i=a.conversations[h];if(!i)return;let j=i.generations.at(-1);a.lineageEdges[b.id]={childConversationId:b.id,parentConversationId:h,childSessionKey:(0,w.sz)(b.engine,c),parentSessionKey:j?(0,w.sz)(i.engine,j.path):null,childArtifactPath:c,parentArtifactPath:j?.path??null,kind:f?.kind??"spawn",role:f?.role??null,reviewsConversationId:f?.reviewsConversationId??null,source:f?.source??"engine-native",evidence:f?.evidence??{launchId:null,clientAttemptId:null},createdAt:f?.createdAt??d}}function aP(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function aQ(a,b){let c=new Set,d=aP(a,b);for(;c.size<64&&!c.has(d);){c.add(d);let b=a.conversations[d]?.supersededBy?.conversationId;if(!b)break;d=aP(a,b)}return d}function aR(a,b){let c=b.generations.at(-1);if(!c)return!1;let d=a.entries[(0,w.pp)({engine:b.engine,sessionId:c.id})];return!!(d&&d.artifactPath===c.path&&("starting"===d.status||"live"===d.status))}function aS(a,b,c,d){let e=aP(a,c),f=aQ(a,b);if(!a.conversations[aP(a,b)])throw Error("supersedence predecessor is unknown");if(!a.conversations[e])throw Error("supersedence successor is unknown");if(f===e)return a.conversations[f]??null;let g=a.conversations[f];if(!g)throw Error("supersedence predecessor is unknown");if(aQ(a,e)===f)throw Error("supersedence chain would form a cycle");if(aR(a,g))throw new O(f,"supersedence chain already ends at a live conversation");return g.supersededBy={conversationId:e,at:al(),reason:d},g.updatedAt=g.supersededBy.at,a.conversationRevision[g.engine]+=1,g}function aT(a,b,c,d){try{aS(a,b,c,d),delete a.pendingSupersedence[aP(a,c)]}catch(f){if(!(f instanceof O))return;let e=aP(a,c);a.pendingSupersedence[e]??={predecessorConversationId:aP(a,b),successorConversationId:e,reason:d,stagedAt:al()}}}function aU(a,b,c,d){if("flow"!==c.kind&&"pipeline"!==c.kind||!c.containerId.trim()||!c.role.trim()||!c.slot.trim())throw Error("durable membership is invalid");let e=aP(a,b),f=c.parentConversationId?aP(a,c.parentConversationId):null,g={conversationId:e,kind:c.kind,containerId:c.containerId,role:c.role,slot:c.slot,stageId:c.stageId??null,stageOrder:Number.isInteger(c.stageOrder)?c.stageOrder:null,round:Number.isInteger(c.round)?c.round:null,parentConversationId:f,runtime:c.runtime?{...c.runtime}:null,createdAt:d},h=a.memberships[e]??[],i=h.find(a=>a.kind===g.kind&&a.containerId===g.containerId&&a.slot===g.slot);if(i){if(JSON.stringify((({createdAt:a,...b})=>b)(i))!==JSON.stringify((({createdAt:a,...b})=>b)(g)))throw Error("durable membership is immutable");return i}return h.push(g),a.memberships[e]=h,g}function aV(a){return aX(a,ak)}function aW(a){return aX(a,a=>a)}function aX(a,b){let c=new Map;for(let b of Object.values(a.conversations)){for(let a of b.generations)c.has(a.path)||c.set(a.path,b);for(let a of b.continuityPaths)c.has(a)||c.set(a,b)}return{conversationForPath(a){let d=c.get(a);return d?b(d):null},canonicalConversationId:b=>aP(a,b),conversation(c){let d=a.conversations[aP(a,c)];return d?b(d):null}}}function aY(a,b,c,d){if(!aL(b,d))return!1;for(let d of(b.migrationOptOut&&(!c.migrationOptOut||b.migrationOptOut.updatedAt>c.migrationOptOut.updatedAt)&&(c.migrationOptOut={...b.migrationOptOut}),c.agentRole??=b.agentRole,c.delegationDepth??=b.delegationDepth,Object.values(a.receipts)))d.conversationId===b.id&&(d.conversationId=c.id),d.parentConversationId===b.id&&(d.parentConversationId=c.id),d.launchProfile.parentConversationId===b.id&&(d.launchProfile={...d.launchProfile,parentConversationId:c.id});let e={};for(let d of Object.values(a.lineageEdges)){let a={...d,childConversationId:d.childConversationId===b.id?c.id:d.childConversationId,parentConversationId:d.parentConversationId===b.id?c.id:d.parentConversationId,reviewsConversationId:d.reviewsConversationId===b.id?c.id:d.reviewsConversationId};a.childConversationId!==a.parentConversationId&&(e[a.childConversationId]&&d.childConversationId!==c.id||(e[a.childConversationId]=a))}a.lineageEdges=e;let f={};for(let[d,e]of Object.entries(a.memberships)){let a=d===b.id?c.id:d,g=e.map(d=>({...d,conversationId:a,parentConversationId:d.parentConversationId===b.id?c.id:d.parentConversationId})),h=f[a]??[];for(let a of g)h.some(b=>b.kind===a.kind&&b.containerId===a.containerId&&b.slot===a.slot)||h.push(a);f[a]=h}for(let d of(a.memberships=f,Object.values(a.heldDeliveries)))d.conversationId===b.id&&(d.conversationId=c.id);for(let d of Object.values(a.deliveryOperationOwners))d.conversationId===b.id&&(d.conversationId=c.id);for(let d of Object.values(a.entries))d.launchProfile?.parentConversationId===b.id&&(d.launchProfile={...d.launchProfile,parentConversationId:c.id});for(let d of Object.values(a.conversations))for(let a of d.generations)a.launchProfile.parentConversationId===b.id&&(a.launchProfile={...a.launchProfile,parentConversationId:c.id});for(let[d,e]of Object.entries(a.conversationAliases))e===b.id&&(a.conversationAliases[d]=c.id);return a.conversationAliases[b.id]=c.id,delete a.conversations[b.id],a.conversationRevision[c.engine]+=1,a.engineRouting[c.engine].revision+=1,!0}function aZ(a,b){if(!a)return!0;let c=Date.parse(a),d=Date.parse(b);return Number.isFinite(c)&&Number.isFinite(d)?d>=c:b>=a}function a$(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return null;let c=a.spec,d="string"==typeof a.retryAt?Date.parse(a.retryAt):NaN,e=(0,L.kW)(a.imageRefs??[],16);if(1!==a.version||!Number.isFinite(d)||"string"!=typeof a.accountId||!a.accountId||"en"!==a.locale&&"uk"!==a.locale||!c||"claude"!==c.engine&&"codex"!==c.engine||"string"!=typeof c.command||"string"!=typeof c.cwd||"string"!=typeof c.windowName||!c.launchProfile||"string"!=typeof a.prompt||!e)return null;try{(0,L.h1)(a.prompt)}catch{return null}return{version:1,retryAt:new Date(d).toISOString(),accountId:a.accountId,locale:a.locale,spec:{command:c.command,cwd:c.cwd,windowName:c.windowName,engine:c.engine,..."string"==typeof c.transcript?{transcript:c.transcript}:{},...!0===c.printMode?{printMode:!0}:{},launchProfile:(0,n.Ui)(c.launchProfile,b)},prompt:a.prompt,imageRefs:e,parentArtifactPath:"string"==typeof a.parentArtifactPath?a.parentArtifactPath:null,pipelineSourceConversationId:"string"==typeof a.pipelineSourceConversationId&&a.pipelineSourceConversationId.startsWith("conversation_")?a.pipelineSourceConversationId:null}}function a_(a,b){let c="completed"===a.state||"failed"===a.state||"pane-bound"===a.state||"host-verified"===a.state||"prompt-delivered"===a.state||"path-pending"===a.state||"conflicted"===a.state?a.state:"starting",d=a.pane&&"object"==typeof a.pane&&"string"==typeof a.pane.paneId&&"string"==typeof a.pane.target?{...a.pane,display:"string"==typeof a.pane.display?a.pane.display:a.pane.target,target:a.pane.paneId}:null;return{...a,clientAttemptId:"string"==typeof a.clientAttemptId?a.clientAttemptId:null,requestDigest:"string"==typeof a.requestDigest?a.requestDigest:null,transport:"tmux"===a.transport||"structured"===a.transport?a.transport:null,admissionOwner:a.admissionOwner&&Number.isInteger(a.admissionOwner.pid)&&a.admissionOwner.pid>0?{pid:a.admissionOwner.pid,startIdentity:"string"==typeof a.admissionOwner.startIdentity?a.admissionOwner.startIdentity:null}:null,spawnCapabilityDigest:"string"==typeof a.spawnCapabilityDigest&&/^[0-9a-f]{64}$/.test(a.spawnCapabilityDigest)?a.spawnCapabilityDigest:null,conversationId:"string"==typeof a.conversationId&&a.conversationId.startsWith("conversation_")?a.conversationId:`conversation_${e().randomUUID()}`,purpose:"migration-successor"===a.purpose||"resume-successor"===a.purpose?a.purpose:"launch",supersedes:a.supersedes&&"string"==typeof a.supersedes.conversationId&&a.supersedes.conversationId.startsWith("conversation_")?{conversationId:a.supersedes.conversationId,reason:"stage-retry"===a.supersedes.reason||"manual"===a.supersedes.reason?a.supersedes.reason:"recovery-spawn"}:null,resumeSourcePath:"string"==typeof a.resumeSourcePath?a.resumeSourcePath:null,pathCorrelation:a.pathCorrelation&&"string"==typeof a.pathCorrelation.cwd&&"string"==typeof a.pathCorrelation.startedAt?a.pathCorrelation:null,accountId:"string"==typeof a.accountId?a.accountId:null,accountPin:!0===a.accountPin,parentConversationId:"string"==typeof a.parentConversationId&&a.parentConversationId.startsWith("conversation_")?a.parentConversationId:null,parentSource:"explicit"===a.parentSource||"inferred-caller"===a.parentSource?a.parentSource:null,state:c,artifactLifecycle:"materialized"===a.artifactLifecycle?"materialized":"pending",key:a.key&&"object"==typeof a.key&&("claude"===a.key.engine||"codex"===a.key.engine)&&"string"==typeof a.key.sessionId?a.key:null,pane:d,verifiedHost:a.verifiedHost&&"object"==typeof a.verifiedHost&&"tmux"===a.verifiedHost.kind?a.verifiedHost:null,target:d?.paneId??("string"==typeof a.target&&/^%\d+$/.test(a.target)?a.target:null),completionMode:"route-completed"===a.completionMode||"observed-completed"===a.completionMode||"route-recovered"===a.completionMode?a.completionMode:null,agentRole:a1(a.agentRole),delegationDepth:a2(a.delegationDepth),rejection:function(a){if(!a||"object"!=typeof a||"reviewer_origin_spawn"!==a.code&&"nesting_depth_exceeded"!==a.code)return null;let b=a.origin;return b&&("agent"===b.kind||"container"===b.kind)?{code:a.code,origin:{kind:b.kind,conversationId:"string"==typeof b.conversationId&&b.conversationId.startsWith("conversation_")?b.conversationId:null,role:a1(b.role),depth:Number.isInteger(b.depth)&&b.depth>=0?b.depth:0},requestedRole:a1(a.requestedRole),childDepth:Number.isInteger(a.childDepth)&&a.childDepth>=0?a.childDepth:0,maxDepth:Number.isInteger(a.maxDepth)&&a.maxDepth>=1?a.maxDepth:1,guidance:"string"==typeof a.guidance?a.guidance:"",rejectedAt:"string"==typeof a.rejectedAt?a.rejectedAt:al()}:null}(a.rejection),launchProfile:(0,n.Ui)({...a.launchProfile??{},cwd:a.launchProfile?.cwd??a.cwd},b),explicitProject:(0,n.QK)(a.explicitProject),launchDisplay:a0(a.launchDisplay),queuedPinnedSpawn:a$(a.queuedPinnedSpawn,b),...a.retryClaim&&"string"==typeof a.retryClaim.claimId&&"string"==typeof a.retryClaim.claimedAt?{retryClaim:{claimId:a.retryClaim.claimId,claimedAt:a.retryClaim.claimedAt}}:{}}}function a0(a){if(!a||"object"!=typeof a||"string"!=typeof a.prompt)return null;let b=Number.isInteger(a.images)&&a.images>=0?a.images:0,c="string"==typeof a.echo?a.echo:a.prompt;return a.prompt.trim()||c.trim()||0!==b?{prompt:a.prompt,images:b,echo:c}:null}function a1(a){return"string"==typeof a&&a.trim()?a.trim():null}function a2(a){return Number.isInteger(a)&&a>=0?a:null}function a3(a,b){if(1===a.version&&a.entries&&a.receipts&&"object"==typeof a.entries&&"object"==typeof a.receipts){let c;return(0,p.g8)((c=a.legacyResumePanes,{...ak(ai),autoBalance:{claude:ah(ag),codex:ah(ag)},entries:a.entries??{},receipts:Object.fromEntries(Object.entries(a.receipts??{}).map(([a,c])=>[a,a_(c,b)])),conversationAliases:{},importedResumePanes:!0===a.importedResumePanes,legacyResumePanes:c&&"object"==typeof c&&"panes"in c?{serverPid:"number"==typeof c.serverPid?c.serverPid:null,panes:c.panes??{}}:{serverPid:null,panes:{}}}),b)}if(2!==a.version||!a.entries||!a.receipts||"object"!=typeof a.entries||"object"!=typeof a.receipts)throw new aj("agent registry schema is unsupported");let c=a.legacyResumePanes,d=a.heldDeliveries&&"object"==typeof a.heldDeliveries?Object.fromEntries(Object.entries(a.heldDeliveries).map(([a,b])=>[a,aw(b)])):{};return(0,p.g8)(function(a){for(let b of Object.values(a.receipts)){if("structured"!==b.transport||"completed"!==b.state||"pending"!==b.artifactLifecycle||!b.artifactPath)continue;let c=a.conversations[aP(a,b.conversationId)],d=c?.generations.find(a=>a.path===b.artifactPath),e="observed-completed"===b.completionMode||"route-recovered"===b.completionMode,f="launch"===b.purpose&&c?.generations.length===1&&0===c.continuityPaths.length&&null===c.migration&&null!==c.turn.observedAt&&void 0!==d;c?.engine===b.engine&&d&&(e||f)&&(b.artifactLifecycle="materialized")}return a}({version:2,entries:Object.fromEntries(Object.entries(a.entries).map(([a,c])=>[a,{...c,...c.launchProfile?{launchProfile:(0,n.Ui)(c.launchProfile,b)}:{},host:c.host&&"object"==typeof c.host&&"tmux"===c.host.kind?c.host:null,structuredHost:aq(c.structuredHost)}])),receipts:Object.fromEntries(Object.entries(a.receipts).map(([a,c])=>[a,a_(c,b)])),lineageEdges:a.lineageEdges&&"object"==typeof a.lineageEdges?Object.fromEntries(Object.entries(a.lineageEdges).map(([a,b])=>{let c,d;return[a,(c="string"==typeof b.reviewsConversationId&&b.reviewsConversationId.startsWith("conversation_")?b.reviewsConversationId:null,d="string"==typeof b.role&&b.role.trim()?b.role.trim():null,{...b,kind:"review"===b.kind||c||"reviewer"===d?"review":"spawn",role:d,reviewsConversationId:c})]})):{},memberships:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a)){if(!c.startsWith("conversation_")||!Array.isArray(d))continue;let a=d.flatMap(a=>{if(!a||"object"!=typeof a||Array.isArray(a)||"flow"!==a.kind&&"pipeline"!==a.kind||"string"!=typeof a.containerId||!a.containerId||"string"!=typeof a.role||!a.role||"string"!=typeof a.slot||!a.slot)return[];let b=a.runtime&&"object"==typeof a.runtime&&("claude"===a.runtime.engine||"codex"===a.runtime.engine)?{engine:a.runtime.engine,model:"string"==typeof a.runtime.model?a.runtime.model:null,effort:"string"==typeof a.runtime.effort?a.runtime.effort:null}:null;return[{conversationId:c,kind:a.kind,containerId:a.containerId,role:a.role,slot:a.slot,stageId:"string"==typeof a.stageId?a.stageId:null,stageOrder:Number.isInteger(a.stageOrder)?a.stageOrder:null,round:Number.isInteger(a.round)?a.round:null,parentConversationId:"string"==typeof a.parentConversationId&&a.parentConversationId.startsWith("conversation_")?a.parentConversationId:null,runtime:b,createdAt:"string"==typeof a.createdAt?a.createdAt:al()}]});a.length&&(b[c]=a)}return b}(a.memberships),importedResumePanes:!0===a.importedResumePanes,legacyResumePanes:c&&"object"==typeof c&&"panes"in c?{serverPid:"number"==typeof c.serverPid?c.serverPid:null,panes:c.panes??{}}:{serverPid:null,panes:{}},conversations:a.conversations&&"object"==typeof a.conversations?Object.fromEntries(Object.entries(a.conversations).map(([a,c])=>{var d;let e,f,g,h,i,j,k,l,m,o,p,q,r;return[a,(f=(e=Array.isArray(c.generations)?c.generations.map(a=>({...a,launchProfile:(0,n.Ui)(a.launchProfile??{},b),historyHash:"string"==typeof a.historyHash?a.historyHash:null,host:a.host&&"object"==typeof a.host?a.host:null})):[]).at(-1),g=c.migration?.continuityPaths,h=(d=c.migration?.providerReceipt)&&"object"==typeof d?{...d,continuityPaths:Array.isArray(d.continuityPaths)?d.continuityPaths.filter(a=>"string"==typeof a):[]}:null,i=Array.isArray(c.migration?.pendingContinuityPaths)?c.migration.pendingContinuityPaths.filter(a=>"string"==typeof a):c.migration?.phase!=="committed"&&h?[...new Set([...h.continuityPaths,h.path])]:[],j=c.migration&&"object"==typeof c.migration?{...c.migration,errorCode:c.migration.errorCode??null,operationId:c.migration.operationId??`${c.migration.intentId}:${c.id}:${c.migration.revision}`,sourceGenerationId:c.migration.sourceGenerationId??f?.id??"",providerReceipt:h,pendingContinuityPaths:i,boardProject:"string"==typeof c.migration.boardProject?c.migration.boardProject:null,boardOperationId:"string"==typeof c.migration.boardOperationId?c.migration.boardOperationId:null,boardPlacementProject:"string"==typeof c.migration.boardPlacementProject?c.migration.boardPlacementProject:null}:null,k=[...new Set([...Array.isArray(c.continuityPaths)?c.continuityPaths.filter(a=>"string"==typeof a):[],...Array.isArray(g)?g.filter(a=>"string"==typeof a):[],...j?.providerReceipt?.continuityPaths??[]])],l=Array.isArray(c.abandonedContinuityPaths)?[...new Set(c.abandonedContinuityPaths.filter(a=>"string"==typeof a))]:[],m=Array.isArray(c.providerForkPaths)?[...new Set(c.providerForkPaths.filter(a=>"string"==typeof a))].filter(a=>k.includes(a)):[],p=(o=c.migrationOptOut)&&"string"==typeof o.targetId&&"string"==typeof o.updatedAt?{targetId:o.targetId,updatedAt:o.updatedAt}:null,r=(q=c.supersededBy)&&"string"==typeof q.conversationId&&q.conversationId.startsWith("conversation_")&&"string"==typeof q.at?{conversationId:q.conversationId,at:q.at,reason:"stage-retry"===q.reason||"manual"===q.reason?q.reason:"recovery-spawn"}:null,{...c,generations:e,continuityPaths:k,abandonedContinuityPaths:l,providerForkPaths:m,projectOwnership:(0,n.MO)(c.projectOwnership),pinnedAccountId:"string"==typeof c.pinnedAccountId?c.pinnedAccountId:null,reconfigure:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a=>!a||"object"!=typeof a||Array.isArray(a)||null!==a.model&&"string"!=typeof a.model||null!==a.effort&&"string"!=typeof a.effort||null!==a.fast&&"boolean"!=typeof a.fast?null:{model:a.model??null,effort:a.effort??null,fast:a.fast??null},c=b(a.profile),d=b(a.previousProfile);return c&&d&&"string"==typeof a.operationId&&a.operationId&&Number.isSafeInteger(a.revision)&&!(a.revision<0)&&("applying"===a.status||"applied"===a.status||"failed"===a.status)?{operationId:a.operationId,revision:a.revision,status:a.status,profile:c,previousProfile:d,accountId:"string"==typeof a.accountId?a.accountId:null,error:"string"==typeof a.error?a.error:null}:null}(c.reconfigure),migration:j,migrationOptOut:p,supersededBy:r,agentRole:a1(c.agentRole),delegationDepth:a2(c.delegationDepth),turn:c.turn&&"object"==typeof c.turn?{state:c.turn.state,source:c.turn.source,terminalAt:c.turn.terminalAt??null,observedAt:c.turn.observedAt??null}:{state:"unknown",source:"empty",terminalAt:null,observedAt:null}})]})):{},conversationAliases:a.conversationAliases&&"object"==typeof a.conversationAliases?Object.fromEntries(Object.entries(a.conversationAliases).filter(([a,b])=>a.startsWith("conversation_")&&"string"==typeof b&&b.startsWith("conversation_"))):{},conversationRevision:a.conversationRevision&&"object"==typeof a.conversationRevision?{...ai.conversationRevision,...a.conversationRevision}:ak(ai.conversationRevision),migrationIntents:a.migrationIntents&&"object"==typeof a.migrationIntents?a.migrationIntents:{},engineRouting:a.engineRouting&&"object"==typeof a.engineRouting?{...ai.engineRouting,...a.engineRouting}:ak(ai.engineRouting),autoBalance:a.autoBalance&&"object"==typeof a.autoBalance?{claude:ar(a.autoBalance.claude),codex:ar(a.autoBalance.codex)}:{claude:ah(ag),codex:ah(ag)},quotaObservations:a.quotaObservations&&"object"==typeof a.quotaObservations?{...ai.quotaObservations,...a.quotaObservations}:ak(ai.quotaObservations),heldDeliveries:d,deliveryOperationOwners:function(a,b){let c={};if(a&&"object"==typeof a&&!Array.isArray(a))for(let[d,e]of Object.entries(a)){if(!d||!e||"object"!=typeof e||Array.isArray(e)||"string"!=typeof e.conversationId||!e.conversationId.startsWith("conversation_")||null!==e.clientMessageId&&"string"!=typeof e.clientMessageId||"string"!=typeof e.deliveryId||!e.deliveryId||"string"!=typeof e.requestDigest||!e.requestDigest)continue;let a=e.settledDelivery&&"object"==typeof e.settledDelivery?aw(e.settledDelivery):null,f=a?.id===e.deliveryId&&a.command.operationId===d&&a.requestDigest===e.requestDigest&&null!==ax(a)?a:null,g=b[e.deliveryId],h=g?.command.operationId===d&&g.requestDigest===e.requestDigest?g:null,i=h?ax(h):"delivered"===e.terminalState||"failed"===e.terminalState?e.terminalState:ax(f);c[d]={conversationId:e.conversationId,runtimeConversationId:"string"==typeof e.runtimeConversationId&&e.runtimeConversationId.startsWith("conversation_")?e.runtimeConversationId:b[e.deliveryId]?.runtimeConversationId??e.conversationId,clientMessageId:e.clientMessageId,deliveryId:e.deliveryId,command:{...at(e.command,d),operationId:d},requestDigest:e.requestDigest,contentDigest:"string"==typeof e.contentDigest?e.contentDigest:h?.contentDigest??f?.contentDigest??null,createdAt:"string"==typeof e.createdAt?e.createdAt:h?.createdAt??f?.createdAt??ag,terminalState:i}}for(let a of Object.values(b))a.command.operationId!==a.id&&a.requestDigest&&(c[a.command.operationId]??={conversationId:a.conversationId,runtimeConversationId:a.runtimeConversationId,clientMessageId:a.clientMessageId,deliveryId:a.id,command:a.command,requestDigest:a.requestDigest,contentDigest:a.contentDigest,createdAt:a.createdAt,terminalState:ax(a)});return c}(a.deliveryOperationOwners,d),pendingSuccessorCleanups:a.pendingSuccessorCleanups&&"object"==typeof a.pendingSuccessorCleanups?a.pendingSuccessorCleanups:{},pendingSupersedence:function(a){if(!a||"object"!=typeof a)return{};let b={};for(let[c,d]of Object.entries(a))d&&"string"==typeof d.predecessorConversationId&&d.predecessorConversationId.startsWith("conversation_")&&"string"==typeof d.successorConversationId&&d.successorConversationId.startsWith("conversation_")&&"string"==typeof d.stagedAt&&(b[c]={predecessorConversationId:d.predecessorConversationId,successorConversationId:d.successorConversationId,reason:"stage-retry"===d.reason||"manual"===d.reason?d.reason:"recovery-spawn",stagedAt:d.stagedAt});return b}(a.pendingSupersedence)}),b)}function a4(a,b){try{let c=g().readFileSync(a,"utf8");return{file:(0,p.$q)(a3(JSON.parse(c),b),b),payload:c}}catch(a){if("ENOENT"===a.code)return{file:ak(ai),payload:null};if(a instanceof aj)throw a;throw new aj(`agent registry cannot be read: ${a instanceof Error?a.message:String(a)}`)}}function a5(a,b){return a4(a,b).file}function a6(a){try{let b=g().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}:${b.size}:${b.mtimeNs}:${b.ctimeNs}`}catch(a){if("ENOENT"===a.code)return"missing";throw new aj(`agent registry cannot be stated: ${a instanceof Error?a.message:String(a)}`)}}function a7(a){let b={...a};for(let a of Object.keys(b))null===b[a]&&delete b[a];return""===b.cwd&&delete b.cwd,"worker"===b.role&&delete b.role,!1===b.allowSubagents&&delete b.allowSubagents,b.mcpServers?.length===1&&"viewer"===b.mcpServers[0]&&delete b.mcpServers,b.plugins?.length===0&&delete b.plugins,b}function a8(a,b){return JSON.stringify({...a,...void 0===b?{}:{_sqliteRevision:b},entries:Object.fromEntries(Object.entries(a.entries).map(([a,b])=>[a,{...b,...b.launchProfile?{launchProfile:a7(b.launchProfile)}:{}}])),receipts:Object.fromEntries(Object.entries(a.receipts).map(([a,b])=>[a,{...b,launchProfile:a7(b.launchProfile)}])),conversations:Object.fromEntries(Object.entries(a.conversations).map(([a,b])=>[a,{...b,generations:b.generations.map(a=>({...a,launchProfile:a7(a.launchProfile)}))}]))})+"\n"}function a9(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${e().randomUUID()}.tmp`,d=null;try{d=g().openSync(c,"w",384),g().writeFileSync(d,b,"utf8"),g().fsyncSync(d),g().closeSync(d),d=null,g().renameSync(c,a);let e=g().openSync(i().dirname(a),"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}}finally{null!==d&&g().closeSync(d);try{g().unlinkSync(c)}catch{}}}class ba extends Error{constructor(...a){super(...a),this.name="RegistryParityError"}}function bb(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"))._sqliteRevision;return Number.isInteger(b)&&Number(b)>=0?Number(b):null}catch(a){if("ENOENT"===a.code)return null;throw a}}class bc{constructor(a=(0,k.BQ)("agent-registry.json"),b=a=>l.B.pidAlive(a.pid)&&(null===a.startIdentity||l.B.processIdentity(a.pid)===a.startIdentity),c=V,d={}){this.filename=a,this.ownerAlive=b,this.lockTiming=c,this.readOnlyCache=null,this.mirrorCheckpointPending=!1,this.mirrorCheckpointFailures=0,this.lastMirrorAt=null,this.lastMirroredRevision=null,this.mirrorDirty=!1,this.writerWaits=[],this.transactionDurations=[],this.transactionCount=0,this.transactionRateBuckets=new Map;const e=void 0!==d.sqliteMode?{mode:d.sqliteMode,sqliteFilename:null,source:"explicit"}:!0===d.resolveBackendIdentity?function(a,b=process.env,c=z){if(void 0!==b[x])return{mode:D(b),sqliteFilename:null,source:"environment"};let d=A(a),e=i().basename(d),f=B(a),g=c.readText(d);if(null===g){if(c.exists(f))throw new y(`the agent registry backend identity is unpublished while ${i().basename(f)} exists, so SQLite may be authoritative and the JSON mirror may be stale; start the registry writer with ${x} set so it publishes ${e}`);return{mode:"off",sqliteFilename:null,source:"json-only"}}let h=E(g,e);if("off"===h.mode){if(c.exists(f))throw new y(`${e} claims the JSON backend while ${i().basename(f)} exists; remove the stale store or republish the descriptor from the writer`);return{mode:"off",sqliteFilename:null,source:"descriptor"}}let j=i().join(i().dirname(d),h.sqliteFile);if(!c.exists(j))throw new y(`${e} names the ${h.mode} backend store ${h.sqliteFile}, which is unavailable`);return{mode:h.mode,sqliteFilename:j,source:"descriptor"}}(a):{mode:D(),sqliteFilename:null,source:"unmanaged"};this.sqliteMode=e.mode;const f=d.sqliteFilename??e.sqliteFilename??B(a);if(this.mcpGrantPolicy=d.mcpGrantPolicy,this.mirrorCheckpointMs=Math.max(0,d.mirrorCheckpointMs??5e3),this.now=d.now??Date.now,this.scheduleMirrorCheckpoint=d.scheduleMirrorCheckpoint??((a,b)=>setTimeout(a,b)),this.afterMirrorWrite=d.afterMirrorWrite,this.beforeDualWriteMutationReplace=d.beforeDualWriteMutationReplace,this.sqliteStore="off"===this.sqliteMode?null:new J(f,{initialSnapshot:a5(a,d.mcpGrantPolicy),normalize:a=>a3(a,d.mcpGrantPolicy),mcpGrantPolicy:d.mcpGrantPolicy,onWriterWait:a=>{this.recordMetric(this.writerWaits,a),d.onSqliteWriterWait?.(a)},onSnapshotLoad:d.onSqliteSnapshotLoad,onRowPayloadRead:d.onSqliteRowPayloadRead,onRowPayloadParse:d.onSqliteRowPayloadParse,onRevisionQuery:d.onSqliteRevisionQuery}),"off"===this.sqliteMode&&(this.cleanupStaleTempFiles(),this.compactAtStartup()),"dual-write"===this.sqliteMode&&(this.cleanupStaleTempFiles(),this.synchronizeDualWriteStartup(d.beforeDualWriteStartupReplace)),"read"===this.sqliteMode||"sqlite"===this.sqliteMode){const a=this.sqliteStore.snapshot(),b=bb(this.filename);if("read"===this.sqliteMode&&(null===b||b===a.revision)&&this.assertSqliteParity(a),null!==b&&b>a.revision)throw new ba("agent registry JSON mirror revision is ahead of SQLite");this.mirrorSqliteSnapshot(a)}"environment"===e.source&&function(a,b,c,d=z,e=()=>new Date().toISOString()){let f=A(a),g="off"===b?null:i().basename(c),h=d.readText(f);if(null!==h)try{let a=E(h,i().basename(f));if(a.mode===b&&a.sqliteFile===g)return}catch{}let j={schemaVersion:1,mode:b,sqliteFile:g,publishedAt:e()};d.writeText(f,`${JSON.stringify(j)}
170
- `)}(a,this.sqliteMode,f)}assertSqliteParity(a=this.sqliteStore.snapshot()){let b=a5(this.filename,this.mcpGrantPolicy);if(!(0,j.isDeepStrictEqual)(a.file,b)){let c=[...new Set([...Object.keys(a.file),...Object.keys(b)])].filter(c=>!(0,j.isDeepStrictEqual)(a.file[c],b[c]));throw new ba(`agent registry JSON and SQLite snapshots differ: ${c.join(", ")}`)}}mirrorSqliteSnapshot(a){var b;b=this.filename,a9(b,a8(a.file,a.revision)),this.afterMirrorWrite?.();let c=this.sqliteStore.revision();this.lastMirrorAt=this.now(),this.lastMirroredRevision=a.revision,this.mirrorDirty=c>a.revision,this.mirrorDirty&&this.scheduleRollbackMirror()}recordMetric(a,b){a.push(b),a.length>512&&a.splice(0,a.length-512)}percentile(a){if(0===a.length)return null;let b=[...a].sort((a,b)=>a-b);return b[Math.min(b.length-1,Math.ceil(.95*b.length)-1)]}storageDiagnostics(){let a=this.sqliteStore?.revision()??null;null!==a&&null!==this.lastMirroredRevision&&a>this.lastMirroredRevision&&(this.mirrorDirty=!0);let b=Math.floor(this.now()/1e3);for(let a of this.transactionRateBuckets.keys())a<=b-60&&this.transactionRateBuckets.delete(a);let c=[...this.transactionRateBuckets.values()].reduce((a,b)=>a+b,0);return{backendMode:this.sqliteMode,revision:a,transactionCount:this.transactionCount,writerRatePerSecond:c/60,writerWaitP95Ms:this.percentile(this.writerWaits),transactionP95Ms:this.percentile(this.transactionDurations),mirrorCheckpointAtMs:this.lastMirrorAt,mirrorAgeMs:null===this.lastMirrorAt?null:Math.max(0,this.now()-this.lastMirrorAt),mirrorDirty:this.mirrorDirty}}checkpointRollbackMirror(){if(!this.sqliteStore||"dual-write"===this.sqliteMode)return;let a=this.sqliteStore.revision();(this.mirrorDirty||null===this.lastMirroredRevision||!(a<=this.lastMirroredRevision))&&(this.mirrorSqliteSnapshot(this.sqliteStore.snapshot()),this.mirrorCheckpointFailures=0)}checkpointRollbackMirrorForDemotion(a=2){if(this.sqliteStore&&"dual-write"!==this.sqliteMode){for(let b=0;b<a;b+=1)if(this.checkpointRollbackMirror(),!this.storageDiagnostics().mirrorDirty)return;throw Error(`agent registry rollback mirror did not converge after ${a} attempts`)}}scheduleRollbackMirror(a=this.mirrorCheckpointMs){this.mirrorCheckpointPending||(this.mirrorCheckpointPending=!0,this.scheduleMirrorCheckpoint(()=>{this.mirrorCheckpointPending=!1;try{this.checkpointRollbackMirror()}catch(b){console.error("agent registry rollback checkpoint failed",b),this.mirrorCheckpointFailures+=1;let a=Math.min(1e3*2**(this.mirrorCheckpointFailures-1),3e4);this.scheduleRollbackMirror(a)}},a).unref?.())}scheduleRollbackMirrorForCadence(){let a=null===this.lastMirrorAt?this.mirrorCheckpointMs:Math.max(0,this.now()-this.lastMirrorAt);this.scheduleRollbackMirror(Math.max(0,this.mirrorCheckpointMs-a))}cleanupStaleTempFiles(){let a,b=i().dirname(this.filename),c=`${i().basename(this.filename)}.`;try{a=g().readdirSync(b)}catch(a){if("ENOENT"===a.code)return;throw a}for(let d of a){if(!d.startsWith(c)||!d.endsWith(".tmp"))continue;let a=d.slice(c.length,-4).split("."),e=Number(a[0]);if(2===a.length&&Number.isInteger(e)&&!(e<=0)&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(a[1]??"")&&!this.ownerAlive({pid:e,startIdentity:null}))try{g().unlinkSync(i().join(b,d))}catch(a){if("ENOENT"!==a.code)throw a}}}compactAtStartup(){if(!g().existsSync(this.filename))return;let a=`${this.filename}.write-lock`,b=this.acquireLock(a,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{this.compactAtStartupLocked()}finally{this.releaseLock(b)}}compactAtStartupLocked(){let a,b;try{a=g().readFileSync(this.filename,"utf8")}catch(a){if("ENOENT"===a.code)return;throw a}try{b=a5(this.filename,this.mcpGrantPolicy)}catch(a){if(a instanceof aj)return void console.error("agent registry startup compaction skipped:",a);throw a}aF(b,void 0,this.now()),a8(b)!==a&&a9(this.filename,a8(b,void 0))}synchronizeDualWriteStartup(a){let b=`${this.filename}.write-lock`,c=this.acquireLock(b,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{var d,e;let b=this.sqliteStore.snapshot();g().existsSync(this.filename)||(d=this.filename,e=b.file,a9(d,a8(e,void 0)));let c=bb(this.filename);if(null!==c&&c!==b.revision)throw new ba(`agent registry backend revisions differ: JSON ${c}, SQLite ${b.revision}`);this.assertSqliteParity(b),this.compactAtStartupLocked();let f=a5(this.filename,this.mcpGrantPolicy);a?.();let h=this.sqliteStore.replace(f,b.revision);if(!h.replaced)throw this.mirrorSqliteSnapshot(h),new ba(`agent registry SQLite revision changed during dual-write startup: expected ${b.revision}, current ${h.revision}`);this.assertSqliteParity()}finally{this.releaseLock(c)}}sameLock(a,b){try{let c=g().statSync(a);return c.dev===b.dev&&c.ino===b.ino}catch(a){if("ENOENT"===a.code)return!1;throw a}}lockOwnerFile(a){return g().statSync(a).isDirectory()?i().join(a,"owner.json"):a}lockToken(a){try{let b=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"));return"string"==typeof b.token?b.token:null}catch{return null}}finishRetirement(a,b){try{g().renameSync(a,b)}catch(c){let b=c.code;if("ENOENT"===b)return;if("EEXIST"===b||"ENOTEMPTY"===b)return void g().rmSync(a,{recursive:!0,force:!0});throw c}}restoreRecovery(a,b){for(;;)try{g().renameSync(b,a);return}catch(b){let a=b.code;if("ENOENT"===a)return;if("EEXIST"!==a&&"ENOTEMPTY"!==a)throw b;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,5)}}resolveInterruptedRelease(a){let b,c=`${a}.releasing`;if(!g().existsSync(c))return;let d=null;try{b=g().statSync(c),d=JSON.parse(g().readFileSync(this.lockOwnerFile(c),"utf8"))}catch(a){a.code;return}Number.isInteger(d.pid)&&d.pid>0&&this.ownerAlive(d)||(!Number.isInteger(d.pid)||d.pid<=0)&&this.lockTiming.now()-b.mtimeMs<1e3||g().rmSync(c,{recursive:!0,force:!0})}retireObservedLock(a,b,c,d){let e=`${a}.recovering`;if(!b.isDirectory){try{g().linkSync(a,e)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a)return;throw b}return this.sameLock(e,b)&&this.lockToken(e)===c&&this.sameLock(a,b)&&this.lockToken(a)===c?(g().rmSync(a,{force:!0}),void this.finishRetirement(e,`${a}.retired-${d}`)):void g().rmSync(e,{force:!0})}try{g().renameSync(a,e)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a||"ENOTEMPTY"===a)return;throw b}this.sameLock(e,b)&&this.lockToken(e)===c?this.finishRetirement(e,`${a}.retired-${d}`):this.restoreRecovery(a,e)}resolveInterruptedRecovery(a){let b,c=`${a}.recovering`;if(!g().existsSync(c))return;if(g().existsSync(a)){let b,c=null;try{b=g().statSync(a)}catch(a){if("ENOENT"===a.code)return;throw a}try{c=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"))}catch{return}if(c&&Number.isInteger(c.pid)&&c.pid>0&&this.ownerAlive(c))return;let d="string"==typeof c?.token?c.token:null,e=d&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(d)?d:`abandoned-${b.dev}-${b.ino}-${b.ctimeMs}`;this.sameLock(a,{dev:b.dev,ino:b.ino})&&this.lockToken(a)===d&&this.finishRetirement(a,`${a}.retired-${e}`)}let d=null;try{b=g().statSync(c),d=JSON.parse(g().readFileSync(this.lockOwnerFile(c),"utf8"))}catch(b){if("ENOENT"===b.code)return;this.finishRetirement(c,`${a}.retired-interrupted-invalid`);return}if(Number.isInteger(d.pid)&&d.pid>0&&this.ownerAlive(d)){if(g().existsSync(a))return;this.restoreRecovery(a,c);return}let e="string"==typeof d.token?d.token:null,f=e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?e:`interrupted-${b.dev}-${b.ino}-${b.ctimeMs}`;this.finishRetirement(c,`${a}.retired-${f}`)}recoverContendedLock(a){let b;try{b=g().statSync(a)}catch(a){if("ENOENT"===a.code)return;throw a}let c=null;try{c=JSON.parse(g().readFileSync(this.lockOwnerFile(a),"utf8"))}catch{}if(c&&Number.isInteger(c.pid)&&c.pid>0){if(!this.ownerAlive(c)){let d="string"==typeof c.token&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.token)?c.token:`legacy-${b.dev}-${b.ino}-${b.ctimeMs}`;this.retireObservedLock(a,{dev:b.dev,ino:b.ino,isDirectory:b.isDirectory()},"string"==typeof c.token?c.token:null,d)}return}}tryAcquireLock(a,b){if(this.resolveInterruptedRelease(a),g().existsSync(`${a}.releasing`)||(this.resolveInterruptedRecovery(a),g().existsSync(`${a}.recovering`)))return null;let c=e().randomUUID(),d=`${a}.owner.pending-${c}`,f=null,h=null,j=!1;try{g().mkdirSync(d,448),f=g().openSync(i().join(d,"owner.json"),"wx",384),g().writeFileSync(f,JSON.stringify({...b,token:c}),"utf8"),g().fsyncSync(f),g().closeSync(f),f=null;let e=g().openSync(d,"r");try{g().fsyncSync(e);let a=g().fstatSync(e);h={dev:a.dev,ino:a.ino}}finally{g().closeSync(e)}try{g().symlinkSync(i().basename(d),a,"dir")}catch(c){let b=c.code;if("EEXIST"!==b)throw c;return g().rmSync(d,{recursive:!0,force:!0}),this.recoverContendedLock(a),null}j=!0;let k={lock:a,token:c,identity:h,storage:d};if(!this.sameLock(a,k.identity)||this.lockToken(a)!==c)return null;if(g().existsSync(`${a}.recovering`)||g().existsSync(`${a}.releasing`))return this.releaseLock(k),null;return k}catch(b){throw null!==f&&g().closeSync(f),h&&(j?this.releaseLock({lock:a,token:c,identity:h,storage:d}):this.retireObservedLock(a,{...h,isDirectory:!0},null,`failed-${c}`)),j||g().rmSync(d,{recursive:!0,force:!0}),b}}retireClaim(a,b){let c,d=`${b.lock}.releasing`;if(this.resolveInterruptedRelease(b.lock),g().existsSync(d))return!1;try{c=g().statSync(a).isDirectory()}catch(a){if("ENOENT"===a.code)return!1;throw a}if(c){try{g().renameSync(a,d)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a||"ENOTEMPTY"===a)return!1;throw b}return this.sameLock(d,b.identity)&&this.lockToken(d)===b.token?(g().rmSync(d,{recursive:!0,force:!0}),g().rmSync(b.storage,{recursive:!0,force:!0}),!0):(this.restoreRecovery(a,d),!1)}try{g().linkSync(a,d)}catch(b){let a=b.code;if("ENOENT"===a||"EEXIST"===a)return!1;throw b}return this.sameLock(d,b.identity)&&this.lockToken(d)===b.token?(this.sameLock(a,b.identity)&&this.lockToken(a)===b.token&&g().rmSync(a,{force:!0}),g().rmSync(d,{force:!0}),g().rmSync(b.storage,{recursive:!0,force:!0}),!0):(g().rmSync(d,{force:!0}),!1)}releaseLock(a){for(let b of[a.lock,`${a.lock}.recovering`,a.lock])if(this.sameLock(b,a.identity)&&this.lockToken(b)===a.token&&this.retireClaim(b,a))return}lockBackoff(a,b){return Math.min(Math.min(5*2**Math.floor(a/20),50),b)}acquireLock(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});for(let c=0;;c+=1){let d=this.tryAcquireLock(a,b);if(d)return d;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,this.lockBackoff(c,50))}}async acquireLockAsync(a,b){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});for(let c=0;;c+=1){let d=this.tryAcquireLock(a,b);if(d)return d;await this.lockTiming.wait(this.lockBackoff(c,50))}}mutate(a){let b=performance.now(),c=this.mutateStorage(a);this.transactionCount+=1,this.recordMetric(this.transactionDurations,performance.now()-b);let d=Math.floor(this.now()/1e3);for(let a of(this.transactionRateBuckets.set(d,(this.transactionRateBuckets.get(d)??0)+1),this.transactionRateBuckets.keys()))a<=d-60&&this.transactionRateBuckets.delete(a);return c}mutateStorage(a){let b=b=>{let c=a(b);for(let[a,c]of Object.entries(b.pendingSupersedence)){let d=aP(b,c.predecessorConversationId),e=aP(b,c.successorConversationId);if(!b.conversations[d]||!b.conversations[e]){delete b.pendingSupersedence[a];continue}try{aS(b,d,e,c.reason),delete b.pendingSupersedence[a]}catch(c){if(c instanceof O)continue;delete b.pendingSupersedence[a]}}return c};if("read"===this.sqliteMode||"sqlite"===this.sqliteMode){let a=this.sqliteStore.mutate(b,!1);return"read"===this.sqliteMode&&(this.mirrorDirty=null===this.lastMirroredRevision||a.revision>this.lastMirroredRevision,this.mirrorDirty&&this.scheduleRollbackMirrorForCadence()),"sqlite"===this.sqliteMode&&(this.mirrorDirty=null===this.lastMirroredRevision||a.revision>this.lastMirroredRevision),a.result}let c=`${this.filename}.write-lock`,d=this.acquireLock(c,{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)});try{let a="dual-write"===this.sqliteMode?this.sqliteStore.snapshot():null;if(a){let b=bb(this.filename);if(null!==b&&b!==a.revision)throw new ba(`agent registry backend revisions differ: JSON ${b}, SQLite ${a.revision}`);this.assertSqliteParity(a)}let c=a4(this.filename,this.mcpGrantPolicy),d=c.file,e=b(d),f=a8(d),g=c.payload!==f;if(g&&a9(this.filename,f),a&&!g&&this.assertSqliteParity(),a&&g){this.beforeDualWriteMutationReplace?.();let b=this.sqliteStore.replace(d,a.revision);if(!b.replaced)throw this.mirrorSqliteSnapshot(b),new ba(`agent registry SQLite revision changed during dual-write mutation: expected ${a.revision}, current ${b.revision}`);this.assertSqliteParity()}return e}finally{this.releaseLock(d)}}snapshot(){return"read"===this.sqliteMode||"sqlite"===this.sqliteMode?this.sqliteStore.snapshot().file:a5(this.filename,this.mcpGrantPolicy)}readOnlySnapshot(){if("read"===this.sqliteMode||"sqlite"===this.sqliteMode)return this.sqliteStore.readOnlySnapshot().file;for(let a=0;a<2;a+=1){let a=a6(this.filename);if(this.readOnlyCache?.signature===a)return this.readOnlyCache.snapshot;let b=a5(this.filename,this.mcpGrantPolicy),c=a6(this.filename);if(a===c)return this.readOnlyCache={signature:c,snapshot:b},b}return a5(this.filename,this.mcpGrantPolicy)}snapshotSpawns(a){return this.sqliteStore?this.sqliteStore.snapshotSpawns(a):function(a,b){let c={};for(let d of new Set(b)){let b=a.receipts[d];if(!b)continue;let e=new Set,f=b.conversationId;for(let b=0;b<64&&f&&!e.has(f);b+=1){e.add(f);let c=a.conversationAliases[f];if(!c)break;f=b+1===64?null:c}c[d]={launchId:b.launchId,state:b.state,error:b.error,engine:b.engine,cwd:b.cwd,createdAt:b.createdAt,materializedPath:(f?a.conversations[f]:void 0)?.generations.at(-1)?.path??b.artifactPath}}return c}(this.readOnlySnapshot(),a)}snapshotTitleConversations(a){return this.sqliteStore?.snapshotTitleConversations(a)??[]}spawnReceiptForClientAttempt(a){let b=Object.values(this.readOnlySnapshot().receipts).find(b=>b.clientAttemptId===a);return b?ak(b):null}conversationIdForSpawnCapabilityDigest(a){if(!/^[0-9a-f]{64}$/.test(a))return null;let b=this.readOnlySnapshot(),c=Object.values(b.receipts).find(b=>b.spawnCapabilityDigest===a);return c?aP(b,c.conversationId):null}rotateSpawnCapabilityForReceipt(a){let b=e().randomBytes(32).toString("base64url"),c=e().createHash("sha256").update(b).digest("hex");return this.mutate(d=>{let e=d.receipts[a];if(!e)throw Error("spawn receipt is missing");let f=aP(d,e.conversationId);for(let a of Object.values(d.receipts))aP(d,a.conversationId)===f&&(a.spawnCapabilityDigest=null);return e.spawnCapabilityDigest=c,b})}rotateSpawnCapabilityForPath(a){let b=e().randomBytes(32).toString("base64url"),c=e().createHash("sha256").update(b).digest("hex");return this.mutate(d=>{let e=Object.values(d.conversations).find(b=>aG(b,a));if(!e)return null;let f=Object.values(d.receipts).filter(a=>aP(d,a.conversationId)===e.id).sort((a,b)=>b.createdAt.localeCompare(a.createdAt)),g=f[0];if(!g)return null;for(let a of f)a.spawnCapabilityDigest=null;return g.spawnCapabilityDigest=c,b})}beginSpawnRequest(a){let b=this.mutate(b=>this.beginSpawnRequestInFile(b,a));if("rejected"===b.kind||"replay"===b.kind&&b.receipt.rejection)throw new u(b.receipt,b.receipt.rejection);return b}beginSpawnRequestInFile(a,b){{var c;let d=b.conversationId?aP(a,b.conversationId):null,f=b.parentConversationId?aP(a,b.parentConversationId):null,h=b.reviewsConversationId?aP(a,b.reviewsConversationId):null,i="string"==typeof b.role&&b.role.trim()?b.role.trim():null;if("reviewer"===i&&!h&&b.origin?.kind!=="container")throw Error("reviewer spawn requires reviewsConversationId");if(h&&"reviewer"!==i)throw Error("reviewsConversationId requires reviewer role");let j=null==b.explicitProject?null:(0,n.QK)(b.explicitProject);if(null!=b.explicitProject&&!j)throw Error("explicit project is not a valid project key");let m=b.supersedes?aP(a,b.supersedes):null;if(m){if(!a.conversations[m])throw Error("supersedence predecessor is unknown");if(d===m)throw Error("a conversation cannot supersede itself")}let o=d?a.conversations[d]:null,q=(0,n.Ui)({cwd:b.cwd,...b.launchProfile??{},...j?{project:j}:{},parentConversationId:f}),s=o?.generations.at(-1)?.launchProfile,u="resume-successor"===b.purpose&&s?{cwd:q.cwd||s.cwd,model:q.model??s.model,effort:q.effort??s.effort,fast:q.fast??s.fast,permissionMode:q.permissionMode??s.permissionMode,readOnly:q.readOnly??s.readOnly,allowSubagents:s.allowSubagents||q.allowSubagents,mcpServers:s.mcpServers,plugins:s.plugins??[],title:q.title??s.title,project:q.project??s.project,parentConversationId:q.parentConversationId??s.parentConversationId,role:"root"===s.role||"root"===q.role?"root":"worker",goal:q.goal??s.goal,plan:q.plan??s.plan}:q;if(t(o?.agentRole)&&(u.allowSubagents=!1),(o?.agentRole||f)&&(u.plugins=[]),o&&o.engine!==b.engine)throw Error("spawn conversation ownership is invalid");if("resume-successor"===b.purpose&&o&&!T(o.migration))throw Error("conversation migration prevents resume succession");if(b.clientAttemptId){let c=Object.values(a.receipts).find(a=>a.clientAttemptId===b.clientAttemptId);if(c)return{kind:c.requestDigest===(b.requestDigest??null)&&c.engine===b.engine&&c.cwd===b.cwd&&c.transport===(b.transport??null)&&c.accountPin===(!0===b.accountPin)&&c.explicitProject===j&&(c.supersedes?.conversationId??null)===m&&c.launchProfile.permissionMode===u.permissionMode?"replay":"conflict",receipt:ak(c)}}let x=b.purpose??"launch",y="launch"!==x||b.origin?.kind==="successor",z=!y&&b.origin?function(a,b){if("agent"!==b.kind&&"container"!==b.kind)return null;let c="agent"===b.kind?b.conversationId:b.creatorConversationId,d=c?v(a,c):null;return{kind:b.kind,conversationId:d,role:d?function(a,b){let c=v(a,b),d=a.conversations[c]?.agentRole;if("string"==typeof d&&d.trim())return d;let e=a.lineageEdges[c]?.role;if("string"==typeof e&&e.trim())return e;let f=[...a.memberships[c]??[]].sort((a,b)=>b.createdAt.localeCompare(a.createdAt))[0];return f?.role??null}(a,d):null,depth:d?function(a,b){let c=v(a,b),d=a.conversations[c]?.delegationDepth;if(Number.isInteger(d)&&d>=0)return d;if((a.memberships[c]??[]).length>0)return 1;let e=0,f=new Set([c]),g=c;for(;e<8;){let b=a.lineageEdges[g];if(!b||"viewer-spawn"!==b.source)break;let c=v(a,b.parentConversationId);if(f.has(c))break;f.add(c),e+=1;let d=a.conversations[c]?.delegationDepth;if(Number.isInteger(d)&&d>=0)return d+e;g=c}return e}(a,d):0}}(a,b.origin):null,A=y?o?.delegationDepth??null:z?z.depth+1:0,B=y?o?.agentRole??null:i,C="launch"===x&&b.origin&&"successor"!==b.origin.kind?{kind:b.origin.kind}:void 0;u.mcpServers=(0,p.VW)({origin:C,parentConversationId:f??u.parentConversationId,agentRole:B,delegationDepth:A,requested:u.mcpServers},this.mcpGrantPolicy);let D=null;if(z){let a=function(){let a;try{a=g().readFileSync((0,k.BQ)("spawn-nesting.json"),"utf8")}catch{return{maxAgentNestingDepth:2}}try{var b;let c=JSON.parse(a);if(1===c.schemaVersion&&(b=c.maxAgentNestingDepth,Number.isInteger(b)&&b>=1&&b<=4))return{maxAgentNestingDepth:c.maxAgentNestingDepth}}catch{}return{maxAgentNestingDepth:2}}().maxAgentNestingDepth;t(z.role)?D={code:"reviewer_origin_spawn",origin:z,requestedRole:i,childDepth:A??0,maxDepth:a,guidance:(c=z.role,`${"verifier"===c?"Verifier":"Reviewer"} sessions run every check in-session — filesystem, shell, GitHub, and browser access stay available, but child agents do not. For more perspectives, report the need to your parent so an operator or orchestrator adds a visible reviewer stage (POST /api/pipelines or POST ${r.nP}).`),rejectedAt:al()}:null!==A&&A>a&&(D={code:"nesting_depth_exceeded",origin:z,requestedRole:i,childDepth:A,maxDepth:a,guidance:`Agent nesting is capped at depth ${a} and this launch would create a depth-${A} child. Finish delegated work in-session or report the need to your parent. An operator can raise maxAgentNestingDepth in Viewer spawn settings (PATCH /api/spawn/policy).`,rejectedAt:al()})}if(!D&&void 0!==b.liveChildrenCap){if(!Number.isInteger(b.liveChildrenCap)||b.liveChildrenCap<1)throw Error("liveChildrenCap must be a positive integer");if(!f)throw Error("liveChildrenCap requires parentConversationId");if(function(a,b){let c=aP(a,b),d=new Set;for(let b of Object.values(a.lineageEdges)){if("viewer-spawn"!==b.source||aP(a,b.parentConversationId)!==c)continue;let e=aP(a,b.childConversationId),f=b.evidence.launchId?a.receipts[b.evidence.launchId]:null,g=function(a,b,c,d){let e=[d?.key,c.childSessionKey],f=a.conversations[b],g=f?.generations.at(-1);return e.push(g?(0,w.sz)(f.engine,g.path):null),[...new Set(e.filter(a=>!!a).map(w.pp))].flatMap(b=>a.entries[b]?[a.entries[b]]:[])}(a,e,b,f),h=[f?.verifiedHost?.agent,f?.pane?.panePid,...g.flatMap(a=>[a.host?.agent,a.structuredHost?.process])].filter(a=>!!a);if(h.some(ao)){d.add(e);continue}if(!(h.length>0)){if(f&&am.has(f.state)){if("starting"===f.state&&Date.now()-Date.parse(f.createdAt)>12e4)continue;d.add(e);continue}g.some(a=>an.has(a.status))&&d.add(e)}}return d.size}(a,f)>=b.liveChildrenCap)throw new N(f,b.liveChildrenCap)}if(d&&b.spawnCapabilityDigest)for(let b of Object.values(a.receipts))aP(a,b.conversationId)===d&&(b.spawnCapabilityDigest=null);let E=al(),F={launchId:e().randomUUID(),clientAttemptId:b.clientAttemptId??null,requestDigest:b.requestDigest??null,transport:b.transport??null,admissionOwner:"structured"===b.transport||!0===b.ownStartingActuation?{pid:process.pid,startIdentity:l.B.processIdentity(process.pid)}:null,spawnCapabilityDigest:"string"==typeof b.spawnCapabilityDigest&&/^[0-9a-f]{64}$/.test(b.spawnCapabilityDigest)?b.spawnCapabilityDigest:null,conversationId:d??`conversation_${e().randomUUID()}`,purpose:b.purpose??"launch",supersedes:m?{conversationId:m,reason:b.supersedesReason??"recovery-spawn"}:null,resumeSourcePath:"resume-successor"===b.purpose?o?.generations.at(-1)?.path??null:null,pathCorrelation:"codex"===b.engine&&(b.purpose??"launch")==="launch"?{cwd:b.cwd,startedAt:E}:null,engine:b.engine,cwd:b.cwd,accountId:b.accountId??null,accountPin:!0===b.accountPin,parentConversationId:f,parentSource:f&&("explicit"===b.parentSource||"inferred-caller"===b.parentSource)?b.parentSource:null,createdAt:E,state:D?"failed":"starting",artifactPath:D?null:b.expectedArtifactPath??null,artifactLifecycle:"pending",key:null,pane:null,verifiedHost:null,target:null,completionMode:null,error:D?D.guidance:null,agentRole:B,delegationDepth:A,rejection:D,launchProfile:u,explicitProject:j,launchDisplay:a0(b.launchDisplay),queuedPinnedSpawn:null};if(a.receipts[F.launchId]=F,D)return{kind:"rejected",receipt:ak(F)};if(F.parentConversationId&&F.parentConversationId!==F.conversationId){let c="resume-successor"===b.purpose?a.lineageEdges[F.conversationId]:null;if(c&&c.childConversationId===F.conversationId){let b=aP(a,c.parentConversationId);b!==F.conversationId&&(a.lineageEdges[F.conversationId]={...c,childConversationId:F.conversationId,parentConversationId:b,reviewsConversationId:c.reviewsConversationId?aP(a,c.reviewsConversationId):null})}else a.lineageEdges[F.conversationId]={childConversationId:F.conversationId,parentConversationId:F.parentConversationId,childSessionKey:null,parentSessionKey:b.parentSessionKey??null,childArtifactPath:null,parentArtifactPath:b.parentArtifactPath??null,kind:h||"reviewer"===i?"review":"spawn",role:i,reviewsConversationId:h,source:"viewer-spawn",evidence:{launchId:F.launchId,clientAttemptId:F.clientAttemptId,parentSource:F.parentSource},createdAt:F.createdAt}}for(let c of b.memberships??[])aU(a,F.conversationId,c,F.createdAt);return{kind:"created",receipt:ak(F)}}}claimSpawnActuation(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");let e="starting"===d.state&&!d.key&&!d.pane,f="tmux"===b&&("pane-bound"===d.state||"host-verified"===d.state)&&!d.key&&!!d.pane;return d.transport!==b||!e&&!f||d.admissionOwner&&this.ownerAlive(d.admissionOwner)?{claimed:!1,receipt:ak(d)}:(d.admissionOwner={pid:process.pid,startIdentity:l.B.processIdentity(process.pid)},{claimed:!0,receipt:ak(d)})})}queuePinnedSpawn(a,b,c){return this.mutate(d=>{let e=d.receipts[a];if(!e)throw Error("unknown spawn receipt");let f=a$(b,this.mcpGrantPolicy);if(!f||"structured"!==e.transport&&"tmux"!==e.transport||"starting"!==e.state||e.key||e.pane||!e.accountPin||!e.accountId||f.accountId!==e.accountId||f.spec.engine!==e.engine||f.spec.cwd!==e.cwd)throw Error("queued pinned spawn payload conflicts with its durable receipt");return e.queuedPinnedSpawn=f,e.launchProfile=(0,n.Ui)({...e.launchProfile,title:c},this.mcpGrantPolicy),ak(e)})}claimStartingStructuredSpawn(a){return this.claimSpawnActuation(a,"structured")}claimTmuxSpawnActuation(a){return this.claimSpawnActuation(a,"tmux")}releaseSpawnActuation(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");let e="starting"===d.state&&!d.key&&!d.pane,f="tmux"===d.transport&&("pane-bound"===d.state||"host-verified"===d.state)&&!d.key&&!!d.pane;return("structured"===d.transport||"tmux"===d.transport)&&(e||f)&&d.admissionOwner&&d.admissionOwner.pid===b.pid&&d.admissionOwner.startIdentity===b.startIdentity?(d.admissionOwner=null,{released:!0,receipt:ak(d)}):{released:!1,receipt:ak(d)}})}releaseStartingStructuredSpawn(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return"structured"!==d.transport||"starting"!==d.state||d.key||d.pane||!d.admissionOwner||d.admissionOwner.pid!==b.pid||d.admissionOwner.startIdentity!==b.startIdentity?{released:!1,receipt:ak(d)}:(d.admissionOwner=null,{released:!0,receipt:ak(d)})})}releaseStructuredSpawnAdmissionOwner(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return"structured"===d.transport&&d.admissionOwner&&d.admissionOwner.pid===b.pid&&d.admissionOwner.startIdentity===b.startIdentity?(d.admissionOwner=null,{released:!0,receipt:ak(d)}):{released:!1,receipt:ak(d)}})}claimFailedSpawnForRetry(a,b){if(!b.trim())throw Error("spawn retry claim id is required");return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.retryClaim?.claimId===b?{kind:"claimed",receipt:ak(d)}:d.retryClaim?{kind:"conflict",receipt:ak(d)}:"failed"!==d.state?{kind:"settled",receipt:ak(d)}:(d.retryClaim={claimId:b,claimedAt:al()},{kind:"claimed",receipt:ak(d)})})}rememberMembership(a,b){return this.mutate(c=>ak(aU(c,a,b,al())))}beginSpawn(a,b,c={}){let d=this.beginSpawnRequest({engine:a,cwd:b,launchProfile:c});if("created"!==d.kind)throw Error("could not create spawn receipt");return d.receipt}bindSpawnPane(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.pane&&(d.pane.paneId!==b.paneId||d.pane.server.startIdentity!==b.server.startIdentity||d.pane.panePid.startIdentity!==b.panePid.startIdentity)?(d.state="conflicted",d.error="spawn_pane_conflict"):"failed"===d.state||"conflicted"===d.state||(d.pane={...b,display:b.display??b.target,target:b.paneId},d.target=b.paneId,"starting"===d.state&&(d.state="pane-bound")),ak(d)})}markSpawnHostVerified(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");return d.pane&&d.pane.paneId===b.paneId&&d.pane.server.pid===b.server.pid&&d.pane.server.startIdentity===b.server.startIdentity&&d.pane.panePid.pid===b.panePid.pid&&d.pane.panePid.startIdentity===b.panePid.startIdentity?"failed"===d.state||"conflicted"===d.state||(d.verifiedHost=b,d.target=b.paneId,("starting"===d.state||"pane-bound"===d.state)&&(d.state="host-verified")):(d.state="conflicted",d.error="spawn_host_identity_conflict"),ak(d)})}markSpawnPromptDelivered(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");return c.verifiedHost&&("host-verified"===c.state||"pane-bound"===c.state||"starting"===c.state)&&(c.state="prompt-delivered","tmux"===c.transport&&c.queuedPinnedSpawn&&(c.launchProfile=(0,n.Ui)(c.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),c.queuedPinnedSpawn=null,c.admissionOwner=null)),ak(c)})}markSpawnPathPending(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");return c.verifiedHost&&("prompt-delivered"===c.state||"host-verified"===c.state)&&(c.state="path-pending"),ak(c)})}preserveSpawnArtifactOwnership(a,b){this.mutate(c=>{let d=c.receipts[a];d&&"completed"!==d.state&&"failed"!==d.state&&(d.state="path-pending",d.error=b,d.verifiedHost=null,d.target=null)})}confirmSpawnPaneAliveInFile(a,b,c,d){var e;let f=a.receipts[b];if(!f||"conflicted"!==f.state||!f.pane)return f??null;if(f.engine!==d.engine||f.cwd!==d.cwd||"agent never reached a launch-ready prompt"!==(e=f.error)&&e?.startsWith("agent never reached a launch-ready prompt:")!==!0&&"launch prompt was not accepted by the agent"!==e&&e?.startsWith("launch prompt was not accepted by the agent:")!==!0)return f;let g=f.pane,h=g.server.pid===c.server.pid&&(null===g.server.startIdentity||g.server.startIdentity===c.server.startIdentity),i=g.paneId===c.paneId&&g.panePid.pid===c.panePid.pid&&(null===g.panePid.startIdentity||g.panePid.startIdentity===c.panePid.startIdentity);return h&&i&&(f.state="host-verified",f.error=null,f.verifiedHost=c,f.target=c.paneId),f}confirmSpawnPaneAlive(a,b,c){let d=this.readOnlySnapshot().receipts[a];return d&&"conflicted"===d.state?this.mutate(d=>{let e=this.confirmSpawnPaneAliveInFile(d,a,b,c);return e?ak(e):null}):d?ak(d):null}settleSpawnInFile(a,b,c,d,f=!0){let g=a.receipts[b];if(!g)throw Error("unknown spawn receipt");let h=g.key?a.entries[(0,w.pp)(g.key)]:null,i=a=>("completed"!==g.state&&(g.state="conflicted",g.error=a),{kind:"conflict",receipt:ak(g),code:a});if("observed-completed"===d&&c.host?.kind==="tmux"&&this.confirmSpawnPaneAliveInFile(a,b,c.host,{engine:c.key.engine,cwd:c.cwd}),"failed"===g.state||"conflicted"===g.state)return{kind:"conflict",receipt:ak(g),code:"spawn_artifact_conflict"===g.error||"spawn_pane_conflict"===g.error||"spawn_identity_conflict"===g.error?g.error:"spawn_identity_conflict"};if(g.engine!==c.key.engine||g.cwd!==c.cwd)return i("spawn_identity_conflict");if(g.pane&&c.host?.kind==="tmux"&&(g.pane.paneId!==c.host.paneId||g.pane.server.pid!==c.host.server.pid||null!==g.pane.server.startIdentity&&c.host.server.startIdentity!==g.pane.server.startIdentity||g.pane.panePid.pid>0&&g.pane.panePid.pid!==c.host.panePid.pid||null!==g.pane.panePid.startIdentity&&c.host.panePid.startIdentity!==g.pane.panePid.startIdentity))return i("spawn_pane_conflict");let j=a.conversations[g.conversationId],k=j?.generations.find(a=>a.id===c.key.sessionId),l=j?(0,w.sz)(j.engine,c.artifactPath)?.sessionId??ap(c.artifactPath):null,m="completed"===g.state&&"resume-successor"===g.purpose&&null!==g.resumeSourcePath&&g.artifactPath===g.resumeSourcePath&&null!==g.artifactPath&&null!==g.key&&void 0!==j&&aG(j,g.artifactPath)&&aG(j,c.artifactPath)&&(0,w.pp)(g.key)===(0,w.pp)(c.key)&&k?.id===c.key.sessionId&&l===c.key.sessionId;if(g.artifactPath&&g.artifactPath!==c.artifactPath&&!m)return i("spawn_artifact_conflict");if(g.key&&(0,w.pp)(g.key)!==(0,w.pp)(c.key))return i("spawn_identity_conflict");let p=a.entries[(0,w.pp)(c.key)],q=!!p&&!!j&&(j.generations.some(a=>a.path===p.artifactPath)||j.continuityPaths.includes(p.artifactPath)),r="resume-successor"===g.purpose&&q&&k?.id===c.key.sessionId&&l===c.key.sessionId;if(p&&p.artifactPath!==c.artifactPath&&(!h||(0,w.pp)(h.key)!==(0,w.pp)(c.key))&&!r)return i("spawn_artifact_conflict");g.queuedPinnedSpawn&&(g.launchProfile=(0,n.Ui)(g.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),g.queuedPinnedSpawn=null);let s=al(),t=j??{id:g.conversationId,engine:g.engine,generations:[],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:g.accountPin?g.accountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{state:"unknown",source:"empty",terminalAt:null,observedAt:null},createdAt:s,updatedAt:s};if(t.agentRole??=g.agentRole,t.delegationDepth??=g.delegationDepth,"launch"===g.purpose&&g.accountPin&&g.accountId&&(t.pinnedAccountId=g.accountId),t.engine!==g.engine||"resume-successor"===g.purpose&&!T(t.migration))return i("spawn_identity_conflict");if("migration-successor"===g.purpose){let b=Object.values(a.conversations).find(a=>a.id!==t.id&&a.engine===t.engine&&aG(a,c.artifactPath));if(b&&!aY(a,b,t,c.artifactPath))return i("spawn_artifact_conflict");aH(t,c.artifactPath)}if("launch"===g.purpose){let b=Object.values(a.conversations).find(a=>a.id!==t.id&&a.engine===t.engine&&aG(a,c.artifactPath));if(b&&!aY(a,b,t,c.artifactPath))return i("spawn_artifact_conflict")}if("resume-successor"===g.purpose&&!aG(t,c.artifactPath)){let b=Object.values(a.conversations).find(a=>a.id!==t.id&&a.engine===t.engine&&aG(a,c.artifactPath));if(b&&!aY(a,b,t,c.artifactPath))return i("spawn_artifact_conflict");let d=(0,w.sz)(t.engine,c.artifactPath)?.sessionId??ap(c.artifactPath),e=t.generations.find(a=>a.id===d);if(e)t.continuityPaths.includes(e.path)||t.continuityPaths.push(e.path),e.path=c.artifactPath,e.accountId=g.accountId??e.accountId,e.launchProfile={...e.launchProfile,...g.launchProfile};else{let a=t.generations.at(-1);a&&null===a.archivedAt&&(a.archivedAt=s),t.generations.push({id:d,path:c.artifactPath,accountId:g.accountId,launchProfile:g.launchProfile,historyHash:null,host:null,createdAt:s,archivedAt:null})}if(a.conversationRevision[t.engine]+=1,a.engineRouting[t.engine].revision+=1,t.migration&&("waiting-turn"===t.migration.phase||"requested"===t.migration.phase)){let a=t.generations.at(-1);a&&(t.migration={...t.migration,sourceGenerationId:a.id,updatedAt:s})}}g.explicitProject&&!t.projectOwnership&&(t.projectOwnership={project:g.explicitProject,source:"operator",setAt:s,operationId:g.launchId}),"migration-successor"===g.purpose||t.generations.some(a=>a.path===c.artifactPath)||(t.generations.push({id:ap(c.artifactPath),path:c.artifactPath,accountId:g.accountId,launchProfile:g.launchProfile,historyHash:null,host:null,createdAt:s,archivedAt:null}),a.conversationRevision[t.engine]+=1,a.engineRouting[t.engine].revision+=1);let u=Object.values(a.migrationIntents).find(b=>b.engine===t.engine&&P(b)&&(0,o.xc)(a,b,Date.parse(s))),v=t.generations.at(-1);u&&!t.pinnedAccountId&&v&&v.accountId!==u.targetId&&!t.migration&&(t.migration={intentId:u.id,phase:R(a,t)?"waiting-turn":"requested",targetId:u.targetId,revision:u.revision,error:null,errorCode:null,operationId:e().randomUUID(),sourceGenerationId:v.id,providerReceipt:null,pendingContinuityPaths:[],boardProject:null,boardOperationId:null,boardPlacementProject:t.projectOwnership?.project??v.launchProfile.project,updatedAt:s}),t.updatedAt=s,a.conversations[t.id]=t;let x={...c,accountId:g.accountId,launchProfile:g.launchProfile,updatedAt:s};a.entries[(0,w.pp)(c.key)]=x,g.key=c.key,g.artifactPath=c.artifactPath;let y=a.lineageEdges[g.conversationId];return y&&(y.childSessionKey=c.key,y.childArtifactPath=c.artifactPath),c.host?.kind==="tmux"&&(g.verifiedHost=c.host),null===g.target&&c.host?.kind==="tmux"&&(g.target=c.host.paneId),g.state=f?"completed":"path-pending",g.error=null,f&&(g.completionMode="observed-completed"===g.completionMode&&"route-completed"===d?"route-recovered":g.completionMode??d,g.supersedes&&aT(a,g.supersedes.conversationId,g.conversationId,g.supersedes.reason)),{kind:"settled",receipt:ak(g),entry:ak(x),conversation:ak(t)}}stageStructuredSpawn(a,b){return this.mutate(c=>{let d=new Set([b.artifactPath]),e=W(c,b.key.engine,d),f=this.settleSpawnInFile(c,a,{...b,structuredHostOperationId:a},"route-completed",!1);return Y(c,b.key.engine,e,d),f})}finalizeStructuredSpawn(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");if("failed"===c.state||"conflicted"===c.state)return{kind:"conflict",receipt:ak(c),code:"spawn_identity_conflict"};if(!c.key||!c.artifactPath)throw Error("structured spawn identity is incomplete");let d=b.entries[(0,w.pp)(c.key)],e=b.conversations[c.conversationId];if(d&&"string"==typeof d.structuredHostOperationId&&d.structuredHostOperationId!==a)return c.state="conflicted",c.error="spawn_identity_conflict",{kind:"conflict",receipt:ak(c),code:"spawn_identity_conflict"};if(!d||!e||d.artifactPath!==c.artifactPath||!d.structuredHost?.process||!d.claimOwner||"unhosted"===d.status||"dead"===d.status)throw Error("structured spawn durable host setup is incomplete");return d.pendingAction=null,d.updatedAt=al(),c.state="completed",c.error=null,c.completionMode="route-completed",c.supersedes&&aT(b,c.supersedes.conversationId,c.conversationId,c.supersedes.reason),{kind:"settled",receipt:ak(c),entry:ak(d),conversation:ak(e)}})}recoverDeliveredStructuredSpawn(a){return this.mutate(b=>{let c=b.receipts[a];if(!c)throw Error("unknown spawn receipt");if("failed"===c.state||"conflicted"===c.state)return{kind:"conflict",receipt:ak(c),code:"spawn_identity_conflict"};if("path-pending"!==c.state||!c.key||!c.artifactPath)throw Error("structured spawn recovery identity is incomplete");let d=b.entries[(0,w.pp)(c.key)],e=b.conversations[c.conversationId];if(!d||!e||d.artifactPath!==c.artifactPath)throw Error("structured spawn recovery identity is unavailable");if(d.host||d.structuredHost?.process||d.claimOwner||"dead"!==d.status&&"unhosted"!==d.status)throw Error("structured spawn host loss is unconfirmed");let f={...d,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},g=X(b,(0,w.pp)(c.key),f),h=W(b,c.key.engine,g);return Object.assign(d,f,{updatedAt:al()}),c.state="completed",c.error=null,c.completionMode=c.completionMode??"route-recovered",c.supersedes&&aT(b,c.supersedes.conversationId,c.conversationId,c.supersedes.reason),Y(b,c.key.engine,h,g),{kind:"settled",receipt:ak(c),entry:ak(d),conversation:ak(e)}})}recoverStructuredSpawnFromEvidence(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)throw Error("unknown spawn receipt");if("conflicted"===d.state||d.retryClaim)return{kind:"conflict",receipt:ak(d),code:"spawn_identity_conflict"};let e=d.key?c.entries[(0,w.pp)(d.key)]:null,f=null;if(e){let{updatedAt:a,...b}=e;f=b}let g=b&&f&&(f.structuredHost?.process||f.claimOwner)?{...b,host:f.host,structuredHost:f.structuredHost,claimEpoch:f.claimEpoch,claimOwner:f.claimOwner,pendingAction:f.pendingAction}:b??f;return!g||d.key&&(0,w.pp)(d.key)!==(0,w.pp)(g.key)||d.artifactPath&&d.artifactPath!==g.artifactPath?{kind:"conflict",receipt:ak(d),code:"spawn_identity_conflict"}:("failed"===d.state&&(d.state=d.key?"path-pending":"starting",d.error=null),this.settleSpawnInFile(c,a,g,"route-recovered"))})}settleSpawn(a,b,c="route-completed"){return this.mutate(d=>{let e=new Set([b.artifactPath]),f=W(d,b.key.engine,e),g=this.settleSpawnInFile(d,a,b,c);return Y(d,b.key.engine,f,e),g})}completeSpawn(a,b){let c=this.settleSpawn(a,b);if("conflict"===c.kind)throw Error(c.code);return c.entry}failSpawn(a,b){this.mutate(c=>{let d=c.receipts[a];if(d&&"completed"!==d.state&&"failed"!==d.state&&"conflicted"!==d.state){if("host-verified"===d.state||"prompt-delivered"===d.state){d.error=b;return}d.state=d.pane?"conflicted":"failed",d.error=b,"conflicted"===d.state&&(d.verifiedHost=null),("failed"===d.state||"conflicted"===d.state)&&d.queuedPinnedSpawn&&(d.launchProfile=(0,n.Ui)(d.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),d.queuedPinnedSpawn=null),aC(c)}})}terminalizeFailedSpawnDeliveries(){let a=this.readOnlySnapshot();return Object.values(a.heldDeliveries).some(b=>{let c=aA(a,b);return!!c&&("failed"===b.state?!["completed","failed","conflicted"].includes(c.state):("failed"===c.state||"conflicted"===c.state)&&0===b.attempts&&("held"===b.state||"assigned"===b.state))})?this.mutate(a=>aC(a)):[]}failStructuredSpawn(a,b){return this.mutate(c=>{let d=c.receipts[a];if(!d)return{claimed:!1,receipt:null,cleanup:null};if("completed"===d.state||"failed"===d.state||"conflicted"===d.state)return{claimed:!1,receipt:ak(d),cleanup:null};if(d.state="failed",d.error=b,d.queuedPinnedSpawn&&(d.launchProfile=(0,n.Ui)(d.queuedPinnedSpawn.spec.launchProfile,this.mcpGrantPolicy),d.queuedPinnedSpawn=null),aC(c),!d.key||!d.artifactPath)return{claimed:!0,receipt:ak(d),cleanup:null};let e=c.entries[(0,w.pp)(d.key)];if(!e||e.artifactPath!==d.artifactPath||"string"==typeof e.structuredHostOperationId&&e.structuredHostOperationId!==a)return{claimed:!0,receipt:ak(d),cleanup:null};let f=e.structuredHostOperationId===a,g=null==e.structuredHostOperationId&&"spawn"===e.pendingAction;if(!f&&!g)return{claimed:!0,receipt:ak(d),cleanup:null};let h={key:ak(d.key),process:ak(e.structuredHost?.process??null),releaseRegisteredHost:f},i="resume-successor"===d.purpose&&d.resumeSourcePath===d.artifactPath&&(e.structuredHost?.eventCursor??0)>0&&e.structuredHost?{...e.structuredHost,endpoint:"stdio:released",process:null,activeTurnRef:null,pendingAttention:[],activeFlags:[]}:null,j=X(c,(0,w.pp)(d.key),{...e,host:null,structuredHost:i,status:"dead",claimOwner:null,pendingAction:null}),k=W(c,d.key.engine,j);return e.host=null,e.structuredHost=i,e.status="dead",e.claimOwner=null,e.pendingAction=null,e.updatedAt=al(),Y(c,d.key.engine,k,j),{claimed:!0,receipt:ak(d),cleanup:h}})}invalidateSpawnHost(a,b){this.mutate(c=>{let d=c.receipts[a];d&&"failed"!==d.state&&"conflicted"!==d.state&&(d.state="conflicted",d.error=b,d.verifiedHost=null)})}upsert(a){return this.mutate(b=>{let c=(0,w.pp)(a.key),d=b.entries[c],e=void 0===a.structuredHost&&d?.structuredHost!==void 0?{...a,structuredHost:d.structuredHost}:a,f=X(b,c,e),g=W(b,a.key.engine,f),h={...e,updatedAt:al()};return b.entries[c]=h,Y(b,a.key.engine,g,f),ak(h)})}setStructuredHost(a,b,c){return this.mutate(d=>{let e=(0,w.pp)(a),f=d.entries[e];if(!f)throw Error("agent registry entry is missing");let g=X(d,e,{...f,structuredHost:b?aq(b):null,status:c??f.status}),h=W(d,a.engine,g);return f.structuredHost=b?aq(b):null,c&&(f.status=c),f.updatedAt=al(),Y(d,a.engine,h,g),ak(f)})}terminateStructuredHost(a){return this.mutate(b=>{let c=(0,w.pp)(a),d=b.entries[c];if(!d)return!1;let e={...d,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},f=X(b,c,e),g=W(b,a.engine,f);return Object.assign(d,e,{updatedAt:al()}),Y(b,a.engine,g,f),!0})}terminateInactiveStructuredHost(a,b,c){return this.mutate(d=>{let e=d.conversations[a],f=(0,w.pp)(b),g=d.entries[f],h=g?.structuredHost?.process??null,i=null!==h&&!this.ownerAlive(h);if(!e||e.engine!==b.engine||!e.generations.some(a=>a.id===b.sessionId)||!g||c&&(!h||h.pid!==c.process.pid||h.startIdentity!==c.process.startIdentity||g.claimEpoch!==c.claimEpoch||g.structuredHost?.writerClaimEpoch!==c.claimEpoch)||g.host||null!==h&&!i||g.claimOwner&&!i||!i&&"dead"!==g.status&&"unhosted"!==g.status)return!1;let j={...g,host:null,structuredHost:null,status:"dead",claimOwner:null,pendingAction:null},k=X(d,f,j),l=W(d,b.engine,k);return Object.assign(g,j,{updatedAt:al()}),Y(d,b.engine,l,k),e.generations.at(-1)?.id===b.sessionId?"current":"predecessor"})}setStructuredHostClaimed(a,b,c,d,e,f=!1){return this.mutate(g=>{let h=(0,w.pp)(a),i=g.entries[h];if(!i?.structuredHost||i.claimOwner!==d||i.claimEpoch!==e||i.structuredHost.writerClaimEpoch!==e)return null;let k=aq(b);if(!f&&i.status===c&&(0,j.isDeepStrictEqual)(aq(i.structuredHost),k))return ak(i);let l={...i,structuredHost:k,status:c},m=X(g,h,l),n=W(g,a.engine,m);return i.structuredHost=l.structuredHost,i.status=c,f&&(i.claimOwner=null),i.updatedAt=al(),Y(g,a.engine,n,m),ak(i)})}ownsStructuredHostClaim(a,b,c){let d=this.readOnlySnapshot().entries[(0,w.pp)(a)];return d?.claimOwner===b&&d.claimEpoch===c&&d.structuredHost?.writerClaimEpoch===c}claimStructuredHost(a,b,c={}){return this.mutate(d=>{let e=d.entries[(0,w.pp)(a)];if(!e?.structuredHost||"unhosted"===e.status&&!0!==c.allowUnhosted)return null;(0,p.k8)(d,a,this.mcpGrantPolicy);let f="unhosted"===e.status||"dead"===e.status,g=e.structuredHost.process;if(!f&&g&&this.ownerAlive(g))return null;let h=`${M}${JSON.stringify(b)}`;if(e.claimOwner){let a=function(a){if(!a.startsWith(M))return null;try{let b=JSON.parse(a.slice(M.length));return Number.isInteger(b.pid)&&b.pid>0?{pid:b.pid,startIdentity:"string"==typeof b.startIdentity?b.startIdentity:null}:null}catch{return null}}(e.claimOwner),d=!0===c.reclaimUnverifiedOwner&&null===e.structuredHost.process&&a?.startIdentity===null&&null!==b.startIdentity;if(!a||this.ownerAlive(a)&&!d)return null}return e.claimOwner=h,e.claimEpoch+=1,e.structuredHost.writerClaimEpoch=e.claimEpoch,e.updatedAt=al(),ak(e)})}markUnhosted(a){this.mutate(b=>{let c=b.entries[(0,w.pp)(a)];if(!c)return;let d=c.structuredHost?.process?c.status:"unhosted",e={...c,host:null,status:d},f=X(b,(0,w.pp)(a),e),g=W(b,a.engine,f);c.host=null,c.status=d,c.updatedAt=al(),Y(b,a.engine,g,f)})}claim(a,b){return this.mutate(c=>{let d=c.entries[(0,w.pp)(a)];if(!d)throw Error("agent registry entry is missing");if(d.claimOwner&&d.claimOwner!==b)throw Error("agent session is claimed by another operation");return d.claimOwner=b,d.claimEpoch+=1,d.updatedAt=al(),ak(d)})}releaseClaim(a,b){this.mutate(c=>{let d=c.entries[(0,w.pp)(a)];d?.claimOwner===b&&(d.claimOwner=null,d.updatedAt=al())})}releaseStructuredHostClaim(a,b,c){return this.mutate(d=>{let e=d.entries[(0,w.pp)(a)];return!!e?.structuredHost&&e.claimOwner===b&&e.claimEpoch===c&&e.structuredHost.writerClaimEpoch===c&&(e.claimOwner=null,e.updatedAt=al(),!0)})}async withOperationLock(a,b,c){let d=`${this.filename}.locks/${encodeURIComponent((0,w.pp)(a))}`,e=await this.acquireLockAsync(d,b);try{return await c()}finally{this.releaseLock(e)}}importResumePanes(a,b){this.mutate(c=>{c.importedResumePanes&&c.legacyResumePanes.serverPid===a||(c.legacyResumePanes={serverPid:a,panes:Object.fromEntries(b)},c.importedResumePanes=!0)})}resumePanes(a){let b=this.readOnlySnapshot().legacyResumePanes;return b.serverPid===a?new Map(Object.entries(b.panes).map(([a,b])=>[a,ak(b)])):new Map}rememberResumePane(a,b,c){this.mutate(d=>{d.legacyResumePanes.serverPid!==a&&(d.legacyResumePanes={serverPid:a,panes:{}}),d.legacyResumePanes.panes[b]=c,d.importedResumePanes=!0})}reconcileSpawnReceipts(a){let b=new Set([...a].map(w.pp));this.mutate(a=>{for(let c of Object.values(a.entries))b.has((0,w.pp)(c.key))&&(c.pendingAction=null);for(let c of Object.values(a.receipts)){if("starting"!==c.state||!c.artifactPath)continue;let d=Object.values(a.entries).find(a=>a.artifactPath===c.artifactPath)?.key;d&&b.has((0,w.pp)(d))&&(c.state="completed")}})}completeObservedSpawn(a,b){return this.settleSpawn(a,b,"observed-completed")}ensureConversation(a,b,c){return this.mutate(d=>{let f=Object.values(d.conversations).find(c=>c.engine===a&&aG(c,b));if(f)return ak(f);let g=al(),h={id:`conversation_${e().randomUUID()}`,engine:a,generations:[{id:ap(b),path:b,accountId:c,launchProfile:(0,n.Ui)(),historyHash:null,host:null,createdAt:g,archivedAt:null}],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{state:"unknown",source:"empty",terminalAt:null,observedAt:null},createdAt:g,updatedAt:g};return d.conversations[h.id]=h,d.conversationRevision[a]+=1,d.engineRouting[a].revision+=1,ak(h)})}reconcileConversations(a){return this.mutate(b=>{let c=new Set,d=new Map,f=function(a,b){let c=Object.values(a.receipts).flatMap(a=>{if("codex"!==a.engine||"path-pending"!==a.state||null!==a.artifactPath||!a.pathCorrelation)return[];let b=Date.parse(a.pathCorrelation.startedAt);return Number.isFinite(b)?[{launchId:a.launchId,cwd:a.pathCorrelation.cwd,accountId:a.accountId,expectedStart:b}]:[]});if(0===c.length)return new Map;let d=[];for(let c of b){if("codex"!==c.engine||!c.startedAt)continue;let b=Date.parse(c.startedAt);if(!Number.isFinite(b))continue;let e=(0,w.sz)(c.engine,c.path)?.sessionId??null;Object.values(a.conversations).filter(a=>a.engine===c.engine&&(aG(a,c.path)||null!==e&&a.generations.some(a=>a.id===e))).some(a=>!aL(a,c.path))||d.push({path:c.path,cwd:c.launchProfile.cwd,accountId:c.accountId,observedStart:b})}let e=new Map,f=a=>JSON.stringify([a.cwd,a.accountId]),g=new Set([...c.map(f),...d.map(f)]),h=(a,b,c,d)=>{let e=a[b][c];if(!e||d.count>e.count||d.count===e.count&&d.distance<e.distance){a[b][c]={...d,assignments:d.assignments.map(a=>[...a])};return}if(d.count!==e.count||d.distance!==e.distance)return;let f=new Set(e.assignments.map(a=>JSON.stringify(a)));for(let a of d.assignments){let b=JSON.stringify(a);if(!f.has(b)&&(e.assignments.push(a),f.add(b),2===e.assignments.length))break}};for(let a of g){let b=c.filter(b=>f(b)===a).sort((a,b)=>a.expectedStart-b.expectedStart||a.launchId.localeCompare(b.launchId)),g=d.filter(b=>f(b)===a).sort((a,b)=>a.observedStart-b.observedStart||a.path.localeCompare(b.path)),i=(a,b)=>a.observedStart>=b.expectedStart-1e3&&a.observedStart<=b.expectedStart+3e4;if(b.length>1&&g.length>1){let a=g.some(a=>b.filter(b=>i(a,b)).length>1),c=b.some(a=>g.filter(b=>i(b,a)).length>1);if(a||c)continue}let j=Array.from({length:g.length+1},()=>Array(b.length+1));j[0][0]={count:0,distance:0,assignments:[[]]};for(let a=0;a<=g.length;a+=1)for(let c=0;c<=b.length;c+=1){let d=j[a][c];if(!d||(a<g.length&&h(j,a+1,c,d),c<b.length&&h(j,a,c+1,d),a>=g.length||c>=b.length))continue;let e=g[a],f=b[c];i(e,f)&&h(j,a+1,c+1,{count:d.count+1,distance:d.distance+Math.abs(e.observedStart-f.expectedStart),assignments:d.assignments.map(a=>[...a,[e.path,f.launchId]])})}let k=j.at(-1)?.at(-1)?.assignments;if(k?.length===1)for(let[a,b]of k[0])e.set(a,b)}return e}(b,a),g=new Map,h=new Map,i=a=>{for(let b of a.generations){let c=g.get(b.path)??[];c.includes(a)||c.push(a),g.set(b.path,c);let d=h.get(`${a.engine}:${b.id}`)??[];d.includes(a)||d.push(a),h.set(`${a.engine}:${b.id}`,d)}for(let b of a.continuityPaths){let c=g.get(b)??[];c.includes(a)||c.push(a),g.set(b,c)}};for(let a of Object.values(b.conversations))i(a);(function(a,b,c,d){let e=b.filter(a=>"codex"===a.engine&&"string"==typeof a.forkSourceThreadId&&a.forkSourceThreadId.length>0&&(a.forkIntent??"provider-history")==="provider-history");if(0===e.length)return!1;let f=Object.values(a.conversations).filter(a=>"codex"===a.engine),g=new Map,h=new Map;for(let a of f)for(let b of a.generations)h.set(b.id,a),g.set(b.id,a);for(let a of f)for(let b of a.continuityPaths){let c=(0,w.sz)("codex",b)?.sessionId;c&&!g.has(c)&&g.set(c,a)}let i=!1,j=e;for(let b=0;b<e.length&&j.length>0;b+=1){let b=[],e=!1;for(let f of j){let j=(0,w.sz)("codex",f.path)?.sessionId??null,k=g.get(f.forkSourceThreadId);if(!k||a.conversations[k.id]!==k){b.push(f);continue}let l=j?h.get(j):void 0;if(l&&l.id!==k.id&&!aL(l,f.path))continue;let m=(c.get(f.path)??[]).filter(b=>a.conversations[b.id]===b&&"codex"===b.engine&&aG(b,f.path));if(m.some(a=>a.id===k.id)){k.providerForkPaths.includes(f.path)||k.generations.some(a=>a.path===f.path)||(aI(k,f.path),i=!0),j&&g.set(j,k);continue}let n=m.find(a=>aL(a,f.path));(!(m.length>0)||n)&&(!n||aY(a,n,k,f.path))&&(aI(k,f.path),aZ(k.updatedAt,f.observedAt)&&(k.updatedAt=f.observedAt),d(k),j&&g.set(j,k),i=!0,e=!0)}if(!e)break;j=b}return i})(b,a,g,i)&&c.add("codex");let j=new Map,k=()=>{for(let a of(j.clear(),Object.values(b.receipts))){if("resume-successor"!==a.purpose)continue;let c=aP(b,a.conversationId),d=j.get(c)??[];d.push(a),j.set(c,d)}};k();let l=new Map;for(let a of Object.values(b.receipts)){let b=a.artifactPath?`${a.engine}:${a.artifactPath}`:null;b&&"migration-successor"===a.purpose&&"failed"!==a.state&&"conflicted"!==a.state&&!l.has(b)&&l.set(b,a)}let m=new Map;for(let a of Object.values(b.receipts)){if("structured"!==a.transport||"pending"!==a.artifactLifecycle||!a.artifactPath)continue;let b=`${a.engine}:${a.artifactPath}`,c=m.get(b)??[];c.push(a),m.set(b,c)}for(let o of a){for(let a of m.get(`${o.engine}:${o.path}`)??[])a.artifactLifecycle="materialized";let a=(0,w.sz)(o.engine,o.path)?.sessionId??null,p=f.get(o.path);if(a&&p){let d=b.receipts[p],e=d?this.settleSpawnInFile(b,p,{key:{engine:o.engine,sessionId:a},artifactPath:o.path,cwd:d.cwd,accountId:d.accountId,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},"observed-completed"):null;if(e?.kind==="settled"){c.add(o.engine),k();let a=b.conversations[aP(b,d.conversationId)];a&&i(a)}}let q=(g.get(o.path)??[]).filter(a=>b.conversations[a.id]===a&&a.engine===o.engine&&aG(a,o.path)),r=aN(b,q);if(r){let a=!1;for(let c of q)c.id!==r.id&&aL(c,o.path)&&(a=aY(b,c,r,o.path)||a);a&&k()}let s=a?`${o.engine}:${a}`:null,t=s?d.get(s):void 0;s&&void 0===t&&d.set(s,o.path);let u=a?aN(b,(h.get(`${o.engine}:${a}`)??[]).filter(c=>b.conversations[c.id]===c&&c.generations.some(b=>b.id===a))):null,v=null!==u&&!T(u.migration)&&(j.get(u.id)??[]).some(U),x=r??u??null,y=!1;if(!v&&r&&u&&r.id!==u.id&&aY(b,r,u,o.path)&&(r=u,x=u,y=!0,k()),!v&&(!r||y)&&u&&a){let b=u.generations.find(b=>b.id===a);b&&b.path!==o.path&&(void 0===t||t===o.path?(u.continuityPaths.includes(b.path)||u.continuityPaths.push(b.path),b.path=o.path):u.continuityPaths.includes(o.path)||u.continuityPaths.push(o.path),u.updatedAt=o.observedAt,i(u),c.add(o.engine))}if(!x){let a=l.get(`${o.engine}:${o.path}`),d=a?b.conversations[a.conversationId]:null;d&&(aH(x=d,o.path),i(x),x.updatedAt=o.observedAt,c.add(o.engine))}if(!x){let a=o.observedAt;x={id:`conversation_${e().randomUUID()}`,engine:o.engine,generations:[{id:ap(o.path),path:o.path,accountId:o.accountId,launchProfile:(0,n.Ui)(o.launchProfile),historyHash:null,host:null,createdAt:a,archivedAt:null}],continuityPaths:[],abandonedContinuityPaths:[],providerForkPaths:[],projectOwnership:null,pinnedAccountId:null,migration:null,migrationOptOut:null,supersededBy:null,agentRole:null,delegationDepth:null,turn:{...o.turn,observedAt:o.observedAt},createdAt:a,updatedAt:a},b.conversations[x.id]=x,i(x),aO(b,x,o.path,o.observedAt),c.add(o.engine);continue}let z=x.generations.find(a=>a.path===o.path);if(!z)continue;let A=z.accountId,B=z.launchProfile.role,C=x.turn.state,D=b.lineageEdges[x.id],E=o.launchProfile.parentConversationId;z.accountId=o.accountId??z.accountId,z.launchProfile={...z.launchProfile,...o.launchProfile,cwd:z.launchProfile.cwd||o.launchProfile.cwd,model:z.launchProfile.model??o.launchProfile.model,effort:z.launchProfile.effort??o.launchProfile.effort,fast:z.launchProfile.fast??o.launchProfile.fast,permissionMode:z.launchProfile.permissionMode??o.launchProfile.permissionMode,readOnly:z.launchProfile.readOnly??o.launchProfile.readOnly,mcpServers:z.launchProfile.mcpServers,title:z.launchProfile.title??o.launchProfile.title,project:o.launchProfile.project??z.launchProfile.project,parentConversationId:D?.source==="viewer-spawn"?D.parentConversationId:E??z.launchProfile.parentConversationId,role:"root"===z.launchProfile.role||"root"===o.launchProfile.role?"root":"worker",goal:o.launchProfile.goal??z.launchProfile.goal,plan:o.launchProfile.plan??z.launchProfile.plan},aO(b,x,o.path,o.observedAt),(void 0===o.expectedTurnObservedAt||o.expectedTurnObservedAt===x.turn.observedAt)&&aZ(x.turn.observedAt,o.observedAt)&&(x.turn={...o.turn,observedAt:o.observedAt}),aZ(x.updatedAt,o.observedAt)&&(x.updatedAt=o.observedAt),(A!==z.accountId||B!==z.launchProfile.role||C!==x.turn.state)&&c.add(o.engine)}let o=(a,c)=>aN(b,(g.get(a)??[]).filter(d=>b.conversations[d.id]===d&&d.engine===c&&aG(d,a))),p=(a,c)=>{let d=new Set,e=c;for(;e&&!d.has(e);){if(e===a)return!0;d.add(e);let c=b.lineageEdges[e]?.parentConversationId;e=c?aP(b,c):void 0}return!1};for(let d of a){if(!d.parentArtifactPath)continue;let a=o(d.path,d.engine);if(!a||b.lineageEdges[a.id]?.source==="viewer-spawn")continue;let e=o(d.parentArtifactPath,d.engine);if(!e)continue;let f=aP(b,e.id);if(f===a.id||p(a.id,f))continue;let g=a.generations.find(a=>a.path===d.path)??a.generations.at(-1);if(!g)continue;g.launchProfile.parentConversationId!==f&&(g.launchProfile={...g.launchProfile,parentConversationId:f});let h=b.lineageEdges[a.id]?.parentConversationId??null;aO(b,a,d.path,d.observedAt),(b.lineageEdges[a.id]?.parentConversationId??null)!==h&&c.add(d.engine)}for(let a of c)b.conversationRevision[a]+=1,b.engineRouting[a].revision+=1;return ak(b)})}conversationForPath(a){let b=Object.values(this.readOnlySnapshot().conversations).find(b=>aG(b,a));return b?ak(b):null}canonicalConversationId(a){return aP(this.readOnlySnapshot(),a)}recordSupersedence(a,b,c="manual"){return this.mutate(d=>{let e=aP(d,a),f=aP(d,b);if(e===f)throw Error("a conversation cannot supersede itself");let g=aS(d,e,f,c);if(!g)throw Error("supersedence could not be recorded");return ak(g)})}supersedenceChainTail(a){return aQ(this.readOnlySnapshot(),a)}supersedenceConflict(a){let b=this.readOnlySnapshot(),c=aQ(b,a),d=b.conversations[c];return d&&aR(b,d)?c:null}clearSupersedence(a){return this.mutate(b=>{let c=b.conversations[aP(b,a)];if(!c)return null;for(let[a,d]of(c.supersededBy&&(c.supersededBy=null,c.updatedAt=al(),b.conversationRevision[c.engine]+=1),Object.entries(b.pendingSupersedence)))aQ(b,d.predecessorConversationId)===c.id&&delete b.pendingSupersedence[a];return ak(c)})}conversation(a){let b=this.readOnlySnapshot(),c=b.conversations[aP(b,a)];return c?ak(c):null}launchProfileForPath(a){let b=this.readOnlySnapshot();for(let c of Object.values(b.conversations)){let b=c.generations.find(b=>b.path===a);if(b)return ak(b.launchProfile);if(c.continuityPaths.includes(a)){let a=c.generations.at(-1);if(a)return ak(a.launchProfile)}}let c=Object.values(b.receipts).find(b=>b.artifactPath===a);return c?ak(c.launchProfile):null}transcriptAccountId(a,b){let c=this.readOnlySnapshot();for(let d of Object.values(c.conversations)){if(d.engine!==a)continue;let c=d.generations.find(a=>a.path===b);if(c?.accountId)return c.accountId;if(d.continuityPaths.includes(b)){let a=d.generations.at(-1);if(a?.accountId)return a.accountId}}let d=Object.values(c.receipts).find(c=>c.artifactPath===b&&c.engine===a);return d?.accountId??null}updateConversationLaunchProfile(a,b){return this.mutate(c=>{let d=c.conversations[aP(c,a)],e=d?.generations.at(-1);if(!d||!e)throw Error("viewer conversation is unknown");return as(c,d,e,b),ak(d)})}claimConversationReconfigure(a,b){if(!b.operationId||!Number.isSafeInteger(b.revision)||b.revision<0)throw Error("conversation reconfigure ownership is invalid");return this.mutate(c=>{let d=c.conversations[aP(c,a)],e=d?.generations.at(-1);if(!d||!e)throw Error("viewer conversation is unknown");let f=d.reconfigure??null;if(f&&(f.revision>b.revision||f.revision===b.revision&&f.operationId!==b.operationId))return{kind:"stale",state:ak(f),conversation:ak(d)};if(f?.operationId===b.operationId&&f.revision===b.revision){if(JSON.stringify(f.profile)!==JSON.stringify(b.profile)||f.accountId!==(b.accountId??null))throw Error("conversation reconfigure replay conflicts with durable ownership");return{kind:"replayed",state:ak(f),conversation:ak(d)}}let g=void 0!==b.accountId&&b.accountId===e.accountId&&d.migration?.targetId!==b.accountId,h=void 0!==b.accountId&&d.migration?.targetId===b.accountId;f?.status==="applying"&&null!==f.accountId&&(h&&!g?function(a,b,c,d){let e=b.migration;if(!e||["committed","rolled-back","failed-recoverable"].includes(e.phase))return;let f=a.migrationIntents[e.intentId];f?.scope==="conversation"&&f.requestIds.includes(ac(c))&&(f.requestIds=[...f.requestIds.filter(a=>!a.startsWith("reconfigure:")),ac(d)],f.updatedAt=al(),b.updatedAt=f.updatedAt)}(c,d,f,b):ad(c,d,f));let i=f?.status==="applying"?f.previousProfile:b.previousProfile??{model:e.launchProfile.model,effort:e.launchProfile.effort,fast:e.launchProfile.fast},j={operationId:b.operationId,revision:b.revision,status:"applying",profile:ak(b.profile),previousProfile:ak(i),accountId:b.accountId??null,error:null};return as(c,d,e,j.profile),d.reconfigure=j,{kind:"claimed",state:ak(j),conversation:ak(d)}})}settleConversationReconfigure(a,b,c,d,e=null){return this.mutate(f=>{let g=f.conversations[aP(f,a)],h=g?.generations.at(-1);if(!g||!h)throw Error("viewer conversation is unknown");let i=g.reconfigure??null;return i&&i.operationId===b&&i.revision===c?i.status===d?{kind:"replayed",state:ak(i),conversation:ak(g)}:"applying"!==i.status?{kind:"stale",state:ak(i),conversation:ak(g)}:("failed"===d&&(ad(f,g,i),as(f,g,h,i.previousProfile)),i.status=d,i.error="failed"===d?e:null,g.updatedAt=al(),{kind:"settled",state:ak(i),conversation:ak(g)}):{kind:"stale",state:i?ak(i):null,conversation:ak(g)}})}canonicalPath(a){let b=this.conversationForPath(a);return b?.generations.at(-1)?.path??a}setEngineRouting(a,b){return(0,m.oV)(()=>this.mutate(c=>{let d=c.engineRouting[a];return d.activeAccountId=b,d.revision+=1,d.revision}))}engineRouting(a){return ak(this.readOnlySnapshot().engineRouting[a])}migrationScope(a,b){return function(a,b,c){let d={total:0,idle:0,busy:0,deferred:0,alreadyTarget:0},e=S(a);for(let f of Object.values(a.conversations)){if(f.engine!==b||f.pinnedAccountId)continue;let g=f.generations.at(-1);if(g&&null!==g.accountId){if(g.accountId===c){d.alreadyTarget+=1;continue}d.total+=1,d[Q(a,f,e)]+=1}}return d}(this.readOnlySnapshot(),a,b)}retireAccount(a,b,c,d={}){(0,m.oV)(()=>this.mutate(e=>{if((0,q.Vm)(e,a,b,d).length>0)throw Error("account has current conversations");let f=al(),g=e.engineRouting[a];g.activeAccountId===b&&(g.activeAccountId=c,g.revision+=1);let h=new Set;for(let c of Object.values(e.migrationIntents))c.engine===a&&c.targetId===b&&(h.add(c.id),"stopped"!==c.state&&(c.state="stopped",c.revision+=1,c.updatedAt=f,c.stoppedAt=f));if(0!==h.size)for(let a of Object.values(e.conversations))a.migration&&h.has(a.migration.intentId)&&(aK(a),$(e,a,f),_(e,a,o.JJ),a.migration=null,a.updatedAt=f,e.conversationRevision[a.engine]+=1)}))}commitMigrationIntent(a){return(0,m.oV)(()=>this.mutate(b=>{let c=Object.values(b.migrationIntents).find(b=>b.engine===a.engine&&b.requestIds.includes(a.requestId));if(c)return ak(c);let d=b.engineRouting[a.engine];if(d.revision!==a.expectedRevision)throw new ae(a.expectedRevision,d.revision);let f=Object.values(b.migrationIntents).find(b=>b.engine===a.engine&&"draining"===b.state&&P(b));if(f?.origin==="manual"&&"auto"===a.origin)return ak(f);let g=al();f?(f.requestIds.push(a.requestId),f.targetId=a.targetId,f.origin=a.origin,f.revision+=1,f.evidence=a.evidence??null,f.updatedAt=g):(f={id:e().randomUUID(),engine:a.engine,targetId:a.targetId,origin:a.origin,revision:1,state:"draining",createdAt:g,updatedAt:g,requestIds:[a.requestId],evidence:a.evidence??null,stoppedAt:null},b.migrationIntents[f.id]=f),d.activeAccountId=a.targetId,d.revision+=1;let h=0;for(let c of Object.values(b.conversations)){if(c.engine!==a.engine||c.pinnedAccountId||("manual"===a.origin&&c.migrationOptOut?.targetId===a.targetId&&(c.migrationOptOut=null),"auto"===a.origin&&c.migrationOptOut?.targetId===a.targetId))continue;let d=c.generations.at(-1);if(!d||null===d.accountId||d.accountId===a.targetId){d&&c.migration&&"committed"!==c.migration.phase&&(aK(c),$(b,c,g),_(b,c,o.JJ),c.migration=null,c.updatedAt=g);continue}let e=Q(b,c);((a.scope??"all")!=="active"||"deferred"!==e)&&(h+=1,$(b,c,g),c.migration=Z(c,d,f,"busy"===e?"waiting-turn":"requested",g),c.updatedAt=g)}return 0===h&&(f.state="complete"),ak(f)}))}requestConversationMigrationToActiveAccount(a){return this.mutate(b=>{let c=aP(b,a),d=b.conversations[c];if(!d)throw Error("viewer conversation is unknown");if(d.pinnedAccountId)return ak(d);let f=b.engineRouting[d.engine].activeAccountId,g=d.generations.at(-1);if(!f||!g||null===g.accountId||g.accountId===f||d.migrationOptOut?.targetId===f||d.migration?.targetId===f&&!["committed","rolled-back"].includes(d.migration.phase))return ak(d);let h=al(),i=Object.values(b.migrationIntents).filter(a=>a.engine===d.engine&&a.targetId===f&&"stopped"!==a.state&&P(a)).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0];i?("draining"!==i.state&&(i.revision+=1),i.state="draining",i.updatedAt=h):(i={id:e().randomUUID(),engine:d.engine,targetId:f,origin:"manual",revision:1,state:"draining",createdAt:h,updatedAt:h,requestIds:[`lazy:${b.engineRouting[d.engine].revision}:${c}`],evidence:null,stoppedAt:null},b.migrationIntents[i.id]=i);let j="busy"===Q(b,d)?"waiting-turn":"requested";return $(b,d,h),d.migration=Z(d,g,i,j,h),d.updatedAt=h,b.conversationRevision[d.engine]+=1,b.engineRouting[d.engine].revision+=1,ak(d)})}requestConversationReseat(a,b,c){return this.mutate(d=>{let f=aP(d,a),g=d.conversations[f];if(!g)throw Error("viewer conversation is unknown");if(c&&(g.reconfigure?.operationId!==c.operationId||g.reconfigure.revision!==c.revision||"applying"!==g.reconfigure.status))throw Error("conversation reconfigure is superseded");let h=g.generations.at(-1);if(!h||null===h.accountId||h.accountId===b)return ak(g);if(g.migration&&!["committed","rolled-back","failed-recoverable"].includes(g.migration.phase)){if(!c)return ak(g);if(g.migration.targetId===b){let a=d.migrationIntents[g.migration.intentId];if(a?.scope==="conversation"){let b=ac(c);a.requestIds=[...a.requestIds.filter(a=>!a.startsWith("reconfigure:")),b],a.updatedAt=al(),g.updatedAt=a.updatedAt}return ak(g)}let a=al(),e=d.migrationIntents[g.migration.intentId];e?.scope==="conversation"&&"stopped"!==e.state&&(e.state="stopped",e.stoppedAt=a,e.updatedAt=a),aK(g),$(d,g,a),g.migration={...g.migration,pendingContinuityPaths:[]}}let i=al();g.migrationOptOut?.targetId===b&&(g.migrationOptOut=null);let j=c?ac(c):`reseat:${f}:${h.id}`,k=Object.values(d.migrationIntents).filter(a=>"conversation"===a.scope&&a.engine===g.engine&&a.targetId===b&&"stopped"!==a.state&&(c?a.requestIds.includes(j):a.requestIds.some(a=>a.startsWith(`reseat:${f}:`)))).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0];k?(k.requestIds.includes(j)||k.requestIds.push(j),"draining"!==k.state&&(k.revision+=1),k.state="draining",k.updatedAt=i):(k={id:e().randomUUID(),engine:g.engine,targetId:b,origin:"manual",scope:"conversation",revision:1,state:"draining",createdAt:i,updatedAt:i,requestIds:[j],evidence:null,stoppedAt:null},d.migrationIntents[k.id]=k);let l="busy"===Q(d,g)?"waiting-turn":"requested";return $(d,g,i),g.migration=Z(g,h,k,l,i),g.updatedAt=i,d.conversationRevision[g.engine]+=1,d.engineRouting[g.engine].revision+=1,ak(g)})}upsertMigrationIntent(a,b,c,d,f=null){return this.mutate(g=>{let h=Object.values(g.migrationIntents).find(b=>b.engine===a&&"draining"===b.state&&P(b));if(h)return"manual"===h.origin&&"auto"===c||(h.requestIds.includes(d)||h.requestIds.push(d),(h.targetId!==b||h.origin!==c)&&(h.targetId=b,h.origin=c,h.revision+=1,h.evidence=f),h.updatedAt=al()),ak(h);let i=al(),j={id:e().randomUUID(),engine:a,targetId:b,origin:c,revision:1,state:"draining",createdAt:i,updatedAt:i,requestIds:[d],evidence:f,stoppedAt:null};return g.migrationIntents[j.id]=j,ak(j)})}setConversationMigration(a,b){return this.mutate(c=>{let d=aP(c,a),e=c.conversations[d];if(!e)throw Error("viewer conversation is unknown");let f=e.generations.at(-1);return e.migration=b?{...b,errorCode:b.errorCode??null,operationId:b.operationId??`${b.intentId}:${d}:${b.revision}`,sourceGenerationId:b.sourceGenerationId??f?.id??"",providerReceipt:b.providerReceipt??null,pendingContinuityPaths:b.pendingContinuityPaths??[],boardProject:b.boardProject??null,boardOperationId:b.boardOperationId??null,boardPlacementProject:b.boardPlacementProject??b.boardProject??null}:null,e.updatedAt=al(),ak(e)})}transitionConversationMigration(a,b,c,d){return this.mutate(e=>{let f=e.conversations[aP(e,a)],g=f?.migration;if(!f||!g)throw Error("conversation has no migration");if(g.revision!==b||!c.includes(g.phase))throw Error("migration transition is stale");return f.migration={...g,...d,updatedAt:al()},f.updatedAt=al(),ak(f)})}persistMigrationProviderReceipt(a,b,c,d){return this.mutate(e=>{let f=e.conversations[aP(e,a)],g=f?.migration;if(!f||!g)throw Error("conversation has no migration");if(g.revision!==b||g.operationId!==c)throw Error("migration provider receipt is stale");if("successor-starting"===g.phase){for(let a of[...new Set([...d.continuityPaths,d.path])])aH(f,a);return f.migration={...g,phase:"verifying",providerReceipt:d,updatedAt:al()},f.updatedAt=al(),ak(f)}let h=null!==g.providerReceipt&&(0,n.WB)(g.providerReceipt,d);if(("verifying"===g.phase||"committed"===g.phase)&&h)return ak(f);throw Error("migration provider receipt conflicts with durable state")})}recordConversationContinuityPath(a,b){return this.mutate(c=>{let d=aP(c,a),e=c.conversations[d];if(!e)throw Error("viewer conversation is unknown");return aJ(c,e,b),aH(e,b),e.updatedAt=al(),ak(e)})}recordMigrationContinuityPath(a,b,c){return this.mutate(d=>{let e=aP(d,a),f=d.conversations[e];if(!f)throw Error("viewer conversation is unknown");aJ(d,f,b);let g=f.migration;if(g?.phase==="successor-starting"&&g.operationId===c.operationId&&g.revision===c.revision)aH(f,b);else!f.generations.some(a=>a.path===b)&&(f.continuityPaths.includes(b)||f.continuityPaths.push(b),f.abandonedContinuityPaths.includes(b)||f.abandonedContinuityPaths.push(b));return f.updatedAt=al(),ak(f)})}markMigrationBoardProjects(a){0!==a.length&&this.mutate(b=>{let c=al();for(let d of a){let a=b.conversations[aP(b,d.id)],e=a?.migration;a&&e&&"committed"===e.phase&&e.operationId===d.operationId&&(e.boardProject=d.project,e.boardOperationId=d.operationId,e.boardPlacementProject=d.project,e.updatedAt=c,a.updatedAt=c)}})}markMigrationBoardPlacementProjects(a){0!==a.length&&this.mutate(b=>{let c=al();for(let d of a){let a=b.conversations[aP(b,d.id)],e=a?.migration;a&&e&&"committed"===e.phase&&e.operationId===d.operationId&&(e.boardPlacementProject=d.project,e.updatedAt=c,a.updatedAt=c)}})}retryConversationMigration(a,b){return this.mutate(c=>{let d=c.conversations[aP(c,a)],f=d?.migration;if(!d||!f)throw Error("conversation has no migration");if(void 0!==b&&f.revision!==b)throw Error("migration revision is stale");let g=c.migrationIntents[f.intentId];if(!g||"stopped"===g.state)throw Error("migration intent is inactive");"complete"===g.state&&"failed-recoverable"===f.phase&&(g.state="draining",g.updatedAt=al());let h=d.generations.at(-1);if(!h)throw Error("conversation has no source generation");return d.migration={...f,phase:R(c,d)?"waiting-turn":"requested",targetId:g.targetId,revision:g.revision,operationId:"codex-fork-outcome-unknown"===f.errorCode||f.revision===g.revision?f.operationId:e().randomUUID(),sourceGenerationId:h.id,providerReceipt:null,pendingContinuityPaths:"committed"===f.phase?[]:f.pendingContinuityPaths,boardProject:f.boardProject,boardOperationId:f.boardOperationId,boardPlacementProject:f.boardPlacementProject,error:null,errorCode:null,updatedAt:al()},d.updatedAt=al(),ak(d)})}commitSuccessor(a,b,c,d,e){return this.mutate(f=>{let g=f.conversations[aP(f,a)],h=g?.migration,i=e.operationId===d&&e.nativeId===b.id&&e.path===b.path&&(void 0===b.historyHash||e.historyHash===b.historyHash)&&(void 0===b.host||(0,j.isDeepStrictEqual)(e.host,b.host)),k=h?.providerReceipt!==null&&h?.providerReceipt!==void 0&&(0,n.WB)(h.providerReceipt,e);if(!g||!h||h.revision!==c||h.operationId!==d||h.targetId!==b.accountId||!k||!i)throw Error("migration succession ownership is stale");if("committed"===h.phase){let a=g.generations.at(-1);if(a?.id===b.id&&a.path===b.path)return ak(g);throw Error("migration succession is already committed")}if("verifying"!==h.phase)throw Error("migration succession is not ready to commit");let l=g.generations.at(-1);if(!l)throw Error("viewer conversation has no native generation");let m=al();l.archivedAt=m;let p={...b,launchProfile:(0,n.Ui)(b.launchProfile??l.launchProfile),historyHash:b.historyHash??null,host:b.host??null,createdAt:m,archivedAt:null};g.generations.push(p),g.continuityPaths=g.continuityPaths.filter(a=>a!==p.path);let q=new Set(h.pendingContinuityPaths);return g.abandonedContinuityPaths=g.abandonedContinuityPaths.filter(a=>!q.has(a)),g.migration={...h,phase:"committed",updatedAt:al()},g.updatedAt=al(),_(f,g,o.uK),f.conversationRevision[g.engine]+=1,f.engineRouting[g.engine].revision+=1,ak(g)})}setMigrationIntentState(a,b,c,d=o.JJ){return this.mutate(e=>{let f=e.migrationIntents[a];if(!f)throw Error("migration intent is unknown");if(void 0!==c&&f.revision!==c)throw Error("migration intent revision is stale");let g=new Set(Object.values(e.conversations).filter(a=>a.engine===f.engine).map(a=>a.generations.at(-1)?.path).filter(a=>!!a)),h=W(e,f.engine,g);if(f.state=b,f.stoppedAt="stopped"===b?al():f.stoppedAt,f.updatedAt=al(),"stopped"===b)for(let b of Object.values(e.conversations)){if(b.engine!==f.engine)continue;let c=b.generations.at(-1);if(e.engineRouting[b.engine].activeAccountId===f.targetId&&c?.accountId!==f.targetId&&(b.migrationOptOut={targetId:f.targetId,updatedAt:f.updatedAt},b.updatedAt=f.updatedAt),b.migration?.intentId===a&&"committed"!==b.migration.phase){if($(e,b,f.updatedAt),"rolled-back"===b.migration.phase){for(let c of Object.values(e.heldDeliveries))aP(e,c.conversationId)===b.id&&ab(e,c.id,a,d);continue}b.migration={...b.migration,phase:"rolled-back",error:null,errorCode:null,updatedAt:f.updatedAt},_(e,b,d.slice(0,240))}}return Y(e,f.engine,h,g),ak(f)})}autoBalancePolicy(a){return ak(this.readOnlySnapshot().autoBalance[a])}quotaObservations(a){return ak(Object.values(this.readOnlySnapshot().quotaObservations[a]))}recordQuotaEvaluation(a){return this.mutate(b=>{for(let c of a.observations)c.engine===a.engine&&(b.quotaObservations[a.engine][c.accountId]=c);let c=b.autoBalance[a.engine];c.lastCheckAt=a.now;let d=!1;if(a.signature)if(c.sustain&&c.sustain.signature===a.signature&&c.sustain.bootId===a.bootId){let b=Date.parse(c.sustain.firstAt);c.sustain.lastAt=a.now,(d=Number.isFinite(b)&&Date.parse(a.now)-b>=a.minimumGapMs)&&(c.sustain=null,c.lastTrigger=a.evidence??null)}else c.sustain={signature:a.signature,firstAt:a.now,lastAt:a.now,bootId:a.bootId};else c.sustain=null;return c.revision+=1,{sustained:d,routeRevision:b.engineRouting[a.engine].revision,policy:ak(c)}})}setAutoBalancePolicy(a,b,c){return this.mutate(d=>{let e=d.autoBalance[a];if(void 0!==c&&e.revision!==c)throw Error("automatic balance policy revision is stale");return e.enabled=b,b||(e.sustain=null),e.revision+=1,ak(e)})}recordAutoBalanceOutcome(a,b,c,d){return this.mutate(e=>{let f=e.autoBalance[a];return f.cooldownUntil=d,f.lastOutcome={at:al(),kind:"complete"===b?"switched":"failed-partial"===b?"failed":"skipped",fromId:c?.sourceId??null,fromPercent:c?.sourcePercent??null,toId:c?.targetId??null,toPercent:c?.targetPercent??null,window:c?.sourceWindow??null,detail:"failed-partial"===b?"one or more sessions need operator recovery":null},f.lastTrigger=c,c&&(f.departed[c.sourceId]=al()),f.revision+=1,ak(f)})}holdDelivery(a,b,c=null,d="text",f=[],g=null,h={}){if("text"===d&&!b)throw Error("held delivery must contain at most 32000 characters");if("runtime-images"===d&&0===f.length)throw Error("runtime-images delivery requires image references");return(0,L.h1)(b),this.mutate(i=>{let j=aD(i,a,b,c,g,h),{canonicalId:k,existing:l,requestDigest:m}=j;if(j.supersededFailed){let a=i.heldDeliveries[j.supersededFailed.id];a&&(a.clientMessageId=null)}let n=i.conversations[k],o=new Set([n?.generations.at(-1)?.path].filter(a=>!!a)),p=n?W(i,n.engine,o):"",q=n?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(n.migration.phase),r=n?.generations.at(-1),s=a=>("delivered"===a.state||"delivery-uncertain"===a.state?az(i,a):(a.deliveredAt=null,a.error=null,q?(a.state="held",a.generationId=null,a.assignedAt=null):r?(a.state="assigned",a.generationId=r.id,a.assignedAt=al()):(a.state="failed",a.generationId=null,a.assignedAt=null,a.error="delivery target is unavailable and remains recoverable"),az(i,a),n&&Y(i,n.engine,p,o)),ak(a));if(l)return l.error===av?ak(l):s(l);let t=aE(j,b,c,d,f,g);if(t)return t;let u=e().randomUUID(),v={id:u,conversationId:k,runtimeConversationId:k,text:b,createdAt:al(),clientMessageId:c,payloadKind:d,runtimeImages:f.map(a=>({...a})),contentDigest:g,artifactPaths:[],command:at(h,u),requestDigest:m,state:"held",generationId:null,attempts:0,assignedAt:null,deliveredAt:null,error:null};if(aF(i,k,this.now()),Object.values(i.heldDeliveries).filter(a=>a.conversationId===k&&["held","assigned","delivery-uncertain"].includes(a.state)).length>=100)throw Error("held delivery limit reached for conversation");return i.heldDeliveries[v.id]=v,h.operationId&&(i.deliveryOperationOwners[v.command.operationId]??={conversationId:k,runtimeConversationId:v.runtimeConversationId,clientMessageId:c,deliveryId:v.id,command:v.command,requestDigest:v.requestDigest,contentDigest:v.contentDigest,createdAt:v.createdAt,terminalState:null}),s(v)})}preflightDeliveryReservation(a,b,c,d,e,f,g={}){return aE(aD(this.readOnlySnapshot(),a,b,c,f,g),b,c,d,e,f)}pendingDeliveries(a){let b=this.readOnlySnapshot(),c=aP(b,a);return ak(Object.values(b.heldDeliveries).filter(a=>a.conversationId===c&&"delivered"!==a.state).sort((a,b)=>a.createdAt.localeCompare(b.createdAt)||a.id.localeCompare(b.id)))}terminalizeHeldDelivery(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");return"delivered"!==d.state&&aa(c,d,b),ak(d)})}terminalizeRolledBackMigrationDelivery(a,b,c){return this.mutate(d=>ab(d,a,b,c))}compactDeliveryReservations(){return this.mutate(a=>aF(a,void 0,this.now()))}queueSuccessorCleanup(a,b){this.mutate(c=>{let d=c.pendingSuccessorCleanups[b.operationId];c.pendingSuccessorCleanups[b.operationId]=d??{conversationId:aP(c,a),receipt:b,createdAt:al(),lastError:null}})}recordSuccessorCleanupFailure(a,b){this.mutate(c=>{let d=c.pendingSuccessorCleanups[a];d&&(d.lastError=b.slice(0,240))})}completeSuccessorCleanup(a){this.mutate(b=>{delete b.pendingSuccessorCleanups[a]})}beginDeliveryAttempt(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d||"assigned"!==d.state||d.generationId!==b)return null;let e=c.conversations[aP(c,d.conversationId)],f=new Set([e?.generations.at(-1)?.path].filter(a=>!!a)),g=e?W(c,e.engine,f):"";return e?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(e.migration.phase)||e?.generations.at(-1)?.id!==b?null:(d.state="delivery-uncertain",d.attempts+=1,d.error="delivery started; recovery requires an explicit outcome",az(c,d),e&&Y(c,e.engine,g,f),ak(d))})}recordDeliveryArtifacts(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");if("delivery-uncertain"!==d.state)throw Error("delivery attempt has not started");return d.artifactPaths=[...new Set(b)],ak(d)})}restoreSnapshot(a,b){(0,m.oV)(()=>this.mutate(c=>{Object.assign(c,function a(b,c,d){if(JSON.stringify(c)===JSON.stringify(d))return b;if(JSON.stringify(b)===JSON.stringify(c))return void 0===d?void 0:ak(d);if(b&&c&&d&&"object"==typeof b&&"object"==typeof c&&"object"==typeof d&&!Array.isArray(b)&&!Array.isArray(c)&&!Array.isArray(d)){let e={...b};for(let f of new Set([...Object.keys(c),...Object.keys(d)])){let g=a(b[f],c[f],d[f]);void 0===g?delete e[f]:e[f]=g}return e}return b}(c,a,b))}))}recordDeliveryOutcome(a,b,c=null){return this.mutate(d=>{let e=d.heldDeliveries[a];if(!e)throw Error("held delivery is unknown");if("delivered"===e.state||ay(e))return ak(e);let f=d.conversations[aP(d,e.conversationId)],g=new Set([f?.generations.at(-1)?.path].filter(a=>!!a)),h=f?W(d,f.engine,g):"";e.state=b,e.deliveredAt="delivered"===b?al():null,e.error=c?.slice(0,240)??null,"delivered"===b&&(e.text=""),"failed"===b&&aB(d,e),f&&Y(d,f.engine,h,g);let i=ak(e);return("delivered"===b||"failed"===b)&&aF(d,e.conversationId,this.now()),i})}recordDeliveryOutcomeForOperation(a,b,c,d=null){return this.recordDeliveryOutcomesForOperations([{conversationId:a,operationId:b,state:c,error:d}])[0]??null}recordDeliveryOutcomesForOperations(a){return this.mutate(b=>{let c=(a,c)=>`${aP(b,a)}\u0000${c}`,d=new Map;for(let a of Object.values(b.heldDeliveries)){let b=c(a.conversationId,a.command.operationId);d.has(b)||d.set(b,a)}let e=new Set,f=a.map(a=>{let f=aP(b,a.conversationId),g=d.get(c(f,a.operationId));if(!g||"delivered"===g.state)return g?ak(g):null;let h="failed"===g.state&&"delivered"===a.state&&!ay(g);if("delivery-uncertain"!==g.state&&!h)return null;let i=b.conversations[f],j=new Set([i?.generations.at(-1)?.path].filter(a=>!!a)),k=i?W(b,i.engine,j):"";return g.state=a.state,g.deliveredAt="delivered"===a.state?al():null,g.error=a.error?.slice(0,240)??null,"delivered"===a.state&&(g.text=""),"failed"===a.state&&aB(b,g),i&&Y(b,i.engine,k,j),e.add(g.conversationId),ak(g)});for(let a of e)aF(b,a,this.now());return f})}discardDelivery(a){this.mutate(b=>{let c=b.heldDeliveries[a],d=c?b.conversations[aP(b,c.conversationId)]:void 0,e=new Set([d?.generations.at(-1)?.path].filter(a=>!!a)),f=d?W(b,d.engine,e):"";if(c){let a=b.deliveryOperationOwners[c.command.operationId];0===c.attempts&&a?.deliveryId===c.id&&delete b.deliveryOperationOwners[c.command.operationId]}delete b.heldDeliveries[a],d&&Y(b,d.engine,f,e)})}requeueHeldDelivery(a){return this.placeDeliveryForRetry(a,!1)}retryUncertainDelivery(a){return this.placeDeliveryForRetry(a,!0)}requeueUnactuatedDelivery(a){return this.placeDeliveryForRetry(a,!0)}placeDeliveryForRetry(a,b){return this.mutate(c=>{let d=c.heldDeliveries[a];if(!d)throw Error("held delivery is unknown");if("delivered"===d.state)return ak(d);if("delivery-uncertain"===d.state&&!b)throw Error("uncertain delivery requires an explicit client retry");if(b&&"delivery-uncertain"!==d.state)throw Error("delivery outcome is already resolved");let e=c.conversations[aP(c,d.conversationId)],f=new Set([e?.generations.at(-1)?.path].filter(a=>!!a)),g=e?W(c,e.engine,f):"";if(e?.migration&&["waiting-turn","requested","preparing","successor-starting","verifying"].includes(e.migration.phase))return d.state="held",d.generationId=null,d.assignedAt=null,d.deliveredAt=null,d.error=null,az(c,d),e&&Y(c,e.engine,g,f),ak(d);let h=e?.generations.at(-1);return h?(d.state="assigned",d.generationId=h.id,d.assignedAt=al(),d.deliveredAt=null,d.error=null):(d.state="failed",d.deliveredAt=null,d.error="delivery target is unavailable and remains recoverable"),az(c,d),e&&Y(c,e.engine,g,f),ak(d)})}rollbackConversationMigration(a,b){return this.mutate(c=>{let d=aP(c,a),e=c.conversations[d];if(!e?.migration)throw Error("conversation has no migration");if(void 0!==b&&e.migration.revision!==b)throw Error("migration revision is stale");let f=new Set([e.generations.at(-1)?.path].filter(a=>!!a)),g=W(c,e.engine,f),h=al();return $(c,e,h),c.engineRouting[e.engine].activeAccountId===e.migration.targetId&&(e.migrationOptOut={targetId:e.migration.targetId,updatedAt:h}),_(c,e,o.Mi),e.migration={...e.migration,phase:"rolled-back",error:null,errorCode:null,updatedAt:h},e.updatedAt=h,Y(c,e.engine,g,f),ak(e)})}clearRolledBackConversationMigration(a,b){return this.mutate(c=>{let d=c.conversations[aP(c,a)],e=d?.migration;return!(!d||!e||"rolled-back"!==e.phase||e.intentId!==b||Object.values(c.heldDeliveries).some(a=>aP(c,a.conversationId)===d.id&&["held","assigned","delivery-uncertain"].includes(a.state)))&&(d.migration=null,d.updatedAt=al(),c.conversationRevision[d.engine]+=1,!0)})}}let bd=process;function be(){return bd.__llvAgentRegistry??=new bc(void 0,void 0,void 0,{resolveBackendIdentity:!0}),bd.__llvAgentRegistry}},56404:(a,b,c)=>{c.d(b,{L1:()=>h});let d=globalThis;async function e(a=fetch,b=process.env){let c=b.LLV_VIEWER_CONTROL_URL?.trim()||"http://127.0.0.1:8898",d=await a(new URL("/api/pipelines/tick",c),{method:"POST",headers:{"content-type":"application/json",origin:c,"sec-fetch-site":"same-origin"},body:"{}"});if(!d.ok)throw Error(`pipeline controller request failed with status ${d.status}`)}async function f(){await e()}let g=d.__llvPipelineSignal??={tick:f,scheduled:!1};function h(){g.scheduled||null===g.tick||(g.scheduled=!0,queueMicrotask(()=>{g.scheduled=!1;let a=g.tick;null!==a&&a().catch(a=>{console.error("[pipeline controller] requested tick failed",a)})}))}},56458:(a,b,c)=>{c.d(b,{Wz:()=>e,__:()=>d});let d=9e5;function e(a,b=Date.now()){if(!Number.isFinite(b)||!Number.isFinite(a.observedAt)||void 0!==a.authCheckedAt&&!Number.isFinite(a.authCheckedAt))return null;let c=b-a.observedAt,d=b-(a.authCheckedAt??a.observedAt);if(!a.authenticated||"live"!==a.provenance.source||c<0||d<0||c>3e5||d>3e5||!a.limits)return null;let f=["session","weekly"].map(b=>({window:b,value:a.limits?.[b]})).filter(a=>null!==a.value&&void 0!==a.value);return f.some(({value:a})=>!Number.isFinite(a.usedPercent)||a.usedPercent<0||a.usedPercent>100||null!==a.resetsAt&&(!Number.isSafeInteger(a.resetsAt)||a.resetsAt<0))?null:f.length?f.map(({window:a,value:b})=>({window:a,percent:100-b.usedPercent})).sort((a,b)=>a.percent-b.percent||a.window.localeCompare(b.window))[0]??null:null}},56514:(a,b,c)=>{c.d(b,{P:()=>f,a:()=>d});let d={kind:"operator"};function e(a){return a?.trim()||null}function f(a,b){if(null===b)return null;if("operator"===b.kind)return`${a} by operator`;let c=e(b.role)??"agent",d=e(b.conversationId);return`${a} by ${c}${d?` ${d}`:""}`}},57564:(a,b,c)=>{c.d(b,{$:()=>o,D:()=>n});let d=/^conversation_[A-Za-z0-9_-]{1,180}$/,e=/^[A-Za-z0-9_.:-]{1,200}$/;function f(a,b){return null===b?{}:{[a]:b}}function g(a,b){if("string"!=typeof a)return null;let c=a.replace(/[\u0000-\u001f\u007f-\u009f]+/gu," ").trim();return c&&[...c].slice(0,b).join("").trim()||null}function h(a){return"string"==typeof a&&e.test(a)?a:null}var i=c(53812);let j="\x3c!-- llv:structured-user --\x3e\n",k=/^<!-- llv:structured-user((?: [a-z0-9]+=[^ >]+)+) -->\n/,l=/(?:^| )([a-z0-9]+)=([^ >]+)/g,m=/^[a-f0-9]{64}$/;function n(a,b,c,d){let e=[];if(b&&e.push(`sha256=${b}`),c&&e.push(`ctx=${function(a){let b=JSON.stringify(a),c=new TextEncoder().encode(b),d="";for(let a of c)d+=String.fromCharCode(a);return btoa(d).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}(c)}`),d){e.push(`origin=${d.kind}`);let a=(0,i.S)(d.role);a&&e.push(`sender=${a}`)}return 0===e.length?j+a:`<!-- llv:structured-user ${e.join(" ")} -->
171
- ${a}`}function o(a){let b=a.match(k);if(b){let c,e=null,j=null,k=null;for(let[,a,n]of b[1].matchAll(l))"sha256"===a&&m.test(n)&&(e=n),"ctx"===a&&(j=function(a){if(!a||!/^[A-Za-z0-9_-]+$/.test(a))return null;try{let b=a.replace(/-/g,"+").replace(/_/g,"/"),c=atob(b+"=".repeat((4-b.length%4)%4)),e=Uint8Array.from(c,a=>a.charCodeAt(0));return function(a){var b;let c;if(!a||"object"!=typeof a||Array.isArray(a)||1!==a.version)return null;let e=function(a){if("string"!=typeof a||a.length>40)return null;let b=Date.parse(a);return Number.isFinite(b)?new Date(b).toISOString():null}(a.capturedAt);if(!e)return null;let i={capturedAt:e,...f("project",g(a.project,200)),...f("viewSessionId",h(a.viewSessionId)),...f("deviceId",h(a.deviceId)),...f("revision","number"==typeof(b=a.revision)&&Number.isSafeInteger(b)&&b>=0?b:null)};if("none"===a.state)return{version:1,state:"none",...i};if("selected"!==a.state)return null;let j="string"==typeof a.conversationId&&d.test(a.conversationId)?a.conversationId:null;return j?{version:1,state:"selected",conversationId:j,...i,...f("path",(c=g(a.path,1025))&&c.length<=1024?c:null),...f("label",g(a.label,80))}:null}(JSON.parse(new TextDecoder().decode(e)))}catch{return null}}(n)),"origin"===a&&("operator"===n||"agent"===n)&&(k=n),"sender"===a&&(c=(0,i.S)(n));let n=k?{kind:k,..."agent"===k&&c?{role:c}:{}}:null;return{text:a.slice(b[0].length),structured:!0,contentDigest:e,selectedContext:j,origin:n}}return a.startsWith(j)?{text:a.slice(j.length),structured:!0,contentDigest:null,selectedContext:null,origin:null}:{text:a,structured:!1,contentDigest:null,selectedContext:null,origin:null}}},57726:(a,b,c)=>{c.d(b,{lD:()=>p});var d=c(10456),e=c(53133),f=c(77083),g=c(62862),h=c(14071),i=c(55883);c(85881);var j=c(65377);function k(a,b){if("claude"===a){let c=(0,e.ob)(b);return{engine:a,accountId:c.id,kind:c.kind,home:c.home,transcriptRoot:c.projectsDir,env:"managed"===c.kind?(0,e.x0)(c.home):(0,j.Fd)(process.env)}}let c=(0,d.O$)(b);return{engine:a,accountId:c.id,kind:c.kind,home:c.home,transcriptRoot:c.sessionsDir,env:{...(0,j.Fd)(process.env),CODEX_HOME:c.home}}}function l(a,b){let c=("claude"===a?(0,e.Fn)():(0,d.Sq)()).find(a=>a.id===b);if(!c)throw Error(`unknown ${a} account: ${b}`);return{id:c.id,label:c.label,kind:c.kind,active:("claude"===a?(0,e.No)():(0,d.O)())===b,auth:{state:c.authPresent?"authenticated":"signed_out",method:null,email:null,plan:null,checkedAt:null},limits:{state:"unavailable",session:null,weekly:null,checkedAt:null},login:null}}c(98934);class m extends Error{constructor(a,b){super(`${a} account requires authentication`),this.engine=a,this.accountId=b,this.name="AccountAuthenticationRequiredError"}}class n extends Error{constructor(a,b){super(`${a} account login is in progress`),this.engine=a,this.accountId=b,this.name="AccountLoginPendingError"}}async function o(a,b,c=(0,i.tk)()){return await (0,h.Cu)(async()=>(function(a,b,c){let h;if("claude"===a?(0,e.kK)():(0,d.J0)()){if("claude"===a)throw new e.OL;throw new d.NE}let i=("claude"===a?(0,e.Fn)():(0,d.Sq)()).find(a=>a.id===b);if(!i){if("claude"===a)throw new e.UV(b);throw new d.m1(b)}if("claude"===a?null!==(h=f.s4.forAccount(b))&&f.VO.has(h.phase):null!==i.loginPane||"pending"===(0,g.VD)().peekLogin(i).attemptState)throw new n(a,b);if(!i.authPresent)throw new m(a,b);let j="claude"===a?(0,e.No)():(0,d.O)(),k=c.engineRouting(a).activeAccountId;"claude"===a?(0,e.ss)(b):(0,d.b0)(b);try{c.setEngineRouting(a,b)}catch(f){let b=[];try{c.engineRouting(a).activeAccountId!==k&&c.setEngineRouting(a,k??j)}catch(a){b.push(a)}try{"claude"===a?(0,e.ss)(j):(0,d.b0)(j)}catch(a){b.push(a)}if(b.length>0)throw AggregateError([f,...b],"account selection rollback failed");throw f}return l(a,b)})(a,b,c))}let p={list:async()=>({claude:{active:(0,e.No)(),accounts:(0,e.Fn)().map(a=>l("claude",a.id))},codex:{active:(0,d.O)(),accounts:(0,d.Sq)().map(a=>l("codex",a.id))}}),add:async(a,b)=>await (0,h.Cu)(async()=>{let c="claude"===a?(0,e.fM)(b):(0,d.Ut)(b);return l(a,c.id)}),select:async(a,b)=>o(a,b),status:async(a,b)=>l(a,b),async submitLoginInput(){throw Error("login input is Claude-operation specific")},async cancelLogin(){throw Error("login cancellation is Claude-operation specific")},resolveSpawn:(a,b)=>k(a,b??(0,i.tk)().engineRouting(a).activeAccountId??void 0),resolveHeadlessSpawn(a,b,c=[]){let f=function(a,b,c,d,e=Date.now()){let f=new Map(b.map(a=>[a.accountId,a])),g=new Set(d),h=a.filter(a=>a.authPresent).map(a=>({account:a,capacity:function(a,b){if(!a||"live"!==a.provenance.source)return{kind:"unknown"};let c=Date.parse(a.observedAt),d=Date.parse(a.authCheckedAt);if(!Number.isFinite(c)||!Number.isFinite(d)||b<c||b<d||b-c>3e5||b-d>3e5)return{kind:"unknown"};if(!a.authenticated)return{kind:"unavailable"};if(!a.limits)return{kind:"unknown"};let e=[a.limits.session,a.limits.weekly].filter(a=>null!==a);if(!e.length||e.some(a=>!Number.isFinite(a.usedPercent)||a.usedPercent<0||a.usedPercent>100||null!==a.resetsAt&&(!Number.isSafeInteger(a.resetsAt)||a.resetsAt<0)))return{kind:"unknown"};let f=Math.min(...e.map(a=>100-a.usedPercent));if(f>0)return{kind:"available",remaining:f};let g=e.filter(a=>a.usedPercent>=100),h=Math.floor(b/1e3);return g.some(a=>null===a.resetsAt||a.resetsAt<=h)?{kind:"exhausted",resetsAt:null}:{kind:"exhausted",resetsAt:Math.max(...g.map(a=>a.resetsAt))}}(f.get(a.id),e)})).filter(a=>"unavailable"!==a.capacity.kind);if(!h.length)return{kind:"unavailable"};for(let a of[!1,!0]){let b=h.filter(b=>g.has(b.account.id)===a),d=b.flatMap(a=>"available"===a.capacity.kind?[{...a,remaining:a.capacity.remaining}]:[]).sort((a,b)=>b.remaining-a.remaining||Number(b.account.id===c)-Number(a.account.id===c)||a.account.id.localeCompare(b.account.id));if(d[0])return{kind:"available",accountId:d[0].account.id};let e=b.filter(a=>"unknown"===a.capacity.kind).sort((a,b)=>Number(b.account.id===c)-Number(a.account.id===c)||a.account.id.localeCompare(b.account.id));if(e[0])return{kind:"available",accountId:e[0].account.id}}let i=h.flatMap(a=>"exhausted"===a.capacity.kind&&null!==a.capacity.resetsAt?[a.capacity.resetsAt]:[]);return{kind:"exhausted",resetsAt:i.length?Math.min(...i):null}}("claude"===a?(0,e.Fn)():(0,d.Sq)(),(0,i.tk)().quotaObservations(a),b??(0,i.tk)().engineRouting(a).activeAccountId,c);return"available"===f.kind?{kind:"available",account:k(a,f.accountId)}:f},resolveTranscriptOwner(a,b){let c=(0,i.tk)().transcriptAccountId(a,b);if(c)if("claude"===a){let b=(0,e.Fn)().find(a=>a.id===c);if(b)return{engine:a,accountId:b.id,kind:b.kind,home:b.home,transcriptRoot:b.projectsDir,env:"managed"===b.kind?(0,e.x0)(b.home):(0,j.Fd)(process.env)}}else{let b=(0,d.Sq)().find(a=>a.id===c);if(b)return{engine:a,accountId:b.id,kind:b.kind,home:b.home,transcriptRoot:b.sessionsDir,env:{...(0,j.Fd)(process.env),CODEX_HOME:b.home}}}if("claude"===a){let c=(0,e.y3)(b);if(!c)return null;let d=(0,e.Fn)().find(a=>a.home===c);return d?{engine:a,accountId:d.id,kind:d.kind,home:c,transcriptRoot:d.projectsDir,env:"managed"===d.kind?(0,e.x0)(c):(0,j.Fd)(process.env)}:null}let f=(0,d.yN)(b);if(!f)return null;let g=(0,d.Sq)().find(a=>a.home===f);return g?{engine:a,accountId:g.id,kind:g.kind,home:f,transcriptRoot:g.sessionsDir,env:{...(0,j.Fd)(process.env),CODEX_HOME:f}}:null}}},58347:(a,b,c)=>{c.d(b,{I1:()=>A,IM:()=>z,wh:()=>W});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57726),k=c(52114),l=c(53133),m=c(77083),n=c(4351),o=c(55883),p=c(31973),q=c(50920),r=c(30277),s=c(32644),t=c(6949),u=c(33353),v=c(873),w=c(13818),x=c(89364),y=c(41730);class z extends Error{constructor(){super("successor launch receipt is awaiting host settlement"),this.name="SuccessorPendingError"}}class A extends Error{constructor(a="Codex provider fork outcome is unknown"){super(a),this.name="CodexForkOutcomeUnknownError"}}let B={accounts:j.lD,startCodex:a=>k.zC.start({home:a}),claudeStatus:a=>m.kR.status(a),spawnClaude:(a,b)=>(0,x.Tk)(a,"",b),verifyClaudeHost:a=>(0,x.PB)(a),cancelClaude:a=>(0,x.xs)(a),now:()=>new Date().toISOString()};function C(a){return!0===a||"cancelled"===a||"absent"===a}function D(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if(!Number.isInteger(b.pid)||!b.pid||b.pid<1)return Date.now()-g().statSync(a).mtimeMs>3e4;if(!r.B.pidAlive(b.pid))return!0;if("string"==typeof b.startIdentity){let a=r.B.processIdentity(b.pid);return null!==a&&a!==b.startIdentity}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function E(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function F(a){let b=[],c=i().resolve(a);for(;!g().existsSync(c);){b.push(c);let a=i().dirname(c);if(a===c)break;c=a}for(let a of b.reverse()){try{g().mkdirSync(a,{mode:448})}catch(a){if("EEXIST"!==a.code)throw a}let b=g().openSync(i().dirname(a),"r");try{g().fsyncSync(b)}finally{g().closeSync(b)}let c=g().openSync(a,"r");try{g().fsyncSync(c)}finally{g().closeSync(c)}}}async function G(a){if(a.ownsOperation&&!await a.ownsOperation()||!(0,w.cM)())return async()=>{};let b=(0,p.ce)("codex",a.receipt.nativeId);if(!b)throw Error("successor Codex thread identity is invalid");if((0,v.sy)(b))return async()=>{await (0,v.releaseStructuredDeliveryHost)(b)};let c=a.registry.readOnlySnapshot().entries[(0,p.pp)(b)],d=a.registry.upsert({...c??{key:b,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},key:b,artifactPath:a.receipt.path,cwd:a.profile.cwd,accountId:a.target.accountId,launchProfile:a.profile,structuredHostOperationId:a.receipt.operationId});d.structuredHost||a.registry.setStructuredHost(b,{kind:"codex-app-server",endpoint:"stdio:pending",process:null,eventCursor:0,protocolVersion:null,writerClaimEpoch:d.claimEpoch,activeTurnRef:null,pendingAttention:[],activeFlags:[]},"unhosted");let e={pid:process.pid,startIdentity:r.B.processIdentity(process.pid)},f=a.registry.claimStructuredHost(b,e,{allowUnhosted:!0});if(!f?.claimOwner)throw Error("successor Codex structured host claim is unavailable");let g=a.profile.permissionMode&&["never","on-request","untrusted"].includes(a.profile.permissionMode)?a.profile.permissionMode:void 0,h=null,i=()=>{},j=async()=>{};try{h=await t.o.adopt(a.receipt.nativeId,{cwd:a.profile.cwd,codexHome:a.target.home,fileAuthCredentials:"managed"===a.target.kind,model:a.profile.model??void 0,effort:a.profile.effort??void 0,sandbox:a.profile.readOnly?"read-only":void 0,approvalPolicy:g,initialEventCursor:f.structuredHost?.eventCursor,env:a.target.env}),i=await (0,w.WF)(a.registry,b,h,f.claimOwner,f.claimEpoch),j=await (0,v.xq)({key:b,host:h},a.ownsOperation)}catch(c){if(!h&&c instanceof u.EY&&c.host instanceof t.o)throw h=c.host,i=await (0,w.WF)(a.registry,b,h,f.claimOwner,f.claimEpoch,"dead"),await h.release(),i(),c;throw await j(),h&&await h.release(),i(),a.registry.releaseStructuredHostClaim(b,f.claimOwner,f.claimEpoch),c}let k=h;return async()=>{await j(),await k.release(),i()}}async function H(a){if(a.ownsOperation&&!await a.ownsOperation()||!(0,w.cM)())return async()=>{};let b=(0,p.ce)("claude",a.receipt.nativeId);if(!b)throw Error("successor Claude session identity is invalid");if((0,v.sy)(b))return async()=>{await (0,v.releaseStructuredDeliveryHost)(b)};(0,v.pr)();let c=a.registry.readOnlySnapshot().entries[(0,p.pp)(b)],d=a.registry.upsert({...c??{key:b,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},key:b,artifactPath:a.receipt.path,cwd:a.profile.cwd,accountId:a.target.accountId,launchProfile:a.profile,structuredHostOperationId:a.receipt.operationId});d.structuredHost||a.registry.setStructuredHost(b,{kind:"claude-broker",endpoint:"stdio:pending",process:null,eventCursor:0,protocolVersion:null,writerClaimEpoch:d.claimEpoch,activeTurnRef:null,pendingAttention:[],activeFlags:[]},"unhosted");let e={pid:process.pid,startIdentity:r.B.processIdentity(process.pid)},f=a.registry.claimStructuredHost(b,e,{allowUnhosted:!0});if(!f?.claimOwner)throw Error("successor Claude structured host claim is unavailable");let g=null,h=()=>{},i=async()=>{};try{let c=V(a.receipt),d=await a.cancelClaude(c);if(!C(d))throw Error("successor Claude host transition is still pending");await (0,x.XW)(a.receipt.path,c),g=await s.s7.adopt(a.receipt.nativeId,{cwd:a.profile.cwd,claudeConfigDir:"managed"===a.target.kind?a.target.home:void 0,claudeProjectsDir:a.target.transcriptRoot,env:a.target.env,model:a.profile.model??void 0,effort:a.profile.effort??void 0,permissionMode:a.profile.permissionMode??void 0,initialEventCursor:f.structuredHost?.eventCursor}),h=await (0,w.n$)(a.registry,b,g,f.claimOwner,f.claimEpoch),i=await (0,v.xq)({key:b,host:g},a.ownsOperation)}catch(c){if(!g&&c instanceof u.EY&&c.host instanceof s.s7)throw g=c.host,h=await (0,w.n$)(a.registry,b,g,f.claimOwner,f.claimEpoch,"dead"),await g.release(),h(),c;throw await i(),g&&await g.release(),h(),a.registry.releaseStructuredHostClaim(b,f.claimOwner,f.claimEpoch),c}let j=g;return async()=>{await i(),await j.release(),h()}}async function I(){await new Promise(a=>setTimeout(a,5))}async function J(a,b,c){let d=O(a,b),f=`${d}.lock`,h=`${d}.locks`;F(a),F(h);let j={pid:process.pid,startIdentity:r.B.processIdentity(process.pid),token:e().randomUUID()},k=i().join(h,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${j.token}.json`);g().writeFileSync(k,JSON.stringify(j),{encoding:"utf8",flag:"wx",mode:384});try{for(let a=0;a<24e3;a+=1){let a;try{g().utimesSync(k,new Date,new Date)}catch{}let b=[];for(let a of g().readdirSync(h).filter(a=>a.endsWith(".json")).sort()){let c=i().join(h,a);if(D(c)){g().rmSync(c,{force:!0});continue}g().existsSync(c)&&b.push(c)}if(b[0]!==k){await I();continue}try{a=g().openSync(f,"wx",384)}catch(a){if("EEXIST"!==a.code)throw a;D(f)&&g().rmSync(f,{force:!0}),await I();continue}g().writeFileSync(a,JSON.stringify(j),"utf8"),g().fsyncSync(a);let d=setInterval(()=>{try{let a=new Date;g().utimesSync(f,a,a),g().utimesSync(k,a,a)}catch{}},1e4);d.unref();try{return await c(()=>(function(a,b){try{if(JSON.parse(g().readFileSync(a,"utf8")).token===b)return}catch{}throw Error("Codex provider operation lease was lost")})(f,j.token))}finally{clearInterval(d),g().closeSync(a),E(f,j.token)}}throw Error("Codex provider operation is busy")}finally{E(k,j.token)}}function K(a){let b=null;try{let c=g().lstatSync(a);if(!c.isFile()||c.isSymbolicLink())return null;b=g().openSync(a,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0));let d=Buffer.alloc(Math.min(262144,Math.max(1,c.size))),e=g().readSync(b,d,0,d.length,0);for(let a of d.subarray(0,e).toString("utf8").split("\n"))if(a.trim())try{let b=JSON.parse(a);if("session_meta"!==b.type||!b.payload||"object"!=typeof b.payload||Array.isArray(b.payload))continue;let c=b.payload;if("string"!=typeof c.id||!c.id)return null;return{id:c.id,forkedFromId:"string"==typeof c.forked_from_id&&c.forked_from_id?c.forked_from_id:null}}catch{}return null}catch{return null}finally{null!==b&&g().closeSync(b)}}function L(a,b,c,d=2e4){let e=[{dir:a,depth:0}],f=[],h=0;for(;e.length;){let j=e.pop();if(!(j.depth>6))for(let k of g().readdirSync(j.dir,{withFileTypes:!0})){let l=i().join(j.dir,k.name);if(k.isSymbolicLink())continue;if(k.isDirectory()){e.push({dir:l,depth:j.depth+1});continue}if(!k.isFile()||!k.name.endsWith(".jsonl"))continue;if(++h>d)return console.warn("[account-migration] Codex fork recovery scan hit its bound",{root:a,limit:d,found:f.length}),f;if(g().statSync(l).mtimeMs<c)continue;let m=K(l);m?.forkedFromId===b&&f.push({id:m.id,path:g().realpathSync(l)})}}return f}function M(a){try{let b=g().statSync(a);return b.isFile()?{size:b.size,mtimeMs:b.mtimeMs}:null}catch{return null}}function N(...a){let b=new Map;for(let c of a)for(let a of c)b.has(a.id)||b.set(a.id,a);return[...b.values()]}function O(a,b){return i().join(a,`${e().createHash("sha256").update(b).digest("hex")}.json`)}function P(a,b){g().mkdirSync(a,{recursive:!0,mode:448});let c=O(a,b.operationId),d=`${c}.${process.pid}.${e().randomUUID()}.tmp`;try{g().writeFileSync(d,JSON.stringify(b,null,2)+"\n",{mode:384,flag:"wx"});let e=g().openSync(d,"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}g().renameSync(d,c);let f=g().openSync(a,"r");try{g().fsyncSync(f)}finally{g().closeSync(f)}}finally{g().rmSync(d,{force:!0})}}function Q(a){return a&&"object"==typeof a&&1===a.version&&"string"==typeof a.operationId&&"string"==typeof a.sourceNativeId&&"string"==typeof a.sourceRoot&&"string"==typeof a.targetRoot&&"number"==typeof a.createdAtMs&&Number.isFinite(a.createdAtMs)?{version:1,operationId:a.operationId,conversationId:"string"==typeof a.conversationId&&a.conversationId?a.conversationId:null,sourceNativeId:a.sourceNativeId,sourceRoot:a.sourceRoot,targetRoot:a.targetRoot,createdAtMs:a.createdAtMs,forkRecoveryFloorMs:"number"==typeof a.forkRecoveryFloorMs&&Number.isFinite(a.forkRecoveryFloorMs)?a.forkRecoveryFloorMs:"number"==typeof a.forkRequestedAtMs&&Number.isFinite(a.forkRequestedAtMs)?a.forkRequestedAtMs:null,forkRequestedAtMs:"number"==typeof a.forkRequestedAtMs&&Number.isFinite(a.forkRequestedAtMs)?a.forkRequestedAtMs:null,fork:a.fork&&"string"==typeof a.fork.id&&"string"==typeof a.fork.path?{id:a.fork.id,path:a.fork.path}:null,forkSource:a.forkSource&&"number"==typeof a.forkSource.size&&Number.isFinite(a.forkSource.size)&&"number"==typeof a.forkSource.mtimeMs&&Number.isFinite(a.forkSource.mtimeMs)?{size:a.forkSource.size,mtimeMs:a.forkSource.mtimeMs}:null,supersededForks:Array.isArray(a.supersededForks)?a.supersededForks.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.id&&"string"==typeof a.path?[{id:a.id,path:a.path}]:[]):[]}:null}function R(a){try{return g().statSync(a).mtimeMs}catch{return 0}}function S(a){return[...a].sort((a,b)=>R(b.path)-R(a.path)||b.path.localeCompare(a.path))}function T(a,b,c){let d=(0,y.Ux)(a.path,c),e=K(d.sourcePath);if(!i().basename(d.sourcePath).endsWith(`${a.id}.jsonl`)||e?.id!==a.id||e.forkedFromId!==b)throw new y.Bc("unsafe-source");return{id:a.id,path:d.sourcePath}}function U(a){let b=g().lstatSync(a.home);if(!b.isDirectory()||b.isSymbolicLink()||process.getuid&&b.uid!==process.getuid()||(18&b.mode)!=0)throw new y.IO("unsafe-home","target account home failed safety checks");if(i().dirname(i().resolve(a.transcriptRoot))!==i().resolve(a.home)&&!("claude"===a.engine&&function(a){try{return g().realpathSync(a)===g().realpathSync((0,l.o1)())}catch{return!1}}(a.transcriptRoot)))throw Error("target transcript root is outside its account home");try{g().mkdirSync(a.transcriptRoot,{mode:448})}catch(a){if("EEXIST"!==a.code)throw a}let c=g().lstatSync(a.transcriptRoot);if(!c.isDirectory()||c.isSymbolicLink()||process.getuid&&c.uid!==process.getuid()||(18&c.mode)!=0)throw Error("target transcript root failed safety checks")}function V(a){let b=function(a){if("claude-stream"!==a.host.kind)throw Error("successor Claude host identity is invalid");let b=/^(%[0-9]+):([1-9][0-9]*)$/.exec(a.host.identity);if(!b)throw Error("successor Claude host identity is invalid");return{paneId:b[1],panePid:Number(b[2])}}(a),c=a.host.tmuxHost;if(!c||"tmux"!==c.kind||c.paneId!==b.paneId||c.panePid.pid!==b.panePid)throw Error("successor Claude host identity is invalid");return c}class W{constructor(a=B){this.dependencies=a,this.publishedHosts=new Map,this.publishingHosts=new Map}async create(a){let b=this.dependencies.accounts.resolveSpawn(a.engine,a.targetAccountId),c=function(a,b,c){if(!a||a.engine!==b.engine)throw Error("source account ownership is unavailable");return(0,y.Ux)(c,a.transcriptRoot),a}(this.dependencies.accounts.resolveTranscriptOwner(a.engine,a.source.path),b,a.source.path);return U(b),"codex"===a.engine?this.createCodex(a.operationId,a.conversationId,a.source.id,a.source.path,a.source.launchProfile,c,b,a.recordContinuityPath):this.createClaude(a.operationId,a.conversationId,a.source.path,a.source.launchProfile,c,b,a.recordContinuityPath)}async verify(a,b){let c=this.dependencies.accounts.resolveSpawn(b.engine,b.targetAccountId);if(U(c),"claude"===b.engine){if(!(await this.dependencies.claudeStatus(c.home)).loggedIn)throw new y.IO("not-authenticated","target Claude account is not authenticated");if(!a.path.startsWith(c.transcriptRoot+i().sep))throw Error("target Claude history is outside its registered root");if(i().basename(a.path,".jsonl")!==a.nativeId)throw Error("target Claude transcript identity does not match");if(!g().existsSync(a.path)||0===(0,y.z4)(a.path,c.transcriptRoot).size)throw Error("target Claude successor transcript is not durable");if(!g().readFileSync(a.path,"utf8").split("\n").some(b=>{try{let c=JSON.parse(b);return c.sessionId===a.nativeId||c.session_id===a.nativeId}catch{return!1}}))throw Error("target Claude transcript session identity does not match");let b=V(a),d=this.dependencies.registry??(0,o.tk)();if(!("claude-migration-successor"===b.windowName&&await this.dependencies.verifyClaudeHost?.(b))&&!function(a,b,c){let d=(0,p.ce)("claude",b.nativeId);if(!d)return!1;let e=a.readOnlySnapshot().entries[(0,p.pp)(d)];return e?.structuredHostOperationId===b.operationId&&e.artifactPath===b.path&&e.accountId===c.accountId&&e.structuredHost?.kind==="claude-broker"&&"stdio:pending"!==e.structuredHost.endpoint&&null!==e.structuredHost.protocolVersion}(d,a,c))throw Error("target Claude successor host is not live and canonical");return}let d=await this.dependencies.startCodex(c.home);try{if(!(await d.readAccount()).account)throw new y.IO("not-authenticated","target Codex account is not authenticated");if((await d.readThread(a.nativeId)).id!==a.nativeId)throw Error("target Codex thread identity does not match")}finally{d.close()}}async publishHost(a,b){if(b.ownsOperation&&!await b.ownsOperation())return;let c="codex"===b.engine?this.dependencies.publishCodexHost:this.dependencies.publishClaudeHost;if(!c&&!(0,w.cM)())return;let d=this.publishedHosts.get(a.operationId);if(d){if(d.nativeId!==a.nativeId||d.path!==a.path)throw Error("successor host publication conflicts");return}let e=this.publishingHosts.get(a.operationId);if(e){await e;let b=this.publishedHosts.get(a.operationId);if(!b||b.nativeId!==a.nativeId||b.path!==a.path)throw Error("successor host publication conflicts");return}let f=(async()=>{let d,e={receipt:a,target:this.dependencies.accounts.resolveSpawn(b.engine,b.targetAccountId),profile:b.launchProfile,registry:this.dependencies.registry??(0,o.tk)(),ownsOperation:b.ownsOperation};(d="codex"===b.engine?await (c??G)(e):c?await c(e):await H({...e,cancelClaude:this.dependencies.cancelClaude??B.cancelClaude}),b.ownsOperation&&!await b.ownsOperation())?await d():this.publishedHosts.set(a.operationId,{nativeId:a.nativeId,path:a.path,cleanup:d})})();this.publishingHosts.set(a.operationId,f);try{await f}finally{this.publishingHosts.get(a.operationId)===f&&this.publishingHosts.delete(a.operationId)}}async cleanup(a){let b=this.publishedHosts.get(a.operationId);if(b&&b.nativeId===a.nativeId&&b.path===a.path){await b.cleanup(),this.publishedHosts.delete(a.operationId);return}let c="codex-app-server"===a.host.kind?(0,p.ce)("codex",a.nativeId):"claude-stream"===a.host.kind?(0,p.ce)("claude",a.nativeId):null;if(c&&await (0,v.releaseStructuredDeliveryHost)(c)||"codex-app-server"===a.host.kind||"claude-stream"!==a.host.kind)return;let d=V(a);if(!C(await this.dependencies.cancelClaude?.(d)))throw Error("successor Claude host cleanup is still pending");await (0,x.XW)(a.path,d)}async createClaude(a,b,c,d,e,f,g){return J(this.dependencies.claudeJournalRoot??(0,q.BQ)("migration-provider-claude-operations"),a,h=>this.createClaudeLocked(a,b,c,d,e,f,g,h))}async createClaudeLocked(a,b,c,d,f,h,j,k){let l;if(!(await this.dependencies.claudeStatus(h.home)).loggedIn)throw new y.IO("not-authenticated","target Claude account is not authenticated");let m=(0,y.z4)(c,f.transcriptRoot),p=function(a){if(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(a))return a;let b=Buffer.from(e().createHash("sha256").update(a).digest().subarray(0,16));b[6]=15&b[6]|64,b[8]=63&b[8]|128;let c=b.toString("hex");return`${c.slice(0,8)}-${c.slice(8,12)}-${c.slice(12,16)}-${c.slice(16,20)}-${c.slice(20)}`}(a),q=(0,n.HI)({sourcePath:c,candidateId:p,targetHome:h.home,targetProjectsDir:h.transcriptRoot,profile:d}),r=q.transcript??i().join(h.transcriptRoot,`${p}.jsonl`),s=this.dependencies.registry??(0,o.tk)(),t=async(a,b)=>{try{j(r)}catch(c){s.preserveSpawnArtifactOwnership(a,"migration continuity persistence failed");try{let a=await this.dependencies.cancelClaude?.(b);C(a)&&await (0,x.XW)(r,b)}catch{}throw c}},u=e().createHash("sha256").update(JSON.stringify({operationId:a,conversationId:b,target:h.accountId,nativeId:p})).digest("hex"),v=s.beginSpawnRequest({engine:"claude",cwd:d.cwd,launchProfile:d,clientAttemptId:`migration-successor:${a}`,requestDigest:u,accountId:h.accountId,conversationId:b,purpose:"migration-successor",origin:{kind:"successor"},expectedArtifactPath:r});if("conflict"===v.kind)throw Error("successor Claude operation receipt conflicts");let w=v.receipt;if("replay"===v.kind){if("failed"===w.state||"conflicted"===w.state)throw Error("successor Claude operation receipt is terminal");let b=w.verifiedHost;if(b){if(!await this.dependencies.verifyClaudeHost?.(b))throw Error("successor Claude operation has no recoverable live host");return await t(w.launchId,b),{operationId:a,nativeId:p,path:r,continuityPaths:[r],historyHash:m.hash,host:{kind:"claude-stream",identity:`${b.paneId}:${b.panePid.pid}`,epoch:1,verifiedAt:this.dependencies.now(),tmuxHost:b}}}if("starting"!==w.state||w.pane||g().existsSync(r))throw new z}else this.dependencies.afterClaudeReceiptCreated?.();k();try{l=await this.dependencies.spawnClaude(q,w)}catch(a){throw s.failSpawn(w.launchId,a instanceof Error?a.message:String(a)),a}if(!l.host||void 0===l.panePid||l.host.paneId!==l.paneId||l.host.panePid.pid!==l.panePid)throw s.failSpawn(w.launchId,"successor Claude host evidence is unavailable"),Error("successor Claude host evidence is unavailable");let A=async a=>{if("failed"===a.state||"conflicted"===a.state){try{await this.dependencies.cancelClaude?.(l.host)}catch{}throw Error("successor Claude operation receipt became terminal")}},B=s.bindSpawnPane(w.launchId,{endpoint:l.host.endpoint,server:l.host.server,paneId:l.host.paneId,panePid:l.host.panePid,target:l.host.paneId});await A(B);let D=s.markSpawnHostVerified(w.launchId,l.host);await A(D);let E=s.markSpawnPromptDelivered(w.launchId);return await A(E),await t(w.launchId,l.host),k(),this.dependencies.afterClaudeSpawned?.(),{operationId:a,nativeId:p,path:r,continuityPaths:[r],historyHash:m.hash,host:{kind:"claude-stream",identity:`${l.paneId}:${l.panePid}`,epoch:1,verifiedAt:this.dependencies.now(),tmuxHost:l.host}}}async createCodex(a,b,c,d,e,f,g,h){let i=this.dependencies.journalRoot??(0,q.BQ)("migration-provider-operations");return J(i,`move:${c}`,j=>this.createCodexLocked(a,b,c,d,e,f,g,h,i,j))}async createCodexLocked(a,b,c,d,e,f,h,j,l,m){var n,o;let p=function(a,b,c,d,e,f){let h=O(a,b);try{let a=Q(JSON.parse(g().readFileSync(h,"utf8")));if(!a||a.operationId!==b||a.sourceNativeId!==d||a.sourceRoot!==e||a.targetRoot!==f)throw Error("Codex provider operation journal does not match");return{journal:{...a,conversationId:a.conversationId??c},fresh:!1}}catch(a){if("ENOENT"!==a.code)throw a}let i={version:1,operationId:b,conversationId:c,sourceNativeId:d,sourceRoot:e,targetRoot:f,createdAtMs:Date.now(),forkRecoveryFloorMs:null,forkRequestedAtMs:null,fork:null,forkSource:null,supersededForks:[]};return P(a,i),{journal:i,fresh:!0}}(l,a,b,c,g().realpathSync(f.transcriptRoot),g().realpathSync(h.transcriptRoot)),q=p.journal,r=[],s=null,t=null,u=[];if(!p.fresh){let a=function(a,b=L){if(a.fork)return{fork:T(a.fork,a.sourceNativeId,a.sourceRoot),forkSource:a.forkSource,superseded:[]};let c=a.forkRecoveryFloorMs??a.forkRequestedAtMs;if(null===c)return{fork:null,forkSource:null,superseded:[]};let d=new Set(a.supersededForks.map(a=>a.id)),e=S(b(a.sourceRoot,a.sourceNativeId,c).filter(a=>!d.has(a.id)).flatMap(b=>{try{return[T(b,a.sourceNativeId,a.sourceRoot)]}catch{return[]}}));return{fork:e[0]??null,forkSource:a.forkSource,superseded:e.slice(1)}}(q,this.dependencies.scanCodexForkArtifacts);s=a.fork,t=a.forkSource,u=a.superseded}if(!s&&null===q.forkRequestedAtMs){let a=function(a,b,c=L){let d=function(a,b){let c;try{c=g().readdirSync(a)}catch{return[]}let d=[];for(let e of c){if(!e.endsWith(".json"))continue;let c=null;try{c=Q(JSON.parse(g().readFileSync(i().join(a,e),"utf8")))}catch{continue}if(c&&c.operationId!==b.operationId&&c.sourceNativeId===b.sourceNativeId&&c.sourceRoot===b.sourceRoot&&c.targetRoot===b.targetRoot&&(!c.conversationId||!b.conversationId||c.conversationId===b.conversationId)){if(!c.conversationId&&b.conversationId&&i().join(a,e)===O(a,c.operationId)){let d={...c,conversationId:b.conversationId};try{P(a,d),c=d}catch{}}d.push(c)}}return d}(a,b);if(0===d.length)return{fork:null,forkSource:null,superseded:[],operationIds:[]};let e=Math.min(...d.map(a=>a.forkRequestedAtMs??a.createdAtMs)),f=new Map,h=new Map;for(let a of d)a.fork&&(f.set(a.fork.id,a.fork),a.forkSource&&h.set(a.fork.id,a.forkSource));for(let a of c(b.sourceRoot,b.sourceNativeId,e))f.set(a.id,a);for(let a of b.supersededForks)f.delete(a.id);let j=S([...f.values()].flatMap(a=>{try{return[T(a,b.sourceNativeId,b.sourceRoot)]}catch{return[]}})),k=j[0]??null;return{fork:k,forkSource:k?h.get(k.id)??null:null,superseded:j.slice(1),operationIds:d.map(a=>a.operationId)}}(l,q,this.dependencies.scanCodexForkArtifacts);s=a.fork,t=a.forkSource,u=a.superseded,s&&(r=a.operationIds)}let v=!1;if(s&&(n=M(d),o=t,n&&(!o||n.size!==o.size||n.mtimeMs!==o.mtimeMs))&&(q.supersededForks=N(q.supersededForks,[s],u),q.fork=null,q.forkSource=null,q.forkRequestedAtMs=null,m(),P(l,q),s=null,t=null,u=[],r=[],v=!0),s&&(!q.fork||u.length>0)&&(q.fork=s,q.forkSource=t,q.supersededForks=N(q.supersededForks,u),m(),P(l,q)),!s&&!v&&!p.fresh&&null!==q.forkRequestedAtMs)throw new A;if(!s){let a,b=await this.dependencies.startCodex(f.home);try{if(!(await b.readAccount()).account)throw Error("source Codex account is not authenticated");q.forkRequestedAtMs=Date.now(),q.forkRecoveryFloorMs??=q.forkRequestedAtMs,q.forkSource=M(d),m(),P(l,q);try{a=await b.forkThread(c)}catch(a){if(a instanceof k.yj&&"unknown"===a.outcome)throw new A(a.message);throw q.forkRequestedAtMs=null,q.forkSource=null,m(),P(l,q),a}this.dependencies.afterCodexForkReturned?.()}finally{b.close()}let e=a.path??function(a,b){let c=[{dir:a,depth:0}],d=0;for(;c.length;){let a=c.pop();if(!(a.depth>6))for(let e of g().readdirSync(a.dir,{withFileTypes:!0})){if(++d>2e4)throw Error("forked Codex history was not found within the scan bound");let f=i().join(a.dir,e.name);if(!e.isSymbolicLink()){if(e.isDirectory())c.push({dir:f,depth:a.depth+1});else if(e.isFile()&&e.name.endsWith(`${b}.jsonl`))return f}}}throw Error("forked Codex history was not found")}(f.transcriptRoot,a.id);q.fork=s=T({id:a.id,path:e},c,f.transcriptRoot),m(),P(l,q),this.dependencies.afterCodexForkCreated?.()}let w=s,x=N(q.supersededForks,u).filter(a=>a.id!==w.id).flatMap(a=>{try{return[T(a,c,f.transcriptRoot)]}catch{return[]}}),z=w.path;for(let a of(j(z),x))j(a.path);let B=i().relative(f.transcriptRoot,z);m();let C=(0,y.PM)({sourcePath:z,sourceRoot:f.transcriptRoot,targetRoot:h.transcriptRoot,destinationRelative:B,operationId:a,priorOperationIds:r,afterDestinationPublished:this.dependencies.afterCodexCopyPublished});j(C.path);let D=await this.dependencies.startCodex(h.home);try{if(!(await D.readAccount()).account)throw new y.IO("not-authenticated","target Codex account is not authenticated");m();let a=e.permissionMode&&["never","on-request","untrusted"].includes(e.permissionMode)?e.permissionMode:null;if((await D.resumeThread(s.id,{path:C.path,cwd:e.cwd,model:e.model,effort:e.effort,fast:e.fast,approvalPolicy:a,sandbox:e.readOnly?"read-only":null})).id!==s.id)throw Error("target Codex resume returned another thread");if(e.title&&await D.setThreadName(s.id,e.title),e.goal?.objective&&await D.setThreadGoal(s.id,e.goal.objective,e.goal.status),(await D.readThread(s.id)).id!==s.id)throw Error("target Codex history verification failed")}finally{D.close()}return{operationId:a,nativeId:s.id,path:C.path,continuityPaths:[z,C.path],historyHash:C.hash,host:{kind:"codex-app-server",identity:s.id,epoch:1,verifiedAt:this.dependencies.now()}}}}},58874:(a,b,c)=>{c.r(b),c.d(b,{recoverDeadStructuredConversation:()=>t,structuredHostProcessAlive:()=>o});var d=c(57726),e=c(85923),f=c(74030),g=c(55883),h=c(31973),i=c(30277),j=c(88602),k=c(13818),l=c(43271),m=c(36385);class n extends Error{constructor(){super("structured recovery operation is superseded"),this.name="StructuredRecoverySupersededError"}}function o(a){return!!a&&!!Number.isInteger(a.pid)&&!(a.pid<=0)&&!!i.B.pidAlive(a.pid)&&(null===a.startIdentity||i.B.processIdentity(a.pid)===a.startIdentity)}let p=globalThis,q=p.__llvStructuredRecovery??=new Map;function r(a,b,c=!1){let d=b.conversationId?.startsWith("conversation_")?a.conversation(b.conversationId):a.conversationForPath(b.path),f=d?.generations.at(-1);if(!d||!f)return null;let g={engine:d.engine,sessionId:f.id},i=a.readOnlySnapshot(),j=i.entries[(0,h.pp)(g)];if(j?.host)return null;let k=j?.status==="dead"||j?.status==="unhosted",l=!!(o(j?.structuredHost?.process??null)&&j?.claimOwner&&null===j.pendingAction&&!k),m=(0,e.Ui)(c?{...j?.launchProfile??{},...f.launchProfile,cwd:f.launchProfile.cwd||j?.launchProfile?.cwd||j?.cwd}:{...f.launchProfile,...j?.launchProfile??{},cwd:j?.launchProfile?.cwd||f.launchProfile.cwd||j?.cwd}),n=i.lineageEdges[d.id]?.parentConversationId??m.parentConversationId,p=n&&n!==d.id?a.canonicalConversationId(n):null;return{conversationId:d.id,engine:d.engine,key:g,path:f.path,accountId:f.accountId??j?.accountId??null,parentConversationId:p===d.id?null:p,spec:{command:"",cwd:m.cwd,windowName:"structured-resume",engine:d.engine,transcript:f.path,launchProfile:m},publishReady:l}}async function s(a,b,c,e){let g=b.ownership,h=async()=>{if(g&&!await g.owns())throw new n},m=(b.processIdentity??(()=>({pid:process.pid,startIdentity:i.B.processIdentity(process.pid)})))();return c.withOperationLock(e.key,m,async()=>{await h();let e=r(c,a,!!g);if(!e||!e.publishReady&&((0,k.DQ)(c,e.conversationId,e.key),!(e=r(c,a,!!g))))return null;if(e.publishReady){if(!g)return{target:null,path:e.path,conversationId:e.conversationId,spawned:!1};if(await g.releaseHost(e.key),await h(),c.terminateStructuredHost(e.key),await h(),!(e=r(c,a,!0)))return null}let i=void 0===b.client?(0,j.sS)():b.client;if(!i)throw Error("structured recovery runtime host is unavailable");let m=(b.resolveAccount??d.lD.resolveSpawn)(e.engine,e.accountId),n=c.beginSpawnRequest({engine:e.engine,cwd:e.spec.cwd,transport:"structured",accountId:m.accountId,conversationId:e.conversationId,parentConversationId:e.parentConversationId,purpose:"resume-successor",origin:{kind:"successor"},expectedArtifactPath:e.path,launchProfile:e.spec.launchProfile});if("created"!==n.kind)throw Error("structured recovery reservation is unavailable");try{await h()}catch(a){throw c.failSpawn(n.receipt.launchId,"structured recovery operation was superseded"),a}let o=await (b.spawn??l.sh)({engine:e.engine,receipt:n.receipt,spec:e.spec,account:m,prompt:"",registry:c,client:i});if(!o.ok||!o.path)throw Error("structured recovery host did not publish its transcript");try{await h()}catch(a){throw await g?.releaseHost(e.key),c.terminateStructuredHost(e.key),a}return(b.requestDeliveryDrain??f.U)(),{target:null,path:o.path,conversationId:e.conversationId,spawned:!0}})}async function t(a,b={}){if("structured"!==(b.transport??m.l)())return null;let c=b.registry??(0,g.tk)();if(b.ownership&&!await b.ownership.owns())throw new n;let d=r(c,a,!!b.ownership);if(!d)return null;let e=b.ownership?`${c.filename}:${d.conversationId}:${b.ownership.operationId}:${b.ownership.revision}`:`${c.filename}:${d.conversationId}`,f=q.get(e);if(f)return f;if(d.publishReady&&!b.ownership)return{target:null,path:d.path,conversationId:d.conversationId,spawned:!1};let h=s(a,b,c,d);q.set(e,h);try{return await h}finally{q.get(e)===h&&q.delete(e)}}},59376:(a,b,c)=>{c.d(b,{CS:()=>a4,SW:()=>a5,K0:()=>a3,CR:()=>a8});var d=c(55883),e=c(68574),f=c(72166),g=c(98918),h=c(957),i=c(31612),j=c(77598),k=c.n(j),l=c(73024),m=c.n(l),n=c(76760),o=c.n(n);c(89374);var p=c(24125),q=c(50920);let r=(0,q.BQ)("push-keys.json"),s=(0,q.BQ)("push-subscriptions.json"),t=(0,q.BQ)("push-sent.json"),u=Promise.resolve();function v(a){return Buffer.from(a).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function w(a){let b=a+"=".repeat((4-a.length%4)%4);return Buffer.from(b.replace(/-/g,"+").replace(/_/g,"/"),"base64")}function x(a,b){try{return JSON.parse(m().readFileSync(a,"utf8"))}catch{return b}}function y(a,b){try{return m().mkdirSync(o().dirname(a),{recursive:!0}),m().writeFileSync(a,JSON.stringify(b,null,2)),!0}catch{return!1}}function z(a,b,c){let d=[],e=Buffer.alloc(0),f=1;for(;Buffer.concat(d).length<c;)e=k().createHmac("sha256",a).update(e).update(b).update(Buffer.from([f])).digest(),d.push(e),f+=1;return Buffer.concat(d).subarray(0,c)}function A(){let a=x(r,null);if(a?.publicKey&&a.privateKey)return a;let b=k().generateKeyPairSync("ec",{namedCurve:"prime256v1"}),c={publicKey:v(b.publicKey.export({type:"spki",format:"der"}).subarray(-65)),privateKey:b.privateKey.export({type:"pkcs8",format:"pem"}).toString()};return y(r,c),c}async function B(a,b){try{var c;let d,e,f,g,h,i=function(a,b){let c=a.keys?.p256dh,d=a.keys?.auth;if(!c||!d)return null;let e=w(c),f=w(d),g=k().randomBytes(16),h=k().createECDH("prime256v1"),i=h.generateKeys(),j=h.computeSecret(e),l=k().createHmac("sha256",f).update(j).digest(),m=z(l,Buffer.concat([Buffer.from("WebPush: info\0"),e,i]),32),n=k().createHmac("sha256",g).update(m).digest(),o=z(n,"Content-Encoding: aes128gcm\0",16),p=z(n,"Content-Encoding: nonce\0",12),q=Buffer.concat([Buffer.from(JSON.stringify(b),"utf8"),Buffer.from([2])]),r=k().createCipheriv("aes-128-gcm",o,p),s=Buffer.concat([r.update(q),r.final(),r.getAuthTag()]),t=Buffer.alloc(21);return g.copy(t,0),t.writeUInt32BE(4096,16),t.writeUInt8(i.length,20),Buffer.concat([t,i,s])}(a,b);if(!i)return"failed";let j=new Uint8Array(i.byteLength);j.set(i);let l=(c=new URL(a.endpoint).origin,d=A(),e=v(JSON.stringify({typ:"JWT",alg:"ES256"})),f=v(JSON.stringify({aud:c,exp:Math.floor(Date.now()/1e3)+43200,sub:"mailto:agent-log-viewer@localhost"})),(g=k().createSign("SHA256")).update(`${e}.${f}`),g.end(),h=g.sign({key:d.privateKey,dsaEncoding:"ieee-p1363"}),`${e}.${f}.${v(h)}`),m=new AbortController,n=setTimeout(()=>m.abort(),3e3),o=await fetch(a.endpoint,{method:"POST",signal:m.signal,headers:{authorization:`vapid t=${l}, k=${A().publicKey}`,"content-encoding":"aes128gcm","content-type":"application/octet-stream",ttl:"60",urgency:"normal"},body:j.buffer}).catch(()=>null);if(clearTimeout(n),!o)return"failed";if(o.status>=200&&o.status<300)return"sent";if(404===o.status||410===o.status)return"dead";return"failed"}catch{return"failed"}}async function C(a){let b;if(a.waitingInput&&Date.now()/1e3-a.waitingInput.since<60||!a.pendingQuestion&&!a.waitingInput)return;let c=function(a,b=Date.now()/1e3){return a.pendingQuestion?a.pendingQuestion.toolUseId:a.rateLimit?`${a.path}:rate-limited:${a.rateLimit.resetAt??"unknown"}`:a.waitingInput?`${a.path}:waiting:${Math.floor(a.waitingInput.since)}`:"stalled"===a.activity&&"running"===a.proc&&b-a.mtime<=7200?`${a.path}:stalled:${Math.floor(a.mtime)}`:null}(a);if(!c)return;let d=new Set(x(t,[]));if(d.has(c))return;let e=x(s,[]);if(!e.length)return;let f=[],g=!1,h=!1,i=(b=a.pendingQuestion?.kind==="plan"?"plan awaiting approval":a.pendingQuestion?.questions?.[0]?.header||a.waitingInput?.menu?.question.slice(0,120)||(a.waitingInput?"waiting for an answer":"question"),{title:`${a.title||"Agent"} \xb7 ${a.engine}`,body:b,url:`/${(0,p.Zo)(a)}#question`});for(let a of e){let b=await B(a,i);"sent"===b?(g=!0,f.push(a)):"failed"===b?f.push(a):h=!0}g&&(d.add(c),y(t,[...d].slice(-500))),h&&y(s,f)}async function D(a){u=u.then(()=>C(a),()=>C(a)),await u.catch(()=>void 0)}var E=c(44237),F=c(70154),G=c(70395),H=c(68822);let I=(0,q.BQ)("task-inbox-scan.json"),J=0;function K(a){let b,c,d;return((c=(b=a).lastIndexOf("</environment_context>"))>=0&&(b=b.slice(c+22)),(d=b.lastIndexOf("</INSTRUCTIONS>"))>=0&&(b=b.slice(d+15)),b.trim()).replace(/(?:э[-\s]*э[-\s]*э|эээ|ээ|эм|ммм)/giu," ").replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim()}let L=/(?:созда(?:й|ть|л)|сдела(?:й|ть)|добав(?:ь|ить)|исправ(?:ь|ить)|почин(?:и|ить)|проверь|разберись|найди|напиши|реализ(?:уй|овать)|запусти|подготовь|обнови|перенеси|удали|отрефактори|проанализируй|\b(?:create|add|fix|implement|build|write|review|check|investigate|run|update|refactor|deploy|make|set up|setup)\b)/i;var M=c(89364),N=c(4351),O=c(57726),P=c(51720),Q=c(91836),R=c(87380),S=c(10508),T=c(14607);c(56514);var U=c(89831),V=c(24534),W=c(62142),X=c(53388);function Y(a,b){let c=[];for(let d of a.stageRuns){if(d.index>=b||!d.doneAt)continue;let e=a.template.stages[d.index],f=e?.kind==="implement"?e.scope:`stage ${d.index+1}`;c.push(`- Stage ${d.index+1} (${f}): ${d.doneNote||"done, no note left"}`)}return c.length?["Notes from the stages already finished in this worktree:",...c,""]:[]}function Z(a){return a.template.verify?[`Before declaring the stage done, verify your work: run \`${a.template.verify}\` and get it green.`]:["Before declaring the stage done, verify your work with the project's own build/test commands."]}var $=c(78906);let _=new Set(["approved","closed"]),aa=new Set(["needs_decision","paused"]),ab=/^STAGE_DONE:\s*(.*)$/m,ac=new Set;function ad(a,b){return`${a.id}:${b.index}`}function ae(a,b){a.pausedState=a.state,a.state="needs_decision",a.stateDetail=b}function af(a){return a.stageRuns[a.stageIndex]??null}function ag(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function ah(a,b){return a?.startsWith("conversation_")?(0,d.tk)().conversation(a)?.generations.at(-1)?.path??b:(0,d.tk)().canonicalPath(b)}function ai(a,b){for(let c=b-1;c>=0;c-=1){let b=a.stageRuns[c];if(b?.agentPath)return ah(b.agentConversationId,b.agentPath)}return a.srcPath?ah(a.srcConversationId,a.srcPath):null}function aj(a){a.stageIndex+=1;let b=a.template.stages[a.stageIndex];a.state=b?.kind==="review-loop"?"reviewing":"implementing",a.stateDetail=null}async function ak(a,b,c,d,e,f,g){if(!b.startedAt){b.startedAt=f.now(),b.accountId||(b.accountId=O.lD.resolveSpawn(c.engine).accountId),ac.add(ad(a,b)),g();try{let e=await f.spawnAgent(c,a.worktreeDir,d,b.accountId);if(b.paneId=e.paneId,e.transcript){b.agentPath=e.transcript;let c=ai(a,b.index);c&&f.linkChild(e.transcript,c)}}catch(b){ae(a,b instanceof Error?b.message:String(b))}return"spawning"}if(!b.paneId&&!ac.has(ad(a,b)))return ae(a,"stage agent spawn was interrupted by a restart"),"spawning";if(!b.agentPath){let d,g,h,i=(d=ag(b.startedAt)/1e3-5,g=function(a){let b=new Set;for(let c of a.stageRuns)c.agentPath&&(b.add(c.agentPath),b.add(ah(c.agentConversationId,c.agentPath)));return a.fixerPath&&(b.add(a.fixerPath),b.add(ah(a.fixerConversationId,a.fixerPath))),b}(a),h=e.filter(b=>b.engine===c.engine&&("claude-projects"===b.root||"codex-sessions"===b.root)&&!b.path.includes(o().sep+"subagents"+o().sep)&&b.mtime>=d&&!g.has(b.path)&&!("codex-sessions"===b.root&&b.path.endsWith(".jsonl")&&(0,U.ET)(b.path,b.size))&&f.headCwd(b.path)===a.worktreeDir).sort((a,b)=>b.mtime-a.mtime)[0],h?.path??null);if(i){b.agentPath=i;let c=ai(a,b.index);return c&&f.linkChild(i,c),"ready"}return b.paneId&&!await f.paneAgentAlive(b.paneId)&&ae(a,"stage agent died before its transcript appeared"),"waiting"}return"ready"}async function al(a,b,c){if(!a.baseRef){let d=(0,X.V8)(a,b.exec);if(!d.ok)return void ae(a,d.error);a.baseBranch=d.baseBranch,a.baseRef=d.baseRef,c()}if(a.template.setup){if(null==a.setupPid&&"done"!==b.setupStatus(a).status){let c=b.startSetup(a);return null==c.pid?void ae(a,c.error??"setup failed to start"):void(a.setupPid=c.pid)}let c=b.setupStatus(a);if("running"===c.status)return;if("failed"===c.status)return void ae(a,c.detail)}a.state="implementing",a.stateDetail=null}async function am(a,b,c,d,e){var f,g;let h,i,j,k=af(a),l=(f=a.stageIndex,h=a.template.stages[f],h?.kind==="implement"?h.agent:h?.kind==="review-loop"?h.fixer:null);if(!k||!l)return void ae(a,"stage index points outside the template");if(k.doneAt){"auto"===a.mode&&aj(a);return}if("ready"!==await ak(a,k,l,(g=a.stageIndex,i=a.template.stages[g],j=i?.kind==="implement"?i.scope:"",[`You are stage ${g+1} of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",`Your scope for this stage: ${j}`,"Stay inside that scope — other stages own the rest of the work.","",...Y(a,g),...Z(a),"Commit your work in this worktree; later stages and the final PR build on your commits.","","When the stage is complete, end your final assistant message with a line that starts exactly with:","STAGE_DONE: <one-line note for the next stage>","Do not print the STAGE_DONE marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the stage is actually complete. The note travels to the next stage's kickoff, so state where the contract lives and what the next stage should build on."].join("\n")),b,d,e))return;let m=c.get(ah(k.agentConversationId,k.agentPath));if(!m)return;let n=function(a,b,c){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let d=c.lastMessage(b);return!d||d.ts<=ag(a.startedAt)?null:d.text.match(ab)?.[1]?.trim()??null}(k,m,d);if(null!==n){k.doneAt=d.now(),k.doneNote=n||null,"auto"===a.mode&&aj(a);return}k.paneId&&!await d.paneAgentAlive(k.paneId)&&ae(a,"stage agent pane died before STAGE_DONE")}async function an(a,b,c,d){let e,f,g=af(a),h=(e=a.template.stages.at(-1),e?.kind==="review-loop"?e:null);if(!g||!h)return void ae(a,"the template has no review-loop stage");if(g.doneAt){"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}if("ready"!==await ak(a,g,h.fixer,(f=a.template.stages.length-1,[`You are the fixer of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",...Y(a,f),"The implementation stages above are finished. A review loop starts now: a fresh reviewer examines the full workflow diff each round and its findings arrive here as messages.","","For each finding, apply the fix or argue against it. Respond to every finding with:","FIXED","or","REJECTED — <reason>","Give concrete arguments for rejections because the next reviewer is fresh and blind to previous discussion.","",...Z(a),"Commit the fixes you apply. When every finding is addressed and the work is reviewable again, end your final assistant message with a line that starts exactly with:","REVIEW_READY: <one-line note>","Do not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only after addressing a round's findings."].join("\n")),b,c,d))return;if(a.fixerPath||(a.fixerPath=g.agentPath,a.fixerConversationId=g.agentConversationId??null),!a.flowId){let e=ah(a.fixerConversationId,a.fixerPath),f=c.findFlowByImplementer(e);if(f){a.flowId=f.id;return}let g=await c.createFlow({implementerPath:e,roles:{implementer:h.fixer,reviewer:h.reviewer},baseMode:"head",baseRef:a.baseRef,mode:a.mode,reviewerMode:h.reviewerMode,roundLimit:h.roundLimit},b);return g.flow?(a.flowId=g.flow.id,d(),void c.advanceFlow(a.flowId,`Workflow "${a.name}": review the full diff from the captured base ref.`)):void ae(a,`creating the review flow failed: ${g.error??"unknown error"}`)}let i=c.getFlow(a.flowId);if(!i)return void ae(a,"the embedded review flow record disappeared");if("approved"===i.state){g.doneAt=c.now(),g.doneNote=`review approved after ${i.rounds.length} round(s)`,"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}"done_comment"===i.state?ae(a,"review ended with a COMMENT verdict"):"needs_decision"===i.state?ae(a,`review loop needs a decision: ${i.stateDetail??"unknown reason"}`):"closed"===i.state&&ae(a,"the embedded review flow was closed")}async function ao(a,b,c,d,e){let f=JSON.stringify(a);if("provisioning"===a.state)await al(a,d,e);else if("implementing"===a.state)await am(a,b,c,d,e);else if("reviewing"===a.state)await an(a,b,d,e);else{var g;let b,c,e,f;"finishing"===a.state&&(b=a.flowId?d.getFlow(a.flowId):null,(f=(0,X.dA)(a,(g=b?.rounds??[],c=a.stageRuns.filter(a=>a.doneAt).map(b=>{let c=a.template.stages[b.index],d=c?.kind==="implement"?c.scope.split(/[.:\n]/)[0]:"review loop";return`- Stage ${b.index+1} (${d}): ${b.doneNote||"done"}`}),e=g.map(a=>`- Round ${a.n}: ${a.verdict??"no verdict"}${null!=a.findingsCount?` (${a.findingsCount} findings)`:""}`),["## Task","",a.task.trim(),"","## Stages","",...c.length?c:["- (no stage notes recorded)"],"","## Review rounds","",...e.length?e:["- (no review rounds recorded)"],"","\uD83E\uDD16 Generated with [Claude Code](https://claude.com/claude-code)"].join("\n")),d.exec)).ok?(a.prUrl=f.prUrl,a.state="approved",a.stateDetail=null,a.closedAt=d.now()):ae(a,f.error))}return JSON.stringify(a)!==f}let ap=globalThis;async function aq(a,b={exec:X.Ix,startSetup:X.ot,setupStatus:X.ae,spawnAgent:async(a,b,c,d)=>{let e=O.lD.resolveSpawn(a.engine,d),f=(0,N.lV)(a.engine,b,{model:a.model,effort:a.effort,codexHome:"codex"===e.engine?e.home:null,claudeConfigDir:"claude"===e.engine?e.home:null,claudeProjectsDir:"claude"===e.engine?e.transcriptRoot:null}),g=Date.now(),h=await (0,M.Tk)(f,c),i=await (0,P.s)({engine:a.engine,knownTranscript:f.transcript??null,panePid:h.panePid??null,cwd:b,startedAtMs:g,codexSessionsDir:"codex"===e.engine?e.transcriptRoot:null});return{paneId:h.paneId,transcript:i,panePid:h.panePid??null}},paneAgentAlive:async a=>{let b=await (0,M.RZ)(a);return null!==b&&!(0,W.g2)(b.command)},headCwd:a=>(0,Q.tX)(a),lastMessage:S.if,createFlow:R._p,advanceFlow:(a,b)=>void(0,R.n1)(a,{action:"advance",note:b}),closeFlow:R.ni,getFlow:a=>(0,g.mL)().find(b=>b.id===a)??null,findFlowByImplementer:a=>(0,g.mL)().filter(b=>b.implementerPath===a).sort((a,b)=>a.createdAt<b.createdAt?1:-1)[0]??null,projectForCwd:V.hY,linkChild:(a,b)=>{(0,T.A6)(a,b),(0,T.OA)()},now:()=>new Date().toISOString()}){if(ap.__llvWorkflowTick)return{workflows:(0,$.Ny)(),changed:!1};ap.__llvWorkflowTick=!0;try{let c=(0,$.Ny)(),d=new Map(a.map(a=>[a.path,a])),e=!1;for(let f of c)!(_.has(f.state)||aa.has(f.state))&&(await ao(f,a,d,b,()=>(0,$.co)(c))&&(e=!0),e&&(0,$.co)(c));return e&&(0,$.co)(c),{workflows:c,changed:e}}finally{ap.__llvWorkflowTick=!1}}var ar=c(7058),as=c(94284),at=c(38849);let au={"fable-5":{standard:1e6},"mythos-5":{standard:1e6},"mythos-preview":{standard:1e6},"opus-4-8":{standard:1e6},"opus-4-7":{standard:1e6},"opus-4-6":{standard:1e6},"sonnet-5":{standard:1e6},"sonnet-4-6":{standard:1e6},"haiku-4-5":{standard:2e5},"opus-4-5":{standard:2e5},"opus-4-1":{standard:2e5},"sonnet-4-5":{standard:2e5,extended:1e6},"sonnet-4-0":{standard:2e5,extended:1e6}},av=(0,as.E)("ctx-v2");function aw(a,b,c){if(null===a||a<=0)return null;if(!b||b.windowTokens<=0||"runtime"!==b.source&&a>b.windowTokens){var d;return d=a,{usedTokens:d,windowTokens:null,pct:null,source:"unknown",confidence:"unknown",observedAt:c}}let e="registry"===b.source?99:100;return{usedTokens:a,windowTokens:b.windowTokens,pct:Math.min(e,Math.round(a/b.windowTokens*100)),source:b.source,confidence:b.confidence,...b.registryVersion?{registryVersion:b.registryVersion}:{},observedAt:c}}function ax(a,b){let c=(0,at.r$)(a.timestamp),d=c?Date.parse(c):NaN;return Number.isFinite(d)?new Date(d).toISOString():b}var ay=c(50076),az=c(62e3),aA=c(52530);let aB=(0,as.E)("effort"),aC=new Set(["minimal","low","medium","high","xhigh","max","ultra"]);function aD(a){let b=a?.trim().toLowerCase()??"";return aC.has(b)?b:null}function aE(a,b){if("codex-sessions"===a.root&&"turn_context"===b.type){let a=(0,at.xK)(b.payload),c=(0,at.r$)(a?.effort);if(c)return c;let d=(0,at.xK)((0,at.xK)(a?.collaboration_mode)?.settings);return(0,at.r$)(d?.reasoning_effort)}if("claude-projects"===a.root&&"assistant"===b.type){let a=(0,at.xK)(b.message);if((0,at.Em)(a?.content).some(a=>"thinking"===(0,at.r$)(a.type)))return"high"}return null}function aF(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return{value:null,complete:!0};let b=aD(function(a){if(null===a.pid)return null;let b=(0,aA.$U)(a.pid);for(let c=0;c<b.length-1;c++){if("codex"===a.engine&&("-c"===b[c]||"--config"===b[c])){let a=b[c+1].match(/^model_reasoning_effort\s*=\s*"?([a-z]+)"?$/i);if(a)return a[1]}if("claude"===a.engine&&"--effort"===b[c])return b[c+1]}return null}(a));if("claude-projects"===a.root&&b)return{value:b,complete:!0};let c=1e3*a.mtime,d=aB.get(a.path);if(d?.[0]===a.size&&d[1]===c)return{value:d[2]??b,complete:!0};let e=null,f=(0,ar.w8)(a.path,a.size,c),g=f.complete;for(let b of f.records.reverse())if(e=aD(aE(a,b)))break;if(!e){let b=(0,ar.sY)(a.path,a.size,c);for(let c of(g&&=b.complete,b.records))if(e=aD(aE(a,c)))break}return g&&aB.set(a.path,[a.size,c,e]),{value:e??b,complete:g}}var aG=c(7343);let aH=(0,as.E)("model");function aI(a){return a?a.trim().replace(/^claude-/,"").replace(/-20\d{6}$/,""):null}function aJ(a,b){if("codex-sessions"===a.root){if("turn_context"===b.type||"session_meta"===b.type)return(0,at.r$)((0,at.xK)(b.payload)?.model)}else if("assistant"===b.type){let a=(0,at.r$)((0,at.xK)(b.message)?.model);if(a&&"<synthetic>"!==a)return a}return null}let aK=(0,as.E)("plan-v2"),aL=(0,as.E)("goal-v2");function aM(a){return"in_progress"===a||"completed"===a?a:"pending"}function aN(a,b){if(!a.length)return null;let c=a.filter(a=>"completed"===a.status).length,d=a.find(a=>"in_progress"===a.status)?.text??a.find(a=>"pending"===a.status)?.text??null;return{steps:a,done:c,total:a.length,current:d,updatedAt:b}}function aO(a){return"active"===a||"complete"===a||"blocked"===a?a:null}var aP=c(78598),aQ=c(2496);let aR=/scheduled for\s+(\d{1,2}:\d{2}:\d{2})(?:\s*\(in\s+(\d+)\s*s\))?/i,aS=/\bin\s+(\d+)\s*s\b/i;function aT(a){return"string"==typeof a?a.trim():""}let aU=(0,as.E)("wakeup-v2");var aV=c(75060),aW=c(69882),aX=c(76863);let aY=new Map,aZ={waiting:null,rateLimit:null,atComposer:!1},a$={now:()=>Date.now(),resolveTarget:M.u1,paneScreen:M.ZB};async function a_(a,b=a$){let c=b.now();for(let[a,b]of aY)c-b.at>6e5&&aY.delete(a);if("running"!==a.proc||null===a.pid||a.pendingQuestion)return aY.delete(a.path),aZ;if(c/1e3-a.mtime<15)return aZ;let d=await b.resolveTarget(a.pid);if(null===d)return aZ;let e=await b.paneScreen(d),f=(0,W.NU)(e,c/1e3);if(f)return aY.delete(a.path),{waiting:null,rateLimit:{source:"pane",accountId:null,window:null,resetAt:f.resetAt},atComposer:!1};if(!(0,W.cZ)(e))return aY.delete(a.path),{waiting:null,rateLimit:null,atComposer:(0,W.WM)(e)};let g=aY.get(a.path);return g&&g.screen===e?(aY.set(a.path,{...g,at:c}),c/1e3-g.since<15)?aZ:{waiting:{since:g.since,screenTail:e.split("\n").map(a=>a.replace(/\s+$/,"")).filter(a=>a.trim()).slice(-10).join("\n").slice(-1200),target:d,menu:(0,W.fm)(e)},rateLimit:null,atComposer:!1}:(aY.set(a.path,{screen:e,at:c,since:c/1e3}),aZ)}let a0=new Map;async function a1(a,b){await (0,e.pV)(a,b)}async function a2(a,b){for(let c=0;c<a.length;c+=16)await Promise.all(a.slice(c,c+16).map(b)),c+16<a.length&&await (0,e.Lh)()}function a3(a){let b="string"==typeof a?[a]:a?.filter(Boolean)??[];if(!b.length)return new Set;try{let a=(0,d.tk)(),c=a.readOnlySnapshot(),e=new Set,f=new Map,g=new Map;for(let a of Object.values(c.conversations)){let b=a.generations.at(-1)?.path;if(b){for(let c of a.generations)f.set(c.path,b),g.set(c.path,a.id);for(let c of a.continuityPaths)f.set(c,b),g.set(c,a.id)}}let h=new Map;for(let b of Object.values(c.lineageEdges)){let c=a.canonicalConversationId(b.parentConversationId),d=a.canonicalConversationId(b.childConversationId),e=h.get(c)??[];e.includes(d)||e.push(d),h.set(c,e)}let i=new Map;for(let b of Object.values(c.memberships))for(let c of b){let b=`${c.kind}:${c.containerId}`,d=i.get(b)??[],e=a.canonicalConversationId(c.conversationId);d.includes(e)||d.push(e),i.set(b,d)}let j=b=>{let d=[a.canonicalConversationId(b)],f=new Set;for(;d.length;){let b=d.shift();if(f.has(b))continue;f.add(b);let g=c.conversations[b],j=g?.generations.at(-1)?.path;j&&e.add(j);let k=c.lineageEdges[b]?.parentConversationId;for(let c of(k&&d.push(a.canonicalConversationId(k)),h.get(b)??[]))d.push(c);for(let a of c.memberships[b]??[])for(let b of i.get(`${a.kind}:${a.containerId}`)??[])d.push(b)}};for(let d of b){if(d.startsWith("conversation_")){let b=a.canonicalConversationId(d)??d;c.conversations[b]&&j(b);continue}e.add(d);let b=f.get(d);b&&e.add(b);let h=g.get(d);h&&j(h)}return e}catch(a){if(a instanceof d.Ou)return new Set(b.filter(a=>!a.startsWith("conversation_")));throw a}}async function a4(a={}){return(await a7(!1,void 0,a)).files}async function a5(a,b={}){return a7(!0,a,b)}function a6(){let a=(0,E.xg)(!0).archivedPaths;if(!a.size)return a;let b=(0,aX.Ot)((0,aW.s9)().map(([,a])=>a)),c=function(a){let b=new Set;try{for(let c of Object.values((0,d.tk)().readOnlySnapshot().conversations)){let d=c.generations.at(-1)?.path;d&&b.add(a(d))}}catch(a){if(!(a instanceof d.Ou))throw a}return b}(b);if(!c.size)return a;let e=new Set;for(let d of a)c.has(b(d))||e.add(d);return e}async function a7(a,b,c={}){if(c.signal?.aborted)throw new DOMException("file scan cancelled","AbortError");let e=!0===c.persist,f=void 0!==c.onResourceSnapshot,g=f?void 0:a6(),h=a3(c.pins?[...c.pins,...c.pin?[c.pin]:[]]:c.pin),i=function(){let a=new Set;try{for(let b of Object.values((0,d.tk)().readOnlySnapshot().entries))"dead"!==b.status&&"unhosted"!==b.status&&b.artifactPath&&a.add(b.artifactPath)}catch(a){if(!(a instanceof d.Ou))throw a}return a}(),j=a?await (0,az.nd)(void 0,b,{persist:e,persistIndex:c.persistIndex,demote:g,loadDemote:f?a6:void 0,pin:h,hosted:i,resourceBaseline:c.resourceBaseline,onResourceSnapshot:c.onResourceSnapshot,transportConversationCatalog:"1"===process.env.LLV_FILE_SCANNER_WORKER}):{files:await (0,az.ZO)(void 0,g??a6(),h,i),projectCatalog:[],complete:!0};if(c.signal?.aborted)throw new DOMException("file scan cancelled","AbortError");let k=j.files;if(c.fresh){let a=(0,M.m7)(!0);(0,aA.Bj)(!0),await a}let l=k.some(a=>"claude-tasks"===a.root&&a.path.endsWith(".output"))?(0,aA.$w)():a0;if(await a1(k,a=>{let b=(0,ar.Hz)(a.root,a.path,a.mtime,a.size);if(a.activity=b.state,a.activityReason=b.reason,a.derivationComplete=b.complete,a.path.endsWith(".jsonl")&&("claude"===a.engine||"codex"===a.engine)){let b=(0,ar.pk)(a.path,a.size,1e3*a.mtime,"codex"===a.engine);a.derivationComplete&&=b.complete,b.complete&&(a.authoritativeTurn=b.turn)}let c=function(a){if("claude-projects"===a.root&&a.path.includes(o().sep+"subagents"+o().sep)){let b=(0,at.Vh)(a.path.slice(0,-6)+".meta.json")??{},c=(0,at.r$)(b.model);if(c)return{value:{display:aI(c),launch:c},complete:!0}}if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return{value:{display:null,launch:null},complete:!0};let b=1e3*a.mtime,c=aH.get(a.path);if(c?.[0]===a.size&&c[1]===b)return{value:c[2],complete:!0};let d=null,e=(0,ar.w8)(a.path,a.size,b),f=e.complete;for(let b of e.records.reverse())if(d=aJ(a,b))break;if(!d){let c=(0,ar.sY)(a.path,a.size,b);for(let b of(f&&=c.complete,c.records))if(d=aJ(a,b))break}let g={display:aI(d),launch:d};return f&&aH.set(a.path,[a.size,b,g]),{value:g,complete:f}}(a);a.model=c.value.display,a.launchModel=c.value.launch,a.derivationComplete&&=c.complete;let d=aF(a);a.effort=d.value,a.derivationComplete&&=d.complete,a.plan=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=aK.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=(0,ar.w8)(a.path,a.size,b),e=null;for(let b of d.records.reverse())if(e="codex-sessions"===a.root?function(a){let b,c=(0,at.xK)(a.payload);if(!c||"function_call"!==c.type||"update_plan"!==(0,at.r$)(c.name))return null;let d=(0,at.r$)(c.arguments);if(!d)return null;try{b=JSON.parse(d)}catch{return null}return aN((0,at.Em)((0,at.xK)(b)?.plan).map(a=>{let b=(0,at.r$)(a.step)?.trim();return b?{text:b,status:aM(a.status)}:null}).filter(a=>null!==a),(0,at.r$)(a.timestamp))}(b):function(a){if("assistant"!==a.type)return null;for(let b of(0,at.Em)((0,at.xK)(a.message)?.content))if("tool_use"===b.type&&"TodoWrite"===(0,at.r$)(b.name))return aN((0,at.Em)((0,at.xK)(b.input)?.todos).map(a=>{let b=aM(a.status),c=("in_progress"===b?(0,at.r$)(a.activeForm)?.trim():null)||(0,at.r$)(a.content)?.trim()||null;return c?{text:c,status:b}:null}).filter(a=>null!==a),(0,at.r$)(a.timestamp));return null}(b))break;return d.complete&&aK.set(a.path,[a.size,b,e]),e}(a),a.goal=function(a){if("codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=aL.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=(0,ar.w8)(a.path,a.size,b),e=null,f=null,g=null,h=null;for(let a of d.records.reverse()){let b=function(a){let b=(0,at.xK)(a.payload);if(!b)return null;if("thread_goal_updated"===b.type){let a=(0,at.xK)(b.goal);return a?{objective:(0,at.r$)(a.objective),status:aO(a.status)??void 0,tokensUsed:(0,at.Vg)(a.tokensUsed),timeUsedSeconds:(0,at.Vg)(a.timeUsedSeconds)}:null}if("function_call"===b.type&&"update_goal"===(0,at.r$)(b.name)){let a=(0,at.r$)(b.arguments);if(!a)return null;try{let b=(0,at.xK)(JSON.parse(a));if(!b)return null;return{objective:(0,at.r$)(b.objective),status:aO(b.status)??((0,at.r$)(b.objective)?"active":void 0)}}catch{}}return null}(a);if(b&&(null===f&&b.status&&(f=b.status),null===e&&b.objective&&(e=b.objective),null===g&&"number"==typeof b.tokensUsed&&(g=b.tokensUsed),null===h&&"number"==typeof b.timeUsedSeconds&&(h=b.timeUsedSeconds),null!==f&&null!==e&&null!==g))break}let i=null===f&&null===e?null:{objective:e,status:f??"active",tokensUsed:g,timeUsedSeconds:h};return d.complete&&aL.set(a.path,[a.size,b,i]),i}(a),a.ctx=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=av.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=new Date().toISOString(),e=(0,ar.w8)(a.path,a.size,b),f=null;for(let b of e.records.reverse())if(f="codex-sessions"===a.root?function(a,b){let c=(0,at.xK)(a.payload);if(!c||"token_count"!==(0,at.r$)(c.type))return null;let d=(0,at.xK)(c.info);if(!d)return null;let e=(0,at.xK)(d.last_token_usage)??(0,at.xK)(d.total_token_usage),f=(0,at.Vg)(d.model_context_window);return!e||null===f||f<=0?null:aw((0,at.Vg)(e.total_tokens),{windowTokens:f,source:"runtime",confidence:"exact"},ax(a,b))}(b,d):function(a,b){if("assistant"!==a.type)return null;let c=(0,at.xK)(a.message),d=(0,at.r$)(c?.model);if(!c||!d||"<synthetic>"===d)return null;let e=(0,at.xK)(c.usage);if(!e)return null;let f=((0,at.Vg)(e.input_tokens)??0)+((0,at.Vg)(e.cache_read_input_tokens)??0)+((0,at.Vg)(e.cache_creation_input_tokens)??0),g=[a.beta,a.betas,c.beta,c.betas].flatMap(a=>Array.isArray(a)?a:[a]).filter(a=>"string"==typeof a);return aw(f,function(a,b,c){var d;let e,f=(0,at.Vg)(a.context_window)??(0,at.Vg)(a.model_context_window);if(null!==f&&f>0)return{windowTokens:f,source:"runtime",confidence:"exact"};let g=function(a){let b=a.toLowerCase().trim();if(!b||"<synthetic>"===b)return null;let c=/\[1m\]$/.test(b);return(c&&(b=b.replace(/\[1m\]$/,"")),b=(b=(b=(b=(b=b.replace(/^(?:us\.|eu\.)?anthropic\./,"")).replace(/@20\d{6}$/,"")).replace(/-v\d+(?::\d+)?$/,"")).replace(/-20\d{6}$/,"")).replace(/^claude-/,""))?{key:b,mode:c?"1m":"standard"}:null}(b);if(!g)return null;let h=c.some(a=>a.toLowerCase().includes("context-1m-2025-08-07"))?"1m":g.mode,i=(d=g.key,(e=au[d])?"1m"===h?e.extended??1e6:e.standard:null);return null===i?null:{windowTokens:i,source:"registry",confidence:"approximate",registryVersion:"2026-07-10"}}(c,d,g),ax(a,b))}(b,d))break;return e.complete&&av.set(a.path,[a.size,b,f]),f}(a),a.lastTurn=(0,ay.d2)(a),a.lastAssistantMessageAt=(0,ay.iv)(a),a.pendingWakeup=function(a,b=Date.now()){if("claude"!==a.engine||!a.path.endsWith(".jsonl"))return null;let c=1e3*a.mtime,d=aU.get(a.path);if(d?.[0]===a.size&&d[1]===c){let a=d[2];return a&&a.fireAt<=b?null:a}let e=(0,ar.w8)(a.path,a.size,c),f=e.records,g=null;a:for(let a=f.length-1;a>=0;a-=1){let c=function(a){if("assistant"!==a.type)return[];let b=(0,at.r$)(a.timestamp),c=[];for(let d of(0,at.Em)((0,at.xK)(a.message)?.content)){if("tool_use"!==d.type||"ScheduleWakeup"!==(0,at.r$)(d.name))continue;let a=(0,at.r$)(d.id);a&&c.push({id:a,input:(0,at.xK)(d.input)??{},ts:b})}return c}(f[a]);for(let d=c.length-1;d>=0;d-=1){let e=c[d],h=null;for(let b=a+1;b<f.length&&null===h;b+=1)h=function(a,b){for(let c of(0,at.Em)((0,at.xK)(a.message)?.content)){if("tool_result"!==c.type||(0,at.r$)(c.tool_use_id)!==b)continue;let a=!0===c.is_error,d=c.content;if("string"==typeof d)return{text:d,isError:a};if(Array.isArray(d))return{text:d.map(a=>"string"==typeof a?a:(0,at.r$)((0,at.xK)(a)?.text)??"").filter(Boolean).join("\n"),isError:a};return{text:null,isError:a}}return null}(f[b],e.id);if(h?.isError)continue;let i=e.ts?Date.parse(e.ts):NaN,j=function(a,b,c){var d;let e=a&&"object"==typeof a&&!Array.isArray(a)?a:{},f=aT(e.reason),g=aT(e.prompt),h="number"==typeof(d=e.delaySeconds)&&Number.isFinite(d)?d:null,i="string"==typeof c?c.match(aR):null,j="string"==typeof c?c.match(aS):null,k=i?.[2]??j?.[1],l=k?Number(k):null,m=i?.[1]??null,n=null;return null!==b&&null!==l?n=b+1e3*l:m?n=function(a,b){let c=a.split(":").map(Number);if(3!==c.length||c.some(a=>!Number.isFinite(a)))return null;let[d,e,f]=c,g=null!==b?new Date(b):new Date;g.setUTCHours(d,e,f,0);let h=g.getTime();return null!==b&&h<b-6e4&&(h+=864e5),h}(m,b):null!==b&&null!==h&&(n=b+1e3*h),{fireAt:n,delaySeconds:l??h,reason:f,prompt:g}}(e.input,Number.isFinite(i)?i:null,h?.text??null);null!==j.fireAt&&j.fireAt>b&&(g={fireAt:j.fireAt,reason:(0,aQ.fp)(j.reason).slice(0,300)});break a}}return e.complete&&aU.set(a.path,[a.size,c,g]),g}(a),(0,aP.xb)(a)}),await a1(k,a=>{if("claude-tasks"===a.root&&a.path.endsWith(".output")){let b=l.get(a.path)??null;a.pid=b,a.proc=null===b?"done":"running",null!==b&&(a.activity="live",a.activityReason="output_held")}}),(0,aV.em)(k),await a2(k,async a=>{a.effort=aF(a).value,a.fast=function(a){if("codex"!==a.engine||null===a.pid)return null;let b=(0,aA.$U)(a.pid);for(let a=0;a<b.length-1;a++){if("-c"!==b[a]&&"--config"!==b[a])continue;let c=b[a+1].match(/^service_tier\s*=\s*"?(priority|standard)"?$/i);if(c)return"priority"===c[1].toLowerCase()}return null}(a);let b=(0,aP.xb)(a);a.pendingQuestion=b&&null!==a.pid?{...b,paneTarget:await (0,M.u1)(a.pid)}:b;let c=await a_(a);a.waitingInput=c.waiting,a.rateLimit=c.rateLimit,c.atComposer&&"stalled"===a.activity&&(a.activity=Date.now()/1e3-a.mtime<900?"recent":"idle",a.activityReason="pane_at_composer")}),await (0,aG.b)(k,{persist:e}),c.signal?.aborted)throw new DOMException("file scan cancelled","AbortError");let m="pinOverlayPaths"in j?j.pinOverlayPaths:void 0;return{files:k,projectCatalog:j.projectCatalog,..."conversationCatalog"in j&&j.conversationCatalog?{conversationCatalog:j.conversationCatalog}:{},...m?.length?{pinOverlayPaths:m}:{},complete:j.complete&&k.every(a=>!1!==a.derivationComplete)}}async function a8(a){await (0,aG.b)(a,{persist:!0}),await (0,e.Lh)(),(0,E.Y)(a),await (0,e.pV)(a,a=>{(a.pendingQuestion||a.waitingInput)&&D(a)}),await (0,f.zn)(a),await (0,e.Lh)();try{await (0,i.Km)((a,b)=>(0,g.L5)(c=>{(0,h.UA)(a,c)&&b()}))}catch(a){console.error("[pipelines] skipping embedded review flow reconcile",a)}await (0,e.Lh)(),await (0,h.n6)(a),await (0,e.Lh)(),await aq(a),await (0,e.Lh)(),function(a,b={}){if("1"!==process.env.LLV_ENABLE_AUTO_TASK_INBOX)return;let c=b.now?.()??new Date;if(c.getTime()-J<36e5)return;J=c.getTime();let d=b.stateFile??I,e=function(a=I){try{let b=JSON.parse(m().readFileSync(a,"utf8"));return{lastRunAt:"string"==typeof b.lastRunAt?b.lastRunAt:null,seen:Array.isArray(b.seen)?b.seen.filter(a=>"string"==typeof a):[]}}catch{return{lastRunAt:null,seen:[]}}}(d),f=new Set(e.seen),g=Math.max(c.getTime()-36e5,e.lastRunAt?new Date(e.lastRunAt).getTime():0),h=new Set,i=[];(0,H.z4)(b=>{for(let a of b)a.source?.fingerprint&&h.add(a.source.fingerprint);let c=function(a,b,c){let d=[];for(let e of a.filter(a=>a.path.endsWith(".jsonl")&&("claude"===a.engine||"codex"===a.engine)&&1e3*a.mtime>=b).sort((a,b)=>a.mtime-b.mtime))(0,F.lx)(e.path,e.engine).messages.forEach((a,b)=>{if("user"!==a.role)return;let f=function(a,b,c){var d;let e=K(b.text);return{path:a.path,ts:b.ts,text:e,fingerprint:(d=[a.path,b.ts??String(c),e],k().createHash("sha1").update(d.join("\0")).digest("hex")),engine:"codex"===a.engine?"codex":"claude"}}(e,a,b);if(c.has(f.fingerprint))return;let g=function(a){var b;let c,d,e,f=K(a);return!(c=f.trim())||/^(?:<|Caveat:|\[Request interrupted|This came from another Claude session|# AGENTS\.md instructions)/.test(c)||c.length<18||!L.test(f)?null:((e=(b=function(a){for(let[b,c]of[[/^создал[а]?\s+/iu,"создать "],[/^сделал[а]?\s+/iu,"сделать "],[/^написал[а]?\s+/iu,"написать "],[/^добавил[а]?\s+/iu,"добавить "],[/^исправил[а]?\s+/iu,"исправить "],[/^проверил[а]?\s+/iu,"проверить "],[/^запустил[а]?\s+/iu,"запустить "],[/^подготовил[а]?\s+/iu,"подготовить "],[/^обновил[а]?\s+/iu,"обновить "],[/^реализовал[а]?\s+/iu,"реализовать "]])if(b.test(a))return a.replace(b,c);return a}((d=f.split(/\n\s*\n/,1)[0]??f,(d.match(/^(.{18,}?[.!?。!?])(?:\s|$)/u)?.[1]??d).replace(/\s+/g," ").replace(/[.!?。!?]+$/u,"").trim()).replace(/^(?:я\s+бы\s+хотел(?:а)?|хочу|нужно|надо)(?:,?\s+чтобы\s+ты)?\s+/iu,"").replace(/^(?:пожалуйста|pls|please),?\s+/iu,"").replace(/^(?:i(?:'d| would)\s+like\s+(?:you\s+)?to|can you|could you)\s+/iu,"").trim())).charAt(0))?e.toLocaleUpperCase()+b.slice(1):b).slice(0,96).trim()||null}(f.text);g&&d.push({project:e.project,text:g,source:f,mtime:e.mtime})});return d.slice(-25)}(a,g,new Set([...f,...h])),d=b;for(let a of c){let b=d.filter(b=>b.project===a.project),c=function(a,b,c=[],d={}){var e,f,g,h,i;let j="string"!=typeof(h=b.project)?null:h.trim()||null;if(!j)return{ok:!1,error:"project is required",status:400};let l="string"!=typeof(i=b.text)?null:i.trim()||null;if(!l)return{ok:!1,error:"task text is required",status:400};if(l.length>6e3)return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400};let m="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(m){let b=c.find(a=>a.clientRequestId===m);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 n=!(e=b.pos)||"object"!=typeof e||Array.isArray(e)?null:"number"==typeof e.x&&Number.isFinite(e.x)&&"number"==typeof e.y&&Number.isFinite(e.y)?{x:e.x,y:e.y}:null;if(void 0!==b.pos&&null!==b.pos&&!n)return{ok:!1,error:"invalid task position",status:400};let o=("pinned"===(f=b.placement)||"unplaced"===f?f:null)??(n?"pinned":null);if(void 0!==b.placement&&null===o)return{ok:!1,error:"invalid placement",status:400};if("pinned"===o&&!n)return{ok:!1,error:"task position is required",status:400};if("unplaced"===o&&n)return{ok:!1,error:"unplaced task must not carry a position",status:400};if(null===o)return{ok:!1,error:"task position is required",status:400};let p=function(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"}}(b.dueAt,b.dueTz);if(!p.ok)return{ok:!1,error:p.error,status:400};let q=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,G.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(!q.ok)return q;let r=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===r)return{ok:!1,error:"invalid task source",status:400};if(a.filter(a=>a.project===j).length>=300)return{ok:!1,error:"The project already has 300 tasks. Close or delete extra tasks.",status:409};let s=d.now?.()??new Date().toISOString(),t=d.id?.()??k().randomUUID(),u={id:t,project:j,status:"inbox",text:l,placement:o,..."pinned"===o&&n?{pos:n}:{},...p.dueAt?{dueAt:p.dueAt,dueTz:p.dueTz}:{},...q.attachments?{attachments:q.attachments}:{},...r?{source:r}:{},assignments:[],createdAt:s,updatedAt:s};return{ok:!0,tasks:[...a,u],task:u,recentCreates:m?[...c,{clientRequestId:m,taskId:t}].slice(-100):c,replay:!1}}(d,{project:a.project,text:a.text,pos:function(a){let b,c,d,e,f=new Set;for(let b of a){if(!b.source||!b.pos)continue;let a=function(a){let b=(a.x-740)/300,c=(a.y-120)/120;return!Number.isInteger(b)||b<0||!Number.isInteger(c)||c<0||c>=24?null:48*Math.floor(b/2)+2*c+b%2}(b.pos);null!==a&&f.add(a)}let g=0;for(;f.has(g);)g+=1;return c=Math.floor((b=Math.max(0,Math.floor(g)))/48),e=Math.floor((d=b%48)/2),{x:740+300*c*2+d%2*300,y:120+120*e}}(b),source:a.source});c.ok&&(d=c.tasks,i.push(a.source.fingerprint),f.add(a.source.fingerprint))}return{tasks:d===b?void 0:d,result:void 0}}),function(a,b=I){m().mkdirSync(o().dirname(b),{recursive:!0});let c=o().join(o().dirname(b),`.${o().basename(b)}.${process.pid}.${k().randomUUID()}.tmp`);m().writeFileSync(c,JSON.stringify({lastRunAt:a.lastRunAt,seen:a.seen.slice(-5e3)},null,2)+"\n","utf8"),m().renameSync(c,b)}({lastRunAt:c.toISOString(),seen:[...f,...i]},d)}(a)}},59436:(a,b,c)=>{c.d(b,{Wl:()=>g,cy:()=>e,de:()=>d});let d=10,e=80;function f(a,b){let c=Number(a);return Number.isSafeInteger(c)&&c>0?c:b}function g(a,b,c=function(a=process.env){return{projectCap:f(a.LLV_SCHEME_PROJECT_CAP,d),cardsPerProject:f(a.LLV_SCHEME_CARDS_PER_PROJECT,e)}}(),h={}){let i=h.protect,j=i?new Set(a.filter(i)):null,k=new Set;for(let d of a)if(k.add(b(d)),k.size>=c.projectCap)break;let l=new Map;return a.filter(a=>{if(j?.has(a))return!0;let d=b(a);if(!k.has(d))return!1;let e=l.get(d)??0;return!(e>=c.cardsPerProject)&&(l.set(d,e+1),!0)})}},59988:(a,b,c)=>{c.d(b,{j:()=>e}),c(73024);var d=c(2496);function e(a){return(0,d.fp)(a).replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,"[redacted]").replace(/(^|\n)(\s*(?:proxy-)?authorization\s*:\s*)[^\r\n]*/gi,"$1$2[redacted]").replace(/(^|\n)(\s*(?:set-)?cookie\s*:\s*)[^\r\n]*/gi,"$1$2[redacted]").replace(/\b(?:sk-[A-Za-z0-9_-]{12,}|sk-ant-[A-Za-z0-9_-]{12,}|gh[pousr]_[A-Za-z0-9_]{20,}|github_pat_[A-Za-z0-9_]{20,}|npm_[A-Za-z0-9]{20,}|xox[baprs]-[A-Za-z0-9-]{10,}|AKIA[0-9A-Z]{16}|ASIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{35})\b/g,"[redacted]").replace(/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,"[redacted]").replace(/(?<=Bearer\s)[A-Za-z0-9._-]{12,}/gi,"[redacted]")}},61899:(a,b,c)=>{c.d(b,{ck:()=>g,ve:()=>i,z9:()=>e});let d={claude:["low","medium","high","xhigh","max"],codex:["low","medium","high","xhigh"]};function e(a,b){return d[a].includes(b)}let f=["minimal","low","medium","high","xhigh","max","ultra"];function g(a){return f.includes(a)}let h=[[/^gpt-5\.6-(sol|terra)\b/,["low","medium","high","xhigh","max","ultra"]],[/^gpt-5\.6\b/,["low","medium","high","xhigh","max"]]];function i(a,b){if("claude"===a)return d.claude;if("codex"!==a)return null;let c=(b??"").trim().toLowerCase();for(let[a,b]of h)if(a.test(c))return b;return d.codex}},62e3:(a,b,c)=>{c.d(b,{Y8:()=>u,ZO:()=>N,nd:()=>M});var d=c(73024),e=c.n(d),f=c(51455),g=c(76760),h=c.n(g),i=c(68574),j=c(44237),k=c(54132),l=c(3302),m=c(89831),n=c(24534),o=c(20707),p=c(16777),q=c(69882),r=c(59436),s=c(7058),t=c(76863);function u(a,b){let c=h().relative(a,b).split(h().sep);return 4===c.length&&"tasks"===c[2]&&c[3]?.endsWith(".output")?[c[0]??"",c[1]??"",c[3].slice(0,-7)]:null}let v=-1/0;function w(a){return"object"==typeof a&&null!==a&&"code"in a&&"ENOENT"===a.code}function x(a,b,c){if(w(c))return!0;let d=Date.now();if(d-v>=6e4){v=d;let e=c instanceof Error?`${c.message}${"code"in c&&c.code?` (${String(c.code)})`:""}`:String(c);console.error(`[scanner discovery] ${a} failed for ${b}: ${e}; retaining the last completed scan`)}return!1}function y(a){let b=0,c=[];return async function(d){b>=a&&await new Promise(a=>c.push(a)),b+=1;try{return await d()}finally{b-=1,c.shift()?.()}}}async function z(a,b,c,d){let e;try{e=await d(()=>(0,f.readdir)(c,{withFileTypes:!0}))}catch(a){return{paths:[],complete:x("read directory",c,a)}}let g=await Promise.all(e.map(async e=>e.isDirectory()?e.name.startsWith(".git")||"claude-projects"===a&&"tool-results"===e.name?{paths:[],complete:!0}:z(a,b,h().join(c,e.name),d):e.isFile()&&q.Rg.some(a=>e.name.endsWith(a))?{paths:[{rootName:a,root:b,path:h().join(c,e.name)}],complete:!0}:{paths:[],complete:!0}));return{paths:g.flatMap(a=>a.paths),complete:g.every(a=>a.complete)}}async function A(a,b,c){let d,g=a.path;try{d=await c(()=>(0,f.stat)(g))}catch(a){return{raw:[],complete:x("stat file",g,a)}}if("claude-projects"===a.rootName&&(0,l.a$)(h().relative(b["claude-projects"],g)))return{raw:[],complete:!0};let i="claude-tasks"===a.rootName?u(b["claude-tasks"],g):null;if("claude-tasks"===a.rootName&&!i||0===d.size&&!i)return{raw:[],complete:!0};if(i){let[a,d,f]=i,g=h().join(b["claude-projects"],a,d,"subagents","agent-"+f+".jsonl");try{return await c(()=>e().promises.access(g)),{raw:[],complete:!0}}catch(a){if(!w(a))return{raw:[],complete:x("access task-output twin",g,a)}}}return{raw:[{...a,st:d}],complete:!0}}function B(a){let b=new Map;for(let c of a){let a=h().basename(c.path);if("codex-sessions"!==c.rootName||!a.startsWith("rollout-")||!a.endsWith(".jsonl"))continue;let d=b.get(a);d&&d.root===c.root||b.set(a,c)}return a.filter(a=>{let c=h().basename(a.path);return"codex-sessions"!==a.rootName||!c.startsWith("rollout-")||!c.endsWith(".jsonl")||b.get(c)===a})}async function C(a,b){try{return await b(()=>e().promises.access(a)),{exists:!0,complete:!0}}catch(b){return{exists:!1,complete:x("access root",a,b)}}}function D(a){return Array.isArray(a)?a:Object.entries(a)}function E(a){return(0,t.Ot)(D(a).map(([,a])=>a))}function F(a,b,c,d,e){if(!(0,o.pu)(c))return;let f=e??("1"===process.env.LLV_FILE_SCANNER_WORKER?void 0:k.O);f?.({complete:b,sources:a.map(a=>({path:a.path,project:d?.get(a.path)??a.project,engine:a.engine,size:a.size,mtimeMs:1e3*a.mtime}))})}async function G(a,b,c){let d=await H(a,b),e=Array.isArray(a)?q.GH:a;c&&d.complete&&(c(B(d.paths)),await new Promise(a=>setImmediate(a)));let f=await Promise.all(d.paths.map(a=>A(a,e,b)));return{raw:B(f.flatMap(a=>a.raw)),complete:d.complete&&f.every(a=>a.complete)}}async function H(a,b){let c=await Promise.all(D(a).map(async([a,c])=>{let d=await C(c,b);return d.exists?z(a,c,c,b):{paths:[],complete:d.complete}}));return{paths:c.flatMap(a=>a.paths),complete:c.every(a=>a.complete)}}async function I(a,b){let c=Date.now()-18e4,d=[];for(let e of a){if(d.length>=32)break;if(b.has(e.path)||!e.path.endsWith(".jsonl")||e.st.mtimeMs<=c)continue;let a="codex-sessions"===e.rootName;(0,s.wK)(e.path,e.st.size,e.st.mtimeMs,a)||d.push(e)}let e=!1;return await (0,i.pV)(d,a=>{let b=(0,s.pk)(a.path,a.st.size,a.st.mtimeMs,"codex-sessions"===a.rootName,!1);e||="busy"===b.turn.state}),e}function J(a,b,c){return(0,r.Wl)(a,a=>{let c;return(c=b.get(a.path))&&"other"!==c?c:`unresolved:${h().dirname(a.path)}`},void 0,{protect:a=>(function(a,b){if(b?.has(a.path))return!0;if(!a.path.endsWith(".jsonl"))return!1;let c=(0,s.wK)(a.path,a.st.size,a.st.mtimeMs,"codex-sessions"===a.rootName);return c?.state==="busy"})(a,c)})}async function K(a,b,c,d=[],e=a=>a){let f=new Map(a),g=(0,j.xg)(!0);await (0,i.pV)([...g.projectByPath],([a,b])=>{let c=e(a);f.has(c)&&f.set(c,b)});let h=new Map,k=new Map;return await (0,i.pV)(d,a=>{k.set(a.project,{projectRoot:a.projectRoot,displayName:a.displayName})}),await (0,i.pV)(b,b=>{if(c?.has(b.path))return;let d=f.get(b.path)??b.project,e=a.get(b.path)??b.project,i=k.get(e),j=g.projectMetadataByPath.get(b.path),l=h.get(d)??{project:d,displayName:j?.displayName??i?.displayName??b.projectName,smt:0,conversations:0};l.smt=Math.max(l.smt,b.mtime),l.conversations+=1;let m=j?.projectRoot??i?.projectRoot;!l.projectRoot&&m&&(l.projectRoot=m),h.set(d,l)}),{projectByPath:f,projectCatalog:[...h.values()].sort((a,b)=>b.smt-a.smt||a.project.localeCompare(b.project))}}async function L(a,b,c,d,e,f=a=>a,g){let j=(0,p.g)(),k=(0,t.xe)(c,f),l=(0,t.xe)(d,f);a.sort((a,b)=>b.st.mtimeMs-a.st.mtimeMs);let o=new Map;await (0,i.pV)(a,a=>{if("codex-sessions"!==a.rootName||!a.path.endsWith(".jsonl"))return;let b=(0,m.Gz)(a.path);b&&o.set(b,a)});let q=k?.size?[...a.filter(a=>!k.has(a.path)),...a.filter(a=>k.has(a.path))]:a,r=J(q,b??new Map,g);await I(q,new Set(r.map(a=>a.path)))&&(r=J(q,b??new Map,g));let s=new Set(r.map(a=>a.path)),u=l?.size?new Set(s):void 0,v=l?.size?new Map(a.map(a=>[a.path,a])):null,w=async(a,b)=>{await (0,i.pV)(a,c=>{if("codex-sessions"!==c.rootName||!c.path.endsWith(".jsonl"))return;let d=e?.get(c.path)?.nativeParentThreadId,f=void 0===d?(0,m.S)(c.path,c.st.size,c.st.mtimeMs):d,g=f?o.get(f):void 0;g&&!b.has(g.path)&&(b.add(g.path),a.push(g))})};for(let a of(u&&await w([...r],u),l??[])){if(s.has(a))continue;let b=v?.get(a);b&&(s.add(b.path),r.push(b))}await w(r,s);let x=await (0,i.j0)(r,a=>{let c=e?.get(a.path)??(0,n.q0)(a.rootName,a.root,a.path,a.st,j);return{path:a.path,root:a.rootName,name:h().relative(a.root,a.path),project:b?.get(a.path)??c.project,projectName:c.projectName,projectUnresolved:c.projectUnresolved,worktree:c.worktree,cwd:c.cwd,sessionStartedAt:c.sessionStartedAt,nativeParentThreadId:c.nativeParentThreadId,nativeForkSourceThreadId:c.nativeForkSourceThreadId,projectRoot:c.projectRoot,title:c.title,engine:c.engine,kind:c.kind,fmt:c.fmt,parent:null,mtime:a.st.mtimeMs/1e3,size:a.st.size,activity:"idle",proc:null,pid:null,model:null,pendingQuestion:null,waitingInput:null}}),y=u?r.filter(a=>!u.has(a.path)).map(a=>a.path):[];return{files:x,...y.length?{pinOverlayPaths:y}:{}}}async function M(a=(0,q.s9)(),b,c={}){let d=(0,o.FX)(!1!==c.persist||!0===c.persistIndex),e=y(48),f=await G(a,e,c.onResourceSnapshot?a=>{var b;let d;return c.onResourceSnapshot((b=c.resourceBaseline,d=new Map((b?.files??[]).map(a=>[a.path,a])),{files:a.filter(a=>"claude-tasks"!==a.rootName&&a.path.endsWith(".jsonl")).map(a=>{let b=d.get(a.path),c="codex-sessions"===a.rootName?"codex":"claude",e=b?.mtime??Date.now()/1e3,f=b?.size??1,g=function(a,b,c){let d=Date.now()/1e3-b;if(a?.size===c&&a.mtime===b){if("jsonl_turn_open"===a.activityReason||"jsonl_turn_stalled"===a.activityReason)return d<180?{activity:"live",activityReason:"jsonl_turn_open"}:{activity:"stalled",activityReason:"jsonl_turn_stalled"};if("jsonl_turn_completed"===a.activityReason)return d<900?{activity:"recent",activityReason:"jsonl_turn_completed"}:{activity:"idle",activityReason:"jsonl_turn_completed"}}return d<20?{activity:"live",activityReason:"mtime_fresh"}:d<900?{activity:"recent",activityReason:"mtime_recent"}:{activity:"idle",activityReason:"mtime_old"}}(b,e,f),i=h().basename(a.path);return{path:a.path,root:a.rootName,name:h().relative(a.root,a.path),project:b?.project??"other",projectName:b?.projectName,projectUnresolved:b?.projectUnresolved,cwd:b?.cwd,sessionStartedAt:b?.sessionStartedAt,nativeParentThreadId:b?.nativeParentThreadId,nativeForkSourceThreadId:b?.nativeForkSourceThreadId,projectRoot:b?.projectRoot,worktree:b?.worktree,title:b?.title??(i.startsWith("agent-")?`Subagent ${i.slice(6).split(".")[0]}`:`${"codex"===c?"Codex":"Claude"} session`),engine:c,kind:b?.kind??(i.startsWith("agent-")?"subagent":"session"),fmt:c,parent:b?.parent??null,mtime:e,size:f,...g,proc:b?.proc??null,pid:b?.pid??null,model:null,pendingQuestion:null,waitingInput:null}}),projectCatalog:b?.projectCatalog??[],complete:!0}))}:void 0),g=E(a),i=(0,t.xe)(c.demote??c.loadDemote?.(),g),j=await (0,o.fX)(f.raw,{persist:c.persist,persistIndex:c.persistIndex,excludedSummaryPaths:i,scanToken:d,complete:f.complete}),{projectCatalog:k,projectByPath:l}=await K(j.projectByPath,j.conversationCatalog,i,j.projectCatalog,g),m=await L(f.raw,l,i,c.pin,j.summaryByPath,g,(0,t.xe)(c.hosted,g));return F(j.conversationCatalog,j.complete,d,l,c.transcriptIndexScheduler),{...m,projectCatalog:k,...c.transportConversationCatalog?{conversationCatalog:j.conversationCatalog.map(a=>({...a,project:l.get(a.path)??a.project}))}:{},complete:j.complete}}async function N(a=(0,q.s9)(),b,c,d){let e=(0,o.FX)(!1),f=y(48),g=await G(a,f),h=E(a),i=await (0,o.fX)(g.raw,{persist:!1,scanToken:e,complete:g.complete}),{projectByPath:j}=await K(i.projectByPath,i.conversationCatalog,void 0,i.projectCatalog,h),k=await L(g.raw,j,b,c,i.summaryByPath,h,(0,t.xe)(d,h));return F(i.conversationCatalog,i.complete,e,j),k.files}},62142:(a,b,c)=>{c.d(b,{NU:()=>p,OK:()=>C,WM:()=>D,ZW:()=>B,_1:()=>o,cZ:()=>x,d3:()=>E,dC:()=>m,fm:()=>w,g2:()=>l,ye:()=>n});let d=/^\s*[❯›]/,e=/\? for shortcuts|bypass permissions on|Press up to edit|⏎ send|Context \d+% used/,f=/Resume from summary/,g=/Do you trust|trust this folder|trust the contents of this directory/i,h=/Enter to confirm|Press enter to continue/i,i=/Allow command\?|Do you want to proceed\?|Press enter to approve|approve this (command|action)|\(y\/n\)|Yes, (allow|proceed|run)/i,j=/You(?:'ve| have) (?:hit|reached) (?:your|the) .{0,24}limit|(?:usage|rate).?limit (?:reached|hit|exceeded)|out of (?:quota|credits)|\d+.hour limit reached|limit resets/i,k=new Set(["zsh","bash","fish","sh","dash"]);function l(a){return null!==a&&k.has(a)}function m(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a-=1){let c=b[a]??"";if(d.test(c))return c}return""}function n(a){return f.test(a)?"resume_picker":g.test(a)?"trust_prompt":h.test(a)?"startup_gate":null}function o(a){let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a-=1)if(d.test(b[a]??"")){c=a;break}if(-1!==c){let a=b.slice(c+1).join("\n");if(e.test(a)&&!i.test(a)&&!j.test(a))return null}let f=b.slice(-14).join("\n");return i.test(f)?"approval_prompt":j.test(f)?"rate_limit":null}function p(a,b=Date.now()/1e3){return"rate_limit"!==o(a)?null:{resetAt:function(a,b){let c=/(?:try again|resets?)(?:\s+\w+){0,4}\s+(?:at\s+)?(\d{1,2})(?::(\d{2}))?\s*([ap])\.?m\.?/i.exec(a);if(!c)return null;let d=Number(c[1]),e=Number(c[2]??"0");if(d<1||d>12)return null;let f=d%12+12*(c[3]?.toLowerCase()==="p");if(!Number.isFinite(b)||f<0||f>23||e<0||e>59)return null;let g=new Date(1e3*b),h=new Date(g);return h.setHours(f,e,0,0),h.getTime()<=g.getTime()&&h.setDate(h.getDate()+1),Math.floor(h.getTime()/1e3)}(a.split("\n").slice(-14).join("\n"),b)}}let q=/^\s*❯?\s*\d+\.\s+\S/m,r=/Enter to (select|confirm|submit)/,s=/^\s*[─━—]{6,}\s*$/,t=/[☐☑✔☒]/,u=/^\s*(❯\s*)?(\d{1,2})\.\s+(\S.*)$/,v=/\s*\(Recommended\)\s*$/i;function w(a){let b=a.split("\n").map(a=>a.replace(/\s+$/,"")),c=-1;for(let a=b.length-1;a>=0;a-=1)if(r.test(b[a]??"")){c=a;break}if(-1===c)return null;let d=-1;for(let a=c-1;a>=Math.max(0,c-40);a-=1){let c=u.exec(b[a]??"");if(c&&1===Number(c[2])){d=a;break}}if(-1===d)return null;let e=[];for(let a=d;a<c;a+=1){let c=b[a]??"";if(!c.trim()||s.test(c))continue;let d=u.exec(c);if(d){let a=d[3].trim(),b=a.replace(v,"").trim();e.push({value:Number(d[2]),label:b||a,description:"",recommended:v.test(a)});continue}let f=e[e.length-1];f&&/^\s{2,}\S/.test(c)&&(f.description=f.description?`${f.description} ${c.trim()}`:c.trim())}if(e.length<2||e.some((a,b)=>a.value!==b+1))return null;let f=[],g=d-1;for(;g>=0&&!(b[g]??"").trim();)g-=1;for(let a=g;a>=0&&f.length<8;a-=1){let c=b[a]??"";if(!c.trim()||s.test(c)||t.test(c)||u.test(c))break;f.unshift(c.trim())}let h=f.join(" ").trim();if(!h)return null;let i=[],j=g-f.length;for(;j>=0&&!(b[j]??"").trim();)j-=1;let k=j>=0?b[j]??"":"";if(t.test(k))for(let a of k.replace(/[←→]/g," ").split(/\s{2,}/)){let b=a.replace(/[☐☑✔☒]/g,"").trim();b&&i.push({label:b,done:/[☑✔]/.test(a)})}return{question:h,tabs:i,options:e}}function x(a){if(null!==o(a)||g.test(a))return!0;let b=a.split("\n").slice(-14).join("\n");return q.test(b)&&!e.test(b)}let y=/esc to interrupt|ctrl\+c to (?:stop|cancel)|Interrupting/i,z=/Select login method|Choose (?:a|your) login method|Log in to (?:Claude|continue)|Sign in to (?:Claude|continue)/i,A=/Bypass Permissions mode[\s\S]*(?:accept all responsibility|No, exit)/i;function B(a,b){if("claude"!==a||y.test(b)||D(b))return null;let c=b.split("\n").slice(-20).join("\n");return z.test(c)?{code:"authentication_required",message:"Claude needs account re-login. Open Accounts, sign in, and retry the launch."}:A.test(c)?{code:"bypass_acceptance_required",message:"Claude bypass-permissions acceptance was not prepared. Retry the launch after refreshing the account."}:null}function C(a,b,c){if(B(a,b))return!1;let d=c.split("\n").map(a=>a.trim()).find(Boolean)?.slice(0,32)??"";if(!d)return D(b);if(y.test(b))return!0;let f=m(b);return!(f.includes(d)||f.includes("[Pasted text"))&&""!==f&&e.test(b)}function D(a){if(x(a))return!1;let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a-=1)if(d.test(b[a]??"")){c=a;break}if(-1===c)return!1;let f=b.slice(c+1).join("\n");return e.test(f)&&!y.test(f)}function E(a){return a.split("\n").filter(a=>a.trim()).slice(-3).join(" | ").slice(0,300)}},62862:(a,b,c)=>{c.d(b,{VD:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(14071),i=c(50920),j=c(52114);function k(a){let b=g().resolve(a);try{return e().realpathSync(b)}catch{return b}}function l(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));if(1!==b.version||!b.attempts||"object"!=typeof b.attempts)return new Map;return new Map(Object.entries(b.attempts).filter(a=>{var b;return!!(b=a[1])&&"object"==typeof b&&"string"==typeof b.accountId&&"number"==typeof b.generation&&"number"==typeof b.startedAt&&"number"==typeof b.updatedAt&&("pending"===b.state||"completed"===b.state||"failed"===b.state||"stale"===b.state||"cancelled"===b.state)&&(null===b.reason||"child-died"===b.reason||"login-unsuccessful"===b.reason||"cancelled"===b.reason||"viewer-restarted"===b.reason||"account-read-failed"===b.reason||"start-failed"===b.reason)}))}catch{return new Map}}class m{constructor(a={}){this.active=new Map,this.pendingRecords=new Map,this.recordDrain=null,this.recordRetryTimer=null,this.recordRetryAttempt=0,this.startClient=a.startClient??(a=>j.zC.start({home:a})),this.now=a.now??(()=>Date.now()),this.stateFile=a.stateFile??(0,i.BQ)("codex-login-attempts.json"),this.records=l(this.stateFile)}async startLogin(a){return this.beginLogin(a,!1)}async retryLogin(a){return this.beginLogin(a,!0)}beginLogin(a,b){if("managed"!==a.kind)return Promise.reject(Error("only managed Codex accounts can start an app-server login"));this.records=l(this.stateFile);let c=k(a.home),d=this.active.get(c);if(d&&!b)return d.startPromise;let e=d??null,f=this.records.get(c),g=this.now(),h=Math.max(f?.generation??0,e?.generation??0)+1,i={accountId:a.id,generation:h,state:"pending",startedAt:g,updatedAt:g,reason:null,home:c,client:null,loginId:null,verificationUrl:null,userCode:null,startPromise:null};return this.active.set(c,i),this.record(c,i),i.startPromise=this.launch(a,i,e),i.startPromise}async launch(a,b,c){c&&await this.stopSuperseded(c);try{let c=await this.startClient(a.home);if(!this.owns(b))throw c.close(),Error("a newer managed login owns this Codex home");b.client=c,c.onLifecycle(a=>{"failed"===a.type&&this.settle(b,"failed","child-died",!1)}),c.onNotification(a=>{var c,d;"account/login/completed"===a.method&&(c=a.params,d=b.loginId,c&&"object"==typeof c&&d&&c.loginId===d&&"boolean"==typeof c.success)&&this.settle(b,a.params.success?"completed":"failed",a.params.success?null:"login-unsuccessful",!0)});let d=await c.startDeviceLogin();if(!this.owns(b))throw c.close(),Error("a newer managed login owns this Codex home");return b.loginId=d.loginId,b.verificationUrl=d.verificationUrl,b.userCode=d.userCode,function(a){if(!a.loginId||!a.verificationUrl||!a.userCode)throw Error("managed login challenge is incomplete");return{accountId:a.accountId,loginId:a.loginId,verificationUrl:a.verificationUrl,userCode:a.userCode,startedAt:a.startedAt}}(b)}catch(a){throw this.settle(b,"failed","start-failed",!0),a}}async cancelLogin(a){let b=[...this.active.values()].find(b=>b.accountId===a);if(b)return await this.cancelAttempt(b,"cancelled"),!0;this.records=l(this.stateFile);let c=[...this.records.entries()].find(([,b])=>b.accountId===a);return!!c&&(this.record(c[0],{...c[1],state:"cancelled",updatedAt:this.now(),reason:"cancelled"}),!0)}async cancelAttempt(a,b){if(!this.owns(a))return;let c=a.client;if(this.settle(a,"cancelled",b,!1),!c)return void await a.startPromise.catch(()=>void 0);if(!a.loginId){c.close(),await a.startPromise.catch(()=>void 0);return}try{await c.cancelLogin(a.loginId)}catch{}finally{c.close()}}async stopSuperseded(a){let b=a.client;if(!b||!a.loginId)return void b?.close();try{await b.cancelLogin(a.loginId)}catch{}finally{b.close()}}async loginSnapshot(a){if("managed"!==a.kind)return{state:a.authPresent?"authenticated":"idle",attemptState:null,deviceAuth:null};let b=k(a.home),c=this.active.get(b),d=l(this.stateFile).get(b);try{let e=await this.readAccount(c?.client??null,a.home);if(n(e))return c?this.settle(c,"completed",null,!0):d&&this.record(b,{...d,state:"completed",updatedAt:this.now(),reason:null}),{state:"authenticated",attemptState:"completed",deviceAuth:null};if(c?.state==="pending"&&c.verificationUrl&&c.userCode)return{state:"pending",attemptState:"pending",deviceAuth:{url:c.verificationUrl,code:c.userCode}};if(d?.state==="pending"){let a={...d,state:"stale",updatedAt:this.now(),reason:"viewer-restarted"};return this.record(b,a),{state:"stale",attemptState:"stale",deviceAuth:null}}return d?{state:d.state,attemptState:d.state,deviceAuth:null}:{state:"idle",attemptState:null,deviceAuth:null}}catch{let a=d??c;if(a){let d={...a,state:"stale",updatedAt:this.now(),reason:"account-read-failed"};this.settle(c??null,"stale","account-read-failed",!0),c||this.record(b,d)}return{state:"stale",attemptState:"stale",deviceAuth:null}}}peekLogin(a){return this.peekLoginFrom(a,l(this.stateFile))}peekLogins(a){let b=l(this.stateFile);return new Map(a.map(a=>[a.id,this.peekLoginFrom(a,b)]))}peekLoginFrom(a,b){if("managed"!==a.kind)return{state:a.authPresent?"authenticated":"idle",attemptState:null,deviceAuth:null};let c=k(a.home),d=this.active.get(c),e=b.get(c);return e?.state==="pending"&&d?.state==="pending"&&d.verificationUrl&&d.userCode?{state:"pending",attemptState:"pending",deviceAuth:{url:d.verificationUrl,code:d.userCode}}:e?{state:e.state,attemptState:e.state,deviceAuth:null}:d?.state==="pending"?{state:"pending",attemptState:"pending",deviceAuth:null}:{state:"idle",attemptState:null,deviceAuth:null}}async readRateLimits(a){return(await this.probeQuota(a)).rateLimits}async verifyAuthentication(a){return(await this.probeQuota(a)).authenticated}async probeQuota(a){let b=this.active.get(k(a.home));if(b?.client)return this.probeQuotaFrom(b.client);let c=await this.startClient(a.home);try{return await this.probeQuotaFrom(c)}finally{c.close()}}async readAccount(a,b){if(a)return a.readAccount();let c=await this.startClient(b);try{return await c.readAccount()}finally{c.close()}}async probeQuotaFrom(a){let b=await a.readAccount();return{account:b,rateLimits:(await a.readRateLimits()).rateLimits,authenticated:n(b),envelope:a.inboundEnvelope()}}owns(a){return this.active.get(a.home)?.generation===a.generation}settle(a,b,c,d){if(!a||!this.owns(a))return;this.active.delete(a.home);let e={...a,state:b,updatedAt:this.now(),reason:c};try{this.record(a.home,e)}catch{this.queueRecord(a.home,e)}finally{d&&a.client?.close()}}record(a,b){try{(0,h.oV)(()=>this.writeRecords(new Map([[a,b]])))}catch(c){if(!(c instanceof h.gB))throw c;this.queueRecord(a,b)}}writeRecords(a){this.records=l(this.stateFile);let b=!1;for(let[c,d]of a){let a=this.records.get(c);a&&a.generation>d.generation||(this.records.set(c,{accountId:d.accountId,generation:d.generation,state:d.state,startedAt:d.startedAt,updatedAt:d.updatedAt,reason:d.reason}),b=!0)}if(!b)return;let c={version:1,attempts:Object.fromEntries(this.records)},d=g().dirname(this.stateFile),f=g().join(d,`.${g().basename(this.stateFile)}.${process.pid}.${Date.now()}.tmp`);try{e().mkdirSync(d,{recursive:!0,mode:448}),e().writeFileSync(f,JSON.stringify(c,null,2)+"\n",{mode:384}),e().renameSync(f,this.stateFile)}finally{e().rmSync(f,{force:!0})}}queueRecord(a,b){let c=this.pendingRecords.get(a);(!c||c.generation<=b.generation)&&this.pendingRecords.set(a,b),this.startRecordDrain()}startRecordDrain(){if(this.recordDrain||this.recordRetryTimer)return;let a=(async()=>{for(;this.pendingRecords.size>0;){let a=new Map(this.pendingRecords);for(let[b,c]of(await (0,h.Cu)(async()=>this.writeRecords(a)),a))this.pendingRecords.get(b)===c&&this.pendingRecords.delete(b)}})();this.recordDrain=a,a.then(()=>{this.recordDrain=null,this.recordRetryAttempt=0,this.pendingRecords.size>0&&this.startRecordDrain()},()=>{this.recordDrain=null,this.recordRetryAttempt+=1;let a=Math.min(100*2**Math.min(this.recordRetryAttempt-1,8),3e4);(1===this.recordRetryAttempt||(this.recordRetryAttempt&this.recordRetryAttempt-1)==0)&&console.error(`[codex accounts] Codex login outcome persistence failed; retry ${this.recordRetryAttempt} in ${a}ms`),this.recordRetryTimer=setTimeout(()=>{this.recordRetryTimer=null,this.startRecordDrain()},a),this.recordRetryTimer.unref?.()})}}function n(a){return a.account?.type==="chatgpt"}let o=null;function p(){return o??=new m}},65377:(a,b,c)=>{c.d(b,{Cy:()=>d,Fd:()=>e});let d="WAKATIME_API_KEY";function e(a){let b={};for(let c of Object.keys(a))c!==d&&(b[c]=a[c]);return b}},65465:(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(50920),k=c(79866),l=c(69611);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"].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.V5)(e)??a.get(e),f=b?(0,l.im)(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"].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}}},65862:(a,b,c)=>{c.d(b,{Lu:()=>g,s_:()=>f,wL:()=>e});var d=c(77598);function e(a){return{perTurnEffort:"codex"===a,perTurnModel:!1}}function f(a){return"codex"===a?{control:"compact",engine:a,supported:!0}:{control:"compact",engine:a,supported:!1,reason:"The Claude stream-json protocol has no client-originated compact control; only interrupt is exposed."}}function g(){return`op_${(0,d.randomUUID)()}`}},67852:(a,b,c)=>{c.d(b,{JN:()=>i,NN:()=>n,ZD:()=>p,f$:()=>m,wi:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g);function i(a,b){let c="head"===b?["rev-parse","HEAD"]:["merge-base","HEAD",function(a){let b=(0,d.spawnSync)("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:a,encoding:"utf8"});if(0===b.status&&b.stdout.trim())return b.stdout.trim().replace(/^origin\//,"origin/");for(let b of["origin/main","origin/master","main","master"])if(0===(0,d.spawnSync)("git",["rev-parse","--verify",b],{cwd:a,encoding:"utf8"}).status)return b;return null}(a)??"origin/main"],e=(0,d.spawnSync)("git",c,{cwd:a,encoding:"utf8"});if(0!==e.status)return{ok:!1,error:(e.stderr||e.stdout||"failed to resolve git base ref").trim()};let f=e.stdout.trim();return f?{ok:!0,sha:f}:{ok:!1,error:"git returned an empty base ref"}}function j(a){let b=a.trim().replace(/\.git$/,""),c=RegExp(String.raw`^(?:ssh:\/\/)?git`+"@"+String.raw`github\.com[:/]([^/]+\/[^/]+)$`).exec(b);if(c)return c[1]??null;try{let a=new URL(b);if("github.com"!==a.hostname)return null;let c=a.pathname.replace(/^\//,"");return/^[^/]+\/[^/]+$/.test(c)?c:null}catch{return null}}let k=globalThis,l=k.__llvRepositoryCache??=new Map;function m(a,b=Date.now()){let c=l.get(a);if(c&&b-c.at<6e5)return c.repository;let d=null;try{let b=function(a){let b,c=function(a){let b=h().join(a,".git");try{let c=f().lstatSync(b);if(c.isDirectory())return b;if(!c.isFile())return null;let d=f().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+)\s*$/im.exec(d);return e?.[1]?h().resolve(a,e[1]):null}catch{return null}}(a);if(!c)return null;try{b=f().readFileSync(h().join(function(a){try{let b=f().readFileSync(h().join(a,"commondir"),"utf8").trim();return b?h().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=!1;for(let a of b.split(/\r?\n/)){let b=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(a);if(b){d="origin"===b[1];continue}if(/^\s*\[/.test(a)){d=!1;continue}if(!d)continue;let c=/^\s*url\s*=\s*(.*?)\s*$/i.exec(a)?.[1],e=c?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(a);b&&(d=j(b))}catch{d=null}return l.set(a,{repository:d,at:b}),d}function n(a){let b=(0,d.spawnSync)("git",["remote","get-url","origin"],{cwd:a,encoding:"utf8"}),c=(0,d.spawnSync)("git",["branch","--show-current"],{cwd:a,encoding:"utf8"}),e=(0,d.spawnSync)("git",["rev-parse","HEAD"],{cwd:a,encoding:"utf8"});if(0!==b.status||0!==c.status||0!==e.status)return null;let f=j(b.stdout),g=c.stdout.trim(),h=e.stdout.trim();return f&&g&&/^[0-9a-f]{40}$/i.test(h)?{repository:f,headRef:g,headSha:h}:null}function o(a){let b=(0,d.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a,encoding:"utf8",timeout:2e3});if(0!==b.status||b.stdout.trim())return null;let c=(0,d.spawnSync)("git",["rev-parse","HEAD"],{cwd:a,encoding:"utf8",timeout:2e3}),e=c.stdout.trim();return 0===c.status&&/^[0-9a-f]{40}$/i.test(e)?e:null}function p(a,b){let c=(0,d.spawnSync)("git",["ls-remote","--heads","origin",`refs/heads/${b}`],{cwd:a,encoding:"utf8",timeout:5e3});if(0!==c.status)return null;let e=c.stdout.trim().split(/\s+/)[0]??"";return/^[0-9a-f]{40}$/i.test(e)?e:null}},68574:(a,b,c)=>{c.d(b,{Lh:()=>e,j0:()=>g,pV:()=>f});var d=c(643);function e(){return new Promise(a=>setImmediate(a))}async function f(a,b,c={}){let g=Math.max(1,Math.floor(c.batchSize??16)),h=Math.max(1,c.timeBudgetMs??32),i=d.performance.now(),j=0;for(let c=0;c<a.length;c+=1)await b(a[c],c),j+=1,!(c+1>=a.length)&&(j<g&&d.performance.now()-i<h||(await e(),i=d.performance.now(),j=0))}async function g(a,b,c={}){let d=Array(a.length);return await f(a,async(a,c)=>{d[c]=await b(a,c)},c),d}},68822:(a,b,c)=>{c.d(b,{h6:()=>t,z4:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(65465),l=c(53410),m=c(70395);let n=(0,j.BQ)("tasks.json");function o(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 p(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)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function q(a){return"pinned"===a||"unplaced"===a||"auto"===a}function r(a){var b,c,d;let e,f;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.placement||q(a.placement))&&(void 0===a.pos||o(a.pos))&&(e=void 0!==a.dueAt,f=void 0!==a.dueTz,!e&&!f||"string"==typeof a.dueAt&&"string"==typeof a.dueTz)&&(void 0===(c=a.attachments)||Array.isArray(c)&&c.every(m.tK))&&Array.isArray(a.assignments)&&a.assignments.every(p)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt))return null;let g=o(a.pos),h=q(a.placement)?a.placement:g?"pinned":"unplaced";return{id:a.id,project:(0,k.G$)(a.project),status:a.status,text:a.text,placement:"pinned"!==h||g?h:"unplaced",..."pinned"===h&&g?{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}:{},createdAt:a.createdAt,updatedAt:a.updatedAt}}function s(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.clientRequestId&&"string"==typeof a.taskId}function t(a=n){return u(a).tasks}function u(a=n){let b=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(a);return{tasks:Array.isArray(b?.tasks)?b.tasks.map(r).filter(a=>null!==a):[],recentCreates:Array.isArray(b?.recentCreates)?b.recentCreates.filter(s):[]}}function v(a,b=n){return(0,l.Ol)(b,"task state is busy",()=>{var c;let d,f=u(b),h=a(f.tasks);return h.tasks&&(c=f.recentCreates.length?{tasks:h.tasks,recentCreates:f.recentCreates}:{tasks:h.tasks},g().mkdirSync(i().dirname(b),{recursive:!0}),d=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),g().writeFileSync(d,JSON.stringify(c,null,2)+"\n","utf8"),g().renameSync(d,b)),h.result})}},69611:(a,b,c)=>{c.d(b,{MO:()=>m,Mv:()=>l,NP:()=>p,V5:()=>t,Xe:()=>o,im:()=>u,rj:()=>q,z:()=>n});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,f=e().createHash("sha256").update(`dir:${b}`).digest("hex").slice(0,32);return{project:`dir-${f}`,displayName:d}}function q(a){return a===l?m:a}function r(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function s(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return r(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 r(f)?f:null}catch{return null}}function t(a){let b=k().resolve(a);for(;;){if(s(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function u(a){let b,c=s(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),f=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),h=d?function(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}`}}(d,a):`local:${f}`,i=h&&h.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!h||!i)return null;let j=e().createHash("sha256").update(h).digest("hex").slice(0,32);return{project:`repo-${j}`,displayName:i,canonicalRemote:h}}},69882:(a,b,c)=>{let d,e,f;c.d(b,{Bz:()=>s,EG:()=>v,GH:()=>q,Ps:()=>w,Rg:()=>t,s9:()=>r});var g=c(73024),h=c.n(g),i=c(48161),j=c.n(i),k=c(76760),l=c.n(k),m=c(10456),n=c(53133),o=c(59436);let p=j().homedir(),q={"codex-sessions":l().join(p,".codex/sessions"),"claude-projects":l().join(p,".claude/projects"),"claude-tasks":(d=process.getuid?.()??1e3,e=l().join(j().tmpdir(),"claude-"+d),e===(f="/tmp/claude-"+d)||h().existsSync(e)?e:h().existsSync(f)?f:e)};function r(){let a=[...(0,m.vD)().map(a=>["codex-sessions",a]),...(0,n.pW)().map(a=>["claude-projects",a]),["claude-tasks",q["claude-tasks"]]],b=new Set;return a.filter(([,a])=>{let c=u(a)??l().resolve(a);return!b.has(c)&&(b.add(c),!0)})}function s(a){for(let b of(0,n.pW)())try{let c=h().realpathSync(a),d=h().realpathSync(b);if(c.startsWith(d+l().sep))return b}catch{}return null}let t=[".log",".jsonl",".output",".txt"];function u(a){try{return h().realpathSync(a)}catch{return null}}function v(a){let b=u(a);return!!b&&r().some(([,a])=>{let c=u(a);return null!==c&&b.startsWith(c+l().sep)})}function w(a){for(let b of(0,m.vD)())try{let c=h().realpathSync(a),d=h().realpathSync(b);if(c.startsWith(d+l().sep))return b}catch{continue}return null}o.de,o.cy},70154:(a,b,c)=>{c.d(b,{lx:()=>s,vK:()=>x,x_:()=>y});var d=c(77598),e=c(73024),f=c.n(e),g=c(68574),h=c(94284);function i(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function j(a){return Array.isArray(a)?a.filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)):[]}function k(a){return"string"==typeof a?a:""}function l(a){return k(a.timestamp)||k(a.ts)||null}function m(a,b=8388608){let c;try{let d=f().statSync(a),e=Math.max(0,d.size-b),g=f().openSync(a,"r");try{let a=Buffer.alloc(d.size-e);f().readSync(g,a,0,a.length,e),c=a.toString("utf8")}finally{f().closeSync(g)}e>0&&(c=c.slice(c.indexOf("\n")+1))}catch{return[]}let d=[];for(let a of c.split("\n")){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&d.push(a)}catch{}}return d}function n(a){return"string"==typeof a?a:j(a).map(a=>"text"===a.type||"input_text"===a.type||"output_text"===a.type?k(a.text):"thinking"===a.type?k(a.thinking):"tool_use"===a.type?`${k(a.name)} ${JSON.stringify(i(a.input))}`.trim():"tool_result"===a.type?n(a.content)||k(a.tool_use_id):"").filter(Boolean).join("\n").trim()}function o(a){return j(a).some(a=>"tool_result"===a.type)}function p(a){let b=a.origin;if("system"===a.promptSource&&"task-notification"===i(b).kind||"task"===b||"task"===i(b).kind)return!0;let c=n(i(a.message).content).trim();return/^<task-notification(?:\s[^>]*)?>[\s\S]*<\/task-notification>$/.test(c)}function q(a,b){b.text.trim()&&("message"===b.kind?a.messages.push(b):"reasoning"===b.kind?a.reasoning.push(b):"tool_call"===b.kind||"tool_result"===b.kind?a.tools.push(b):a.traces.push(b))}function r(a){let b=k(a.type);return"user_message"===b?{role:"user",text:k(a.message)}:"agent_message"===b?{role:"assistant",text:k(a.message)}:"message"===b?{role:"assistant"===a.role?"assistant":"user"===a.role?"user":"system",text:n(a.content)||k(a.message)}:null}function s(a,b){return"claude"===b?function(a){let b={path:a,engine:"claude",messages:[],reasoning:[],tools:[],traces:[]};for(let c of m(a)){let a=l(c);if("user"===c.type){let d=i(c.message).content;if(p(c)){q(b,{kind:"trace",role:"system",ts:a,name:"task-notification",text:n(d)});continue}if(o(d)){for(let c of j(d))"tool_result"===c.type&&q(b,{kind:"tool_result",role:"tool",ts:a,text:n(c.content)||k(c.tool_use_id)});continue}q(b,{kind:"message",role:"user",ts:a,text:n(d)});continue}if("assistant"===c.type){for(let d of j(i(c.message).content))"text"===d.type?q(b,{kind:"message",role:"assistant",ts:a,text:k(d.text)}):"thinking"===d.type?q(b,{kind:"reasoning",role:"assistant",ts:a,text:k(d.thinking)}):"tool_use"===d.type?q(b,{kind:"tool_call",role:"assistant",ts:a,name:k(d.name),text:JSON.stringify(i(d.input))}):"tool_result"===d.type&&q(b,{kind:"tool_result",role:"tool",ts:a,text:n(d.content)||k(d.tool_use_id)});continue}("summary"===c.type||"compact"===c.type)&&q(b,{kind:"trace",role:"system",ts:a,name:k(c.type),text:n(c.summary)||JSON.stringify(c)})}return b}(a):function(a){let b={path:a,engine:"codex",messages:[],reasoning:[],tools:[],traces:[]};for(let d of m(a)){let a=l(d),e=i(d.payload),f=k(e.type),g=r(e);if(g){q(b,{kind:"message",role:g.role,ts:a,phase:k(e.phase)||void 0,text:g.text});continue}if("reasoning"===f||"reasoning_delta"===f){q(b,{kind:"reasoning",role:"assistant",ts:a,text:k(e.text)||k(e.message)});continue}if("response_item"===d.type){var c;let d=(c=e.item)&&"object"==typeof c&&!Array.isArray(c)?c:null,f=d&&k(d.type)?d:e,g=k(f.type);if("function_call"===g||"custom_tool_call"===g){let c=k(f.name);q(b,{kind:"tool_call",role:"assistant",ts:a,...c?{name:c}:{},text:k(f.arguments)||k(f.input)||JSON.stringify(f)})}else if("function_call_output"===g||"custom_tool_call_output"===g){let c=k(f.name);q(b,{kind:"tool_result",role:"tool",ts:a,...c?{name:c}:{},text:n(f.output)||JSON.stringify(f)})}else g&&q(b,{kind:"trace",role:"system",ts:a,name:g,text:JSON.stringify(f)});continue}f&&q(b,{kind:"trace",role:"system",ts:a,name:f,text:JSON.stringify(e)})}return b}(a)}let t=(0,h.E)("authorship-scan-checkpoint-v1");function u(a,b,c){let d=c?.count??0,e=c?.parseComplete??!0,f=c?.skippingRecord??!1,g=c?.carry.length?[Buffer.from(c.carry)]:[],h=c?.carry.length??0,j=b=>{let c=b.toString("utf8").trim();if(!c)return!1;try{let b=JSON.parse(c);return!!(b&&"object"==typeof b&&!Array.isArray(b)&&function(a,b){if("claude"===b){if("user"!==a.type||p(a))return!1;let b=i(a.message).content;return!o(b)&&!!n(b).trim()}let c=r(i(a.payload));return c?.role==="user"&&!!c.text.trim()}(b,a))}catch{return e=!1,!1}},k=()=>{g=[],h=0,f=!1};return{consume(a){let c=0;for(;c<=a.length;){let i=a.indexOf(10,c);if(-1===i){let b=a.length-c;!f&&b>0&&(h+b>8388608?(g=[],h=0,f=!0,e=!1):(g.push(Buffer.from(a.subarray(c))),h+=b));break}if(!f){let f=a.subarray(c,i);if(h+f.length>8388608)e=!1;else if(j(h?Buffer.concat([...g,f]):f)&&(d+=1)>=b)return k(),!0}k(),c=i+1}return!1},finish:()=>(!f&&h>0&&j(Buffer.concat(g))&&(d+=1),{count:d,complete:e}),result:()=>({count:d,complete:e}),failed:()=>({count:d,complete:!1}),state:()=>({count:d,carry:h?Buffer.concat(g):Buffer.alloc(0),skippingRecord:f,parseComplete:e})}}function v(a){return(0,d.createHash)("sha256").update(a).digest("base64url")}function w(a,b){return Math.min((a.maxBytes??1/0)-b,void 0===a.budget?1/0:a.budget.remaining)}async function x(a,b,c=Number.MAX_SAFE_INTEGER,d={}){let e=null,h=0,i=a=>{h+=a,d.budget&&(d.budget.remaining-=a)};try{e=await f().promises.open(a,"r");let j=await e.stat(),k=d.resume?t.get(a):void 0;if(k){let b=j.size>k.size,c=k.validatedGrowth?.size===j.size&&k.validatedGrowth.mtimeMs===j.mtimeMs,f=k.dev===j.dev&&k.ino===j.ino&&j.size>=k.offset&&j.size>=k.size&&(j.size!==k.size||j.mtimeMs===k.mtimeMs)&&(!b||c||!!k.prefixSegments?.length);if(f&&b&&!c){let a=k.validation?.size===j.size&&k.validation.mtimeMs===j.mtimeMs?k.validation.index:0,b=k.prefixSegments??[];for(;a<b.length&&f;){let c=b[a];if(d.signal?.aborted||w(d,h)<c.length)return k.validation={size:j.size,mtimeMs:j.mtimeMs,index:a},{count:k.count,complete:!1};let g=Buffer.allocUnsafe(c.length),{bytesRead:l}=await e.read(g,0,g.length,c.offset);i(l),f=l===g.length&&v(g)===c.fingerprint,a+=1}if(f){let a=await e.stat();(f=a.dev===j.dev&&a.ino===j.ino&&a.size===j.size&&a.mtimeMs===j.mtimeMs)&&(k.validation=null,k.validatedGrowth={size:j.size,mtimeMs:j.mtimeMs})}}if(f&&k.headBytes>0){if(d.signal?.aborted||w(d,h)<k.headBytes)return{count:k.count,complete:!1};let a=Buffer.allocUnsafe(k.headBytes),b=0;for(;b<a.length;){let{bytesRead:c}=await e.read(a,b,a.length-b,b);if(0===c)break;b+=c}i(b),f=b===a.length&&v(a)===k.headFingerprint}if(f&&k.boundaryBytes>0&&k.boundaryOffset>0){if(d.signal?.aborted||w(d,h)<k.boundaryBytes)return{count:k.count,complete:!1};let a=Buffer.allocUnsafe(k.boundaryBytes),b=0;for(;b<a.length;){let{bytesRead:c}=await e.read(a,b,a.length-b,k.boundaryOffset+b);if(0===c)break;b+=c}i(b),f=b===a.length&&v(a)===k.boundaryFingerprint}f||(t.delete(a),k=void 0)}if(k&&k.count>=c||k?.done&&k.size===j.size&&k.mtimeMs===j.mtimeMs)return{count:k.count,complete:k.parseComplete};let l=u(b,c,k??void 0),m=k?.offset??0,n=k?.headBytes??0,o=k?.headFingerprint??"",p=k?.boundaryOffset??0,q=k?.boundaryBytes??0,r=k?.boundaryFingerprint??"",s=k?.prefixSegments??[],x=b=>{if(!d.resume)return;let c=l.state();t.set(a,{dev:j.dev,ino:j.ino,size:j.size,mtimeMs:j.mtimeMs,offset:m,carry:c.carry,skippingRecord:c.skippingRecord,count:c.count,parseComplete:c.parseComplete,headBytes:n,headFingerprint:o,boundaryOffset:p,boundaryBytes:q,boundaryFingerprint:r,prefixSegments:s,validation:null,validatedGrowth:null,done:b})},y=Buffer.allocUnsafe(65536),z=0;for(;;){if(d.signal?.aborted)return x(!1),l.failed();let a=w(d,h);if(a<=0)return x(!1),l.failed();let{bytesRead:b}=await e.read(y,0,Math.min(y.length,a),m);if(0===b)break;if(i(b),0===m&&0===n&&(n=Math.min(b,65536),o=v(y.subarray(0,n))),q=Math.min(b,65536),p=m+b-q,r=v(y.subarray(b-q,b)),s.push({offset:m,length:b,fingerprint:v(y.subarray(0,b))}),m+=b,l.consume(y.subarray(0,b)))return x(!1),l.result();(z+=1)>=8&&(z=0,await (0,g.Lh)())}let A=l.finish();return x(!0),A}catch{return{count:0,complete:!1}}finally{await e?.close().catch(()=>void 0)}}function y(a,b){return function(a,b,c=Number.MAX_SAFE_INTEGER){return function(a,b,c=Number.MAX_SAFE_INTEGER){let d=null,e=u(b,c);try{d=f().openSync(a,"r");let b=Buffer.allocUnsafe(65536);for(;;){let a=f().readSync(d,b,0,b.length,null);if(0===a)break;if(e.consume(b.subarray(0,a)))return e.result()}return e.finish()}catch{return e.failed()}finally{null!==d&&f().closeSync(d)}}(a,b,c).count}(a,b,1)>0}},70395:(a,b,c)=>{c.d(b,{tK:()=>f}),c(77598),c(73024),c(76760),c(50920);var d=c(7461);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}},71256:(a,b,c)=>{c.r(b),c.d(b,{deliverHeldStructuredMessage:()=>K,enqueueStructuredMessage:()=>L});var d=c(77598),e=c.n(d),f=c(55883),g=c(29966),h=c(14071),i=c(4406),j=c(74030),k=c(88602),l=c(873),m=c(58874),n=c(36855),o=c(25695),p=c(88417),q=c(96694);let r=process;function s(){r.__llvStructuredHostStartupFailed=!1;var a={...r.__llvStructuredHostStartupProgress??{state:"pending",phase:"waiting for structured startup",completedHosts:0,totalHosts:null,updatedAt:new Date().toISOString()},phase:"ready"};if(!Number.isSafeInteger(a.completedHosts)||a.completedHosts<0)throw Error("structured host startup completed count is invalid");if(null!==a.totalHosts&&(!Number.isSafeInteger(a.totalHosts)||a.totalHosts<a.completedHosts))throw Error("structured host startup total count is invalid");r.__llvStructuredHostStartupProgress={...a,state:"ready",updatedAt:new Date().toISOString()}}let t=new Map;async function u(a,b){if(!a)return b();let c=(t.get(a)??Promise.resolve()).catch(()=>{}).then(b);t.set(a,c);try{return await c}finally{t.get(a)===c&&t.delete(a)}}function v(){return{ok:!1,structured:!0,outcome:"failed",error:"structured host ownership is unavailable; retry after runtime synchronization",status:503}}function w(){return{ok:!1,structured:!0,outcome:"failed",error:"legacy delivery cannot preserve structured command semantics",status:409}}function x(a,b){return b?.supersededBy?{ok:!1,structured:!0,outcome:"failed",error:"superseded",status:409,successorConversationId:a.supersedenceChainTail(b.id)}:null}function y(a){return void 0!==a.operationId||(a.kind??"send")!=="send"||(a.policy??"interrupt-active")!=="interrupt-active"||void 0!==a.turnId}function z(a){let b=a.command;return void 0!==b&&(b.operationId!==a.deliveryId||"send"!==b.kind||"interrupt-active"!==b.policy||void 0!==b.turnId)}function A(a){return{ok:!1,structured:!0,outcome:"failed",error:a instanceof Error?a.message:"structured host delivery failed",status:a instanceof f.ph?409:a instanceof p.Hy?413:503,...(0,k.o7)(a)?{transportUncertain:!0}:{}}}function B(a){return{...a.operationId?{operationId:a.operationId}:{},...a.kind?{kind:a.kind}:{},...a.policy?{policy:a.policy}:{},...void 0!==a.turnId?{turnId:a.turnId}:{},...a.origin?{origin:a.origin}:{}}}function C(a,b){let c=a.conversationId?.startsWith("conversation_")?b.conversation(a.conversationId):b.conversationForPath(a.path),d=c?.generations.at(-1);if(!c||!d)return null;let e=b.readOnlySnapshot().entries[`${c.engine}:${d.id}`];if(!e||e.artifactPath!==d.path)return null;let f=null!==e.structuredHost&&void 0!==e.structuredHost;return f===(null!==e.host)?null:{kind:f?"structured":"legacy",conversation:c}}function D(a,b){return C(a,b)?.kind!=="legacy"?"delivery-uncertain":z(a)?"failed":null}function E(a,b,c){let d=C(a,b),f=a.conversationId?.startsWith("conversation_")?b.conversation(a.conversationId):b.conversationForPath(a.path),g=f?.generations.at(-1),h=f?b.engineRouting(f.engine).activeAccountId:null,i=!d&&null!=f&&g?.accountId!==null&&g?.accountId!==void 0&&null!==h&&g.accountId!==h;if(!d&&!i)return v();let j=d?.conversation??f,k=x(b,j);if(k)return k;if(d?.kind==="legacy")return y(a)?w():null;let l=j;if(a.hasImages||a.images?.length)return{ok:!1,structured:!0,outcome:"failed",error:"structured host image delivery is unavailable",status:409};try{(0,p.h1)(a.text);let d=a.clientMessageId?.trim()||`queue_${e().randomUUID()}`,f=a.imageRefs??[];if(!a.text&&0===f.length)throw Error("held delivery must contain at most 32000 characters");let g=f.length?(0,p.rM)(a.text,f):null,h=g?.content.text??a.text,i=g?.contentDigest??null,j=f.length?"runtime-images":"text",k=b.preflightDeliveryReservation(l.id,h,d,j,f,i,B(a));if(k?.state==="delivered")return J(k,d,l.id,!1);if(k?.state==="failed")return{ok:!1,structured:!0,outcome:"failed",error:k.error||"delivery target is unavailable",status:409};let m=l.generations.at(-1),n=b.engineRouting(l.engine).activeAccountId;n&&m?.accountId&&m.accountId!==n&&(l=b.requestConversationMigrationToActiveAccount(l.id));let o=b.holdDelivery(l.id,h,d,j,f,i,B(a));if("delivered"===o.state)return J(o,d,l.id,!1);if("failed"===o.state)return{ok:!1,structured:!0,outcome:"failed",error:o.error||"delivery target is unavailable",status:409};return c(),{ok:!0,structured:!0,target:l.id,outcome:"held"}}catch(a){return A(a)}}function F(a,b){a.sessions.some(a=>"codex-app-server"===a.hostKind||"claude-broker"===a.hostKind)&&b()}async function G(a,b,c){if("dead"!==a.host&&"unhosted"!==a.host||!await c(a.sessionKey))return{session:a,republished:!1};let d=await b.snapshot();return{session:d.sessions.find(b=>b.conversationId===a.conversationId)??d.sessions.find(b=>b.artifactPath===a.artifactPath)??a,republished:!0}}async function H(a,b){let c=b.generations.at(-1);try{return(await a.snapshot()).sessions.find(a=>a.conversationId===b.id&&(!c||a.artifactPath===c.path))??null}catch{return null}}function I(a,b,c){let d=a.conversation(b)?.migration?.phase;d&&!["committed","rolled-back"].includes(d)&&c()}function J(a,b,c,d){let e={operationId:a.command.operationId,idempotencyKey:b,conversationId:a.runtimeConversationId,kind:a.command.kind,status:"delivered",...void 0!==a.command.turnId?{turnId:a.command.turnId}:{},reason:null,at:a.deliveredAt??a.createdAt,revision:1};return{ok:!0,structured:!0,target:c,outcome:"delivered",operationId:a.command.operationId,receipt:e,...d?{spawned:!0}:{}}}async function K(a,b={}){let c;if(!(b.enabled??g.cM)())return null;let d=(b.registry??f.tk)(),e=(b.client??k.sS)();if(!e)return D(a,d);try{c=await e.snapshot()}catch(b){return console.error("[structured delivery] runtime snapshot failed",b),D(a,d)}F(c,b.startupRecovered??s);let h=c.sessions.find(b=>b.conversationId===a.conversationId)??c.sessions.find(b=>b.artifactPath===a.path);if(!h){if(C(a,d)?.kind!=="structured")return D(a,d);try{return await (b.recover??m.recoverDeadStructuredConversation)({path:a.path,conversationId:a.conversationId},{registry:d,client:e,requestDeliveryDrain:()=>{(b.kick??q.l)()}})?"held":"delivery-uncertain"}catch{return"delivery-uncertain"}}try{let a=await G(h,e,b.republish??l.A);if(h=a.session,a.republished&&("dead"===h.host||"unhosted"===h.host))return"delivery-uncertain"}catch{return"delivery-uncertain"}if("tmux-legacy"===h.hostKind)return z(a)?"failed":null;if("codex-app-server"!==h.hostKind&&"claude-broker"!==h.hostKind)return"delivery-uncertain";try{let c=a.imageRefs??[],d=h.capabilities.imageInput??(0,n.ki)(h.sessionKey.engine,!1);if(c.length>0&&!d.supported&&"codex"!==h.sessionKey.engine)return"failed";let f=(0,p.rM)(a.text,c),g=a.command??{operationId:a.deliveryId,kind:"send",policy:"interrupt-active"},i=await e.command({kind:g.kind,operationId:g.operationId,conversationId:a.runtimeConversationId??a.conversationId,idempotencyKey:a.clientMessageId,text:f.content.text,...c.length?{images:c}:{},contentDigest:f.contentDigest,policy:g.policy,...void 0!==g.turnId?{turnId:g.turnId}:{},...g.origin?{origin:g.origin}:{}});try{await (b.kick??q.l)()}catch{}let j=await e.operationStatus(i.operationId)??i;if(["delivered","turn-started","steered"].includes(j.receipt.status))return"delivered";if("failed"===j.receipt.status||"rejected"===j.receipt.status)return"failed";return"delivery-uncertain"}catch{return"delivery-uncertain"}}async function L(a,b={}){let c,d,r,t;if(!(b.enabled??g.cM)())return null;let z=(0,o.p)({images:a.images??[]});if(z.error)return{ok:!1,structured:!0,outcome:"failed",error:z.error.error,status:z.error.status};let C=z.images,D=(b.client??k.sS)();if(!D)return E(a,(b.registry??f.tk)(),b.requestMigrationTick??j.U);try{c=await D.snapshot()}catch(c){return console.error("[structured delivery] runtime snapshot failed",c),E(a,(b.registry??f.tk)(),b.requestMigrationTick??j.U)}F(c,b.startupRecovered??s);let K=(a.conversationId?c.sessions.find(b=>b.conversationId===a.conversationId):void 0)??c.sessions.find(b=>b.artifactPath===a.path);if(!K)return E(a,(b.registry??f.tk)(),b.requestMigrationTick??j.U);let M=(b.registry??f.tk)();if("tmux-legacy"===K.hostKind)return y(a)?w():null;if("codex-app-server"!==K.hostKind&&"claude-broker"!==K.hostKind)return v();try{(0,p.h1)(a.text)}catch(a){return A(a)}let N=a.imageRefs??[],O=!0===a.hasImages||C.length>0||N.length>0;if(a.hasImages&&0===C.length&&0===N.length)return{ok:!1,structured:!0,outcome:"failed",error:"structured image payload is unavailable",status:409};if(C.length>0&&N.length>0)return A(Error("structured image payload is ambiguous"));if(!K.conversationId.startsWith("conversation_"))return v();let P=x(M,M.conversation(K.conversationId));if(P)return P;let Q=M.conversation(K.conversationId);if(!Q)return v();let R=a.clientMessageId?.trim()||`queue_${e().randomUUID()}`;try{d=N.length>0?N:(b.previewImageRefs??n.N2)(C),r=(0,p.rM)(a.text,d),t=M.preflightDeliveryReservation(Q.id,r.content.text,R,d.length?"runtime-images":"text",d,r.contentDigest,B(a))}catch(a){return A(a)}if(t?.state==="delivered")return J(t,R,Q.id,!1);if(t?.state==="failed")return{ok:!1,structured:!0,outcome:"failed",error:t.error||"delivery target is unavailable",status:409};let S=Q.generations.at(-1),T=M.engineRouting(Q.engine).activeAccountId;if(T&&S?.accountId&&S.accountId!==T)try{Q=M.requestConversationMigrationToActiveAccount(Q.id)}catch(a){return A(a)}let U="held"===(0,i._v)(Q),V=!1;if(U&&"idle"===K.turn){var W;try{await (b.kick??q.l)()}catch{}if(Q=M.conversation(Q.id)??Q,"held"===(0,i._v)(Q)&&(W=Q,W.reconfigure?.status!=="applying"||W.reconfigure.accountId!==W.migration?.targetId))try{Q=await (b.executeSwitch??i.ww)(Q.id,M)}catch{Q=M.conversation(Q.id)??Q}if(!(U="held"===(0,i._v)(Q))){(b.requestMigrationTick??j.U)();let a=await H(D,Q);a?K=a:V=!0}}if(!U&&!V)try{K=(await G(K,D,b.republish??l.A)).session}catch(a){return A(a)}let X=!U&&!V&&function(a,b,c){if("dead"===a.host||"unhosted"===a.host)return!0;if("registering"!==a.host||null!==a.artifactPath)return!1;let d=c.generations.at(-1);if(!d)return!1;let e=b.readOnlySnapshot().entries[`${c.engine}:${d.id}`];return e?.status==="dead"&&null===e.host&&null===e.pendingAction&&e.structuredHost?.process===null}(K,M,Q);if(X&&!O)try{M.holdDelivery(Q.id,r.content.text,R,"text",[],r.contentDigest,B(a))}catch(a){return A(a)}let Y=!1,Z=K;if(X){let c;try{c=await (b.recover??m.recoverDeadStructuredConversation)({path:a.path||K.artifactPath||"",conversationId:K.conversationId},{registry:M,client:D})}catch(a){return{ok:!1,structured:!0,outcome:"failed",error:a instanceof Error?a.message:"structured host recovery failed",status:503}}if(!c)return v();Y=c.spawned;try{let a=await D.snapshot();Z=a.sessions.find(a=>a.conversationId===K.conversationId)??a.sessions.find(a=>a.artifactPath===K.artifactPath)??K}catch{}}let $=U||V?(0,n.ki)(Z.sessionKey.engine,!0):Z.capabilities.imageInput??(0,n.ki)(Z.sessionKey.engine,!1);if(O&&!$.supported&&"codex"!==Z.sessionKey.engine)return{ok:!1,structured:!0,outcome:"failed",error:$.reason??"structured image delivery is unavailable",status:409};if(C.reduce((a,b)=>a+Buffer.byteLength(b.base64),0)>$.maxEncodedBytesPerRequest)return{ok:!1,structured:!0,outcome:"failed",error:"runtime image request encoding is too large",status:413};let _=null;try{let c=a.clientMessageId?.trim()?`${Q.id}\u0000${a.clientMessageId.trim()}`:null,e=await u(c,async()=>{let c=()=>{let c=M.preflightDeliveryReservation(Q.id,r.content.text,R,d.length?"runtime-images":"text",d,r.contentDigest,B(a));return c||(C.length>0&&(b.storeImages??(a=>(0,n.PF)().putMany(a)))(C),M.holdDelivery(Q.id,r.content.text,R,d.length?"runtime-images":"text",d,r.contentDigest,B(a)))};return 0===C.length?c():(b.withImageAdmissionLock??h.Cu)(async()=>c())}),f=null;if("delivery-uncertain"===e.state&&(e=M.retryUncertainDelivery(e.id)),"held"===e.state)return(b.requestMigrationTick??j.U)(),{ok:!0,structured:!0,target:Y?null:Q.id,outcome:"held",...Y?{spawned:!0}:{}};if("delivered"===e.state)return J(e,R,Y?null:Q.id,Y);if("assigned"===e.state&&V)return(b.requestMigrationTick??j.U)(),{ok:!0,structured:!0,target:Q.id,outcome:"held"};if("assigned"!==e.state||!e.generationId)return{ok:!1,structured:!0,outcome:"failed",error:e.error||"delivery target is unavailable",status:409};{let a=M.beginDeliveryAttempt(e.id,e.generationId);if(!a)return M.requeueHeldDelivery(e.id),(b.requestMigrationTick??j.U)(),{ok:!0,structured:!0,target:Y?null:Q.id,outcome:"held",...Y?{spawned:!0}:{}};f=a.id}let g=_=await D.command({kind:e.command.kind,operationId:e.command.operationId,conversationId:e.runtimeConversationId,idempotencyKey:R,text:r.content.text,...d.length?{images:d}:{},contentDigest:r.contentDigest,policy:a.policy??"interrupt-active",...void 0!==a.turnId?{turnId:a.turnId}:{},...a.runtime?{runtime:a.runtime}:{},...a.selectedContext?{selectedContext:a.selectedContext}:{},...a.origin?{origin:a.origin}:{}}),i=g.receipt;if("rejected"===i.status||"failed"===i.status||"uncertain"===i.status)return f&&"uncertain"!==i.status&&(M.recordDeliveryOutcome(f,"failed",i.reason||"structured host delivery failed"),I(M,Q.id,b.requestMigrationTick??j.U)),{ok:!1,structured:!0,outcome:"failed",error:i.reason||"structured host delivery failed",status:409,operationId:g.operationId,receipt:i};f&&["delivered","turn-started","steered"].includes(i.status)&&(M.recordDeliveryOutcome(f,"delivered"),I(M,Q.id,b.requestMigrationTick??j.U)),(b.kick??q.l)();let k="delivering"===i.status||"delivered"===i.status?i.status:"queued";return{ok:!0,structured:!0,target:Y?null:Q.id,outcome:k,operationId:g.operationId,receipt:i,...Y?{spawned:!0}:{}}}catch(d){let a=A(d);if(!_)return a;let b=_.receipt,c="failed"===b.status||"rejected"===b.status;return{ok:!1,structured:!0,outcome:"failed",error:a.error,status:a.status,operationId:_.operationId,receipt:b,...!c?{transportUncertain:!0}:{}}}}},72166:(a,b,c)=>{c.d(b,{Ec:()=>L,Hw:()=>O,xz:()=>Q,SZ:()=>af,iq:()=>X,zn:()=>am});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(4351),k=c(57726),l=c(80502),m=c(55883),n=c(31973),o=c(51720),p=c(91836),q=c(89831),r=c(71256),s=c(58874),t=c(62142),u=c(89364),v=c(74955),w=c(67852),x=c(10508),y=c(34219),z=c(98918);let A=new Set(["approved","done_comment","needs_decision","closed"]),B=/^REVIEW_READY:\s*(.*)$/m,C=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,D=globalThis,E=new Set,F=D.__llvFlowRelayLeases??=new Map,G=[1e3,5e3,3e4],H=new Set(["reviewer tracking was lost before a verdict could be recovered","reviewer launch tracking is unavailable","reviewer process is missing after server restart","reviewer spawn was interrupted by a restart"]);class I extends Error{constructor(a){super("reviewer rate limited; all accounts exhausted"),this.resetsAt=a,this.name="ReviewerAccountsExhaustedError"}}class J extends Error{constructor(){super("interrupted relay cannot retry safely because the implementer has no idempotent structured delivery"),this.name="UnsafeInterruptedRelayRetryError"}}class K extends Error{constructor(a){super(a),this.name="StructuredRelayDeliveryUncertainError"}}function L(){return new Date().toISOString()}function M(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function N(a){return a.map(a=>({...a,roles:{implementer:{...a.roles.implementer},reviewer:{...a.roles.reviewer}},hostClaim:a.hostClaim?{...a.hostClaim}:null,reviewerFallback:a.reviewerFallback?{...a.reviewerFallback}:null,rounds:a.rounds.map(a=>({...a,reviewerRole:a.reviewerRole?{...a.reviewerRole}:null,attemptedAccounts:[...a.attemptedAccounts??[]]}))}))}function O(a){return a.rounds.at(-1)??null}function P(a,b){return b.reviewerRole??a.roles.reviewer}function Q(a,b,c){return{n:a.rounds.length+1,reviewerPath:null,reviewerBindingId:e().randomUUID(),accountId:null,attemptedAccounts:[],autoRetryCount:0,sessionId:null,reviewerPid:null,reviewerIdentity:null,reviewerRole:{...a.roles.reviewer},reviewerPane:null,findingsPath:null,triggeredBy:b,readyNote:c,reviewHeadSha:null,verdict:null,findingsCount:null,startedAt:L(),spawnStartedAt:null,launchId:null,launchLeaseUntil:null,relayStartedAt:null,relayRetryCount:0,relayDeliveryAttempt:0,relayDeliveryTransport:null,relayRetryAt:null,relayRetryRequiresIdempotency:!1,relayDelivery:null,relayPendingSettlement:null,reviewedAt:null,terminalAt:null,relayedAt:null,error:null}}function R(a,b){let c=(0,w.wi)(a.cwd);if(!c)throw Error("review requires a clean committed HEAD");if(a.headRef){let b=(0,w.ZD)(a.cwd,a.headRef);if(b!==c){let d=b?`review remote head mismatch before launch: local ${c}, origin/${a.headRef} ${b}`:`review remote head is unavailable before launch: origin/${a.headRef}`;throw S(a,d),Error(d)}}if(1===b.n&&a.targetSha&&c.toLowerCase()!==a.targetSha.toLowerCase()){let b=`review target changed before launch: expected ${a.targetSha}, found ${c}`;throw S(a,b),Error(b)}return b.reviewHeadSha=c,c}function S(a,b){a.state="needs_decision",a.stateDetail=b}function T(a,b){return a.error=b,a.terminalAt=L(),b}function U(a,b){return a?.startsWith("conversation_")?(0,m.tk)().conversation(a)?.generations.at(-1)?.path??b:(0,m.tk)().canonicalPath(b)}function V(a,b){return a.hostClaim&&/structured (?:resume )?host claim is unavailable|structured host ownership is unavailable/i.test(b)?`structured host claim ${a.hostClaim.sessionKey} on account ${a.hostClaim.accountRef} failed: ${b}`:b}function W(a,b=a.rounds?.at(-1)){let c=b?.relayDeliveryAttempt??0,d=`${a.id}:${b?.n??"legacy"}:${b?.reviewerBindingId??"legacy"}`+(c>0?`:retry:${c}`:"");return`flow_relay_${e().createHash("sha256").update(d).digest("hex").slice(0,32)}`}async function X(a,b,c,d={}){let f=b.get(U(a.implementerConversationId,a.implementerPath));if(!f)throw Error("implementer transcript is missing from scanner");let g=(0,m.tk)(),h=a.implementerConversationId?.startsWith("conversation_")?g.conversation(a.implementerConversationId):g.conversationForPath(f.path);if(h){var i;let b,j=h?.generations.at(-1);h&&j&&(a.hostClaim={sessionKey:(0,n.pp)({engine:h.engine,sessionId:j.id}),accountRef:(i=j.accountId??h.pinnedAccountId??null)?"default"===i?"default":`managed:${e().createHash("sha256").update(i).digest("hex").slice(0,12)}`:"unknown"});try{b=await (d.recover??s.recoverDeadStructuredConversation)({path:f.path,conversationId:h.id},{registry:g})}catch(b){throw Error(V(a,b instanceof Error?b.message:String(b)),{cause:b})}if(b){d.onTransportSelected?.("structured");let e=await (d.enqueueStructured??r.enqueueStructuredMessage)({path:b.path,conversationId:b.conversationId,clientMessageId:W(a),text:c,origin:{kind:"agent",role:"reviewer"}},{registry:()=>g});if(!e)throw Error("structured delivery ownership is unavailable");if(!e.ok){if(e.transportUncertain||e.receipt?.status==="uncertain")throw new K(e.error);throw Error(V(a,e.error))}return b.path}a.hostClaim=null}if(d.requireIdempotentDelivery)throw new J;let k=(0,j.A9)(f.root,f.path,{model:f.launchModel??f.model,effort:f.effort,allowSubagents:(0,m.tk)().launchProfileForPath(f.path)?.allowSubagents,mcpServers:(0,m.tk)().launchProfileForPath(f.path)?.mcpServers,plugins:(0,m.tk)().launchProfileForPath(f.path)?.plugins});if(!k)throw Error("implementer session cannot be resumed");d.onTransportSelected?.("legacy");let o=await (d.deliver??l.Zp)({entry:f,spec:k,payload:c});if(!o.ok){if("started"===o.actuation)throw new u.SS(`legacy relay delivery is uncertain after actuation started: ${o.error}`);throw Error(o.error)}return f.path}function Y(a,b,c){if(c.reviewerPath)return!1;let d=M(c.startedAt)/1e3-5,e=P(a,c).engine,f=b.filter(b=>b.engine===e&&b.path!==U(a.implementerConversationId,a.implementerPath)&&b.mtime>=d&&!("codex-sessions"===b.root&&b.path.endsWith(".jsonl")&&(0,q.ET)(b.path,b.size))&&(0,p.tX)(b.path)===a.cwd).sort((a,b)=>b.mtime-a.mtime)[0];return!!f&&(c.reviewerPath=f.path,!0)}function Z(a,b,c){let d=b.findingsPath??(0,z.tR)(a.id,b.n);(0,z.Yj)(d,c.content),b.findingsPath=d,b.verdict=c.verdict,b.findingsCount=c.findingsCount,b.reviewedAt=L(),b.terminalAt=b.reviewedAt,"manual"===a.mode?a.state="relay_pending":a.state="relaying",a.stateDetail=null}function $(a,b){if(!a)return!1;let c=a.rounds.find(a=>a.n===b.n);return!!c&&(b.reviewerPane?c.reviewerPane?.paneId===b.reviewerPane.paneId:null!=b.reviewerPid?c.reviewerPid===b.reviewerPid:"closed"!==a.state)}function _(a,b=Date.now()){let c=Date.parse(a.launchLeaseUntil??"");return!!(a.launchId&&Number.isFinite(c)&&c>b)}function aa(a,b){if(!b.launchId||!(b.reviewerPane||null!=b.reviewerPid||b.reviewerPath||b.sessionId))return!1;let c=(0,z.mL)(),d=c.find(b=>b.id===a),e=d?.rounds.find(a=>a.n===b.n);return!!d&&!!e&&"needs_decision"===d.state&&!!H.has(d.stateDetail??"")&&e.launchId===b.launchId&&(Object.assign(e,{reviewerPath:b.reviewerPath,reviewerConversationId:b.reviewerConversationId??null,reviewerRole:b.reviewerRole??null,accountId:b.accountId??null,attemptedAccounts:[...b.attemptedAccounts??[]],sessionId:b.sessionId??null,reviewerPid:b.reviewerPid??null,reviewerIdentity:b.reviewerIdentity??null,reviewerPane:b.reviewerPane??null,reviewHeadSha:b.reviewHeadSha??null,spawnStartedAt:b.spawnStartedAt??null,launchLeaseUntil:"headless"!==d.reviewerMode||null==b.reviewerPid||b.reviewerIdentity?null:b.launchLeaseUntil,error:b.error}),d.state="reviewing",d.stateDetail=null,(0,z.tu)(c),!0)}function ab(a,b){let c=(0,z.mL)(),d=c.find(b=>b.id===a),e=d?.rounds.find(a=>a.n===b);e&&(e.spawnStartedAt=null,e.reviewerPane=null,e.reviewerPath=null,e.reviewerPid=null,e.sessionId=null,e.launchId=null,e.launchLeaseUntil=null,(0,z.tu)(c))}async function ac(a){let b=a.reviewerPane;if(b)try{let a=await (0,u.RZ)(b.paneId);a&&a.windowName===b.windowName&&!(0,t.g2)(a.command)&&await (0,u.VT)(b.paneId)}catch{}}function ad(a,b,c,d,e=null){if(!b.launchId||!b.reviewerPath)return;let f=(0,m.tk)(),g=f.readOnlySnapshot().receipts[b.launchId];if(!g)return;if(g?.state==="completed"){b.reviewerConversationId=g.conversationId;return}let h=(0,n.sz)(c.engine,b.reviewerPath);if(!h)return;let i=f.settleSpawn(b.launchId,{key:h,artifactPath:b.reviewerPath,cwd:a.cwd,accountId:d,status:"starting",host:e,claimEpoch:0,claimOwner:null,pendingAction:"spawn"});if("conflict"===i.kind)throw Error(i.code);b.reviewerConversationId=i.conversation.id}async function ae(a,b,c,d,e){var f,g;if("replay"===d.kind&&function(a,b,c){if("failed"===c.state||"conflicted"===c.state)throw Error(c.error??`reviewer reservation is ${c.state}`);b.launchId=c.launchId,b.reviewerConversationId=c.conversationId,b.reviewerPath=c.artifactPath??b.reviewerPath,b.sessionId=c.key?.sessionId??b.sessionId;let d=c.verifiedHost;return d&&(b.reviewerPane={paneId:d.paneId,windowName:d.windowName}),a.state="reviewing",a.stateDetail=null,(c.artifactPath||d)&&(b.launchLeaseUntil=null),"starting"!==c.state||!!(c.artifactPath||c.pane||c.verifiedHost)}(a,b,d.receipt))return;e();let h=(0,y.qu)(a,b),{role:i,account:k}=c;if(a.state="reviewing",a.stateDetail=null,"pane"===a.reviewerMode){let c=(0,j.lV)(i.engine,a.cwd,{model:i.model,effort:i.effort,codexHome:"codex"===k.engine?k.home:null,claudeConfigDir:"claude"===k.engine?k.home:null,claudeProjectsDir:"claude"===k.engine?k.transcriptRoot:null}),f=Date.now(),g=await (0,u.Tk)(c,h,d.receipt);b.reviewerPane={paneId:g.paneId,windowName:c.windowName};let l=await (0,o.s)({engine:i.engine,knownTranscript:c.transcript??null,panePid:g.panePid??null,cwd:a.cwd,startedAtMs:f,codexSessionsDir:"codex"===k.engine?k.transcriptRoot:null});l&&(b.reviewerPath=l),ad(a,b,i,k.accountId,g.host??null),!b.reviewerPath&&g.panePid&&(b.error=null),b.launchLeaseUntil=null,e();let m=(0,z.mL)().find(b=>b.id===a.id);if(!$(m,b)){if(aa(a.id,b))return;await ac(b),m&&"closed"!==m.state&&ab(a.id,b.n)}return}let l=(0,m.tk)().rotateSpawnCapabilityForReceipt(d.receipt.launchId),n=(0,v.P1)(a.id,b.n,i,a.cwd,h,void 0,"codex"===k.engine?{home:k.home,managed:"managed"===k.kind}:null,"claude"===k.engine?{home:k.home,projectsDir:k.transcriptRoot,managed:"managed"===k.kind}:null,void 0,l);f=b,(g=n).pid&&(f.reviewerPid=g.pid,f.reviewerIdentity=g.identity),g.sessionId&&(f.sessionId=g.sessionId),g.reviewerPath&&(f.reviewerPath=g.reviewerPath),g.identity&&(f.launchLeaseUntil=null),ad(a,b,i,k.accountId),e();let p=(0,z.mL)().find(b=>b.id===a.id);if(!$(p,b)){if(aa(a.id,b))return;(0,v.T)(a.id,b.n,b),p&&"closed"!==p.state&&ab(a.id,b.n)}}function af(a,b=(0,m.tk)()){let c=W(a),d=Object.values(b.readOnlySnapshot().heldDeliveries).find(a=>a.clientMessageId===c);return d?.state!=="delivered"?null:{deliveredAt:d.deliveredAt??L()}}function ag(a,b,c,d){b.relayDelivery={path:c,deliveredAt:d},b.relayedAt=d,b.relayPendingSettlement=null,b.relayRetryAt=null,b.relayRetryRequiresIdempotency=!1,b.error=null,a.stateDetail=null,aj(a,b)}async function ah(a,b,c,d={}){if(!c.findingsPath)throw Error("round has no findings artifact");let e=g().readFileSync(c.findingsPath,"utf8");a.state="relaying";let f=await X(a,b,(0,y.i0)(c,e),d);if("structured"===c.relayDeliveryTransport){let b=af(a);if(!b){c.relayPendingSettlement={path:f,since:L()},c.relayRetryAt=null,c.relayRetryRequiresIdempotency=!1,c.error=null,a.stateDetail="relay accepted by the structured transport; awaiting delivery journal settlement";return}ag(a,c,f,b.deliveredAt);return}ag(a,c,f,L())}function ai(a,b,c,d=b.relayRetryRequiresIdempotency??!1){b.relayPendingSettlement=null;let e=b.relayRetryCount??0;if(e>=3)return b.error=c,b.relayRetryAt=null,S(a,`relay delivery failed after ${e} automatic retries: ${c}`),!1;let f=e+1;return b.relayRetryCount=f,d||(b.relayDeliveryAttempt=(b.relayDeliveryAttempt??0)+1),b.relayRetryAt=new Date(Date.now()+G[f-1]).toISOString(),b.relayStartedAt=null,b.relayRetryRequiresIdempotency=d,b.error=c,a.state="relaying",a.pausedState=null,a.stateDetail=`relay delivery failed; retrying automatically (${f}/3): ${c}`,!0}function aj(a,b){var c;let d;"APPROVE"===b.verdict?(a.state="approved",a.closedAt=L()):"COMMENT"===b.verdict?a.state="done_comment":(c=a,d=(0,z.mL)().find(a=>a.id===c.id)?.roundLimit??c.roundLimit,c.roundLimit=d,d>0&&c.rounds.length>=d?S(c,"round limit reached"):(c.state="fixing",c.stateDetail=null))}async function ak(a,b,c,d){var f,g;let h=JSON.stringify(a);for(let b of(a.implementerPath=U(a.implementerConversationId,a.implementerPath),a.rounds))b.reviewerPath&&(b.reviewerPath=U(b.reviewerConversationId,b.reviewerPath));if("closed"===a.state||"paused"===a.state)return JSON.stringify(a)!==h;let j=c.get(a.implementerPath);if(!j){let b=a.state;return a.state="paused",a.pausedState=b,a.stateDetail="implementer transcript is missing",JSON.stringify(a)!==h}if("waiting_ready"===a.state||"fixing"===a.state){let b=function(a,b){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let c=(0,x.if)(b);if(!c)return null;let d=Math.max(...a.rounds.map(a=>M(a.startedAt)),M(a.createdAt));return c.ts<=d?null:c.text.match(B)?.[1]?.trim()??null}(a,j);if(null!==b){let c=Q(a,"marker",b);a.rounds.push(c);try{a.headRef&&R(a,c),a.state="manual"===a.mode?"spawn_pending":"spawning",a.stateDetail=null}catch(d){let b=d instanceof Error?d.message:"review head capture failed";c.error=b,S(a,b)}}return JSON.stringify(a)!==h}let l=O(a);if(!l)return JSON.stringify(a)!==h;if("spawning"===a.state){let b="headless"===a.reviewerMode?(0,v.IL)(a.id,l.n,l,P(a,l).engine):null;if(l.spawnStartedAt&&!l.reviewerPane&&null==l.reviewerPid&&!l.reviewerPath&&!l.sessionId&&_(l)&&("pane"===a.reviewerMode||b?.status==="lost"))return JSON.stringify(a)!==h;if(l.spawnStartedAt&&"headless"===a.reviewerMode&&b?.status==="lost")return S(a,"reviewer tracking was lost before a verdict could be recovered"),JSON.stringify(a)!==h;if(l.spawnStartedAt&&"headless"===a.reviewerMode&&b)return a.state="reviewing",a.stateDetail=null,JSON.stringify(a)!==h;if(l.spawnStartedAt&&!b&&null===l.reviewerPath)return S(a,"reviewer launch tracking is unavailable"),JSON.stringify(a)!==h;try{let b=function(a,b){if("pane"===a.reviewerMode){let c=a.roles.reviewer,d=k.lD.resolveSpawn(c.engine,b.accountId);return b.accountId=d.accountId,b.reviewerRole={...c},{role:c,account:d}}let c=function(a,b,c,d){let e=[a,...b&&b.engine!==a.engine?[b]:[]],f=[],g=null,h=0;for(let a of e){let b=`${a.engine}:`,e=c.filter(a=>a.startsWith(b)).map(a=>a.slice(b.length)),i=d(a.engine,null,e);if("available"===i.kind){let b={kind:"available",role:a,account:i.account};if(!c.includes(`${i.account.engine}:${i.account.accountId}`))return b;g??=b;continue}"exhausted"===i.kind&&(h+=1,null!==i.resetsAt&&f.push(i.resetsAt))}return g||(h!==e.length?{kind:"unavailable"}:{kind:"exhausted",resetsAt:f.length?Math.min(...f):null})}(a.roles.reviewer,a.reviewerFallback,b.attemptedAccounts??[],(a,b,c)=>k.lD.resolveHeadlessSpawn(a,b,c));if("exhausted"===c.kind)throw new I(c.resetsAt);if("unavailable"===c.kind)throw Error("no authenticated reviewer account is available");let{role:d,account:e}=c;b.reviewerRole={...d},b.accountId=e.accountId;let f=`${e.engine}:${e.accountId}`;return b.attemptedAccounts=[...new Set([...b.attemptedAccounts??[],f])],{role:d,account:e}}(a,l);R(a,l),l.spawnStartedAt=L();let c=function(a,b,c,d,f=(0,m.tk)()){let g=(a.implementerConversationId?.startsWith("conversation_")?f.conversation(a.implementerConversationId):null)??f.ensureConversation(a.roles.implementer.engine,a.implementerPath,null);a.implementerConversationId=g.id;let h=g.generations.at(-1)?.path??a.implementerPath;f.rememberMembership(g.id,{kind:"flow",containerId:a.id,role:"implementer",slot:"implementer",stageId:null,stageOrder:0,round:null,parentConversationId:null});let i=b.reviewerBindingId??e().randomUUID();b.reviewerBindingId=i;let j=e().createHash("sha256").update(`${a.id}:${b.n}:${i}`).digest("hex").slice(0,24),k=f.beginSpawnRequest({engine:c.engine,cwd:a.cwd,accountId:d,accountPin:null!==d,parentConversationId:g.id,parentSessionKey:(0,n.sz)(g.engine,h),parentArtifactPath:h,role:"reviewer",reviewsConversationId:g.id,origin:{kind:"container",container:"flow",containerId:a.id,creatorConversationId:null},memberships:[{kind:"flow",containerId:a.id,role:"reviewer",slot:`reviewer:${b.n}:${i}`,stageId:null,stageOrder:1,round:b.n,parentConversationId:g.id}],clientAttemptId:`flow_${a.id}_${j}`,requestDigest:e().createHash("sha256").update(JSON.stringify({flowId:a.id,round:b.n,reviewerBindingId:i,role:c,accountId:d,reviews:g.id})).digest("hex")});if("conflict"===k.kind)throw Error("reviewer spawn conflicts with its durable reservation");return b.launchId=k.receipt.launchId,b.reviewerConversationId=k.receipt.conversationId,k}(a,l,b.role,b.account.accountId);l.launchLeaseUntil=new Date(Date.now()+6e4).toISOString(),d(),await ae(a,l,b,c,d)}catch(b){if(b instanceof I){let c;l.error=null,S(a,(c=null===(f=b.resetsAt)?"unknown":new Date(1e3*f).toISOString(),`reviewer rate limited; all accounts exhausted; resetsAt=${c}`))}else S(a,T(l,b instanceof Error?b.message:String(b)))}return JSON.stringify(a)!==h}if("reviewing"===a.state){let d=(0,x.V_)(l);if(d)return Z(a,l,d),JSON.stringify(a)!==h;if("headless"===a.reviewerMode){let d,f=(0,v.IL)(a.id,l.n,l,P(a,l).engine);if(l.sessionId||(l.sessionId=f?.sessionId??(g=f?.stdout??"",(d=g.match(/session id:?\s*([0-9a-f-]{36})/i)?.[1])&&C.test(d)?d:g.split("\n").slice(0,40).join("\n").match(C)?.[0]??null)),f?.processIdentity&&(l.reviewerIdentity=f.processIdentity,l.launchLeaseUntil=null),!function(a,b,c){if(b.reviewerPath||!c)return;let d=a.find(a=>i().basename(a.path).includes(c));d&&(b.reviewerPath=d.path)}(b,l,l.sessionId??null),l.reviewerPath||l.sessionId||Y(a,b,l),ad(a,l,P(a,l),l.accountId??null),f?.status==="lost"&&_(l)||f?.status==="running")return JSON.stringify(a)!==h;if(f?.status==="lost"){let b=(0,x.J8)(l,c,P(a,l).engine);return b?Z(a,l,b):S(a,"reviewer tracking was lost before a verdict could be recovered"),JSON.stringify(a)!==h}if(f){(0,v.T)(a.id,l.n,l);let b=(0,x.Sn)(f.finalOutput)??(0,x.J8)(l,c,P(a,l).engine);if(b)Z(a,l,b);else if((l.autoRetryCount??0)<1)(0,v.T)(a.id,l.n,l),(0,v.gn)(a.id,l.n),Object.assign(l,{reviewerPath:null,reviewerConversationId:null,reviewerBindingId:e().randomUUID(),reviewerRole:null,accountId:null,sessionId:null,reviewerPid:null,reviewerIdentity:null,reviewerPane:null,findingsPath:null,verdict:null,findingsCount:null,reviewHeadSha:null,autoRetryCount:(l.autoRetryCount??0)+1,startedAt:L(),spawnStartedAt:null,launchId:null,launchLeaseUntil:null,relayStartedAt:null,relayRetryCount:0,relayDeliveryAttempt:0,relayDeliveryTransport:null,relayRetryAt:null,relayRetryRequiresIdempotency:!1,relayPendingSettlement:null,reviewedAt:null,relayedAt:null,error:null}),a.state="spawning",a.stateDetail=`reviewer produced no verdict; retrying automatically (${l.autoRetryCount}/1)`;else{let b=l.findingsPath??(0,z.tR)(a.id,l.n);(0,z.Yj)(b,f.finalOutput||f.stdout||f.stderr),l.findingsPath=b,S(a,T(l,"timeout"===f.status?"reviewer timed out":f.stderr.trim()||"reviewer verdict was unparseable"))}return JSON.stringify(a)!==h}let j=(0,x.J8)(l,c,P(a,l).engine);return j?Z(a,l,j):S(a,"reviewer tracking is unavailable and no verdict could be recovered"),JSON.stringify(a)!==h}if(Y(a,b,l),ad(a,l,P(a,l),l.accountId??null,l.reviewerPane?(0,m.tk)().readOnlySnapshot().receipts[l.launchId??""]?.verifiedHost??null:null),l.reviewerPath){let b=c.get(l.reviewerPath),d=(0,x.J8)(l,c,P(a,l).engine);d?Z(a,l,d):b&&"live"!==b.activity&&"stalled"!==b.activity&&S(a,"reviewer verdict was unparseable")}return JSON.stringify(a)!==h}if("relaying"===a.state){let b=`${a.id}:${l.n}`;if(null!==l.relayedAt)return aj(a,l),JSON.stringify(a)!==h;if(l.relayPendingSettlement){let c=af(a);return c?ag(a,l,l.relayPendingSettlement.path,c.deliveredAt):Date.now()-M(l.relayPendingSettlement.since)>=18e4&&(E.delete(b),ai(a,l,"structured relay was accepted but never settled in the delivery journal",!0)),JSON.stringify(a)!==h}let e=F.get(b);if(e)return await e,JSON.stringify(a)!==h;if(l.relayStartedAt&&null===l.relayedAt&&!E.has(b)){if("structured"===l.relayDeliveryTransport)ai(a,l,"structured relay was interrupted before delivery settlement",!0);else{let b="legacy"===l.relayDeliveryTransport?"legacy relay was interrupted before delivery settlement; automatic replay is unsafe":"relay transport was not durably classified before interruption; automatic replay is unsafe";l.error=b,l.relayRetryAt=null,S(a,b)}return JSON.stringify(a)!==h}if(l.relayRetryAt&&Date.now()<M(l.relayRetryAt))return JSON.stringify(a)!==h;let f=(async()=>{try{l.relayRetryAt=null,l.relayDeliveryTransport=null,l.relayStartedAt=L(),E.add(b),d(),await ah(a,c,l,{requireIdempotentDelivery:l.relayRetryRequiresIdempotency??!1,onTransportSelected:a=>{l.relayDeliveryTransport=a,d()}}),d()}catch(e){let c=e instanceof Error?e.message:String(e);e instanceof J||e instanceof u.SS?(l.error=c,l.relayRetryAt=null,S(a,c)):e instanceof K?ai(a,l,c,!0):ai(a,l,c,!1),E.delete(b),d()}})();F.set(b,f);try{await f}finally{F.get(b)===f&&F.delete(b)}}return JSON.stringify(a)!==h}function al(a,b,c){let d=new Map(a.map(a=>[a.id,a])),e=c??new Set(d.keys());(0,z.Su)(e,a=>{let c=[];for(let e of a){let a=d.get(e.id);if(!a)continue;let f=b.get(e.id);if(!f||JSON.stringify(a)===f.snapshot)continue;if(e.state!==f.state||e.rounds.length!==f.roundsLen||e.closedAt!==f.closedAt){if("paused"!==e.state&&"closed"!==e.state)continue;let b=JSON.parse(f.snapshot),d=new Map(a.rounds.flatMap(a=>{let c=b.rounds.find(b=>b.n===a.n);return c?.relayedAt==null&&a.relayDelivery&&a.relayedAt?[[a.n,a]]:[]}));if(0===d.size)continue;let g={...e,rounds:e.rounds.map(a=>{let b=d.get(a.n);return b&&b.reviewerBindingId===a.reviewerBindingId?{...a,relayStartedAt:b.relayStartedAt,relayDelivery:b.relayDelivery,relayedAt:b.relayedAt}:a})};c.push(g);continue}let g=JSON.parse(f.snapshot),h=a.rounds.map((a,b)=>{let c=e.rounds[b],d=g.rounds[b],f=JSON.stringify(a.reviewerRole??null)===JSON.stringify(d?.reviewerRole??null);return c&&null==a.spawnStartedAt&&f&&void 0!==c.reviewerRole?{...a,reviewerRole:c.reviewerRole}:a}),i={...a,revision:e.revision,rounds:h,roles:e.roles,roundLimit:e.roundLimit,mode:e.mode};c.push(i)}return c})}async function am(a){if(D.__llvFlowTick){let b=N((0,z.mL)());return an(a,b),{flows:b,changed:!1}}D.__llvFlowTick=!0;let b=N((0,z.ov)()),c=new Map(b.map(a=>[a.id,{snapshot:JSON.stringify(a),state:a.state,roundsLen:a.rounds.length,closedAt:a.closedAt}])),d=new Set;try{let e=new Map(a.map(a=>[a.path,a])),f=!1;for(let g of b)!A.has(g.state)&&await ak(g,a,e,()=>{al(b,c,new Set([...d,g.id]))})&&(f=!0,d.add(g.id),al(b,c,d));f&&al(b,c,d);let g=N((0,z.mL)());return an(a,g),{flows:g,changed:f}}finally{D.__llvFlowTick=!1}}function an(a,b){for(let b of a)delete b.flow;let c=new Map(a.map(a=>[a.path,a]));for(let a of b){let b=c.get(U(a.implementerConversationId,a.implementerPath));for(let d of(b&&(b.flow={flowId:a.id,flowRole:"implementer",round:null}),a.rounds)){if(!d.reviewerPath)continue;let b=c.get(U(d.reviewerConversationId,d.reviewerPath));b&&(b.flow={flowId:a.id,flowRole:"reviewer",round:d.n})}}}},73385:(a,b,c)=>{c.d(b,{le:()=>k,pQ:()=>o,e3:()=>p});var d=c(73024),e=c.n(d);c(76760);var f=c(50920),g=c(61899),h=c(2208),i=c(91620);let j=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],k=12e3;class l extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let m=()=>(0,f.BQ)("role-presets.json");function n(a){return i.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold}})}function o(){return n(function(){let a,b;try{a=e().readFileSync(m(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:1,overrides:{}};throw new l(`could not read role override registry: ${m()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new l("role override registry contains malformed JSON",{cause:a})}if(1!==b.schemaVersion)throw new l(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new l("role override registry must contain an overrides object");let c={};for(let[a,d]of Object.entries(b.overrides)){if(!("string"==typeof a&&j.includes(a))||!function(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"config"!==a&&"promptScaffold"!==a)||void 0!==a.promptScaffold&&("string"!=typeof a.promptScaffold||a.promptScaffold.length>k))return!1;if(void 0!==a.config){if(!a.config||"object"!=typeof a.config||Array.isArray(a.config)||Object.keys(a.config).some(a=>"engine"!==a&&"model"!==a&&"effort"!==a))return!1;let{engine:b,model:c,effort:d}=a.config;if(void 0!==b&&"claude"!==b&&"codex"!==b||void 0!==c&&("string"!=typeof c||c.length>128)||void 0!==d&&("string"!=typeof d||d.length>32))return!1}return!0}(d)||!function(a,b){let c={...i.W.find(b=>b.id===a).config,...b.config};return!(c.model.length>128||/[\u0000-\u001f\u007f]/.test(c.model))&&("claude"!==c.engine||!!(0,h.OV)(c.model))&&("codex"!==c.engine||!!c.model.startsWith("gpt-"))&&(0,g.z9)(c.engine,c.effort)}(a,d))throw new l(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:1,overrides:c}}().overrides)}function p(){try{return o()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),n({})}}},74030:(a,b,c)=>{c.d(b,{U:()=>g,c:()=>f});let d=process,e=d.__llvAccountMigrationSignal??={tick:null,scheduled:!1};function f(a){return e.tick=a,()=>{e.tick===a&&(e.tick=null)}}function g(){e.scheduled||null===e.tick||(e.scheduled=!0,queueMicrotask(()=>{e.scheduled=!1;let a=e.tick;null!==a&&a().catch(a=>{console.error("[account migration controller] requested reconciliation failed",a)})}))}},74955:(a,b,c)=>{c.d(b,{IL:()=>H,OZ:()=>J,P1:()=>E,T:()=>I,gn:()=>F});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(4351),l=c(53133),m=c(91836),n=c(14648),o=c(56404),p=c(30277),q=c(65377),r=c(98918);let s=new Map;function t(a,b){let c=(0,q.Fd)(a);return delete c.LLV_TOKEN,b&&(c.LLV_SPAWN_CAPABILITY=b),c}function u(a,b){return`${a}:${b}`}function v(a){if(!a||!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}let w={pidAlive:v,processIdentity:a=>p.B.processIdentity(a),signalProcess:(a,b)=>{process.kill(a,b)},setTimeout:(a,b)=>setTimeout(a,b)},x={...w,processGroupAlive:a=>{try{return process.kill(-a,0),!0}catch{return!1}},wait:async a=>await new Promise(b=>setTimeout(b,a))};function y(a,b,c={}){let d={...w,...c.runtime};if(!(!0===c.ownedByLiveHandle||b&&d.pidAlive(a)&&d.processIdentity(a)===b))return;try{d.signalProcess(-a,"SIGTERM")}catch{if(!c.leaderExited)try{(c.fallbackLeader??(b=>d.signalProcess(a,b)))("SIGTERM")}catch{}}let e=d.setTimeout(()=>{try{d.signalProcess(-a,"SIGKILL")}catch{}},c.graceMs??3e3);e.unref?.()}async function z(a,b,c={}){let d={...x,...c.runtime};if(!(!0===c.ownedByLiveHandle||b&&d.pidAlive(a)&&d.processIdentity(a)===b))return!d.processGroupAlive(a);let e=b=>{try{d.signalProcess(-a,b)}catch{if(!c.leaderExited)try{(c.fallbackLeader??(b=>d.signalProcess(a,b)))(b)}catch{}}},f=async b=>{let e=Math.max(1,c.pollMs??25),f=Math.max(1,Math.ceil(b/e));for(let b=0;b<f;b+=1){if(!d.processGroupAlive(a))return!0;await d.wait(e)}return!d.processGroupAlive(a)};return e("SIGTERM"),!!await f(c.graceMs??3e3)||(e("SIGKILL"),await f(c.killWaitMs??1e3))}function A(a,b,c=3e3){y(a,b,{graceMs:c})}function B(a){let b=a.child.pid;b&&!a.terminationStarted&&(a.terminationStarted=!0,y(b,null,{ownedByLiveHandle:!0,leaderExited:null!==a.exit,fallbackLeader:b=>{a.child.kill(b)}}))}let C=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,D=new Set(["session_id","sessionId","thread_id","threadId","rollout_id"]);function E(a,b,c,e,g,i=18e5,v,w,x,y){let z,A=u(a,b);if(s.has(A))return{pid:null,identity:null,sessionId:null,reviewerPath:null};let C=(0,r.WJ)(a,b);h().mkdirSync(j().dirname(C),{recursive:!0}),F(a,b);let D=function(a,b,c,d,e,g,h){if("claude"===a.engine){let c=f().randomUUID(),e=["-p",b,"--dangerously-skip-permissions","--session-id",c];a.model&&e.push("--model",a.model),a.effort&&e.push("--effort",a.effort);let i=g?(0,n.UI)(g.home,{baseSettingsPath:g.managed?(0,l.ZK)():null,profileId:`headless-${c}`}).settingsPath:null;i&&e.push("--settings",i);let j=g?.managed?(0,l.x0)(g.home):process.env;return{command:(0,k.uX)("claude"),args:e,env:t(j,h),stdin:null,outputPath:null,sessionId:c,reviewerPath:(0,m.eV)(d,c,g?.projectsDir)}}let i=["--disable","multi_agent","exec","--ignore-user-config","-","--json","--output-last-message",c,"--dangerously-bypass-approvals-and-sandbox"];return e?.managed&&i.unshift("-c","cli_auth_credentials_store=file"),a.model&&i.push("-m",a.model),a.effort&&i.push("-c",`model_reasoning_effort=${a.effort}`),{command:(0,k.uX)("codex"),args:i,env:t(e?.home?{...(0,q.Fd)(process.env),CODEX_HOME:e.home}:process.env,h),stdin:(0,n.Vw)("codex",b),outputPath:c,sessionId:null,reviewerPath:null}}(c,g,C,e,v,w,y),G=h().openSync((0,r.Ml)(a,b),"w"),H=h().openSync((0,r.NO)(a,b),"w");try{z=(0,d.spawn)(x?.command??D.command,D.args,{cwd:e,env:D.env,detached:!0,stdio:[null===D.stdin?"ignore":"pipe",G,H]}),null!==D.stdin&&z.stdin&&(z.stdin.on("error",()=>{}),z.stdin.end(D.stdin,"utf8"))}finally{h().closeSync(G),h().closeSync(H)}z.unref();let I=x?.processIdentity??p.B.processIdentity,J=z.pid?I(z.pid):null,K={child:z,identity:J,identityOf:I,startedAt:Date.now(),exit:null,terminationStarted:!1,timer:setTimeout(()=>{B(K)},i)};K.timer.unref(),s.set(A,K);let L=!1,M=()=>{L||(L=!0,(0,o.L1)())};return z.on("error",()=>{clearTimeout(K.timer),K.exit={code:null,signal:null},B(K),M()}),z.on("close",(a,b)=>{clearTimeout(K.timer),K.exit={code:a,signal:b},B(K),M()}),{pid:z.pid??null,identity:J,sessionId:D.sessionId,reviewerPath:D.reviewerPath}}function F(a,b){for(let c of[(0,r.WJ)(a,b),(0,r.Ml)(a,b),(0,r.NO)(a,b)])h().rmSync(c,{force:!0})}function G(a){if(!a)return"";try{return h().readFileSync(a,"utf8")}catch{return""}}function H(a,b,c,d,e=18e5){let f=s.get(u(a,b)),g=G((0,r.Ml)(a,b)),h=f?.child.pid??c.reviewerPid??null;f&&h&&!f.identity&&v(h)&&(f.identity||(f.identity=f.identityOf(h)),f.identity);let i=f?.identity??c.reviewerIdentity??null,j=G((0,r.NO)(a,b)),k=function(a){let b=null,c="";for(let d of a.split("\n")){let a=d.trim();if(a.startsWith("{"))try{let d=JSON.parse(a);b||(b=function a(b,c=0){if(!b||"object"!=typeof b||c>4)return null;for(let[d,e]of Object.entries(b)){if(D.has(d)&&"string"==typeof e&&C.test(e))return e;let b=a(e,c+1);if(b)return b}return null}(d));let e=function(a){let b=a.item;if(b&&("agent_message"===b.type||"agent_message"===b.item_type)&&"string"==typeof b.text)return b.text;let c=a.msg;return c?.type==="agent_message"&&"string"==typeof c.message?c.message:null}(d);e&&(c=e)}catch{}}return{sessionId:b,lastAgentMessage:c}}(g),l=G("codex"===d?(0,r.WJ)(a,b):null).trim();if(!f&&null===h&&!g&&!j&&!l&&!c.spawnStartedAt)return null;let m=f?.startedAt??Date.parse(c.spawnStartedAt??""),n=Number.isFinite(m)?Date.now()-m:0,o=l||k.lastAgentMessage||("claude"===d?g.trim():"");if(l)return{status:"done",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:i,code:f?.exit?.code??null,signal:f?.exit?.signal??null};if(!f&&null!==h&&!i&&v(h))return{status:"lost",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:null,code:null,signal:null};if(f?null===f.exit&&v(h):!!(h&&i&&v(h)&&p.B.processIdentity(h)===i))return!f&&n>=e&&h&&A(h,i),{status:"running",stdout:g,stderr:j,finalOutput:"",sessionId:k.sessionId,processIdentity:i,code:null,signal:null};if(!f&&null===h&&!l)return{status:"lost",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:i,code:null,signal:null};let q=f?.exit??null;return{status:q?.code===0||o?"done":!o&&n>=e?"timeout":"failed",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:i,code:q?.code??null,signal:q?.signal??null}}function I(a,b,c={reviewerPid:null,reviewerIdentity:null}){let d=u(a,b),e=s.get(d);s.delete(d);let f=e?.child.pid??c.reviewerPid??null,g=e?.identity??c.reviewerIdentity??null;(e&&clearTimeout(e.timer),e)?B(e):f&&A(f,g)}async function J(a,b,c={reviewerPid:null,reviewerIdentity:null}){let d=u(a,b),e=s.get(d),f=e?.child.pid??c.reviewerPid??null,g=e?.identity??c.reviewerIdentity??null;if(!f)return s.delete(d),!0;e&&(clearTimeout(e.timer),e.terminationStarted=!0);let h=await z(f,g,{ownedByLiveHandle:!!e,leaderExited:e?.exit!==null,fallbackLeader:e?a=>{e.child.kill(a)}:void 0});return h&&s.delete(d),h}},75060:(a,b,c)=>{c.d(b,{em:()=>t,uF:()=>u});var d=c(76760),e=c.n(d),f=c(91836),g=c(94284);c(3302);var h=c(52530),i=c(69882);let j=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,k=(0,g.E)("codex-cwd");function l(a){return"codex-sessions"===a.root?a.path.endsWith(".jsonl"):"claude-projects"===a.root&&!!a.path.endsWith(".jsonl")&&!e().basename(a.path).startsWith("agent-")&&!a.path.includes(e().sep+"subagents"+e().sep)}function m(a){return"idle"!==a.activity&&null===a.pid&&l(a)}function n(a){let b=e().basename(a).match(j);return b?.at(-1)?.toLowerCase()??null}function o(a){if(!a)return null;let b=a.match(j);return b?.at(-1)?.toLowerCase()??null}function p(a){let b=a.indexOf("--session-id"),c=o(b>=0?a[b+1]:void 0);if(c)return c;let d=a.indexOf("--resume"),e=o(d>=0?a[d+1]:void 0);if(e)return e;let f=a.indexOf("resume");return o(f>=0?a[f+1]:void 0)}function q(a){if("claude-projects"===a.root){var b;let c,d=(b=a.path,(c=(0,i.Bz)(b))?e().relative(c,b).split(e().sep)[0]??"":"");return d?"claude:"+d:null}let c=a.cwd??function(a){let b=k.get(a);if(void 0!==b&&""!==b)return b;let c=(0,f.tX)(a,{bytes:8192})??"";return k.set(a,c),c}(a.path);return c?"codex:"+c:null}function r(a){return"claude"===a.engine?"claude:"+(0,f.Me)(a.cwd):"codex:"+a.cwd}function s(a,b){a.pid=b,a.proc="running"}function t(a){let b=a.filter(a=>null===a.pid&&l(a)),c=b.filter(m).slice(0,12);if(0===b.length&&0===c.length)return;let d=(0,h.SP)(b.map(a=>a.path)),e=new Set,f=[];for(let a of b){let b=d.get(a.path)??null;null!==b&&!e.has(b)&&(0,h.pl)(b)?(s(a,b),e.add(b)):f.push(a)}if(0===f.length)return;let g=(0,h.Bj)().filter(a=>!e.has(a.pid)),i=new Map;for(let a of g){let b=p(a.argv);if(!b)continue;let c=a.engine+":"+b,d=i.get(c);d?d.push(a):i.set(c,[a])}let j=[];for(let a of f){let b=n(a.path),d="codex-sessions"===a.root?"codex":"claude",f=(b?i.get(d+":"+b)??[]:[]).filter(a=>!e.has(a.pid));1===f.length?(s(a,f[0].pid),e.add(f[0].pid)):c.includes(a)&&j.push(a)}if(0===j.length)return;let k=new Map;for(let a of g){if(0===a.tty||e.has(a.pid)||null!==p(a.argv))continue;let b=r(a),c=k.get(b);c?c.push(a):k.set(b,[a])}let o=new Set;for(let a of j){let b=q(a);if(null===b||o.has(b))continue;o.add(b);let c=(k.get(b)??[]).filter(a=>!e.has(a.pid));1===c.length&&(s(a,c[0].pid),e.add(c[0].pid))}}function u(a,b=(0,h.Bj)(!0)){let c=q(a),d=n(a.path),e=null;for(let f of b)if(function(a,b,c=q(a)){let d="codex-sessions"===a.root?"codex":"claude-projects"===a.root?"claude":null;if(!d||!a.path.endsWith(".jsonl"))return!1;let e=n(a.path);if(b.engine!==d||(0,h.Vt)(b.argv)||!(0,h.pl)(b.pid))return!1;let f=p(b.argv);return!!e&&f===e||null===f&&0!==b.tty&&null!==c&&r(b)===c}(a,f,c)){if(null!==d&&p(f.argv)===d||(0,h.FQ)(f.pid,a.path))return"session";e="cwd"}return e}},76863:(a,b,c)=>{c.d(b,{Ot:()=>l,xe:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(53133),i=c(10456);function j(a){try{return e().realpathSync(a)}catch{return null}}let k=a=>a;function l(a,b=function(){let a=[],b=b=>{b&&!a.includes(b)&&a.push(b)},c=a=>{try{for(let c of a())b(c)}catch{}};try{b(g().join((0,h.Hy)(),"projects")),b((0,h.o1)())}catch{}return c(h.pW),c(i.vD),a}()){let c=new Map;for(let b of a){let a=j(b);a&&!c.has(a)&&c.set(a,b)}if(!c.size)return k;let d=[];for(let a of b){let b=c.get(j(a)??"\0");b&&b!==a&&d.push([a+g().sep,b+g().sep])}return d.length?(d.sort(([a],[b])=>b.length-a.length),a=>{for(let[b,c]of d)if(a.startsWith(b))return c+a.slice(b.length);return a}):k}function m(a,b){if(!a?.size||b===k)return a;let c=new Set;for(let d of a)c.add(d),c.add(b(d));return c.size===a.size?a:c}},77083:(a,b,c)=>{c.d(b,{VO:()=>y,kR:()=>v,s4:()=>C});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(4351),l=c(50920),m=c(65377),n=c(14071),o=c(53133);let p=new Set(["claude.ai","claude.com","platform.claude.com","console.anthropic.com"]),q=/\x1B(?:\[[0-?]*[ -/]*[@-~]|\][^\x07\x1B]*(?:\x07|\x1B\\))/g,r=/https:\/\/[^\s"'<>]+/g;function s(a){try{return h().readFileSync(`/proc/${a}/stat`,"utf8").split(" ")[21]??null}catch{return null}}async function t(a,b){for(;s(a)===b;)await new Promise(a=>setTimeout(a,25))}function u(a){return(0,o.fg)(a)||a===(0,o.Hy)()}let v={spawn:(a,b,c)=>(0,d.spawn)(a,b,c),kill:(a,b)=>{try{process.kill(-a,b)}catch{try{process.kill(a,b)}catch{}}},pidStartToken:s,isExpectedClaude:function(a){try{let b,c,d,e,f;return b=h().readFileSync(`/proc/${a}/cmdline`,"utf8").split("\0").filter(Boolean),c=/(?:^|\/)claude$/.test(b[0]??"")&&4===b.length,d=/(?:^|\/)(?:node|bun)$/.test(b[0]??"")&&/claude/i.test(b[1]??"")&&5===b.length,e=/(?:^|\/)(?:sh|dash|bash)$/.test(b[0]??"")&&/(?:^|\/)claude$/.test(b[1]??"")&&5===b.length,(f=c?1:d||e?2:-1)>=0&&"auth"===b[f]&&"login"===b[f+1]&&"--claudeai"===b[f+2]}catch{return!1}},waitForExit:t,status:async function(a){return await new Promise(b=>{let c=(0,d.spawn)((0,k.uX)("claude"),["auth","status","--json"],{env:u(a)?(0,o.x0)(a):(0,m.Fd)(process.env),stdio:["ignore","pipe","ignore"],detached:!1}),e="";c.stdout?.on("data",a=>{e.length<65536&&(e+=a.toString("utf8"))});let f=setTimeout(()=>{c.kill("SIGKILL"),b({loggedIn:!1,method:null,email:null,plan:null,indeterminate:!0})},5e3);c.once("close",()=>{clearTimeout(f);try{let a=JSON.parse(e);b({loggedIn:!0===a.loggedIn,method:"string"==typeof a.authMethod?a.authMethod:null,email:"string"==typeof a.email?a.email:null,plan:"string"==typeof a.subscriptionType?a.subscriptionType:null})}catch{b({loggedIn:!1,method:null,email:null,plan:null,indeterminate:!0})}}),c.once("error",()=>{clearTimeout(f),b({loggedIn:!1,method:null,email:null,plan:null,indeterminate:!0})})})},now:Date.now,setTimeout,clearTimeout},w={load:()=>JSON.parse(h().readFileSync((0,l.BQ)("claude-auth-operations.json"),"utf8")),save:a=>{let b=(0,l.BQ)("claude-auth-operations.json");h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});let c=`${b}.${process.pid}.tmp`;try{h().writeFileSync(c,JSON.stringify(a),{mode:384});let d=h().openSync(c,"r");try{h().fsyncSync(d)}finally{h().closeSync(d)}h().renameSync(c,b);let e=h().openSync(j().dirname(b),"r");try{h().fsyncSync(e)}finally{h().closeSync(e)}}finally{h().rmSync(c,{force:!0})}}};function x(a){return"authenticated"===a||"canceled"===a||"timed_out"===a||"failed"===a||"interrupted"===a}let y=new Set(["starting","awaiting_browser","awaiting_code","verifying","canceling"]);function z(a){return!!a&&"object"==typeof a&&"string"==typeof a.operationId&&a.operationId.length>0&&("string"==typeof a.accountId||null===a.accountId)&&"string"==typeof a.phase&&y.has(a.phase)&&("number"==typeof a.pid&&Number.isInteger(a.pid)&&a.pid>0||null===a.pid)&&("string"==typeof a.startToken||null===a.startToken)&&"number"==typeof a.generation&&Number.isInteger(a.generation)&&a.generation>=0&&"string"==typeof a.startedAt&&Number.isFinite(Date.parse(a.startedAt))&&"string"==typeof a.deadlineAt&&Number.isFinite(Date.parse(a.deadlineAt))}function A(a,b,c){return{status:a,code:b,message:c}}class B{constructor(a=v,b=w){this.ports=a,this.store=b,this.operations=new Map,this.children=new Map,this.timers=new Map,this.output=new Map,this.closed=new Map,this.generation=0,this.persistDirty=!1,this.deferredPersist=null,this.recovery=this.reconcilePersisted()}whenRecovered(){return this.recovery}persistedOperations(){return[...this.operations.values()].filter(a=>!x(a.phase)).map(({operationId:a,accountId:b,phase:c,pid:d,startToken:e,generation:f,startedAt:g,deadlineAt:h})=>({operationId:a,accountId:b,phase:c,pid:d,startToken:e,generation:f,startedAt:g,deadlineAt:h}))}persist(){try{(0,n.oV)(()=>this.store.save(this.persistedOperations()))}catch(a){if(!(a instanceof n.gB))throw a;this.queuePersist()}}queuePersist(){if(this.persistDirty=!0,this.deferredPersist)return;let a=(async()=>{for(;this.persistDirty;)this.persistDirty=!1,await (0,n.Cu)(async()=>this.store.save(this.persistedOperations()))})();this.deferredPersist=a,a.then(()=>{this.deferredPersist=null,this.persistDirty&&this.queuePersist()},()=>{this.deferredPersist=null;let a=[...this.operations.values()].find(a=>!x(a.phase));a&&this.persistenceFailure(a.operationId)})}refreshDurableOperations(){let a;try{a=this.store.load()}catch{return}for(let b of a)z(b)&&(this.generation=Math.max(this.generation,b.generation),this.operations.has(b.operationId)||this.operations.set(b.operationId,{...b,loginUrl:null,acceptsCode:!1,result:null,submitted:"verifying"===b.phase}))}summary(a){let{operationId:b,phase:c,loginUrl:d,acceptsCode:e,deadlineAt:f,result:g}=a;return{operationId:b,phase:c,loginUrl:d,acceptsCode:e,deadlineAt:f,result:g}}update(a,b){let c=this.operations.get(a);if(!c)throw Error("unknown Claude login operation");let d={...c,...b};this.operations.set(a,d);try{this.persist()}catch(b){throw this.operations.set(a,c),b}return d}reserve(){if(this.refreshDurableOperations(),[...this.operations.values()].some(a=>!x(a.phase)))throw Error("a Claude login operation is already running");let a=this.ports.now(),b={operationId:f().randomUUID(),accountId:null,phase:"starting",loginUrl:null,acceptsCode:!1,deadlineAt:new Date(a+6e5).toISOString(),result:null,pid:null,startToken:null,generation:++this.generation,submitted:!1,startedAt:new Date(a).toISOString()};this.operations.set(b.operationId,b);try{this.persist()}catch(a){throw this.operations.delete(b.operationId),a}return this.summary(b)}abandon(a){let b=this.operations.get(a);if(!(!b||x(b.phase)))try{this.finish(a,"failed",A("failure","account_creation_failed","Claude account creation could not complete"))}catch{this.persistenceFailure(a)}}start(a,b){let c=null,d=null;try{if(b){let d=this.operations.get(b);if(!d||x(d.phase)||null!==d.accountId)throw Error("Claude login reservation is unavailable");c=b,this.update(c,{accountId:a})}else c=this.reserve().operationId,this.update(c,{accountId:a});let e=c;if(!e)throw Error("Claude login operation is unavailable");let f=(0,o.ob)(a);if(!u(f.home))throw Error("unsafe Claude account");let g=this.ports.spawn((0,k.uX)("claude"),["auth","login","--claudeai"],{cwd:process.env.HOME||"/",env:{...(0,o.x0)(f.home),UMASK:"077"},detached:!0,stdio:["pipe","pipe","pipe"]}),h=g.pid??null,i=h?this.ports.pidStartToken(h):null;if(!h||!i||!this.ports.isExpectedClaude(h)){g.stdin?.end();try{g.kill?.("SIGKILL")}catch{}return this.summary(this.finish(e,"failed",A("failure","launch_unfenced","Claude login process could not be verified")))}d={...this.operations.get(e),pid:h,startToken:i,phase:"awaiting_browser"};let j=this.update(e,{pid:h,startToken:i,phase:"awaiting_browser"});this.children.set(e,g),this.captureStdout(e,g.stdout),g.stderr?.on("data",()=>void 0),this.closed.set(e,new Promise(a=>g.once("close",()=>a()))),g.once("close",()=>{this.reconcileExit(e,f.home).catch(()=>this.persistenceFailure(e))}),g.once("error",()=>{let a=this.operations.get(e);if(!(!a||x(a.phase)))try{this.finish(e,"failed",A("failure","process_failed","Claude login process ended unexpectedly"))}catch{this.persistenceFailure(e)}});let l=this.ports.setTimeout(()=>{this.timeout(e).catch(()=>this.persistenceFailure(e))},6e5);return this.timers.set(e,l),this.summary(j)}catch{if(d)return this.summary(this.persistenceFailure(c,d));if(c)try{return this.summary(this.finish(c,"failed",A("failure","start_failed","Claude login could not start")))}catch{return this.summary(this.persistenceFailure(c))}throw Error("Claude login could not start")}}captureStdout(a,b){b?.on("data",b=>{let c=this.operations.get(a);if(!c||"awaiting_browser"!==c.phase)return;let d=((this.output.get(a)??"")+(Buffer.isBuffer(b)?b.toString("utf8"):b).replace(q,"").replace(/\r/g,"")).slice(-65536);this.output.set(a,d);let e=function(a){for(let b of a.match(r)??[])try{let a=new URL(b);if(p.has(a.hostname))return a.toString()}catch{}return null}(d);if(e)try{this.update(a,{loginUrl:e,phase:"awaiting_code",acceptsCode:!0})}catch{this.persistenceFailure(a)}})}async input(a,b){let c;this.refreshDurableOperations();let d=this.operations.get(a);if(!d||x(d.phase))throw Error("login operation is unavailable");if(d.submitted)throw Error("login code was already submitted");if("awaiting_code"!==d.phase||!d.acceptsCode)throw Error("login operation is not ready for code input");if(!/^[\x20-\x7e]{1,8192}$/.test(b)||b.length>8192)throw Error("login code is invalid");let e=this.children.get(a);if(!e?.stdin)throw Error("login process is unavailable");try{c=this.update(a,{submitted:!0,acceptsCode:!1,phase:"verifying"})}catch{return this.summary(this.persistenceFailure(a))}try{e.stdin.write(b+"\n")}catch{this.terminateWithEscalation(c);try{return this.summary(this.finish(a,"failed",A("failure","input_failed","Claude login could not verify the code")))}catch{return this.summary(this.persistenceFailure(a))}}return this.summary(c)}ownsProcess(a){return null!==a.pid&&null!==a.startToken&&this.ports.pidStartToken(a.pid)===a.startToken&&this.ports.isExpectedClaude(a.pid)}terminate(a,b){this.ownsProcess(a)&&this.ports.kill(a.pid,b)}terminateWithEscalation(a){this.terminate(a,"SIGTERM"),this.ports.setTimeout(()=>this.terminate(a,"SIGKILL"),2e3)}releaseRuntime(a){let b=this.timers.get(a);b&&this.ports.clearTimeout(b),this.timers.delete(a),this.children.delete(a),this.closed.delete(a),this.output.delete(a)}persistenceFailure(a,b){let c=b??this.operations.get(a);if(!c)throw Error("Claude login persistence failed");this.terminateWithEscalation(c),this.releaseRuntime(a);let d={...c,phase:"failed",acceptsCode:!1,loginUrl:null,result:A("failure","persistence_failed","Claude login state could not be saved"),pid:null,startToken:null};return this.operations.set(a,d),d}async awaitClose(a){let b=this.closed.get(a);b&&await Promise.race([b,new Promise(a=>this.ports.setTimeout(a,2e3))])}async cancel(a){this.refreshDurableOperations();let b=this.operations.get(a);if(!b)throw Error("unknown Claude login operation");if(x(b.phase)||"canceling"===b.phase)return this.summary(b);try{this.update(a,{phase:"canceling"})}catch{return this.summary(this.persistenceFailure(a))}this.terminate(b,"SIGTERM"),await new Promise(a=>this.ports.setTimeout(a,2e3));let c=this.operations.get(a);c&&this.terminate(c,"SIGKILL"),await this.awaitClose(a);try{return this.summary(this.finish(a,"canceled",A("canceled","canceled","Claude login was canceled")))}catch{return this.summary(this.persistenceFailure(a))}}async timeout(a){let b=this.operations.get(a);if(!b||x(b.phase)||"canceling"===b.phase)return;try{this.update(a,{phase:"canceling"})}catch{this.persistenceFailure(a);return}this.terminate(b,"SIGTERM"),await new Promise(a=>this.ports.setTimeout(a,2e3));let c=this.operations.get(a);c&&this.terminate(c,"SIGKILL"),await this.awaitClose(a);try{this.finish(a,"timed_out",A("failure","timed_out","Claude login timed out"))}catch{this.persistenceFailure(a)}}async reconcileExit(a,b){let c=this.operations.get(a);if(!(!c||x(c.phase))&&"canceling"!==c.phase)try{this.update(a,{phase:"verifying"});let c=await this.ports.status(b),d=this.operations.get(a);if(!d||"verifying"!==d.phase)return;let e=!c.loggedIn||(0,o.Yb)(b,!0);try{this.finish(a,c.loggedIn&&e?"authenticated":"failed",c.loggedIn&&e?A("success","authenticated","Claude authentication completed"):A("failure","verification_failed","Claude authentication could not be verified"))}catch{this.persistenceFailure(a)}}catch{try{this.finish(a,"failed",A("failure","verification_failed","Claude authentication could not be verified"))}catch{this.persistenceFailure(a)}}}finish(a,b,c){let d=this.update(a,{phase:b,acceptsCode:!1,result:c,pid:null,startToken:null});return this.releaseRuntime(a),d}get(a){this.refreshDurableOperations();let b=this.operations.get(a);return b?this.summary(b):null}forAccount(a){return this.forAccounts([a]).get(a)??null}forAccounts(a){let b=[],c=!0;try{b=this.store.load().filter(z)}catch{c=!1}return new Map(a.map(a=>{let d=b.filter(b=>b.accountId===a).sort((a,b)=>b.generation-a.generation)[0];if(d){let b=this.operations.get(d.operationId);return b?[a,this.summary(b)]:[a,{operationId:d.operationId,phase:d.phase,loginUrl:null,acceptsCode:!1,deadlineAt:d.deadlineAt,result:null}]}let e=[...this.operations.values()].filter(b=>b.accountId===a&&(x(b.phase)||!c)).sort((a,b)=>b.generation-a.generation)[0];return[a,e?this.summary(e):null]}))}async terminateInherited(a){return!this.ownsProcess(a)||(this.terminate(a,"SIGTERM"),await this.ports.waitForExit(a.pid,a.startToken),!this.ownsProcess(a)||(this.terminate(a,"SIGKILL"),await this.ports.waitForExit(a.pid,a.startToken),!this.ownsProcess(a)))}async reconcilePersisted(){try{for(let a of this.store.load()){if(!z(a))continue;this.generation=Math.max(this.generation,a.generation);let b={...a,loginUrl:null,acceptsCode:!1,result:null,submitted:!1};this.operations.set(b.operationId,{...b,phase:"canceling"}),this.persist();let c=await this.terminateInherited(b),d=!1;if(c&&"string"==typeof b.accountId)try{let a=(0,o.ob)(b.accountId);u(a.home)&&(0,o.Yb)(a.home,!0)&&(d=(await this.ports.status(a.home)).loggedIn)}catch{}this.operations.set(b.operationId,{...b,phase:d?"authenticated":"interrupted",result:d?A("success","authenticated","Claude authentication completed"):A("failure","interrupted","Claude login was interrupted by restart"),pid:null,startToken:null})}this.persist()}catch{}}}let C=new B},78598:(a,b,c)=>{c.d(b,{oS:()=>h,xb:()=>n});var d=c(45481),e=c(7058),f=c(94284),g=c(38849);let h="questions-v5";for(let a of["questions","questions-v2","questions-v3","questions-v4"])(0,f.E)(a).clear();let i=(0,f.E)(h),j=/<system-reminder\b[^>]*>[\s\S]*?<\/system-reminder>/gi;function k(a){return(0,g.r$)(a.timestamp)??(0,g.r$)(a.created_at)??new Date().toISOString()}function l(a){let b=(0,g.r$)(a.label)?.trim();return b?{label:b.replace(/\s*\(Recommended\)\s*$/i,"").trim()||b,description:(0,g.r$)(a.description)?.trim()??"",recommended:/\(Recommended\)\s*$/i.test(b)}:null}function m(a){let b=(0,g.r$)(a.question)?.trim();if(!b)return null;let c=(0,g.Em)(a.options).map(l).filter(a=>null!==a);return c.sort((a,b)=>Number(b.recommended)-Number(a.recommended)),{question:b,header:(0,g.r$)(a.header)?.trim()??"Question",multiSelect:!0===a.multiSelect,options:c}}function n(a){if("claude-projects"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=i.get(a.path),f=c?.[0]===a.size&&c[1]===b?c[2]:void 0;if(void 0===f){f=null;let c=new Set,h=(0,e.w8)(a.path,a.size,b);for(let b of h.records.reverse()){if(function(a){if("user"!==a.type||!0===a.isSidechain||!0===a.isCompactSummary||(0,d.fR)(a))return!1;let b=(0,g.xK)(a.message)?.content,c=(0,d.hB)(b).trim();if(c){let a=c.replace(j,"").trim();return!!a&&!(0,d.r1)(a)}return(0,g.Em)(b).some(a=>"tool_result"!==a.type&&"text"!==a.type)}(b))break;let e=function(a){let b=(0,g.r$)(a.tool_use_id);if(b)return b;for(let b of(0,g.Em)((0,g.xK)(a.message)?.content)){let a=(0,g.r$)(b.tool_use_id);if("tool_result"===b.type&&a)return a}return null}(b);if(e){c.add(e);continue}let h=function(a){if("assistant"!==a.type)return null;for(let b of(0,g.Em)((0,g.xK)(a.message)?.content)){if("tool_use"!==b.type)continue;let a=(0,g.r$)(b.id),c=(0,g.r$)(b.name),d=(0,g.xK)(b.input)??{};if(a&&("AskUserQuestion"===c||"ExitPlanMode"===c))return{id:a,name:c,input:d}}return null}(b);if(!h)continue;if(c.has(h.id))break;if("AskUserQuestion"===h.name){let c=(0,g.Em)(h.input.questions).map(m).filter(a=>null!==a);if(!c.length)break;f={kind:"question",toolUseId:h.id,transcriptPath:a.path,askedAt:k(b),questions:c};break}let i=(0,g.r$)(h.input.plan)?.trim();if(!i)break;f={kind:"plan",toolUseId:h.id,transcriptPath:a.path,askedAt:k(b),plan:i};break}h.complete&&i.set(a.path,[a.size,b,f])}return f&&"running"===a.proc&&null!==a.pid?{...f,pid:a.pid,paneTarget:null}:null}},78906:(a,b,c)=>{let d,e,f,g,h;c.d(b,{H6:()=>J,Ny:()=>B,RK:()=>P,VO:()=>Q,_F:()=>O,co:()=>M});var i=c(73024),j=c.n(i),k=c(76760),l=c.n(k);c(2208);var m=c(50920),n=c(65465),o=c(55883),p=c(68574);c(98918);var q=c(91620),r=c(55204),s=c(73385),t=c(79866);function u(a,b={},c=(0,s.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,r.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...q.W.find(b=>b.id===a).config}}function v(a){let b=u("cleaner",{},a);return{..."codex"===b.engine?b:{...q.W.find(a=>"cleaner"===a.id).config},effort:"low"}}function w(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function x(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,r.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function y(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==function(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=function(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=w(a.agent)??x(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=w(a.reviewer)??x(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=w(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:v(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}(a.template)}v(),e=u("builder",{},d=(0,s.e3)()),f=u("builder",{mode:"plain",domain:"frontend"},d),g=u("reviewer",{},d),[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:e,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:f,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:g,fixer:h=v(d),roundLimit:5,reviewerMode:"headless"}]},{name:"Sol medium → Sol xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:e,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:g,fixer:h,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}));let z=new WeakMap;function A(a){return z.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function B(){return A(F().snapshot())}function C(){let a=function(){let a;try{a=j().readFileSync((0,m.BQ)("workflows.json"),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(y))throw Error("legacy workflow state contains malformed records");return a.workflows.map(D)}function D(a){return{...a,project:(0,n.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let E=new Map;function F(){let a=(0,m.BQ)("state.sqlite"),b=E.get(a);if(b)return b;(0,t.t0)(a,[{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:C,key:a=>a.id}]);let c=new t.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>y(a)?D(a):null,clone:a=>D(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!y(a))throw Error("refusing to persist a malformed workflow record")}});return E.set(a,c),c}function G(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function H(a,b,c){return a===c.path&&(b??null)===c.conversationId}function I(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}async function J(a=(0,o.tk)()){let b=B(),c=[];await (0,p.pV)(b,async b=>{let d,e,f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null};d=G({path:b.srcPath??null,conversationId:b.srcConversationId},a),b.srcPath=d.path,b.srcConversationId=d.conversationId,e=G({path:b.fixerPath,conversationId:b.fixerConversationId},a),b.fixerPath=e.path,b.fixerConversationId=e.conversationId,d.changed||e.changed;let h={path:b.srcPath??null,conversationId:b.srcConversationId??null},i={path:b.fixerPath,conversationId:b.fixerConversationId??null},j=[];await (0,p.pV)(b.stageRuns,b=>{let c,d={path:b.agentPath,conversationId:b.agentConversationId??null};c=G({path:b.agentPath,conversationId:b.agentConversationId},a),b.agentPath=c.path,b.agentConversationId=c.conversationId,c.changed&&j.push({index:b.index,before:d,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let k=I(f,h),l=I(g,i);(k||l||j.length>0)&&c.push({id:b.id,source:k?{before:f,after:h}:null,fixer:l?{before:g,after:i}:null,runs:j})}),function(a){if(0===a.length)return;let b=B(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&H(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&H(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&H(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&M(b)}(c)}function K(a,b){return JSON.stringify(a)===JSON.stringify(b)}function L(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function M(a){let b=z.get(a);if(!b){F().replaceSync(a),A(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));F().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=F().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=D(function a(b,c,d){if(K(c,b))return structuredClone(d);if(K(d,b))return structuredClone(c);if(L(b)&&L(c)&&L(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=F().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),A(a)}function N(a){return l().join((0,m.BQ)("workflows"),a)}function O(a){return l().join(N(a),"setup-stdout.log")}function P(a){return l().join(N(a),"setup-stderr.log")}function Q(a){return l().join(N(a),"setup-exit")}},79866:(a,b,c)=>{c.d(b,{UY:()=>M,t0:()=>G,jY:()=>K,Gw:()=>L,Vx:()=>I,M:()=>J});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(30277),k=c(53410);let l="LLV_HOT_STATE_RELEASE_REVISION";function m(a){return"string"==typeof a&&/^[0-9a-f]{40}$/.test(a)}function n(a){try{var b;let c=!(b=JSON.parse(g().readFileSync(i().join(a,"hot-state-authority.json"),"utf8")))||"object"!=typeof b||Array.isArray(b)?null:1===b.schemaVersion&&Number.isInteger(b.epoch)&&!(b.epoch<1)&&["legacy","preparing","sqlite","fencing"].includes(String(b.mode))&&(null===b.releaseRevision||m(b.releaseRevision))&&"string"==typeof b.updatedAt&&(void 0===b.activationReadyAt||"string"==typeof b.activationReadyAt)&&(void 0===b.releaseReadyAt||"string"==typeof b.releaseReadyAt)&&(void 0===b.releaseReadyAt||void 0!==b.activationReadyAt)&&(void 0===b.checkpoint||function(a){if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.revisions,c=b?[b.flows,b.pipelines,b.pipelinesArchive,b.workflows]:[];return"string"==typeof a.acknowledgedAt&&4===c.length&&c.every(a=>Number.isInteger(a)&&a>=0)}(b.checkpoint))?b:null;if(!c)throw Error("hot-state authority is invalid");return c}catch(a){if("ENOENT"===a.code)return null;throw a}}function o(a,b=process.env){let c=b.LLV_VIEWER_DEPLOY_TARGET?.trim()||i().join(a,"viewer-release.json");try{var d;let a=!(d=JSON.parse(g().readFileSync(c,"utf8")))||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.endpoint&&m(d.revision)&&(void 0===d.hotStateBackend||"sqlite-v1"===d.hotStateBackend)?d:null;if(!a)throw Error("Viewer release target cannot authorize hot state");return a}catch(a){if("ENOENT"===a.code)return null;throw a}}function p(a,b=process.env){let c=o(a,b);if(!c)return null;let d=b[l]?.trim();if(d)return m(d)&&d===c.revision?d:null;let e=b.PORT?.trim();if(!e)return null;try{return new URL(c.endpoint).port===e?c.revision:null}catch{return null}}function q(a,b=process.env){let c=o(a,b);if(!c)return!0;let d=n(a),e=p(a,b);return e?d?.mode==="sqlite"&&d.releaseRevision===e&&c.revision===e:!(b[l]?.trim()||b.PORT?.trim())&&d?.mode==="sqlite"&&d.releaseRevision===c.revision&&"string"==typeof d.activationReadyAt}let r=new Int32Array(new SharedArrayBuffer(4)),s=new Set,t=0;function u(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("SQLite state stores require the Bun runtime");return a.Database}function v(a,b){let c=a.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?");return b.every(a=>{let b=c.get(a.collection);return b?.schema_version===a.schemaVersion&&b.migration_id===a.migrationId})}function w(a,b){if(!g().existsSync(a))return!1;let c=null;try{return c=A(a),v(c,b)}catch{return!1}finally{c?.close()}}function x(a){if(!q(i().dirname(a)))throw new k.Qm("hot state writes are fenced during release handoff")}function y(a,b=!1){if(q(i().dirname(a))||s.has(i().resolve(a))&&function(a,b=process.env){let c=o(a,b);if(!c)return!0;let d=p(a,b);if(!d)return!1;let e=n(a);return e?.mode==="preparing"&&e.releaseRevision===d&&c.revision===d}(i().dirname(a)))return;let c=p(i().dirname(a)),d=n(i().dirname(a));if(!b||null===c||d?.mode!=="fencing"||d.releaseRevision!==c)throw new k.Qm("hot state migration is waiting for release promotion")}function z(a){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(u())(a,{create:!0,strict:!0});try{for(let a=0;a<6e3;a+=1)try{return b.exec("PRAGMA busy_timeout = 0; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON;"),b}catch(a){if(!E(a))throw a;Atomics.wait(r,0,0,5)}throw new k.Qm("state database connection is busy")}catch(a){throw b.close(),a}}function A(a){t+=1;let b=new(u())(a,{readonly:!0,strict:!0});return b.exec("PRAGMA busy_timeout = 0; PRAGMA foreign_keys = ON;"),b}function B(a){let b=z(a);try{for(let c=0;c<6e3;c+=1)try{return b.exec("PRAGMA journal_mode = WAL; PRAGMA auto_vacuum = INCREMENTAL;"),b.exec("BEGIN IMMEDIATE"),b.exec(`
171
+ ${a.safetyFences.map(a=>`- ${a}`).join("\n")}`:""}function l(a,b){return"builder"!==a.id?a.config:"frontend"===b.domain?f:"apply-fixes"===b.mode?g:a.config}function m(a,b={},c={},f=(0,i.pQ)()){let g=f.find(b=>b.id===a);if(!g)return{ok:!1,error:`unknown role: ${a} (allowed: ${f.map(a=>a.id).join(", ")})`};let n=function(a,b,{requireRequired:c=!0}={}){if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return{ok:!1,error:"roleParams must be an object"};let d=b??{},e=new Map(a.parameters.map(a=>[a.key,a]));for(let b of Object.keys(d))if(!e.has(b)){let c=a.parameters.map(a=>a.key).join(", ")||"none";return{ok:!1,error:`unknown role parameter: ${b} (${a.id} accepts: ${c})`}}let f={};for(let b of a.parameters){let a=d[b.key];if(void 0===a||""===a){if(b.required&&c)return{ok:!1,error:`missing required role parameter: ${b.key}`};f[b.key]=(0,h.y)(b);continue}if("integer"===b.kind){if(!Number.isInteger(a)||"number"!=typeof a||void 0!==b.min&&a<b.min||void 0!==b.max&&a>b.max)return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=a;continue}let e=function(a){if("string"!=typeof a)return null;let b=a.trim();return b&&b.length<=2e3?b:null}(a);if(!e||"select"===b.kind&&!b.options?.includes(e))return{ok:!1,error:`invalid role parameter: ${b.key}`};f[b.key]=e}return{ok:!0,value:f}}(g,b);if(!n.ok)return n;let o=function(a,b,c){let f={...l(a,b),...c};if("claude"!==f.engine&&"codex"!==f.engine)return{ok:!1,error:"engine must be claude or codex"};let g=(0,e.RC)(f.engine,f.model);return"error"in g?{ok:!1,error:g.error}:(f.model=g.model,(0,d.z9)(f.engine,f.effort))?{ok:!0,value:f}:{ok:!1,error:`effort for ${f.engine} must be one of: ${"codex"===f.engine?"low, medium, high, xhigh":"low, medium, high, xhigh, max"}`}}(g,n.value,c);return o.ok?{ok:!0,value:{definition:g,config:o.value,params:n.value,prompt:j(g,n.value)+k(g),requiresDeploymentConfirmation:"deployer"===g.id}}:o}function n(){return(0,i.pQ)()}},55643:(a,b,c)=>{c.d(b,{$q:()=>w,VW:()=>n,c1:()=>o,g8:()=>v,k8:()=>x,oN:()=>q});var d=c(93812),e=c(31973);let f=Object.freeze(["viewer"]),g=Object.freeze(["viewer","telegram"]),h=Object.freeze([...g]),i=Object.freeze([...f]);Object.freeze(["viewer","telegram"]);let j=Object.freeze({grantable:g,operatorRoot:h,delegated:i});function k(a){return["viewer",...new Set(a.filter(a=>"viewer"!==a))]}function l(a,b=j){let c=function(a,b=j){return"operator-root"===a?b.operatorRoot:b.delegated}(a.origin,b);return k((null==a.requested?c:c.filter(b=>a.requested.includes(b))).filter(a=>b.grantable.includes(a)))}function m(a){return"delegated"===(0,d.GU)(a)?"delegated":a.origin?.kind==="operator"||0===a.delegationDepth?"operator-root":"delegated"}function n(a,b=j){return l({origin:m(a),requested:a.requested},b)}function o(a,b=j){return Array.isArray(a)?k(a.filter(a=>"string"==typeof a&&b.grantable.includes(a))):[...f]}function p(a){return 1===a.length&&"viewer"===a[0]}function q(a){let b=a=>Array.isArray(a)&&!p(a);return!!a&&"object"==typeof a&&(!!b(a.launchProfile?.mcpServers)||!!Array.isArray(a.generations)&&a.generations.some(a=>{let c=a?.launchProfile;return b(c?.mcpServers)}))}function r(a,b){return a.length===b.length&&a.every((a,c)=>a===b[c])}function s(a,b,c){let d=new Map,g=new Map,h=new Map,i=new Map;for(let[k,n]of Object.entries(a.conversations)){let o=a.lineageEdges?.[k],q=!!(o?.parentConversationId&&o.parentConversationId!==k);for(let a of(i.set(k,m({parentConversationId:n.generations.at(-1)?.launchProfile.parentConversationId??null,agentRole:n.agentRole,delegationDepth:n.delegationDepth})),n.generations)){var j;let i=(j=n.engine,(0,e.pp)({engine:j,sessionId:a.id})),k=function(a,b,c,d){let e=b.launchProfile.mcpServers;if(p(e))return e;let g=m({parentConversationId:b.launchProfile.parentConversationId,agentRole:a.agentRole,delegationDepth:a.delegationDepth});return d&&"delegated"!==g?[...f]:l({origin:g,requested:e},c)}(n,a,b,q);c&&!r(a.launchProfile.mcpServers,k)&&(a.launchProfile.mcpServers=k);let o=q?"delegated":m({parentConversationId:a.launchProfile.parentConversationId,agentRole:n.agentRole,delegationDepth:n.delegationDepth});if(h.has(i)?h.get(i)!==o&&h.set(i,null):h.set(i,o),d.has(i)){let a=d.get(i);null!==a&&r(a,k)||d.set(i,null)}else d.set(i,k);let s=a.path;s&&(g.has(s)?g.get(s)!==i&&g.set(s,null):g.set(s,i))}}return{grants:d,pathOwner:g,origins:h,conversationOrigins:i}}function t(a,b,c){if(b.key&&(0,e.pp)({engine:b.key.engine,sessionId:b.key.sessionId})!==a)return null;if(b.artifactPath){let d=c.pathOwner.get(b.artifactPath);if(void 0!==d&&d!==a)return null}if(c.grants.has(a))return c.grants.get(a)}function u(a,b,c){let d=s(a,b,!0);for(let[b,e]of Object.entries(a.entries)){let a=e.launchProfile?.mcpServers;if(!a||p(a))continue;let g=t(b,e,d);if(void 0===g&&!c)continue;let h=g??f;r(a,h)||(e.launchProfile.mcpServers=[...h])}let g=function(a,b){let c=new Map,d=(a,b)=>{let d=c.get(a)??new Set;d.add(b),c.set(a,d)};for(let[b,c]of Object.entries(a.lineageEdges??{})){if(!c.parentConversationId||c.parentConversationId===b)continue;let a=c.evidence?.launchId;"string"==typeof a&&a&&d(a,"delegated")}for(let[c,f]of Object.entries(a.receipts??{})){let g=f.conversationId;if(g){let e=a.lineageEdges?.[g];e?.parentConversationId&&e.parentConversationId!==g&&d(c,"delegated");let f=b.conversationOrigins.get(g);f&&d(c,f)}if(!f.key)continue;let h=(0,e.pp)({engine:f.key.engine,sessionId:f.key.sessionId});if(!b.origins.has(h))continue;let i=b.origins.get(h);if(i)d(c,i);else for(let a of["operator-root","delegated"])d(c,a)}return c}(a,d);for(let[c,d]of Object.entries(a.receipts??{})){let a=d.launchProfile?.mcpServers;if(!a||p(a))continue;let e=function(a,b,c,d){let e=m({agentRole:c.agentRole,delegationDepth:c.delegationDepth,parentConversationId:c.parentConversationId}),f=a.get(b);return f&&(f.size>1||!f.has(e))?null:l({origin:e,requested:c.launchProfile.mcpServers},d)}(g,c,d,b)??f;r(a,e)||(d.launchProfile.mcpServers=[...e])}return a}function v(a,b=j){return u(a,b,!1)}function w(a,b=j){return u(a,b,!0)}function x(a,b,c=j){let d=(0,e.pp)({engine:b.engine,sessionId:b.sessionId}),g=a.entries[d],h=g?.launchProfile?.mcpServers;if(!g||!h||p(h))return;let i=t(d,g,s(a,c,!1))??f;r(h,i)||(g.launchProfile.mcpServers=[...i])}},56404:(a,b,c)=>{c.d(b,{L1:()=>h});let d=globalThis;async function e(a=fetch,b=process.env){let c=b.LLV_VIEWER_CONTROL_URL?.trim()||"http://127.0.0.1:8898",d=await a(new URL("/api/pipelines/tick",c),{method:"POST",headers:{"content-type":"application/json",origin:c,"sec-fetch-site":"same-origin"},body:"{}"});if(!d.ok)throw Error(`pipeline controller request failed with status ${d.status}`)}async function f(){await e()}let g=d.__llvPipelineSignal??={tick:f,scheduled:!1};function h(){g.scheduled||null===g.tick||(g.scheduled=!0,queueMicrotask(()=>{g.scheduled=!1;let a=g.tick;null!==a&&a().catch(a=>{console.error("[pipeline controller] requested tick failed",a)})}))}},56458:(a,b,c)=>{c.d(b,{Wz:()=>e,__:()=>d});let d=9e5;function e(a,b=Date.now()){if(!Number.isFinite(b)||!Number.isFinite(a.observedAt)||void 0!==a.authCheckedAt&&!Number.isFinite(a.authCheckedAt))return null;let c=b-a.observedAt,d=b-(a.authCheckedAt??a.observedAt);if(!a.authenticated||"live"!==a.provenance.source||c<0||d<0||c>3e5||d>3e5||!a.limits)return null;let f=["session","weekly"].map(b=>({window:b,value:a.limits?.[b]})).filter(a=>null!==a.value&&void 0!==a.value);return f.some(({value:a})=>!Number.isFinite(a.usedPercent)||a.usedPercent<0||a.usedPercent>100||null!==a.resetsAt&&(!Number.isSafeInteger(a.resetsAt)||a.resetsAt<0))?null:f.length?f.map(({window:a,value:b})=>({window:a,percent:100-b.usedPercent})).sort((a,b)=>a.percent-b.percent||a.window.localeCompare(b.window))[0]??null:null}},56514:(a,b,c)=>{c.d(b,{P:()=>f,a:()=>d});let d={kind:"operator"};function e(a){return a?.trim()||null}function f(a,b){if(null===b)return null;if("operator"===b.kind)return`${a} by operator`;let c=e(b.role)??"agent",d=e(b.conversationId);return`${a} by ${c}${d?` ${d}`:""}`}},57726:(a,b,c)=>{c.d(b,{lD:()=>p});var d=c(10456),e=c(53133),f=c(68343),g=c(62862),h=c(14071),i=c(4116);c(85881);var j=c(65377);function k(a,b){if("claude"===a){let c=(0,e.ob)(b);return{engine:a,accountId:c.id,kind:c.kind,home:c.home,transcriptRoot:c.projectsDir,env:"managed"===c.kind?(0,e.x0)(c.home):(0,j.Fd)(process.env)}}let c=(0,d.O$)(b);return{engine:a,accountId:c.id,kind:c.kind,home:c.home,transcriptRoot:c.sessionsDir,env:{...(0,j.Fd)(process.env),CODEX_HOME:c.home}}}function l(a,b){let c=("claude"===a?(0,e.Fn)():(0,d.Sq)()).find(a=>a.id===b);if(!c)throw Error(`unknown ${a} account: ${b}`);return{id:c.id,label:c.label,kind:c.kind,active:("claude"===a?(0,e.No)():(0,d.O)())===b,auth:{state:c.authPresent?"authenticated":"signed_out",method:null,email:null,plan:null,checkedAt:null},limits:{state:"unavailable",session:null,weekly:null,checkedAt:null},login:null}}c(98934);class m extends Error{constructor(a,b){super(`${a} account requires authentication`),this.engine=a,this.accountId=b,this.name="AccountAuthenticationRequiredError"}}class n extends Error{constructor(a,b){super(`${a} account login is in progress`),this.engine=a,this.accountId=b,this.name="AccountLoginPendingError"}}async function o(a,b,c=(0,i.tk)()){return await (0,h.Cu)(async()=>(function(a,b,c){let h;if("claude"===a?(0,e.kK)():(0,d.J0)()){if("claude"===a)throw new e.OL;throw new d.NE}let i=("claude"===a?(0,e.Fn)():(0,d.Sq)()).find(a=>a.id===b);if(!i){if("claude"===a)throw new e.UV(b);throw new d.m1(b)}if("claude"===a?null!==(h=f.s4.forAccount(b))&&f.VO.has(h.phase):null!==i.loginPane||"pending"===(0,g.VD)().peekLogin(i).attemptState)throw new n(a,b);if(!i.authPresent)throw new m(a,b);let j="claude"===a?(0,e.No)():(0,d.O)(),k=c.engineRouting(a).activeAccountId;"claude"===a?(0,e.ss)(b):(0,d.b0)(b);try{c.setEngineRouting(a,b)}catch(f){let b=[];try{c.engineRouting(a).activeAccountId!==k&&c.setEngineRouting(a,k??j)}catch(a){b.push(a)}try{"claude"===a?(0,e.ss)(j):(0,d.b0)(j)}catch(a){b.push(a)}if(b.length>0)throw AggregateError([f,...b],"account selection rollback failed");throw f}return l(a,b)})(a,b,c))}let p={list:async()=>({claude:{active:(0,e.No)(),accounts:(0,e.Fn)().map(a=>l("claude",a.id))},codex:{active:(0,d.O)(),accounts:(0,d.Sq)().map(a=>l("codex",a.id))}}),add:async(a,b)=>await (0,h.Cu)(async()=>{let c="claude"===a?(0,e.fM)(b):(0,d.Ut)(b);return l(a,c.id)}),select:async(a,b)=>o(a,b),status:async(a,b)=>l(a,b),async submitLoginInput(){throw Error("login input is Claude-operation specific")},async cancelLogin(){throw Error("login cancellation is Claude-operation specific")},resolveSpawn:(a,b)=>k(a,b??(0,i.tk)().engineRouting(a).activeAccountId??void 0),resolveHeadlessSpawn(a,b,c=[]){let f=function(a,b,c,d,e=Date.now()){let f=new Map(b.map(a=>[a.accountId,a])),g=new Set(d),h=a.filter(a=>a.authPresent).map(a=>({account:a,capacity:function(a,b){if(!a||"live"!==a.provenance.source)return{kind:"unknown"};let c=Date.parse(a.observedAt),d=Date.parse(a.authCheckedAt);if(!Number.isFinite(c)||!Number.isFinite(d)||b<c||b<d||b-c>3e5||b-d>3e5)return{kind:"unknown"};if(!a.authenticated)return{kind:"unavailable"};if(!a.limits)return{kind:"unknown"};let e=[a.limits.session,a.limits.weekly].filter(a=>null!==a);if(!e.length||e.some(a=>!Number.isFinite(a.usedPercent)||a.usedPercent<0||a.usedPercent>100||null!==a.resetsAt&&(!Number.isSafeInteger(a.resetsAt)||a.resetsAt<0)))return{kind:"unknown"};let f=Math.min(...e.map(a=>100-a.usedPercent));if(f>0)return{kind:"available",remaining:f};let g=e.filter(a=>a.usedPercent>=100),h=Math.floor(b/1e3);return g.some(a=>null===a.resetsAt||a.resetsAt<=h)?{kind:"exhausted",resetsAt:null}:{kind:"exhausted",resetsAt:Math.max(...g.map(a=>a.resetsAt))}}(f.get(a.id),e)})).filter(a=>"unavailable"!==a.capacity.kind);if(!h.length)return{kind:"unavailable"};for(let a of[!1,!0]){let b=h.filter(b=>g.has(b.account.id)===a),d=b.flatMap(a=>"available"===a.capacity.kind?[{...a,remaining:a.capacity.remaining}]:[]).sort((a,b)=>b.remaining-a.remaining||Number(b.account.id===c)-Number(a.account.id===c)||a.account.id.localeCompare(b.account.id));if(d[0])return{kind:"available",accountId:d[0].account.id};let e=b.filter(a=>"unknown"===a.capacity.kind).sort((a,b)=>Number(b.account.id===c)-Number(a.account.id===c)||a.account.id.localeCompare(b.account.id));if(e[0])return{kind:"available",accountId:e[0].account.id}}let i=h.flatMap(a=>"exhausted"===a.capacity.kind&&null!==a.capacity.resetsAt?[a.capacity.resetsAt]:[]);return{kind:"exhausted",resetsAt:i.length?Math.min(...i):null}}("claude"===a?(0,e.Fn)():(0,d.Sq)(),(0,i.tk)().quotaObservations(a),b??(0,i.tk)().engineRouting(a).activeAccountId,c);return"available"===f.kind?{kind:"available",account:k(a,f.accountId)}:f},resolveTranscriptOwner(a,b){let c=(0,i.tk)().transcriptAccountId(a,b);if(c)if("claude"===a){let b=(0,e.Fn)().find(a=>a.id===c);if(b)return{engine:a,accountId:b.id,kind:b.kind,home:b.home,transcriptRoot:b.projectsDir,env:"managed"===b.kind?(0,e.x0)(b.home):(0,j.Fd)(process.env)}}else{let b=(0,d.Sq)().find(a=>a.id===c);if(b)return{engine:a,accountId:b.id,kind:b.kind,home:b.home,transcriptRoot:b.sessionsDir,env:{...(0,j.Fd)(process.env),CODEX_HOME:b.home}}}if("claude"===a){let c=(0,e.y3)(b);if(!c)return null;let d=(0,e.Fn)().find(a=>a.home===c);return d?{engine:a,accountId:d.id,kind:d.kind,home:c,transcriptRoot:d.projectsDir,env:"managed"===d.kind?(0,e.x0)(c):(0,j.Fd)(process.env)}:null}let f=(0,d.yN)(b);if(!f)return null;let g=(0,d.Sq)().find(a=>a.home===f);return g?{engine:a,accountId:g.id,kind:g.kind,home:f,transcriptRoot:g.sessionsDir,env:{...(0,j.Fd)(process.env),CODEX_HOME:f}}:null}}},58347:(a,b,c)=>{c.d(b,{I1:()=>A,IM:()=>z,wh:()=>W});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(57726),k=c(52114),l=c(53133),m=c(68343),n=c(4351),o=c(4116),p=c(31973),q=c(50920),r=c(92233),s=c(6568),t=c(2542),u=c(33353),v=c(873),w=c(13818),x=c(89364),y=c(41730);class z extends Error{constructor(){super("successor launch receipt is awaiting host settlement"),this.name="SuccessorPendingError"}}class A extends Error{constructor(a="Codex provider fork outcome is unknown"){super(a),this.name="CodexForkOutcomeUnknownError"}}let B={accounts:j.lD,startCodex:a=>k.zC.start({home:a}),claudeStatus:a=>m.kR.status(a),spawnClaude:(a,b)=>(0,x.Tk)(a,"",b),verifyClaudeHost:a=>(0,x.PB)(a),cancelClaude:a=>(0,x.xs)(a),now:()=>new Date().toISOString()};function C(a){return!0===a||"cancelled"===a||"absent"===a}function D(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if(!Number.isInteger(b.pid)||!b.pid||b.pid<1)return Date.now()-g().statSync(a).mtimeMs>3e4;if(!r.B.pidAlive(b.pid))return!0;if("string"==typeof b.startIdentity){let a=r.B.processIdentity(b.pid);return null!==a&&a!==b.startIdentity}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function E(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function F(a){let b=[],c=i().resolve(a);for(;!g().existsSync(c);){b.push(c);let a=i().dirname(c);if(a===c)break;c=a}for(let a of b.reverse()){try{g().mkdirSync(a,{mode:448})}catch(a){if("EEXIST"!==a.code)throw a}let b=g().openSync(i().dirname(a),"r");try{g().fsyncSync(b)}finally{g().closeSync(b)}let c=g().openSync(a,"r");try{g().fsyncSync(c)}finally{g().closeSync(c)}}}async function G(a){if(a.ownsOperation&&!await a.ownsOperation()||!(0,w.cM)())return async()=>{};let b=(0,p.ce)("codex",a.receipt.nativeId);if(!b)throw Error("successor Codex thread identity is invalid");if((0,v.sy)(b))return async()=>{await (0,v.releaseStructuredDeliveryHost)(b)};let c=a.registry.readOnlySnapshot().entries[(0,p.pp)(b)],d=a.registry.upsert({...c??{key:b,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},key:b,artifactPath:a.receipt.path,cwd:a.profile.cwd,accountId:a.target.accountId,launchProfile:a.profile,structuredHostOperationId:a.receipt.operationId});d.structuredHost||a.registry.setStructuredHost(b,{kind:"codex-app-server",endpoint:"stdio:pending",process:null,eventCursor:0,protocolVersion:null,writerClaimEpoch:d.claimEpoch,activeTurnRef:null,pendingAttention:[],activeFlags:[]},"unhosted");let e={pid:process.pid,startIdentity:r.B.processIdentity(process.pid)},f=a.registry.claimStructuredHost(b,e,{allowUnhosted:!0});if(!f?.claimOwner)throw Error("successor Codex structured host claim is unavailable");let g=a.profile.permissionMode&&["never","on-request","untrusted"].includes(a.profile.permissionMode)?a.profile.permissionMode:void 0,h=null,i=()=>{},j=async()=>{};try{h=await t.o.adopt(a.receipt.nativeId,{cwd:a.profile.cwd,codexHome:a.target.home,fileAuthCredentials:"managed"===a.target.kind,model:a.profile.model??void 0,effort:a.profile.effort??void 0,sandbox:a.profile.readOnly?"read-only":void 0,approvalPolicy:g,initialEventCursor:f.structuredHost?.eventCursor,env:a.target.env}),i=await (0,w.WF)(a.registry,b,h,f.claimOwner,f.claimEpoch),j=await (0,v.xq)({key:b,host:h},a.ownsOperation)}catch(c){if(!h&&c instanceof u.EY&&c.host instanceof t.o)throw h=c.host,i=await (0,w.WF)(a.registry,b,h,f.claimOwner,f.claimEpoch,"dead"),await h.release(),i(),c;throw await j(),h&&await h.release(),i(),a.registry.releaseStructuredHostClaim(b,f.claimOwner,f.claimEpoch),c}let k=h;return async()=>{await j(),await k.release(),i()}}async function H(a){if(a.ownsOperation&&!await a.ownsOperation()||!(0,w.cM)())return async()=>{};let b=(0,p.ce)("claude",a.receipt.nativeId);if(!b)throw Error("successor Claude session identity is invalid");if((0,v.sy)(b))return async()=>{await (0,v.releaseStructuredDeliveryHost)(b)};(0,v.pr)();let c=a.registry.readOnlySnapshot().entries[(0,p.pp)(b)],d=a.registry.upsert({...c??{key:b,status:"unhosted",host:null,claimEpoch:0,claimOwner:null,pendingAction:null},key:b,artifactPath:a.receipt.path,cwd:a.profile.cwd,accountId:a.target.accountId,launchProfile:a.profile,structuredHostOperationId:a.receipt.operationId});d.structuredHost||a.registry.setStructuredHost(b,{kind:"claude-broker",endpoint:"stdio:pending",process:null,eventCursor:0,protocolVersion:null,writerClaimEpoch:d.claimEpoch,activeTurnRef:null,pendingAttention:[],activeFlags:[]},"unhosted");let e={pid:process.pid,startIdentity:r.B.processIdentity(process.pid)},f=a.registry.claimStructuredHost(b,e,{allowUnhosted:!0});if(!f?.claimOwner)throw Error("successor Claude structured host claim is unavailable");let g=null,h=()=>{},i=async()=>{};try{let c=V(a.receipt),d=await a.cancelClaude(c);if(!C(d))throw Error("successor Claude host transition is still pending");await (0,x.XW)(a.receipt.path,c),g=await s.s7.adopt(a.receipt.nativeId,{cwd:a.profile.cwd,claudeConfigDir:"managed"===a.target.kind?a.target.home:void 0,claudeProjectsDir:a.target.transcriptRoot,env:a.target.env,model:a.profile.model??void 0,effort:a.profile.effort??void 0,permissionMode:a.profile.permissionMode??void 0,initialEventCursor:f.structuredHost?.eventCursor}),h=await (0,w.n$)(a.registry,b,g,f.claimOwner,f.claimEpoch),i=await (0,v.xq)({key:b,host:g},a.ownsOperation)}catch(c){if(!g&&c instanceof u.EY&&c.host instanceof s.s7)throw g=c.host,h=await (0,w.n$)(a.registry,b,g,f.claimOwner,f.claimEpoch,"dead"),await g.release(),h(),c;throw await i(),g&&await g.release(),h(),a.registry.releaseStructuredHostClaim(b,f.claimOwner,f.claimEpoch),c}let j=g;return async()=>{await i(),await j.release(),h()}}async function I(){await new Promise(a=>setTimeout(a,5))}async function J(a,b,c){let d=O(a,b),f=`${d}.lock`,h=`${d}.locks`;F(a),F(h);let j={pid:process.pid,startIdentity:r.B.processIdentity(process.pid),token:e().randomUUID()},k=i().join(h,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${j.token}.json`);g().writeFileSync(k,JSON.stringify(j),{encoding:"utf8",flag:"wx",mode:384});try{for(let a=0;a<24e3;a+=1){let a;try{g().utimesSync(k,new Date,new Date)}catch{}let b=[];for(let a of g().readdirSync(h).filter(a=>a.endsWith(".json")).sort()){let c=i().join(h,a);if(D(c)){g().rmSync(c,{force:!0});continue}g().existsSync(c)&&b.push(c)}if(b[0]!==k){await I();continue}try{a=g().openSync(f,"wx",384)}catch(a){if("EEXIST"!==a.code)throw a;D(f)&&g().rmSync(f,{force:!0}),await I();continue}g().writeFileSync(a,JSON.stringify(j),"utf8"),g().fsyncSync(a);let d=setInterval(()=>{try{let a=new Date;g().utimesSync(f,a,a),g().utimesSync(k,a,a)}catch{}},1e4);d.unref();try{return await c(()=>(function(a,b){try{if(JSON.parse(g().readFileSync(a,"utf8")).token===b)return}catch{}throw Error("Codex provider operation lease was lost")})(f,j.token))}finally{clearInterval(d),g().closeSync(a),E(f,j.token)}}throw Error("Codex provider operation is busy")}finally{E(k,j.token)}}function K(a){let b=null;try{let c=g().lstatSync(a);if(!c.isFile()||c.isSymbolicLink())return null;b=g().openSync(a,g().constants.O_RDONLY|(g().constants.O_NOFOLLOW??0));let d=Buffer.alloc(Math.min(262144,Math.max(1,c.size))),e=g().readSync(b,d,0,d.length,0);for(let a of d.subarray(0,e).toString("utf8").split("\n"))if(a.trim())try{let b=JSON.parse(a);if("session_meta"!==b.type||!b.payload||"object"!=typeof b.payload||Array.isArray(b.payload))continue;let c=b.payload;if("string"!=typeof c.id||!c.id)return null;return{id:c.id,forkedFromId:"string"==typeof c.forked_from_id&&c.forked_from_id?c.forked_from_id:null}}catch{}return null}catch{return null}finally{null!==b&&g().closeSync(b)}}function L(a,b,c,d=2e4){let e=[{dir:a,depth:0}],f=[],h=0;for(;e.length;){let j=e.pop();if(!(j.depth>6))for(let k of g().readdirSync(j.dir,{withFileTypes:!0})){let l=i().join(j.dir,k.name);if(k.isSymbolicLink())continue;if(k.isDirectory()){e.push({dir:l,depth:j.depth+1});continue}if(!k.isFile()||!k.name.endsWith(".jsonl"))continue;if(++h>d)return console.warn("[account-migration] Codex fork recovery scan hit its bound",{root:a,limit:d,found:f.length}),f;if(g().statSync(l).mtimeMs<c)continue;let m=K(l);m?.forkedFromId===b&&f.push({id:m.id,path:g().realpathSync(l)})}}return f}function M(a){try{let b=g().statSync(a);return b.isFile()?{size:b.size,mtimeMs:b.mtimeMs}:null}catch{return null}}function N(...a){let b=new Map;for(let c of a)for(let a of c)b.has(a.id)||b.set(a.id,a);return[...b.values()]}function O(a,b){return i().join(a,`${e().createHash("sha256").update(b).digest("hex")}.json`)}function P(a,b){g().mkdirSync(a,{recursive:!0,mode:448});let c=O(a,b.operationId),d=`${c}.${process.pid}.${e().randomUUID()}.tmp`;try{g().writeFileSync(d,JSON.stringify(b,null,2)+"\n",{mode:384,flag:"wx"});let e=g().openSync(d,"r");try{g().fsyncSync(e)}finally{g().closeSync(e)}g().renameSync(d,c);let f=g().openSync(a,"r");try{g().fsyncSync(f)}finally{g().closeSync(f)}}finally{g().rmSync(d,{force:!0})}}function Q(a){return a&&"object"==typeof a&&1===a.version&&"string"==typeof a.operationId&&"string"==typeof a.sourceNativeId&&"string"==typeof a.sourceRoot&&"string"==typeof a.targetRoot&&"number"==typeof a.createdAtMs&&Number.isFinite(a.createdAtMs)?{version:1,operationId:a.operationId,conversationId:"string"==typeof a.conversationId&&a.conversationId?a.conversationId:null,sourceNativeId:a.sourceNativeId,sourceRoot:a.sourceRoot,targetRoot:a.targetRoot,createdAtMs:a.createdAtMs,forkRecoveryFloorMs:"number"==typeof a.forkRecoveryFloorMs&&Number.isFinite(a.forkRecoveryFloorMs)?a.forkRecoveryFloorMs:"number"==typeof a.forkRequestedAtMs&&Number.isFinite(a.forkRequestedAtMs)?a.forkRequestedAtMs:null,forkRequestedAtMs:"number"==typeof a.forkRequestedAtMs&&Number.isFinite(a.forkRequestedAtMs)?a.forkRequestedAtMs:null,fork:a.fork&&"string"==typeof a.fork.id&&"string"==typeof a.fork.path?{id:a.fork.id,path:a.fork.path}:null,forkSource:a.forkSource&&"number"==typeof a.forkSource.size&&Number.isFinite(a.forkSource.size)&&"number"==typeof a.forkSource.mtimeMs&&Number.isFinite(a.forkSource.mtimeMs)?{size:a.forkSource.size,mtimeMs:a.forkSource.mtimeMs}:null,supersededForks:Array.isArray(a.supersededForks)?a.supersededForks.flatMap(a=>a&&"object"==typeof a&&"string"==typeof a.id&&"string"==typeof a.path?[{id:a.id,path:a.path}]:[]):[]}:null}function R(a){try{return g().statSync(a).mtimeMs}catch{return 0}}function S(a){return[...a].sort((a,b)=>R(b.path)-R(a.path)||b.path.localeCompare(a.path))}function T(a,b,c){let d=(0,y.Ux)(a.path,c),e=K(d.sourcePath);if(!i().basename(d.sourcePath).endsWith(`${a.id}.jsonl`)||e?.id!==a.id||e.forkedFromId!==b)throw new y.Bc("unsafe-source");return{id:a.id,path:d.sourcePath}}function U(a){let b=g().lstatSync(a.home);if(!b.isDirectory()||b.isSymbolicLink()||process.getuid&&b.uid!==process.getuid()||(18&b.mode)!=0)throw new y.IO("unsafe-home","target account home failed safety checks");if(i().dirname(i().resolve(a.transcriptRoot))!==i().resolve(a.home)&&!("claude"===a.engine&&function(a){try{return g().realpathSync(a)===g().realpathSync((0,l.o1)())}catch{return!1}}(a.transcriptRoot)))throw Error("target transcript root is outside its account home");try{g().mkdirSync(a.transcriptRoot,{mode:448})}catch(a){if("EEXIST"!==a.code)throw a}let c=g().lstatSync(a.transcriptRoot);if(!c.isDirectory()||c.isSymbolicLink()||process.getuid&&c.uid!==process.getuid()||(18&c.mode)!=0)throw Error("target transcript root failed safety checks")}function V(a){let b=function(a){if("claude-stream"!==a.host.kind)throw Error("successor Claude host identity is invalid");let b=/^(%[0-9]+):([1-9][0-9]*)$/.exec(a.host.identity);if(!b)throw Error("successor Claude host identity is invalid");return{paneId:b[1],panePid:Number(b[2])}}(a),c=a.host.tmuxHost;if(!c||"tmux"!==c.kind||c.paneId!==b.paneId||c.panePid.pid!==b.panePid)throw Error("successor Claude host identity is invalid");return c}class W{constructor(a=B){this.dependencies=a,this.publishedHosts=new Map,this.publishingHosts=new Map}async create(a){let b=this.dependencies.accounts.resolveSpawn(a.engine,a.targetAccountId),c=function(a,b,c){if(!a||a.engine!==b.engine)throw Error("source account ownership is unavailable");return(0,y.Ux)(c,a.transcriptRoot),a}(this.dependencies.accounts.resolveTranscriptOwner(a.engine,a.source.path),b,a.source.path);return U(b),"codex"===a.engine?this.createCodex(a.operationId,a.conversationId,a.source.id,a.source.path,a.source.launchProfile,c,b,a.recordContinuityPath):this.createClaude(a.operationId,a.conversationId,a.source.path,a.source.launchProfile,c,b,a.recordContinuityPath)}async verify(a,b){let c=this.dependencies.accounts.resolveSpawn(b.engine,b.targetAccountId);if(U(c),"claude"===b.engine){if(!(await this.dependencies.claudeStatus(c.home)).loggedIn)throw new y.IO("not-authenticated","target Claude account is not authenticated");if(!a.path.startsWith(c.transcriptRoot+i().sep))throw Error("target Claude history is outside its registered root");if(i().basename(a.path,".jsonl")!==a.nativeId)throw Error("target Claude transcript identity does not match");if(!g().existsSync(a.path)||0===(0,y.z4)(a.path,c.transcriptRoot).size)throw Error("target Claude successor transcript is not durable");if(!g().readFileSync(a.path,"utf8").split("\n").some(b=>{try{let c=JSON.parse(b);return c.sessionId===a.nativeId||c.session_id===a.nativeId}catch{return!1}}))throw Error("target Claude transcript session identity does not match");let b=V(a),d=this.dependencies.registry??(0,o.tk)();if(!("claude-migration-successor"===b.windowName&&await this.dependencies.verifyClaudeHost?.(b))&&!function(a,b,c){let d=(0,p.ce)("claude",b.nativeId);if(!d)return!1;let e=a.readOnlySnapshot().entries[(0,p.pp)(d)];return e?.structuredHostOperationId===b.operationId&&e.artifactPath===b.path&&e.accountId===c.accountId&&e.structuredHost?.kind==="claude-broker"&&"stdio:pending"!==e.structuredHost.endpoint&&null!==e.structuredHost.protocolVersion}(d,a,c))throw Error("target Claude successor host is not live and canonical");return}let d=await this.dependencies.startCodex(c.home);try{if(!(await d.readAccount()).account)throw new y.IO("not-authenticated","target Codex account is not authenticated");if((await d.readThread(a.nativeId)).id!==a.nativeId)throw Error("target Codex thread identity does not match")}finally{d.close()}}async publishHost(a,b){if(b.ownsOperation&&!await b.ownsOperation())return;let c="codex"===b.engine?this.dependencies.publishCodexHost:this.dependencies.publishClaudeHost;if(!c&&!(0,w.cM)())return;let d=this.publishedHosts.get(a.operationId);if(d){if(d.nativeId!==a.nativeId||d.path!==a.path)throw Error("successor host publication conflicts");return}let e=this.publishingHosts.get(a.operationId);if(e){await e;let b=this.publishedHosts.get(a.operationId);if(!b||b.nativeId!==a.nativeId||b.path!==a.path)throw Error("successor host publication conflicts");return}let f=(async()=>{let d,e={receipt:a,target:this.dependencies.accounts.resolveSpawn(b.engine,b.targetAccountId),profile:b.launchProfile,registry:this.dependencies.registry??(0,o.tk)(),ownsOperation:b.ownsOperation};(d="codex"===b.engine?await (c??G)(e):c?await c(e):await H({...e,cancelClaude:this.dependencies.cancelClaude??B.cancelClaude}),b.ownsOperation&&!await b.ownsOperation())?await d():this.publishedHosts.set(a.operationId,{nativeId:a.nativeId,path:a.path,cleanup:d})})();this.publishingHosts.set(a.operationId,f);try{await f}finally{this.publishingHosts.get(a.operationId)===f&&this.publishingHosts.delete(a.operationId)}}async cleanup(a){let b=this.publishedHosts.get(a.operationId);if(b&&b.nativeId===a.nativeId&&b.path===a.path){await b.cleanup(),this.publishedHosts.delete(a.operationId);return}let c="codex-app-server"===a.host.kind?(0,p.ce)("codex",a.nativeId):"claude-stream"===a.host.kind?(0,p.ce)("claude",a.nativeId):null;if(c&&await (0,v.releaseStructuredDeliveryHost)(c)||"codex-app-server"===a.host.kind||"claude-stream"!==a.host.kind)return;let d=V(a);if(!C(await this.dependencies.cancelClaude?.(d)))throw Error("successor Claude host cleanup is still pending");await (0,x.XW)(a.path,d)}async createClaude(a,b,c,d,e,f,g){return J(this.dependencies.claudeJournalRoot??(0,q.BQ)("migration-provider-claude-operations"),a,h=>this.createClaudeLocked(a,b,c,d,e,f,g,h))}async createClaudeLocked(a,b,c,d,f,h,j,k){let l;if(!(await this.dependencies.claudeStatus(h.home)).loggedIn)throw new y.IO("not-authenticated","target Claude account is not authenticated");let m=(0,y.z4)(c,f.transcriptRoot),p=function(a){if(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(a))return a;let b=Buffer.from(e().createHash("sha256").update(a).digest().subarray(0,16));b[6]=15&b[6]|64,b[8]=63&b[8]|128;let c=b.toString("hex");return`${c.slice(0,8)}-${c.slice(8,12)}-${c.slice(12,16)}-${c.slice(16,20)}-${c.slice(20)}`}(a),q=(0,n.HI)({sourcePath:c,candidateId:p,targetHome:h.home,targetProjectsDir:h.transcriptRoot,profile:d}),r=q.transcript??i().join(h.transcriptRoot,`${p}.jsonl`),s=this.dependencies.registry??(0,o.tk)(),t=async(a,b)=>{try{j(r)}catch(c){s.preserveSpawnArtifactOwnership(a,"migration continuity persistence failed");try{let a=await this.dependencies.cancelClaude?.(b);C(a)&&await (0,x.XW)(r,b)}catch{}throw c}},u=e().createHash("sha256").update(JSON.stringify({operationId:a,conversationId:b,target:h.accountId,nativeId:p})).digest("hex"),v=s.beginSpawnRequest({engine:"claude",cwd:d.cwd,launchProfile:d,clientAttemptId:`migration-successor:${a}`,requestDigest:u,accountId:h.accountId,conversationId:b,purpose:"migration-successor",origin:{kind:"successor"},expectedArtifactPath:r});if("conflict"===v.kind)throw Error("successor Claude operation receipt conflicts");let w=v.receipt;if("replay"===v.kind){if("failed"===w.state||"conflicted"===w.state)throw Error("successor Claude operation receipt is terminal");let b=w.verifiedHost;if(b){if(!await this.dependencies.verifyClaudeHost?.(b))throw Error("successor Claude operation has no recoverable live host");return await t(w.launchId,b),{operationId:a,nativeId:p,path:r,continuityPaths:[r],historyHash:m.hash,host:{kind:"claude-stream",identity:`${b.paneId}:${b.panePid.pid}`,epoch:1,verifiedAt:this.dependencies.now(),tmuxHost:b}}}if("starting"!==w.state||w.pane||g().existsSync(r))throw new z}else this.dependencies.afterClaudeReceiptCreated?.();k();try{l=await this.dependencies.spawnClaude(q,w)}catch(a){throw s.failSpawn(w.launchId,a instanceof Error?a.message:String(a)),a}if(!l.host||void 0===l.panePid||l.host.paneId!==l.paneId||l.host.panePid.pid!==l.panePid)throw s.failSpawn(w.launchId,"successor Claude host evidence is unavailable"),Error("successor Claude host evidence is unavailable");let A=async a=>{if("failed"===a.state||"conflicted"===a.state){try{await this.dependencies.cancelClaude?.(l.host)}catch{}throw Error("successor Claude operation receipt became terminal")}},B=s.bindSpawnPane(w.launchId,{endpoint:l.host.endpoint,server:l.host.server,paneId:l.host.paneId,panePid:l.host.panePid,target:l.host.paneId});await A(B);let D=s.markSpawnHostVerified(w.launchId,l.host);await A(D);let E=s.markSpawnPromptDelivered(w.launchId);return await A(E),await t(w.launchId,l.host),k(),this.dependencies.afterClaudeSpawned?.(),{operationId:a,nativeId:p,path:r,continuityPaths:[r],historyHash:m.hash,host:{kind:"claude-stream",identity:`${l.paneId}:${l.panePid}`,epoch:1,verifiedAt:this.dependencies.now(),tmuxHost:l.host}}}async createCodex(a,b,c,d,e,f,g,h){let i=this.dependencies.journalRoot??(0,q.BQ)("migration-provider-operations");return J(i,`move:${c}`,j=>this.createCodexLocked(a,b,c,d,e,f,g,h,i,j))}async createCodexLocked(a,b,c,d,e,f,h,j,l,m){var n,o;let p=function(a,b,c,d,e,f){let h=O(a,b);try{let a=Q(JSON.parse(g().readFileSync(h,"utf8")));if(!a||a.operationId!==b||a.sourceNativeId!==d||a.sourceRoot!==e||a.targetRoot!==f)throw Error("Codex provider operation journal does not match");return{journal:{...a,conversationId:a.conversationId??c},fresh:!1}}catch(a){if("ENOENT"!==a.code)throw a}let i={version:1,operationId:b,conversationId:c,sourceNativeId:d,sourceRoot:e,targetRoot:f,createdAtMs:Date.now(),forkRecoveryFloorMs:null,forkRequestedAtMs:null,fork:null,forkSource:null,supersededForks:[]};return P(a,i),{journal:i,fresh:!0}}(l,a,b,c,g().realpathSync(f.transcriptRoot),g().realpathSync(h.transcriptRoot)),q=p.journal,r=[],s=null,t=null,u=[];if(!p.fresh){let a=function(a,b=L){if(a.fork)return{fork:T(a.fork,a.sourceNativeId,a.sourceRoot),forkSource:a.forkSource,superseded:[]};let c=a.forkRecoveryFloorMs??a.forkRequestedAtMs;if(null===c)return{fork:null,forkSource:null,superseded:[]};let d=new Set(a.supersededForks.map(a=>a.id)),e=S(b(a.sourceRoot,a.sourceNativeId,c).filter(a=>!d.has(a.id)).flatMap(b=>{try{return[T(b,a.sourceNativeId,a.sourceRoot)]}catch{return[]}}));return{fork:e[0]??null,forkSource:a.forkSource,superseded:e.slice(1)}}(q,this.dependencies.scanCodexForkArtifacts);s=a.fork,t=a.forkSource,u=a.superseded}if(!s&&null===q.forkRequestedAtMs){let a=function(a,b,c=L){let d=function(a,b){let c;try{c=g().readdirSync(a)}catch{return[]}let d=[];for(let e of c){if(!e.endsWith(".json"))continue;let c=null;try{c=Q(JSON.parse(g().readFileSync(i().join(a,e),"utf8")))}catch{continue}if(c&&c.operationId!==b.operationId&&c.sourceNativeId===b.sourceNativeId&&c.sourceRoot===b.sourceRoot&&c.targetRoot===b.targetRoot&&(!c.conversationId||!b.conversationId||c.conversationId===b.conversationId)){if(!c.conversationId&&b.conversationId&&i().join(a,e)===O(a,c.operationId)){let d={...c,conversationId:b.conversationId};try{P(a,d),c=d}catch{}}d.push(c)}}return d}(a,b);if(0===d.length)return{fork:null,forkSource:null,superseded:[],operationIds:[]};let e=Math.min(...d.map(a=>a.forkRequestedAtMs??a.createdAtMs)),f=new Map,h=new Map;for(let a of d)a.fork&&(f.set(a.fork.id,a.fork),a.forkSource&&h.set(a.fork.id,a.forkSource));for(let a of c(b.sourceRoot,b.sourceNativeId,e))f.set(a.id,a);for(let a of b.supersededForks)f.delete(a.id);let j=S([...f.values()].flatMap(a=>{try{return[T(a,b.sourceNativeId,b.sourceRoot)]}catch{return[]}})),k=j[0]??null;return{fork:k,forkSource:k?h.get(k.id)??null:null,superseded:j.slice(1),operationIds:d.map(a=>a.operationId)}}(l,q,this.dependencies.scanCodexForkArtifacts);s=a.fork,t=a.forkSource,u=a.superseded,s&&(r=a.operationIds)}let v=!1;if(s&&(n=M(d),o=t,n&&(!o||n.size!==o.size||n.mtimeMs!==o.mtimeMs))&&(q.supersededForks=N(q.supersededForks,[s],u),q.fork=null,q.forkSource=null,q.forkRequestedAtMs=null,m(),P(l,q),s=null,t=null,u=[],r=[],v=!0),s&&(!q.fork||u.length>0)&&(q.fork=s,q.forkSource=t,q.supersededForks=N(q.supersededForks,u),m(),P(l,q)),!s&&!v&&!p.fresh&&null!==q.forkRequestedAtMs)throw new A;if(!s){let a,b=await this.dependencies.startCodex(f.home);try{if(!(await b.readAccount()).account)throw Error("source Codex account is not authenticated");q.forkRequestedAtMs=Date.now(),q.forkRecoveryFloorMs??=q.forkRequestedAtMs,q.forkSource=M(d),m(),P(l,q);try{a=await b.forkThread(c)}catch(a){if(a instanceof k.yj&&"unknown"===a.outcome)throw new A(a.message);throw q.forkRequestedAtMs=null,q.forkSource=null,m(),P(l,q),a}this.dependencies.afterCodexForkReturned?.()}finally{b.close()}let e=a.path??function(a,b){let c=[{dir:a,depth:0}],d=0;for(;c.length;){let a=c.pop();if(!(a.depth>6))for(let e of g().readdirSync(a.dir,{withFileTypes:!0})){if(++d>2e4)throw Error("forked Codex history was not found within the scan bound");let f=i().join(a.dir,e.name);if(!e.isSymbolicLink()){if(e.isDirectory())c.push({dir:f,depth:a.depth+1});else if(e.isFile()&&e.name.endsWith(`${b}.jsonl`))return f}}}throw Error("forked Codex history was not found")}(f.transcriptRoot,a.id);q.fork=s=T({id:a.id,path:e},c,f.transcriptRoot),m(),P(l,q),this.dependencies.afterCodexForkCreated?.()}let w=s,x=N(q.supersededForks,u).filter(a=>a.id!==w.id).flatMap(a=>{try{return[T(a,c,f.transcriptRoot)]}catch{return[]}}),z=w.path;for(let a of(j(z),x))j(a.path);let B=i().relative(f.transcriptRoot,z);m();let C=(0,y.PM)({sourcePath:z,sourceRoot:f.transcriptRoot,targetRoot:h.transcriptRoot,destinationRelative:B,operationId:a,priorOperationIds:r,afterDestinationPublished:this.dependencies.afterCodexCopyPublished});j(C.path);let D=await this.dependencies.startCodex(h.home);try{if(!(await D.readAccount()).account)throw new y.IO("not-authenticated","target Codex account is not authenticated");m();let a=e.permissionMode&&["never","on-request","untrusted"].includes(e.permissionMode)?e.permissionMode:null;if((await D.resumeThread(s.id,{path:C.path,cwd:e.cwd,model:e.model,effort:e.effort,fast:e.fast,approvalPolicy:a,sandbox:e.readOnly?"read-only":null})).id!==s.id)throw Error("target Codex resume returned another thread");if(e.title&&await D.setThreadName(s.id,e.title),e.goal?.objective&&await D.setThreadGoal(s.id,e.goal.objective,e.goal.status),(await D.readThread(s.id)).id!==s.id)throw Error("target Codex history verification failed")}finally{D.close()}return{operationId:a,nativeId:s.id,path:C.path,continuityPaths:[z,C.path],historyHash:C.hash,host:{kind:"codex-app-server",identity:s.id,epoch:1,verifiedAt:this.dependencies.now()}}}}},59376:(a,b,c)=>{c.d(b,{CS:()=>a7,SW:()=>a8,K0:()=>a6,CR:()=>bb});var d=c(4116),e=c(68574),f=c(72166),g=c(98918),h=c(957),i=c(31612),j=c(77598),k=c.n(j),l=c(73024),m=c.n(l),n=c(76760),o=c.n(n),p=c(85091);c(89374);var q=c(24125),r=c(50920);let s=(0,r.BQ)("push-keys.json"),t=(0,r.BQ)("push-subscriptions.json"),u=(0,r.BQ)("push-sent.json"),v=Promise.resolve();function w(a){return Buffer.from(a).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function x(a){let b=a+"=".repeat((4-a.length%4)%4);return Buffer.from(b.replace(/-/g,"+").replace(/_/g,"/"),"base64")}function y(a,b){try{return JSON.parse(m().readFileSync(a,"utf8"))}catch{return b}}function z(a,b){try{return m().mkdirSync(o().dirname(a),{recursive:!0}),m().writeFileSync(a,JSON.stringify(b,null,2)),!0}catch{return!1}}function A(a,b,c){let d=[],e=Buffer.alloc(0),f=1;for(;Buffer.concat(d).length<c;)e=k().createHmac("sha256",a).update(e).update(b).update(Buffer.from([f])).digest(),d.push(e),f+=1;return Buffer.concat(d).subarray(0,c)}function B(){let a=y(s,null);if(a?.publicKey&&a.privateKey)return a;let b=k().generateKeyPairSync("ec",{namedCurve:"prime256v1"}),c={publicKey:w(b.publicKey.export({type:"spki",format:"der"}).subarray(-65)),privateKey:b.privateKey.export({type:"pkcs8",format:"pem"}).toString()};return z(s,c),c}async function C(a,b){try{var c;let d,e,f,g,h,i=function(a,b){let c=a.keys?.p256dh,d=a.keys?.auth;if(!c||!d)return null;let e=x(c),f=x(d),g=k().randomBytes(16),h=k().createECDH("prime256v1"),i=h.generateKeys(),j=h.computeSecret(e),l=k().createHmac("sha256",f).update(j).digest(),m=A(l,Buffer.concat([Buffer.from("WebPush: info\0"),e,i]),32),n=k().createHmac("sha256",g).update(m).digest(),o=A(n,"Content-Encoding: aes128gcm\0",16),p=A(n,"Content-Encoding: nonce\0",12),q=Buffer.concat([Buffer.from(JSON.stringify(b),"utf8"),Buffer.from([2])]),r=k().createCipheriv("aes-128-gcm",o,p),s=Buffer.concat([r.update(q),r.final(),r.getAuthTag()]),t=Buffer.alloc(21);return g.copy(t,0),t.writeUInt32BE(4096,16),t.writeUInt8(i.length,20),Buffer.concat([t,i,s])}(a,b);if(!i)return"failed";let j=new Uint8Array(i.byteLength);j.set(i);let l=(c=new URL(a.endpoint).origin,d=B(),e=w(JSON.stringify({typ:"JWT",alg:"ES256"})),f=w(JSON.stringify({aud:c,exp:Math.floor(Date.now()/1e3)+43200,sub:"mailto:agent-log-viewer@localhost"})),(g=k().createSign("SHA256")).update(`${e}.${f}`),g.end(),h=g.sign({key:d.privateKey,dsaEncoding:"ieee-p1363"}),`${e}.${f}.${w(h)}`),m=new AbortController,n=setTimeout(()=>m.abort(),3e3),o=await fetch(a.endpoint,{method:"POST",signal:m.signal,headers:{authorization:`vapid t=${l}, k=${B().publicKey}`,"content-encoding":"aes128gcm","content-type":"application/octet-stream",ttl:"60",urgency:"normal"},body:j.buffer}).catch(()=>null);if(clearTimeout(n),!o)return"failed";if(o.status>=200&&o.status<300)return"sent";if(404===o.status||410===o.status)return"dead";return"failed"}catch{return"failed"}}async function D(a){let b;if(a.waitingInput&&Date.now()/1e3-a.waitingInput.since<60||!a.pendingQuestion&&!a.waitingInput)return;let c=function(a,b=Date.now()/1e3){let c=function(a,b){let c,d=a.bridgeAsk;if(!d)return null;let e=Number.isFinite(c=Date.parse(d.at))?c/1e3:null;return null===e?null:b-e<=p.jk?d:null}(a,b);return c?c.id:a.pendingQuestion?a.pendingQuestion.toolUseId:a.rateLimit?`${a.path}:rate-limited:${a.rateLimit.resetAt??"unknown"}`:a.waitingInput?`${a.path}:waiting:${Math.floor(a.waitingInput.since)}`:"stalled"===a.activity&&"running"===a.proc&&b-a.mtime<=7200?`${a.path}:stalled:${Math.floor(a.mtime)}`:null}(a);if(!c)return;let d=new Set(y(u,[]));if(d.has(c))return;let e=y(t,[]);if(!e.length)return;let f=[],g=!1,h=!1,i=(b=a.pendingQuestion?.kind==="plan"?"plan awaiting approval":a.pendingQuestion?.questions?.[0]?.header||a.waitingInput?.menu?.question.slice(0,120)||(a.waitingInput?"waiting for an answer":"question"),{title:`${a.title||"Agent"} \xb7 ${a.engine}`,body:b,url:`/${(0,q.Zo)(a)}#question`});for(let a of e){let b=await C(a,i);"sent"===b?(g=!0,f.push(a)):"failed"===b?f.push(a):h=!0}g&&(d.add(c),z(u,[...d].slice(-500))),h&&z(t,f)}async function E(a){v=v.then(()=>D(a),()=>D(a)),await v.catch(()=>void 0)}var F=c(44237),G=c(70154),H=c(70395),I=c(68822);let J=(0,r.BQ)("task-inbox-scan.json"),K=0;function L(a){let b,c,d;return((c=(b=a).lastIndexOf("</environment_context>"))>=0&&(b=b.slice(c+22)),(d=b.lastIndexOf("</INSTRUCTIONS>"))>=0&&(b=b.slice(d+15)),b.trim()).replace(/(?:э[-\s]*э[-\s]*э|эээ|ээ|эм|ммм)/giu," ").replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim()}let M=/(?:созда(?:й|ть|л)|сдела(?:й|ть)|добав(?:ь|ить)|исправ(?:ь|ить)|почин(?:и|ить)|проверь|разберись|найди|напиши|реализ(?:уй|овать)|запусти|подготовь|обнови|перенеси|удали|отрефактори|проанализируй|\b(?:create|add|fix|implement|build|write|review|check|investigate|run|update|refactor|deploy|make|set up|setup)\b)/i;var N=c(89364),O=c(4351),P=c(57726),Q=c(51720),R=c(91836),S=c(87380),T=c(10508),U=c(14607);c(56514);var V=c(89831),W=c(24534),X=c(62142),Y=c(26200),Z=c(53388);function $(a,b){let c=[];for(let d of a.stageRuns){if(d.index>=b||!d.doneAt)continue;let e=a.template.stages[d.index],f=e?.kind==="implement"?e.scope:`stage ${d.index+1}`;c.push(`- Stage ${d.index+1} (${f}): ${d.doneNote||"done, no note left"}`)}return c.length?["Notes from the stages already finished in this worktree:",...c,""]:[]}function _(a){return a.template.verify?[`Before declaring the stage done, verify your work: run \`${a.template.verify}\` and get it green.`]:["Before declaring the stage done, verify your work with the project's own build/test commands."]}var aa=c(78906);let ab=new Set(["approved","closed"]),ac=new Set(["needs_decision","paused"]),ad=/^STAGE_DONE:\s*(.*)$/m,ae=new Set;function af(a,b){return`${a.id}:${b.index}`}function ag(a,b){a.pausedState=a.state,a.state="needs_decision",a.stateDetail=b}function ah(a){return a.stageRuns[a.stageIndex]??null}function ai(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function aj(a,b){return a?.startsWith("conversation_")?(0,d.tk)().conversation(a)?.generations.at(-1)?.path??b:(0,d.tk)().canonicalPath(b)}function ak(a,b){for(let c=b-1;c>=0;c-=1){let b=a.stageRuns[c];if(b?.agentPath)return aj(b.agentConversationId,b.agentPath)}return a.srcPath?aj(a.srcConversationId,a.srcPath):null}function al(a){a.stageIndex+=1;let b=a.template.stages[a.stageIndex];a.state=b?.kind==="review-loop"?"reviewing":"implementing",a.stateDetail=null}async function am(a,b,c,d,e,f,g){if(!b.startedAt){b.startedAt=f.now(),b.accountId||(b.accountId=P.lD.resolveSpawn(c.engine).accountId),ae.add(af(a,b)),g();try{let e,g,h,i=await f.spawnAgent(c,a.worktreeDir,d,b.accountId,(e=a.template.stages[b.index],g=e?.kind==="review-loop"?"review fixer":`stage ${b.index+1}`,h=` \xb7 ${g}`,`${(0,Y.cr)(a.task,120-h.length)}${h}`));if(b.paneId=i.paneId,i.transcript){b.agentPath=i.transcript;let c=ak(a,b.index);c&&f.linkChild(i.transcript,c)}}catch(b){ag(a,b instanceof Error?b.message:String(b))}return"spawning"}if(!b.paneId&&!ae.has(af(a,b)))return ag(a,"stage agent spawn was interrupted by a restart"),"spawning";if(!b.agentPath){let d,g,h,i=(d=ai(b.startedAt)/1e3-5,g=function(a){let b=new Set;for(let c of a.stageRuns)c.agentPath&&(b.add(c.agentPath),b.add(aj(c.agentConversationId,c.agentPath)));return a.fixerPath&&(b.add(a.fixerPath),b.add(aj(a.fixerConversationId,a.fixerPath))),b}(a),h=e.filter(b=>b.engine===c.engine&&("claude-projects"===b.root||"codex-sessions"===b.root)&&!b.path.includes(o().sep+"subagents"+o().sep)&&b.mtime>=d&&!g.has(b.path)&&!("codex-sessions"===b.root&&b.path.endsWith(".jsonl")&&(0,V.ET)(b.path,b.size))&&f.headCwd(b.path)===a.worktreeDir).sort((a,b)=>b.mtime-a.mtime)[0],h?.path??null);if(i){b.agentPath=i;let c=ak(a,b.index);return c&&f.linkChild(i,c),"ready"}return b.paneId&&!await f.paneAgentAlive(b.paneId)&&ag(a,"stage agent died before its transcript appeared"),"waiting"}return"ready"}async function an(a,b,c){if(!a.baseRef){let d=(0,Z.V8)(a,b.exec);if(!d.ok)return void ag(a,d.error);a.baseBranch=d.baseBranch,a.baseRef=d.baseRef,c()}if(a.template.setup){if(null==a.setupPid&&"done"!==b.setupStatus(a).status){let c=b.startSetup(a);return null==c.pid?void ag(a,c.error??"setup failed to start"):void(a.setupPid=c.pid)}let c=b.setupStatus(a);if("running"===c.status)return;if("failed"===c.status)return void ag(a,c.detail)}a.state="implementing",a.stateDetail=null}async function ao(a,b,c,d,e){var f,g;let h,i,j,k=ah(a),l=(f=a.stageIndex,h=a.template.stages[f],h?.kind==="implement"?h.agent:h?.kind==="review-loop"?h.fixer:null);if(!k||!l)return void ag(a,"stage index points outside the template");if(k.doneAt){"auto"===a.mode&&al(a);return}if("ready"!==await am(a,k,l,(g=a.stageIndex,i=a.template.stages[g],j=i?.kind==="implement"?i.scope:"",[`You are stage ${g+1} of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",`Your scope for this stage: ${j}`,"Stay inside that scope — other stages own the rest of the work.","",...$(a,g),..._(a),"Commit your work in this worktree; later stages and the final PR build on your commits.","","When the stage is complete, end your final assistant message with a line that starts exactly with:","STAGE_DONE: <one-line note for the next stage>","Do not print the STAGE_DONE marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the stage is actually complete. The note travels to the next stage's kickoff, so state where the contract lives and what the next stage should build on."].join("\n")),b,d,e))return;let m=c.get(aj(k.agentConversationId,k.agentPath));if(!m)return;let n=function(a,b,c){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let d=c.lastMessage(b);return!d||d.ts<=ai(a.startedAt)?null:d.text.match(ad)?.[1]?.trim()??null}(k,m,d);if(null!==n){k.doneAt=d.now(),k.doneNote=n||null,"auto"===a.mode&&al(a);return}k.paneId&&!await d.paneAgentAlive(k.paneId)&&ag(a,"stage agent pane died before STAGE_DONE")}async function ap(a,b,c,d){let e,f,g=ah(a),h=(e=a.template.stages.at(-1),e?.kind==="review-loop"?e:null);if(!g||!h)return void ag(a,"the template has no review-loop stage");if(g.doneAt){"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}if("ready"!==await am(a,g,h.fixer,(f=a.template.stages.length-1,[`You are the fixer of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",...$(a,f),"The implementation stages above are finished. A review loop starts now: a fresh reviewer examines the full workflow diff each round and its findings arrive here as messages.","","For each finding, apply the fix or argue against it. Respond to every finding with:","FIXED","or","REJECTED — <reason>","Give concrete arguments for rejections because the next reviewer is fresh and blind to previous discussion.","",..._(a),"Commit the fixes you apply. When every finding is addressed and the work is reviewable again, end your final assistant message with a line that starts exactly with:","REVIEW_READY: <one-line note>","Do not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only after addressing a round's findings."].join("\n")),b,c,d))return;if(a.fixerPath||(a.fixerPath=g.agentPath,a.fixerConversationId=g.agentConversationId??null),!a.flowId){let e=aj(a.fixerConversationId,a.fixerPath),f=c.findFlowByImplementer(e);if(f){a.flowId=f.id;return}let g=await c.createFlow({implementerPath:e,roles:{implementer:h.fixer,reviewer:h.reviewer},baseMode:"head",baseRef:a.baseRef,mode:a.mode,reviewerMode:h.reviewerMode,roundLimit:h.roundLimit},b);return g.flow?(a.flowId=g.flow.id,d(),void c.advanceFlow(a.flowId,`Workflow "${a.name}": review the full diff from the captured base ref.`)):void ag(a,`creating the review flow failed: ${g.error??"unknown error"}`)}let i=c.getFlow(a.flowId);if(!i)return void ag(a,"the embedded review flow record disappeared");if("approved"===i.state){g.doneAt=c.now(),g.doneNote=`review approved after ${i.rounds.length} round(s)`,"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}"done_comment"===i.state?ag(a,"review ended with a COMMENT verdict"):"needs_decision"===i.state?ag(a,`review loop needs a decision: ${i.stateDetail??"unknown reason"}`):"closed"===i.state&&ag(a,"the embedded review flow was closed")}async function aq(a,b,c,d,e){let f=JSON.stringify(a);if("provisioning"===a.state)await an(a,d,e);else if("implementing"===a.state)await ao(a,b,c,d,e);else if("reviewing"===a.state)await ap(a,b,d,e);else{var g;let b,c,e,f;"finishing"===a.state&&(b=a.flowId?d.getFlow(a.flowId):null,(f=(0,Z.dA)(a,(g=b?.rounds??[],c=a.stageRuns.filter(a=>a.doneAt).map(b=>{let c=a.template.stages[b.index],d=c?.kind==="implement"?c.scope.split(/[.:\n]/)[0]:"review loop";return`- Stage ${b.index+1} (${d}): ${b.doneNote||"done"}`}),e=g.map(a=>`- Round ${a.n}: ${a.verdict??"no verdict"}${null!=a.findingsCount?` (${a.findingsCount} findings)`:""}`),["## Task","",a.task.trim(),"","## Stages","",...c.length?c:["- (no stage notes recorded)"],"","## Review rounds","",...e.length?e:["- (no review rounds recorded)"],"","\uD83E\uDD16 Generated with [Claude Code](https://claude.com/claude-code)"].join("\n")),d.exec)).ok?(a.prUrl=f.prUrl,a.state="approved",a.stateDetail=null,a.closedAt=d.now()):ag(a,f.error))}return JSON.stringify(a)!==f}let ar=globalThis;async function as(a,b={exec:Z.Ix,startSetup:Z.ot,setupStatus:Z.ae,spawnAgent:async(a,b,c,d,e)=>{let f=P.lD.resolveSpawn(a.engine,d),g=(0,O.lV)(a.engine,b,{title:e,model:a.model,effort:a.effort,codexHome:"codex"===f.engine?f.home:null,claudeConfigDir:"claude"===f.engine?f.home:null,claudeProjectsDir:"claude"===f.engine?f.transcriptRoot:null}),h=Date.now(),i=await (0,N.Tk)(g,c),j=await (0,Q.s)({engine:a.engine,knownTranscript:g.transcript??null,panePid:i.panePid??null,cwd:b,startedAtMs:h,codexSessionsDir:"codex"===f.engine?f.transcriptRoot:null});return{paneId:i.paneId,transcript:j,panePid:i.panePid??null}},paneAgentAlive:async a=>{let b=await (0,N.RZ)(a);return null!==b&&!(0,X.g2)(b.command)},headCwd:a=>(0,R.tX)(a),lastMessage:T.if,createFlow:S._p,advanceFlow:(a,b)=>void(0,S.n1)(a,{action:"advance",note:b}),closeFlow:S.ni,getFlow:a=>(0,g.mL)().find(b=>b.id===a)??null,findFlowByImplementer:a=>(0,g.mL)().filter(b=>b.implementerPath===a).sort((a,b)=>a.createdAt<b.createdAt?1:-1)[0]??null,projectForCwd:W.hY,linkChild:(a,b)=>{(0,U.A6)(a,b),(0,U.OA)()},now:()=>new Date().toISOString()}){if(ar.__llvWorkflowTick)return{workflows:(0,aa.Ny)(),changed:!1};ar.__llvWorkflowTick=!0;try{let c=(0,aa.Ny)(),d=new Map(a.map(a=>[a.path,a])),e=!1;for(let f of c)!(ab.has(f.state)||ac.has(f.state))&&(await aq(f,a,d,b,()=>(0,aa.co)(c))&&(e=!0),e&&(0,aa.co)(c));return e&&(0,aa.co)(c),{workflows:c,changed:e}}finally{ar.__llvWorkflowTick=!1}}var at=c(7058),au=c(94284),av=c(38849);let aw={"fable-5":{standard:1e6},"mythos-5":{standard:1e6},"mythos-preview":{standard:1e6},"opus-4-8":{standard:1e6},"opus-4-7":{standard:1e6},"opus-4-6":{standard:1e6},"sonnet-5":{standard:1e6},"sonnet-4-6":{standard:1e6},"haiku-4-5":{standard:2e5},"opus-4-5":{standard:2e5},"opus-4-1":{standard:2e5},"sonnet-4-5":{standard:2e5,extended:1e6},"sonnet-4-0":{standard:2e5,extended:1e6}},ax=(0,au.E)("ctx-v2");function ay(a,b,c){if(null===a||a<=0)return null;if(!b||b.windowTokens<=0||"runtime"!==b.source&&a>b.windowTokens){var d;return d=a,{usedTokens:d,windowTokens:null,pct:null,source:"unknown",confidence:"unknown",observedAt:c}}let e="registry"===b.source?99:100;return{usedTokens:a,windowTokens:b.windowTokens,pct:Math.min(e,Math.round(a/b.windowTokens*100)),source:b.source,confidence:b.confidence,...b.registryVersion?{registryVersion:b.registryVersion}:{},observedAt:c}}function az(a,b){let c=(0,av.r$)(a.timestamp),d=c?Date.parse(c):NaN;return Number.isFinite(d)?new Date(d).toISOString():b}var aA=c(50076),aB=c(62e3),aC=c(52530);let aD=(0,au.E)("effort"),aE=new Set(["off","minimal","low","medium","high","xhigh","max","ultra","adaptive"]);function aF(a){let b=a?.trim().toLowerCase()??"";return aE.has(b)?b:null}function aG(a,b){if("codex-sessions"===a.root&&"turn_context"===b.type){let a=(0,av.xK)(b.payload),c=(0,av.r$)(a?.effort);if(c)return c;let d=(0,av.xK)((0,av.xK)(a?.collaboration_mode)?.settings);return(0,av.r$)(d?.reasoning_effort)}if("openclaw-sessions"===a.root&&"thinking_level_change"===b.type)return(0,av.r$)(b.thinkingLevel);if("claude-projects"===a.root&&"assistant"===b.type){let a=(0,av.xK)(b.message);if((0,av.Em)(a?.content).some(a=>"thinking"===(0,av.r$)(a.type)))return"high"}return null}function aH(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root&&"openclaw-sessions"!==a.root||!a.path.endsWith(".jsonl"))return{value:null,complete:!0};let b=aF(function(a){if(null===a.pid)return null;let b=(0,aC.$U)(a.pid);for(let c=0;c<b.length-1;c++){if("codex"===a.engine&&("-c"===b[c]||"--config"===b[c])){let a=b[c+1].match(/^model_reasoning_effort\s*=\s*"?([a-z]+)"?$/i);if(a)return a[1]}if("claude"===a.engine&&"--effort"===b[c])return b[c+1]}return null}(a));if("claude-projects"===a.root&&b)return{value:b,complete:!0};let c=1e3*a.mtime,d=aD.get(a.path);if(d?.[0]===a.size&&d[1]===c)return{value:d[2]??b,complete:!0};let e=null,f=(0,at.w8)(a.path,a.size,c),g=f.complete;for(let b of f.records.reverse())if(e=aF(aG(a,b)))break;if(!e){let b=(0,at.sY)(a.path,a.size,c);for(let c of(g&&=b.complete,b.records))if(e=aF(aG(a,c)))break}return g&&aD.set(a.path,[a.size,c,e]),{value:e??b,complete:g}}var aI=c(7343),aJ=c(45899);let aK=(0,au.E)("model");function aL(a){return a?a.trim().replace(/^claude-/,"").replace(/-20\d{6}$/,""):null}function aM(a,b){if("codex-sessions"===a.root){if("turn_context"===b.type||"session_meta"===b.type)return(0,av.r$)((0,av.xK)(b.payload)?.model)}else if("openclaw-sessions"===a.root)return(0,av.r$)((0,aJ.Re)(b)?.model);else if("assistant"===b.type){let a=(0,av.r$)((0,av.xK)(b.message)?.model);if(a&&"<synthetic>"!==a)return a}return null}let aN=(0,au.E)("plan-v2"),aO=(0,au.E)("goal-v2");function aP(a){return"in_progress"===a||"completed"===a?a:"pending"}function aQ(a,b){if(!a.length)return null;let c=a.filter(a=>"completed"===a.status).length,d=a.find(a=>"in_progress"===a.status)?.text??a.find(a=>"pending"===a.status)?.text??null;return{steps:a,done:c,total:a.length,current:d,updatedAt:b}}function aR(a){return"active"===a||"complete"===a||"blocked"===a?a:null}var aS=c(78598),aT=c(2496);let aU=/scheduled for\s+(\d{1,2}:\d{2}:\d{2})(?:\s*\(in\s+(\d+)\s*s\))?/i,aV=/\bin\s+(\d+)\s*s\b/i;function aW(a){return"string"==typeof a?a.trim():""}let aX=(0,au.E)("wakeup-v2");var aY=c(75060),aZ=c(69882),a$=c(76863);let a_=new Map,a0={waiting:null,rateLimit:null,atComposer:!1},a1={now:()=>Date.now(),resolveTarget:N.u1,paneScreen:N.ZB};async function a2(a,b=a1){let c=b.now();for(let[a,b]of a_)c-b.at>6e5&&a_.delete(a);if("running"!==a.proc||null===a.pid||a.pendingQuestion)return a_.delete(a.path),a0;if(c/1e3-a.mtime<15)return a0;let d=await b.resolveTarget(a.pid);if(null===d)return a0;let e=await b.paneScreen(d),f=(0,X.NU)(e,c/1e3);if(f)return a_.delete(a.path),{waiting:null,rateLimit:{source:"pane",accountId:null,window:null,resetAt:f.resetAt},atComposer:!1};if(!(0,X.cZ)(e))return a_.delete(a.path),{waiting:null,rateLimit:null,atComposer:(0,X.WM)(e)};let g=a_.get(a.path);return g&&g.screen===e?(a_.set(a.path,{...g,at:c}),c/1e3-g.since<15)?a0:{waiting:{since:g.since,screenTail:e.split("\n").map(a=>a.replace(/\s+$/,"")).filter(a=>a.trim()).slice(-10).join("\n").slice(-1200),target:d,menu:(0,X.fm)(e)},rateLimit:null,atComposer:!1}:(a_.set(a.path,{screen:e,at:c,since:c/1e3}),a0)}let a3=new Map;async function a4(a,b){await (0,e.pV)(a,b)}async function a5(a,b){for(let c=0;c<a.length;c+=16)await Promise.all(a.slice(c,c+16).map(b)),c+16<a.length&&await (0,e.Lh)()}function a6(a){let b="string"==typeof a?[a]:a?.filter(Boolean)??[];if(!b.length)return new Set;try{let a=(0,d.tk)(),c=a.readOnlySnapshot(),e=new Set,f=new Map,g=new Map;for(let a of Object.values(c.conversations)){let b=a.generations.at(-1)?.path;if(b){for(let c of a.generations)f.set(c.path,b),g.set(c.path,a.id);for(let c of a.continuityPaths)f.set(c,b),g.set(c,a.id)}}let h=new Map;for(let b of Object.values(c.lineageEdges)){let c=a.canonicalConversationId(b.parentConversationId),d=a.canonicalConversationId(b.childConversationId),e=h.get(c)??[];e.includes(d)||e.push(d),h.set(c,e)}let i=new Map;for(let b of Object.values(c.memberships))for(let c of b){let b=`${c.kind}:${c.containerId}`,d=i.get(b)??[],e=a.canonicalConversationId(c.conversationId);d.includes(e)||d.push(e),i.set(b,d)}let j=b=>{let d=[a.canonicalConversationId(b)],f=new Set;for(;d.length;){let b=d.shift();if(f.has(b))continue;f.add(b);let g=c.conversations[b],j=g?.generations.at(-1)?.path;j&&e.add(j);let k=c.lineageEdges[b]?.parentConversationId;for(let c of(k&&d.push(a.canonicalConversationId(k)),h.get(b)??[]))d.push(c);for(let a of c.memberships[b]??[])for(let b of i.get(`${a.kind}:${a.containerId}`)??[])d.push(b)}};for(let d of b){if(d.startsWith("conversation_")){let b=a.canonicalConversationId(d)??d;c.conversations[b]&&j(b);continue}e.add(d);let b=f.get(d);b&&e.add(b);let h=g.get(d);h&&j(h)}return e}catch(a){if(a instanceof d.Ou)return new Set(b.filter(a=>!a.startsWith("conversation_")));throw a}}async function a7(a={}){return(await ba(!1,void 0,a)).files}async function a8(a,b={}){return ba(!0,a,b)}function a9(){let a=(0,F.xg)(!0).archivedPaths;if(!a.size)return a;let b=(0,a$.Ot)((0,aZ.s9)().map(([,a])=>a)),c=function(a){let b=new Set;try{for(let c of Object.values((0,d.tk)().readOnlySnapshot().conversations)){let d=c.generations.at(-1)?.path;d&&b.add(a(d))}}catch(a){if(!(a instanceof d.Ou))throw a}return b}(b);if(!c.size)return a;let e=new Set;for(let d of a)c.has(b(d))||e.add(d);return e}async function ba(a,b,c={}){if(c.signal?.aborted)throw new DOMException("file scan cancelled","AbortError");let e=!0===c.persist,f=void 0!==c.onResourceSnapshot,g=f?void 0:a9(),h=a6(c.pins?[...c.pins,...c.pin?[c.pin]:[]]:c.pin),i=function(){let a=new Set;try{for(let b of Object.values((0,d.tk)().readOnlySnapshot().entries))"dead"!==b.status&&"unhosted"!==b.status&&b.artifactPath&&a.add(b.artifactPath)}catch(a){if(!(a instanceof d.Ou))throw a}return a}(),j=a?await (0,aB.nd)(void 0,b,{persist:e,persistIndex:c.persistIndex,demote:g,loadDemote:f?a9:void 0,pin:h,hosted:i,resourceBaseline:c.resourceBaseline,onResourceSnapshot:c.onResourceSnapshot,transportConversationCatalog:"1"===process.env.LLV_FILE_SCANNER_WORKER}):{files:await (0,aB.ZO)(void 0,g??a9(),h,i),projectCatalog:[],complete:!0};if(c.signal?.aborted)throw new DOMException("file scan cancelled","AbortError");let k=j.files;if(c.fresh){let a=(0,N.m7)(!0);(0,aC.Bj)(!0),await a}let l=k.some(a=>"claude-tasks"===a.root&&a.path.endsWith(".output"))?(0,aC.$w)():a3;if(await a4(k,a=>{let b=(0,at.Hz)(a.root,a.path,a.mtime,a.size);if(a.activity=b.state,a.activityReason=b.reason,a.derivationComplete=b.complete,a.path.endsWith(".jsonl")&&("claude"===a.engine||"codex"===a.engine||"openclaw"===a.engine)){let b=(0,at.pk)(a.path,a.size,1e3*a.mtime,a.engine);a.derivationComplete&&=b.complete,b.complete&&(a.authoritativeTurn=b.turn)}let c=function(a){if("claude-projects"===a.root&&a.path.includes(o().sep+"subagents"+o().sep)){let b=(0,av.Vh)(a.path.slice(0,-6)+".meta.json")??{},c=(0,av.r$)(b.model);if(c)return{value:{display:aL(c),launch:c},complete:!0}}if("claude-projects"!==a.root&&"codex-sessions"!==a.root&&"openclaw-sessions"!==a.root||!a.path.endsWith(".jsonl"))return{value:{display:null,launch:null},complete:!0};let b=1e3*a.mtime,c=aK.get(a.path);if(c?.[0]===a.size&&c[1]===b)return{value:c[2],complete:!0};let d=null,e=(0,at.w8)(a.path,a.size,b),f=e.complete;for(let b of e.records.reverse())if(d=aM(a,b))break;if(!d){let c=(0,at.sY)(a.path,a.size,b);for(let b of(f&&=c.complete,c.records))if(d=aM(a,b))break}let g={display:aL(d),launch:d};return f&&aK.set(a.path,[a.size,b,g]),{value:g,complete:f}}(a);a.model=c.value.display,a.launchModel=c.value.launch,a.derivationComplete&&=c.complete;let d=aH(a);a.effort=d.value,a.derivationComplete&&=d.complete,a.plan=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=aN.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=(0,at.w8)(a.path,a.size,b),e=null;for(let b of d.records.reverse())if(e="codex-sessions"===a.root?function(a){let b,c=(0,av.xK)(a.payload);if(!c||"function_call"!==c.type||"update_plan"!==(0,av.r$)(c.name))return null;let d=(0,av.r$)(c.arguments);if(!d)return null;try{b=JSON.parse(d)}catch{return null}return aQ((0,av.Em)((0,av.xK)(b)?.plan).map(a=>{let b=(0,av.r$)(a.step)?.trim();return b?{text:b,status:aP(a.status)}:null}).filter(a=>null!==a),(0,av.r$)(a.timestamp))}(b):function(a){if("assistant"!==a.type)return null;for(let b of(0,av.Em)((0,av.xK)(a.message)?.content))if("tool_use"===b.type&&"TodoWrite"===(0,av.r$)(b.name))return aQ((0,av.Em)((0,av.xK)(b.input)?.todos).map(a=>{let b=aP(a.status),c=("in_progress"===b?(0,av.r$)(a.activeForm)?.trim():null)||(0,av.r$)(a.content)?.trim()||null;return c?{text:c,status:b}:null}).filter(a=>null!==a),(0,av.r$)(a.timestamp));return null}(b))break;return d.complete&&aN.set(a.path,[a.size,b,e]),e}(a),a.goal=function(a){if("codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=aO.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=(0,at.w8)(a.path,a.size,b),e=null,f=null,g=null,h=null;for(let a of d.records.reverse()){let b=function(a){let b=(0,av.xK)(a.payload);if(!b)return null;if("thread_goal_updated"===b.type){let a=(0,av.xK)(b.goal);return a?{objective:(0,av.r$)(a.objective),status:aR(a.status)??void 0,tokensUsed:(0,av.Vg)(a.tokensUsed),timeUsedSeconds:(0,av.Vg)(a.timeUsedSeconds)}:null}if("function_call"===b.type&&"update_goal"===(0,av.r$)(b.name)){let a=(0,av.r$)(b.arguments);if(!a)return null;try{let b=(0,av.xK)(JSON.parse(a));if(!b)return null;return{objective:(0,av.r$)(b.objective),status:aR(b.status)??((0,av.r$)(b.objective)?"active":void 0)}}catch{}}return null}(a);if(b&&(null===f&&b.status&&(f=b.status),null===e&&b.objective&&(e=b.objective),null===g&&"number"==typeof b.tokensUsed&&(g=b.tokensUsed),null===h&&"number"==typeof b.timeUsedSeconds&&(h=b.timeUsedSeconds),null!==f&&null!==e&&null!==g))break}let i=null===f&&null===e?null:{objective:e,status:f??"active",tokensUsed:g,timeUsedSeconds:h};return d.complete&&aO.set(a.path,[a.size,b,i]),i}(a),a.ctx=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=ax.get(a.path);if(c?.[0]===a.size&&c[1]===b)return c[2];let d=new Date().toISOString(),e=(0,at.w8)(a.path,a.size,b),f=null;for(let b of e.records.reverse())if(f="codex-sessions"===a.root?function(a,b){let c=(0,av.xK)(a.payload);if(!c||"token_count"!==(0,av.r$)(c.type))return null;let d=(0,av.xK)(c.info);if(!d)return null;let e=(0,av.xK)(d.last_token_usage)??(0,av.xK)(d.total_token_usage),f=(0,av.Vg)(d.model_context_window);return!e||null===f||f<=0?null:ay((0,av.Vg)(e.total_tokens),{windowTokens:f,source:"runtime",confidence:"exact"},az(a,b))}(b,d):function(a,b){if("assistant"!==a.type)return null;let c=(0,av.xK)(a.message),d=(0,av.r$)(c?.model);if(!c||!d||"<synthetic>"===d)return null;let e=(0,av.xK)(c.usage);if(!e)return null;let f=((0,av.Vg)(e.input_tokens)??0)+((0,av.Vg)(e.cache_read_input_tokens)??0)+((0,av.Vg)(e.cache_creation_input_tokens)??0),g=[a.beta,a.betas,c.beta,c.betas].flatMap(a=>Array.isArray(a)?a:[a]).filter(a=>"string"==typeof a);return ay(f,function(a,b,c){var d;let e,f=(0,av.Vg)(a.context_window)??(0,av.Vg)(a.model_context_window);if(null!==f&&f>0)return{windowTokens:f,source:"runtime",confidence:"exact"};let g=function(a){let b=a.toLowerCase().trim();if(!b||"<synthetic>"===b)return null;let c=/\[1m\]$/.test(b);return(c&&(b=b.replace(/\[1m\]$/,"")),b=(b=(b=(b=(b=b.replace(/^(?:us\.|eu\.)?anthropic\./,"")).replace(/@20\d{6}$/,"")).replace(/-v\d+(?::\d+)?$/,"")).replace(/-20\d{6}$/,"")).replace(/^claude-/,""))?{key:b,mode:c?"1m":"standard"}:null}(b);if(!g)return null;let h=c.some(a=>a.toLowerCase().includes("context-1m-2025-08-07"))?"1m":g.mode,i=(d=g.key,(e=aw[d])?"1m"===h?e.extended??1e6:e.standard:null);return null===i?null:{windowTokens:i,source:"registry",confidence:"approximate",registryVersion:"2026-07-10"}}(c,d,g),az(a,b))}(b,d))break;return e.complete&&ax.set(a.path,[a.size,b,f]),f}(a),a.lastTurn=(0,aA.d2)(a),a.lastAssistantMessageAt=(0,aA.iv)(a),a.pendingWakeup=function(a,b=Date.now()){if("claude"!==a.engine||!a.path.endsWith(".jsonl"))return null;let c=1e3*a.mtime,d=aX.get(a.path);if(d?.[0]===a.size&&d[1]===c){let a=d[2];return a&&a.fireAt<=b?null:a}let e=(0,at.w8)(a.path,a.size,c),f=e.records,g=null;a:for(let a=f.length-1;a>=0;a-=1){let c=function(a){if("assistant"!==a.type)return[];let b=(0,av.r$)(a.timestamp),c=[];for(let d of(0,av.Em)((0,av.xK)(a.message)?.content)){if("tool_use"!==d.type||"ScheduleWakeup"!==(0,av.r$)(d.name))continue;let a=(0,av.r$)(d.id);a&&c.push({id:a,input:(0,av.xK)(d.input)??{},ts:b})}return c}(f[a]);for(let d=c.length-1;d>=0;d-=1){let e=c[d],h=null;for(let b=a+1;b<f.length&&null===h;b+=1)h=function(a,b){for(let c of(0,av.Em)((0,av.xK)(a.message)?.content)){if("tool_result"!==c.type||(0,av.r$)(c.tool_use_id)!==b)continue;let a=!0===c.is_error,d=c.content;if("string"==typeof d)return{text:d,isError:a};if(Array.isArray(d))return{text:d.map(a=>"string"==typeof a?a:(0,av.r$)((0,av.xK)(a)?.text)??"").filter(Boolean).join("\n"),isError:a};return{text:null,isError:a}}return null}(f[b],e.id);if(h?.isError)continue;let i=e.ts?Date.parse(e.ts):NaN,j=function(a,b,c){var d;let e=a&&"object"==typeof a&&!Array.isArray(a)?a:{},f=aW(e.reason),g=aW(e.prompt),h="number"==typeof(d=e.delaySeconds)&&Number.isFinite(d)?d:null,i="string"==typeof c?c.match(aU):null,j="string"==typeof c?c.match(aV):null,k=i?.[2]??j?.[1],l=k?Number(k):null,m=i?.[1]??null,n=null;return null!==b&&null!==l?n=b+1e3*l:m?n=function(a,b){let c=a.split(":").map(Number);if(3!==c.length||c.some(a=>!Number.isFinite(a)))return null;let[d,e,f]=c,g=null!==b?new Date(b):new Date;g.setUTCHours(d,e,f,0);let h=g.getTime();return null!==b&&h<b-6e4&&(h+=864e5),h}(m,b):null!==b&&null!==h&&(n=b+1e3*h),{fireAt:n,delaySeconds:l??h,reason:f,prompt:g}}(e.input,Number.isFinite(i)?i:null,h?.text??null);null!==j.fireAt&&j.fireAt>b&&(g={fireAt:j.fireAt,reason:(0,aT.fp)(j.reason).slice(0,300)});break a}}return e.complete&&aX.set(a.path,[a.size,c,g]),g}(a),(0,aS.xb)(a)}),await a4(k,a=>{if("claude-tasks"===a.root&&a.path.endsWith(".output")){let b=l.get(a.path)??null;a.pid=b,a.proc=null===b?"done":"running",null!==b&&(a.activity="live",a.activityReason="output_held")}}),(0,aY.em)(k),await a5(k,async a=>{a.effort=aH(a).value,a.fast=function(a){if("codex"!==a.engine||null===a.pid)return null;let b=(0,aC.$U)(a.pid);for(let a=0;a<b.length-1;a++){if("-c"!==b[a]&&"--config"!==b[a])continue;let c=b[a+1].match(/^service_tier\s*=\s*"?(priority|standard)"?$/i);if(c)return"priority"===c[1].toLowerCase()}return null}(a);let b=(0,aS.xb)(a);a.pendingQuestion=b&&null!==a.pid?{...b,paneTarget:await (0,N.u1)(a.pid)}:b;let c=await a2(a);a.waitingInput=c.waiting,a.rateLimit=c.rateLimit,c.atComposer&&"stalled"===a.activity&&(a.activity=Date.now()/1e3-a.mtime<900?"recent":"idle",a.activityReason="pane_at_composer")}),await (0,aI.bA)(k,{persist:e}),c.signal?.aborted)throw new DOMException("file scan cancelled","AbortError");let m="pinOverlayPaths"in j?j.pinOverlayPaths:void 0;return{files:k,projectCatalog:j.projectCatalog,..."conversationCatalog"in j&&j.conversationCatalog?{conversationCatalog:j.conversationCatalog}:{},...m?.length?{pinOverlayPaths:m}:{},complete:j.complete&&k.every(a=>!1!==a.derivationComplete)}}async function bb(a){await (0,aI.bA)(a,{persist:!0}),await (0,e.Lh)(),(0,F.Y)(a),await (0,e.pV)(a,a=>{(a.pendingQuestion||a.waitingInput)&&E(a)}),await (0,f.zn)(a),await (0,e.Lh)();try{await (0,i.Km)((a,b)=>(0,g.L5)(c=>{(0,h.UA)(a,c)&&b()}))}catch(a){console.error("[pipelines] skipping embedded review flow reconcile",a)}await (0,e.Lh)(),await (0,h.n6)(a),await (0,e.Lh)(),await as(a),await (0,e.Lh)(),function(a,b={}){if("1"!==process.env.LLV_ENABLE_AUTO_TASK_INBOX)return;let c=b.now?.()??new Date;if(c.getTime()-K<36e5)return;K=c.getTime();let d=b.stateFile??J,e=function(a=J){try{let b=JSON.parse(m().readFileSync(a,"utf8"));return{lastRunAt:"string"==typeof b.lastRunAt?b.lastRunAt:null,seen:Array.isArray(b.seen)?b.seen.filter(a=>"string"==typeof a):[]}}catch{return{lastRunAt:null,seen:[]}}}(d),f=new Set(e.seen),g=Math.max(c.getTime()-36e5,e.lastRunAt?new Date(e.lastRunAt).getTime():0),h=new Set,i=[];(0,I.z4)(b=>{for(let a of b)a.source?.fingerprint&&h.add(a.source.fingerprint);let c=function(a,b,c){let d=[];for(let e of a.filter(a=>a.path.endsWith(".jsonl")&&("claude"===a.engine||"codex"===a.engine)&&1e3*a.mtime>=b).sort((a,b)=>a.mtime-b.mtime))(0,G.lx)(e.path,e.engine).messages.forEach((a,b)=>{if("user"!==a.role)return;let f=function(a,b,c){var d;let e=L(b.text);return{path:a.path,ts:b.ts,text:e,fingerprint:(d=[a.path,b.ts??String(c),e],k().createHash("sha1").update(d.join("\0")).digest("hex")),engine:"codex"===a.engine?"codex":"claude"}}(e,a,b);if(c.has(f.fingerprint))return;let g=function(a){var b;let c,d,e,f=L(a);return!(c=f.trim())||/^(?:<|Caveat:|\[Request interrupted|This came from another Claude session|# AGENTS\.md instructions)/.test(c)||c.length<18||!M.test(f)?null:((e=(b=function(a){for(let[b,c]of[[/^создал[а]?\s+/iu,"создать "],[/^сделал[а]?\s+/iu,"сделать "],[/^написал[а]?\s+/iu,"написать "],[/^добавил[а]?\s+/iu,"добавить "],[/^исправил[а]?\s+/iu,"исправить "],[/^проверил[а]?\s+/iu,"проверить "],[/^запустил[а]?\s+/iu,"запустить "],[/^подготовил[а]?\s+/iu,"подготовить "],[/^обновил[а]?\s+/iu,"обновить "],[/^реализовал[а]?\s+/iu,"реализовать "]])if(b.test(a))return a.replace(b,c);return a}((d=f.split(/\n\s*\n/,1)[0]??f,(d.match(/^(.{18,}?[.!?。!?])(?:\s|$)/u)?.[1]??d).replace(/\s+/g," ").replace(/[.!?。!?]+$/u,"").trim()).replace(/^(?:я\s+бы\s+хотел(?:а)?|хочу|нужно|надо)(?:,?\s+чтобы\s+ты)?\s+/iu,"").replace(/^(?:пожалуйста|pls|please),?\s+/iu,"").replace(/^(?:i(?:'d| would)\s+like\s+(?:you\s+)?to|can you|could you)\s+/iu,"").trim())).charAt(0))?e.toLocaleUpperCase()+b.slice(1):b).slice(0,96).trim()||null}(f.text);g&&d.push({project:e.project,text:g,source:f,mtime:e.mtime})});return d.slice(-25)}(a,g,new Set([...f,...h])),d=b;for(let a of c){let b=d.filter(b=>b.project===a.project),c=function(a,b,c=[],d={}){var e,f,g,h,i;let j="string"!=typeof(h=b.project)?null:h.trim()||null;if(!j)return{ok:!1,error:"project is required",status:400};let l="string"!=typeof(i=b.text)?null:i.trim()||null;if(!l)return{ok:!1,error:"task text is required",status:400};if(l.length>6e3)return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400};let m="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(m){let b=c.find(a=>a.clientRequestId===m);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 n=!(e=b.pos)||"object"!=typeof e||Array.isArray(e)?null:"number"==typeof e.x&&Number.isFinite(e.x)&&"number"==typeof e.y&&Number.isFinite(e.y)?{x:e.x,y:e.y}:null;if(void 0!==b.pos&&null!==b.pos&&!n)return{ok:!1,error:"invalid task position",status:400};let o=("pinned"===(f=b.placement)||"unplaced"===f?f:null)??(n?"pinned":null);if(void 0!==b.placement&&null===o)return{ok:!1,error:"invalid placement",status:400};if("pinned"===o&&!n)return{ok:!1,error:"task position is required",status:400};if("unplaced"===o&&n)return{ok:!1,error:"unplaced task must not carry a position",status:400};if(null===o)return{ok:!1,error:"task position is required",status:400};let p=function(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"}}(b.dueAt,b.dueTz);if(!p.ok)return{ok:!1,error:p.error,status:400};let q=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,H.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(!q.ok)return q;let r=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===r)return{ok:!1,error:"invalid task source",status:400};if(a.filter(a=>a.project===j).length>=300)return{ok:!1,error:"The project already has 300 tasks. Close or delete extra tasks.",status:409};let s=d.now?.()??new Date().toISOString(),t=d.id?.()??k().randomUUID(),u={id:t,project:j,status:"inbox",text:l,placement:o,..."pinned"===o&&n?{pos:n}:{},...p.dueAt?{dueAt:p.dueAt,dueTz:p.dueTz}:{},...q.attachments?{attachments:q.attachments}:{},...r?{source:r}:{},assignments:[],createdAt:s,updatedAt:s};return{ok:!0,tasks:[...a,u],task:u,recentCreates:m?[...c,{clientRequestId:m,taskId:t}].slice(-100):c,replay:!1}}(d,{project:a.project,text:a.text,pos:function(a){let b,c,d,e,f=new Set;for(let b of a){if(!b.source||!b.pos)continue;let a=function(a){let b=(a.x-740)/300,c=(a.y-120)/120;return!Number.isInteger(b)||b<0||!Number.isInteger(c)||c<0||c>=24?null:48*Math.floor(b/2)+2*c+b%2}(b.pos);null!==a&&f.add(a)}let g=0;for(;f.has(g);)g+=1;return c=Math.floor((b=Math.max(0,Math.floor(g)))/48),e=Math.floor((d=b%48)/2),{x:740+300*c*2+d%2*300,y:120+120*e}}(b),source:a.source});c.ok&&(d=c.tasks,i.push(a.source.fingerprint),f.add(a.source.fingerprint))}return{tasks:d===b?void 0:d,result:void 0}}),function(a,b=J){m().mkdirSync(o().dirname(b),{recursive:!0});let c=o().join(o().dirname(b),`.${o().basename(b)}.${process.pid}.${k().randomUUID()}.tmp`);m().writeFileSync(c,JSON.stringify({lastRunAt:a.lastRunAt,seen:a.seen.slice(-5e3)},null,2)+"\n","utf8"),m().renameSync(c,b)}({lastRunAt:c.toISOString(),seen:[...f,...i]},d)}(a)}},59436:(a,b,c)=>{c.d(b,{Wl:()=>g,cy:()=>e,de:()=>d});let d=10,e=80;function f(a,b){let c=Number(a);return Number.isSafeInteger(c)&&c>0?c:b}function g(a,b,c=function(a=process.env){return{projectCap:f(a.LLV_SCHEME_PROJECT_CAP,d),cardsPerProject:f(a.LLV_SCHEME_CARDS_PER_PROJECT,e)}}(),h={}){let i=h.protect,j=i?new Set(a.filter(i)):null,k=new Set;for(let d of a)if(k.add(b(d)),k.size>=c.projectCap)break;let l=new Map;return a.filter(a=>{if(j?.has(a))return!0;let d=b(a);if(!k.has(d))return!1;let e=l.get(d)??0;return!(e>=c.cardsPerProject)&&(l.set(d,e+1),!0)})}},59988:(a,b,c)=>{c.d(b,{j:()=>e}),c(73024);var d=c(2496);function e(a){return(0,d.fp)(a).replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,"[redacted]").replace(/(^|\n)(\s*(?:proxy-)?authorization\s*:\s*)[^\r\n]*/gi,"$1$2[redacted]").replace(/(^|\n)(\s*(?:set-)?cookie\s*:\s*)[^\r\n]*/gi,"$1$2[redacted]").replace(/\b(?:sk-[A-Za-z0-9_-]{12,}|sk-ant-[A-Za-z0-9_-]{12,}|gh[pousr]_[A-Za-z0-9_]{20,}|github_pat_[A-Za-z0-9_]{20,}|npm_[A-Za-z0-9]{20,}|xox[baprs]-[A-Za-z0-9-]{10,}|AKIA[0-9A-Z]{16}|ASIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{35})\b/g,"[redacted]").replace(/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,"[redacted]").replace(/(?<=Bearer\s)[A-Za-z0-9._-]{12,}/gi,"[redacted]")}},61899:(a,b,c)=>{c.d(b,{ck:()=>g,ve:()=>j,z9:()=>e});let d={claude:["low","medium","high","xhigh","max"],codex:["low","medium","high","xhigh"]};function e(a,b){return d[a].includes(b)}let f=["minimal","low","medium","high","xhigh","max","ultra"];function g(a){return f.includes(a)}let h=[[/^gpt-5\.6-(sol|terra)\b/,["low","medium","high","xhigh","max","ultra"]],[/^gpt-5\.6\b/,["low","medium","high","xhigh","max"]]],i=["off","minimal","low","medium","high","xhigh","max"];function j(a,b){if("claude"===a)return d.claude;if("openclaw"===a)return i;if("codex"!==a)return null;let c=(b??"").trim().toLowerCase();for(let[a,b]of h)if(a.test(c))return b;return d.codex}},62e3:(a,b,c)=>{c.d(b,{Y8:()=>v,ZO:()=>P,nd:()=>O});var d=c(73024),e=c.n(d),f=c(51455),g=c(76760),h=c.n(g),i=c(68574),j=c(44237),k=c(54132),l=c(3302),m=c(89831),n=c(45899),o=c(24534),p=c(20707),q=c(16777),r=c(69882),s=c(59436),t=c(7058),u=c(76863);function v(a,b){let c=h().relative(a,b).split(h().sep);return 4===c.length&&"tasks"===c[2]&&c[3]?.endsWith(".output")?[c[0]??"",c[1]??"",c[3].slice(0,-7)]:null}let w=-1/0;function x(a){return"object"==typeof a&&null!==a&&"code"in a&&"ENOENT"===a.code}function y(a,b,c){if(x(c))return!0;let d=Date.now();if(d-w>=6e4){w=d;let e=c instanceof Error?`${c.message}${"code"in c&&c.code?` (${String(c.code)})`:""}`:String(c);console.error(`[scanner discovery] ${a} failed for ${b}: ${e}; retaining the last completed scan`)}return!1}function z(a){let b=0,c=[];return async function(d){b>=a&&await new Promise(a=>c.push(a)),b+=1;try{return await d()}finally{b-=1,c.shift()?.()}}}async function A(a,b,c,d){let e;try{e=await d(()=>(0,f.readdir)(c,{withFileTypes:!0}))}catch(a){return{paths:[],complete:y("read directory",c,a)}}let g=await Promise.all(e.map(async e=>e.isDirectory()?e.name.startsWith(".git")||"claude-projects"===a&&"tool-results"===e.name?{paths:[],complete:!0}:A(a,b,h().join(c,e.name),d):e.isFile()&&r.Rg.some(a=>e.name.endsWith(a))&&("openclaw-sessions"!==a||(0,n.mu)(e.name))?{paths:[{rootName:a,root:b,path:h().join(c,e.name)}],complete:!0}:{paths:[],complete:!0}));return{paths:g.flatMap(a=>a.paths),complete:g.every(a=>a.complete)}}async function B(a,b,c){let d,g=a.path;try{d=await c(()=>(0,f.stat)(g))}catch(a){return{raw:[],complete:y("stat file",g,a)}}if("claude-projects"===a.rootName&&(0,l.a$)(h().relative(b["claude-projects"],g)))return{raw:[],complete:!0};let i="claude-tasks"===a.rootName?v(b["claude-tasks"],g):null;if("claude-tasks"===a.rootName&&!i||0===d.size&&!i)return{raw:[],complete:!0};if(i){let[a,d,f]=i,g=h().join(b["claude-projects"],a,d,"subagents","agent-"+f+".jsonl");try{return await c(()=>e().promises.access(g)),{raw:[],complete:!0}}catch(a){if(!x(a))return{raw:[],complete:y("access task-output twin",g,a)}}}return{raw:[{...a,st:d}],complete:!0}}function C(a){let b=new Map;for(let c of a){let a=h().basename(c.path);if("codex-sessions"!==c.rootName||!a.startsWith("rollout-")||!a.endsWith(".jsonl"))continue;let d=b.get(a);d&&d.root===c.root||b.set(a,c)}return a.filter(a=>{let c=h().basename(a.path);return"codex-sessions"!==a.rootName||!c.startsWith("rollout-")||!c.endsWith(".jsonl")||b.get(c)===a})}async function D(a,b){try{return await b(()=>e().promises.access(a)),{exists:!0,complete:!0}}catch(b){return{exists:!1,complete:y("access root",a,b)}}}function E(a){return Array.isArray(a)?a:Object.entries(a)}function F(a){return(0,u.Ot)(E(a).map(([,a])=>a))}function G(a,b,c,d,e){if(!(0,p.pu)(c))return;let f=e??("1"===process.env.LLV_FILE_SCANNER_WORKER?void 0:k.O);f?.({complete:b,sources:a.flatMap(a=>"openclaw"===a.engine?[]:[{path:a.path,project:d?.get(a.path)??a.project,engine:a.engine,size:a.size,mtimeMs:1e3*a.mtime}])})}async function H(a,b,c){let d=await I(a,b),e=Array.isArray(a)?r.GH:a;c&&d.complete&&(c(C(d.paths)),await new Promise(a=>setImmediate(a)));let f=await Promise.all(d.paths.map(a=>B(a,e,b)));return{raw:C(f.flatMap(a=>a.raw)),complete:d.complete&&f.every(a=>a.complete)}}async function I(a,b){let c=await Promise.all(E(a).map(async([a,c])=>{let d=await D(c,b);return d.exists?A(a,c,c,b):{paths:[],complete:d.complete}}));return{paths:c.flatMap(a=>a.paths),complete:c.every(a=>a.complete)}}async function J(a,b){let c=Date.now()-18e4,d=[];for(let e of a){if(d.length>=32)break;if(b.has(e.path)||!e.path.endsWith(".jsonl")||e.st.mtimeMs<=c)continue;let a=(0,t.Ko)(e.rootName);(0,t.wK)(e.path,e.st.size,e.st.mtimeMs,a)||d.push(e)}let e=!1;return await (0,i.pV)(d,a=>{let b=(0,t.pk)(a.path,a.st.size,a.st.mtimeMs,(0,t.Ko)(a.rootName),!1);e||="busy"===b.turn.state}),e}function K(a,b,c){return(0,s.Wl)(a,a=>{let c;return(c=b.get(a.path))&&"other"!==c?c:`unresolved:${h().dirname(a.path)}`},void 0,{protect:a=>(function(a,b){if(b?.has(a.path))return!0;if(!a.path.endsWith(".jsonl"))return!1;let c=(0,t.wK)(a.path,a.st.size,a.st.mtimeMs,(0,t.Ko)(a.rootName));return c?.state==="busy"})(a,c)})}let L={codex:"Codex",claude:"Claude",openclaw:"OpenClaw"};async function M(a,b,c,d=[],e=a=>a){let f=new Map(a),g=(0,j.xg)(!0);await (0,i.pV)([...g.projectByPath],([a,b])=>{let c=e(a);f.has(c)&&f.set(c,b)});let h=new Map,k=new Map;return await (0,i.pV)(d,a=>{k.set(a.project,{projectRoot:a.projectRoot,displayName:a.displayName})}),await (0,i.pV)(b,b=>{if(c?.has(b.path))return;let d=f.get(b.path)??b.project,e=a.get(b.path)??b.project,i=k.get(e),j=g.projectMetadataByPath.get(b.path),l=h.get(d)??{project:d,displayName:j?.displayName??i?.displayName??b.projectName,smt:0,conversations:0};l.smt=Math.max(l.smt,b.mtime),l.conversations+=1;let m=j?.projectRoot??i?.projectRoot;!l.projectRoot&&m&&(l.projectRoot=m),h.set(d,l)}),{projectByPath:f,projectCatalog:[...h.values()].sort((a,b)=>b.smt-a.smt||a.project.localeCompare(b.project))}}async function N(a,b,c,d,e,f=a=>a,g){let j=(0,q.g)(),k=(0,u.xe)(c,f),l=(0,u.xe)(d,f);a.sort((a,b)=>b.st.mtimeMs-a.st.mtimeMs);let n=new Map;await (0,i.pV)(a,a=>{if("codex-sessions"!==a.rootName||!a.path.endsWith(".jsonl"))return;let b=(0,m.Gz)(a.path);b&&n.set(b,a)});let p=k?.size?[...a.filter(a=>!k.has(a.path)),...a.filter(a=>k.has(a.path))]:a,r=K(p,b??new Map,g);await J(p,new Set(r.map(a=>a.path)))&&(r=K(p,b??new Map,g));let s=new Set(r.map(a=>a.path)),t=l?.size?new Set(s):void 0,v=l?.size?new Map(a.map(a=>[a.path,a])):null,w=async(a,b)=>{await (0,i.pV)(a,c=>{if("codex-sessions"!==c.rootName||!c.path.endsWith(".jsonl"))return;let d=e?.get(c.path)?.nativeParentThreadId,f=void 0===d?(0,m.S)(c.path,c.st.size,c.st.mtimeMs):d,g=f?n.get(f):void 0;g&&!b.has(g.path)&&(b.add(g.path),a.push(g))})};for(let a of(t&&await w([...r],t),l??[])){if(s.has(a))continue;let b=v?.get(a);b&&(s.add(b.path),r.push(b))}await w(r,s);let x=await (0,i.j0)(r,a=>{let c=e?.get(a.path)??(0,o.q0)(a.rootName,a.root,a.path,a.st,j);return{path:a.path,root:a.rootName,name:h().relative(a.root,a.path),project:b?.get(a.path)??c.project,projectName:c.projectName,projectUnresolved:c.projectUnresolved,worktree:c.worktree,cwd:c.cwd,sessionStartedAt:c.sessionStartedAt,nativeParentThreadId:c.nativeParentThreadId,nativeForkSourceThreadId:c.nativeForkSourceThreadId,projectRoot:c.projectRoot,title:c.title,engine:c.engine,kind:c.kind,fmt:c.fmt,parent:null,mtime:a.st.mtimeMs/1e3,size:a.st.size,activity:"idle",proc:null,pid:null,model:null,pendingQuestion:null,waitingInput:null}}),y=t?r.filter(a=>!t.has(a.path)).map(a=>a.path):[];return{files:x,...y.length?{pinOverlayPaths:y}:{}}}async function O(a=(0,r.s9)(),b,c={}){let d=(0,p.FX)(!1!==c.persist||!0===c.persistIndex),e=z(48),f=await H(a,e,c.onResourceSnapshot?a=>{var b;let d;return c.onResourceSnapshot((b=c.resourceBaseline,d=new Map((b?.files??[]).map(a=>[a.path,a])),{files:a.filter(a=>"claude-tasks"!==a.rootName&&a.path.endsWith(".jsonl")).map(a=>{let b=d.get(a.path),c="codex-sessions"===a.rootName?"codex":"openclaw-sessions"===a.rootName?"openclaw":"claude",e=b?.mtime??Date.now()/1e3,f=b?.size??1,g=function(a,b,c){let d=Date.now()/1e3-b;if(a?.size===c&&a.mtime===b){if("jsonl_turn_open"===a.activityReason||"jsonl_turn_stalled"===a.activityReason)return d<180?{activity:"live",activityReason:"jsonl_turn_open"}:{activity:"stalled",activityReason:"jsonl_turn_stalled"};if("jsonl_turn_completed"===a.activityReason)return d<900?{activity:"recent",activityReason:"jsonl_turn_completed"}:{activity:"idle",activityReason:"jsonl_turn_completed"}}return d<20?{activity:"live",activityReason:"mtime_fresh"}:d<900?{activity:"recent",activityReason:"mtime_recent"}:{activity:"idle",activityReason:"mtime_old"}}(b,e,f),i=h().basename(a.path);return{path:a.path,root:a.rootName,name:h().relative(a.root,a.path),project:b?.project??"other",projectName:b?.projectName,projectUnresolved:b?.projectUnresolved,cwd:b?.cwd,sessionStartedAt:b?.sessionStartedAt,nativeParentThreadId:b?.nativeParentThreadId,nativeForkSourceThreadId:b?.nativeForkSourceThreadId,projectRoot:b?.projectRoot,worktree:b?.worktree,title:b?.title??(i.startsWith("agent-")?`Subagent ${i.slice(6).split(".")[0]}`:`${L[c]} session`),engine:c,kind:b?.kind??(i.startsWith("agent-")?"subagent":"session"),fmt:c,parent:b?.parent??null,mtime:e,size:f,...g,proc:b?.proc??null,pid:b?.pid??null,model:null,pendingQuestion:null,waitingInput:null}}),projectCatalog:b?.projectCatalog??[],complete:!0}))}:void 0),g=F(a),i=(0,u.xe)(c.demote??c.loadDemote?.(),g),j=await (0,p.fX)(f.raw,{persist:c.persist,persistIndex:c.persistIndex,excludedSummaryPaths:i,scanToken:d,complete:f.complete}),{projectCatalog:k,projectByPath:l}=await M(j.projectByPath,j.conversationCatalog,i,j.projectCatalog,g),m=await N(f.raw,l,i,c.pin,j.summaryByPath,g,(0,u.xe)(c.hosted,g));return G(j.conversationCatalog,j.complete,d,l,c.transcriptIndexScheduler),{...m,projectCatalog:k,...c.transportConversationCatalog?{conversationCatalog:j.conversationCatalog.map(a=>({...a,project:l.get(a.path)??a.project}))}:{},complete:j.complete}}async function P(a=(0,r.s9)(),b,c,d){let e=(0,p.FX)(!1),f=z(48),g=await H(a,f),h=F(a),i=await (0,p.fX)(g.raw,{persist:!1,scanToken:e,complete:g.complete}),{projectByPath:j}=await M(i.projectByPath,i.conversationCatalog,void 0,i.projectCatalog,h),k=await N(g.raw,j,b,c,i.summaryByPath,h,(0,u.xe)(d,h));return G(i.conversationCatalog,i.complete,e,j),k.files}},62142:(a,b,c)=>{c.d(b,{NU:()=>p,OK:()=>C,WM:()=>D,ZW:()=>B,_1:()=>o,cZ:()=>x,d3:()=>E,dC:()=>m,fm:()=>w,g2:()=>l,ye:()=>n});let d=/^\s*[❯›]/,e=/\? for shortcuts|bypass permissions on|Press up to edit|⏎ send|Context \d+% used/,f=/Resume from summary/,g=/Do you trust|trust this folder|trust the contents of this directory/i,h=/Enter to confirm|Press enter to continue/i,i=/Allow command\?|Do you want to proceed\?|Press enter to approve|approve this (command|action)|\(y\/n\)|Yes, (allow|proceed|run)/i,j=/You(?:'ve| have) (?:hit|reached) (?:your|the) .{0,24}limit|(?:usage|rate).?limit (?:reached|hit|exceeded)|out of (?:quota|credits)|\d+.hour limit reached|limit resets/i,k=new Set(["zsh","bash","fish","sh","dash"]);function l(a){return null!==a&&k.has(a)}function m(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a-=1){let c=b[a]??"";if(d.test(c))return c}return""}function n(a){return f.test(a)?"resume_picker":g.test(a)?"trust_prompt":h.test(a)?"startup_gate":null}function o(a){let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a-=1)if(d.test(b[a]??"")){c=a;break}if(-1!==c){let a=b.slice(c+1).join("\n");if(e.test(a)&&!i.test(a)&&!j.test(a))return null}let f=b.slice(-14).join("\n");return i.test(f)?"approval_prompt":j.test(f)?"rate_limit":null}function p(a,b=Date.now()/1e3){return"rate_limit"!==o(a)?null:{resetAt:function(a,b){let c=/(?:try again|resets?)(?:\s+\w+){0,4}\s+(?:at\s+)?(\d{1,2})(?::(\d{2}))?\s*([ap])\.?m\.?/i.exec(a);if(!c)return null;let d=Number(c[1]),e=Number(c[2]??"0");if(d<1||d>12)return null;let f=d%12+12*(c[3]?.toLowerCase()==="p");if(!Number.isFinite(b)||f<0||f>23||e<0||e>59)return null;let g=new Date(1e3*b),h=new Date(g);return h.setHours(f,e,0,0),h.getTime()<=g.getTime()&&h.setDate(h.getDate()+1),Math.floor(h.getTime()/1e3)}(a.split("\n").slice(-14).join("\n"),b)}}let q=/^\s*❯?\s*\d+\.\s+\S/m,r=/Enter to (select|confirm|submit)/,s=/^\s*[─━—]{6,}\s*$/,t=/[☐☑✔☒]/,u=/^\s*(❯\s*)?(\d{1,2})\.\s+(\S.*)$/,v=/\s*\(Recommended\)\s*$/i;function w(a){let b=a.split("\n").map(a=>a.replace(/\s+$/,"")),c=-1;for(let a=b.length-1;a>=0;a-=1)if(r.test(b[a]??"")){c=a;break}if(-1===c)return null;let d=-1;for(let a=c-1;a>=Math.max(0,c-40);a-=1){let c=u.exec(b[a]??"");if(c&&1===Number(c[2])){d=a;break}}if(-1===d)return null;let e=[];for(let a=d;a<c;a+=1){let c=b[a]??"";if(!c.trim()||s.test(c))continue;let d=u.exec(c);if(d){let a=d[3].trim(),b=a.replace(v,"").trim();e.push({value:Number(d[2]),label:b||a,description:"",recommended:v.test(a)});continue}let f=e[e.length-1];f&&/^\s{2,}\S/.test(c)&&(f.description=f.description?`${f.description} ${c.trim()}`:c.trim())}if(e.length<2||e.some((a,b)=>a.value!==b+1))return null;let f=[],g=d-1;for(;g>=0&&!(b[g]??"").trim();)g-=1;for(let a=g;a>=0&&f.length<8;a-=1){let c=b[a]??"";if(!c.trim()||s.test(c)||t.test(c)||u.test(c))break;f.unshift(c.trim())}let h=f.join(" ").trim();if(!h)return null;let i=[],j=g-f.length;for(;j>=0&&!(b[j]??"").trim();)j-=1;let k=j>=0?b[j]??"":"";if(t.test(k))for(let a of k.replace(/[←→]/g," ").split(/\s{2,}/)){let b=a.replace(/[☐☑✔☒]/g,"").trim();b&&i.push({label:b,done:/[☑✔]/.test(a)})}return{question:h,tabs:i,options:e}}function x(a){if(null!==o(a)||g.test(a))return!0;let b=a.split("\n").slice(-14).join("\n");return q.test(b)&&!e.test(b)}let y=/esc to interrupt|ctrl\+c to (?:stop|cancel)|Interrupting/i,z=/Select login method|Choose (?:a|your) login method|Log in to (?:Claude|continue)|Sign in to (?:Claude|continue)/i,A=/Bypass Permissions mode[\s\S]*(?:accept all responsibility|No, exit)/i;function B(a,b){if("claude"!==a||y.test(b)||D(b))return null;let c=b.split("\n").slice(-20).join("\n");return z.test(c)?{code:"authentication_required",message:"Claude needs account re-login. Open Accounts, sign in, and retry the launch."}:A.test(c)?{code:"bypass_acceptance_required",message:"Claude bypass-permissions acceptance was not prepared. Retry the launch after refreshing the account."}:null}function C(a,b,c){if(B(a,b))return!1;let d=c.split("\n").map(a=>a.trim()).find(Boolean)?.slice(0,32)??"";if(!d)return D(b);if(y.test(b))return!0;let f=m(b);return!(f.includes(d)||f.includes("[Pasted text"))&&""!==f&&e.test(b)}function D(a){if(x(a))return!1;let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a-=1)if(d.test(b[a]??"")){c=a;break}if(-1===c)return!1;let f=b.slice(c+1).join("\n");return e.test(f)&&!y.test(f)}function E(a){return a.split("\n").filter(a=>a.trim()).slice(-3).join(" | ").slice(0,300)}},62862:(a,b,c)=>{c.d(b,{VD:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(14071),i=c(50920),j=c(52114);function k(a){let b=g().resolve(a);try{return e().realpathSync(b)}catch{return b}}function l(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));if(1!==b.version||!b.attempts||"object"!=typeof b.attempts)return new Map;return new Map(Object.entries(b.attempts).filter(a=>{var b;return!!(b=a[1])&&"object"==typeof b&&"string"==typeof b.accountId&&"number"==typeof b.generation&&"number"==typeof b.startedAt&&"number"==typeof b.updatedAt&&("pending"===b.state||"completed"===b.state||"failed"===b.state||"stale"===b.state||"cancelled"===b.state)&&(null===b.reason||"child-died"===b.reason||"login-unsuccessful"===b.reason||"cancelled"===b.reason||"viewer-restarted"===b.reason||"account-read-failed"===b.reason||"start-failed"===b.reason)}))}catch{return new Map}}class m{constructor(a={}){this.active=new Map,this.pendingRecords=new Map,this.recordDrain=null,this.recordRetryTimer=null,this.recordRetryAttempt=0,this.startClient=a.startClient??(a=>j.zC.start({home:a})),this.now=a.now??(()=>Date.now()),this.stateFile=a.stateFile??(0,i.BQ)("codex-login-attempts.json"),this.records=l(this.stateFile)}async startLogin(a){return this.beginLogin(a,!1)}async retryLogin(a){return this.beginLogin(a,!0)}beginLogin(a,b){if("managed"!==a.kind)return Promise.reject(Error("only managed Codex accounts can start an app-server login"));this.records=l(this.stateFile);let c=k(a.home),d=this.active.get(c);if(d&&!b)return d.startPromise;let e=d??null,f=this.records.get(c),g=this.now(),h=Math.max(f?.generation??0,e?.generation??0)+1,i={accountId:a.id,generation:h,state:"pending",startedAt:g,updatedAt:g,reason:null,home:c,client:null,loginId:null,verificationUrl:null,userCode:null,startPromise:null};return this.active.set(c,i),this.record(c,i),i.startPromise=this.launch(a,i,e),i.startPromise}async launch(a,b,c){c&&await this.stopSuperseded(c);try{let c=await this.startClient(a.home);if(!this.owns(b))throw c.close(),Error("a newer managed login owns this Codex home");b.client=c,c.onLifecycle(a=>{"failed"===a.type&&this.settle(b,"failed","child-died",!1)}),c.onNotification(a=>{var c,d;"account/login/completed"===a.method&&(c=a.params,d=b.loginId,c&&"object"==typeof c&&d&&c.loginId===d&&"boolean"==typeof c.success)&&this.settle(b,a.params.success?"completed":"failed",a.params.success?null:"login-unsuccessful",!0)});let d=await c.startDeviceLogin();if(!this.owns(b))throw c.close(),Error("a newer managed login owns this Codex home");return b.loginId=d.loginId,b.verificationUrl=d.verificationUrl,b.userCode=d.userCode,function(a){if(!a.loginId||!a.verificationUrl||!a.userCode)throw Error("managed login challenge is incomplete");return{accountId:a.accountId,loginId:a.loginId,verificationUrl:a.verificationUrl,userCode:a.userCode,startedAt:a.startedAt}}(b)}catch(a){throw this.settle(b,"failed","start-failed",!0),a}}async cancelLogin(a){let b=[...this.active.values()].find(b=>b.accountId===a);if(b)return await this.cancelAttempt(b,"cancelled"),!0;this.records=l(this.stateFile);let c=[...this.records.entries()].find(([,b])=>b.accountId===a);return!!c&&(this.record(c[0],{...c[1],state:"cancelled",updatedAt:this.now(),reason:"cancelled"}),!0)}async cancelAttempt(a,b){if(!this.owns(a))return;let c=a.client;if(this.settle(a,"cancelled",b,!1),!c)return void await a.startPromise.catch(()=>void 0);if(!a.loginId){c.close(),await a.startPromise.catch(()=>void 0);return}try{await c.cancelLogin(a.loginId)}catch{}finally{c.close()}}async stopSuperseded(a){let b=a.client;if(!b||!a.loginId)return void b?.close();try{await b.cancelLogin(a.loginId)}catch{}finally{b.close()}}async loginSnapshot(a){if("managed"!==a.kind)return{state:a.authPresent?"authenticated":"idle",attemptState:null,deviceAuth:null};let b=k(a.home),c=this.active.get(b),d=l(this.stateFile).get(b);try{let e=await this.readAccount(c?.client??null,a.home);if(n(e))return c?this.settle(c,"completed",null,!0):d&&this.record(b,{...d,state:"completed",updatedAt:this.now(),reason:null}),{state:"authenticated",attemptState:"completed",deviceAuth:null};if(c?.state==="pending"&&c.verificationUrl&&c.userCode)return{state:"pending",attemptState:"pending",deviceAuth:{url:c.verificationUrl,code:c.userCode}};if(d?.state==="pending"){let a={...d,state:"stale",updatedAt:this.now(),reason:"viewer-restarted"};return this.record(b,a),{state:"stale",attemptState:"stale",deviceAuth:null}}return d?{state:d.state,attemptState:d.state,deviceAuth:null}:{state:"idle",attemptState:null,deviceAuth:null}}catch{let a=d??c;if(a){let d={...a,state:"stale",updatedAt:this.now(),reason:"account-read-failed"};this.settle(c??null,"stale","account-read-failed",!0),c||this.record(b,d)}return{state:"stale",attemptState:"stale",deviceAuth:null}}}peekLogin(a){return this.peekLoginFrom(a,l(this.stateFile))}peekLogins(a){let b=l(this.stateFile);return new Map(a.map(a=>[a.id,this.peekLoginFrom(a,b)]))}peekLoginFrom(a,b){if("managed"!==a.kind)return{state:a.authPresent?"authenticated":"idle",attemptState:null,deviceAuth:null};let c=k(a.home),d=this.active.get(c),e=b.get(c);return e?.state==="pending"&&d?.state==="pending"&&d.verificationUrl&&d.userCode?{state:"pending",attemptState:"pending",deviceAuth:{url:d.verificationUrl,code:d.userCode}}:e?{state:e.state,attemptState:e.state,deviceAuth:null}:d?.state==="pending"?{state:"pending",attemptState:"pending",deviceAuth:null}:{state:"idle",attemptState:null,deviceAuth:null}}async readRateLimits(a){return(await this.probeQuota(a)).rateLimits}async verifyAuthentication(a){return(await this.probeQuota(a)).authenticated}async probeQuota(a){let b=this.active.get(k(a.home));if(b?.client)return this.probeQuotaFrom(b.client);let c=await this.startClient(a.home);try{return await this.probeQuotaFrom(c)}finally{c.close()}}async readAccount(a,b){if(a)return a.readAccount();let c=await this.startClient(b);try{return await c.readAccount()}finally{c.close()}}async probeQuotaFrom(a){let b=await a.readAccount();return{account:b,rateLimits:(await a.readRateLimits()).rateLimits,authenticated:n(b),envelope:a.inboundEnvelope()}}owns(a){return this.active.get(a.home)?.generation===a.generation}settle(a,b,c,d){if(!a||!this.owns(a))return;this.active.delete(a.home);let e={...a,state:b,updatedAt:this.now(),reason:c};try{this.record(a.home,e)}catch{this.queueRecord(a.home,e)}finally{d&&a.client?.close()}}record(a,b){try{(0,h.oV)(()=>this.writeRecords(new Map([[a,b]])))}catch(c){if(!(c instanceof h.gB))throw c;this.queueRecord(a,b)}}writeRecords(a){this.records=l(this.stateFile);let b=!1;for(let[c,d]of a){let a=this.records.get(c);a&&a.generation>d.generation||(this.records.set(c,{accountId:d.accountId,generation:d.generation,state:d.state,startedAt:d.startedAt,updatedAt:d.updatedAt,reason:d.reason}),b=!0)}if(!b)return;let c={version:1,attempts:Object.fromEntries(this.records)},d=g().dirname(this.stateFile),f=g().join(d,`.${g().basename(this.stateFile)}.${process.pid}.${Date.now()}.tmp`);try{e().mkdirSync(d,{recursive:!0,mode:448}),e().writeFileSync(f,JSON.stringify(c,null,2)+"\n",{mode:384}),e().renameSync(f,this.stateFile)}finally{e().rmSync(f,{force:!0})}}queueRecord(a,b){let c=this.pendingRecords.get(a);(!c||c.generation<=b.generation)&&this.pendingRecords.set(a,b),this.startRecordDrain()}startRecordDrain(){if(this.recordDrain||this.recordRetryTimer)return;let a=(async()=>{for(;this.pendingRecords.size>0;){let a=new Map(this.pendingRecords);for(let[b,c]of(await (0,h.Cu)(async()=>this.writeRecords(a)),a))this.pendingRecords.get(b)===c&&this.pendingRecords.delete(b)}})();this.recordDrain=a,a.then(()=>{this.recordDrain=null,this.recordRetryAttempt=0,this.pendingRecords.size>0&&this.startRecordDrain()},()=>{this.recordDrain=null,this.recordRetryAttempt+=1;let a=Math.min(100*2**Math.min(this.recordRetryAttempt-1,8),3e4);(1===this.recordRetryAttempt||(this.recordRetryAttempt&this.recordRetryAttempt-1)==0)&&console.error(`[codex accounts] Codex login outcome persistence failed; retry ${this.recordRetryAttempt} in ${a}ms`),this.recordRetryTimer=setTimeout(()=>{this.recordRetryTimer=null,this.startRecordDrain()},a),this.recordRetryTimer.unref?.()})}}function n(a){return a.account?.type==="chatgpt"}let o=null;function p(){return o??=new m}},65377:(a,b,c)=>{c.d(b,{Cy:()=>d,Fd:()=>e});let d="WAKATIME_API_KEY";function e(a){let b={};for(let c of Object.keys(a))c!==d&&(b[c]=a[c]);return b}},65465:(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(50920),k=c(79866),l=c(69611);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"].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.V5)(e)??a.get(e),f=b?(0,l.im)(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"].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}}},65862:(a,b,c)=>{c.d(b,{Lu:()=>g,s_:()=>f,wL:()=>e});var d=c(77598);function e(a){return{perTurnEffort:"codex"===a,perTurnModel:!1}}function f(a){return"codex"===a?{control:"compact",engine:a,supported:!0,confirmation:"observed"}:{control:"compact",engine:a,supported:!0,confirmation:"best-effort"}}function g(){return`op_${(0,d.randomUUID)()}`}},67852:(a,b,c)=>{c.d(b,{JN:()=>i,NN:()=>n,ZD:()=>p,f$:()=>m,wi:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g);function i(a,b){let c="head"===b?["rev-parse","HEAD"]:["merge-base","HEAD",function(a){let b=(0,d.spawnSync)("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:a,encoding:"utf8"});if(0===b.status&&b.stdout.trim())return b.stdout.trim().replace(/^origin\//,"origin/");for(let b of["origin/main","origin/master","main","master"])if(0===(0,d.spawnSync)("git",["rev-parse","--verify",b],{cwd:a,encoding:"utf8"}).status)return b;return null}(a)??"origin/main"],e=(0,d.spawnSync)("git",c,{cwd:a,encoding:"utf8"});if(0!==e.status)return{ok:!1,error:(e.stderr||e.stdout||"failed to resolve git base ref").trim()};let f=e.stdout.trim();return f?{ok:!0,sha:f}:{ok:!1,error:"git returned an empty base ref"}}function j(a){let b=a.trim().replace(/\.git$/,""),c=RegExp(String.raw`^(?:ssh:\/\/)?git`+"@"+String.raw`github\.com[:/]([^/]+\/[^/]+)$`).exec(b);if(c)return c[1]??null;try{let a=new URL(b);if("github.com"!==a.hostname)return null;let c=a.pathname.replace(/^\//,"");return/^[^/]+\/[^/]+$/.test(c)?c:null}catch{return null}}let k=globalThis,l=k.__llvRepositoryCache??=new Map;function m(a,b=Date.now()){let c=l.get(a);if(c&&b-c.at<6e5)return c.repository;let d=null;try{let b=function(a){let b,c=function(a){let b=h().join(a,".git");try{let c=f().lstatSync(b);if(c.isDirectory())return b;if(!c.isFile())return null;let d=f().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+)\s*$/im.exec(d);return e?.[1]?h().resolve(a,e[1]):null}catch{return null}}(a);if(!c)return null;try{b=f().readFileSync(h().join(function(a){try{let b=f().readFileSync(h().join(a,"commondir"),"utf8").trim();return b?h().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=!1;for(let a of b.split(/\r?\n/)){let b=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(a);if(b){d="origin"===b[1];continue}if(/^\s*\[/.test(a)){d=!1;continue}if(!d)continue;let c=/^\s*url\s*=\s*(.*?)\s*$/i.exec(a)?.[1],e=c?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(a);b&&(d=j(b))}catch{d=null}return l.set(a,{repository:d,at:b}),d}function n(a){let b=(0,d.spawnSync)("git",["remote","get-url","origin"],{cwd:a,encoding:"utf8"}),c=(0,d.spawnSync)("git",["branch","--show-current"],{cwd:a,encoding:"utf8"}),e=(0,d.spawnSync)("git",["rev-parse","HEAD"],{cwd:a,encoding:"utf8"});if(0!==b.status||0!==c.status||0!==e.status)return null;let f=j(b.stdout),g=c.stdout.trim(),h=e.stdout.trim();return f&&g&&/^[0-9a-f]{40}$/i.test(h)?{repository:f,headRef:g,headSha:h}:null}function o(a){let b=(0,d.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a,encoding:"utf8",timeout:2e3});if(0!==b.status||b.stdout.trim())return null;let c=(0,d.spawnSync)("git",["rev-parse","HEAD"],{cwd:a,encoding:"utf8",timeout:2e3}),e=c.stdout.trim();return 0===c.status&&/^[0-9a-f]{40}$/i.test(e)?e:null}function p(a,b){let c=(0,d.spawnSync)("git",["ls-remote","--heads","origin",`refs/heads/${b}`],{cwd:a,encoding:"utf8",timeout:5e3});if(0!==c.status)return null;let e=c.stdout.trim().split(/\s+/)[0]??"";return/^[0-9a-f]{40}$/i.test(e)?e:null}},68343:(a,b,c)=>{let d;c.d(b,{VO:()=>G,s4:()=>K,kR:()=>D});var e=c(31421),f=c(77598),g=c.n(f),h=c(73024),i=c.n(h),j=c(76760),k=c.n(j),l=c(4351),m=c(50920);let n=null;var o=c(49370),p=c(65377),q=c(14071),r=c(53133);let s=new Set(["claude.ai","claude.com","platform.claude.com","console.anthropic.com"]),t=/\x1B(?:\[[0-?]*[ -/]*[@-~]|\][^\x07\x1B]*(?:\x07|\x1B\\))/g,u=/https:\/\/[^\s"'<>]+/g;function v(a){try{return i().readFileSync(`/proc/${a}/stat`,"utf8").split(" ")[21]??null}catch{return null}}function w(a){return async function(b,c){for(;a(b)===c;)await new Promise(a=>setTimeout(a,25))}}function x(a){let b=a.filter(Boolean),c=/(?:^|\/)claude$/.test(b[0]??"")&&4===b.length,d=/(?:^|\/)(?:node|bun)$/.test(b[0]??"")&&/claude/i.test(b[1]??"")&&5===b.length,e=/(?:^|\/)(?:sh|dash|bash)$/.test(b[0]??"")&&/(?:^|\/)claude$/.test(b[1]??"")&&5===b.length,f=c?1:d||e?2:-1;return f>=0&&"auth"===b[f]&&"login"===b[f+1]&&"--claudeai"===b[f+2]}function y(a){try{var b;return b=i().readFileSync(`/proc/${a}/cmdline`,"utf8"),x(b.split("\0"))}catch{return!1}}let z={startToken:o.P3,argv:function(a){if(!Number.isInteger(a)||a<=0)return null;let b=function(){if(void 0!==d)return d;if("darwin"!==process.platform)return d=null;try{let a=c(85786),b=a.dlopen("/usr/lib/libSystem.B.dylib",{sysctl:{args:[a.FFIType.ptr,a.FFIType.u32,a.FFIType.ptr,a.FFIType.ptr,a.FFIType.ptr,a.FFIType.u64],returns:a.FFIType.i32}}),e=Buffer.alloc(8),f=(c,d,f)=>Number(b.symbols.sysctl(a.ptr(c),c.byteLength/4,a.ptr(d),a.ptr(f),a.ptr(e),BigInt(0)));d=(a,b)=>{let c=Buffer.alloc(12);c.writeInt32LE(1,0),c.writeInt32LE(49,4),c.writeInt32LE(a,8);let d=Buffer.alloc(8);if(d.writeBigUInt64LE(BigInt(b.byteLength)),0!==f(c,b,d))return -1;let e=Number(d.readBigUInt64LE());return Number.isSafeInteger(e)?e:-1},n=Buffer.alloc(function(a){let b=Buffer.alloc(8);b.writeInt32LE(1,0),b.writeInt32LE(8,4);let c=Buffer.alloc(4),d=Buffer.alloc(8);if(d.writeBigUInt64LE(BigInt(c.byteLength)),0!==a(b,c,d))return 1048576;let e=c.readInt32LE(0);return e>=4096&&e<=0x2000000?e:1048576}(f))}catch{d=null}return d}(),e=n;if(!b||!e)return null;try{return function(a,b){if(b<4||b>a.byteLength)return null;let c=a.readInt32LE(0);if(c<=0||c>4096)return null;let d=a.indexOf(0,4);if(d<0||d>=b)return null;for(;d<b&&0===a[d];)d+=1;let e=[];for(;e.length<c;){let c=a.indexOf(0,d);if(c<0||c>=b)return null;e.push(a.toString("utf8",d,c)),d=c+1}return e}(e,b(a,e))}catch{return null}}},A=new Int32Array(new SharedArrayBuffer(4));function B(a){return(0,r.fg)(a)||a===(0,r.Hy)()}async function C(a){return await new Promise(b=>{let c=(0,e.spawn)((0,l.uX)("claude"),["auth","status","--json"],{env:B(a)?(0,r.x0)(a):(0,p.Fd)(process.env),stdio:["ignore","pipe","ignore"],detached:!1}),d="";c.stdout?.on("data",a=>{d.length<65536&&(d+=a.toString("utf8"))});let f=setTimeout(()=>{c.kill("SIGKILL"),b({loggedIn:!1,method:null,email:null,plan:null,indeterminate:!0})},5e3);c.once("close",()=>{clearTimeout(f);try{let a=JSON.parse(d);b({loggedIn:!0===a.loggedIn,method:"string"==typeof a.authMethod?a.authMethod:null,email:"string"==typeof a.email?a.email:null,plan:"string"==typeof a.subscriptionType?a.subscriptionType:null})}catch{b({loggedIn:!1,method:null,email:null,plan:null,indeterminate:!0})}}),c.once("error",()=>{clearTimeout(f),b({loggedIn:!1,method:null,email:null,plan:null,indeterminate:!0})})})}let D={spawn:(a,b,c)=>(0,e.spawn)(a,b,c),kill:(a,b)=>{try{process.kill(-a,b)}catch{try{process.kill(a,b)}catch{}}},...function(a=process.platform,b=z){return"darwin"===a?{pidStartToken:b.startToken,isExpectedClaude:a=>{let c=function(a,b){if(a===process.pid)return b.argv(a);let c=b.argv(process.pid),d=Date.now()+1e3;for(;;){let e=b.argv(a);if(null!==e&&!function(a,b){return null!==b&&a.length===b.length&&a.every((a,c)=>a===b[c])}(e,c))return e;if(null===e&&null===b.startToken(a))return null;if(Date.now()>=d)return e;try{Atomics.wait(A,0,0,2)}catch{let a=Date.now()+2;for(;Date.now()<a;);}}}(a,b);return null!==c&&x(c)},waitForExit:w(b.startToken)}:{pidStartToken:v,isExpectedClaude:y,waitForExit:w(v)}}(),status:C,now:Date.now,setTimeout,clearTimeout},E={load:()=>JSON.parse(i().readFileSync((0,m.BQ)("claude-auth-operations.json"),"utf8")),save:a=>{let b=(0,m.BQ)("claude-auth-operations.json");i().mkdirSync(k().dirname(b),{recursive:!0,mode:448});let c=`${b}.${process.pid}.tmp`;try{i().writeFileSync(c,JSON.stringify(a),{mode:384});let d=i().openSync(c,"r");try{i().fsyncSync(d)}finally{i().closeSync(d)}i().renameSync(c,b);let e=i().openSync(k().dirname(b),"r");try{i().fsyncSync(e)}finally{i().closeSync(e)}}finally{i().rmSync(c,{force:!0})}}};function F(a){return"authenticated"===a||"canceled"===a||"timed_out"===a||"failed"===a||"interrupted"===a}let G=new Set(["starting","awaiting_browser","awaiting_code","verifying","canceling"]);function H(a){return!!a&&"object"==typeof a&&"string"==typeof a.operationId&&a.operationId.length>0&&("string"==typeof a.accountId||null===a.accountId)&&"string"==typeof a.phase&&G.has(a.phase)&&("number"==typeof a.pid&&Number.isInteger(a.pid)&&a.pid>0||null===a.pid)&&("string"==typeof a.startToken||null===a.startToken)&&"number"==typeof a.generation&&Number.isInteger(a.generation)&&a.generation>=0&&"string"==typeof a.startedAt&&Number.isFinite(Date.parse(a.startedAt))&&"string"==typeof a.deadlineAt&&Number.isFinite(Date.parse(a.deadlineAt))}function I(a,b,c){return{status:a,code:b,message:c}}class J{constructor(a=D,b=E){this.ports=a,this.store=b,this.operations=new Map,this.children=new Map,this.timers=new Map,this.output=new Map,this.closed=new Map,this.generation=0,this.persistDirty=!1,this.deferredPersist=null,this.recovery=this.reconcilePersisted()}whenRecovered(){return this.recovery}persistedOperations(){return[...this.operations.values()].filter(a=>!F(a.phase)).map(({operationId:a,accountId:b,phase:c,pid:d,startToken:e,generation:f,startedAt:g,deadlineAt:h})=>({operationId:a,accountId:b,phase:c,pid:d,startToken:e,generation:f,startedAt:g,deadlineAt:h}))}persist(){try{(0,q.oV)(()=>this.store.save(this.persistedOperations()))}catch(a){if(!(a instanceof q.gB))throw a;this.queuePersist()}}queuePersist(){if(this.persistDirty=!0,this.deferredPersist)return;let a=(async()=>{for(;this.persistDirty;)this.persistDirty=!1,await (0,q.Cu)(async()=>this.store.save(this.persistedOperations()))})();this.deferredPersist=a,a.then(()=>{this.deferredPersist=null,this.persistDirty&&this.queuePersist()},()=>{this.deferredPersist=null;let a=[...this.operations.values()].find(a=>!F(a.phase));a&&this.persistenceFailure(a.operationId)})}refreshDurableOperations(){let a;try{a=this.store.load()}catch{return}for(let b of a)H(b)&&(this.generation=Math.max(this.generation,b.generation),this.operations.has(b.operationId)||this.operations.set(b.operationId,{...b,loginUrl:null,acceptsCode:!1,result:null,submitted:"verifying"===b.phase}))}summary(a){let{operationId:b,phase:c,loginUrl:d,acceptsCode:e,deadlineAt:f,result:g}=a;return{operationId:b,phase:c,loginUrl:d,acceptsCode:e,deadlineAt:f,result:g}}update(a,b){let c=this.operations.get(a);if(!c)throw Error("unknown Claude login operation");let d={...c,...b};this.operations.set(a,d);try{this.persist()}catch(b){throw this.operations.set(a,c),b}return d}reserve(){if(this.refreshDurableOperations(),[...this.operations.values()].some(a=>!F(a.phase)))throw Error("a Claude login operation is already running");let a=this.ports.now(),b={operationId:g().randomUUID(),accountId:null,phase:"starting",loginUrl:null,acceptsCode:!1,deadlineAt:new Date(a+6e5).toISOString(),result:null,pid:null,startToken:null,generation:++this.generation,submitted:!1,startedAt:new Date(a).toISOString()};this.operations.set(b.operationId,b);try{this.persist()}catch(a){throw this.operations.delete(b.operationId),a}return this.summary(b)}abandon(a){let b=this.operations.get(a);if(!(!b||F(b.phase)))try{this.finish(a,"failed",I("failure","account_creation_failed","Claude account creation could not complete"))}catch{this.persistenceFailure(a)}}start(a,b){let c=null,d=null;try{if(b){let d=this.operations.get(b);if(!d||F(d.phase)||null!==d.accountId)throw Error("Claude login reservation is unavailable");c=b,this.update(c,{accountId:a})}else c=this.reserve().operationId,this.update(c,{accountId:a});let e=c;if(!e)throw Error("Claude login operation is unavailable");let f=(0,r.ob)(a);if(!B(f.home))throw Error("unsafe Claude account");let g=this.ports.spawn((0,l.uX)("claude"),["auth","login","--claudeai"],{cwd:process.env.HOME||"/",env:{...(0,r.x0)(f.home),UMASK:"077"},detached:!0,stdio:["pipe","pipe","pipe"]}),h=g.pid??null,i=h?this.ports.pidStartToken(h):null;if(!h||!i||!this.ports.isExpectedClaude(h)){g.stdin?.end();try{g.kill?.("SIGKILL")}catch{}return this.summary(this.finish(e,"failed",I("failure","launch_unfenced","Claude login process could not be verified")))}d={...this.operations.get(e),pid:h,startToken:i,phase:"awaiting_browser"};let j=this.update(e,{pid:h,startToken:i,phase:"awaiting_browser"});this.children.set(e,g),this.captureStdout(e,g.stdout),g.stderr?.on("data",()=>void 0),this.closed.set(e,new Promise(a=>g.once("close",()=>a()))),g.once("close",()=>{this.reconcileExit(e,f.home).catch(()=>this.persistenceFailure(e))}),g.once("error",()=>{let a=this.operations.get(e);if(!(!a||F(a.phase)))try{this.finish(e,"failed",I("failure","process_failed","Claude login process ended unexpectedly"))}catch{this.persistenceFailure(e)}});let k=this.ports.setTimeout(()=>{this.timeout(e).catch(()=>this.persistenceFailure(e))},6e5);return this.timers.set(e,k),this.summary(j)}catch{if(d)return this.summary(this.persistenceFailure(c,d));if(c)try{return this.summary(this.finish(c,"failed",I("failure","start_failed","Claude login could not start")))}catch{return this.summary(this.persistenceFailure(c))}throw Error("Claude login could not start")}}captureStdout(a,b){b?.on("data",b=>{let c=this.operations.get(a);if(!c||"awaiting_browser"!==c.phase)return;let d=((this.output.get(a)??"")+(Buffer.isBuffer(b)?b.toString("utf8"):b).replace(t,"").replace(/\r/g,"")).slice(-65536);this.output.set(a,d);let e=function(a){for(let b of a.match(u)??[])try{let a=new URL(b);if(s.has(a.hostname))return a.toString()}catch{}return null}(d);if(e)try{this.update(a,{loginUrl:e,phase:"awaiting_code",acceptsCode:!0})}catch{this.persistenceFailure(a)}})}async input(a,b){let c;this.refreshDurableOperations();let d=this.operations.get(a);if(!d||F(d.phase))throw Error("login operation is unavailable");if(d.submitted)throw Error("login code was already submitted");if("awaiting_code"!==d.phase||!d.acceptsCode)throw Error("login operation is not ready for code input");if(!/^[\x20-\x7e]{1,8192}$/.test(b)||b.length>8192)throw Error("login code is invalid");let e=this.children.get(a);if(!e?.stdin)throw Error("login process is unavailable");try{c=this.update(a,{submitted:!0,acceptsCode:!1,phase:"verifying"})}catch{return this.summary(this.persistenceFailure(a))}try{e.stdin.write(b+"\n")}catch{this.terminateWithEscalation(c);try{return this.summary(this.finish(a,"failed",I("failure","input_failed","Claude login could not verify the code")))}catch{return this.summary(this.persistenceFailure(a))}}return this.summary(c)}ownsProcess(a){return null!==a.pid&&null!==a.startToken&&this.ports.pidStartToken(a.pid)===a.startToken&&this.ports.isExpectedClaude(a.pid)}terminate(a,b){this.ownsProcess(a)&&this.ports.kill(a.pid,b)}terminateWithEscalation(a){this.terminate(a,"SIGTERM"),this.ports.setTimeout(()=>this.terminate(a,"SIGKILL"),2e3)}releaseRuntime(a){let b=this.timers.get(a);b&&this.ports.clearTimeout(b),this.timers.delete(a),this.children.delete(a),this.closed.delete(a),this.output.delete(a)}persistenceFailure(a,b){let c=b??this.operations.get(a);if(!c)throw Error("Claude login persistence failed");this.terminateWithEscalation(c),this.releaseRuntime(a);let d={...c,phase:"failed",acceptsCode:!1,loginUrl:null,result:I("failure","persistence_failed","Claude login state could not be saved"),pid:null,startToken:null};return this.operations.set(a,d),d}async awaitClose(a){let b=this.closed.get(a);b&&await Promise.race([b,new Promise(a=>this.ports.setTimeout(a,2e3))])}async cancel(a){this.refreshDurableOperations();let b=this.operations.get(a);if(!b)throw Error("unknown Claude login operation");if(F(b.phase)||"canceling"===b.phase)return this.summary(b);try{this.update(a,{phase:"canceling"})}catch{return this.summary(this.persistenceFailure(a))}this.terminate(b,"SIGTERM"),await new Promise(a=>this.ports.setTimeout(a,2e3));let c=this.operations.get(a);c&&this.terminate(c,"SIGKILL"),await this.awaitClose(a);try{return this.summary(this.finish(a,"canceled",I("canceled","canceled","Claude login was canceled")))}catch{return this.summary(this.persistenceFailure(a))}}async timeout(a){let b=this.operations.get(a);if(!b||F(b.phase)||"canceling"===b.phase)return;try{this.update(a,{phase:"canceling"})}catch{this.persistenceFailure(a);return}this.terminate(b,"SIGTERM"),await new Promise(a=>this.ports.setTimeout(a,2e3));let c=this.operations.get(a);c&&this.terminate(c,"SIGKILL"),await this.awaitClose(a);try{this.finish(a,"timed_out",I("failure","timed_out","Claude login timed out"))}catch{this.persistenceFailure(a)}}async reconcileExit(a,b){let c=this.operations.get(a);if(!(!c||F(c.phase))&&"canceling"!==c.phase)try{this.update(a,{phase:"verifying"});let c=await this.ports.status(b),d=this.operations.get(a);if(!d||"verifying"!==d.phase)return;let e=!c.loggedIn||(0,r.Yb)(b,!0);try{this.finish(a,c.loggedIn&&e?"authenticated":"failed",c.loggedIn&&e?I("success","authenticated","Claude authentication completed"):I("failure","verification_failed","Claude authentication could not be verified"))}catch{this.persistenceFailure(a)}}catch{try{this.finish(a,"failed",I("failure","verification_failed","Claude authentication could not be verified"))}catch{this.persistenceFailure(a)}}}finish(a,b,c){let d=this.update(a,{phase:b,acceptsCode:!1,result:c,pid:null,startToken:null});return this.releaseRuntime(a),d}get(a){this.refreshDurableOperations();let b=this.operations.get(a);return b?this.summary(b):null}forAccount(a){return this.forAccounts([a]).get(a)??null}forAccounts(a){let b=[],c=!0;try{b=this.store.load().filter(H)}catch{c=!1}return new Map(a.map(a=>{let d=b.filter(b=>b.accountId===a).sort((a,b)=>b.generation-a.generation)[0];if(d){let b=this.operations.get(d.operationId);return b?[a,this.summary(b)]:[a,{operationId:d.operationId,phase:d.phase,loginUrl:null,acceptsCode:!1,deadlineAt:d.deadlineAt,result:null}]}let e=[...this.operations.values()].filter(b=>b.accountId===a&&(F(b.phase)||!c)).sort((a,b)=>b.generation-a.generation)[0];return[a,e?this.summary(e):null]}))}async terminateInherited(a){return!this.ownsProcess(a)||(this.terminate(a,"SIGTERM"),await this.ports.waitForExit(a.pid,a.startToken),!this.ownsProcess(a)||(this.terminate(a,"SIGKILL"),await this.ports.waitForExit(a.pid,a.startToken),!this.ownsProcess(a)))}async reconcilePersisted(){try{for(let a of this.store.load()){if(!H(a))continue;this.generation=Math.max(this.generation,a.generation);let b={...a,loginUrl:null,acceptsCode:!1,result:null,submitted:!1};this.operations.set(b.operationId,{...b,phase:"canceling"}),this.persist();let c=await this.terminateInherited(b),d=!1;if(c&&"string"==typeof b.accountId)try{let a=(0,r.ob)(b.accountId);B(a.home)&&(0,r.Yb)(a.home,!0)&&(d=(await this.ports.status(a.home)).loggedIn)}catch{}this.operations.set(b.operationId,{...b,phase:d?"authenticated":"interrupted",result:d?I("success","authenticated","Claude authentication completed"):I("failure","interrupted","Claude login was interrupted by restart"),pid:null,startToken:null})}this.persist()}catch{}}}let K=new J},68574:(a,b,c)=>{c.d(b,{Lh:()=>e,j0:()=>g,pV:()=>f});var d=c(643);function e(){return new Promise(a=>setImmediate(a))}async function f(a,b,c={}){let g=Math.max(1,Math.floor(c.batchSize??16)),h=Math.max(1,c.timeBudgetMs??32),i=d.performance.now(),j=0;for(let c=0;c<a.length;c+=1)await b(a[c],c),j+=1,!(c+1>=a.length)&&(j<g&&d.performance.now()-i<h||(await e(),i=d.performance.now(),j=0))}async function g(a,b,c={}){let d=Array(a.length);return await f(a,async(a,c)=>{d[c]=await b(a,c)},c),d}},68822:(a,b,c)=>{c.d(b,{h6:()=>t,z4:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(65465),l=c(53410),m=c(70395);let n=(0,j.BQ)("tasks.json");function o(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 p(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)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function q(a){return"pinned"===a||"unplaced"===a||"auto"===a}function r(a){var b,c,d;let e,f;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.placement||q(a.placement))&&(void 0===a.pos||o(a.pos))&&(e=void 0!==a.dueAt,f=void 0!==a.dueTz,!e&&!f||"string"==typeof a.dueAt&&"string"==typeof a.dueTz)&&(void 0===(c=a.attachments)||Array.isArray(c)&&c.every(m.tK))&&Array.isArray(a.assignments)&&a.assignments.every(p)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt))return null;let g=o(a.pos),h=q(a.placement)?a.placement:g?"pinned":"unplaced";return{id:a.id,project:(0,k.G$)(a.project),status:a.status,text:a.text,placement:"pinned"!==h||g?h:"unplaced",..."pinned"===h&&g?{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}:{},createdAt:a.createdAt,updatedAt:a.updatedAt}}function s(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.clientRequestId&&"string"==typeof a.taskId}function t(a=n){return u(a).tasks}function u(a=n){let b=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(a);return{tasks:Array.isArray(b?.tasks)?b.tasks.map(r).filter(a=>null!==a):[],recentCreates:Array.isArray(b?.recentCreates)?b.recentCreates.filter(s):[]}}function v(a,b=n){return(0,l.Ol)(b,"task state is busy",()=>{var c;let d,f=u(b),h=a(f.tasks);return h.tasks&&(c=f.recentCreates.length?{tasks:h.tasks,recentCreates:f.recentCreates}:{tasks:h.tasks},g().mkdirSync(i().dirname(b),{recursive:!0}),d=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),g().writeFileSync(d,JSON.stringify(c,null,2)+"\n","utf8"),g().renameSync(d,b)),h.result})}},69611:(a,b,c)=>{c.d(b,{MO:()=>m,Mv:()=>l,NP:()=>p,V5:()=>u,Xe:()=>o,im:()=>v,qe:()=>q,rj:()=>r,z:()=>n});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){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),f=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),h=d?function(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}`}}(d,a):`local:${f}`,i=h&&h.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!h||!i)return null;let j=e().createHash("sha256").update(h).digest("hex").slice(0,32);return{project:`repo-${j}`,displayName:i,canonicalRemote:h}}},69882:(a,b,c)=>{let d,e,f;c.d(b,{Bz:()=>s,EG:()=>v,GH:()=>q,Ps:()=>w,Rg:()=>t,s9:()=>r});var g=c(73024),h=c.n(g),i=c(48161),j=c.n(i),k=c(76760),l=c.n(k),m=c(10456),n=c(53133),o=c(59436);let p=j().homedir(),q={"codex-sessions":l().join(p,".codex/sessions"),"claude-projects":l().join(p,".claude/projects"),"claude-tasks":(d=process.getuid?.()??1e3,e=l().join(j().tmpdir(),"claude-"+d),e===(f="/tmp/claude-"+d)||h().existsSync(e)?e:h().existsSync(f)?f:e),"openclaw-sessions":l().join(p,".openclaw/agents")};function r(){let a=[...(0,m.vD)().map(a=>["codex-sessions",a]),...(0,n.pW)().map(a=>["claude-projects",a]),["claude-tasks",q["claude-tasks"]],...(function(){let a,b,c=l().join((b=process.env.OPENCLAW_STATE_DIR?.trim())?l().resolve(b):l().join(j().homedir(),".openclaw"),"agents");try{a=h().readdirSync(c,{withFileTypes:!0})}catch{return[]}return a.filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>l().join(c,a.name,"sessions")).sort()})().map(a=>["openclaw-sessions",a])],b=new Set;return a.filter(([,a])=>{let c=u(a)??l().resolve(a);return!b.has(c)&&(b.add(c),!0)})}function s(a){for(let b of(0,n.pW)())try{let c=h().realpathSync(a),d=h().realpathSync(b);if(c.startsWith(d+l().sep))return b}catch{}return null}let t=[".log",".jsonl",".output",".txt"];function u(a){try{return h().realpathSync(a)}catch{return null}}function v(a){let b=u(a);return!!b&&r().some(([,a])=>{let c=u(a);return null!==c&&b.startsWith(c+l().sep)})}function w(a){for(let b of(0,m.vD)())try{let c=h().realpathSync(a),d=h().realpathSync(b);if(c.startsWith(d+l().sep))return b}catch{continue}return null}o.de,o.cy},70154:(a,b,c)=>{c.d(b,{lx:()=>s,vK:()=>x,x_:()=>y});var d=c(77598),e=c(73024),f=c.n(e),g=c(68574),h=c(94284);function i(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function j(a){return Array.isArray(a)?a.filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)):[]}function k(a){return"string"==typeof a?a:""}function l(a){return k(a.timestamp)||k(a.ts)||null}function m(a,b=8388608){let c;try{let d=f().statSync(a),e=Math.max(0,d.size-b),g=f().openSync(a,"r");try{let a=Buffer.alloc(d.size-e);f().readSync(g,a,0,a.length,e),c=a.toString("utf8")}finally{f().closeSync(g)}e>0&&(c=c.slice(c.indexOf("\n")+1))}catch{return[]}let d=[];for(let a of c.split("\n")){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&d.push(a)}catch{}}return d}function n(a){return"string"==typeof a?a:j(a).map(a=>"text"===a.type||"input_text"===a.type||"output_text"===a.type?k(a.text):"thinking"===a.type?k(a.thinking):"tool_use"===a.type?`${k(a.name)} ${JSON.stringify(i(a.input))}`.trim():"tool_result"===a.type?n(a.content)||k(a.tool_use_id):"").filter(Boolean).join("\n").trim()}function o(a){return j(a).some(a=>"tool_result"===a.type)}function p(a){let b=a.origin;if("system"===a.promptSource&&"task-notification"===i(b).kind||"task"===b||"task"===i(b).kind)return!0;let c=n(i(a.message).content).trim();return/^<task-notification(?:\s[^>]*)?>[\s\S]*<\/task-notification>$/.test(c)}function q(a,b){b.text.trim()&&("message"===b.kind?a.messages.push(b):"reasoning"===b.kind?a.reasoning.push(b):"tool_call"===b.kind||"tool_result"===b.kind?a.tools.push(b):a.traces.push(b))}function r(a){let b=k(a.type);return"user_message"===b?{role:"user",text:k(a.message)}:"agent_message"===b?{role:"assistant",text:k(a.message)}:"message"===b?{role:"assistant"===a.role?"assistant":"user"===a.role?"user":"system",text:n(a.content)||k(a.message)}:null}function s(a,b){return"claude"===b?function(a){let b={path:a,engine:"claude",messages:[],reasoning:[],tools:[],traces:[]};for(let c of m(a)){let a=l(c);if("user"===c.type){let d=i(c.message).content;if(p(c)){q(b,{kind:"trace",role:"system",ts:a,name:"task-notification",text:n(d)});continue}if(o(d)){for(let c of j(d))"tool_result"===c.type&&q(b,{kind:"tool_result",role:"tool",ts:a,text:n(c.content)||k(c.tool_use_id)});continue}q(b,{kind:"message",role:"user",ts:a,text:n(d)});continue}if("assistant"===c.type){for(let d of j(i(c.message).content))"text"===d.type?q(b,{kind:"message",role:"assistant",ts:a,text:k(d.text)}):"thinking"===d.type?q(b,{kind:"reasoning",role:"assistant",ts:a,text:k(d.thinking)}):"tool_use"===d.type?q(b,{kind:"tool_call",role:"assistant",ts:a,name:k(d.name),text:JSON.stringify(i(d.input))}):"tool_result"===d.type&&q(b,{kind:"tool_result",role:"tool",ts:a,text:n(d.content)||k(d.tool_use_id)});continue}("summary"===c.type||"compact"===c.type)&&q(b,{kind:"trace",role:"system",ts:a,name:k(c.type),text:n(c.summary)||JSON.stringify(c)})}return b}(a):function(a){let b={path:a,engine:"codex",messages:[],reasoning:[],tools:[],traces:[]};for(let d of m(a)){let a=l(d),e=i(d.payload),f=k(e.type),g=r(e);if(g){q(b,{kind:"message",role:g.role,ts:a,phase:k(e.phase)||void 0,text:g.text});continue}if("reasoning"===f||"reasoning_delta"===f){q(b,{kind:"reasoning",role:"assistant",ts:a,text:k(e.text)||k(e.message)});continue}if("response_item"===d.type){var c;let d=(c=e.item)&&"object"==typeof c&&!Array.isArray(c)?c:null,f=d&&k(d.type)?d:e,g=k(f.type);if("function_call"===g||"custom_tool_call"===g){let c=k(f.name);q(b,{kind:"tool_call",role:"assistant",ts:a,...c?{name:c}:{},text:k(f.arguments)||k(f.input)||JSON.stringify(f)})}else if("function_call_output"===g||"custom_tool_call_output"===g){let c=k(f.name);q(b,{kind:"tool_result",role:"tool",ts:a,...c?{name:c}:{},text:n(f.output)||JSON.stringify(f)})}else g&&q(b,{kind:"trace",role:"system",ts:a,name:g,text:JSON.stringify(f)});continue}f&&q(b,{kind:"trace",role:"system",ts:a,name:f,text:JSON.stringify(e)})}return b}(a)}let t=(0,h.E)("authorship-scan-checkpoint-v1");function u(a,b,c){let d=c?.count??0,e=c?.parseComplete??!0,f=c?.skippingRecord??!1,g=c?.carry.length?[Buffer.from(c.carry)]:[],h=c?.carry.length??0,j=b=>{let c=b.toString("utf8").trim();if(!c)return!1;try{let b=JSON.parse(c);return!!(b&&"object"==typeof b&&!Array.isArray(b)&&function(a,b){if("claude"===b){if("user"!==a.type||p(a))return!1;let b=i(a.message).content;return!o(b)&&!!n(b).trim()}let c=r(i(a.payload));return c?.role==="user"&&!!c.text.trim()}(b,a))}catch{return e=!1,!1}},k=()=>{g=[],h=0,f=!1};return{consume(a){let c=0;for(;c<=a.length;){let i=a.indexOf(10,c);if(-1===i){let b=a.length-c;!f&&b>0&&(h+b>8388608?(g=[],h=0,f=!0,e=!1):(g.push(Buffer.from(a.subarray(c))),h+=b));break}if(!f){let f=a.subarray(c,i);if(h+f.length>8388608)e=!1;else if(j(h?Buffer.concat([...g,f]):f)&&(d+=1)>=b)return k(),!0}k(),c=i+1}return!1},finish:()=>(!f&&h>0&&j(Buffer.concat(g))&&(d+=1),{count:d,complete:e}),result:()=>({count:d,complete:e}),failed:()=>({count:d,complete:!1}),state:()=>({count:d,carry:h?Buffer.concat(g):Buffer.alloc(0),skippingRecord:f,parseComplete:e})}}function v(a){return(0,d.createHash)("sha256").update(a).digest("base64url")}function w(a,b){return Math.min((a.maxBytes??1/0)-b,void 0===a.budget?1/0:a.budget.remaining)}async function x(a,b,c=Number.MAX_SAFE_INTEGER,d={}){let e=null,h=0,i=a=>{h+=a,d.budget&&(d.budget.remaining-=a)};try{e=await f().promises.open(a,"r");let j=await e.stat(),k=d.resume?t.get(a):void 0;if(k){let b=j.size>k.size,c=k.validatedGrowth?.size===j.size&&k.validatedGrowth.mtimeMs===j.mtimeMs,f=k.dev===j.dev&&k.ino===j.ino&&j.size>=k.offset&&j.size>=k.size&&(j.size!==k.size||j.mtimeMs===k.mtimeMs)&&(!b||c||!!k.prefixSegments?.length);if(f&&b&&!c){let a=k.validation?.size===j.size&&k.validation.mtimeMs===j.mtimeMs?k.validation.index:0,b=k.prefixSegments??[];for(;a<b.length&&f;){let c=b[a];if(d.signal?.aborted||w(d,h)<c.length)return k.validation={size:j.size,mtimeMs:j.mtimeMs,index:a},{count:k.count,complete:!1};let g=Buffer.allocUnsafe(c.length),{bytesRead:l}=await e.read(g,0,g.length,c.offset);i(l),f=l===g.length&&v(g)===c.fingerprint,a+=1}if(f){let a=await e.stat();(f=a.dev===j.dev&&a.ino===j.ino&&a.size===j.size&&a.mtimeMs===j.mtimeMs)&&(k.validation=null,k.validatedGrowth={size:j.size,mtimeMs:j.mtimeMs})}}if(f&&k.headBytes>0){if(d.signal?.aborted||w(d,h)<k.headBytes)return{count:k.count,complete:!1};let a=Buffer.allocUnsafe(k.headBytes),b=0;for(;b<a.length;){let{bytesRead:c}=await e.read(a,b,a.length-b,b);if(0===c)break;b+=c}i(b),f=b===a.length&&v(a)===k.headFingerprint}if(f&&k.boundaryBytes>0&&k.boundaryOffset>0){if(d.signal?.aborted||w(d,h)<k.boundaryBytes)return{count:k.count,complete:!1};let a=Buffer.allocUnsafe(k.boundaryBytes),b=0;for(;b<a.length;){let{bytesRead:c}=await e.read(a,b,a.length-b,k.boundaryOffset+b);if(0===c)break;b+=c}i(b),f=b===a.length&&v(a)===k.boundaryFingerprint}f||(t.delete(a),k=void 0)}if(k&&k.count>=c||k?.done&&k.size===j.size&&k.mtimeMs===j.mtimeMs)return{count:k.count,complete:k.parseComplete};let l=u(b,c,k??void 0),m=k?.offset??0,n=k?.headBytes??0,o=k?.headFingerprint??"",p=k?.boundaryOffset??0,q=k?.boundaryBytes??0,r=k?.boundaryFingerprint??"",s=k?.prefixSegments??[],x=b=>{if(!d.resume)return;let c=l.state();t.set(a,{dev:j.dev,ino:j.ino,size:j.size,mtimeMs:j.mtimeMs,offset:m,carry:c.carry,skippingRecord:c.skippingRecord,count:c.count,parseComplete:c.parseComplete,headBytes:n,headFingerprint:o,boundaryOffset:p,boundaryBytes:q,boundaryFingerprint:r,prefixSegments:s,validation:null,validatedGrowth:null,done:b})},y=Buffer.allocUnsafe(65536),z=0;for(;;){if(d.signal?.aborted)return x(!1),l.failed();let a=w(d,h);if(a<=0)return x(!1),l.failed();let{bytesRead:b}=await e.read(y,0,Math.min(y.length,a),m);if(0===b)break;if(i(b),0===m&&0===n&&(n=Math.min(b,65536),o=v(y.subarray(0,n))),q=Math.min(b,65536),p=m+b-q,r=v(y.subarray(b-q,b)),s.push({offset:m,length:b,fingerprint:v(y.subarray(0,b))}),m+=b,l.consume(y.subarray(0,b)))return x(!1),l.result();(z+=1)>=8&&(z=0,await (0,g.Lh)())}let A=l.finish();return x(!0),A}catch{return{count:0,complete:!1}}finally{await e?.close().catch(()=>void 0)}}function y(a,b){return function(a,b,c=Number.MAX_SAFE_INTEGER){return function(a,b,c=Number.MAX_SAFE_INTEGER){let d=null,e=u(b,c);try{d=f().openSync(a,"r");let b=Buffer.allocUnsafe(65536);for(;;){let a=f().readSync(d,b,0,b.length,null);if(0===a)break;if(e.consume(b.subarray(0,a)))return e.result()}return e.finish()}catch{return e.failed()}finally{null!==d&&f().closeSync(d)}}(a,b,c).count}(a,b,1)>0}},70395:(a,b,c)=>{c.d(b,{tK:()=>f}),c(77598),c(73024),c(76760),c(50920);var d=c(7461);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}},71256:(a,b,c)=>{c.r(b),c.d(b,{deliverHeldStructuredMessage:()=>K,enqueueStructuredMessage:()=>L});var d=c(77598),e=c.n(d),f=c(4116),g=c(29966),h=c(14071),i=c(4406),j=c(74030),k=c(88602),l=c(873),m=c(36493),n=c(36855),o=c(25695),p=c(88417),q=c(96694);let r=process;function s(){r.__llvStructuredHostStartupFailed=!1;var a={...r.__llvStructuredHostStartupProgress??{state:"pending",phase:"waiting for structured startup",completedHosts:0,totalHosts:null,updatedAt:new Date().toISOString()},phase:"ready"};if(!Number.isSafeInteger(a.completedHosts)||a.completedHosts<0)throw Error("structured host startup completed count is invalid");if(null!==a.totalHosts&&(!Number.isSafeInteger(a.totalHosts)||a.totalHosts<a.completedHosts))throw Error("structured host startup total count is invalid");r.__llvStructuredHostStartupProgress={...a,state:"ready",updatedAt:new Date().toISOString()}}let t=new Map;async function u(a,b){if(!a)return b();let c=(t.get(a)??Promise.resolve()).catch(()=>{}).then(b);t.set(a,c);try{return await c}finally{t.get(a)===c&&t.delete(a)}}function v(){return{ok:!1,structured:!0,outcome:"failed",error:"structured host ownership is unavailable; retry after runtime synchronization",status:503}}function w(){return{ok:!1,structured:!0,outcome:"failed",error:"legacy delivery cannot preserve structured command semantics",status:409}}function x(a,b){return b?.supersededBy?{ok:!1,structured:!0,outcome:"failed",error:"superseded",status:409,successorConversationId:a.supersedenceChainTail(b.id)}:null}function y(a){return void 0!==a.operationId||(a.kind??"send")!=="send"||(a.policy??"interrupt-active")!=="interrupt-active"||void 0!==a.turnId}function z(a){let b=a.command;return void 0!==b&&(b.operationId!==a.deliveryId||"send"!==b.kind||"interrupt-active"!==b.policy||void 0!==b.turnId)}function A(a){return{ok:!1,structured:!0,outcome:"failed",error:a instanceof Error?a.message:"structured host delivery failed",status:a instanceof f.ph?409:a instanceof p.Hy?413:503,...(0,k.o7)(a)?{transportUncertain:!0}:{}}}function B(a){return{...a.operationId?{operationId:a.operationId}:{},...a.kind?{kind:a.kind}:{},...a.policy?{policy:a.policy}:{},...void 0!==a.turnId?{turnId:a.turnId}:{},...a.origin?{origin:a.origin}:{}}}function C(a,b){let c=a.conversationId?.startsWith("conversation_")?b.conversation(a.conversationId):b.conversationForPath(a.path),d=c?.generations.at(-1);if(!c||!d)return null;let e=b.readOnlySnapshot().entries[`${c.engine}:${d.id}`];if(!e||e.artifactPath!==d.path)return null;let f=null!==e.structuredHost&&void 0!==e.structuredHost;return f===(null!==e.host)?null:{kind:f?"structured":"legacy",conversation:c}}function D(a,b){return C(a,b)?.kind!=="legacy"?"delivery-uncertain":z(a)?"failed":null}function E(a,b,c){let d=C(a,b),f=a.conversationId?.startsWith("conversation_")?b.conversation(a.conversationId):b.conversationForPath(a.path),g=f?.generations.at(-1),h=f?b.engineRouting(f.engine).activeAccountId:null,i=!d&&null!=f&&g?.accountId!==null&&g?.accountId!==void 0&&null!==h&&g.accountId!==h;if(!d&&!i)return v();let j=d?.conversation??f,k=x(b,j);if(k)return k;if(d?.kind==="legacy")return y(a)?w():null;let l=j;if(a.hasImages||a.images?.length)return{ok:!1,structured:!0,outcome:"failed",error:"structured host image delivery is unavailable",status:409};try{(0,p.h1)(a.text);let d=a.clientMessageId?.trim()||`queue_${e().randomUUID()}`,f=a.imageRefs??[];if(!a.text&&0===f.length)throw Error("held delivery must contain at most 32000 characters");let g=f.length?(0,p.rM)(a.text,f):null,h=g?.content.text??a.text,i=g?.contentDigest??null,j=f.length?"runtime-images":"text",k=b.preflightDeliveryReservation(l.id,h,d,j,f,i,B(a));if(k?.state==="delivered")return J(k,d,l.id,!1);if(k?.state==="failed")return{ok:!1,structured:!0,outcome:"failed",error:k.error||"delivery target is unavailable",status:409};let m=l.generations.at(-1),n=b.engineRouting(l.engine).activeAccountId;n&&m?.accountId&&m.accountId!==n&&(l=b.requestConversationMigrationToActiveAccount(l.id));let o=b.holdDelivery(l.id,h,d,j,f,i,B(a));if("delivered"===o.state)return J(o,d,l.id,!1);if("failed"===o.state)return{ok:!1,structured:!0,outcome:"failed",error:o.error||"delivery target is unavailable",status:409};return c(),{ok:!0,structured:!0,target:l.id,outcome:"held"}}catch(a){return A(a)}}function F(a,b){a.sessions.some(a=>"codex-app-server"===a.hostKind||"claude-broker"===a.hostKind)&&b()}async function G(a,b,c){if("dead"!==a.host&&"unhosted"!==a.host||!await c(a.sessionKey))return{session:a,republished:!1};let d=await b.snapshot();return{session:d.sessions.find(b=>b.conversationId===a.conversationId)??d.sessions.find(b=>b.artifactPath===a.artifactPath)??a,republished:!0}}async function H(a,b){let c=b.generations.at(-1);try{return(await a.snapshot()).sessions.find(a=>a.conversationId===b.id&&(!c||a.artifactPath===c.path))??null}catch{return null}}function I(a,b,c){let d=a.conversation(b)?.migration?.phase;d&&!["committed","rolled-back"].includes(d)&&c()}function J(a,b,c,d){let e={operationId:a.command.operationId,idempotencyKey:b,conversationId:a.runtimeConversationId,kind:a.command.kind,status:"delivered",...void 0!==a.command.turnId?{turnId:a.command.turnId}:{},reason:null,at:a.deliveredAt??a.createdAt,revision:1};return{ok:!0,structured:!0,target:c,outcome:"delivered",operationId:a.command.operationId,receipt:e,...d?{spawned:!0}:{}}}async function K(a,b={}){let c;if(!(b.enabled??g.cM)())return null;let d=(b.registry??f.tk)(),e=(b.client??k.sS)();if(!e)return D(a,d);try{c=await e.snapshot()}catch(b){return console.error("[structured delivery] runtime snapshot failed",b),D(a,d)}F(c,b.startupRecovered??s);let h=c.sessions.find(b=>b.conversationId===a.conversationId)??c.sessions.find(b=>b.artifactPath===a.path);if(!h){if(C(a,d)?.kind!=="structured")return D(a,d);try{return await (b.recover??m.recoverDeadStructuredConversation)({path:a.path,conversationId:a.conversationId},{registry:d,client:e,requestDeliveryDrain:()=>{(b.kick??q.l)()}})?"held":"delivery-uncertain"}catch{return"delivery-uncertain"}}try{let a=await G(h,e,b.republish??l.A);if(h=a.session,a.republished&&("dead"===h.host||"unhosted"===h.host))return"delivery-uncertain"}catch{return"delivery-uncertain"}if("tmux-legacy"===h.hostKind)return z(a)?"failed":null;if("codex-app-server"!==h.hostKind&&"claude-broker"!==h.hostKind)return"delivery-uncertain";try{let c=a.imageRefs??[],d=h.capabilities.imageInput??(0,n.ki)(h.sessionKey.engine,!1);if(c.length>0&&!d.supported&&"codex"!==h.sessionKey.engine)return"failed";let f=(0,p.rM)(a.text,c),g=a.command??{operationId:a.deliveryId,kind:"send",policy:"interrupt-active"},i=await e.command({kind:g.kind,operationId:g.operationId,conversationId:a.runtimeConversationId??a.conversationId,idempotencyKey:a.clientMessageId,text:f.content.text,...c.length?{images:c}:{},contentDigest:f.contentDigest,policy:g.policy,...void 0!==g.turnId?{turnId:g.turnId}:{},...g.origin?{origin:g.origin}:{}});try{await (b.kick??q.l)()}catch{}let j=await e.operationStatus(i.operationId)??i;if(["delivered","turn-started","steered"].includes(j.receipt.status))return"delivered";if("failed"===j.receipt.status||"rejected"===j.receipt.status)return"failed";return"delivery-uncertain"}catch{return"delivery-uncertain"}}async function L(a,b={}){let c,d,r,t;if(!(b.enabled??g.cM)())return null;let z=(0,o.p)({images:a.images??[]});if(z.error)return{ok:!1,structured:!0,outcome:"failed",error:z.error.error,status:z.error.status};let C=z.images,D=(b.client??k.sS)();if(!D)return E(a,(b.registry??f.tk)(),b.requestMigrationTick??j.U);try{c=await D.snapshot()}catch(c){return console.error("[structured delivery] runtime snapshot failed",c),E(a,(b.registry??f.tk)(),b.requestMigrationTick??j.U)}F(c,b.startupRecovered??s);let K=(a.conversationId?c.sessions.find(b=>b.conversationId===a.conversationId):void 0)??c.sessions.find(b=>b.artifactPath===a.path);if(!K)return E(a,(b.registry??f.tk)(),b.requestMigrationTick??j.U);let M=(b.registry??f.tk)();if("tmux-legacy"===K.hostKind)return y(a)?w():null;if("codex-app-server"!==K.hostKind&&"claude-broker"!==K.hostKind)return v();try{(0,p.h1)(a.text)}catch(a){return A(a)}let N=a.imageRefs??[],O=!0===a.hasImages||C.length>0||N.length>0;if(a.hasImages&&0===C.length&&0===N.length)return{ok:!1,structured:!0,outcome:"failed",error:"structured image payload is unavailable",status:409};if(C.length>0&&N.length>0)return A(Error("structured image payload is ambiguous"));if(!K.conversationId.startsWith("conversation_"))return v();let P=x(M,M.conversation(K.conversationId));if(P)return P;let Q=M.conversation(K.conversationId);if(!Q)return v();let R=a.clientMessageId?.trim()||`queue_${e().randomUUID()}`;try{d=N.length>0?N:(b.previewImageRefs??n.N2)(C),r=(0,p.rM)(a.text,d),t=M.preflightDeliveryReservation(Q.id,r.content.text,R,d.length?"runtime-images":"text",d,r.contentDigest,B(a))}catch(a){return A(a)}if(t?.state==="delivered")return J(t,R,Q.id,!1);if(t?.state==="failed")return{ok:!1,structured:!0,outcome:"failed",error:t.error||"delivery target is unavailable",status:409};let S=Q.generations.at(-1),T=M.engineRouting(Q.engine).activeAccountId;if(T&&S?.accountId&&S.accountId!==T)try{Q=M.requestConversationMigrationToActiveAccount(Q.id)}catch(a){return A(a)}let U="held"===(0,i._v)(Q),V=!1;if(U&&"idle"===K.turn){var W;try{await (b.kick??q.l)()}catch{}if(Q=M.conversation(Q.id)??Q,"held"===(0,i._v)(Q)&&(W=Q,W.reconfigure?.status!=="applying"||W.reconfigure.accountId!==W.migration?.targetId))try{Q=await (b.executeSwitch??i.ww)(Q.id,M)}catch{Q=M.conversation(Q.id)??Q}if(!(U="held"===(0,i._v)(Q))){(b.requestMigrationTick??j.U)();let a=await H(D,Q);a?K=a:V=!0}}if(!U&&!V)try{K=(await G(K,D,b.republish??l.A)).session}catch(a){return A(a)}let X=!U&&!V&&function(a,b,c){if("dead"===a.host||"unhosted"===a.host)return!0;if("registering"!==a.host||null!==a.artifactPath)return!1;let d=c.generations.at(-1);if(!d)return!1;let e=b.readOnlySnapshot().entries[`${c.engine}:${d.id}`];return e?.status==="dead"&&null===e.host&&null===e.pendingAction&&e.structuredHost?.process===null}(K,M,Q);if(X&&!O)try{M.holdDelivery(Q.id,r.content.text,R,"text",[],r.contentDigest,B(a))}catch(a){return A(a)}let Y=!1,Z=K;if(X){let c;try{c=await (b.recover??m.recoverDeadStructuredConversation)({path:a.path||K.artifactPath||"",conversationId:K.conversationId},{registry:M,client:D})}catch(a){return{ok:!1,structured:!0,outcome:"failed",error:a instanceof Error?a.message:"structured host recovery failed",status:503}}if(!c)return v();Y=c.spawned;try{let a=await D.snapshot();Z=a.sessions.find(a=>a.conversationId===K.conversationId)??a.sessions.find(a=>a.artifactPath===K.artifactPath)??K}catch{}}let $=U||V?(0,n.ki)(Z.sessionKey.engine,!0):Z.capabilities.imageInput??(0,n.ki)(Z.sessionKey.engine,!1);if(O&&!$.supported&&"codex"!==Z.sessionKey.engine)return{ok:!1,structured:!0,outcome:"failed",error:$.reason??"structured image delivery is unavailable",status:409};if(C.reduce((a,b)=>a+Buffer.byteLength(b.base64),0)>$.maxEncodedBytesPerRequest)return{ok:!1,structured:!0,outcome:"failed",error:"runtime image request encoding is too large",status:413};let _=null;try{let c=a.clientMessageId?.trim()?`${Q.id}\u0000${a.clientMessageId.trim()}`:null,e=await u(c,async()=>{let c=()=>{let c=M.preflightDeliveryReservation(Q.id,r.content.text,R,d.length?"runtime-images":"text",d,r.contentDigest,B(a));return c||(C.length>0&&(b.storeImages??(a=>(0,n.PF)().putMany(a)))(C),M.holdDelivery(Q.id,r.content.text,R,d.length?"runtime-images":"text",d,r.contentDigest,B(a)))};return 0===C.length?c():(b.withImageAdmissionLock??h.Cu)(async()=>c())}),f=null;if("delivery-uncertain"===e.state&&(e=M.retryUncertainDelivery(e.id)),"held"===e.state)return(b.requestMigrationTick??j.U)(),{ok:!0,structured:!0,target:Y?null:Q.id,outcome:"held",...Y?{spawned:!0}:{}};if("delivered"===e.state)return J(e,R,Y?null:Q.id,Y);if("assigned"===e.state&&V)return(b.requestMigrationTick??j.U)(),{ok:!0,structured:!0,target:Q.id,outcome:"held"};if("assigned"!==e.state||!e.generationId)return{ok:!1,structured:!0,outcome:"failed",error:e.error||"delivery target is unavailable",status:409};{let a=M.beginDeliveryAttempt(e.id,e.generationId);if(!a)return M.requeueHeldDelivery(e.id),(b.requestMigrationTick??j.U)(),{ok:!0,structured:!0,target:Y?null:Q.id,outcome:"held",...Y?{spawned:!0}:{}};f=a.id}let g=_=await D.command({kind:e.command.kind,operationId:e.command.operationId,conversationId:e.runtimeConversationId,idempotencyKey:R,text:r.content.text,...d.length?{images:d}:{},contentDigest:r.contentDigest,policy:a.policy??"interrupt-active",...void 0!==a.turnId?{turnId:a.turnId}:{},...a.runtime?{runtime:a.runtime}:{},...a.selectedContext?{selectedContext:a.selectedContext}:{},...a.origin?{origin:a.origin}:{}}),i=g.receipt;if("rejected"===i.status||"failed"===i.status||"uncertain"===i.status)return f&&"uncertain"!==i.status&&(M.recordDeliveryOutcome(f,"failed",i.reason||"structured host delivery failed"),I(M,Q.id,b.requestMigrationTick??j.U)),{ok:!1,structured:!0,outcome:"failed",error:i.reason||"structured host delivery failed",status:409,operationId:g.operationId,receipt:i};f&&["delivered","turn-started","steered"].includes(i.status)&&(M.recordDeliveryOutcome(f,"delivered"),I(M,Q.id,b.requestMigrationTick??j.U)),(b.kick??q.l)();let k="delivering"===i.status||"delivered"===i.status?i.status:"queued";return{ok:!0,structured:!0,target:Y?null:Q.id,outcome:k,operationId:g.operationId,receipt:i,...Y?{spawned:!0}:{}}}catch(d){let a=A(d);if(!_)return a;let b=_.receipt,c="failed"===b.status||"rejected"===b.status;return{ok:!1,structured:!0,outcome:"failed",error:a.error,status:a.status,operationId:_.operationId,receipt:b,...!c?{transportUncertain:!0}:{}}}}},72166:(a,b,c)=>{c.d(b,{Ec:()=>N,Hw:()=>Q,xz:()=>S,SZ:()=>ah,iq:()=>Z,zn:()=>ao});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(4351),k=c(57726),l=c(85923),m=c(80502),n=c(4116),o=c(31973),p=c(51720),q=c(91836),r=c(89831),s=c(71256),t=c(36493),u=c(62142),v=c(26200),w=c(89364),x=c(74955),y=c(67852),z=c(10508),A=c(34219),B=c(98918);let C=new Set(["approved","done_comment","needs_decision","closed"]),D=/^REVIEW_READY:\s*(.*)$/m,E=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,F=globalThis,G=new Set,H=F.__llvFlowRelayLeases??=new Map,I=[1e3,5e3,3e4],J=new Set(["reviewer tracking was lost before a verdict could be recovered","reviewer launch tracking is unavailable","reviewer process is missing after server restart","reviewer spawn was interrupted by a restart"]);class K extends Error{constructor(a){super("reviewer rate limited; all accounts exhausted"),this.resetsAt=a,this.name="ReviewerAccountsExhaustedError"}}class L extends Error{constructor(){super("interrupted relay cannot retry safely because the implementer has no idempotent structured delivery"),this.name="UnsafeInterruptedRelayRetryError"}}class M extends Error{constructor(a){super(a),this.name="StructuredRelayDeliveryUncertainError"}}function N(){return new Date().toISOString()}function O(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function P(a){return a.map(a=>({...a,roles:{implementer:{...a.roles.implementer},reviewer:{...a.roles.reviewer}},hostClaim:a.hostClaim?{...a.hostClaim}:null,reviewerFallback:a.reviewerFallback?{...a.reviewerFallback}:null,rounds:a.rounds.map(a=>({...a,reviewerRole:a.reviewerRole?{...a.reviewerRole}:null,attemptedAccounts:[...a.attemptedAccounts??[]]}))}))}function Q(a){return a.rounds.at(-1)??null}function R(a,b){return b.reviewerRole??a.roles.reviewer}function S(a,b,c){return{n:a.rounds.length+1,reviewerPath:null,reviewerBindingId:e().randomUUID(),accountId:null,attemptedAccounts:[],autoRetryCount:0,sessionId:null,reviewerPid:null,reviewerIdentity:null,reviewerRole:{...a.roles.reviewer},reviewerPane:null,findingsPath:null,triggeredBy:b,readyNote:c,reviewHeadSha:null,verdict:null,findingsCount:null,startedAt:N(),spawnStartedAt:null,launchId:null,launchLeaseUntil:null,relayStartedAt:null,relayRetryCount:0,relayDeliveryAttempt:0,relayDeliveryTransport:null,relayRetryAt:null,relayRetryRequiresIdempotency:!1,relayDelivery:null,relayPendingSettlement:null,reviewedAt:null,terminalAt:null,relayedAt:null,error:null}}function T(a,b){let c=(0,y.wi)(a.cwd);if(!c)throw Error("review requires a clean committed HEAD");if(a.headRef){let b=(0,y.ZD)(a.cwd,a.headRef);if(b!==c){let d=b?`review remote head mismatch before launch: local ${c}, origin/${a.headRef} ${b}`:`review remote head is unavailable before launch: origin/${a.headRef}`;throw U(a,d),Error(d)}}if(1===b.n&&a.targetSha&&c.toLowerCase()!==a.targetSha.toLowerCase()){let b=`review target changed before launch: expected ${a.targetSha}, found ${c}`;throw U(a,b),Error(b)}return b.reviewHeadSha=c,c}function U(a,b){a.state="needs_decision",a.stateDetail=b}function V(a,b){return a.error=b,a.terminalAt=N(),b}function W(a,b){return a?.startsWith("conversation_")?(0,n.tk)().conversation(a)?.generations.at(-1)?.path??b:(0,n.tk)().canonicalPath(b)}function X(a,b){return a.hostClaim&&/structured (?:resume )?host claim is unavailable|structured host ownership is unavailable/i.test(b)?`structured host claim ${a.hostClaim.sessionKey} on account ${a.hostClaim.accountRef} failed: ${b}`:b}function Y(a,b=a.rounds?.at(-1)){let c=b?.relayDeliveryAttempt??0,d=`${a.id}:${b?.n??"legacy"}:${b?.reviewerBindingId??"legacy"}`+(c>0?`:retry:${c}`:"");return`flow_relay_${e().createHash("sha256").update(d).digest("hex").slice(0,32)}`}async function Z(a,b,c,d={}){let f=b.get(W(a.implementerConversationId,a.implementerPath));if(!f)throw Error("implementer transcript is missing from scanner");let g=(0,n.tk)(),h=a.implementerConversationId?.startsWith("conversation_")?g.conversation(a.implementerConversationId):g.conversationForPath(f.path);if(h){var i;let b,j=h?.generations.at(-1);h&&j&&(a.hostClaim={sessionKey:(0,o.pp)({engine:h.engine,sessionId:j.id}),accountRef:(i=j.accountId??h.pinnedAccountId??null)?"default"===i?"default":`managed:${e().createHash("sha256").update(i).digest("hex").slice(0,12)}`:"unknown"});try{b=await (d.recover??t.recoverDeadStructuredConversation)({path:f.path,conversationId:h.id},{registry:g})}catch(b){throw Error(X(a,b instanceof Error?b.message:String(b)),{cause:b})}if(b){d.onTransportSelected?.("structured");let e=await (d.enqueueStructured??s.enqueueStructuredMessage)({path:b.path,conversationId:b.conversationId,clientMessageId:Y(a),text:c,origin:{kind:"agent",role:"reviewer"}},{registry:()=>g});if(!e)throw Error("structured delivery ownership is unavailable");if(!e.ok){if(e.transportUncertain||e.receipt?.status==="uncertain")throw new M(e.error);throw Error(X(a,e.error))}return b.path}a.hostClaim=null}if(d.requireIdempotentDelivery)throw new L;let k=(0,j.A9)(f.root,f.path,{model:f.launchModel??f.model,effort:f.effort,allowSubagents:(0,n.tk)().launchProfileForPath(f.path)?.allowSubagents,mcpServers:(0,n.tk)().launchProfileForPath(f.path)?.mcpServers,plugins:(0,n.tk)().launchProfileForPath(f.path)?.plugins});if(!k)throw Error("implementer session cannot be resumed");d.onTransportSelected?.("legacy");let l=await (d.deliver??m.Zp)({entry:f,spec:k,payload:c});if(!l.ok){if("started"===l.actuation)throw new w.SS(`legacy relay delivery is uncertain after actuation started: ${l.error}`);throw Error(l.error)}return f.path}function $(a,b,c){if(c.reviewerPath)return!1;let d=O(c.startedAt)/1e3-5,e=R(a,c).engine,f=b.filter(b=>b.engine===e&&b.path!==W(a.implementerConversationId,a.implementerPath)&&b.mtime>=d&&!("codex-sessions"===b.root&&b.path.endsWith(".jsonl")&&(0,r.ET)(b.path,b.size))&&(0,q.tX)(b.path)===a.cwd).sort((a,b)=>b.mtime-a.mtime)[0];return!!f&&(c.reviewerPath=f.path,!0)}function _(a,b,c){let d=b.findingsPath??(0,B.tR)(a.id,b.n);(0,B.Yj)(d,c.content),b.findingsPath=d,b.verdict=c.verdict,b.findingsCount=c.findingsCount,b.reviewedAt=N(),b.terminalAt=b.reviewedAt,"manual"===a.mode?a.state="relay_pending":a.state="relaying",a.stateDetail=null}function aa(a,b){if(!a)return!1;let c=a.rounds.find(a=>a.n===b.n);return!!c&&(b.reviewerPane?c.reviewerPane?.paneId===b.reviewerPane.paneId:null!=b.reviewerPid?c.reviewerPid===b.reviewerPid:"closed"!==a.state)}function ab(a,b=Date.now()){let c=Date.parse(a.launchLeaseUntil??"");return!!(a.launchId&&Number.isFinite(c)&&c>b)}function ac(a,b){if(!b.launchId||!(b.reviewerPane||null!=b.reviewerPid||b.reviewerPath||b.sessionId))return!1;let c=(0,B.mL)(),d=c.find(b=>b.id===a),e=d?.rounds.find(a=>a.n===b.n);return!!d&&!!e&&"needs_decision"===d.state&&!!J.has(d.stateDetail??"")&&e.launchId===b.launchId&&(Object.assign(e,{reviewerPath:b.reviewerPath,reviewerConversationId:b.reviewerConversationId??null,reviewerRole:b.reviewerRole??null,accountId:b.accountId??null,attemptedAccounts:[...b.attemptedAccounts??[]],sessionId:b.sessionId??null,reviewerPid:b.reviewerPid??null,reviewerIdentity:b.reviewerIdentity??null,reviewerPane:b.reviewerPane??null,reviewHeadSha:b.reviewHeadSha??null,spawnStartedAt:b.spawnStartedAt??null,launchLeaseUntil:"headless"!==d.reviewerMode||null==b.reviewerPid||b.reviewerIdentity?null:b.launchLeaseUntil,error:b.error}),d.state="reviewing",d.stateDetail=null,(0,B.tu)(c),!0)}function ad(a,b){let c=(0,B.mL)(),d=c.find(b=>b.id===a),e=d?.rounds.find(a=>a.n===b);e&&(e.spawnStartedAt=null,e.reviewerPane=null,e.reviewerPath=null,e.reviewerPid=null,e.sessionId=null,e.launchId=null,e.launchLeaseUntil=null,(0,B.tu)(c))}async function ae(a){let b=a.reviewerPane;if(b)try{let a=await (0,w.RZ)(b.paneId);a&&a.windowName===b.windowName&&!(0,u.g2)(a.command)&&await (0,w.VT)(b.paneId)}catch{}}function af(a,b,c,d,e=null){if(!b.launchId||!b.reviewerPath)return;let f=(0,n.tk)(),g=f.readOnlySnapshot().receipts[b.launchId];if(!g)return;if(g?.state==="completed"){b.reviewerConversationId=g.conversationId;return}let h=(0,o.sz)(c.engine,b.reviewerPath);if(!h)return;let i=f.settleSpawn(b.launchId,{key:h,artifactPath:b.reviewerPath,cwd:a.cwd,accountId:d,status:"starting",host:e,claimEpoch:0,claimOwner:null,pendingAction:"spawn"});if("conflict"===i.kind)throw Error(i.code);b.reviewerConversationId=i.conversation.id}async function ag(a,b,c,d,e){var f,g;if("replay"===d.kind&&function(a,b,c){if("failed"===c.state||"conflicted"===c.state)throw Error(c.error??`reviewer reservation is ${c.state}`);b.launchId=c.launchId,b.reviewerConversationId=c.conversationId,b.reviewerPath=c.artifactPath??b.reviewerPath,b.sessionId=c.key?.sessionId??b.sessionId;let d=c.verifiedHost;return d&&(b.reviewerPane={paneId:d.paneId,windowName:d.windowName}),a.state="reviewing",a.stateDetail=null,(c.artifactPath||d)&&(b.launchLeaseUntil=null),"starting"!==c.state||!!(c.artifactPath||c.pane||c.verifiedHost)}(a,b,d.receipt))return;e();let h=(0,A.qu)(a,b),{role:i,account:k}=c;if(a.state="reviewing",a.stateDetail=null,"pane"===a.reviewerMode){let c=(0,j.lV)(i.engine,a.cwd,{model:i.model,effort:i.effort,codexHome:"codex"===k.engine?k.home:null,claudeConfigDir:"claude"===k.engine?k.home:null,claudeProjectsDir:"claude"===k.engine?k.transcriptRoot:null}),f=Date.now(),g=await (0,w.Tk)(c,h,d.receipt);b.reviewerPane={paneId:g.paneId,windowName:c.windowName};let l=await (0,p.s)({engine:i.engine,knownTranscript:c.transcript??null,panePid:g.panePid??null,cwd:a.cwd,startedAtMs:f,codexSessionsDir:"codex"===k.engine?k.transcriptRoot:null});l&&(b.reviewerPath=l),af(a,b,i,k.accountId,g.host??null),!b.reviewerPath&&g.panePid&&(b.error=null),b.launchLeaseUntil=null,e();let m=(0,B.mL)().find(b=>b.id===a.id);if(!aa(m,b)){if(ac(a.id,b))return;await ae(b),m&&"closed"!==m.state&&ad(a.id,b.n)}return}let l=(0,n.tk)().rotateSpawnCapabilityForReceipt(d.receipt.launchId),m=(0,x.P1)(a.id,b.n,i,a.cwd,h,void 0,"codex"===k.engine?{home:k.home,managed:"managed"===k.kind}:null,"claude"===k.engine?{home:k.home,projectsDir:k.transcriptRoot,managed:"managed"===k.kind}:null,void 0,l);f=b,(g=m).pid&&(f.reviewerPid=g.pid,f.reviewerIdentity=g.identity),g.sessionId&&(f.sessionId=g.sessionId),g.reviewerPath&&(f.reviewerPath=g.reviewerPath),g.identity&&(f.launchLeaseUntil=null),af(a,b,i,k.accountId),e();let o=(0,B.mL)().find(b=>b.id===a.id);if(!aa(o,b)){if(ac(a.id,b))return;(0,x.T)(a.id,b.n,b),o&&"closed"!==o.state&&ad(a.id,b.n)}}function ah(a,b=(0,n.tk)()){let c=Y(a),d=Object.values(b.readOnlySnapshot().heldDeliveries).find(a=>a.clientMessageId===c);return d?.state!=="delivered"?null:{deliveredAt:d.deliveredAt??N()}}function ai(a,b,c,d){b.relayDelivery={path:c,deliveredAt:d},b.relayedAt=d,b.relayPendingSettlement=null,b.relayRetryAt=null,b.relayRetryRequiresIdempotency=!1,b.error=null,a.stateDetail=null,al(a,b)}async function aj(a,b,c,d={}){if(!c.findingsPath)throw Error("round has no findings artifact");let e=g().readFileSync(c.findingsPath,"utf8");a.state="relaying";let f=await Z(a,b,(0,A.i0)(c,e),d);if("structured"===c.relayDeliveryTransport){let b=ah(a);if(!b){c.relayPendingSettlement={path:f,since:N()},c.relayRetryAt=null,c.relayRetryRequiresIdempotency=!1,c.error=null,a.stateDetail="relay accepted by the structured transport; awaiting delivery journal settlement";return}ai(a,c,f,b.deliveredAt);return}ai(a,c,f,N())}function ak(a,b,c,d=b.relayRetryRequiresIdempotency??!1){b.relayPendingSettlement=null;let e=b.relayRetryCount??0;if(e>=3)return b.error=c,b.relayRetryAt=null,U(a,`relay delivery failed after ${e} automatic retries: ${c}`),!1;let f=e+1;return b.relayRetryCount=f,d||(b.relayDeliveryAttempt=(b.relayDeliveryAttempt??0)+1),b.relayRetryAt=new Date(Date.now()+I[f-1]).toISOString(),b.relayStartedAt=null,b.relayRetryRequiresIdempotency=d,b.error=c,a.state="relaying",a.pausedState=null,a.stateDetail=`relay delivery failed; retrying automatically (${f}/3): ${c}`,!0}function al(a,b){var c;let d;"APPROVE"===b.verdict?(a.state="approved",a.closedAt=N()):"COMMENT"===b.verdict?a.state="done_comment":(c=a,d=(0,B.mL)().find(a=>a.id===c.id)?.roundLimit??c.roundLimit,c.roundLimit=d,d>0&&c.rounds.length>=d?U(c,"round limit reached"):(c.state="fixing",c.stateDetail=null))}async function am(a,b,c,d){var f,g;let h=JSON.stringify(a);for(let b of(a.implementerPath=W(a.implementerConversationId,a.implementerPath),a.rounds))b.reviewerPath&&(b.reviewerPath=W(b.reviewerConversationId,b.reviewerPath));if("closed"===a.state||"paused"===a.state)return JSON.stringify(a)!==h;let j=c.get(a.implementerPath);if(!j){let b=a.state;return a.state="paused",a.pausedState=b,a.stateDetail="implementer transcript is missing",JSON.stringify(a)!==h}if("waiting_ready"===a.state||"fixing"===a.state){let b=function(a,b){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let c=(0,z.if)(b);if(!c)return null;let d=Math.max(...a.rounds.map(a=>O(a.startedAt)),O(a.createdAt));return c.ts<=d?null:c.text.match(D)?.[1]?.trim()??null}(a,j);if(null!==b){let c=S(a,"marker",b);a.rounds.push(c);try{a.headRef&&T(a,c),a.state="manual"===a.mode?"spawn_pending":"spawning",a.stateDetail=null}catch(d){let b=d instanceof Error?d.message:"review head capture failed";c.error=b,U(a,b)}}return JSON.stringify(a)!==h}let m=Q(a);if(!m)return JSON.stringify(a)!==h;if("spawning"===a.state){let b="headless"===a.reviewerMode?(0,x.IL)(a.id,m.n,m,R(a,m).engine):null;if(m.spawnStartedAt&&!m.reviewerPane&&null==m.reviewerPid&&!m.reviewerPath&&!m.sessionId&&ab(m)&&("pane"===a.reviewerMode||b?.status==="lost"))return JSON.stringify(a)!==h;if(m.spawnStartedAt&&"headless"===a.reviewerMode&&b?.status==="lost")return U(a,"reviewer tracking was lost before a verdict could be recovered"),JSON.stringify(a)!==h;if(m.spawnStartedAt&&"headless"===a.reviewerMode&&b)return a.state="reviewing",a.stateDetail=null,JSON.stringify(a)!==h;if(m.spawnStartedAt&&!b&&null===m.reviewerPath)return U(a,"reviewer launch tracking is unavailable"),JSON.stringify(a)!==h;try{let b=function(a,b){if("pane"===a.reviewerMode){let c=a.roles.reviewer,d=k.lD.resolveSpawn(c.engine,b.accountId);return b.accountId=d.accountId,b.reviewerRole={...c},{role:c,account:d}}let c=function(a,b,c,d){let e=[a,...b&&b.engine!==a.engine?[b]:[]],f=[],g=null,h=0;for(let a of e){let b=`${a.engine}:`,e=c.filter(a=>a.startsWith(b)).map(a=>a.slice(b.length)),i=d(a.engine,null,e);if("available"===i.kind){let b={kind:"available",role:a,account:i.account};if(!c.includes(`${i.account.engine}:${i.account.accountId}`))return b;g??=b;continue}"exhausted"===i.kind&&(h+=1,null!==i.resetsAt&&f.push(i.resetsAt))}return g||(h!==e.length?{kind:"unavailable"}:{kind:"exhausted",resetsAt:f.length?Math.min(...f):null})}(a.roles.reviewer,a.reviewerFallback,b.attemptedAccounts??[],(a,b,c)=>k.lD.resolveHeadlessSpawn(a,b,c));if("exhausted"===c.kind)throw new K(c.resetsAt);if("unavailable"===c.kind)throw Error("no authenticated reviewer account is available");let{role:d,account:e}=c;b.reviewerRole={...d},b.accountId=e.accountId;let f=`${e.engine}:${e.accountId}`;return b.attemptedAccounts=[...new Set([...b.attemptedAccounts??[],f])],{role:d,account:e}}(a,m);T(a,m),m.spawnStartedAt=N();let c=function(a,b,c,d,f=(0,n.tk)()){let g=(a.implementerConversationId?.startsWith("conversation_")?f.conversation(a.implementerConversationId):null)??f.ensureConversation(a.roles.implementer.engine,a.implementerPath,null);a.implementerConversationId=g.id;let h=g.generations.at(-1)?.path??a.implementerPath;f.rememberMembership(g.id,{kind:"flow",containerId:a.id,role:"implementer",slot:"implementer",stageId:null,stageOrder:0,round:null,parentConversationId:null});let i=b.reviewerBindingId??e().randomUUID();b.reviewerBindingId=i;let j=e().createHash("sha256").update(`${a.id}:${b.n}:${i}`).digest("hex").slice(0,24),k=`flow_${a.id}_${j}`,m=(0,v.St)(f.spawnReceiptForClientAttempt(k)?.launchProfile.title,120),p=(0,v.V0)(a.spec??"",80)??(0,v.St)(g.generations.at(-1)?.launchProfile.title,80)??(0,v.tU)(a.project,80)??"Review flow",q=m??(0,v.cr)(`${p} \xb7 review round ${b.n}`,120),r=f.beginSpawnRequest({engine:c.engine,cwd:a.cwd,accountId:d,accountPin:null!==d,parentConversationId:g.id,parentSessionKey:(0,o.sz)(g.engine,h),parentArtifactPath:h,role:"reviewer",reviewsConversationId:g.id,origin:{kind:"container",container:"flow",containerId:a.id,creatorConversationId:null},launchProfile:(0,l.Ui)({cwd:a.cwd,parentConversationId:g.id,title:q}),memberships:[{kind:"flow",containerId:a.id,role:"reviewer",slot:`reviewer:${b.n}:${i}`,stageId:null,stageOrder:1,round:b.n,parentConversationId:g.id}],clientAttemptId:k,requestDigest:e().createHash("sha256").update(JSON.stringify({flowId:a.id,round:b.n,reviewerBindingId:i,role:c,accountId:d,reviews:g.id})).digest("hex")});if("conflict"===r.kind)throw Error("reviewer spawn conflicts with its durable reservation");return b.launchId=r.receipt.launchId,b.reviewerConversationId=r.receipt.conversationId,r}(a,m,b.role,b.account.accountId);m.launchLeaseUntil=new Date(Date.now()+6e4).toISOString(),d(),await ag(a,m,b,c,d)}catch(b){if(b instanceof K){let c;m.error=null,U(a,(c=null===(f=b.resetsAt)?"unknown":new Date(1e3*f).toISOString(),`reviewer rate limited; all accounts exhausted; resetsAt=${c}`))}else U(a,V(m,b instanceof Error?b.message:String(b)))}return JSON.stringify(a)!==h}if("reviewing"===a.state){let d=(0,z.V_)(m);if(d)return _(a,m,d),JSON.stringify(a)!==h;if("headless"===a.reviewerMode){let d,f=(0,x.IL)(a.id,m.n,m,R(a,m).engine);if(m.sessionId||(m.sessionId=f?.sessionId??(g=f?.stdout??"",(d=g.match(/session id:?\s*([0-9a-f-]{36})/i)?.[1])&&E.test(d)?d:g.split("\n").slice(0,40).join("\n").match(E)?.[0]??null)),f?.processIdentity&&(m.reviewerIdentity=f.processIdentity,m.launchLeaseUntil=null),!function(a,b,c){if(b.reviewerPath||!c)return;let d=a.find(a=>i().basename(a.path).includes(c));d&&(b.reviewerPath=d.path)}(b,m,m.sessionId??null),m.reviewerPath||m.sessionId||$(a,b,m),af(a,m,R(a,m),m.accountId??null),f?.status==="lost"&&ab(m)||f?.status==="running")return JSON.stringify(a)!==h;if(f?.status==="lost"){let b=(0,z.J8)(m,c,R(a,m).engine);return b?_(a,m,b):U(a,"reviewer tracking was lost before a verdict could be recovered"),JSON.stringify(a)!==h}if(f){(0,x.T)(a.id,m.n,m);let b=(0,z.Sn)(f.finalOutput)??(0,z.J8)(m,c,R(a,m).engine);if(b)_(a,m,b);else if((m.autoRetryCount??0)<1)(0,x.T)(a.id,m.n,m),(0,x.gn)(a.id,m.n),Object.assign(m,{reviewerPath:null,reviewerConversationId:null,reviewerBindingId:e().randomUUID(),reviewerRole:null,accountId:null,sessionId:null,reviewerPid:null,reviewerIdentity:null,reviewerPane:null,findingsPath:null,verdict:null,findingsCount:null,reviewHeadSha:null,autoRetryCount:(m.autoRetryCount??0)+1,startedAt:N(),spawnStartedAt:null,launchId:null,launchLeaseUntil:null,relayStartedAt:null,relayRetryCount:0,relayDeliveryAttempt:0,relayDeliveryTransport:null,relayRetryAt:null,relayRetryRequiresIdempotency:!1,relayPendingSettlement:null,reviewedAt:null,relayedAt:null,error:null}),a.state="spawning",a.stateDetail=`reviewer produced no verdict; retrying automatically (${m.autoRetryCount}/1)`;else{let b=m.findingsPath??(0,B.tR)(a.id,m.n);(0,B.Yj)(b,f.finalOutput||f.stdout||f.stderr),m.findingsPath=b,U(a,V(m,"timeout"===f.status?"reviewer timed out":f.stderr.trim()||"reviewer verdict was unparseable"))}return JSON.stringify(a)!==h}let j=(0,z.J8)(m,c,R(a,m).engine);return j?_(a,m,j):U(a,"reviewer tracking is unavailable and no verdict could be recovered"),JSON.stringify(a)!==h}if($(a,b,m),af(a,m,R(a,m),m.accountId??null,m.reviewerPane?(0,n.tk)().readOnlySnapshot().receipts[m.launchId??""]?.verifiedHost??null:null),m.reviewerPath){let b=c.get(m.reviewerPath),d=(0,z.J8)(m,c,R(a,m).engine);d?_(a,m,d):b&&"live"!==b.activity&&"stalled"!==b.activity&&U(a,"reviewer verdict was unparseable")}return JSON.stringify(a)!==h}if("relaying"===a.state){let b=`${a.id}:${m.n}`;if(null!==m.relayedAt)return al(a,m),JSON.stringify(a)!==h;if(m.relayPendingSettlement){let c=ah(a);return c?ai(a,m,m.relayPendingSettlement.path,c.deliveredAt):Date.now()-O(m.relayPendingSettlement.since)>=18e4&&(G.delete(b),ak(a,m,"structured relay was accepted but never settled in the delivery journal",!0)),JSON.stringify(a)!==h}let e=H.get(b);if(e)return await e,JSON.stringify(a)!==h;if(m.relayStartedAt&&null===m.relayedAt&&!G.has(b)){if("structured"===m.relayDeliveryTransport)ak(a,m,"structured relay was interrupted before delivery settlement",!0);else{let b="legacy"===m.relayDeliveryTransport?"legacy relay was interrupted before delivery settlement; automatic replay is unsafe":"relay transport was not durably classified before interruption; automatic replay is unsafe";m.error=b,m.relayRetryAt=null,U(a,b)}return JSON.stringify(a)!==h}if(m.relayRetryAt&&Date.now()<O(m.relayRetryAt))return JSON.stringify(a)!==h;let f=(async()=>{try{m.relayRetryAt=null,m.relayDeliveryTransport=null,m.relayStartedAt=N(),G.add(b),d(),await aj(a,c,m,{requireIdempotentDelivery:m.relayRetryRequiresIdempotency??!1,onTransportSelected:a=>{m.relayDeliveryTransport=a,d()}}),d()}catch(e){let c=e instanceof Error?e.message:String(e);e instanceof L||e instanceof w.SS?(m.error=c,m.relayRetryAt=null,U(a,c)):e instanceof M?ak(a,m,c,!0):ak(a,m,c,!1),G.delete(b),d()}})();H.set(b,f);try{await f}finally{H.get(b)===f&&H.delete(b)}}return JSON.stringify(a)!==h}function an(a,b,c){let d=new Map(a.map(a=>[a.id,a])),e=c??new Set(d.keys());(0,B.Su)(e,a=>{let c=[];for(let e of a){let a=d.get(e.id);if(!a)continue;let f=b.get(e.id);if(!f||JSON.stringify(a)===f.snapshot)continue;if(e.state!==f.state||e.rounds.length!==f.roundsLen||e.closedAt!==f.closedAt){if("paused"!==e.state&&"closed"!==e.state)continue;let b=JSON.parse(f.snapshot),d=new Map(a.rounds.flatMap(a=>{let c=b.rounds.find(b=>b.n===a.n);return c?.relayedAt==null&&a.relayDelivery&&a.relayedAt?[[a.n,a]]:[]}));if(0===d.size)continue;let g={...e,rounds:e.rounds.map(a=>{let b=d.get(a.n);return b&&b.reviewerBindingId===a.reviewerBindingId?{...a,relayStartedAt:b.relayStartedAt,relayDelivery:b.relayDelivery,relayedAt:b.relayedAt}:a})};c.push(g);continue}let g=JSON.parse(f.snapshot),h=a.rounds.map((a,b)=>{let c=e.rounds[b],d=g.rounds[b],f=JSON.stringify(a.reviewerRole??null)===JSON.stringify(d?.reviewerRole??null);return c&&null==a.spawnStartedAt&&f&&void 0!==c.reviewerRole?{...a,reviewerRole:c.reviewerRole}:a}),i={...a,revision:e.revision,rounds:h,roles:e.roles,roundLimit:e.roundLimit,mode:e.mode};c.push(i)}return c})}async function ao(a){if(F.__llvFlowTick){let b=P((0,B.mL)());return ap(a,b),{flows:b,changed:!1}}F.__llvFlowTick=!0;let b=P((0,B.ov)()),c=new Map(b.map(a=>[a.id,{snapshot:JSON.stringify(a),state:a.state,roundsLen:a.rounds.length,closedAt:a.closedAt}])),d=new Set;try{let e=new Map(a.map(a=>[a.path,a])),f=!1;for(let g of b)!C.has(g.state)&&await am(g,a,e,()=>{an(b,c,new Set([...d,g.id]))})&&(f=!0,d.add(g.id),an(b,c,d));f&&an(b,c,d);let g=P((0,B.mL)());return ap(a,g),{flows:g,changed:f}}finally{F.__llvFlowTick=!1}}function ap(a,b){for(let b of a)delete b.flow;let c=new Map(a.map(a=>[a.path,a]));for(let a of b){let b=c.get(W(a.implementerConversationId,a.implementerPath));for(let d of(b&&(b.flow={flowId:a.id,flowRole:"implementer",round:null}),a.rounds)){if(!d.reviewerPath)continue;let b=c.get(W(d.reviewerConversationId,d.reviewerPath));b&&(b.flow={flowId:a.id,flowRole:"reviewer",round:d.n})}}}},73385:(a,b,c)=>{c.d(b,{le:()=>k,pQ:()=>o,e3:()=>p});var d=c(73024),e=c.n(d);c(76760);var f=c(50920),g=c(61899),h=c(2208),i=c(91620);let j=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],k=12e3;class l extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let m=()=>(0,f.BQ)("role-presets.json");function n(a){return i.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold}})}function o(){return n(function(){let a,b;try{a=e().readFileSync(m(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:1,overrides:{}};throw new l(`could not read role override registry: ${m()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new l("role override registry contains malformed JSON",{cause:a})}if(1!==b.schemaVersion)throw new l(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new l("role override registry must contain an overrides object");let c={};for(let[a,d]of Object.entries(b.overrides)){if(!("string"==typeof a&&j.includes(a))||!function(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"config"!==a&&"promptScaffold"!==a)||void 0!==a.promptScaffold&&("string"!=typeof a.promptScaffold||a.promptScaffold.length>k))return!1;if(void 0!==a.config){if(!a.config||"object"!=typeof a.config||Array.isArray(a.config)||Object.keys(a.config).some(a=>"engine"!==a&&"model"!==a&&"effort"!==a))return!1;let{engine:b,model:c,effort:d}=a.config;if(void 0!==b&&"claude"!==b&&"codex"!==b||void 0!==c&&("string"!=typeof c||c.length>128)||void 0!==d&&("string"!=typeof d||d.length>32))return!1}return!0}(d)||!function(a,b){let c={...i.W.find(b=>b.id===a).config,...b.config};return!(c.model.length>128||/[\u0000-\u001f\u007f]/.test(c.model))&&("claude"!==c.engine||!!(0,h.OV)(c.model))&&("codex"!==c.engine||!!c.model.startsWith("gpt-"))&&(0,g.z9)(c.engine,c.effort)}(a,d))throw new l(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:1,overrides:c}}().overrides)}function p(){try{return o()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),n({})}}},74030:(a,b,c)=>{c.d(b,{U:()=>g,c:()=>f});let d=process,e=d.__llvAccountMigrationSignal??={tick:null,scheduled:!1};function f(a){return e.tick=a,()=>{e.tick===a&&(e.tick=null)}}function g(){e.scheduled||null===e.tick||(e.scheduled=!0,queueMicrotask(()=>{e.scheduled=!1;let a=e.tick;null!==a&&a().catch(a=>{console.error("[account migration controller] requested reconciliation failed",a)})}))}},74955:(a,b,c)=>{c.d(b,{IL:()=>H,OZ:()=>J,P1:()=>E,T:()=>I,gn:()=>F});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(4351),l=c(53133),m=c(91836),n=c(14648),o=c(56404),p=c(92233),q=c(65377),r=c(98918);let s=new Map;function t(a,b){let c=(0,q.Fd)(a);return delete c.LLV_TOKEN,b&&(c.LLV_SPAWN_CAPABILITY=b),c}function u(a,b){return`${a}:${b}`}function v(a){if(!a||!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}let w={pidAlive:v,processIdentity:a=>p.B.processIdentity(a),signalProcess:(a,b)=>{process.kill(a,b)},setTimeout:(a,b)=>setTimeout(a,b)},x={...w,processGroupAlive:a=>{try{return process.kill(-a,0),!0}catch{return!1}},wait:async a=>await new Promise(b=>setTimeout(b,a))};function y(a,b,c={}){let d={...w,...c.runtime};if(!(!0===c.ownedByLiveHandle||b&&d.pidAlive(a)&&d.processIdentity(a)===b))return;try{d.signalProcess(-a,"SIGTERM")}catch{if(!c.leaderExited)try{(c.fallbackLeader??(b=>d.signalProcess(a,b)))("SIGTERM")}catch{}}let e=d.setTimeout(()=>{try{d.signalProcess(-a,"SIGKILL")}catch{}},c.graceMs??3e3);e.unref?.()}async function z(a,b,c={}){let d={...x,...c.runtime};if(!(!0===c.ownedByLiveHandle||b&&d.pidAlive(a)&&d.processIdentity(a)===b))return!d.processGroupAlive(a);let e=b=>{try{d.signalProcess(-a,b)}catch{if(!c.leaderExited)try{(c.fallbackLeader??(b=>d.signalProcess(a,b)))(b)}catch{}}},f=async b=>{let e=Math.max(1,c.pollMs??25),f=Math.max(1,Math.ceil(b/e));for(let b=0;b<f;b+=1){if(!d.processGroupAlive(a))return!0;await d.wait(e)}return!d.processGroupAlive(a)};return e("SIGTERM"),!!await f(c.graceMs??3e3)||(e("SIGKILL"),await f(c.killWaitMs??1e3))}function A(a,b,c=3e3){y(a,b,{graceMs:c})}function B(a){let b=a.child.pid;b&&!a.terminationStarted&&(a.terminationStarted=!0,y(b,null,{ownedByLiveHandle:!0,leaderExited:null!==a.exit,fallbackLeader:b=>{a.child.kill(b)}}))}let C=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,D=new Set(["session_id","sessionId","thread_id","threadId","rollout_id"]);function E(a,b,c,e,g,i=18e5,v,w,x,y){let z=u(a,b),A={pid:null,identity:null,sessionId:null,reviewerPath:null};if(s.has(z))return A;let C=(0,r.WJ)(a,b);h().mkdirSync(j().dirname(C),{recursive:!0}),F(a,b);let D=function(a,b,c,d,e,g,h,i={}){if("claude"===a.engine){let c=f().randomUUID(),e=["-p",b,"--dangerously-skip-permissions","--session-id",c];a.model&&e.push("--model",a.model),a.effort&&e.push("--effort",a.effort);let i=g?(0,n.UI)(g.home,{baseSettingsPath:g.managed?(0,l.ZK)():null,profileId:`headless-${c}`}).settingsPath:null;i&&e.push("--settings",i);let j=g?.managed?(0,l.x0)(g.home):process.env;return{command:(0,k.uX)("claude"),args:e,env:t(j,h),stdin:null,outputPath:null,sessionId:c,reviewerPath:(0,m.eV)(d,c,g?.projectsDir)}}let j=["--disable","multi_agent","exec","--ignore-user-config","-","--json","--output-last-message",c,..."read-only"===i.sandbox?["-s","read-only","--skip-git-repo-check"]:["--dangerously-bypass-approvals-and-sandbox"]];return e?.managed&&j.unshift("-c","cli_auth_credentials_store=file"),a.model&&j.push("-m",a.model),a.effort&&j.push("-c",`model_reasoning_effort=${a.effort}`),{command:(0,k.uX)("codex"),args:j,env:t(e?.home?{...(0,q.Fd)(process.env),CODEX_HOME:e.home}:process.env,h),stdin:(0,n.Vw)("codex",b),outputPath:c,sessionId:null,reviewerPath:null}}(c,g,C,e,v,w,y),G=!1,H=function(a){let b;if(s.has(a.key))return null;let c=h().openSync(a.stdoutPath,"w"),e=h().openSync(a.stderrPath,"w");try{b=(0,d.spawn)(a.runtime?.command??a.built.command,a.built.args,{cwd:a.cwd,env:a.built.env,detached:!0,stdio:[null===a.built.stdin?"ignore":"pipe",c,e]}),null!==a.built.stdin&&b.stdin&&(b.stdin.on("error",()=>{}),b.stdin.end(a.built.stdin,"utf8"))}finally{h().closeSync(c),h().closeSync(e)}b.unref();let f=a.runtime?.processIdentity??p.B.processIdentity,g=b.pid?f(b.pid):null,i={child:b,identity:g,identityOf:f,startedAt:Date.now(),exit:null,terminationStarted:!1,timer:setTimeout(()=>{a.onTimeout?.(),B(i)},a.timeoutMs)};return i.timer.unref(),s.set(a.key,i),b.on("error",()=>{clearTimeout(i.timer),i.exit={code:null,signal:null},B(i),a.onExit(i)}),b.on("close",(b,c)=>{clearTimeout(i.timer),i.exit={code:b,signal:c},B(i),a.onExit(i)}),{pid:b.pid??null,identity:g}}({key:z,built:D,cwd:e,stdoutPath:(0,r.Ml)(a,b),stderrPath:(0,r.NO)(a,b),timeoutMs:i,runtime:x,onExit:()=>{G||(G=!0,(0,o.L1)())}});return H?{pid:H.pid,identity:H.identity,sessionId:D.sessionId,reviewerPath:D.reviewerPath}:A}function F(a,b){for(let c of[(0,r.WJ)(a,b),(0,r.Ml)(a,b),(0,r.NO)(a,b)])h().rmSync(c,{force:!0})}function G(a){if(!a)return"";try{return h().readFileSync(a,"utf8")}catch{return""}}function H(a,b,c,d,e=18e5){let f=s.get(u(a,b)),g=G((0,r.Ml)(a,b)),h=f?.child.pid??c.reviewerPid??null;f&&h&&!f.identity&&v(h)&&(f.identity||(f.identity=f.identityOf(h)),f.identity);let i=f?.identity??c.reviewerIdentity??null,j=G((0,r.NO)(a,b)),k=function(a){let b=null,c="";for(let d of a.split("\n")){let a=d.trim();if(a.startsWith("{"))try{let d=JSON.parse(a);b||(b=function a(b,c=0){if(!b||"object"!=typeof b||c>4)return null;for(let[d,e]of Object.entries(b)){if(D.has(d)&&"string"==typeof e&&C.test(e))return e;let b=a(e,c+1);if(b)return b}return null}(d));let e=function(a){let b=a.item;if(b&&("agent_message"===b.type||"agent_message"===b.item_type)&&"string"==typeof b.text)return b.text;let c=a.msg;return c?.type==="agent_message"&&"string"==typeof c.message?c.message:null}(d);e&&(c=e)}catch{}}return{sessionId:b,lastAgentMessage:c}}(g),l=G("codex"===d?(0,r.WJ)(a,b):null).trim();if(!f&&null===h&&!g&&!j&&!l&&!c.spawnStartedAt)return null;let m=f?.startedAt??Date.parse(c.spawnStartedAt??""),n=Number.isFinite(m)?Date.now()-m:0,o=l||k.lastAgentMessage||("claude"===d?g.trim():"");if(l)return{status:"done",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:i,code:f?.exit?.code??null,signal:f?.exit?.signal??null};if(!f&&null!==h&&!i&&v(h))return{status:"lost",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:null,code:null,signal:null};if(f?null===f.exit&&v(h):!!(h&&i&&v(h)&&p.B.processIdentity(h)===i))return!f&&n>=e&&h&&A(h,i),{status:"running",stdout:g,stderr:j,finalOutput:"",sessionId:k.sessionId,processIdentity:i,code:null,signal:null};if(!f&&null===h&&!l)return{status:"lost",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:i,code:null,signal:null};let q=f?.exit??null;return{status:q?.code===0||o?"done":!o&&n>=e?"timeout":"failed",stdout:g,stderr:j,finalOutput:o,sessionId:k.sessionId,processIdentity:i,code:q?.code??null,signal:q?.signal??null}}function I(a,b,c={reviewerPid:null,reviewerIdentity:null}){let d=u(a,b),e=s.get(d);s.delete(d);let f=e?.child.pid??c.reviewerPid??null,g=e?.identity??c.reviewerIdentity??null;(e&&clearTimeout(e.timer),e)?B(e):f&&A(f,g)}async function J(a,b,c={reviewerPid:null,reviewerIdentity:null}){let d=u(a,b),e=s.get(d),f=e?.child.pid??c.reviewerPid??null,g=e?.identity??c.reviewerIdentity??null;if(!f)return s.delete(d),!0;e&&(clearTimeout(e.timer),e.terminationStarted=!0);let h=await z(f,g,{ownedByLiveHandle:!!e,leaderExited:e?.exit!==null,fallbackLeader:e?a=>{e.child.kill(a)}:void 0});return h&&s.delete(d),h}},75060:(a,b,c)=>{c.d(b,{em:()=>t,uF:()=>u});var d=c(76760),e=c.n(d),f=c(91836),g=c(94284);c(3302);var h=c(52530),i=c(69882);let j=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,k=(0,g.E)("codex-cwd");function l(a){return"codex-sessions"===a.root?a.path.endsWith(".jsonl"):"claude-projects"===a.root&&!!a.path.endsWith(".jsonl")&&!e().basename(a.path).startsWith("agent-")&&!a.path.includes(e().sep+"subagents"+e().sep)}function m(a){return"idle"!==a.activity&&null===a.pid&&l(a)}function n(a){let b=e().basename(a).match(j);return b?.at(-1)?.toLowerCase()??null}function o(a){if(!a)return null;let b=a.match(j);return b?.at(-1)?.toLowerCase()??null}function p(a){let b=a.indexOf("--session-id"),c=o(b>=0?a[b+1]:void 0);if(c)return c;let d=a.indexOf("--resume"),e=o(d>=0?a[d+1]:void 0);if(e)return e;let f=a.indexOf("resume");return o(f>=0?a[f+1]:void 0)}function q(a){if("claude-projects"===a.root){var b;let c,d=(b=a.path,(c=(0,i.Bz)(b))?e().relative(c,b).split(e().sep)[0]??"":"");return d?"claude:"+d:null}let c=a.cwd??function(a){let b=k.get(a);if(void 0!==b&&""!==b)return b;let c=(0,f.tX)(a,{bytes:8192})??"";return k.set(a,c),c}(a.path);return c?"codex:"+c:null}function r(a){return"claude"===a.engine?"claude:"+(0,f.Me)(a.cwd):"codex:"+a.cwd}function s(a,b){a.pid=b,a.proc="running"}function t(a){let b=a.filter(a=>null===a.pid&&l(a)),c=b.filter(m).slice(0,12);if(0===b.length&&0===c.length)return;let d=(0,h.SP)(b.map(a=>a.path)),e=new Set,f=[];for(let a of b){let b=d.get(a.path)??null;null!==b&&!e.has(b)&&(0,h.pl)(b)?(s(a,b),e.add(b)):f.push(a)}if(0===f.length)return;let g=(0,h.Bj)().filter(a=>!e.has(a.pid)),i=new Map;for(let a of g){let b=p(a.argv);if(!b)continue;let c=a.engine+":"+b,d=i.get(c);d?d.push(a):i.set(c,[a])}let j=[];for(let a of f){let b=n(a.path),d="codex-sessions"===a.root?"codex":"claude",f=(b?i.get(d+":"+b)??[]:[]).filter(a=>!e.has(a.pid));1===f.length?(s(a,f[0].pid),e.add(f[0].pid)):c.includes(a)&&j.push(a)}if(0===j.length)return;let k=new Map;for(let a of g){if(0===a.tty||e.has(a.pid)||null!==p(a.argv))continue;let b=r(a),c=k.get(b);c?c.push(a):k.set(b,[a])}let o=new Set;for(let a of j){let b=q(a);if(null===b||o.has(b))continue;o.add(b);let c=(k.get(b)??[]).filter(a=>!e.has(a.pid));1===c.length&&(s(a,c[0].pid),e.add(c[0].pid))}}function u(a,b=(0,h.Bj)(!0)){let c=q(a),d=n(a.path),e=null;for(let f of b)if(function(a,b,c=q(a)){let d="codex-sessions"===a.root?"codex":"claude-projects"===a.root?"claude":null;if(!d||!a.path.endsWith(".jsonl"))return!1;let e=n(a.path);if(b.engine!==d||(0,h.Vt)(b.argv)||!(0,h.pl)(b.pid))return!1;let f=p(b.argv);return!!e&&f===e||null===f&&0!==b.tty&&null!==c&&r(b)===c}(a,f,c)){if(null!==d&&p(f.argv)===d||(0,h.FQ)(f.pid,a.path))return"session";e="cwd"}return e}},76863:(a,b,c)=>{c.d(b,{Ot:()=>l,xe:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(53133),i=c(10456);function j(a){try{return e().realpathSync(a)}catch{return null}}let k=a=>a;function l(a,b=function(){let a=[],b=b=>{b&&!a.includes(b)&&a.push(b)},c=a=>{try{for(let c of a())b(c)}catch{}};try{b(g().join((0,h.Hy)(),"projects")),b((0,h.o1)())}catch{}return c(h.pW),c(i.vD),a}()){let c=new Map;for(let b of a){let a=j(b);a&&!c.has(a)&&c.set(a,b)}if(!c.size)return k;let d=[];for(let a of b){let b=c.get(j(a)??"\0");b&&b!==a&&d.push([a+g().sep,b+g().sep])}return d.length?(d.sort(([a],[b])=>b.length-a.length),a=>{for(let[b,c]of d)if(a.startsWith(b))return c+a.slice(b.length);return a}):k}function m(a,b){if(!a?.size||b===k)return a;let c=new Set;for(let d of a)c.add(d),c.add(b(d));return c.size===a.size?a:c}},78598:(a,b,c)=>{c.d(b,{oS:()=>h,xb:()=>n});var d=c(45481),e=c(7058),f=c(94284),g=c(38849);let h="questions-v5";for(let a of["questions","questions-v2","questions-v3","questions-v4"])(0,f.E)(a).clear();let i=(0,f.E)(h),j=/<system-reminder\b[^>]*>[\s\S]*?<\/system-reminder>/gi;function k(a){return(0,g.r$)(a.timestamp)??(0,g.r$)(a.created_at)??new Date().toISOString()}function l(a){let b=(0,g.r$)(a.label)?.trim();return b?{label:b.replace(/\s*\(Recommended\)\s*$/i,"").trim()||b,description:(0,g.r$)(a.description)?.trim()??"",recommended:/\(Recommended\)\s*$/i.test(b)}:null}function m(a){let b=(0,g.r$)(a.question)?.trim();if(!b)return null;let c=(0,g.Em)(a.options).map(l).filter(a=>null!==a);return c.sort((a,b)=>Number(b.recommended)-Number(a.recommended)),{question:b,header:(0,g.r$)(a.header)?.trim()??"Question",multiSelect:!0===a.multiSelect,options:c}}function n(a){if("claude-projects"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=1e3*a.mtime,c=i.get(a.path),f=c?.[0]===a.size&&c[1]===b?c[2]:void 0;if(void 0===f){f=null;let c=new Set,h=(0,e.w8)(a.path,a.size,b);for(let b of h.records.reverse()){if(function(a){if("user"!==a.type||!0===a.isSidechain||!0===a.isCompactSummary||(0,d.fR)(a))return!1;let b=(0,g.xK)(a.message)?.content,c=(0,d.hB)(b).trim();if(c){let a=c.replace(j,"").trim();return!!a&&!(0,d.r1)(a)}return(0,g.Em)(b).some(a=>"tool_result"!==a.type&&"text"!==a.type)}(b))break;let e=function(a){let b=(0,g.r$)(a.tool_use_id);if(b)return b;for(let b of(0,g.Em)((0,g.xK)(a.message)?.content)){let a=(0,g.r$)(b.tool_use_id);if("tool_result"===b.type&&a)return a}return null}(b);if(e){c.add(e);continue}let h=function(a){if("assistant"!==a.type)return null;for(let b of(0,g.Em)((0,g.xK)(a.message)?.content)){if("tool_use"!==b.type)continue;let a=(0,g.r$)(b.id),c=(0,g.r$)(b.name),d=(0,g.xK)(b.input)??{};if(a&&("AskUserQuestion"===c||"ExitPlanMode"===c))return{id:a,name:c,input:d}}return null}(b);if(!h)continue;if(c.has(h.id))break;if("AskUserQuestion"===h.name){let c=(0,g.Em)(h.input.questions).map(m).filter(a=>null!==a);if(!c.length)break;f={kind:"question",toolUseId:h.id,transcriptPath:a.path,askedAt:k(b),questions:c};break}let i=(0,g.r$)(h.input.plan)?.trim();if(!i)break;f={kind:"plan",toolUseId:h.id,transcriptPath:a.path,askedAt:k(b),plan:i};break}h.complete&&i.set(a.path,[a.size,b,f])}return f&&"running"===a.proc&&null!==a.pid?{...f,pid:a.pid,paneTarget:null}:null}},78906:(a,b,c)=>{let d,e,f,g,h;c.d(b,{H6:()=>J,Ny:()=>B,RK:()=>P,VO:()=>Q,_F:()=>O,co:()=>M});var i=c(73024),j=c.n(i),k=c(76760),l=c.n(k);c(2208);var m=c(50920),n=c(65465),o=c(4116),p=c(68574);c(98918);var q=c(91620),r=c(55204),s=c(73385),t=c(79866);function u(a,b={},c=(0,s.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,r.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...q.W.find(b=>b.id===a).config}}function v(a){let b=u("cleaner",{},a);return{..."codex"===b.engine?b:{...q.W.find(a=>"cleaner"===a.id).config},effort:"low"}}function w(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function x(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,r.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function y(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==function(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=function(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=w(a.agent)??x(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=w(a.reviewer)??x(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=w(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:v(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}(a.template)}v(),e=u("builder",{},d=(0,s.e3)()),f=u("builder",{mode:"plain",domain:"frontend"},d),g=u("reviewer",{},d),[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:e,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:f,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:g,fixer:h=v(d),roundLimit:5,reviewerMode:"headless"}]},{name:"Sol medium → Sol xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:e,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:g,fixer:h,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}));let z=new WeakMap;function A(a){return z.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function B(){return A(F().snapshot())}function C(){let a=function(){let a;try{a=j().readFileSync((0,m.BQ)("workflows.json"),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(y))throw Error("legacy workflow state contains malformed records");return a.workflows.map(D)}function D(a){return{...a,project:(0,n.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let E=new Map;function F(){let a=(0,m.BQ)("state.sqlite"),b=E.get(a);if(b)return b;(0,t.t0)(a,[{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:C,key:a=>a.id}]);let c=new t.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>y(a)?D(a):null,clone:a=>D(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!y(a))throw Error("refusing to persist a malformed workflow record")}});return E.set(a,c),c}function G(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function H(a,b,c){return a===c.path&&(b??null)===c.conversationId}function I(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}async function J(a=(0,o.tk)()){let b=B(),c=[];await (0,p.pV)(b,async b=>{let d,e,f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null};d=G({path:b.srcPath??null,conversationId:b.srcConversationId},a),b.srcPath=d.path,b.srcConversationId=d.conversationId,e=G({path:b.fixerPath,conversationId:b.fixerConversationId},a),b.fixerPath=e.path,b.fixerConversationId=e.conversationId,d.changed||e.changed;let h={path:b.srcPath??null,conversationId:b.srcConversationId??null},i={path:b.fixerPath,conversationId:b.fixerConversationId??null},j=[];await (0,p.pV)(b.stageRuns,b=>{let c,d={path:b.agentPath,conversationId:b.agentConversationId??null};c=G({path:b.agentPath,conversationId:b.agentConversationId},a),b.agentPath=c.path,b.agentConversationId=c.conversationId,c.changed&&j.push({index:b.index,before:d,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let k=I(f,h),l=I(g,i);(k||l||j.length>0)&&c.push({id:b.id,source:k?{before:f,after:h}:null,fixer:l?{before:g,after:i}:null,runs:j})}),function(a){if(0===a.length)return;let b=B(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&H(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&H(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&H(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&M(b)}(c)}function K(a,b){return JSON.stringify(a)===JSON.stringify(b)}function L(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function M(a){let b=z.get(a);if(!b){F().replaceSync(a),A(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));F().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=F().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=D(function a(b,c,d){if(K(c,b))return structuredClone(d);if(K(d,b))return structuredClone(c);if(L(b)&&L(c)&&L(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=F().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),A(a)}function N(a){return l().join((0,m.BQ)("workflows"),a)}function O(a){return l().join(N(a),"setup-stdout.log")}function P(a){return l().join(N(a),"setup-stderr.log")}function Q(a){return l().join(N(a),"setup-exit")}},79866:(a,b,c)=>{c.d(b,{UY:()=>M,t0:()=>G,jY:()=>K,Gw:()=>L,Vx:()=>I,M:()=>J});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(92233),k=c(53410);let l="LLV_HOT_STATE_RELEASE_REVISION";function m(a){return"string"==typeof a&&/^[0-9a-f]{40}$/.test(a)}function n(a){try{var b;let c=!(b=JSON.parse(g().readFileSync(i().join(a,"hot-state-authority.json"),"utf8")))||"object"!=typeof b||Array.isArray(b)?null:1===b.schemaVersion&&Number.isInteger(b.epoch)&&!(b.epoch<1)&&["legacy","preparing","sqlite","fencing"].includes(String(b.mode))&&(null===b.releaseRevision||m(b.releaseRevision))&&"string"==typeof b.updatedAt&&(void 0===b.activationReadyAt||"string"==typeof b.activationReadyAt)&&(void 0===b.releaseReadyAt||"string"==typeof b.releaseReadyAt)&&(void 0===b.releaseReadyAt||void 0!==b.activationReadyAt)&&(void 0===b.checkpoint||function(a){if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.revisions,c=b?[b.flows,b.pipelines,b.pipelinesArchive,b.workflows]:[];return"string"==typeof a.acknowledgedAt&&4===c.length&&c.every(a=>Number.isInteger(a)&&a>=0)}(b.checkpoint))?b:null;if(!c)throw Error("hot-state authority is invalid");return c}catch(a){if("ENOENT"===a.code)return null;throw a}}function o(a,b=process.env){let c=b.LLV_VIEWER_DEPLOY_TARGET?.trim()||i().join(a,"viewer-release.json");try{var d;let a=!(d=JSON.parse(g().readFileSync(c,"utf8")))||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.endpoint&&m(d.revision)&&(void 0===d.hotStateBackend||"sqlite-v1"===d.hotStateBackend)?d:null;if(!a)throw Error("Viewer release target cannot authorize hot state");return a}catch(a){if("ENOENT"===a.code)return null;throw a}}function p(a,b=process.env){let c=o(a,b);if(!c)return null;let d=b[l]?.trim();if(d)return m(d)&&d===c.revision?d:null;let e=b.PORT?.trim();if(!e)return null;try{return new URL(c.endpoint).port===e?c.revision:null}catch{return null}}function q(a,b=process.env){let c=o(a,b);if(!c)return!0;let d=n(a),e=p(a,b);return e?d?.mode==="sqlite"&&d.releaseRevision===e&&c.revision===e:!(b[l]?.trim()||b.PORT?.trim())&&d?.mode==="sqlite"&&d.releaseRevision===c.revision&&"string"==typeof d.activationReadyAt}let r=new Int32Array(new SharedArrayBuffer(4)),s=new Set,t=0;function u(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("SQLite state stores require the Bun runtime");return a.Database}function v(a,b){let c=a.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?");return b.every(a=>{let b=c.get(a.collection);return b?.schema_version===a.schemaVersion&&b.migration_id===a.migrationId})}function w(a,b){if(!g().existsSync(a))return!1;let c=null;try{return c=A(a),v(c,b)}catch{return!1}finally{c?.close()}}function x(a){if(!q(i().dirname(a)))throw new k.Qm("hot state writes are fenced during release handoff")}function y(a,b=!1){if(q(i().dirname(a))||s.has(i().resolve(a))&&function(a,b=process.env){let c=o(a,b);if(!c)return!0;let d=p(a,b);if(!d)return!1;let e=n(a);return e?.mode==="preparing"&&e.releaseRevision===d&&c.revision===d}(i().dirname(a)))return;let c=p(i().dirname(a)),d=n(i().dirname(a));if(!b||null===c||d?.mode!=="fencing"||d.releaseRevision!==c)throw new k.Qm("hot state migration is waiting for release promotion")}function z(a){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(u())(a,{create:!0,strict:!0});try{for(let a=0;a<6e3;a+=1)try{return b.exec("PRAGMA busy_timeout = 0; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON;"),b}catch(a){if(!E(a))throw a;Atomics.wait(r,0,0,5)}throw new k.Qm("state database connection is busy")}catch(a){throw b.close(),a}}function A(a){t+=1;let b=new(u())(a,{readonly:!0,strict:!0});return b.exec("PRAGMA busy_timeout = 0; PRAGMA foreign_keys = ON;"),b}function B(a){let b=z(a);try{for(let c=0;c<6e3;c+=1)try{return b.exec("PRAGMA journal_mode = WAL; PRAGMA auto_vacuum = INCREMENTAL;"),b.exec("BEGIN IMMEDIATE"),b.exec(`
172
172
  CREATE TABLE IF NOT EXISTS state_collections (
173
173
  collection TEXT PRIMARY KEY,
174
174
  schema_version INTEGER NOT NULL,
@@ -295,7 +295,7 @@ ${a}`}function o(a){let b=a.match(k);if(b){let c,e=null,j=null,k=null;for(let[,a
295
295
  `).get(this.options.collection);if(d&&Number.isInteger((c={pid:d.owner_pid,startIdentity:d.owner_start_identity}).pid)&&c.pid>0&&function(a,b){if(!j.B.pidAlive(a))return!1;if(null===b)return!0;let c=j.B.processIdentity(a);return null===c||c===b}(c.pid,c.startIdentity))return a.exec("ROLLBACK"),!1;return d&&a.query("DELETE FROM state_leases WHERE collection = ?").run(this.options.collection),a.query(`
296
296
  INSERT INTO state_leases(collection, owner_token, owner_pid, owner_start_identity, acquired_at)
297
297
  VALUES (?, ?, ?, ?, ?)
298
- `).run(this.options.collection,b,process.pid,j.B.processIdentity(process.pid),Date.now()),a.exec("COMMIT"),!0}catch(b){if(D(a),E(b))return!1;throw b}}acquireLeaseSync(){let a=z(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;Atomics.wait(r,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}async acquireLease(){let a=z(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}releaseLeaseSync(a){let b=z(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(D(b),!E(a))throw a;Atomics.wait(r,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}async releaseLease(a){let b=z(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(D(b),!E(a))throw a;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}}},80026:(a,b,c)=>{c.d(b,{y:()=>d});function d(a){return void 0!==a.default?a.default:"integer"===a.kind?a.min??1:"select"===a.kind?a.options?.[0]??"":""}},80502:(a,b,c)=>{c.d(b,{Zp:()=>E,f8:()=>x,oe:()=>D});var d=c(57975),e=c(55883),f=c(31973),g=c(30277),h=c(8164),i=c(59376),j=c(52530),k=c(3302),l=c(89364);let m=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,n={scanner:3,resume:2,argv:1},o=globalThis;function p(a){return a.slice(a.lastIndexOf("/")+1).match(m)?.[0]?.toLowerCase()??null}function q(a){for(let b=a.length-1;b>=0;b-=1){let c=a[b]?.match(m)?.[0];if(c)return c.toLowerCase()}return null}function r(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function s(a){return[...a].sort((a,b)=>n[b.source]-n[a.source]||a.pathname.localeCompare(b.pathname))[0]??null}function t(a,b,c){let d=new Set,e=a;for(let a=0;null!==e&&a<64;a+=1){if(e===b)return a;if(d.has(e))break;d.add(e),e=c.get(e)??null}return -1}function u(a,b,c){let d=c(b);return a.conflicts?.find(a=>null!==d&&a.conversationId===d||a.paths.includes(b))??null}class v extends Error{constructor(a){super(a.quarantinedPaneIds?.length?"conversation has a quarantined live pane":"conversation has multiple live panes"),this.name="TranscriptHostConflictError"}}function w(a,b=500,c){let d=a instanceof v?409:b;return{ok:!1,outcome:"failed",error:a instanceof Error?a.message:String(a),status:d,...c?{actuation:c}:{}}}function x(a){return async function(b,c,d){let e,f=a.conversationIdForPath??(()=>null),[g,i,j]=await Promise.all([c??a.listFiles(),a.panes(b),a.resumeRecords()]),k=j?.serverPid??await a.serverPid();if("failure"===i.kind&&null!==k)return{hosts:[],observation:"failure",observationError:i.error,conflicts:[],canonicalFor:()=>null};if(null===k||"no-server"===i.kind)return await a.reconcile?.([]),{hosts:[],observation:"no-server",conflicts:[],canonicalFor:()=>null};if("available"!==i.kind||0===i.panes.size)return await a.reconcile?.([]),{hosts:[],observation:"available",conflicts:[],canonicalFor:()=>null};let{panes:l}=i,m=d??a.ppidMap(),o=a.agents(b),v=function(a){let b=new Map;for(let c of a){if(null===c.pid||"running"!==c.proc)continue;let a=b.get(c.pid);a&&(!a.parent||c.parent)||b.set(c.pid,c)}return b}(g),w=function(a){let b=new Map;for(let c of a){let a=p(c.path);if(!a)continue;let d=b.get(a);d&&(!d.parent||c.parent)||b.set(a,c)}return b}(g),x=[];for(let[b,c]of l){let d=new Set((0,h.mO)(b,m));for(let e of o){if(!d.has(e.pid))continue;let f=function(a,b,c,d,e,f,g){let h=[],i=d.get(a.pid),j=q(a.argv),k=i?p(i.path):null;if(i?.engine===a.engine&&(null!==j&&null!==k&&j===k||g(a.pid,i.path))&&h.push({pathname:i.path,source:"scanner"}),f)for(let[d,e]of f.records)e.paneId===b.paneId&&e.panePid===c&&e.engine===a.engine&&h.push({pathname:d,source:"resume"});let l=j?e.get(j):void 0;return l?.engine===a.engine&&h.push({pathname:l.path,source:"argv"}),h}(e,c,b,v,w,j,a.writesPath??(()=>!1)),g=s(f);x.push({tmuxServerPid:k,paneId:c.paneId,panePid:b,agentPid:e.pid,display:c.target,windowName:c.windowName??"",engine:e.engine,cwd:e.cwd,agentArgv:[...e.argv],agentIdentity:a.identity(e.pid),launchId:a.launchId?await a.launchId(c.paneId):null,claimedPaths:[...new Set(f.map(a=>a.pathname))],primaryPath:g?.pathname??null,claims:f})}}let y=(e=new Map,x.forEach((a,b)=>{let c=q(a.agentArgv),d=c?`${a.paneId}:${a.engine}:${c}`:`${a.paneId}:${a.engine}:pid:${a.agentPid}`,f=e.get(d)??{firstIndex:b,hosts:[]};f.hosts.push(a),e.set(d,f)}),[...e.values()].sort((a,b)=>a.firstIndex-b.firstIndex).flatMap(a=>{if(1===a.hosts.length)return a.hosts;let b=[...a.hosts].sort((a,b)=>t(b.agentPid,b.panePid,m)-t(a.agentPid,a.panePid,m)||b.agentPid-a.agentPid)[0];if(!a.hosts.every(a=>t(b.agentPid,a.agentPid,m)>=0))return a.hosts;let c=[...new Map(a.hosts.flatMap(a=>a.claims).map(a=>[`${a.source}:${a.pathname}`,a])).values()],d=s(c);return[{...b,claims:c,claimedPaths:[...new Set(c.map(a=>a.pathname))],primaryPath:d?.pathname??null}]})),z=await a.reconcile?.(y),A=new Set(z?.quarantinedPaneIds??[]),B=y.filter(a=>!A.has(a.paneId)),C=function(a,b,c=new Set){let d=new Map;for(let e of a){let a=new Set(e.claims.map(a=>a.pathname)),f=[...new Set([...a].map(b).filter(a=>null!==a))];for(let b of f.length>0?f.map(a=>`conversation:${a}`):[...a].map(a=>`path:${a}`)){let f=b.startsWith("conversation:")?b.slice(13):null,g=d.get(b)??{conversationId:f,paths:new Set,paneIds:new Set,quarantinedPaneIds:new Set};for(let b of a)g.paths.add(b);g.paneIds.add(e.paneId),c.has(e.paneId)&&g.quarantinedPaneIds.add(e.paneId),d.set(b,g)}}return[...d.values()].filter(a=>a.paneIds.size>1||a.quarantinedPaneIds.size>0).map(a=>({conversationId:a.conversationId,paths:[...a.paths].sort(),paneIds:[...a.paneIds].sort((a,b)=>r(a)-r(b)),...a.quarantinedPaneIds.size>0?{quarantinedPaneIds:[...a.quarantinedPaneIds].sort((a,b)=>r(a)-r(b))}:{}})).sort((a,b)=>(a.conversationId??a.paths[0]??"").localeCompare(b.conversationId??b.paths[0]??""))}(y,f,A),D={hosts:y,observation:"available",conflicts:C,canonicalFor:a=>{let b;return u(D,a,f)?null:(b=B.map(b=>({host:b,claim:b.claims.filter(b=>b.pathname===a).sort((a,b)=>n[b.source]-n[a.source])[0]})).filter(a=>void 0!==a.claim).sort((a,b)=>n[b.claim.source]-n[a.claim.source]||r(b.host.paneId)-r(a.host.paneId)),b[0]?.host??null)}};return D}}function y(a){return{kind:"tmux",endpoint:(0,l.WH)(),server:{pid:a.tmuxServerPid,startIdentity:g.B.processIdentity(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:g.B.processIdentity(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}async function z(){let a=await (0,l.lC)();if(null===a)return null;let b=(0,e.tk)(),c=b.readOnlySnapshot();if(!c.importedResumePanes){let c=await (0,l.MA)();if(c)return b.importResumePanes(c.serverPid,c.records),{serverPid:a,records:c.serverPid===a?new Map(c.records):new Map}}let d=c.legacyResumePanes;return{serverPid:a,records:d.serverPid===a?new Map(Object.entries(d.panes)):new Map}}async function A(a,b,c){if(await (0,l.$o)(a,b,c),!c.panePid)return;let d=await (0,l.lC)();null!==d&&(0,e.tk)().rememberResumePane(d,a,{paneId:c.paneId,panePid:c.panePid,windowName:b.windowName,engine:b.engine})}async function B(a,b){if("claude"!==a.engine&&"codex"!==a.engine)return b();let c=(0,f.sz)(a.engine,a.path);if(!c)return b();let d={pid:process.pid,startIdentity:g.B.processIdentity(process.pid)};try{return await (0,e.tk)().withOperationLock(c,d,b)}catch(a){return w(a,409)}}let C=function(a,b=new Map){let c=x(a);async function d(b,c){if(b.engine!==c.engine||await a.serverPid()!==b.tmuxServerPid||await a.panePid(b.paneId)!==b.panePid||!a.alive(b.agentPid)||b.windowName&&a.paneWindowName&&await a.paneWindowName(b.paneId)!==b.windowName||!function(a,b,c){let d=new Set,e=a;for(let a=0;null!==e&&a<64;a+=1){if(e===b)return!0;if(d.has(e))break;d.add(e),e=c(e)}return!1}(b.agentPid,b.panePid,a.parentPid))return!1;let d=a.argv(b.agentPid);if(d.length!==b.agentArgv.length||d.some((a,c)=>a!==b.agentArgv[c])||null!==b.agentIdentity&&a.identity(b.agentPid)!==b.agentIdentity||(0,j.Fe)(d)!==b.engine)return!1;let e=p(c.path);return(c.pid===b.agentPid||null!==e&&q(d)===e)&&b.claimedPaths.includes(c.path)}async function e(b){let e=a.conversationIdForPath??(()=>null),f=await c(!0);if("failure"===f.observation)throw Error(`tmux pane observation failed: ${f.observationError}`);let g=u(f,b.entry.path,e);if(g)throw new v(g);let h=f.canonicalFor(b.entry.path);if(h&&await d(h,b.entry))return{host:h,resumed:!1};let i=h;if("failure"===(f=await c(!0)).observation)throw Error(`tmux pane observation failed: ${f.observationError}`);let j=u(f,b.entry.path,e);if(j)throw new v(j);let k=null!==(h=f.canonicalFor(b.entry.path))&&null!==i&&h.paneId===i.paneId&&h.agentPid===i.agentPid&&null!==h.agentIdentity&&null!==i.agentIdentity&&h.agentIdentity!==i.agentIdentity;if(h&&!k&&await d(h,b.entry))return{host:h,resumed:!1};let l=a.beginResume?.(b.entry,b.spec)??null,m=l?.spec??b.spec,n=await a.spawn(m,"",l?.receipt);if(await a.remember(b.entry.path,m,n),"failure"===(f=await c(!0)).observation)throw Error(`tmux pane observation failed: ${f.observationError}`);let o=u(f,b.entry.path,e);if(o)throw new v(o);if(!(h=f.canonicalFor(b.entry.path))||!await d(h,b.entry))throw Error("resumed agent host could not be identified safely");return{host:h,resumed:!0}}function f(a){let c=b.get(a.entry.path);if(c)return{owner:!1,task:c};let d=e(a).finally(()=>b.delete(a.entry.path));return b.set(a.entry.path,d),{owner:!0,task:d}}async function g(b){let c,e=!1,g=!1;try{let a=f(b);e=a.owner,g=(c=await a.task).resumed}catch(a){return w(a)}for(let h=0;h<2;h+=1){if(!await d(c.host,b.entry))try{let a=f(b);c=await a.task,e||=a.owner,g||=c.resumed;continue}catch(a){return w(a)}try{await a.deliver(c.host.paneId,b.payload);try{await a.confirmAlive?.(c.host)}catch(a){console.error("[transcript host] live delivery registry confirmation failed",a)}return{ok:!0,outcome:e&&g?"resumed":"delivered-to-live",target:c.host.display}}catch(a){if(a instanceof l.SS)return w(a,500,"started");if(1===h)return w(a);try{let a=f(b);c=await a.task,e||=a.owner,g||=c.resumed}catch(a){return w(a)}}}return w("agent host became unavailable during delivery")}return{readTranscriptHosts:c,deliverToTranscriptHost:b=>a.serializeDelivery?a.serializeDelivery(b.entry,()=>g(b)):g(b)}}({listFiles:i.CS,panes:l.m7,ppidMap:()=>g.B.ppidMap(),agents:j.Bj,serverPid:l.lC,resumeRecords:z,panePid:l.zX,paneWindowName:async a=>(await (0,l.RZ)(a))?.windowName??null,alive:j.pl,argv:j.$U,parentPid:j.Ib,identity:g.B.processIdentity,writesPath:j.FQ,launchId:l.r$,conversationIdForPath:a=>(0,e.tk)().conversationForPath(a)?.id??null,beginResume:function(a,b,c=(0,e.tk)()){if("claude"!==a.engine&&"codex"!==a.engine)return null;let d=c.conversationForPath(a.path)??c.ensureConversation(a.engine,a.path,null),f=d.generations.at(-1);return{receipt:c.beginSpawnRequest({engine:a.engine,cwd:b.cwd,accountId:f?.accountId??null,conversationId:d.id,purpose:"resume-successor",origin:{kind:"successor"},launchProfile:b.launchProfile??f?.launchProfile}).receipt,spec:b}},spawn:l.Tk,remember:A,deliver:l.oF,confirmAlive:function(a){a.launchId&&(0,e.tk)().confirmSpawnPaneAlive(a.launchId,y(a),{engine:a.engine,cwd:a.cwd})},reconcile:function(a,b={registry:(0,e.tk)(),evidenceForHost:y}){let{registry:c,evidenceForHost:g}=b,h=c.readOnlySnapshot(),i=!1,j=new Set,l=new Set;for(let b of a){let a=g(b);if(b.launchId&&!b.primaryPath&&(c.confirmSpawnPaneAlive(b.launchId,a,{engine:b.engine,cwd:b.cwd}),i=!0),!b.primaryPath)continue;if(b.launchId){let e=function(a){for(let b of[a.primaryPath,...a.claimedPaths].filter(a=>!!a))if("claude"!==a.engine||!(0,k.X6)(b))return b;return null}(b),g=e?(0,f.sz)(b.engine,e):null;if(!e||!g){c.confirmSpawnPaneAlive(b.launchId,a,{engine:b.engine,cwd:b.cwd}),i=!0,l.add(b.paneId);continue}let m=`${g.engine}:${g.sessionId}`,n=h.receipts[b.launchId],o=h.entries[m];if(n?.state==="completed"&&n.cwd===b.cwd&&n.artifactPath===e&&n.key?.engine===g.engine&&n.key.sessionId===g.sessionId&&(0,d.isDeepStrictEqual)(n.verifiedHost,a)&&o?.artifactPath===e&&o.cwd===b.cwd&&"live"===o.status&&null===o.pendingAction&&(0,d.isDeepStrictEqual)(o.host,a)){j.add(m);continue}if(c.confirmSpawnPaneAlive(b.launchId,a,{engine:b.engine,cwd:b.cwd}),i=!0,"settled"===c.completeObservedSpawn(b.launchId,{key:g,artifactPath:e,cwd:b.cwd,accountId:null,status:"live",host:a,claimEpoch:0,claimOwner:null,pendingAction:null}).kind){j.add(m);continue}l.add(b.paneId);continue}let e=(0,f.sz)(b.engine,b.primaryPath);if(!e)continue;let m=`${e.engine}:${e.sessionId}`,n=h.entries[m],o={key:e,artifactPath:b.primaryPath,cwd:b.cwd,accountId:n?.accountId??null,status:"live",host:a,claimEpoch:n?.claimEpoch??0,claimOwner:n?.claimOwner??null,pendingAction:null};(function(a,b){if(!a)return!0;let c=void 0===b.structuredHost&&void 0!==a.structuredHost?{...b,structuredHost:a.structuredHost}:b,e={...a};return delete e.updatedAt,!(0,d.isDeepStrictEqual)(e,c)})(n,o)&&(c.upsert(o),i=!0),j.add(m)}for(let[a,b]of(i&&(h=c.readOnlySnapshot()),Object.entries(h.entries)))b.host?.kind!=="tmux"||j.has(a)||c.markUnhosted(b.key);return function(a,b){let c=new Set;for(let d of b){let b=a.entries[d];if(b){if(null!==b.pendingAction)return!0;c.add(b.artifactPath)}}return Object.values(a.receipts).some(a=>"starting"===a.state&&null!==a.artifactPath&&c.has(a.artifactPath))}(h,j)&&c.reconcileSpawnReceipts([...j].map(a=>{let[b,c]=a.split(":");return{engine:b,sessionId:c}})),{quarantinedPaneIds:[...l]}},serializeDelivery:B},o.__llvTranscriptHostDecisions??=new Map),D=C.readTranscriptHosts,E=C.deliverToTranscriptHost},85881:(a,b,c)=>{c.d(b,{Kw:()=>m});var d=c(76760),e=c.n(d),f=c(98934),g=c(36454),h=c(44123),i=c(77598),j=c.n(i),k=c(73024),l=c.n(k);globalThis.fetch;function m(a,b=Date.now()){let c=a.reason===h.e4||"credentials missing access token"===a.reason||a.reason?.startsWith("credentials unreadable:")?"failed":"live"===a.source?"authenticated":"unknown",d=a.data?[a.data.session,a.data.weekly].filter(a=>null!==a):[],e=d.filter(a=>Number.isFinite(a.usedPercent)&&a.usedPercent>=100),g=e.length>0?"exhausted":d.length>0?"available":"unknown",i=null;return e.length>0&&e.every(a=>Number.isSafeInteger(a.resetsAt)&&1e3*a.resetsAt>b)?i=new Date(1e3*Math.max(...e.map(a=>a.resetsAt))).toISOString():"number"==typeof a.retryAt&&Number.isFinite(a.retryAt)?i=new Date(a.retryAt).toISOString():"string"==typeof a.retryAt&&(i=a.retryAt),(0,f.Oh)({enabled:!0,authentication:c,limits:g,stale:"live"!==a.source,retryAt:i},b)}},85923:(a,b,c)=>{c.d(b,{MO:()=>h,QK:()=>g,Qq:()=>k,Ui:()=>i,WB:()=>l});var d=c(55643),e=c(93812);let f=/^-?[A-Za-z0-9][A-Za-z0-9._-]{0,126}$/;function g(a){if("string"!=typeof a)return null;let b=a.trim();return f.test(b)?b:null}function h(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=g(a.project);return b&&("operator"===a.source||"relocation"===a.source)?{project:b,source:a.source,setAt:"string"==typeof a.setAt?a.setAt:"1970-01-01T00:00:00.000Z",operationId:"string"==typeof a.operationId?a.operationId:""}:null}function i(a={},b){return{cwd:"",model:null,effort:null,fast:null,permissionMode:null,readOnly:null,allowSubagents:!1,title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null,...a,mcpServers:(0,d.c1)(a.mcpServers,b),plugins:(0,e.sJ)(a.plugins)}}function j(a,b){return a.pid===b.pid&&a.startIdentity===b.startIdentity}function k(a,b){if(a.kind!==b.kind||a.identity!==b.identity||a.epoch!==b.epoch)return!1;let c=a.tmuxHost,d=b.tmuxHost;return c&&d?c.kind===d.kind&&c.endpoint===d.endpoint&&j(c.server,d.server)&&c.paneId===d.paneId&&j(c.panePid,d.panePid)&&c.windowName===d.windowName&&j(c.agent,d.agent)&&c.argv.length===d.argv.length&&c.argv.every((a,b)=>a===d.argv[b]):c===d}function l(a,b){return a.operationId===b.operationId&&a.nativeId===b.nativeId&&a.path===b.path&&a.historyHash===b.historyHash&&a.continuityPaths.length===b.continuityPaths.length&&a.continuityPaths.every((a,c)=>a===b.continuityPaths[c])&&k(a.host,b.host)}},87380:(a,b,c)=>{c.d(b,{F4:()=>x,_p:()=>y,cr:()=>z,n1:()=>D,ni:()=>C});var d=c(77598),e=c.n(d),f=c(76760),g=c.n(f),h=c(61899),i=c(2208),j=c(55883),k=c(91836),l=c(50887),m=c(56514),n=c(24534),o=c(62142),p=c(89364),q=c(72166),r=c(74955),s=c(67852),t=c(34219),u=c(98918);function v(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}let w=new Set(["structured resume host claim is unavailable"]);function x(a){if("paused"!==a.state||"relaying"!==a.pausedState||!a.stateDetail)return!1;let b=(0,q.Hw)(a);return b?.relayStartedAt!=null&&null==b.relayedAt&&null==b.relayDelivery&&null==b.relayDeliveryTransport&&b.error===a.stateDetail&&w.has(a.stateDetail)}async function y(a,b){let c,d=function(a){if(void 0===a)return{ok:!0};if("string"!=typeof a)return{ok:!1};let b=a.trim();return b?{ok:!0,spec:b}:{ok:!0}}(a.spec);if(!d.ok)return{error:"spec must be a string",status:400};let f=null,h=a.headRef?.trim()??null;if(h&&(!/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(h)||h.includes("..")||h.endsWith("/")))return{error:"headRef must be a safe branch name",status:400};if(void 0!==a.targetSha){if("string"!=typeof a.targetSha||!/^[0-9a-f]{40}$/i.test(a.targetSha.trim()))return{error:"targetSha must be an exact commit SHA",status:400};f=a.targetSha.trim().toLowerCase()}let l=function(a){let b=(0,u.Vd)();if(a.preset){let c=b.find(b=>b.name===a.preset);return c?{implementer:{...c.implementer},reviewer:{...c.reviewer}}:null}let c=v(a.roles?.implementer),d=v(a.roles?.reviewer);return c&&d?{implementer:c,reviewer:d}:null}(a);if(!l)return{error:"invalid flow roles or preset",status:400};if(l.reviewer.model){let a=(0,i.RC)(l.reviewer.engine,l.reviewer.model);if("error"in a)return{error:a.error,status:400};l.reviewer.model=a.model}let m=(0,j.tk)(),o=a.implementerConversationId?.startsWith("conversation_")?a.implementerConversationId:null;if(a.implementerConversationId&&!o)return{error:"implementer conversation identity is invalid",status:400};let p=o?m.conversation(o):null,r=b.find(b=>b.path===a.implementerPath),w=o?b.find(a=>a.conversationId===o):void 0,x=[...new Set((o?[a.implementerPath,p?.generations.at(-1)?.path,w?.path]:[]).filter(a=>!!a))].find(a=>null!==(0,k.tX)(a))??r?.path??null,y=x?b.find(a=>a.path===x)??w:void 0;if(!x)return{error:"implementer transcript is unknown",status:404};let z=p??m.conversationForPath(x)??m.ensureConversation(l.implementer.engine,x,null);if(z.engine!==l.implementer.engine)return{error:"implementer engine does not match its durable conversation",status:400};if(y&&"claude-projects"!==y.root&&"codex-sessions"!==y.root)return{error:"implementer must be a Claude or Codex session",status:400};if(y&&"claude"!==y.engine&&"codex"!==y.engine)return{error:"implementer must use the Claude or Codex engine",status:400};let A=(0,k.tX)(x);if(!A)return{error:"could not determine the session working directory",status:409};let B=y?.project??(0,n.hY)(A)??g().basename(A),C="merge-base"===a.baseMode?"merge-base":"head",D="string"==typeof a.baseRef&&a.baseRef.trim()?{ok:!0,sha:a.baseRef.trim()}:(0,s.JN)(A,C);if(!D.ok)return{error:D.error,status:409};let E=(0,u.mL)();if(E.find(a=>(a.implementerConversationId===z.id||a.implementerPath===x)&&null===a.closedAt&&"closed"!==a.state))return{error:"implementer already has an active flow",status:409};let F={id:e().randomUUID().slice(0,8),template:"implement-review-loop",project:B,cwd:A,implementerPath:x,implementerConversationId:z.id,roles:l,reviewerFallback:"codex"===l.reviewer.engine?(0,u.ay)():null,baseRef:D.sha,headRef:h,targetSha:f,...d.spec?{spec:d.spec}:{},baseMode:C,mode:"manual"===a.mode?"manual":"auto",reviewerMode:"pane"===a.reviewerMode?"pane":"headless",roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>0?Math.min(a.roundLimit,50):5,state:"waiting_ready",pausedState:null,stateDetail:null,mergeEvidence:(c=(0,s.NN)(A))?{...c,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,kickoffDelivery:null,hostClaim:null,rounds:[],createdAt:(0,q.Ec)(),closedAt:null};if(m.rememberMembership(z.id,{kind:"flow",containerId:F.id,role:"implementer",slot:"implementer",stageId:null,stageOrder:0,round:null,parentConversationId:null}),E.push(F),(0,u.tu)(E),!1!==a.deliverKickoff)try{let a=await (0,q.iq)(F,new Map(b.map(a=>[a.path,a])),(0,t.SB)(F.spec));F.kickoffDelivery={path:a,deliveredAt:(0,q.Ec)()},(0,u.tu)(E)}catch(a){F.state="paused",F.pausedState="waiting_ready",F.stateDetail=a instanceof Error?a.message:String(a),(0,u.tu)(E)}return{flow:F}}let z=2e3;function A(a){if("string"!=typeof a.note)return;let b=a.note.trim();return b?b.slice(0,z):null}async function B(a,b){if("pane"!==a.reviewerMode)return await (0,r.OZ)(a.id,b.n,b);try{let a=b.reviewerPane;if(a){let b=await (0,p.RZ)(a.paneId);b&&b.windowName===a.windowName&&!(0,o.g2)(b.command)&&await (0,p.VT)(a.paneId)}else if(b.reviewerPath){let a=b.reviewerConversationId?.startsWith("conversation_")?(0,j.tk)().conversation(b.reviewerConversationId)?.generations.at(-1)?.path??b.reviewerPath:(0,j.tk)().canonicalPath(b.reviewerPath),c=await (0,l.AB)(a);null!==c&&await (0,p.VT)(c)}}catch{}return!0}async function C(a){let b=(0,u.mL)().find(b=>b.id===a);if(!b)return{error:"flow not found",status:404};let c=(0,q.Hw)(b),d=c&&null===c.verdict&&!c.error?{n:c.n,reviewerBindingId:c.reviewerBindingId}:null;if(null!==d&&!await B(b,c))return{error:"reviewer process group did not terminate",status:409};let e=null===d?null:{round:d.n};return await (0,u.ke)((b,c)=>{let f=b.find(b=>b.id===a);if(!f)return{error:"flow not found",status:404};if("closed"===f.state)return{flow:f,stoppedReviewer:e};let g=(0,q.Hw)(f);return null!==d&&(g?.n!==d.n||g.reviewerBindingId!==d.reviewerBindingId)?{error:"flow changed during reviewer teardown",status:409}:(null!==d&&g&&null===g.verdict&&!g.error&&(g.error="flow closed by user",g.terminalAt=(0,q.Ec)()),f.state="closed",f.closedAt=(0,q.Ec)(),f.stateDetail=null,c(),{flow:f,stoppedReviewer:e})})}function D(a,b,c=m.a){let d=(0,u.mL)(),f=d.find(b=>b.id===a);if(!f)return{error:"flow not found",status:404};let g=(0,q.Hw)(f);if("pause"===b.action)"paused"!==f.state&&"closed"!==f.state&&(f.pausedState=f.state,f.state="paused",f.stateDetail=(0,m.P)("paused",c));else if("resume"===b.action)"paused"===f.state&&(g&&x(f)&&(g.relayStartedAt=null,g.relayDeliveryTransport=null,g.relayRetryAt=null,g.relayRetryRequiresIdempotency=!1),f.state=f.pausedState&&"paused"!==f.pausedState?f.pausedState:"waiting_ready",f.pausedState=null,f.stateDetail=(0,m.P)("resumed",c));else if("set-mode"===b.action){if("auto"!==b.mode&&"manual"!==b.mode)return{error:"mode must be auto or manual",status:400};f.mode=b.mode}else if("advance"===b.action){let a=A(b);if("waiting_ready"===f.state)f.rounds.push((0,q.xz)(f,"button",a??null)),f.state="manual"===f.mode?"spawn_pending":"spawning";else if("spawn_pending"===f.state)void 0!==a&&g&&(g.readyNote=a),f.state="spawning";else if("relay_pending"===f.state)f.state="relaying";else{if("fixing"!==f.state||!g||"structured"!==g.relayDeliveryTransport||null==g.relayedAt||null!==(0,q.SZ)(f))return{error:"flow cannot advance from its current state",status:409};Object.assign(g,{relayDelivery:null,relayedAt:null,relayPendingSettlement:null,relayStartedAt:null,relayRetryCount:0,relayRetryAt:null,relayRetryRequiresIdempotency:!0,error:null}),f.state="relaying"}f.stateDetail=null}else if("retry-round"===b.action){if("needs_decision"!==f.state||!g)return{error:"flow cannot retry from its current state",status:409};(0,r.T)(f.id,g.n,g),(0,r.gn)(f.id,g.n);let a=A(b);Object.assign(g,{reviewerPath:null,reviewerConversationId:null,reviewerBindingId:e().randomUUID(),accountId:null,attemptedAccounts:[],autoRetryCount:0,sessionId:null,reviewerPid:null,reviewerIdentity:null,reviewerPane:null,findingsPath:null,verdict:null,findingsCount:null,reviewerRole:{...f.roles.reviewer},readyNote:void 0===a?g.readyNote:a,reviewHeadSha:null,startedAt:(0,q.Ec)(),spawnStartedAt:null,launchId:null,launchLeaseUntil:null,relayStartedAt:null,relayRetryCount:0,relayDeliveryAttempt:0,relayDeliveryTransport:null,relayRetryAt:null,relayRetryRequiresIdempotency:!1,relayDelivery:null,reviewedAt:null,terminalAt:null,relayedAt:null,error:null}),f.state="manual"===f.mode?"spawn_pending":"spawning",f.stateDetail=null}else if("extend"===b.action){let a=Number.isInteger(b.rounds)&&b.rounds&&b.rounds>0?Math.min(b.rounds,20):1;f.roundLimit>0&&(f.roundLimit+=a),"needs_decision"===f.state&&(f.state="waiting_ready",f.stateDetail=null)}else if("set-round-limit"===b.action){let a=b.rounds;if(!Number.isInteger(a)||void 0===a||a<0||a>50)return{error:"rounds must be an integer 0–50 (0 = unlimited)",status:400};f.roundLimit=0===a?0:Math.max(a,f.rounds.length),"needs_decision"===f.state&&"round limit reached"===f.stateDetail&&(0===f.roundLimit||f.roundLimit>f.rounds.length)&&(f.state="waiting_ready",f.stateDetail=null)}else if("another-round"===b.action){if("done_comment"!==f.state)return{error:"flow is not waiting for another round",status:409};f.closedAt=null,f.state="waiting_ready",f.stateDetail=null}else if("set-roles"===b.action){if("closed"===f.state)return{error:"flow is closed",status:409};let a=b.roles&&"object"==typeof b.roles&&!Array.isArray(b.roles)?b.roles.reviewer:void 0;if(void 0===a)return{error:"reviewer role override is required",status:400};let c=function(a,b){if(!b||"object"!=typeof b||Array.isArray(b))return{error:"invalid reviewer role override"};let c={...a};if(void 0!==b.engine){if("claude"!==b.engine&&"codex"!==b.engine)return{error:"invalid reviewer role override"};c.engine=b.engine}if(void 0!==b.model){if(null!==b.model&&"string"!=typeof b.model)return{error:"invalid reviewer role override"};c.model="string"==typeof b.model&&b.model.trim()?b.model.trim():null}if(void 0!==b.effort){if(null!==b.effort&&"string"!=typeof b.effort)return{error:"invalid reviewer role override"};c.effort="string"==typeof b.effort&&b.effort.trim()?b.effort.trim():null}if(c.model){let a=(0,i.RC)(c.engine,c.model);if("error"in a)return a;c.model=a.model}return c.effort&&!(0,h.z9)(c.engine,c.effort)?{error:"invalid reviewer role override"}:{role:c}}(f.roles.reviewer,a);if("error"in c)return{error:c.error,status:400};let d=c.role;f.roles={...f.roles,reviewer:d};let e="spawn_pending"===f.state||"paused"===f.state&&"spawn_pending"===f.pausedState?g:null;e&&null==e.spawnStartedAt&&(e.reviewerRole={...d})}return g&&"spawning"===f.state&&(g.error=null),(0,u.tu)(d),{flow:f}}},88417:(a,b,c)=>{c.d(b,{CC:()=>l,Hy:()=>j,Zx:()=>g,gy:()=>i,h1:()=>k,in:()=>f,kW:()=>n,rM:()=>o,t6:()=>h});var d=c(77598),e=c.n(d);let f=["image/png","image/jpeg","image/gif","image/webp"],g="structured-image-v1",h="The selected Codex model does not advertise image input through app-server.",i="Structured image protocol is unavailable for this host.";class j extends Error{constructor(){super("structured message text exceeds the 32000-byte envelope bound"),this.name="StructuredEnvelopeTooLargeError"}}function k(a){if(Buffer.byteLength(a,"utf8")>32e3)throw new j}function l(a){let b="image/jpg"===a.toLowerCase()?"image/jpeg":a.toLowerCase();return f.includes(b)?b:null}function m(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b="string"==typeof a.mime?l(a.mime):null;return b&&"string"==typeof a.sha256&&/^[a-f0-9]{64}$/.test(a.sha256)&&Number.isSafeInteger(a.bytes)&&!(a.bytes<=0)?{sha256:a.sha256,mime:b,bytes:a.bytes}:null}function n(a,b){if(!Array.isArray(a)||a.length>b)return null;let c=a.map(m);return c.every(a=>null!==a)?c:null}function o(a,b){let c,d={text:a,images:b.map(a=>({...a}))};if(!d.text.trim()&&0===d.images.length)throw Error("message content is required");return{content:d,contentDigest:(c=JSON.stringify({text:d.text,images:d.images.map(({sha256:a,mime:b,bytes:c})=>({sha256:a,mime:b,bytes:c}))}),e().createHash("sha256").update(c).digest("hex"))}}},88602:(a,b,c)=>{c.d(b,{o7:()=>i,sS:()=>k});var d=c(77030),e=c.n(d),f=c(29966);class g extends Error{constructor(a,b){super(a),this.code=b}}let h=new Set(["runtime host request timed out","runtime host is unavailable","runtime host response exceeds limit","runtime host returned invalid JSON","runtime host response id mismatch"]);function i(a){return a instanceof g&&void 0===a.code&&h.has(a.message)}class j{constructor(a,b=3e3,c=12e4,d=1e4){this.socketPath=a,this.timeoutMs=b,this.deploymentTimeoutMs=c,this.snapshotTimeoutMs=d}snapshot(a){return this.call("snapshot",void 0,this.snapshotTimeoutMs,a)}events(a,b){return this.call("events",{after:a},this.timeoutMs,b)}waitEvents(a,b=15e3,c){return this.call("wait",{after:a,timeoutMs:b},b+1e3,c)}append(a){return this.call("append",{event:a})}operation(a){return this.call("operation",{event:a})}command(a){return this.call("command",{command:a})}operationStatus(a,b={}){return this.call("operation-status",{operationId:a,...b.currentRetryLeaf?{currentRetryLeaf:!0}:{}})}retryOperation(a,b,c={}){return this.call("operation-retry",{operationId:a,...void 0!==b?{nextIdempotencyKey:b}:{},...void 0!==c.requireHostedConversationId?{requireHostedConversationId:c.requireHostedConversationId}:{}})}producerCursor(a,b){return this.call("producer-cursor",{producerKind:a,eventKeyPrefix:b})}effectBatch(a,b=0){let c={...a?{kinds:[...a]}:{},...0!==b?{afterEventSeq:b}:{}};return this.call("effect-batch",Object.keys(c).length>0?c:void 0)}transitionOperation(a,b,c){return this.call("operation-transition",{operationId:a,status:b,...c?{details:c}:{}})}requestViewerDeployment(a){return this.call("viewer-deployment-request",a,this.deploymentTimeoutMs)}readViewerDeployment(a){return this.call("viewer-deployment-read",{deploymentId:a})}admitMcpHealthProbe(a){return this.call("mcp-health-probe-admission",{capability:a})}call(a,b,c=this.timeoutMs,d){return new Promise((f,h)=>{let i={id:crypto.randomUUID(),method:a,...b?{params:b}:{}},j=e().createConnection(this.socketPath),k="",l=!1,m=setTimeout(()=>n(new g("runtime host request timed out")),c),n=(a,b)=>{l||(l=!0,clearTimeout(m),d?.removeEventListener("abort",o),j.destroy(),a?h(a):f(b))},o=()=>n(new g("runtime host request cancelled"));if(d?.aborted)return o();d?.addEventListener("abort",o,{once:!0}),j.once("error",()=>n(new g("runtime host is unavailable"))),j.on("data",a=>{if(k+=String(a),Buffer.byteLength(k)>0x4000000)return n(new g("runtime host response exceeds limit"));let b=k.indexOf("\n");if(!(b<0))try{let a=JSON.parse(k.slice(0,b));if(a.id!==i.id)return n(new g("runtime host response id mismatch"));n(a.ok?void 0:new g(a.error??"runtime host rejected request",a.code),a.result)}catch{n(new g("runtime host returned invalid JSON"))}}),j.once("connect",()=>j.write(JSON.stringify(i)+"\n"))})}}function k(a=process.env){let b=(0,f.S0)(a);return b?new j(b):null}},89364:(a,b,c)=>{c.d(b,{SS:()=>Y,Am:()=>aB,yq:()=>aa,xs:()=>Q,IJ:()=>aA,HZ:()=>as,XW:()=>at,VT:()=>ae,B$:()=>P,aI:()=>T,RZ:()=>ar,r$:()=>an,m7:()=>R,zX:()=>_,ZB:()=>aw,$o:()=>aq,u1:()=>S,MA:()=>ap,EW:()=>$,V1:()=>ax,oF:()=>X,Tk:()=>az,WH:()=>B,a0:()=>C,lC:()=>al,PB:()=>M,WS:()=>V});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(4351),l=c(14648),m=c(55883),n=c(50920),o=c(33149),p=c(7461);let q=(0,n.oy)();var r=c(30277),s=c(65377);c(25695);var t=c(36385),u=c(59376),v=c(52530),w=c(62142);let x="agents",y=(0,n.BQ)("legacy-tmux-migration-complete"),z=null;function A(){var a;let b,c;return a={configuredTmpdir:process.env.TMUX_TMPDIR||"/tmp",externalFlag:process.env.LLV_LEGACY_TMUX_EXTERNAL,migrationComplete:h().existsSync(y),uid:process.getuid?.()??0},b=`/run/user/${a.uid}/agent-log-viewer`,c="1"===a.externalFlag,a.migrationComplete&&(!c||a.configuredTmpdir!==b)?{external:c,tmuxTmpdir:a.configuredTmpdir,health:{status:"degraded",code:"migration-marker-endpoint-mismatch",configuredTmpdir:a.configuredTmpdir,expectedTmpdir:b,message:`A migration completion marker exists while the Viewer is using ${a.configuredTmpdir}. Legacy tmux delivery remains active; remove the stale marker or complete the supervisor migration.`}}:c&&a.configuredTmpdir!==b?{external:c,tmuxTmpdir:a.configuredTmpdir,health:{status:"degraded",code:"external-endpoint-mismatch",configuredTmpdir:a.configuredTmpdir,expectedTmpdir:b,message:`External tmux mode is enabled with ${a.configuredTmpdir}. Set TMUX_TMPDIR=${b} and redeploy the Viewer.`}}:{external:c,tmuxTmpdir:a.configuredTmpdir,health:{status:"healthy"}}}function B(){return A().tmuxTmpdir}function C(){return A().health}function D(a,b){return{kind:"tmux-tmpdir",tmuxTmpdir:a,socketName:"default",socketPath:j().join(a,`tmux-${b}`,"default")}}function E(){return D(B(),process.getuid?.()??0)}function F(a,b,c=E()){return new Promise((e,f)=>{let g=(0,d.spawn)("tmux",a,{stdio:["pipe","pipe","pipe"],env:{...(0,s.Fd)(process.env),TMUX_TMPDIR:c.tmuxTmpdir}}),h="",i="";g.stdout.on("data",a=>h+=a.toString("utf8")),g.stderr.on("data",a=>i+=a.toString("utf8")),g.on("error",f),g.on("close",a=>e({code:a,stdout:h,stderr:i})),void 0!==b?g.stdin.end(b):g.stdin.end()})}async function G(a,b,c){let d=await c.runTmux(["display-message","-p","-t",a,"#{pid} #{pane_id} #{pane_pid} #{session_name}:#{window_index}.#{pane_index} #{window_name} #{pane_current_command}"],void 0,b).catch(()=>null);return d&&0===d.code?function(a,b){let[c="",d="",e="",f="",g="",h=""]=a.trim().split(" "),i=Number(c),j=Number(e);return Number.isInteger(i)&&!(i<=0)&&/^%\d+$/.test(d)&&Number.isInteger(j)&&!(j<=0)&&f?{serverPid:i,serverStartIdentity:b(i),paneId:d,panePid:j,paneStartIdentity:b(j),display:f,windowName:g,command:h}:null}(d.stdout,c.processIdentity):null}function H(a,b,c){return null!==a.startIdentity&&null!==c&&a.pid===b&&a.startIdentity===c}async function I(a,b,c={runTmux:F,processIdentity:a=>r.B.processIdentity(a)}){let d=await G(a.paneId,b,c);return d&&d.paneId===a.paneId&&H(a.server,d.serverPid,d.serverStartIdentity)&&H(a.panePid,d.panePid,d.paneStartIdentity)?d:null}async function J(a,b={runTmux:F,processIdentity:a=>r.B.processIdentity(a)}){let c=await b.runTmux(["set-environment","-gu",s.Cy],void 0,a.endpoint);if(0!==c.code)throw Error(c.stderr.trim()||"could not isolate tmux spawn environment");let d=await b.runTmux(["list-panes","-a","-F","#{pane_id}"],void 0,a.endpoint);if(0!==d.code)throw Error(d.stderr.trim()||"could not snapshot tmux panes before spawn");let e=new Set(d.stdout.split("\n").map(a=>a.trim()).filter(Boolean));if([...e].some(a=>!/^%\d+$/.test(a)))throw Error("tmux returned an invalid pre-spawn pane listing");let f=await b.runTmux(["new-window","-d","-P","-F","#{pane_id}","-t",a.session+":","-n",a.windowName,"-c",a.cwd],void 0,a.endpoint);if(0!==f.code)throw Error(f.stderr.trim()||"could not open tmux window");let g=f.stdout.split("\n").map(a=>a.trim()).filter(Boolean),h=1===g.length?g[0]:"";if(!/^%\d+$/.test(h))throw Error("tmux returned an invalid pane id");if(e.has(h))throw Error("tmux new-window returned a pre-existing pane id");let i=await G(h,a.endpoint,b);if(!i)throw Error("tmux could not verify the created pane");if(i.paneId!==h)throw Error("tmux created pane identity changed before verification");if(i.windowName!==a.windowName)throw Error("tmux created pane has an unexpected window name");if(!H(a.server,i.serverPid,i.serverStartIdentity))throw Error("tmux server changed while creating the spawn pane");if("linux"===r.B.name&&(null===i.serverStartIdentity||null===i.paneStartIdentity))throw Error("tmux process start identity is unavailable");return{endpoint:a.endpoint.tmuxTmpdir,server:{pid:i.serverPid,startIdentity:i.serverStartIdentity},paneId:h,panePid:{pid:i.panePid,startIdentity:i.paneStartIdentity},target:h,display:i.display}}function K(a){try{return h().realpathSync(a)}catch{return j().resolve(a)}}function L(a,b,c){let d=new Set,e=a;for(let a=0;null!==e&&a<64;a+=1){if(e===b)return a;if(d.has(e))break;d.add(e),e=c(e)}return null}async function M(a){if(null===a.server.startIdentity||null===a.panePid.startIdentity||null===a.agent.startIdentity)return!1;let b=D(a.endpoint,process.getuid?.()??0),c={endpoint:a.endpoint,server:a.server,paneId:a.paneId,panePid:a.panePid,target:a.paneId},d=await I(c,b);return!!d&&d.windowName===a.windowName&&!!(0,v.pl)(a.agent.pid)&&r.B.processIdentity(a.agent.pid)===a.agent.startIdentity&&!!N((0,v.$U)(a.agent.pid),a.argv)&&null!==L(a.agent.pid,a.panePid.pid,v.Ib)}function N(a,b){return a.length===b.length&&a.every((a,c)=>a===b[c])}function O(a,b){return!b.pidAlive(a.pid)||null!==a.startIdentity&&b.processIdentity(a.pid)!==a.startIdentity}async function P(a,b={}){if(null===a.server.startIdentity||null===a.panePid.startIdentity||null===a.agent.startIdentity)return!1;let c={runTmux:F,processIdentity:a=>r.B.processIdentity(a),pidAlive:v.pl,argv:v.$U,parentPid:v.Ib,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=D(a.endpoint,process.getuid?.()??0),e={endpoint:a.endpoint,server:a.server,paneId:a.paneId,panePid:a.panePid,target:a.paneId},g=await I(e,d,c);if(!g||g.windowName!==a.windowName||!c.pidAlive(a.agent.pid)||c.processIdentity(a.agent.pid)!==a.agent.startIdentity||!N(c.argv(a.agent.pid),a.argv)||null===L(a.agent.pid,a.panePid.pid,c.parentPid))return!1;let h=`#{&&:#{==:#{pid},${a.server.pid}},#{&&:#{==:#{pane_id},${a.paneId}},#{==:#{pane_pid},${a.panePid.pid}}}}`,i=`llv-host-mismatch-${f().randomUUID()}`,j=await c.runTmux(["if-shell","-t",a.paneId,"-F",h,`kill-pane -t ${a.paneId}`,`display-message -p ${i}`],void 0,d);if(0!==j.code||j.stdout.includes(i))return!1;for(let b=0;b<c.maxVerifyAttempts;b+=1){if(null===await G(a.paneId,d,c)&&O(a.panePid,c)&&O(a.agent,c))return!0;b+1<c.maxVerifyAttempts&&await c.sleep(25)}return!1}async function Q(a,b={}){let c=D(a.endpoint,process.getuid?.()??0),d=b.runTmux??F,e={tmuxServerPid:a.server.pid,tmuxServerStartIdentity:a.server.startIdentity,paneId:a.paneId,panePid:a.panePid.pid,paneStartIdentity:a.panePid.startIdentity},g=await ad(e,c,b);if(!g.ok)return"tmux-unavailable"===g.reason?"unverifiable":"absent";let h=`#{&&:#{==:#{pid},${a.server.pid}},#{&&:#{==:#{pane_id},${a.paneId}},#{==:#{pane_pid},${a.panePid.pid}}}}`,i=`llv-host-mismatch-${f().randomUUID()}`,j=await d(["if-shell","-t",a.paneId,"-F",h,`kill-pane -t ${a.paneId}`,`display-message -p ${i}`],void 0,c).catch(()=>null);if(!j||0!==j.code)return"unverifiable";if(!j.stdout.includes(i))return"cancelled";let k=await ad(e,c,b);return k.ok||"tmux-unavailable"===k.reason?"unverifiable":"absent"}async function R(a=!1){let b,c=Date.now();if(!a&&z&&c-z.at<12e3)return z.observation;let d=new Map;try{b=await F(["list-panes","-a","-F","#{session_name}:#{window_index}.#{pane_index} #{pane_id} #{pane_pid} #{window_name}"])}catch(a){return{kind:"failure",error:a instanceof Error?a.message:String(a)}}if(0!==b.code){let a=b.stderr.trim()||`tmux list-panes exited ${b.code??"without a status"}`;return/no server running on|failed to connect to server/i.test(a)?{kind:"no-server"}:{kind:"failure",error:a}}for(let a of b.stdout.split("\n")){let[b="",c="",e="",f=""]=a.split(" "),g=Number(e.trim());b.trim()&&c.startsWith("%")&&Number.isInteger(g)&&g>0&&d.set(g,{target:b.trim(),paneId:c.trim(),windowName:f.trim()})}let e={kind:"available",panes:d};return z={at:c,observation:e},e}async function S(a){if(!Number.isInteger(a)||a<=0)return null;let b=await R();if("available"!==b.kind)return null;let{panes:c}=b;if(0===c.size)return null;let d=new Set,e=a;for(let a=0;a<64&&null!==e&&e>1;a+=1){let a=c.get(e);if(a)return a.target;if(d.has(e)||(0,v.Vt)((0,v.$U)(e)))break;d.add(e),e=(0,v.Ib)(e)}return null}async function T(){var a=await (0,u.CS)();let b=new Set;for(let c of a)null!==c.pid&&"running"===c.proc&&(0,v.pl)(c.pid)&&b.add(c.pid);return b}let U=new Map;async function V(a,b){let c=(U.get(a)??Promise.resolve()).then(b,b);U.set(a,c.catch(()=>void 0));try{return await c}finally{U.get(a)!==c&&U.size>256&&U.clear()}}async function W(a,b,c){await c();let d=await av(a,b);if(null===d)throw Error("tmux pane is unavailable");if((0,w.g2)(d))throw(0,o.$s)("gate",{target:a,result:"error",reason:"shell_prompt"}),Error("pane has no agent (plain shell) — message was not sent");for(let d=0;d<3;d+=1){await c();let d=await aw(a,b);if(null!==(0,w.fm)(d))throw(0,o.$s)("gate",{target:a,result:"error",reason:"select_dialog"}),Error("agent is waiting for a choice in the pane — answer before sending a new message");let e=(0,w._1)(d);if(null!==e)throw(0,o.$s)("gate",{target:a,result:"error",reason:e}),Error("rate_limit"===e?"agent hit a rate limit — message was not sent":"agent is waiting for confirmation in the pane — answer before sending a new message");let f=(0,w.ye)(d);if(null!==f){(0,o.$s)("gate",{target:a,result:"ok",reason:f}),await c(),await F(["send-keys","-t",a,"Enter"],void 0,b),await au(700);continue}return}}async function X(a,b){let c=E(),d=await G(a,c,{runTmux:F,processIdentity:a=>r.B.processIdentity(a)});if(!d)throw Error("tmux pane is unavailable");let e={endpoint:c.tmuxTmpdir,server:{pid:d.serverPid,startIdentity:d.serverStartIdentity},paneId:d.paneId,panePid:{pid:d.panePid,startIdentity:d.paneStartIdentity},target:d.paneId,display:d.display},f=async()=>{if(!await I(e,c))throw Error("tmux server or pane identity changed during delivery")};await V(d.paneId,async()=>{try{await W(d.paneId,c,f),await Z(d.paneId,b,c,f),(0,o.$s)("send",{target:d.paneId,result:"ok",meta:{bytes:b.length,display:d.display}})}catch(a){throw(0,o.$s)("send",{target:d.paneId,result:"error",reason:a instanceof Error?a.message:String(a)}),a}})}class Y extends Error{constructor(a){super(a instanceof Error?a.message:String(a),{cause:a}),this.name="TmuxDeliveryUncertainError"}}async function Z(a,b,c,d){let e=`viewer-${Date.now()}-${Math.floor(1e6*Math.random())}`,f=!1;try{await d();let g=await F(["load-buffer","-b",e,"-"],Buffer.from(b,"utf8"),c);if(0!==g.code)throw Error(g.stderr.trim()||"could not load tmux buffer");await d();let h=await F(["paste-buffer","-d","-p","-b",e,"-t",a],void 0,c);if(0!==h.code)throw Error(h.stderr.trim()||"could not paste text into pane");f=!0,await au(250),await d();let i=await F(["send-keys","-t",a,"Enter"],void 0,c);if(0!==i.code)throw Error(i.stderr.trim()||"could not press Enter");let j=b.split("\n").map(a=>a.trim()).find(Boolean)?.slice(0,32)??"";for(let b=0;b<4;b+=1){await au(400),await d();let b=(0,w.dC)(await aw(a,c));if(!(""!==j&&b.includes(j)||b.includes("[Pasted text")))return;await d();let e=await F(["send-keys","-t",a,"Enter"],void 0,c);if(0!==e.code)throw Error(e.stderr.trim()||"could not press Enter")}}catch(a){if(f)throw new Y(a);throw a}}async function $(a){let b=await F(["send-keys","-t",a,"Escape"]);if((0,o.$s)("interrupt",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not send Escape")}async function _(a){let b=await F(["display-message","-p","-t",a,"#{pane_pid}"]).catch(()=>null),c=b&&0===b.code?Number(b.stdout.trim()):NaN;return Number.isInteger(c)&&c>0?c:null}function aa(a){let b=new Map,c=a=>"portable"===r.B.name?null:(b.has(a)||b.set(a,r.B.processIdentity(a)),b.get(a)??null);return new Map(a.map(a=>[a.paneId,{...a,tmuxServerStartIdentity:c(a.tmuxServerPid),paneStartIdentity:c(a.panePid)}]))}function ab(a){return/[\r\n\0]/.test(a)}function ac(a){return`'${a.replaceAll("'","'\\''")}'`}async function ad(a,b=E(),c={}){var d;let e=c.runTmux??F,f=c.processIdentity??(a=>r.B.processIdentity(a)),g=await e(["display-message","-p","#{pid}"],void 0,b).catch(()=>null),h=g&&0===g.code?Number(g.stdout.trim()):NaN;if(!g||0!==g.code||!Number.isInteger(h)||h<=0)return{ok:!1,reason:"tmux-unavailable"};let i=f(h);if(h===a.tmuxServerPid&&null!==a.tmuxServerStartIdentity&&null===i)return{ok:!1,reason:"tmux-unavailable"};if(h!==a.tmuxServerPid||null!==a.tmuxServerStartIdentity&&i!==a.tmuxServerStartIdentity)return{ok:!1,reason:"server-restarted"};let j=await e(["display-message","-p","-t",a.paneId,"#{pid} #{pane_id} #{pane_pid} #{session_name}:#{window_index}.#{pane_index}"],void 0,b).catch(()=>null);if(!j)return{ok:!1,reason:"tmux-unavailable"};if(0!==j.code)return{ok:!1,reason:/can't find pane/i.test(`${j.stderr}
298
+ `).run(this.options.collection,b,process.pid,j.B.processIdentity(process.pid),Date.now()),a.exec("COMMIT"),!0}catch(b){if(D(a),E(b))return!1;throw b}}acquireLeaseSync(){let a=z(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;Atomics.wait(r,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}async acquireLease(){let a=z(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}releaseLeaseSync(a){let b=z(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(D(b),!E(a))throw a;Atomics.wait(r,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}async releaseLease(a){let b=z(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(D(b),!E(a))throw a;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}}},80026:(a,b,c)=>{c.d(b,{y:()=>d});function d(a){return void 0!==a.default?a.default:"integer"===a.kind?a.min??1:"select"===a.kind?a.options?.[0]??"":""}},80502:(a,b,c)=>{c.d(b,{Zp:()=>G,f8:()=>z,oe:()=>F});var d=c(57975),e=c(85923),f=c(4116),g=c(31973),h=c(92233),i=c(8164),j=c(59376),k=c(52530),l=c(3302),m=c(89364),n=c(26200);let o=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,p={scanner:3,resume:2,argv:1},q=globalThis;function r(a){return a.slice(a.lastIndexOf("/")+1).match(o)?.[0]?.toLowerCase()??null}function s(a){for(let b=a.length-1;b>=0;b-=1){let c=a[b]?.match(o)?.[0];if(c)return c.toLowerCase()}return null}function t(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function u(a){return[...a].sort((a,b)=>p[b.source]-p[a.source]||a.pathname.localeCompare(b.pathname))[0]??null}function v(a,b,c){let d=new Set,e=a;for(let a=0;null!==e&&a<64;a+=1){if(e===b)return a;if(d.has(e))break;d.add(e),e=c.get(e)??null}return -1}function w(a,b,c){let d=c(b);return a.conflicts?.find(a=>null!==d&&a.conversationId===d||a.paths.includes(b))??null}class x extends Error{constructor(a){super(a.quarantinedPaneIds?.length?"conversation has a quarantined live pane":"conversation has multiple live panes"),this.name="TranscriptHostConflictError"}}function y(a,b=500,c){let d=a instanceof x?409:b;return{ok:!1,outcome:"failed",error:a instanceof Error?a.message:String(a),status:d,...c?{actuation:c}:{}}}function z(a){return async function(b,c,d){let e,f=a.conversationIdForPath??(()=>null),[g,h,j]=await Promise.all([c??a.listFiles(),a.panes(b),a.resumeRecords()]),k=j?.serverPid??await a.serverPid();if("failure"===h.kind&&null!==k)return{hosts:[],observation:"failure",observationError:h.error,conflicts:[],canonicalFor:()=>null};if(null===k||"no-server"===h.kind)return await a.reconcile?.([]),{hosts:[],observation:"no-server",conflicts:[],canonicalFor:()=>null};if("available"!==h.kind||0===h.panes.size)return await a.reconcile?.([]),{hosts:[],observation:"available",conflicts:[],canonicalFor:()=>null};let{panes:l}=h,m=d??a.ppidMap(),n=a.agents(b),o=function(a){let b=new Map;for(let c of a){if(null===c.pid||"running"!==c.proc)continue;let a=b.get(c.pid);a&&(!a.parent||c.parent)||b.set(c.pid,c)}return b}(g),q=function(a){let b=new Map;for(let c of a){let a=r(c.path);if(!a)continue;let d=b.get(a);d&&(!d.parent||c.parent)||b.set(a,c)}return b}(g),x=[];for(let[b,c]of l){let d=new Set((0,i.mO)(b,m));for(let e of n){if(!d.has(e.pid))continue;let f=function(a,b,c,d,e,f,g){let h=[],i=d.get(a.pid),j=s(a.argv),k=i?r(i.path):null;if(i?.engine===a.engine&&(null!==j&&null!==k&&j===k||g(a.pid,i.path))&&h.push({pathname:i.path,source:"scanner"}),f)for(let[d,e]of f.records)e.paneId===b.paneId&&e.panePid===c&&e.engine===a.engine&&h.push({pathname:d,source:"resume"});let l=j?e.get(j):void 0;return l?.engine===a.engine&&h.push({pathname:l.path,source:"argv"}),h}(e,c,b,o,q,j,a.writesPath??(()=>!1)),g=u(f);x.push({tmuxServerPid:k,paneId:c.paneId,panePid:b,agentPid:e.pid,display:c.target,windowName:c.windowName??"",engine:e.engine,cwd:e.cwd,agentArgv:[...e.argv],agentIdentity:a.identity(e.pid),launchId:a.launchId?await a.launchId(c.paneId):null,claimedPaths:[...new Set(f.map(a=>a.pathname))],primaryPath:g?.pathname??null,claims:f})}}let y=(e=new Map,x.forEach((a,b)=>{let c=s(a.agentArgv),d=c?`${a.paneId}:${a.engine}:${c}`:`${a.paneId}:${a.engine}:pid:${a.agentPid}`,f=e.get(d)??{firstIndex:b,hosts:[]};f.hosts.push(a),e.set(d,f)}),[...e.values()].sort((a,b)=>a.firstIndex-b.firstIndex).flatMap(a=>{if(1===a.hosts.length)return a.hosts;let b=[...a.hosts].sort((a,b)=>v(b.agentPid,b.panePid,m)-v(a.agentPid,a.panePid,m)||b.agentPid-a.agentPid)[0];if(!a.hosts.every(a=>v(b.agentPid,a.agentPid,m)>=0))return a.hosts;let c=[...new Map(a.hosts.flatMap(a=>a.claims).map(a=>[`${a.source}:${a.pathname}`,a])).values()],d=u(c);return[{...b,claims:c,claimedPaths:[...new Set(c.map(a=>a.pathname))],primaryPath:d?.pathname??null}]})),z=await a.reconcile?.(y),A=new Set(z?.quarantinedPaneIds??[]),B=y.filter(a=>!A.has(a.paneId)),C=function(a,b,c=new Set){let d=new Map;for(let e of a){let a=new Set(e.claims.map(a=>a.pathname)),f=[...new Set([...a].map(b).filter(a=>null!==a))];for(let b of f.length>0?f.map(a=>`conversation:${a}`):[...a].map(a=>`path:${a}`)){let f=b.startsWith("conversation:")?b.slice(13):null,g=d.get(b)??{conversationId:f,paths:new Set,paneIds:new Set,quarantinedPaneIds:new Set};for(let b of a)g.paths.add(b);g.paneIds.add(e.paneId),c.has(e.paneId)&&g.quarantinedPaneIds.add(e.paneId),d.set(b,g)}}return[...d.values()].filter(a=>a.paneIds.size>1||a.quarantinedPaneIds.size>0).map(a=>({conversationId:a.conversationId,paths:[...a.paths].sort(),paneIds:[...a.paneIds].sort((a,b)=>t(a)-t(b)),...a.quarantinedPaneIds.size>0?{quarantinedPaneIds:[...a.quarantinedPaneIds].sort((a,b)=>t(a)-t(b))}:{}})).sort((a,b)=>(a.conversationId??a.paths[0]??"").localeCompare(b.conversationId??b.paths[0]??""))}(y,f,A),D={hosts:y,observation:"available",conflicts:C,canonicalFor:a=>{let b;return w(D,a,f)?null:(b=B.map(b=>({host:b,claim:b.claims.filter(b=>b.pathname===a).sort((a,b)=>p[b.source]-p[a.source])[0]})).filter(a=>void 0!==a.claim).sort((a,b)=>p[b.claim.source]-p[a.claim.source]||t(b.host.paneId)-t(a.host.paneId)),b[0]?.host??null)}};return D}}function A(a){return{kind:"tmux",endpoint:(0,m.WH)(),server:{pid:a.tmuxServerPid,startIdentity:h.B.processIdentity(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:h.B.processIdentity(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}async function B(){let a=await (0,m.lC)();if(null===a)return null;let b=(0,f.tk)(),c=b.readOnlySnapshot();if(!c.importedResumePanes){let c=await (0,m.MA)();if(c)return b.importResumePanes(c.serverPid,c.records),{serverPid:a,records:c.serverPid===a?new Map(c.records):new Map}}let d=c.legacyResumePanes;return{serverPid:a,records:d.serverPid===a?new Map(Object.entries(d.panes)):new Map}}async function C(a,b,c){if(await (0,m.$o)(a,b,c),!c.panePid)return;let d=await (0,m.lC)();null!==d&&(0,f.tk)().rememberResumePane(d,a,{paneId:c.paneId,panePid:c.panePid,windowName:b.windowName,engine:b.engine})}async function D(a,b){if("claude"!==a.engine&&"codex"!==a.engine)return b();let c=(0,g.sz)(a.engine,a.path);if(!c)return b();let d={pid:process.pid,startIdentity:h.B.processIdentity(process.pid)};try{return await (0,f.tk)().withOperationLock(c,d,b)}catch(a){return y(a,409)}}let E=function(a,b=new Map){let c=z(a);async function d(b,c){if(b.engine!==c.engine||await a.serverPid()!==b.tmuxServerPid||await a.panePid(b.paneId)!==b.panePid||!a.alive(b.agentPid)||b.windowName&&a.paneWindowName&&await a.paneWindowName(b.paneId)!==b.windowName||!function(a,b,c){let d=new Set,e=a;for(let a=0;null!==e&&a<64;a+=1){if(e===b)return!0;if(d.has(e))break;d.add(e),e=c(e)}return!1}(b.agentPid,b.panePid,a.parentPid))return!1;let d=a.argv(b.agentPid);if(d.length!==b.agentArgv.length||d.some((a,c)=>a!==b.agentArgv[c])||null!==b.agentIdentity&&a.identity(b.agentPid)!==b.agentIdentity||(0,k.Fe)(d)!==b.engine)return!1;let e=r(c.path);return(c.pid===b.agentPid||null!==e&&s(d)===e)&&b.claimedPaths.includes(c.path)}async function e(b){let e=a.conversationIdForPath??(()=>null),f=await c(!0);if("failure"===f.observation)throw Error(`tmux pane observation failed: ${f.observationError}`);let g=w(f,b.entry.path,e);if(g)throw new x(g);let h=f.canonicalFor(b.entry.path);if(h&&await d(h,b.entry))return{host:h,resumed:!1};let i=h;if("failure"===(f=await c(!0)).observation)throw Error(`tmux pane observation failed: ${f.observationError}`);let j=w(f,b.entry.path,e);if(j)throw new x(j);let k=null!==(h=f.canonicalFor(b.entry.path))&&null!==i&&h.paneId===i.paneId&&h.agentPid===i.agentPid&&null!==h.agentIdentity&&null!==i.agentIdentity&&h.agentIdentity!==i.agentIdentity;if(h&&!k&&await d(h,b.entry))return{host:h,resumed:!1};let l=a.beginResume?.(b.entry,b.spec)??null,m=l?.spec??b.spec,n=await a.spawn(m,"",l?.receipt);if(await a.remember(b.entry.path,m,n),"failure"===(f=await c(!0)).observation)throw Error(`tmux pane observation failed: ${f.observationError}`);let o=w(f,b.entry.path,e);if(o)throw new x(o);if(!(h=f.canonicalFor(b.entry.path))||!await d(h,b.entry))throw Error("resumed agent host could not be identified safely");return{host:h,resumed:!0}}function f(a){let c=b.get(a.entry.path);if(c)return{owner:!1,task:c};let d=e(a).finally(()=>b.delete(a.entry.path));return b.set(a.entry.path,d),{owner:!0,task:d}}async function g(b){let c,e=!1,g=!1;try{let a=f(b);e=a.owner,g=(c=await a.task).resumed}catch(a){return y(a)}for(let h=0;h<2;h+=1){if(!await d(c.host,b.entry))try{let a=f(b);c=await a.task,e||=a.owner,g||=c.resumed;continue}catch(a){return y(a)}try{await a.deliver(c.host.paneId,b.payload);try{await a.confirmAlive?.(c.host)}catch(a){console.error("[transcript host] live delivery registry confirmation failed",a)}return{ok:!0,outcome:e&&g?"resumed":"delivered-to-live",target:c.host.display}}catch(a){if(a instanceof m.SS)return y(a,500,"started");if(1===h)return y(a);try{let a=f(b);c=await a.task,e||=a.owner,g||=c.resumed}catch(a){return y(a)}}}return y("agent host became unavailable during delivery")}return{readTranscriptHosts:c,deliverToTranscriptHost:b=>a.serializeDelivery?a.serializeDelivery(b.entry,()=>g(b)):g(b)}}({listFiles:j.CS,panes:m.m7,ppidMap:()=>h.B.ppidMap(),agents:k.Bj,serverPid:m.lC,resumeRecords:B,panePid:m.zX,paneWindowName:async a=>(await (0,m.RZ)(a))?.windowName??null,alive:k.pl,argv:k.$U,parentPid:k.Ib,identity:h.B.processIdentity,writesPath:k.FQ,launchId:m.r$,conversationIdForPath:a=>(0,f.tk)().conversationForPath(a)?.id??null,beginResume:function(a,b,c=(0,f.tk)()){if("claude"!==a.engine&&"codex"!==a.engine)return null;let d=c.conversationForPath(a.path)??c.ensureConversation(a.engine,a.path,null),g=d.generations.at(-1),h=(0,e.Ui)({...g?.launchProfile??{},...b.launchProfile??{},cwd:b.launchProfile?.cwd||g?.launchProfile.cwd||b.cwd,title:(0,n.St)(g?.launchProfile.title,120)??(0,n.St)(b.launchProfile?.title,120)??(0,n.bF)("resume",g?.launchProfile.goal?.objective??b.cwd,"Conversation resume")});return{receipt:c.beginSpawnRequest({engine:a.engine,cwd:b.cwd,accountId:g?.accountId??null,conversationId:d.id,purpose:"resume-successor",origin:{kind:"successor"},launchProfile:h}).receipt,spec:{...b,launchProfile:h}}},spawn:m.Tk,remember:C,deliver:m.oF,confirmAlive:function(a){a.launchId&&(0,f.tk)().confirmSpawnPaneAlive(a.launchId,A(a),{engine:a.engine,cwd:a.cwd})},reconcile:function(a,b={registry:(0,f.tk)(),evidenceForHost:A}){let{registry:c,evidenceForHost:e}=b,h=c.readOnlySnapshot(),i=!1,j=new Set,k=new Set;for(let b of a){let a=e(b);if(b.launchId&&!b.primaryPath&&(c.confirmSpawnPaneAlive(b.launchId,a,{engine:b.engine,cwd:b.cwd}),i=!0),!b.primaryPath)continue;if(b.launchId){let e=function(a){for(let b of[a.primaryPath,...a.claimedPaths].filter(a=>!!a))if("claude"!==a.engine||!(0,l.X6)(b))return b;return null}(b),f=e?(0,g.sz)(b.engine,e):null;if(!e||!f){c.confirmSpawnPaneAlive(b.launchId,a,{engine:b.engine,cwd:b.cwd}),i=!0,k.add(b.paneId);continue}let m=`${f.engine}:${f.sessionId}`,n=h.receipts[b.launchId],o=h.entries[m];if(n?.state==="completed"&&n.cwd===b.cwd&&n.artifactPath===e&&n.key?.engine===f.engine&&n.key.sessionId===f.sessionId&&(0,d.isDeepStrictEqual)(n.verifiedHost,a)&&o?.artifactPath===e&&o.cwd===b.cwd&&"live"===o.status&&null===o.pendingAction&&(0,d.isDeepStrictEqual)(o.host,a)){j.add(m);continue}if(c.confirmSpawnPaneAlive(b.launchId,a,{engine:b.engine,cwd:b.cwd}),i=!0,"settled"===c.completeObservedSpawn(b.launchId,{key:f,artifactPath:e,cwd:b.cwd,accountId:null,status:"live",host:a,claimEpoch:0,claimOwner:null,pendingAction:null}).kind){j.add(m);continue}k.add(b.paneId);continue}let f=(0,g.sz)(b.engine,b.primaryPath);if(!f)continue;let m=`${f.engine}:${f.sessionId}`,n=h.entries[m],o={key:f,artifactPath:b.primaryPath,cwd:b.cwd,accountId:n?.accountId??null,status:"live",host:a,claimEpoch:n?.claimEpoch??0,claimOwner:n?.claimOwner??null,pendingAction:null};(function(a,b){if(!a)return!0;let c=void 0===b.structuredHost&&void 0!==a.structuredHost?{...b,structuredHost:a.structuredHost}:b,e={...a};return delete e.updatedAt,!(0,d.isDeepStrictEqual)(e,c)})(n,o)&&(c.upsert(o),i=!0),j.add(m)}for(let[a,b]of(i&&(h=c.readOnlySnapshot()),Object.entries(h.entries)))b.host?.kind!=="tmux"||j.has(a)||c.markUnhosted(b.key);return function(a,b){let c=new Set;for(let d of b){let b=a.entries[d];if(b){if(null!==b.pendingAction)return!0;c.add(b.artifactPath)}}return Object.values(a.receipts).some(a=>"starting"===a.state&&null!==a.artifactPath&&c.has(a.artifactPath))}(h,j)&&c.reconcileSpawnReceipts([...j].map(a=>{let[b,c]=a.split(":");return{engine:b,sessionId:c}})),{quarantinedPaneIds:[...k]}},serializeDelivery:D},q.__llvTranscriptHostDecisions??=new Map),F=E.readTranscriptHosts,G=E.deliverToTranscriptHost},85091:(a,b,c)=>{c.d(b,{$_:()=>d,FC:()=>i,J5:()=>h,Wf:()=>j,jk:()=>f,np:()=>e});let d=1,e=500,f=7200,g=["status","completed","failed","blocked","review_verdict","question"];function h(a){return"string"==typeof a&&g.includes(a)||"confirmation_request"===a}function i(a){return"blocked"===a||"question"===a}function j(a){if(!a||"manager"===a.kind)return null;let b="gateway"===a.kind?"voice gateway":a.role??"agent";return a.conversationId?`${b} ${a.conversationId}`:b}},85881:(a,b,c)=>{c.d(b,{Kw:()=>m});var d=c(76760),e=c.n(d),f=c(98934),g=c(36454),h=c(44123),i=c(77598),j=c.n(i),k=c(73024),l=c.n(k);globalThis.fetch;function m(a,b=Date.now()){let c=a.reason===h.e4||"credentials missing access token"===a.reason||a.reason?.startsWith("credentials unreadable:")?"failed":"live"===a.source?"authenticated":"unknown",d=a.data?[a.data.session,a.data.weekly].filter(a=>null!==a):[],e=d.filter(a=>Number.isFinite(a.usedPercent)&&a.usedPercent>=100),g=e.length>0?"exhausted":d.length>0?"available":"unknown",i=null;return e.length>0&&e.every(a=>Number.isSafeInteger(a.resetsAt)&&1e3*a.resetsAt>b)?i=new Date(1e3*Math.max(...e.map(a=>a.resetsAt))).toISOString():"number"==typeof a.retryAt&&Number.isFinite(a.retryAt)?i=new Date(a.retryAt).toISOString():"string"==typeof a.retryAt&&(i=a.retryAt),(0,f.Oh)({enabled:!0,authentication:c,limits:g,stale:"live"!==a.source,retryAt:i},b)}},85923:(a,b,c)=>{c.d(b,{Lf:()=>k,MO:()=>i,QK:()=>h,Qq:()=>m,Ui:()=>j,WB:()=>n});var d=c(55643),e=c(93812),f=c(26200);let g=/^-?[A-Za-z0-9][A-Za-z0-9._-]{0,126}$/;function h(a){if("string"!=typeof a)return null;let b=a.trim();return g.test(b)?b:null}function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=h(a.project);return b&&("operator"===a.source||"relocation"===a.source)?{project:b,source:a.source,setAt:"string"==typeof a.setAt?a.setAt:"1970-01-01T00:00:00.000Z",operationId:"string"==typeof a.operationId?a.operationId:""}:null}function j(a={},b){return{cwd:"",model:null,effort:null,fast:null,permissionMode:null,readOnly:null,allowSubagents:!1,title:null,project:null,parentConversationId:null,role:"worker",goal:null,plan:null,...a,mcpServers:(0,d.c1)(a.mcpServers,b),plugins:(0,e.sJ)(a.plugins)}}function k(a){return j({...a,title:(0,f.St)(a.title,120)??(0,f.bF)("migration successor",a.goal?.objective??a.cwd,"Conversation migration")})}function l(a,b){return a.pid===b.pid&&a.startIdentity===b.startIdentity}function m(a,b){if(a.kind!==b.kind||a.identity!==b.identity||a.epoch!==b.epoch)return!1;let c=a.tmuxHost,d=b.tmuxHost;return c&&d?c.kind===d.kind&&c.endpoint===d.endpoint&&l(c.server,d.server)&&c.paneId===d.paneId&&l(c.panePid,d.panePid)&&c.windowName===d.windowName&&l(c.agent,d.agent)&&c.argv.length===d.argv.length&&c.argv.every((a,b)=>a===d.argv[b]):c===d}function n(a,b){return a.operationId===b.operationId&&a.nativeId===b.nativeId&&a.path===b.path&&a.historyHash===b.historyHash&&a.continuityPaths.length===b.continuityPaths.length&&a.continuityPaths.every((a,c)=>a===b.continuityPaths[c])&&m(a.host,b.host)}},87380:(a,b,c)=>{c.d(b,{F4:()=>x,_p:()=>y,cr:()=>z,n1:()=>D,ni:()=>C});var d=c(77598),e=c.n(d),f=c(76760),g=c.n(f),h=c(61899),i=c(2208),j=c(4116),k=c(91836),l=c(50887),m=c(56514),n=c(24534),o=c(62142),p=c(89364),q=c(72166),r=c(74955),s=c(67852),t=c(34219),u=c(98918);function v(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}let w=new Set(["structured resume host claim is unavailable"]);function x(a){if("paused"!==a.state||"relaying"!==a.pausedState||!a.stateDetail)return!1;let b=(0,q.Hw)(a);return b?.relayStartedAt!=null&&null==b.relayedAt&&null==b.relayDelivery&&null==b.relayDeliveryTransport&&b.error===a.stateDetail&&w.has(a.stateDetail)}async function y(a,b){let c,d=function(a){if(void 0===a)return{ok:!0};if("string"!=typeof a)return{ok:!1};let b=a.trim();return b?{ok:!0,spec:b}:{ok:!0}}(a.spec);if(!d.ok)return{error:"spec must be a string",status:400};let f=null,h=a.headRef?.trim()??null;if(h&&(!/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(h)||h.includes("..")||h.endsWith("/")))return{error:"headRef must be a safe branch name",status:400};if(void 0!==a.targetSha){if("string"!=typeof a.targetSha||!/^[0-9a-f]{40}$/i.test(a.targetSha.trim()))return{error:"targetSha must be an exact commit SHA",status:400};f=a.targetSha.trim().toLowerCase()}let l=function(a){let b=(0,u.Vd)();if(a.preset){let c=b.find(b=>b.name===a.preset);return c?{implementer:{...c.implementer},reviewer:{...c.reviewer}}:null}let c=v(a.roles?.implementer),d=v(a.roles?.reviewer);return c&&d?{implementer:c,reviewer:d}:null}(a);if(!l)return{error:"invalid flow roles or preset",status:400};if(l.reviewer.model){let a=(0,i.RC)(l.reviewer.engine,l.reviewer.model);if("error"in a)return{error:a.error,status:400};l.reviewer.model=a.model}let m=(0,j.tk)(),o=a.implementerConversationId?.startsWith("conversation_")?a.implementerConversationId:null;if(a.implementerConversationId&&!o)return{error:"implementer conversation identity is invalid",status:400};let p=o?m.conversation(o):null,r=b.find(b=>b.path===a.implementerPath),w=o?b.find(a=>a.conversationId===o):void 0,x=[...new Set((o?[a.implementerPath,p?.generations.at(-1)?.path,w?.path]:[]).filter(a=>!!a))].find(a=>null!==(0,k.tX)(a))??r?.path??null,y=x?b.find(a=>a.path===x)??w:void 0;if(!x)return{error:"implementer transcript is unknown",status:404};let z=p??m.conversationForPath(x)??m.ensureConversation(l.implementer.engine,x,null);if(z.engine!==l.implementer.engine)return{error:"implementer engine does not match its durable conversation",status:400};if(y&&"claude-projects"!==y.root&&"codex-sessions"!==y.root)return{error:"implementer must be a Claude or Codex session",status:400};if(y&&"claude"!==y.engine&&"codex"!==y.engine)return{error:"implementer must use the Claude or Codex engine",status:400};let A=(0,k.tX)(x);if(!A)return{error:"could not determine the session working directory",status:409};let B=y?.project??(0,n.hY)(A)??g().basename(A),C="merge-base"===a.baseMode?"merge-base":"head",D="string"==typeof a.baseRef&&a.baseRef.trim()?{ok:!0,sha:a.baseRef.trim()}:(0,s.JN)(A,C);if(!D.ok)return{error:D.error,status:409};let E=(0,u.mL)();if(E.find(a=>(a.implementerConversationId===z.id||a.implementerPath===x)&&null===a.closedAt&&"closed"!==a.state))return{error:"implementer already has an active flow",status:409};let F={id:e().randomUUID().slice(0,8),template:"implement-review-loop",project:B,cwd:A,implementerPath:x,implementerConversationId:z.id,roles:l,reviewerFallback:"codex"===l.reviewer.engine?(0,u.ay)():null,baseRef:D.sha,headRef:h,targetSha:f,...d.spec?{spec:d.spec}:{},baseMode:C,mode:"manual"===a.mode?"manual":"auto",reviewerMode:"pane"===a.reviewerMode?"pane":"headless",roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>0?Math.min(a.roundLimit,50):5,state:"waiting_ready",pausedState:null,stateDetail:null,mergeEvidence:(c=(0,s.NN)(A))?{...c,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,kickoffDelivery:null,hostClaim:null,rounds:[],createdAt:(0,q.Ec)(),closedAt:null};if(m.rememberMembership(z.id,{kind:"flow",containerId:F.id,role:"implementer",slot:"implementer",stageId:null,stageOrder:0,round:null,parentConversationId:null}),E.push(F),(0,u.tu)(E),!1!==a.deliverKickoff)try{let a=await (0,q.iq)(F,new Map(b.map(a=>[a.path,a])),(0,t.SB)(F.spec));F.kickoffDelivery={path:a,deliveredAt:(0,q.Ec)()},(0,u.tu)(E)}catch(a){F.state="paused",F.pausedState="waiting_ready",F.stateDetail=a instanceof Error?a.message:String(a),(0,u.tu)(E)}return{flow:F}}let z=2e3;function A(a){if("string"!=typeof a.note)return;let b=a.note.trim();return b?b.slice(0,z):null}async function B(a,b){if("pane"!==a.reviewerMode)return await (0,r.OZ)(a.id,b.n,b);try{let a=b.reviewerPane;if(a){let b=await (0,p.RZ)(a.paneId);b&&b.windowName===a.windowName&&!(0,o.g2)(b.command)&&await (0,p.VT)(a.paneId)}else if(b.reviewerPath){let a=b.reviewerConversationId?.startsWith("conversation_")?(0,j.tk)().conversation(b.reviewerConversationId)?.generations.at(-1)?.path??b.reviewerPath:(0,j.tk)().canonicalPath(b.reviewerPath),c=await (0,l.AB)(a);null!==c&&await (0,p.VT)(c)}}catch{}return!0}async function C(a){let b=(0,u.mL)().find(b=>b.id===a);if(!b)return{error:"flow not found",status:404};let c=(0,q.Hw)(b),d=c&&null===c.verdict&&!c.error?{n:c.n,reviewerBindingId:c.reviewerBindingId}:null;if(null!==d&&!await B(b,c))return{error:"reviewer process group did not terminate",status:409};let e=null===d?null:{round:d.n};return await (0,u.ke)((b,c)=>{let f=b.find(b=>b.id===a);if(!f)return{error:"flow not found",status:404};if("closed"===f.state)return{flow:f,stoppedReviewer:e};let g=(0,q.Hw)(f);return null!==d&&(g?.n!==d.n||g.reviewerBindingId!==d.reviewerBindingId)?{error:"flow changed during reviewer teardown",status:409}:(null!==d&&g&&null===g.verdict&&!g.error&&(g.error="flow closed by user",g.terminalAt=(0,q.Ec)()),f.state="closed",f.closedAt=(0,q.Ec)(),f.stateDetail=null,c(),{flow:f,stoppedReviewer:e})})}function D(a,b,c=m.a){let d=(0,u.mL)(),f=d.find(b=>b.id===a);if(!f)return{error:"flow not found",status:404};let g=(0,q.Hw)(f);if("pause"===b.action)"paused"!==f.state&&"closed"!==f.state&&(f.pausedState=f.state,f.state="paused",f.stateDetail=(0,m.P)("paused",c));else if("resume"===b.action)"paused"===f.state&&(g&&x(f)&&(g.relayStartedAt=null,g.relayDeliveryTransport=null,g.relayRetryAt=null,g.relayRetryRequiresIdempotency=!1),f.state=f.pausedState&&"paused"!==f.pausedState?f.pausedState:"waiting_ready",f.pausedState=null,f.stateDetail=(0,m.P)("resumed",c));else if("set-mode"===b.action){if("auto"!==b.mode&&"manual"!==b.mode)return{error:"mode must be auto or manual",status:400};f.mode=b.mode}else if("advance"===b.action){let a=A(b);if("waiting_ready"===f.state)f.rounds.push((0,q.xz)(f,"button",a??null)),f.state="manual"===f.mode?"spawn_pending":"spawning";else if("spawn_pending"===f.state)void 0!==a&&g&&(g.readyNote=a),f.state="spawning";else if("relay_pending"===f.state)f.state="relaying";else{if("fixing"!==f.state||!g||"structured"!==g.relayDeliveryTransport||null==g.relayedAt||null!==(0,q.SZ)(f))return{error:"flow cannot advance from its current state",status:409};Object.assign(g,{relayDelivery:null,relayedAt:null,relayPendingSettlement:null,relayStartedAt:null,relayRetryCount:0,relayRetryAt:null,relayRetryRequiresIdempotency:!0,error:null}),f.state="relaying"}f.stateDetail=null}else if("retry-round"===b.action){if("needs_decision"!==f.state||!g)return{error:"flow cannot retry from its current state",status:409};(0,r.T)(f.id,g.n,g),(0,r.gn)(f.id,g.n);let a=A(b);Object.assign(g,{reviewerPath:null,reviewerConversationId:null,reviewerBindingId:e().randomUUID(),accountId:null,attemptedAccounts:[],autoRetryCount:0,sessionId:null,reviewerPid:null,reviewerIdentity:null,reviewerPane:null,findingsPath:null,verdict:null,findingsCount:null,reviewerRole:{...f.roles.reviewer},readyNote:void 0===a?g.readyNote:a,reviewHeadSha:null,startedAt:(0,q.Ec)(),spawnStartedAt:null,launchId:null,launchLeaseUntil:null,relayStartedAt:null,relayRetryCount:0,relayDeliveryAttempt:0,relayDeliveryTransport:null,relayRetryAt:null,relayRetryRequiresIdempotency:!1,relayDelivery:null,reviewedAt:null,terminalAt:null,relayedAt:null,error:null}),f.state="manual"===f.mode?"spawn_pending":"spawning",f.stateDetail=null}else if("extend"===b.action){let a=Number.isInteger(b.rounds)&&b.rounds&&b.rounds>0?Math.min(b.rounds,20):1;f.roundLimit>0&&(f.roundLimit+=a),"needs_decision"===f.state&&(f.state="waiting_ready",f.stateDetail=null)}else if("set-round-limit"===b.action){let a=b.rounds;if(!Number.isInteger(a)||void 0===a||a<0||a>50)return{error:"rounds must be an integer 0–50 (0 = unlimited)",status:400};f.roundLimit=0===a?0:Math.max(a,f.rounds.length),"needs_decision"===f.state&&"round limit reached"===f.stateDetail&&(0===f.roundLimit||f.roundLimit>f.rounds.length)&&(f.state="waiting_ready",f.stateDetail=null)}else if("another-round"===b.action){if("done_comment"!==f.state)return{error:"flow is not waiting for another round",status:409};f.closedAt=null,f.state="waiting_ready",f.stateDetail=null}else if("set-roles"===b.action){if("closed"===f.state)return{error:"flow is closed",status:409};let a=b.roles&&"object"==typeof b.roles&&!Array.isArray(b.roles)?b.roles.reviewer:void 0;if(void 0===a)return{error:"reviewer role override is required",status:400};let c=function(a,b){if(!b||"object"!=typeof b||Array.isArray(b))return{error:"invalid reviewer role override"};let c={...a};if(void 0!==b.engine){if("claude"!==b.engine&&"codex"!==b.engine)return{error:"invalid reviewer role override"};c.engine=b.engine}if(void 0!==b.model){if(null!==b.model&&"string"!=typeof b.model)return{error:"invalid reviewer role override"};c.model="string"==typeof b.model&&b.model.trim()?b.model.trim():null}if(void 0!==b.effort){if(null!==b.effort&&"string"!=typeof b.effort)return{error:"invalid reviewer role override"};c.effort="string"==typeof b.effort&&b.effort.trim()?b.effort.trim():null}if(c.model){let a=(0,i.RC)(c.engine,c.model);if("error"in a)return a;c.model=a.model}return c.effort&&!(0,h.z9)(c.engine,c.effort)?{error:"invalid reviewer role override"}:{role:c}}(f.roles.reviewer,a);if("error"in c)return{error:c.error,status:400};let d=c.role;f.roles={...f.roles,reviewer:d};let e="spawn_pending"===f.state||"paused"===f.state&&"spawn_pending"===f.pausedState?g:null;e&&null==e.spawnStartedAt&&(e.reviewerRole={...d})}return g&&"spawning"===f.state&&(g.error=null),(0,u.tu)(d),{flow:f}}},88417:(a,b,c)=>{c.d(b,{CC:()=>l,Hy:()=>j,Zx:()=>g,gy:()=>i,h1:()=>k,in:()=>f,kW:()=>n,rM:()=>o,t6:()=>h});var d=c(77598),e=c.n(d);let f=["image/png","image/jpeg","image/gif","image/webp"],g="structured-image-v1",h="The selected Codex model does not advertise image input through app-server.",i="Structured image protocol is unavailable for this host.";class j extends Error{constructor(){super("structured message text exceeds the 32000-byte envelope bound"),this.name="StructuredEnvelopeTooLargeError"}}function k(a){if(Buffer.byteLength(a,"utf8")>32e3)throw new j}function l(a){let b="image/jpg"===a.toLowerCase()?"image/jpeg":a.toLowerCase();return f.includes(b)?b:null}function m(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b="string"==typeof a.mime?l(a.mime):null;return b&&"string"==typeof a.sha256&&/^[a-f0-9]{64}$/.test(a.sha256)&&Number.isSafeInteger(a.bytes)&&!(a.bytes<=0)?{sha256:a.sha256,mime:b,bytes:a.bytes}:null}function n(a,b){if(!Array.isArray(a)||a.length>b)return null;let c=a.map(m);return c.every(a=>null!==a)?c:null}function o(a,b){let c,d={text:a,images:b.map(a=>({...a}))};if(!d.text.trim()&&0===d.images.length)throw Error("message content is required");return{content:d,contentDigest:(c=JSON.stringify({text:d.text,images:d.images.map(({sha256:a,mime:b,bytes:c})=>({sha256:a,mime:b,bytes:c}))}),e().createHash("sha256").update(c).digest("hex"))}}},88602:(a,b,c)=>{c.d(b,{o7:()=>i,sS:()=>k});var d=c(77030),e=c.n(d),f=c(29966);class g extends Error{constructor(a,b){super(a),this.code=b}}let h=new Set(["runtime host request timed out","runtime host is unavailable","runtime host response exceeds limit","runtime host returned invalid JSON","runtime host response id mismatch"]);function i(a){return a instanceof g&&void 0===a.code&&h.has(a.message)}class j{constructor(a,b=3e3,c=12e4,d=1e4){this.socketPath=a,this.timeoutMs=b,this.deploymentTimeoutMs=c,this.snapshotTimeoutMs=d}snapshot(a){return this.call("snapshot",void 0,this.snapshotTimeoutMs,a)}events(a,b){return this.call("events",{after:a},this.timeoutMs,b)}waitEvents(a,b=15e3,c){return this.call("wait",{after:a,timeoutMs:b},b+1e3,c)}append(a){return this.call("append",{event:a})}operation(a){return this.call("operation",{event:a})}command(a){return this.call("command",{command:a})}operationStatus(a,b={}){return this.call("operation-status",{operationId:a,...b.currentRetryLeaf?{currentRetryLeaf:!0}:{}})}retryOperation(a,b,c={}){return this.call("operation-retry",{operationId:a,...void 0!==b?{nextIdempotencyKey:b}:{},...void 0!==c.requireHostedConversationId?{requireHostedConversationId:c.requireHostedConversationId}:{}})}producerCursor(a,b){return this.call("producer-cursor",{producerKind:a,eventKeyPrefix:b})}effectBatch(a,b=0){let c={...a?{kinds:[...a]}:{},...0!==b?{afterEventSeq:b}:{}};return this.call("effect-batch",Object.keys(c).length>0?c:void 0)}transitionOperation(a,b,c){return this.call("operation-transition",{operationId:a,status:b,...c?{details:c}:{}})}requestViewerDeployment(a){return this.call("viewer-deployment-request",a,this.deploymentTimeoutMs)}readViewerDeployment(a){return this.call("viewer-deployment-read",{deploymentId:a})}admitMcpHealthProbe(a){return this.call("mcp-health-probe-admission",{capability:a})}call(a,b,c=this.timeoutMs,d){return new Promise((f,h)=>{let i={id:crypto.randomUUID(),method:a,...b?{params:b}:{}},j=e().createConnection(this.socketPath),k="",l=!1,m=setTimeout(()=>n(new g("runtime host request timed out")),c),n=(a,b)=>{l||(l=!0,clearTimeout(m),d?.removeEventListener("abort",o),j.destroy(),a?h(a):f(b))},o=()=>n(new g("runtime host request cancelled"));if(d?.aborted)return o();d?.addEventListener("abort",o,{once:!0}),j.once("error",()=>n(new g("runtime host is unavailable"))),j.on("data",a=>{if(k+=String(a),Buffer.byteLength(k)>0x4000000)return n(new g("runtime host response exceeds limit"));let b=k.indexOf("\n");if(!(b<0))try{let a=JSON.parse(k.slice(0,b));if(a.id!==i.id)return n(new g("runtime host response id mismatch"));n(a.ok?void 0:new g(a.error??"runtime host rejected request",a.code),a.result)}catch{n(new g("runtime host returned invalid JSON"))}}),j.once("connect",()=>j.write(JSON.stringify(i)+"\n"))})}}function k(a=process.env){let b=(0,f.S0)(a);return b?new j(b):null}},89364:(a,b,c)=>{c.d(b,{SS:()=>Y,Am:()=>aB,yq:()=>aa,xs:()=>Q,IJ:()=>aA,HZ:()=>as,XW:()=>at,VT:()=>ae,B$:()=>P,aI:()=>T,RZ:()=>ar,r$:()=>an,m7:()=>R,zX:()=>_,ZB:()=>aw,$o:()=>aq,u1:()=>S,MA:()=>ap,EW:()=>$,V1:()=>ax,oF:()=>X,Tk:()=>az,WH:()=>B,a0:()=>C,lC:()=>al,PB:()=>M,WS:()=>V});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(4351),l=c(14648),m=c(4116),n=c(50920),o=c(33149),p=c(7461);let q=(0,n.oy)();var r=c(92233),s=c(65377);c(25695);var t=c(36385),u=c(59376),v=c(52530),w=c(62142);let x="agents",y=(0,n.BQ)("legacy-tmux-migration-complete"),z=null;function A(){var a;let b,c;return a={configuredTmpdir:process.env.TMUX_TMPDIR||"/tmp",externalFlag:process.env.LLV_LEGACY_TMUX_EXTERNAL,migrationComplete:h().existsSync(y),uid:process.getuid?.()??0},b=`/run/user/${a.uid}/agent-log-viewer`,c="1"===a.externalFlag,a.migrationComplete&&(!c||a.configuredTmpdir!==b)?{external:c,tmuxTmpdir:a.configuredTmpdir,health:{status:"degraded",code:"migration-marker-endpoint-mismatch",configuredTmpdir:a.configuredTmpdir,expectedTmpdir:b,message:`A migration completion marker exists while the Viewer is using ${a.configuredTmpdir}. Legacy tmux delivery remains active; remove the stale marker or complete the supervisor migration.`}}:c&&a.configuredTmpdir!==b?{external:c,tmuxTmpdir:a.configuredTmpdir,health:{status:"degraded",code:"external-endpoint-mismatch",configuredTmpdir:a.configuredTmpdir,expectedTmpdir:b,message:`External tmux mode is enabled with ${a.configuredTmpdir}. Set TMUX_TMPDIR=${b} and redeploy the Viewer.`}}:{external:c,tmuxTmpdir:a.configuredTmpdir,health:{status:"healthy"}}}function B(){return A().tmuxTmpdir}function C(){return A().health}function D(a,b){return{kind:"tmux-tmpdir",tmuxTmpdir:a,socketName:"default",socketPath:j().join(a,`tmux-${b}`,"default")}}function E(){return D(B(),process.getuid?.()??0)}function F(a,b,c=E()){return new Promise((e,f)=>{let g=(0,d.spawn)("tmux",a,{stdio:["pipe","pipe","pipe"],env:{...(0,s.Fd)(process.env),TMUX_TMPDIR:c.tmuxTmpdir}}),h="",i="";g.stdout.on("data",a=>h+=a.toString("utf8")),g.stderr.on("data",a=>i+=a.toString("utf8")),g.on("error",f),g.on("close",a=>e({code:a,stdout:h,stderr:i})),void 0!==b?g.stdin.end(b):g.stdin.end()})}async function G(a,b,c){let d=await c.runTmux(["display-message","-p","-t",a,"#{pid} #{pane_id} #{pane_pid} #{session_name}:#{window_index}.#{pane_index} #{window_name} #{pane_current_command}"],void 0,b).catch(()=>null);return d&&0===d.code?function(a,b){let[c="",d="",e="",f="",g="",h=""]=a.trim().split(" "),i=Number(c),j=Number(e);return Number.isInteger(i)&&!(i<=0)&&/^%\d+$/.test(d)&&Number.isInteger(j)&&!(j<=0)&&f?{serverPid:i,serverStartIdentity:b(i),paneId:d,panePid:j,paneStartIdentity:b(j),display:f,windowName:g,command:h}:null}(d.stdout,c.processIdentity):null}function H(a,b,c){return null!==a.startIdentity&&null!==c&&a.pid===b&&a.startIdentity===c}async function I(a,b,c={runTmux:F,processIdentity:a=>r.B.processIdentity(a)}){let d=await G(a.paneId,b,c);return d&&d.paneId===a.paneId&&H(a.server,d.serverPid,d.serverStartIdentity)&&H(a.panePid,d.panePid,d.paneStartIdentity)?d:null}async function J(a,b={runTmux:F,processIdentity:a=>r.B.processIdentity(a)}){let c=await b.runTmux(["set-environment","-gu",s.Cy],void 0,a.endpoint);if(0!==c.code)throw Error(c.stderr.trim()||"could not isolate tmux spawn environment");let d=await b.runTmux(["list-panes","-a","-F","#{pane_id}"],void 0,a.endpoint);if(0!==d.code)throw Error(d.stderr.trim()||"could not snapshot tmux panes before spawn");let e=new Set(d.stdout.split("\n").map(a=>a.trim()).filter(Boolean));if([...e].some(a=>!/^%\d+$/.test(a)))throw Error("tmux returned an invalid pre-spawn pane listing");let f=await b.runTmux(["new-window","-d","-P","-F","#{pane_id}","-t",a.session+":","-n",a.windowName,"-c",a.cwd],void 0,a.endpoint);if(0!==f.code)throw Error(f.stderr.trim()||"could not open tmux window");let g=f.stdout.split("\n").map(a=>a.trim()).filter(Boolean),h=1===g.length?g[0]:"";if(!/^%\d+$/.test(h))throw Error("tmux returned an invalid pane id");if(e.has(h))throw Error("tmux new-window returned a pre-existing pane id");let i=await G(h,a.endpoint,b);if(!i)throw Error("tmux could not verify the created pane");if(i.paneId!==h)throw Error("tmux created pane identity changed before verification");if(i.windowName!==a.windowName)throw Error("tmux created pane has an unexpected window name");if(!H(a.server,i.serverPid,i.serverStartIdentity))throw Error("tmux server changed while creating the spawn pane");if("linux"===r.B.name&&(null===i.serverStartIdentity||null===i.paneStartIdentity))throw Error("tmux process start identity is unavailable");return{endpoint:a.endpoint.tmuxTmpdir,server:{pid:i.serverPid,startIdentity:i.serverStartIdentity},paneId:h,panePid:{pid:i.panePid,startIdentity:i.paneStartIdentity},target:h,display:i.display}}function K(a){try{return h().realpathSync(a)}catch{return j().resolve(a)}}function L(a,b,c){let d=new Set,e=a;for(let a=0;null!==e&&a<64;a+=1){if(e===b)return a;if(d.has(e))break;d.add(e),e=c(e)}return null}async function M(a){if(null===a.server.startIdentity||null===a.panePid.startIdentity||null===a.agent.startIdentity)return!1;let b=D(a.endpoint,process.getuid?.()??0),c={endpoint:a.endpoint,server:a.server,paneId:a.paneId,panePid:a.panePid,target:a.paneId},d=await I(c,b);return!!d&&d.windowName===a.windowName&&!!(0,v.pl)(a.agent.pid)&&r.B.processIdentity(a.agent.pid)===a.agent.startIdentity&&!!N((0,v.$U)(a.agent.pid),a.argv)&&null!==L(a.agent.pid,a.panePid.pid,v.Ib)}function N(a,b){return a.length===b.length&&a.every((a,c)=>a===b[c])}function O(a,b){return!b.pidAlive(a.pid)||null!==a.startIdentity&&b.processIdentity(a.pid)!==a.startIdentity}async function P(a,b={}){if(null===a.server.startIdentity||null===a.panePid.startIdentity||null===a.agent.startIdentity)return!1;let c={runTmux:F,processIdentity:a=>r.B.processIdentity(a),pidAlive:v.pl,argv:v.$U,parentPid:v.Ib,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=D(a.endpoint,process.getuid?.()??0),e={endpoint:a.endpoint,server:a.server,paneId:a.paneId,panePid:a.panePid,target:a.paneId},g=await I(e,d,c);if(!g||g.windowName!==a.windowName||!c.pidAlive(a.agent.pid)||c.processIdentity(a.agent.pid)!==a.agent.startIdentity||!N(c.argv(a.agent.pid),a.argv)||null===L(a.agent.pid,a.panePid.pid,c.parentPid))return!1;let h=`#{&&:#{==:#{pid},${a.server.pid}},#{&&:#{==:#{pane_id},${a.paneId}},#{==:#{pane_pid},${a.panePid.pid}}}}`,i=`llv-host-mismatch-${f().randomUUID()}`,j=await c.runTmux(["if-shell","-t",a.paneId,"-F",h,`kill-pane -t ${a.paneId}`,`display-message -p ${i}`],void 0,d);if(0!==j.code||j.stdout.includes(i))return!1;for(let b=0;b<c.maxVerifyAttempts;b+=1){if(null===await G(a.paneId,d,c)&&O(a.panePid,c)&&O(a.agent,c))return!0;b+1<c.maxVerifyAttempts&&await c.sleep(25)}return!1}async function Q(a,b={}){let c=D(a.endpoint,process.getuid?.()??0),d=b.runTmux??F,e={tmuxServerPid:a.server.pid,tmuxServerStartIdentity:a.server.startIdentity,paneId:a.paneId,panePid:a.panePid.pid,paneStartIdentity:a.panePid.startIdentity},g=await ad(e,c,b);if(!g.ok)return"tmux-unavailable"===g.reason?"unverifiable":"absent";let h=`#{&&:#{==:#{pid},${a.server.pid}},#{&&:#{==:#{pane_id},${a.paneId}},#{==:#{pane_pid},${a.panePid.pid}}}}`,i=`llv-host-mismatch-${f().randomUUID()}`,j=await d(["if-shell","-t",a.paneId,"-F",h,`kill-pane -t ${a.paneId}`,`display-message -p ${i}`],void 0,c).catch(()=>null);if(!j||0!==j.code)return"unverifiable";if(!j.stdout.includes(i))return"cancelled";let k=await ad(e,c,b);return k.ok||"tmux-unavailable"===k.reason?"unverifiable":"absent"}async function R(a=!1){let b,c=Date.now();if(!a&&z&&c-z.at<12e3)return z.observation;let d=new Map;try{b=await F(["list-panes","-a","-F","#{session_name}:#{window_index}.#{pane_index} #{pane_id} #{pane_pid} #{window_name}"])}catch(a){return{kind:"failure",error:a instanceof Error?a.message:String(a)}}if(0!==b.code){let a=b.stderr.trim()||`tmux list-panes exited ${b.code??"without a status"}`;return/no server running on|failed to connect to server/i.test(a)?{kind:"no-server"}:{kind:"failure",error:a}}for(let a of b.stdout.split("\n")){let[b="",c="",e="",f=""]=a.split(" "),g=Number(e.trim());b.trim()&&c.startsWith("%")&&Number.isInteger(g)&&g>0&&d.set(g,{target:b.trim(),paneId:c.trim(),windowName:f.trim()})}let e={kind:"available",panes:d};return z={at:c,observation:e},e}async function S(a){if(!Number.isInteger(a)||a<=0)return null;let b=await R();if("available"!==b.kind)return null;let{panes:c}=b;if(0===c.size)return null;let d=new Set,e=a;for(let a=0;a<64&&null!==e&&e>1;a+=1){let a=c.get(e);if(a)return a.target;if(d.has(e)||(0,v.Vt)((0,v.$U)(e)))break;d.add(e),e=(0,v.Ib)(e)}return null}async function T(){var a=await (0,u.CS)();let b=new Set;for(let c of a)null!==c.pid&&"running"===c.proc&&(0,v.pl)(c.pid)&&b.add(c.pid);return b}let U=new Map;async function V(a,b){let c=(U.get(a)??Promise.resolve()).then(b,b);U.set(a,c.catch(()=>void 0));try{return await c}finally{U.get(a)!==c&&U.size>256&&U.clear()}}async function W(a,b,c){await c();let d=await av(a,b);if(null===d)throw Error("tmux pane is unavailable");if((0,w.g2)(d))throw(0,o.$s)("gate",{target:a,result:"error",reason:"shell_prompt"}),Error("pane has no agent (plain shell) — message was not sent");for(let d=0;d<3;d+=1){await c();let d=await aw(a,b);if(null!==(0,w.fm)(d))throw(0,o.$s)("gate",{target:a,result:"error",reason:"select_dialog"}),Error("agent is waiting for a choice in the pane — answer before sending a new message");let e=(0,w._1)(d);if(null!==e)throw(0,o.$s)("gate",{target:a,result:"error",reason:e}),Error("rate_limit"===e?"agent hit a rate limit — message was not sent":"agent is waiting for confirmation in the pane — answer before sending a new message");let f=(0,w.ye)(d);if(null!==f){(0,o.$s)("gate",{target:a,result:"ok",reason:f}),await c(),await F(["send-keys","-t",a,"Enter"],void 0,b),await au(700);continue}return}}async function X(a,b){let c=E(),d=await G(a,c,{runTmux:F,processIdentity:a=>r.B.processIdentity(a)});if(!d)throw Error("tmux pane is unavailable");let e={endpoint:c.tmuxTmpdir,server:{pid:d.serverPid,startIdentity:d.serverStartIdentity},paneId:d.paneId,panePid:{pid:d.panePid,startIdentity:d.paneStartIdentity},target:d.paneId,display:d.display},f=async()=>{if(!await I(e,c))throw Error("tmux server or pane identity changed during delivery")};await V(d.paneId,async()=>{try{await W(d.paneId,c,f),await Z(d.paneId,b,c,f),(0,o.$s)("send",{target:d.paneId,result:"ok",meta:{bytes:b.length,display:d.display}})}catch(a){throw(0,o.$s)("send",{target:d.paneId,result:"error",reason:a instanceof Error?a.message:String(a)}),a}})}class Y extends Error{constructor(a){super(a instanceof Error?a.message:String(a),{cause:a}),this.name="TmuxDeliveryUncertainError"}}async function Z(a,b,c,d){let e=`viewer-${Date.now()}-${Math.floor(1e6*Math.random())}`,f=!1;try{await d();let g=await F(["load-buffer","-b",e,"-"],Buffer.from(b,"utf8"),c);if(0!==g.code)throw Error(g.stderr.trim()||"could not load tmux buffer");await d();let h=await F(["paste-buffer","-d","-p","-b",e,"-t",a],void 0,c);if(0!==h.code)throw Error(h.stderr.trim()||"could not paste text into pane");f=!0,await au(250),await d();let i=await F(["send-keys","-t",a,"Enter"],void 0,c);if(0!==i.code)throw Error(i.stderr.trim()||"could not press Enter");let j=b.split("\n").map(a=>a.trim()).find(Boolean)?.slice(0,32)??"";for(let b=0;b<4;b+=1){await au(400),await d();let b=(0,w.dC)(await aw(a,c));if(!(""!==j&&b.includes(j)||b.includes("[Pasted text")))return;await d();let e=await F(["send-keys","-t",a,"Enter"],void 0,c);if(0!==e.code)throw Error(e.stderr.trim()||"could not press Enter")}}catch(a){if(f)throw new Y(a);throw a}}async function $(a){let b=await F(["send-keys","-t",a,"Escape"]);if((0,o.$s)("interrupt",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not send Escape")}async function _(a){let b=await F(["display-message","-p","-t",a,"#{pane_pid}"]).catch(()=>null),c=b&&0===b.code?Number(b.stdout.trim()):NaN;return Number.isInteger(c)&&c>0?c:null}function aa(a){let b=new Map,c=a=>"portable"===r.B.name?null:(b.has(a)||b.set(a,r.B.processIdentity(a)),b.get(a)??null);return new Map(a.map(a=>[a.paneId,{...a,tmuxServerStartIdentity:c(a.tmuxServerPid),paneStartIdentity:c(a.panePid)}]))}function ab(a){return/[\r\n\0]/.test(a)}function ac(a){return`'${a.replaceAll("'","'\\''")}'`}async function ad(a,b=E(),c={}){var d;let e=c.runTmux??F,f=c.processIdentity??(a=>r.B.processIdentity(a)),g=await e(["display-message","-p","#{pid}"],void 0,b).catch(()=>null),h=g&&0===g.code?Number(g.stdout.trim()):NaN;if(!g||0!==g.code||!Number.isInteger(h)||h<=0)return{ok:!1,reason:"tmux-unavailable"};let i=f(h);if(h===a.tmuxServerPid&&null!==a.tmuxServerStartIdentity&&null===i)return{ok:!1,reason:"tmux-unavailable"};if(h!==a.tmuxServerPid||null!==a.tmuxServerStartIdentity&&i!==a.tmuxServerStartIdentity)return{ok:!1,reason:"server-restarted"};let j=await e(["display-message","-p","-t",a.paneId,"#{pid} #{pane_id} #{pane_pid} #{session_name}:#{window_index}.#{pane_index}"],void 0,b).catch(()=>null);if(!j)return{ok:!1,reason:"tmux-unavailable"};if(0!==j.code)return{ok:!1,reason:/can't find pane/i.test(`${j.stderr}
299
299
  ${j.stdout}`)?"stale-pane":"tmux-unavailable"};let[k="",l="",m="",n=""]=j.stdout.trim().split(" "),o=Number(k),p=Number(m);if(!Number.isInteger(o)||o<=0||!l||!Number.isInteger(p)||p<=0||!n)return{ok:!1,reason:"tmux-unavailable"};let q=f(p);if(l===a.paneId&&p===a.panePid&&null!==a.paneStartIdentity&&null===q)return{ok:!1,reason:"tmux-unavailable"};let s=(d={tmuxServerPid:o,tmuxServerStartIdentity:o===h?i:f(o),paneId:l,panePid:p,paneStartIdentity:q,target:n}).tmuxServerPid!==a.tmuxServerPid||null!==a.tmuxServerStartIdentity&&d.tmuxServerStartIdentity!==a.tmuxServerStartIdentity?"server-restarted":d.paneId!==a.paneId||d.panePid!==a.panePid||null!==a.paneStartIdentity&&d.paneStartIdentity!==a.paneStartIdentity?"stale-pane":"ok";if("ok"!==s)return{ok:!1,reason:s};try{return{ok:!0,target:n,endpoint:b,...function(a,b){if(ab(a.tmuxTmpdir)||ab(b))throw Error("tmux attach command contains an unsafe control character");let c=`TMUX_TMPDIR=${ac(a.tmuxTmpdir)} tmux attach-session`;return{command:`${c} -t ${ac(b)}`,readOnlyCommand:`${c} -r -t ${ac(b)}`}}(b,n)}}catch{return{ok:!1,reason:"tmux-unavailable"}}}async function ae(a){let b=await F(["kill-pane","-t",a]);if((0,o.$s)("kill",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not close tmux pane")}async function af(a=E()){if(A().external){let b=await F(["has-session","-t",x],void 0,a).catch(()=>null);if(!b||0!==b.code)throw Error("external legacy tmux supervisor is unavailable; refusing to create a container-owned server");return x}let b=await F(["list-clients","-F","#{client_activity} #{client_session}"],void 0,a).catch(()=>null),c=a=>{let b=null;for(let c of a.split("\n")){let a=c.indexOf(" ");if(a<0)continue;let d=Number(c.slice(0,a)),e=c.slice(a+1).trim();e&&Number.isFinite(d)&&(!b||d>b.at)&&(b={at:d,name:e})}return b?.name??null};if(b&&0===b.code){let a=c(b.stdout);if(a)return a}let d=await F(["list-sessions","-F","#{session_activity} #{session_name}"],void 0,a).catch(()=>null);if(d&&0===d.code){let a=c(d.stdout);if(a)return a}let e=await F(["new-session","-d","-x","220","-y","50","-s","agents"],void 0,a);if(0!==e.code&&!/duplicate session/.test(e.stderr))throw Error(e.stderr.trim()||"could not create tmux session");return"agents"}let ag=(0,n.BQ)("resume-panes.json"),ah=null,ai=null;function aj(){if(ah)return ah;ah=new Map,ai=null;try{var a;let b=(a=JSON.parse(h().readFileSync(ag,"utf8")))&&"object"==typeof a&&"panes"in a?{serverPid:"number"==typeof a.serverPid&&Number.isInteger(a.serverPid)?a.serverPid:null,panes:a.panes&&"object"==typeof a.panes?a.panes:{}}:{serverPid:null,panes:a&&"object"==typeof a?a:{}};for(let[a,c]of(ai=b.serverPid,Object.entries(b.panes)))c&&"string"==typeof c.paneId&&"string"==typeof c.windowName&&ah.set(a,c)}catch{}return ah}function ak(){if(ah)try{h().mkdirSync(j().dirname(ag),{recursive:!0});let a={serverPid:ai,panes:Object.fromEntries(ah)};h().writeFileSync(ag,JSON.stringify(a))}catch{}}async function al(){let a=await F(["display-message","-p","#{pid}"]).catch(()=>null),b=a&&0===a.code?Number(a.stdout.trim()):NaN;return Number.isInteger(b)&&b>0?b:null}async function am(a){let b=await F(["display-message","-p","#{pid}"],void 0,a).catch(()=>null),c=b&&0===b.code?Number(b.stdout.trim()):NaN;if(!Number.isInteger(c)||c<=0)return null;let d=r.B.processIdentity(c);return"linux"===r.B.name&&null===d?null:{pid:c,startIdentity:d}}async function an(a){let b=await F(["show-options","-p","-v","-t",a,"@llv_launch_id"]).catch(()=>null),c=b&&0===b.code?b.stdout.trim():"";return/^[0-9a-f-]{36}$/i.test(c)?c:null}function ao(a){let b=aj();return ai!==a&&(b.clear(),ai=a,ak()),b}async function ap(){let a=await al();return null===a?null:{serverPid:a,records:new Map(ao(a))}}async function aq(a,b,c){if(!c.panePid)return;let d=await al();null!==d&&(ao(d).set(a,{paneId:c.paneId,panePid:c.panePid,windowName:b.windowName,engine:b.engine}),ak())}async function ar(a){let b=await F(["display-message","-p","-t",a,"#{window_name} #{pane_current_command} #{session_name}:#{window_index}.#{pane_index}"]).catch(()=>null),c=b&&0===b.code?b.stdout.trim().split(" "):null;return c&&3===c.length?{windowName:c[0]??"",command:c[1]??"",display:c[2]??a}:null}function as(a){aj().delete(a)&&ak()}async function at(a,b){let c=D(b.endpoint,process.getuid?.()??0),d=await am(c);if(!d||!H(b.server,d.pid,d.startIdentity))return;let e=ao(d.pid),f=e.get(a);f?.paneId===b.paneId&&f.panePid===b.panePid.pid&&(e.delete(a),ak())}function au(a){return new Promise(b=>setTimeout(b,a))}async function av(a,b=E()){let c=await F(["display-message","-p","-t",a,"#{pane_current_command}"],void 0,b).catch(()=>null);return c&&0===c.code?c.stdout.trim():null}async function aw(a,b=E()){let c=await F(["capture-pane","-p","-t",a],void 0,b).catch(()=>null);return c&&0===c.code?c.stdout:""}async function ax(a,b){if(!b.length)return;let c=await F(["send-keys","-t",a,...b]);if(0!==c.code)throw Error(c.stderr.trim()||"could not send keys")}async function ay(a,b,c){var d,e,f,g,h;let i,j,n=E(),p=await af(n),q=await am(n);if(!q)throw Error("tmux server identity is unavailable before spawn");let s="pane-bound"===c.state||"host-verified"===c.state?c.pane:null,t=null!==s,u=t?null:(0,m.tk)().rotateSpawnCapabilityForReceipt(c.launchId),x=s||await J({session:p,cwd:a.cwd,windowName:a.windowName,endpoint:n,server:q}),y=x.paneId,z=x.display??x.paneId,A=x.panePid.pid,B=async a=>{if(!await I(x,n))throw Error("tmux server or created pane changed before spawn actuation");return F(a,void 0,n)};if(t){let a=await B(["show-options","-p","-v","-t",y,"@llv_launch_id"]);if(0!==a.code||a.stdout.trim()!==c.launchId)throw Error("spawn pane launch marker changed before recovery")}else{let a=await B(["set-option","-p","-t",y,"@llv_launch_id",c.launchId]);if(0!==a.code)throw Error(a.stderr.trim()||"could not bind launch marker to pane");if("conflicted"===(0,m.tk)().bindSpawnPane(c.launchId,x).state)throw Error("spawn pane binding conflict")}let C=await I(x,n);if(!C)throw Error("tmux server or created pane changed before spawn actuation");let D=!(0,w.g2)(C.command);if(!D){if(t){let a=await B(["send-keys","-t",y,"C-c"]);if(0!==a.code)throw Error(a.stderr.trim()||"could not reset pane before spawn recovery")}let b=u??(0,m.tk)().rotateSpawnCapabilityForReceipt(c.launchId),e=(0,k.in)(a,b),f=await B(["send-keys","-t",y,"-l",(d=a.cwd,`cd -- ${ac(d)}`)]);if(0!==f.code)throw Error(f.stderr.trim()||"could not type cwd into pane");let g=await B(["send-keys","-t",y,"Enter"]);if(0!==g.code)throw Error(g.stderr.trim()||"could not enter cwd");let h=await B(["send-keys","-t",y,"-l",e.command]);if(0!==h.code)throw Error(h.stderr.trim()||"could not type command into pane");let i=await B(["send-keys","-t",y,"Enter"]);if(0!==i.code)throw Error(i.stderr.trim()||"could not start agent")}let G=Date.now()+18e4,H="";for(;Date.now()<G;){await au(1e3);let b=await I(x,n);if(!b)throw Error("tmux server or created pane changed during agent launch");let c=b.command;if((0,w.g2)(c)){if(D)throw Error(`agent exited immediately after launch: ${(0,w.d3)(await aw(y,n))}`);continue}D=!0;let d=await aw(y,n),e=(0,w.ZW)(a.engine,d);if(e)throw Error(e.message);let f=d!==H?(0,w.ye)(d):null;if(null!==f){(0,o.$s)("gate",{target:y,cwd:a.cwd,result:"ok",reason:f}),await B(["send-keys","-t",y,"Enter"]),H=d;continue}if((0,w.WM)(d))break}let M=await I(x,n);if(!M||(0,w.g2)(M.command))throw(0,o.$s)("spawn",{target:y,cwd:a.cwd,result:"error",reason:"agent_exited_on_boot"}),Error(`agent did not start in the window: ${(0,w.d3)(await aw(y,n))}`);let N=await aw(y,n),O=(0,w.ZW)(a.engine,N);if(O)throw Error(O.message);if(!(0,w.WM)(N))throw Error(`agent never reached a launch-ready prompt: ${(0,w.d3)(N)}`);let P=(e=a.engine,f=a.cwd,g=(0,v.Bj)(!0),h=v.Ib,i=K(f),!(j=g.flatMap(a=>{if(a.engine!==e||K(a.cwd)!==i)return[];let b=L(a.pid,A,h);return null===b?[]:[{process:a,distance:b}]}).sort((a,b)=>a.distance-b.distance||a.process.pid-b.process.pid))[0]||j[1]&&j[1].distance===j[0].distance?null:j[0].process);if(!P)throw Error("booted agent process could not be verified beneath the created pane");let Q=r.B.processIdentity(P.pid);if(!(0,v.pl)(P.pid)||"linux"===r.B.name&&null===Q)throw Error("booted agent process identity is unavailable");let R={kind:"tmux",endpoint:n.tmuxTmpdir,server:x.server,paneId:x.paneId,panePid:x.panePid,windowName:M.windowName,agent:{pid:P.pid,startIdentity:Q},argv:[...P.argv]},S=(0,m.tk)().markSpawnHostVerified(c.launchId,R);if("conflicted"===S.state)throw Error(S.error??"spawn host verification conflict");(0,o.$s)("spawn",{target:y,cwd:a.cwd,...a.transcript?{path:a.transcript}:{},result:"ok",meta:{window:a.windowName,display:z}});let T=(0,l.Vw)(a.engine,b);if(T){try{await X(y,T)}catch(b){let a=b instanceof Error?b.message:String(b);throw(a.includes("pane is unavailable")||a.includes("pane identity changed during delivery"))&&(0,m.tk)().invalidateSpawnHost(c.launchId,"spawn_host_identity_conflict"),b}let b=!1,d="";for(let e=0;e<6;e+=1){d=await aw(y,n);let e=(0,w.ZW)(a.engine,d);if(e)throw(0,m.tk)().invalidateSpawnHost(c.launchId,e.message),Error(e.message);if((0,w.OK)(a.engine,d,T)){b=!0;break}await au(400)}if(!b)throw Error(`launch prompt was not accepted by the agent: ${(0,w.d3)(d)}`)}if(!await I(x,n)||!(0,v.pl)(P.pid)||null!==Q&&r.B.processIdentity(P.pid)!==Q||null===L(P.pid,A,v.Ib))throw(0,m.tk)().invalidateSpawnHost(c.launchId,"spawn_host_identity_conflict"),Error("spawn host identity changed before launch confirmation");return(0,m.tk)().markSpawnPromptDelivered(c.launchId),{paneId:y,display:z,panePid:A,host:R}}async function az(a,b,c){let d=c??(0,m.tk)().beginSpawn(a.engine,a.cwd,a.launchProfile);try{let c=function(a,b=(0,t.l)()){return"claude"!==a.engine||"structured"!==b||a.printMode?null:"structured transport prohibits legacy tmux Claude launches; the pane-less claude-broker host owns this spawn — retry once the structured runtime host is available"}(a);if(c)throw Error(c);return{...await ay(a,b,d),receipt:d}}catch(a){throw(0,m.tk)().failSpawn(d.launchId,a instanceof Error?a.message:String(a)),a}}function aA(a){for(let b of a)try{h().unlinkSync(b)}catch{}}function aB(a,b){let c=[];try{for(let a of b)c.push(function(a,b){let c=(0,p.PG)(b);if(null===c)throw Error("unsupported image type");let d=Buffer.from(a,"base64");if(0===d.length)throw Error("invalid image data");if(d.length>p.YP)throw Error("image is too large");h().mkdirSync(q,{recursive:!0});let e=j().join(q,`img-${Date.now()}-${f().randomUUID().slice(0,8)}.${c}`);return h().writeFileSync(e,d),{path:e}}(a.base64,a.mime).path)}catch(a){throw aA(c),a}return{payload:[a,...c].filter(Boolean).join("\n"),imagePaths:c}}},89374:(a,b,c)=>{c.d(b,{V5:()=>e,yv:()=>h});let d=["-agents-tools-"];function e(a,b){if(b?.trim())return b.trim();if("project_unresolved"===a)return"Unresolved project";for(let b of d)if(a.startsWith(b)&&a.length>b.length)return a.slice(b.length);return a.replace(/^-+/,"")||a}let f=new Set(["orchestrator","reviewer","builder","architect","cleaner","prod-auditor","deployer","verifier"]);function g(a){let b,c=/^You are (?:the |an? )?([^.,:]{1,60}?)[.,:]/.exec(a);if(!c||!a.slice(c[0].length).trim())return null;let d=c[1].trim(),e=null,g=d.indexOf(" in ");if(g>0){let a=d.slice(g+4).trim();d=d.slice(0,g).trim();let b=/^(\S+) mode$/.exec(a);b&&!b[1].includes("{")&&(e=b[1])}let h=(b=d.split(" ").filter(Boolean).at(-1)??"",/^[A-Z][A-Za-z-]{1,24}$/.test(b)?b:f.has(b.toLowerCase())?b[0].toUpperCase()+b.slice(1):null);return h?e?`${h} — ${e}`:h:null}function h(a){for(let b of a){if("claude"!==b.engine&&"codex"!==b.engine)continue;if(void 0!==b.autoTitle){let a=g(b.autoTitle);a&&(b.autoTitle=a);continue}let a=g(b.title);a&&(b.title=a)}}},89831:(a,b,c)=>{c.d(b,{ET:()=>r,Gz:()=>m,H:()=>n,S:()=>p,XB:()=>q});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(94284),i=c(47985),j=c(38849);(0,h.E)("codex-native-parent-thread").clear(),(0,h.E)("codex-native-parent-thread-v2").clear();let k=(0,h.E)("codex-native-session-meta-v1"),l=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;function m(a){return g().basename(a).match(l)?.[0]??null}function n(a,b,c){let d=k.get(a);if(d&&d.size===b&&d.mtimeMs===c)return{parent:d.parent,forkedFrom:d.forkedFrom,complete:!0};let e=null,f=null,g=(0,i.zy)(a,b,c,{maxBytes:65536});if(!g.complete||!g.value)return{parent:d?.parent??null,forkedFrom:d?.forkedFrom??null,complete:!1};for(let a of g.value.text.split("\n"))if(a.includes('"session_meta"'))try{let b=JSON.parse(a),c=(0,j.xK)(b.payload);if(!c)continue;let d=(0,j.xK)(c.source),g=(0,j.xK)(d?.subagent),h=(0,j.xK)(g?.thread_spawn),i=(0,j.r$)(c.parent_thread_id),k=(0,j.r$)(h?.parent_thread_id);e=i??k,f=(0,j.r$)(c.forked_from_id);break}catch{continue}return k.set(a,{size:b,mtimeMs:c,parent:e,forkedFrom:f}),{parent:e,forkedFrom:f,complete:!0}}function o(a,b){if(void 0!==b)return b;try{return e().statSync(a).mtimeMs}catch{return null}}function p(a,b,c){let d,e=o(a,c);return null===e?null:({value:(d=n(a,b,e)).parent,complete:d.complete}).value}function q(a,b,c){let d=o(a,c);return null===d?null:n(a,b,d).forkedFrom}function r(a,b,c){return null!==p(a,b,c)}},91620:(a,b,c)=>{c.d(b,{W:()=>h});var d=c(2208);let e=["Read-only mode: edits, staging, commits, pushes, service restarts, and GitHub comments are prohibited.","Every finding carries file:line evidence. Clean work earns a clear NO FINDINGS verdict."],f="Two standing rules. (1) Anchor the frame: when the assignment carries the requester's originating requirement, validate the work against that verbatim requirement, never against the artifact's previous revision — WRONG-PREMISE (\"this does not serve the original requirement\") is an expected verdict and outranks any finding about internal rigour. (2) Over-engineering pass: on every review, flag machinery heavier than the problem it solves (a library plus wrapper where a native primitive does), name the simpler mechanism, and report what to cut — OVER-BUILT is a first-class verdict, and a round that only removes scope is a successful round.",g=`http://127.0.0.1:${process.env.PORT?.trim()||"8898"}`,h=[{id:"orchestrator",name:"Orchestrator",description:"Coordinates fresh agents through the Viewer control plane.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Operating mode for the coordination run.",kind:"select",options:["standard","plan-tickets","wayfind","backlog-campaign"]},{key:"repo",label:"Repository",description:"Repository for backlog-campaign mode.",kind:"text"},{key:"issueQuery",label:"Issue query",description:"GitHub issue query for backlog-campaign mode.",kind:"text"},{key:"urgent",label:"Urgent list",description:"Comma-separated urgent issue ids.",kind:"text"},{key:"maxWorkers",label:"Maximum workers",description:"Worker cap for backlog-campaign mode.",kind:"integer",default:3,min:1,max:20},{key:"mergePolicy",label:"Merge policy",description:"Delivery policy for backlog-campaign mode.",kind:"select",options:["pr","merge"]},{key:"completionPolicy",label:"Completion policy",description:"Terminal policy for backlog-campaign mode.",kind:"select",options:["pr-opened","merged","released"]}],promptScaffold:`You are the Orchestrator. Drive work through the production Viewer API at ${g}. Use fresh empty sessions with src lineage; forks are disabled. Keep every worker visible and controllable in the Viewer.
300
300
 
301
301
  Mode: {{mode}}
@@ -306,5 +306,5 @@ Maximum workers: {{maxWorkers}}
306
306
  Merge policy: {{mergePolicy}}
307
307
  Completion policy: {{completionPolicy}}
308
308
 
309
- For backlog-campaign mode, inventory dependencies before assignment, use Opus/Sol gates, route backend work to Terra and frontend work to Opus, complete one review round, and require root release checks. Before a Viewer replacement, preserve the external-worker deployment barrier.`,safetyFences:[`Viewer control uses ${g} with src lineage.`,"Fresh empty sessions only; forks are disabled.","One owner holds a file at a time across active worktrees."],capabilities:["spawn"]},{id:"reviewer",name:"Reviewer",description:"Reviews a code diff and returns severity-ranked evidence-backed findings.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"diffSource",label:"Diff source",description:"Diff or pull request reference to inspect.",kind:"text",required:!0},{key:"lens",label:"Lens",description:"Review lens.",kind:"select",options:["correctness","over-engineering","silent-failure","test-coverage","scope","prod-ops","standards+spec","code-smells","all"]},{key:"mode",label:"Mode",description:"Reviewer context mode.",kind:"select",options:["fresh"]},{key:"parallelN",label:"Parallel passes",description:"Independent review passes.",kind:"integer",min:1,max:8}],promptScaffold:`You are a fresh-context Reviewer. Inspect {{diffSource}} with lens {{lens}}. Run {{parallelN}} independent pass(es), preserving their axes. Report the reviewed SHA. State plainly when GitHub or DNS access was unavailable. Classify any gate blocked by sandbox limits as an environmental note and keep it out of code findings. Run TypeScript checks with bunx tsc --noEmit --incremental false so they do not need a tsbuildinfo write in the checkout. Return severity-ranked findings with file:line evidence, or exactly NO FINDINGS when the diff is clean. Every finding is an actionable fix plan: clear problem statement, fix intent, constraints, and acceptance criteria. No copy-paste code unless absolutely necessary. ${f}`,safetyFences:e,capabilities:["read-only"]},{id:"verifier",name:"Verifier",description:"Tests supplied hypotheses and returns a per-claim evidence verdict.",config:{engine:"codex",model:d.je,effort:"high"},parameters:[{key:"claims",label:"Claims",description:"Hypotheses to confirm or refute.",kind:"text",required:!0}],promptScaffold:"You are a Verifier. Evaluate these supplied claims: {{claims}}. Rank falsifiable hypotheses before testing. Return CONFIRMED or WRONG for every claim with exact evidence and identify missing evidence.",safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.je,effort:"medium"},parameters:[{key:"mode",label:"Mode",description:"Implementation discipline.",kind:"select",options:["plain","apply-fixes","tdd","diagnose","prototype","merge-resolve"]},{key:"domain",label:"Domain",description:"Product domain for the implementation.",kind:"select",options:["general","frontend"]}],promptScaffold:"You are a Builder in {{mode}} mode. Implement the scoped product directive with focused checks. Keep changes within the assigned file ownership, run a self-review, and report the verification evidence.",safetyFences:["Product source changes stay inside the assigned scope.","A deployment requires a Deployer role and explicit operator approval."],capabilities:[]},{id:"architect",name:"Architect",description:"Produces an evidence-grounded design without product edits.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Architecture output mode.",kind:"select",options:["design","spec","architecture-audit"]}],promptScaffold:`You are an Architect in {{mode}} mode. Ground the design in current code, state options and trade-offs, then deliver a design document. Product-source edits are prohibited. Open the document with the requester's originating requirement verbatim (with date and source; redact credentials and personal data). The default answer to "should we build this" is no unless that requirement demands it; validate the final design against the quote, and move cut scope into a "Deferred — not currently justified" section instead of deleting it. ${f}`,safetyFences:["Product-source edits, staging, commits, pushes, and service restarts are prohibited.","Capture an ADR only for a hard-to-reverse decision with a material trade-off."],capabilities:["read-only"]},{id:"cleaner",name:"Cleaner",description:"Safely recovers a dirty checkout under a backup contract.",config:{engine:"codex",model:d.fC,effort:"low"},parameters:[],promptScaffold:"You are a Cleaner. Classify the dirty checkout, preserve recoverable evidence before each destructive operation, and keep sibling worktrees untouched. Report the exact recovery actions and resulting git status.",safetyFences:["Create a backup before each destructive operation.","Sibling worktrees and user data remain untouched without explicit operator approval."],capabilities:[]},{id:"prod-auditor",name:"Prod-auditor",description:"Performs a read-only evidence-backed production investigation.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"questions",label:"Questions",description:"Production questions to investigate.",kind:"text",required:!0}],promptScaffold:"You are a Prod-auditor. Investigate {{questions}} through the production read wrapper only. Cite every finding with the exact command or SQL and UTC time bounds. Return evidence with no runtime mutation.",safetyFences:["Use the production read wrapper only.","Writes, restarts, deploys, and credential disclosure are prohibited."],capabilities:["read-only","production-read"]},{id:"deployer",name:"Deployer",description:"Plans a blue/green production deployment and stops for approval before mutation.",config:{engine:"codex",model:d.fC,effort:"medium"},parameters:[{key:"sha",label:"Merged SHA",description:"Merged commit SHA to deploy.",kind:"text",required:!0},{key:"pr",label:"Pull request",description:"Optional pull request reference.",kind:"text"}],promptScaffold:"You are a Deployer. Plan the blue/green deployment for merged SHA {{sha}} (PR {{pr}}). Validate the inactive color, present each mutating step for explicit operator approval, then stop. Preserve the external-worker deployment barrier.",safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]},91701:(a,b,c)=>{c.d(b,{AY:()=>l,BD:()=>e,JJ:()=>f,Mi:()=>g,bj:()=>i,fz:()=>d,uK:()=>h,xc:()=>k});let d=3e5,e="delivery cancelled because",f=`${e} its owning account migration was stopped; send again to authorize a fresh delivery`,g=`${e} its owning account migration was rolled back; send again to authorize a fresh delivery`,h=`${e} its owning account migration committed; send again to authorize a fresh delivery action`;function i(a,b){let c=Date.parse(b),d=Date.parse(a.assignedAt??a.createdAt);return Number.isFinite(c)&&Number.isFinite(d)&&d<c}function j(a){let b=Date.parse(a);return Number.isFinite(b)?b:0}function k(a,b,c){return"draining"===b.state&&a.engineRouting[b.engine].activeAccountId===b.targetId&&!l(a,b,c)}function l(a,b,c){let e=function(a,b){let c=j(b.updatedAt);for(let d of Object.values(a.conversations))d.migration?.intentId===b.id&&"requested"!==d.migration.phase&&"waiting-turn"!==d.migration.phase&&(c=Math.max(c,j(d.migration.updatedAt)));return c}(a,b);return e>c||c-e>=d}},91836:(a,b,c)=>{c.d(b,{Me:()=>k,dH:()=>o,eV:()=>l,tX:()=>n});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(47985);function k(a){return a.replace(/[^A-Za-z0-9]/g,"-")}function l(a,b,c=i().join(g().homedir(),".claude","projects")){return i().join(c,k(a),b+".jsonl")}function m(a,b=65536,c){if(c){let d=(0,j.zy)(a,c.size,c.mtimeMs,{maxBytes:b});return d.complete?d.value?.text??"":""}try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(b),d=e().readSync(c,a,0,a.length,0);return a.toString("utf8",0,d)}finally{e().closeSync(c)}}catch{return""}}function n(a,b={}){let c=m(a,b.bytes??65536,b.identity);if(!c)return null;let d=c.split("\n");for(let a of(void 0!==b.maxLines&&(d=d.slice(0,b.maxLines)),d))if(a.trim())try{let c=JSON.parse(a),d="string"==typeof c.cwd?c.cwd:"string"==typeof c.payload?.cwd?c.payload.cwd:null;if(!d||b.requireDir&&!e().existsSync(d))continue;return d}catch{}return null}function o(a,b){let c=m(a,65536,b);if(!c)return null;for(let a of c.split("\n").slice(0,10))if(a.trim())try{let b=JSON.parse(a),c="string"==typeof b.payload?.timestamp?b.payload.timestamp:"string"==typeof b.timestamp?b.timestamp:null;if(c&&Number.isFinite(Date.parse(c)))return new Date(c).toISOString()}catch{}return null}},92128:(a,b,c)=>{c.d(b,{Gn:()=>d,Zc:()=>h,rX:()=>e,v9:()=>g});let d=300,e=10080;function f(a,b){return null==a.windowMinutes&&null!==b&&null!=a.resetsAt&&a.resetsAt-b>60*d+1800}function g(a,b,c=null){let d={session:null,weekly:null},e=[];for(let[c,f]of[["session",a],["weekly",b]]){var h;if(!f)continue;let a="number"!=typeof(h=f.windowMinutes)||!Number.isFinite(h)||h<=0?null:h<=1440?"session":"weekly";a&&!d[a]?d[a]=f:e.push({slot:c,window:f})}for(let{slot:a,window:b}of e){let e="session"===a&&f(b,c)?"weekly":a;d[e]||(d[e]=b)}return d}function h(a){return a?.session&&!a.weekly&&f(a.session,a.capturedAt)?{...a,session:null,weekly:a.session}:a}},93812:(a,b,c)=>{c.d(b,{GU:()=>f,QN:()=>h,sJ:()=>g});let d=Object.freeze(["computer-use"]);Object.freeze(["computer-use"]),Object.freeze([]),Object.freeze([]);let e=Object.freeze({"computer-use":Object.freeze(["computer-use"])});function f(a){let b=a.origin?.kind;if(void 0!==b&&"operator"!==b||a.parentConversationId||a.agentRole)return"delegated";let c=a.delegationDepth;return"number"==typeof c&&0!==c?"delegated":"operator-root"}function g(a){return Array.isArray(a)?[...new Set(a.filter(a=>d.includes(a)))]:[]}function h(a){return[...new Set(a.flatMap(a=>e[a]??[]))]}},94284:(a,b,c)=>{c.d(b,{E:()=>e});let d=globalThis;function e(a){return d.__llvCaches??={},d.__llvCaches[a]??=new Map,d.__llvCaches[a]}},96561:(a,b,c)=>{c.d(b,{ru:()=>e,x0:()=>f}),c(51455);let d=globalThis;function e(a){d.__llvConversationCatalog=a}function f(){return d.__llvConversationCatalog??[]}},96694:(a,b,c)=>{c.d(b,{l:()=>e});let d=process;function e(){return d.__llvStructuredDeliveryKick?.()}},98918:(a,b,c)=>{c.d(b,{L5:()=>X,Ml:()=>ab,NO:()=>aa,Sn:()=>ac,Su:()=>V,Vd:()=>Y,WJ:()=>_,Yj:()=>z,ay:()=>w,hx:()=>R,ke:()=>W,mL:()=>K,ov:()=>M,tR:()=>$,tu:()=>U});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(55883),l=c(68574),m=c(79866),n=c(91620),o=c(65465),p=c(55204),q=c(73385);let r=()=>(0,j.BQ)("review-loop-presets.json"),s=[{name:"Codex high → Fable",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"claude",model:"fable",effort:null}},{name:"Fable → Codex xhigh",implementer:{engine:"claude",model:"fable",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Sonnet → Codex xhigh",implementer:{engine:"claude",model:"sonnet",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Codex high → Codex xhigh",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"codex",model:null,effort:"xhigh"}}],t=[{name:"Terra high → Sol xhigh",implementer:{engine:"codex",model:"gpt-5.6-terra",effort:"high"},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}},{name:"Terra low → Sol xhigh",implementer:{engine:"codex",model:"gpt-5.6-terra",effort:"low"},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}},{name:"Terra high → Fable",implementer:{engine:"codex",model:"gpt-5.6-terra",effort:"high"},reviewer:{engine:"claude",model:"fable",effort:null}},{name:"Fable → Sol xhigh",implementer:{engine:"claude",model:"fable",effort:null},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}},{name:"Sonnet → Sol xhigh",implementer:{engine:"claude",model:"sonnet",effort:null},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}}];function u(a,b,c={}){if("builder"!==b)return{...a.find(a=>a.id===b).config};let d=(0,p.fy)(b,c,{},a);return d.ok?{...d.value.config}:{...n.W.find(a=>a.id===b).config}}function v(){let a=(0,q.e3)(),b=u(a,"builder"),c=u(a,"builder",{mode:"apply-fixes",domain:"general"}),d=u(a,"reviewer"),e=u(a,"architect");return[{name:"Sol medium → Sol xhigh",implementer:b,reviewer:d},{name:"Terra low → Sol xhigh",implementer:c,reviewer:d},{name:"Sol medium → Opus 5",implementer:b,reviewer:e},{name:"Opus 5 → Sol xhigh",implementer:e,reviewer:d},{name:"Sonnet → Sol xhigh",implementer:{engine:"claude",model:"sonnet",effort:"high"},reviewer:d}].map(a=>({...a,managed:"role-registry"}))}function w(){return u((0,q.e3)(),"architect")}v();let x=/^(?:claude|codex):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,y=/^(?:default|unknown|managed:[0-9a-f]{12})$/;function z(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,b,"utf8"),g().renameSync(c,a)}function A(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"implement-review-loop"===a.template&&"string"==typeof a.cwd&&"string"==typeof a.implementerPath&&"string"==typeof a.baseRef&&(void 0===a.headRef||null===a.headRef||"string"==typeof a.headRef)&&(void 0===a.targetSha||null===a.targetSha||"string"==typeof a.targetSha)&&(void 0===a.spec||"string"==typeof a.spec)&&(void 0===a.hostClaim||null===a.hostClaim||x.test(a.hostClaim.sessionKey)&&y.test(a.hostClaim.accountRef))&&Array.isArray(a.rounds)}function B(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.name&&C(a.implementer)&&C(a.reviewer)&&(void 0===a.managed||"role-registry"===a.managed)}function C(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&("claude"===a.engine||"codex"===a.engine)&&(null===a.model||"string"==typeof a.model)&&(null===a.effort||"string"==typeof a.effort)}function D(a,b){return a.engine===b.engine&&a.model===b.model&&a.effort===b.effort}let E=null,F=new Map,G=new WeakMap;function H(a){return G.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function I(){return P().signature()}function J(a){return a.map(a=>({...a,hostClaim:a.hostClaim?{...a.hostClaim}:null,rounds:a.rounds.map(a=>({...a}))}))}function K(){let a=I();if(E?.signature===a)return H(J(E.flows));let b=P().snapshot(),c=I();return a===c&&(E={signature:c,flows:b}),H(J(b))}function L(a){return!["approved","done_comment","needs_decision","closed"].includes(a.state)}function M(){return P().snapshotForController()}function N(){let a=function(){let a;try{a=g().readFileSync((0,j.BQ)("flows.json"),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy flow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy flow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy flow state must be an object");if(!Array.isArray(a.flows)||!a.flows.every(A))throw Error("legacy flow state contains malformed records");return a.flows.map(a=>({...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?w():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,terminalAt:a.terminalAt??null,error:a.error??null}))}))}function O(a){return A(a)?{...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?w():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,terminalAt:a.terminalAt??null,error:a.error??null}))}:null}function P(){let a=(0,j.BQ)("state.sqlite"),b=F.get(a);if(b)return b;(0,m.t0)(a,[{collection:"flows",schemaVersion:3,migrationId:"flows-json-v1",loadRecords:N,key:a=>a.id,controllerActive:L}]);let c=new m.UY(a,{collection:"flows",schemaVersion:3,busyMessage:"flow state is busy",key:a=>a.id,decode:O,clone:a=>J([a])[0],controllerActive:L,strictDecode:!0,decodeError:a=>Error("flow SQLite state contains a malformed row",{cause:a})});return F.set(a,c),c}function Q(a,b,c){return a===c.path&&(b??null)===c.conversationId}async function R(a=(0,k.tk)()){let b=K(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.implementerPath,conversationId:b.implementerConversationId??null},e=function(a,b){if(a.implementerConversationId?.startsWith("conversation_")){let c=b.conversation(a.implementerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.implementerPath&&(a.implementerPath=c,!0)}let c=b.conversationForPath(a.implementerPath);if(!c)return!1;a.implementerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.implementerPath=d),!0}(b,a),f=[];await (0,l.pV)(b.rounds,b=>{let c={path:b.reviewerPath,conversationId:b.reviewerConversationId??null};(function(a,b){if(a.reviewerConversationId?.startsWith("conversation_")){let c=b.conversation(a.reviewerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.reviewerPath&&(a.reviewerPath=c,!0)}if(!a.reviewerPath)return!1;let c=b.conversationForPath(a.reviewerPath);if(!c)return!1;a.reviewerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.reviewerPath=d),!0})(b,a)&&f.push({n:b.n,before:c,after:{path:b.reviewerPath,conversationId:b.reviewerConversationId??null}})}),(e||f.length>0)&&c.push({id:b.id,implementer:e?{before:d,after:{path:b.implementerPath,conversationId:b.implementerConversationId??null}}:null,rounds:f})}),function(a){if(0===a.length)return;let b=K(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.implementer&&Q(a.implementerPath,a.implementerConversationId,b.implementer.before)&&(a.implementerPath=b.implementer.after.path,a.implementerConversationId=b.implementer.after.conversationId,d=!0),b.rounds)){let b=a.rounds.find(a=>a.n===c.n);b&&Q(b.reviewerPath,b.reviewerConversationId,c.before)&&(b.reviewerPath=c.after.path,b.reviewerConversationId=c.after.conversationId,d=!0)}}d&&U(b)}(c)}function S(a){let b={...a};return delete b.revision,JSON.stringify(b)}function T(a){for(let b of a){let a=P().get(b.id)??void 0;if(a&&void 0!==b.revision&&b.revision<(a.revision??0)){for(let a of Object.keys(b))delete b[a];Object.assign(b,structuredClone(a));continue}b.revision=a&&S(a)===S(b)?a.revision??0:(a?.revision??0)+1}}function U(a){let b=G.get(a);if(!b){P().replaceSync(a,{beforePersist:T}),H(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));P().patchSync(()=>(T(d),{records:d,deleteKeys:e.filter(a=>{let c=P().get(a);return null!==c&&JSON.stringify(c)===b.get(a)})})),H(a)}function V(a,b){let c=[...new Set(a)];if(0===c.length)return;let d=P();d.patchSync(()=>{let a=b(c.flatMap(a=>{let b=d.get(a);return b?[b]:[]}));return T(a),{records:a}})}async function W(a){return await P().mutate(a,({dirtyRecords:a})=>T(a))}function X(a){return P().withSnapshotSync(a)}function Y(){let a=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(r()),b=Array.isArray(a?.presets)?a.presets.filter(B):[],c=function(a,b=v()){let c=a.filter(a=>"role-registry"!==a.managed&&![...s,...t].some(b=>a.name===b.name&&D(a.implementer,b.implementer)&&D(a.reviewer,b.reviewer))),d=new Set(c.map(a=>a.name));return[...b.filter(a=>!d.has(a.name)),...c]}(b);return JSON.stringify(c)!==JSON.stringify(b)&&function(a){var b;let c;b=r(),g().mkdirSync(i().dirname(b),{recursive:!0}),c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),g().writeFileSync(c,JSON.stringify({presets:a},null,2)+"\n","utf8"),g().renameSync(c,b)}(c),c}function Z(a){return i().join((0,j.BQ)("flows"),a)}function $(a,b){return i().join(Z(a),`round-${b}-review.md`)}function _(a,b){return i().join(Z(a),`round-${b}-last-message.md`)}function aa(a,b){return i().join(Z(a),`round-${b}-stderr.txt`)}function ab(a,b){return i().join(Z(a),`round-${b}-stdout.log`)}function ac(a,b){let c=b.replace(/^\s*VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)\s*$/im,"").trim();return`VERDICT: ${a}
310
- ${c?"\n"+c+"\n":"\n"}`}},98934:(a,b,c)=>{c.d(b,{AM:()=>k,LB:()=>o,Oh:()=>f,Vm:()=>t,dw:()=>n,eW:()=>l,vZ:()=>s});var d=c(30277),e=c(31973);function f(a,b=Date.now()){if(!a.enabled)return{kind:"unavailable",reason:"account-disabled",stale:a.stale,retryAt:null};if("failed"===a.authentication)return{kind:"unavailable",reason:"auth-failed",stale:a.stale,retryAt:null};if("exhausted"===a.limits){let c=function(a,b){if(!a)return null;let c=Date.parse(a);return Number.isFinite(c)&&c>b?new Date(c).toISOString():null}(a.retryAt,b);return c?{kind:"retry-at",reason:"hard-limit",stale:a.stale,retryAt:c}:{kind:"unavailable",reason:"hard-limit",stale:a.stale,retryAt:null}}return{kind:"admissible",basis:a.stale||"unknown"===a.authentication?"last-known":"current",stale:a.stale,retryAt:null}}let g=new Set(["starting","live","idle","handoff"]),h=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]),i=new Set(["committed","rolled-back"]),j=new Set(["held","assigned","delivery-uncertain"]);function k(a={}){return{now:a.now??(()=>Date.now()),pidAlive:a.pidAlive??(a=>d.B.pidAlive(a)),processIdentity:a.processIdentity??(a=>d.B.processIdentity(a))}}function l(a,b){return!!a&&!!Number.isInteger(a.pid)&&!(a.pid<=0)&&!!b.pidAlive(a.pid)&&(null===a.startIdentity||b.processIdentity(a.pid)===a.startIdentity)}function m(a,b){let c=a?Date.parse(a):NaN;return!!Number.isFinite(c)&&b.now()-c<3e5}function n(a,b){return!!g.has(a.status)&&(!!(l(a.host?.agent,b)||l(a.host?.panePid,b)||l(a.structuredHost?.process??null,b))||m(a.updatedAt,b))}function o(a,b,c){if(!h.has(b.state))return!1;if(l(b.admissionOwner,c)||l(b.verifiedHost?.agent,c)||l(b.pane?.panePid,c))return!0;let d=b.key?a.entries[(0,e.pp)(b.key)]:void 0;return!!(d&&n(d,c))||m(b.createdAt,c)}function p(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function q(a,b,c,d){let e=b.generations.at(-1);if(e&&l(e.host?.tmuxHost?.agent,d))return!0;for(let a of c)if(function(a,b){return a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b)}(b,a))return!0;if(b.migration&&!i.has(b.migration.phase))return!0;let f=c=>p(a,c)===b.id;for(let b of Object.values(a.heldDeliveries))if(j.has(b.state)&&(f(b.conversationId)||f(b.runtimeConversationId))&&("delivery-uncertain"!==b.state||m(b.createdAt,d)))return!0;for(let b of Object.values(a.receipts))if(f(b.conversationId)&&o(a,b,d))return!0;return!1}function r(a,b,c){let d=new Set;for(let e of Object.values(a.entries))e.key.engine===b&&n(e,c)&&d.add(e.artifactPath);return d}function s(a,b={}){let c=k(b),d=new Map,e=b=>{let e=d.get(b);return e||(e=r(a,b,c),d.set(b,e)),e},f=[];for(let b of Object.values(a.heldDeliveries)){if("delivery-uncertain"!==b.state||m(b.createdAt,c))continue;let d=a.conversations[p(a,b.conversationId)];d&&(q(a,d,e(d.engine),c)||f.push(b.id))}return f}function t(a,b,c,d={}){let e=k(d),f=r(a,b,e),g=[];for(let d of Object.values(a.conversations))d.engine===b&&d.generations.at(-1)?.accountId===c&&q(a,d,f,e)&&g.push(d.id);return g}}};
309
+ For backlog-campaign mode, inventory dependencies before assignment, use Opus/Sol gates, route backend work to Terra and frontend work to Opus, complete one review round, and require root release checks. Before a Viewer replacement, preserve the external-worker deployment barrier.`,safetyFences:[`Viewer control uses ${g} with src lineage.`,"Fresh empty sessions only; forks are disabled.","One owner holds a file at a time across active worktrees."],capabilities:["spawn"]},{id:"reviewer",name:"Reviewer",description:"Reviews a code diff and returns severity-ranked evidence-backed findings.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"diffSource",label:"Diff source",description:"Diff or pull request reference to inspect.",kind:"text",required:!0},{key:"lens",label:"Lens",description:"Review lens.",kind:"select",options:["correctness","over-engineering","silent-failure","test-coverage","scope","prod-ops","standards+spec","code-smells","all"]},{key:"mode",label:"Mode",description:"Reviewer context mode.",kind:"select",options:["fresh"]},{key:"parallelN",label:"Parallel passes",description:"Independent review passes.",kind:"integer",min:1,max:8}],promptScaffold:`You are a fresh-context Reviewer. Inspect {{diffSource}} with lens {{lens}}. Run {{parallelN}} independent pass(es), preserving their axes. Report the reviewed SHA. State plainly when GitHub or DNS access was unavailable. Classify any gate blocked by sandbox limits as an environmental note and keep it out of code findings. Run TypeScript checks with bunx tsc --noEmit --incremental false so they do not need a tsbuildinfo write in the checkout. Return severity-ranked findings with file:line evidence, or exactly NO FINDINGS when the diff is clean. Every finding is an actionable fix plan: clear problem statement, fix intent, constraints, and acceptance criteria. No copy-paste code unless absolutely necessary. ${f}`,safetyFences:e,capabilities:["read-only"]},{id:"verifier",name:"Verifier",description:"Tests supplied hypotheses and returns a per-claim evidence verdict.",config:{engine:"codex",model:d.je,effort:"high"},parameters:[{key:"claims",label:"Claims",description:"Hypotheses to confirm or refute.",kind:"text",required:!0}],promptScaffold:"You are a Verifier. Evaluate these supplied claims: {{claims}}. Rank falsifiable hypotheses before testing. Return CONFIRMED or WRONG for every claim with exact evidence and identify missing evidence.",safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.je,effort:"medium"},parameters:[{key:"mode",label:"Mode",description:"Implementation discipline.",kind:"select",options:["plain","apply-fixes","tdd","diagnose","prototype","merge-resolve"]},{key:"domain",label:"Domain",description:"Product domain for the implementation.",kind:"select",options:["general","frontend"]}],promptScaffold:"You are a Builder in {{mode}} mode. Implement the scoped product directive with focused checks. Keep changes within the assigned file ownership, run a self-review, and report the verification evidence.",safetyFences:["Product source changes stay inside the assigned scope.","A deployment requires a Deployer role and explicit operator approval."],capabilities:[]},{id:"architect",name:"Architect",description:"Produces an evidence-grounded design without product edits.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Architecture output mode.",kind:"select",options:["design","spec","architecture-audit"]}],promptScaffold:`You are an Architect in {{mode}} mode. Ground the design in current code, state options and trade-offs, then deliver a design document. Product-source edits are prohibited. Open the document with the requester's originating requirement verbatim (with date and source; redact credentials and personal data). The default answer to "should we build this" is no unless that requirement demands it; validate the final design against the quote, and move cut scope into a "Deferred — not currently justified" section instead of deleting it. ${f}`,safetyFences:["Product-source edits, staging, commits, pushes, and service restarts are prohibited.","Capture an ADR only for a hard-to-reverse decision with a material trade-off."],capabilities:["read-only"]},{id:"cleaner",name:"Cleaner",description:"Safely recovers a dirty checkout under a backup contract.",config:{engine:"codex",model:d.fC,effort:"low"},parameters:[],promptScaffold:"You are a Cleaner. Classify the dirty checkout, preserve recoverable evidence before each destructive operation, and keep sibling worktrees untouched. Report the exact recovery actions and resulting git status.",safetyFences:["Create a backup before each destructive operation.","Sibling worktrees and user data remain untouched without explicit operator approval."],capabilities:[]},{id:"prod-auditor",name:"Prod-auditor",description:"Performs a read-only evidence-backed production investigation.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"questions",label:"Questions",description:"Production questions to investigate.",kind:"text",required:!0}],promptScaffold:"You are a Prod-auditor. Investigate {{questions}} through the production read wrapper only. Cite every finding with the exact command or SQL and UTC time bounds. Return evidence with no runtime mutation.",safetyFences:["Use the production read wrapper only.","Writes, restarts, deploys, and credential disclosure are prohibited."],capabilities:["read-only","production-read"]},{id:"deployer",name:"Deployer",description:"Plans a blue/green production deployment and stops for approval before mutation.",config:{engine:"codex",model:d.fC,effort:"medium"},parameters:[{key:"sha",label:"Merged SHA",description:"Merged commit SHA to deploy.",kind:"text",required:!0},{key:"pr",label:"Pull request",description:"Optional pull request reference.",kind:"text"}],promptScaffold:"You are a Deployer. Plan the blue/green deployment for merged SHA {{sha}} (PR {{pr}}). Validate the inactive color, present each mutating step for explicit operator approval, then stop. Preserve the external-worker deployment barrier.",safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]},91701:(a,b,c)=>{c.d(b,{AY:()=>l,BD:()=>e,JJ:()=>f,Mi:()=>g,bj:()=>i,fz:()=>d,uK:()=>h,xc:()=>k});let d=3e5,e="delivery cancelled because",f=`${e} its owning account migration was stopped; send again to authorize a fresh delivery`,g=`${e} its owning account migration was rolled back; send again to authorize a fresh delivery`,h=`${e} its owning account migration committed; send again to authorize a fresh delivery action`;function i(a,b){let c=Date.parse(b),d=Date.parse(a.assignedAt??a.createdAt);return Number.isFinite(c)&&Number.isFinite(d)&&d<c}function j(a){let b=Date.parse(a);return Number.isFinite(b)?b:0}function k(a,b,c){return"draining"===b.state&&a.engineRouting[b.engine].activeAccountId===b.targetId&&!l(a,b,c)}function l(a,b,c){let e=function(a,b){let c=j(b.updatedAt);for(let d of Object.values(a.conversations))d.migration?.intentId===b.id&&"requested"!==d.migration.phase&&"waiting-turn"!==d.migration.phase&&(c=Math.max(c,j(d.migration.updatedAt)));return c}(a,b);return e>c||c-e>=d}},91836:(a,b,c)=>{c.d(b,{Me:()=>k,dH:()=>o,eV:()=>l,tX:()=>n});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(47985);function k(a){return a.replace(/[^A-Za-z0-9]/g,"-")}function l(a,b,c=i().join(g().homedir(),".claude","projects")){return i().join(c,k(a),b+".jsonl")}function m(a,b=65536,c){if(c){let d=(0,j.zy)(a,c.size,c.mtimeMs,{maxBytes:b});return d.complete?d.value?.text??"":""}try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(b),d=e().readSync(c,a,0,a.length,0);return a.toString("utf8",0,d)}finally{e().closeSync(c)}}catch{return""}}function n(a,b={}){let c=m(a,b.bytes??65536,b.identity);if(!c)return null;let d=c.split("\n");for(let a of(void 0!==b.maxLines&&(d=d.slice(0,b.maxLines)),d))if(a.trim())try{let c=JSON.parse(a),d="string"==typeof c.cwd?c.cwd:"string"==typeof c.payload?.cwd?c.payload.cwd:null;if(!d||b.requireDir&&!e().existsSync(d))continue;return d}catch{}return null}function o(a,b){let c=m(a,65536,b);if(!c)return null;for(let a of c.split("\n").slice(0,10))if(a.trim())try{let b=JSON.parse(a),c="string"==typeof b.payload?.timestamp?b.payload.timestamp:"string"==typeof b.timestamp?b.timestamp:null;if(c&&Number.isFinite(Date.parse(c)))return new Date(c).toISOString()}catch{}return null}},92128:(a,b,c)=>{c.d(b,{Gn:()=>d,Zc:()=>h,rX:()=>e,v9:()=>g});let d=300,e=10080;function f(a,b){return null==a.windowMinutes&&null!==b&&null!=a.resetsAt&&a.resetsAt-b>60*d+1800}function g(a,b,c=null){let d={session:null,weekly:null},e=[];for(let[c,f]of[["session",a],["weekly",b]]){var h;if(!f)continue;let a="number"!=typeof(h=f.windowMinutes)||!Number.isFinite(h)||h<=0?null:h<=1440?"session":"weekly";a&&!d[a]?d[a]=f:e.push({slot:c,window:f})}for(let{slot:a,window:b}of e){let e="session"===a&&f(b,c)?"weekly":a;d[e]||(d[e]=b)}return d}function h(a){return a?.session&&!a.weekly&&f(a.session,a.capturedAt)?{...a,session:null,weekly:a.session}:a}},92233:(a,b,c)=>{let d;c.d(b,{B:()=>C});var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(8164);let j="/proc";function k(a){try{return f().readFileSync(h().join(j,String(a),"cmdline"),"utf8").split("\0").filter(Boolean)}catch{return[]}}function l(a){try{return f().readlinkSync(h().join(j,String(a),"cwd"))}catch{return null}}function m(a){let b;try{b=f().readFileSync(h().join(j,String(a),"stat"),"utf8")}catch{return null}return b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/)}function n(a){try{return(128&f().lstatSync(a).mode)!=0}catch{return!1}}function o(a){let b;try{b=f().readdirSync(j,{withFileTypes:!0})}catch{return}for(let c of b){let b;if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let d=Number(c.name),e=h().join(j,c.name,"fd");try{b=f().readdirSync(e,{withFileTypes:!0})}catch{continue}for(let c of b){let b,g=h().join(e,c.name);try{b=f().readlinkSync(g)}catch{continue}a(b,d,()=>n(g))}}}let p={name:"linux",pidAlive:function(a){return Number.isInteger(a)&&a>0&&f().existsSync(h().join(j,String(a)))},readArgv:k,readCwd:l,readPpid:function(a){let b=m(a),c=b?Number(b[1]):NaN;return Number.isInteger(c)&&c>1?c:null},processIdentity:function(a){let b=m(a),c=b?.[19];return c?`${a}:${c}`:null},readEnvVar:function(a,b){let c;try{c=f().readFileSync(h().join(j,String(a),"environ"),"utf8")}catch{return null}let d=b+"=",e=null;for(let a of c.split("\0"))a.startsWith(d)&&(e=a.slice(d.length));return e},listProcesses:function(){let a,b=[];try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name);b.push({pid:a,argv:k(a),cwd:l(a),tty:function(a){let b=m(a),c=b?Number(b[4]):NaN;return Number.isInteger(c)&&c>0?c:0}(a)})}return b},systemMemory:function(){try{return(0,i.NW)(f().readFileSync(h().join(j,"meminfo"),"utf8"))}catch{return null}},processMemory:function(a){let b=new Map;for(let c of a)if(Number.isInteger(c)&&!(c<=0))try{b.set(c,(0,i.sW)(f().readFileSync(h().join(j,String(c),"status"),"utf8")))}catch{}return b},ppidMap:function(){let a,b=new Map;try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name),d=m(a),e=d?Number(d[1]):NaN;Number.isInteger(e)&&e>0&&b.set(a,e)}return b},scanFdTargetsUnder:function(a,b){o(b)},scanFdTargetsFor:function(a,b){o(b)},pidWritesPath:function(a,b){let c,d;try{c=f().realpathSync(b)}catch{c=null}let e=h().join(j,String(a),"fd");try{d=f().readdirSync(e,{withFileTypes:!0})}catch{return!1}for(let a of d){let d,g=h().join(e,a.name);try{d=f().readlinkSync(g)}catch{continue}if((d===b||d===c)&&n(g))return!0}return!1},pidHoldsPath:function(a,b){let c;try{c=f().readdirSync(h().join(j,String(a),"fd"),{withFileTypes:!0})}catch{return!1}for(let d of c)try{if(f().readlinkSync(h().join(j,String(a),"fd",d.name))===b)return!0}catch{continue}return!1}};var q=c(31421),r=c(48161),s=c.n(r),t=c(49370);function u(a,b){let c=(0,q.spawnSync)(a,b,{encoding:"utf8",maxBuffer:0x1000000,timeout:1e4});return c.error||"string"!=typeof c.stdout?"":c.stdout}let v=new Map,w=1,x=/^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.*)$/;function y(a,b){let c=0,d="";for(let e of a.split("\n")){if(!e)continue;let a=e[0],f=e.slice(1);if("p"===a)c=Number(f),d="";else if("f"===a)d="";else if("a"===a)d=f;else if("n"===a&&c>0&&f){let a="w"===d||"u"===d;b(f,c,()=>a)}}}let z=null;function A(){let a=Date.now();if(z&&a-z.at<5e3)return z.byPid;let b=function(a){let b=new Map;for(let c of a.split("\n")){let a=x.exec(c);if(!a)continue;let d=Number(a[1]),e=Number(a[2]),f=(a[4]??"").trim().split(/\s+/).filter(Boolean);b.set(d,{ppid:Number.isInteger(e)&&e>1?e:null,tty:function(a){if(!a||"?"===a||"??"===a||"-"===a)return 0;let b=v.get(a);return void 0===b&&(b=w,w+=1,v.set(a,b)),b}(a[3]??""),argv:f})}return b}(u("ps",["-axo","pid=,ppid=,tty=,args="])),c=function(a){let b=new Map,c=0;for(let d of a.split("\n")){if(!d)continue;let a=d[0],e=d.slice(1);"p"===a?c=Number(e):"n"===a&&c>0&&b.set(c,e)}return b}(u("lsof",["-w","-d","cwd","-Fpn"])),d=new Map;for(let[a,e]of b)d.set(a,{argv:e.argv,ppid:e.ppid,tty:e.tty,cwd:c.get(a)??null});return z={at:a,byPid:d},d}let B={name:"portable",pidAlive:function(a){if(!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}},readArgv:function(a){return A().get(a)?.argv??[]},readCwd:function(a){return A().get(a)?.cwd??null},readPpid:function(a){return A().get(a)?.ppid??null},processIdentity:function(a){return!Number.isInteger(a)||a<=0?null:"darwin"===process.platform?(0,t.P3)(a):null},readEnvVar:function(){return null},listProcesses:function(){let a=[];for(let[b,c]of A())a.push({pid:b,argv:c.argv,cwd:c.cwd,tty:c.tty});return a},systemMemory:function(){let a=s().totalmem(),b=(0,i.Lc)(u("vm_stat",[]));if(!a||null===b)return null;let c=(0,i.yh)(u("sysctl",["-n","vm.swapusage"]));return{ramTotal:a,ramAvailable:Math.min(b,a),swapTotal:c?.swapTotal??0,swapUsed:c?.swapUsed??0}},processMemory:function(a){let b=new Set;for(let c of a)Number.isInteger(c)&&c>0&&b.add(c);let c=new Map;if(0===b.size)return c;for(let[a,d]of(0,i.CT)(u("ps",["-axo","pid=,rss="])))b.has(a)&&c.set(a,{rssBytes:d,swapBytes:0});return c},ppidMap:function(){let a=new Map;for(let[b,c]of A())null!==c.ppid&&a.set(b,c.ppid);return a},scanFdTargetsUnder:function(a,b){a&&f().existsSync(a)&&y(u("lsof",["-w","+D",a,"-Fpfan"]),b)},scanFdTargetsFor:function(a,b){let c=[...new Set(a.filter(Boolean))];0!==c.length&&y(u("lsof",["-w","-Fpfan","--",...c]),b)},pidWritesPath:function(a,b){let c=!1;return y(u("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),(a,b,d)=>{d()&&(c=!0)}),c},pidHoldsPath:function(a,b){let c=!1;return y(u("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),()=>{c=!0}),c}},C="portable"===(d=process.env.VIEWER_PROC_BACKEND)?B:"linux"===d||"linux"===process.platform?p:B},93812:(a,b,c)=>{c.d(b,{GU:()=>f,QN:()=>h,sJ:()=>g});let d=Object.freeze(["computer-use"]);Object.freeze(["computer-use"]),Object.freeze([]),Object.freeze([]);let e=Object.freeze({"computer-use":Object.freeze(["computer-use"])});function f(a){let b=a.origin?.kind;if(void 0!==b&&"operator"!==b||a.parentConversationId||a.agentRole)return"delegated";let c=a.delegationDepth;return"number"==typeof c&&0!==c?"delegated":"operator-root"}function g(a){return Array.isArray(a)?[...new Set(a.filter(a=>d.includes(a)))]:[]}function h(a){return[...new Set(a.flatMap(a=>e[a]??[]))]}},94284:(a,b,c)=>{c.d(b,{E:()=>e});let d=globalThis;function e(a){return d.__llvCaches??={},d.__llvCaches[a]??=new Map,d.__llvCaches[a]}},96561:(a,b,c)=>{c.d(b,{ru:()=>e,x0:()=>f}),c(51455);let d=globalThis;function e(a){d.__llvConversationCatalog=a}function f(){return d.__llvConversationCatalog??[]}},96694:(a,b,c)=>{c.d(b,{l:()=>e});let d=process;function e(){return d.__llvStructuredDeliveryKick?.()}},98918:(a,b,c)=>{c.d(b,{L5:()=>X,Ml:()=>ab,NO:()=>aa,Sn:()=>ac,Su:()=>V,Vd:()=>Y,WJ:()=>_,Yj:()=>z,ay:()=>w,hx:()=>R,ke:()=>W,mL:()=>K,ov:()=>M,tR:()=>$,tu:()=>U});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(50920),k=c(4116),l=c(68574),m=c(79866),n=c(91620),o=c(65465),p=c(55204),q=c(73385);let r=()=>(0,j.BQ)("review-loop-presets.json"),s=[{name:"Codex high → Fable",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"claude",model:"fable",effort:null}},{name:"Fable → Codex xhigh",implementer:{engine:"claude",model:"fable",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Sonnet → Codex xhigh",implementer:{engine:"claude",model:"sonnet",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Codex high → Codex xhigh",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"codex",model:null,effort:"xhigh"}}],t=[{name:"Terra high → Sol xhigh",implementer:{engine:"codex",model:"gpt-5.6-terra",effort:"high"},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}},{name:"Terra low → Sol xhigh",implementer:{engine:"codex",model:"gpt-5.6-terra",effort:"low"},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}},{name:"Terra high → Fable",implementer:{engine:"codex",model:"gpt-5.6-terra",effort:"high"},reviewer:{engine:"claude",model:"fable",effort:null}},{name:"Fable → Sol xhigh",implementer:{engine:"claude",model:"fable",effort:null},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}},{name:"Sonnet → Sol xhigh",implementer:{engine:"claude",model:"sonnet",effort:null},reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"}}];function u(a,b,c={}){if("builder"!==b)return{...a.find(a=>a.id===b).config};let d=(0,p.fy)(b,c,{},a);return d.ok?{...d.value.config}:{...n.W.find(a=>a.id===b).config}}function v(){let a=(0,q.e3)(),b=u(a,"builder"),c=u(a,"builder",{mode:"apply-fixes",domain:"general"}),d=u(a,"reviewer"),e=u(a,"architect");return[{name:"Sol medium → Sol xhigh",implementer:b,reviewer:d},{name:"Terra low → Sol xhigh",implementer:c,reviewer:d},{name:"Sol medium → Opus 5",implementer:b,reviewer:e},{name:"Opus 5 → Sol xhigh",implementer:e,reviewer:d},{name:"Sonnet → Sol xhigh",implementer:{engine:"claude",model:"sonnet",effort:"high"},reviewer:d}].map(a=>({...a,managed:"role-registry"}))}function w(){return u((0,q.e3)(),"architect")}v();let x=/^(?:claude|codex):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,y=/^(?:default|unknown|managed:[0-9a-f]{12})$/;function z(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,b,"utf8"),g().renameSync(c,a)}function A(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"implement-review-loop"===a.template&&"string"==typeof a.cwd&&"string"==typeof a.implementerPath&&"string"==typeof a.baseRef&&(void 0===a.headRef||null===a.headRef||"string"==typeof a.headRef)&&(void 0===a.targetSha||null===a.targetSha||"string"==typeof a.targetSha)&&(void 0===a.spec||"string"==typeof a.spec)&&(void 0===a.hostClaim||null===a.hostClaim||x.test(a.hostClaim.sessionKey)&&y.test(a.hostClaim.accountRef))&&Array.isArray(a.rounds)}function B(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.name&&C(a.implementer)&&C(a.reviewer)&&(void 0===a.managed||"role-registry"===a.managed)}function C(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&("claude"===a.engine||"codex"===a.engine)&&(null===a.model||"string"==typeof a.model)&&(null===a.effort||"string"==typeof a.effort)}function D(a,b){return a.engine===b.engine&&a.model===b.model&&a.effort===b.effort}let E=null,F=new Map,G=new WeakMap;function H(a){return G.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function I(){return P().signature()}function J(a){return a.map(a=>({...a,hostClaim:a.hostClaim?{...a.hostClaim}:null,rounds:a.rounds.map(a=>({...a}))}))}function K(){let a=I();if(E?.signature===a)return H(J(E.flows));let b=P().snapshot(),c=I();return a===c&&(E={signature:c,flows:b}),H(J(b))}function L(a){return!["approved","done_comment","needs_decision","closed"].includes(a.state)}function M(){return P().snapshotForController()}function N(){let a=function(){let a;try{a=g().readFileSync((0,j.BQ)("flows.json"),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy flow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy flow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy flow state must be an object");if(!Array.isArray(a.flows)||!a.flows.every(A))throw Error("legacy flow state contains malformed records");return a.flows.map(a=>({...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?w():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,terminalAt:a.terminalAt??null,error:a.error??null}))}))}function O(a){return A(a)?{...a,project:(0,o.G$)(a.project),revision:a.revision??0,targetSha:a.targetSha??null,implementerConversationId:a.implementerConversationId??null,reviewerFallback:void 0===a.reviewerFallback&&"codex"===a.roles.reviewer.engine?w():a.reviewerFallback??null,pausedState:a.pausedState??null,kickoffDelivery:a.kickoffDelivery??null,hostClaim:a.hostClaim??null,rounds:a.rounds.map(a=>({...a,reviewerConversationId:a.reviewerConversationId??null,reviewerRole:a.reviewerRole??null,attemptedAccounts:a.attemptedAccounts??[],autoRetryCount:a.autoRetryCount??0,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,reviewerIdentity:a.reviewerIdentity??null,reviewHeadSha:a.reviewHeadSha??null,spawnStartedAt:a.spawnStartedAt??null,launchId:a.launchId??null,launchLeaseUntil:a.launchLeaseUntil??null,relayStartedAt:a.relayStartedAt??null,relayRetryCount:a.relayRetryCount??0,relayDeliveryAttempt:a.relayDeliveryAttempt??0,relayDeliveryTransport:a.relayDeliveryTransport??null,relayRetryAt:a.relayRetryAt??null,relayRetryRequiresIdempotency:a.relayRetryRequiresIdempotency??!1,relayDelivery:a.relayDelivery??null,relayPendingSettlement:a.relayPendingSettlement??null,terminalAt:a.terminalAt??null,error:a.error??null}))}:null}function P(){let a=(0,j.BQ)("state.sqlite"),b=F.get(a);if(b)return b;(0,m.t0)(a,[{collection:"flows",schemaVersion:3,migrationId:"flows-json-v1",loadRecords:N,key:a=>a.id,controllerActive:L}]);let c=new m.UY(a,{collection:"flows",schemaVersion:3,busyMessage:"flow state is busy",key:a=>a.id,decode:O,clone:a=>J([a])[0],controllerActive:L,strictDecode:!0,decodeError:a=>Error("flow SQLite state contains a malformed row",{cause:a})});return F.set(a,c),c}function Q(a,b,c){return a===c.path&&(b??null)===c.conversationId}async function R(a=(0,k.tk)()){let b=K(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.implementerPath,conversationId:b.implementerConversationId??null},e=function(a,b){if(a.implementerConversationId?.startsWith("conversation_")){let c=b.conversation(a.implementerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.implementerPath&&(a.implementerPath=c,!0)}let c=b.conversationForPath(a.implementerPath);if(!c)return!1;a.implementerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.implementerPath=d),!0}(b,a),f=[];await (0,l.pV)(b.rounds,b=>{let c={path:b.reviewerPath,conversationId:b.reviewerConversationId??null};(function(a,b){if(a.reviewerConversationId?.startsWith("conversation_")){let c=b.conversation(a.reviewerConversationId)?.generations.at(-1)?.path;return!!c&&c!==a.reviewerPath&&(a.reviewerPath=c,!0)}if(!a.reviewerPath)return!1;let c=b.conversationForPath(a.reviewerPath);if(!c)return!1;a.reviewerConversationId=c.id;let d=c.generations.at(-1)?.path;return d&&(a.reviewerPath=d),!0})(b,a)&&f.push({n:b.n,before:c,after:{path:b.reviewerPath,conversationId:b.reviewerConversationId??null}})}),(e||f.length>0)&&c.push({id:b.id,implementer:e?{before:d,after:{path:b.implementerPath,conversationId:b.implementerConversationId??null}}:null,rounds:f})}),function(a){if(0===a.length)return;let b=K(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.implementer&&Q(a.implementerPath,a.implementerConversationId,b.implementer.before)&&(a.implementerPath=b.implementer.after.path,a.implementerConversationId=b.implementer.after.conversationId,d=!0),b.rounds)){let b=a.rounds.find(a=>a.n===c.n);b&&Q(b.reviewerPath,b.reviewerConversationId,c.before)&&(b.reviewerPath=c.after.path,b.reviewerConversationId=c.after.conversationId,d=!0)}}d&&U(b)}(c)}function S(a){let b={...a};return delete b.revision,JSON.stringify(b)}function T(a){for(let b of a){let a=P().get(b.id)??void 0;if(a&&void 0!==b.revision&&b.revision<(a.revision??0)){for(let a of Object.keys(b))delete b[a];Object.assign(b,structuredClone(a));continue}b.revision=a&&S(a)===S(b)?a.revision??0:(a?.revision??0)+1}}function U(a){let b=G.get(a);if(!b){P().replaceSync(a,{beforePersist:T}),H(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));P().patchSync(()=>(T(d),{records:d,deleteKeys:e.filter(a=>{let c=P().get(a);return null!==c&&JSON.stringify(c)===b.get(a)})})),H(a)}function V(a,b){let c=[...new Set(a)];if(0===c.length)return;let d=P();d.patchSync(()=>{let a=b(c.flatMap(a=>{let b=d.get(a);return b?[b]:[]}));return T(a),{records:a}})}async function W(a){return await P().mutate(a,({dirtyRecords:a})=>T(a))}function X(a){return P().withSnapshotSync(a)}function Y(){let a=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(r()),b=Array.isArray(a?.presets)?a.presets.filter(B):[],c=function(a,b=v()){let c=a.filter(a=>"role-registry"!==a.managed&&![...s,...t].some(b=>a.name===b.name&&D(a.implementer,b.implementer)&&D(a.reviewer,b.reviewer))),d=new Set(c.map(a=>a.name));return[...b.filter(a=>!d.has(a.name)),...c]}(b);return JSON.stringify(c)!==JSON.stringify(b)&&function(a){var b;let c;b=r(),g().mkdirSync(i().dirname(b),{recursive:!0}),c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),g().writeFileSync(c,JSON.stringify({presets:a},null,2)+"\n","utf8"),g().renameSync(c,b)}(c),c}function Z(a){return i().join((0,j.BQ)("flows"),a)}function $(a,b){return i().join(Z(a),`round-${b}-review.md`)}function _(a,b){return i().join(Z(a),`round-${b}-last-message.md`)}function aa(a,b){return i().join(Z(a),`round-${b}-stderr.txt`)}function ab(a,b){return i().join(Z(a),`round-${b}-stdout.log`)}function ac(a,b){let c=b.replace(/^\s*VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)\s*$/im,"").trim();return`VERDICT: ${a}
310
+ ${c?"\n"+c+"\n":"\n"}`}},98934:(a,b,c)=>{c.d(b,{AM:()=>k,LB:()=>o,Oh:()=>f,Vm:()=>t,dw:()=>n,eW:()=>l,vZ:()=>s});var d=c(92233),e=c(31973);function f(a,b=Date.now()){if(!a.enabled)return{kind:"unavailable",reason:"account-disabled",stale:a.stale,retryAt:null};if("failed"===a.authentication)return{kind:"unavailable",reason:"auth-failed",stale:a.stale,retryAt:null};if("exhausted"===a.limits){let c=function(a,b){if(!a)return null;let c=Date.parse(a);return Number.isFinite(c)&&c>b?new Date(c).toISOString():null}(a.retryAt,b);return c?{kind:"retry-at",reason:"hard-limit",stale:a.stale,retryAt:c}:{kind:"unavailable",reason:"hard-limit",stale:a.stale,retryAt:null}}return{kind:"admissible",basis:a.stale||"unknown"===a.authentication?"last-known":"current",stale:a.stale,retryAt:null}}let g=new Set(["starting","live","idle","handoff"]),h=new Set(["starting","pane-bound","host-verified","prompt-delivered","path-pending"]),i=new Set(["committed","rolled-back"]),j=new Set(["held","assigned","delivery-uncertain"]);function k(a={}){return{now:a.now??(()=>Date.now()),pidAlive:a.pidAlive??(a=>d.B.pidAlive(a)),processIdentity:a.processIdentity??(a=>d.B.processIdentity(a))}}function l(a,b){return!!a&&!!Number.isInteger(a.pid)&&!(a.pid<=0)&&!!b.pidAlive(a.pid)&&(null===a.startIdentity||b.processIdentity(a.pid)===a.startIdentity)}function m(a,b){let c=a?Date.parse(a):NaN;return!!Number.isFinite(c)&&b.now()-c<3e5}function n(a,b){return!!g.has(a.status)&&(!!(l(a.host?.agent,b)||l(a.host?.panePid,b)||l(a.structuredHost?.process??null,b))||m(a.updatedAt,b))}function o(a,b,c){if(!h.has(b.state))return!1;if(l(b.admissionOwner,c)||l(b.verifiedHost?.agent,c)||l(b.pane?.panePid,c))return!0;let d=b.key?a.entries[(0,e.pp)(b.key)]:void 0;return!!(d&&n(d,c))||m(b.createdAt,c)}function p(a,b){let c=new Set,d=b;for(;!c.has(d);){c.add(d);let b=a.conversationAliases[d];if(!b)break;d=b}return d}function q(a,b,c,d){let e=b.generations.at(-1);if(e&&l(e.host?.tmuxHost?.agent,d))return!0;for(let a of c)if(function(a,b){return a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b)}(b,a))return!0;if(b.migration&&!i.has(b.migration.phase))return!0;let f=c=>p(a,c)===b.id;for(let b of Object.values(a.heldDeliveries))if(j.has(b.state)&&(f(b.conversationId)||f(b.runtimeConversationId))&&("delivery-uncertain"!==b.state||m(b.createdAt,d)))return!0;for(let b of Object.values(a.receipts))if(f(b.conversationId)&&o(a,b,d))return!0;return!1}function r(a,b,c){let d=new Set;for(let e of Object.values(a.entries))e.key.engine===b&&n(e,c)&&d.add(e.artifactPath);return d}function s(a,b={}){let c=k(b),d=new Map,e=b=>{let e=d.get(b);return e||(e=r(a,b,c),d.set(b,e)),e},f=[];for(let b of Object.values(a.heldDeliveries)){if("delivery-uncertain"!==b.state||m(b.createdAt,c))continue;let d=a.conversations[p(a,b.conversationId)];d&&(q(a,d,e(d.engine),c)||f.push(b.id))}return f}function t(a,b,c,d={}){let e=k(d),f=r(a,b,e),g=[];for(let d of Object.values(a.conversations))d.engine===b&&d.generations.at(-1)?.accountId===c&&q(a,d,f,e)&&g.push(d.id);return g}}};