agent-log-viewer 1.2.0 → 1.2.1

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 (240) hide show
  1. package/dist/mcp-server.mjs +2078 -959
  2. package/dist/runtime-host.mjs +2615 -1363
  3. package/dist/standalone/.next/BUILD_ID +1 -1
  4. package/dist/standalone/.next/app-path-routes-manifest.json +15 -15
  5. package/dist/standalone/.next/build-manifest.json +2 -2
  6. package/dist/standalone/.next/prerender-manifest.json +4 -4
  7. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  10. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  11. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  17. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  18. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  20. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  22. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  23. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  24. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js.nft.json +1 -1
  25. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  26. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  27. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js.nft.json +1 -1
  28. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  29. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  30. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  31. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  32. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  33. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  35. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js.nft.json +1 -1
  36. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  37. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js.nft.json +1 -1
  38. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  39. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  40. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  41. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  42. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  43. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  44. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  45. package/dist/standalone/.next/server/app/api/answer/route.js +1 -1
  46. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  47. package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
  48. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  49. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  50. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  51. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  52. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  53. package/dist/standalone/.next/server/app/api/bridge/route.js +1 -1
  54. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  55. package/dist/standalone/.next/server/app/api/conversation-host/route.js +1 -1
  56. package/dist/standalone/.next/server/app/api/conversation-host/route.js.nft.json +1 -1
  57. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js +1 -1
  58. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js.nft.json +1 -1
  59. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  60. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  61. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  62. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  63. package/dist/standalone/.next/server/app/api/files/route.js +2 -2
  64. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  65. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  66. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  67. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  68. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  69. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  70. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  71. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  72. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  73. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  74. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  75. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  76. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  77. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  78. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  79. package/dist/standalone/.next/server/app/api/log/provenance/route.js +2 -2
  80. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
  81. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  82. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  83. package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -1
  84. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  85. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  86. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  87. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js +12 -14
  88. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js.nft.json +1 -1
  89. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js +2 -2
  90. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js.nft.json +1 -1
  91. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  92. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  93. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  94. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  95. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +1 -3
  96. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
  97. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  98. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  99. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  100. package/dist/standalone/.next/server/app/api/pipelines/route.js +1 -1
  101. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  102. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +1 -1
  103. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  104. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  105. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  106. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
  107. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
  108. package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -1
  109. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  110. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  111. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  112. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  113. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +1 -1
  114. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  115. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  116. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  117. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  118. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -1
  119. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -1
  120. package/dist/standalone/.next/server/app/api/runtime/inject/route.js +1 -1
  121. package/dist/standalone/.next/server/app/api/runtime/inject/route.js.nft.json +1 -1
  122. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +1 -1
  123. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  124. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +1 -1
  125. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  126. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  127. package/dist/standalone/.next/server/app/api/runtime/queue/route.js +1 -1
  128. package/dist/standalone/.next/server/app/api/runtime/queue/route.js.nft.json +1 -1
  129. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +1 -1
  130. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  131. package/dist/standalone/.next/server/app/api/runtime/send/route.js +1 -1
  132. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  133. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  134. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +1 -1
  135. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  136. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +1 -1
  137. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  138. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  139. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
  140. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  141. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  142. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  143. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  144. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  145. package/dist/standalone/.next/server/app/api/spawn/route.js +1 -1
  146. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  147. package/dist/standalone/.next/server/app/api/spawn/validate/route.js +1 -1
  148. package/dist/standalone/.next/server/app/api/spawn/validate/route.js.nft.json +1 -1
  149. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  150. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  151. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  152. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  153. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  154. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  155. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +1 -1
  156. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  157. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +1 -1
  158. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  159. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  160. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  161. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  162. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
  163. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
  164. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  165. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  166. package/dist/standalone/.next/server/app/api/tmux/route.js +1 -1
  167. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  168. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  169. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  170. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  171. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  172. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  173. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  174. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  175. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  176. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  177. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  178. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  179. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  180. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  181. package/dist/standalone/.next/server/app/index.html +1 -1
  182. package/dist/standalone/.next/server/app/index.rsc +3 -3
  183. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  184. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  185. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  186. package/dist/standalone/.next/server/app/page.js +18 -18
  187. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  188. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  189. package/dist/standalone/.next/server/app-paths-manifest.json +15 -15
  190. package/dist/standalone/.next/server/chunks/1406.js +17 -17
  191. package/dist/standalone/.next/server/chunks/1585.js +2 -2
  192. package/dist/standalone/.next/server/chunks/160.js +2 -2
  193. package/dist/standalone/.next/server/chunks/1617.js +2 -2
  194. package/dist/standalone/.next/server/chunks/2150.js +1 -1
  195. package/dist/standalone/.next/server/chunks/2744.js +3 -0
  196. package/dist/standalone/.next/server/chunks/2857.js +1 -1
  197. package/dist/standalone/.next/server/chunks/286.js +22 -0
  198. package/dist/standalone/.next/server/chunks/2914.js +1 -1
  199. package/dist/standalone/.next/server/chunks/3086.js +1 -1
  200. package/dist/standalone/.next/server/chunks/3131.js +1 -1
  201. package/dist/standalone/.next/server/chunks/3743.js +10 -8
  202. package/dist/standalone/.next/server/chunks/4037.js +1 -0
  203. package/dist/standalone/.next/server/chunks/4972.js +1 -1
  204. package/dist/standalone/.next/server/chunks/5408.js +1 -0
  205. package/dist/standalone/.next/server/chunks/5771.js +1 -1
  206. package/dist/standalone/.next/server/chunks/606.js +126 -0
  207. package/dist/standalone/.next/server/chunks/644.js +1 -1
  208. package/dist/standalone/.next/server/chunks/6453.js +1 -1
  209. package/dist/standalone/.next/server/chunks/7008.js +8 -8
  210. package/dist/standalone/.next/server/chunks/7192.js +1 -1
  211. package/dist/standalone/.next/server/chunks/781.js +2 -2
  212. package/dist/standalone/.next/server/chunks/8027.js +1 -1
  213. package/dist/standalone/.next/server/chunks/8465.js +2 -2
  214. package/dist/standalone/.next/server/chunks/8617.js +1 -1
  215. package/dist/standalone/.next/server/chunks/8966.js +2 -2
  216. package/dist/standalone/.next/server/chunks/9296.js +1 -1
  217. package/dist/standalone/.next/server/chunks/9307.js +1 -1
  218. package/dist/standalone/.next/server/chunks/9360.js +13 -11
  219. package/dist/standalone/.next/server/chunks/9517.js +1 -1
  220. package/dist/standalone/.next/server/chunks/9940.js +1 -1
  221. package/dist/standalone/.next/server/file-scanner-worker.js +2 -2
  222. package/dist/standalone/.next/server/files-response-worker.js +1 -1
  223. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  224. package/dist/standalone/.next/server/pages/404.html +1 -1
  225. package/dist/standalone/.next/server/pages/500.html +1 -1
  226. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  227. package/dist/standalone/.next/static/chunks/7333-cf17cea2a91e7b4b.js +1 -0
  228. package/dist/standalone/.next/static/chunks/app/page-1cde2db61f461960.js +125 -0
  229. package/dist/standalone/.next/static/css/b25c03e915fd256b.css +1 -0
  230. package/dist/standalone/AGENTS.md +10 -0
  231. package/dist/standalone/package.json +1 -1
  232. package/dist/standalone/src/lib/viewerInstrumentation.ts +19 -4
  233. package/package.json +1 -1
  234. package/dist/standalone/.next/server/chunks/480.js +0 -126
  235. package/dist/standalone/.next/server/chunks/7361.js +0 -22
  236. package/dist/standalone/.next/static/chunks/6976-016b6947195a6ed2.js +0 -1
  237. package/dist/standalone/.next/static/chunks/app/page-16384e540b4c0a90.js +0 -125
  238. package/dist/standalone/.next/static/css/496211a19557b7ee.css +0 -1
  239. /package/dist/standalone/.next/static/{e4qE_aCE0s0KQnnU6IWRw → 836HTp-5V8cZC5YWFVOCk}/_buildManifest.js +0 -0
  240. /package/dist/standalone/.next/static/{e4qE_aCE0s0KQnnU6IWRw → 836HTp-5V8cZC5YWFVOCk}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=6453,exports.ids=[6453],exports.modules={46453:(a,b,c)=>{c.r(b),c.d(b,{CONNECTOR_RETRY_WINDOW_MS:()=>s,RUN_TIMEOUT_MS:()=>r,TelegramReportRunner:()=>v,ensureTelegramReportScheduler:()=>z,productionReportRunnerPorts:()=>t,sameTelegramAccount:()=>w,setTelegramReportRunnerForTests:()=>A,telegramReportRunner:()=>y});var d=c(77598),e=c.n(d),f=c(4837),g=c(8668),h=c(96101),i=c(55862),j=c(52538),k=c(43034),l=c(10230);function m(a){a().catch(()=>void 0)}let n="127.0.0.1";async function o(a){var b;let[{executeSpawnRequest:d,productionSpawnCommandDependencies:e},{ensureOperatorSpawnCapability:f},{VIEWER_SPAWN_CAPABILITY_HEADER:g}]=await Promise.all([Promise.all([c.e(4637),c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(1617),c.e(4509),c.e(4565),c.e(8797),c.e(8996),c.e(3587),c.e(6926),c.e(6978),c.e(1100),c.e(6809),c.e(8617),c.e(8991),c.e(6826),c.e(4127),c.e(3743),c.e(1849),c.e(7238),c.e(7722),c.e(3302)]).then(c.bind(c,67722)),c.e(9937).then(c.bind(c,89937)),c.e(4012).then(c.bind(c,4012))]),h={headers:new Headers({host:n,origin:`http://${n}`,"sec-fetch-site":"same-origin",[g]:f()}),json:async()=>a.body},i=await d(h,{...e,...(b=a.grantActive,{defer:m,internalGrant:()=>({sessionClass:l.Vv,mcpServers:(0,l.FE)({grantActive:b()})})})});return{status:i.status,body:await i.json()}}var p=c(79554),q=c(68032);let r=27e5,s=18e5,t={now:Date.now,connection:()=>{try{return(0,q.Kd)()}catch{return{version:1,status:"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:"session_unsafe",identityIdUpgradedAt:null}}},readPort:a=>(0,k.tx)(a),beginReadPhase:async()=>{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));return await a().beginReportReadPhase()},connectorReady:a=>(0,k.wZ)(a),migrateIdentity:async function(){try{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));await a().checkHealth()}catch{}},spawn:o,reportRunConversation:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b(),e=d.spawnReceiptForClientAttempt((0,j.hS)(a));return e?d.canonicalConversationId(e.conversationId):null}catch{return null}},conversationLive:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b().conversation(a);if(!d)return!1;return d.turn?.state!=="terminal"}catch{return!0}},log:a=>console.error(`[telegram report] ${a}`)};function u(a){let b=a.identity?.id;return b&&a.credentialRef?{id:b,credentialRef:a.credentialRef}:null}class v{constructor(a=t){this.ports=a,this.running=!1,this.planning=new Set,this.pending=[]}grantActive(a=null){let b=this.ports.connection();return(null===a||b.credentialRef===a)&&(0,p.rD)().settings.enabled&&"connected"===b.status}payload(){var a;let b=(0,p.rD)(),c=b.active?[{id:(a=b.active).runId,trigger:a.trigger,startedAt:a.startedAt,finishedAt:null,windowStart:a.windowStart,windowEnd:a.windowEnd,status:"running",errorCode:null,conversationId:a.conversationId,hasReport:!1,promptVersion:a.promptVersion},...b.history]:b.history,d=(0,i.jF)({now:this.ports.now(),settings:b.settings,cursor:b.cursor});return{settings:{...b.settings,promptIsDefault:null===b.prompt},history:c,nextRunAt:null===d?null:new Date(d).toISOString()}}async tick(){if(!this.running){this.running=!0;try{this.reconcileDisconnected(),await this.finalizeActiveRun();let a=(0,p.rD)();if(a.active||await this.runOwedConnectorRetry(a)||!(0,i.z1)({now:this.ports.now(),settings:a.settings,cursor:a.cursor}))return;let b=(0,i.l)(this.ports.now(),g.cz);(0,p.k)(a=>{a.cursor.lastScheduledDay=b});let c=this.beginRun("scheduled");c.ok&&await this.execute(c.runId)}catch{this.ports.log("tick_failed")}finally{this.running=!1}}}async runNow(){let a;if(this.running)return{ok:!1,code:"run_in_progress"};this.running=!0;try{if(await this.finalizeActiveRun(),(0,p.rD)().active)return{ok:!1,code:"run_in_progress"};a=this.beginRun("manual")}finally{this.running=!1}if(!a.ok)return a;let b=this.execute(a.runId);return this.pending.push(b),b.finally(()=>{this.pending=this.pending.filter(a=>a!==b)}),a}async settled(){let a=this.pending;this.pending=[],await Promise.all(a)}async runOwedConnectorRetry(a){let b=a.retry;if(!b)return!1;let c=Date.parse(b.armedAt);if(!Number.isFinite(c)||this.ports.now()-c>s||!a.settings.enabled)return(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)}),!1;if("connected"!==this.ports.connection().status)return!1;(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)});let d=this.beginRun(b.trigger,{retry:!0});return d.ok&&await this.execute(d.runId),!0}reconcileDisconnected(){let a=this.ports.connection();if("disconnected"!==a.status||null!==a.credentialRef)return;let b=(0,p.rD)();(b.settings.enabled||0!==b.history.length||b.active)&&(0,p.mI)()}beginRun(a,b={}){let c=(0,p.rD)(),d=this.ports.connection();if(!c.settings.enabled)return this.recordFailure(a,"reports_disabled");if("connected"!==d.status)return this.recordFailure(a,"not_connected");let f=e().randomUUID(),g=(0,i.s)(this.ports.now(),c.cursor);return this.planning.add(f),(0,p.k)(c=>{c.retry=null,c.active={runId:f,trigger:a,startedAt:new Date(this.ports.now()).toISOString(),windowStart:g.startAt,windowEnd:g.endAt,conversationId:null,promptVersion:h.BL,...b.retry?{retry:!0}:{}}}),{ok:!0,runId:f}}async execute(a){try{await this.executeLocked(a)}catch{this.ports.log("run_failed"),this.settle(a,"failed","launch_failed",!1)}finally{this.planning.delete(a)}}async verifiedIdentity(){let a=this.ports.connection();if(a.identity?.id)return u(a);if(!a.identity||a.identityIdUpgradedAt)return null;await this.ports.migrateIdentity();let b=this.ports.connection();return"connected"!==b.status?null:u(b)}async executeLocked(a){let b,c,d,e=(0,p.rD)(),g=e.active;if(!g||g.runId!==a)return;let i={startAt:g.windowStart,endAt:g.windowEnd},l=await this.verifiedIdentity();if(!l){this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}let m=this.ports.readPort(l.credentialRef);if(!this.ports.beginReadPhase)throw Error("Telegram report read lease is unavailable");let n=await this.ports.beginReadPhase();try{let d=await this.ports.connectorReady(l.credentialRef);if(!d.ready){this.ports.log("connector_unavailable"),this.settle(a,"failed","connector_unavailable",!1,{requeue:"unavailable"===d.reason});return}try{b=await m.getMe()}catch{this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}if(!w(b,l)){this.ports.log("account_mismatch"),this.settle(a,"account-mismatch",null,!1);return}try{let b=await (0,k.Cl)(m,{windowStart:i.startAt,windowEnd:i.endAt,groups:e.settings.groups,promptVersion:h.BL});c=(0,p.uc)(a,b)}catch{this.ports.log("sources_failed"),this.settle(a,"failed","sources_failed",!1);return}}finally{n()}if((0,p.rD)().active?.runId!==a)return void(0,p.jc)(a);if(this.ports.connection().credentialRef!==l.credentialRef){this.ports.log("account_mismatch"),(0,p.jc)(a),this.settle(a,"account-mismatch",null,!1);return}let o=(0,h.Y_)({windowStart:i.startAt,windowEnd:i.endAt,sourcesPath:c,outputPath:(0,p.sk)(a),instructions:(0,p.kG)((0,p.rD)())});try{d=await this.ports.spawn({body:{engine:"codex",model:(0,f.Gh)("codex"),effort:"medium",cwd:(0,p.lN)(),title:(0,h.sg)({windowStart:i.startAt,windowEnd:i.endAt}),clientAttemptId:(0,j.hS)(a),project:j.zg,prompt:o},grantActive:()=>this.grantActive(l.credentialRef)})}catch{this.ports.log("launch_failed"),this.settle(a,"failed","launch_failed",!1);return}let q="string"==typeof d.body.conversationId?d.body.conversationId:null;if(!(d.status>=200&&d.status<300&&!1!==d.body.ok&&null!==q)){this.ports.log("launch_rejected"),this.settle(a,"failed","launch_failed",!1);return}(0,p.k)(b=>{b.active?.runId===a&&(b.active.conversationId=q)})}async relinkActiveRun(a){if(this.planning.has(a))return null;let b=await this.ports.reportRunConversation(a);return b?((0,p.k)(c=>{c.active?.runId!==a||c.active.conversationId||(c.active.conversationId=b)}),b):null}async finalizeActiveRun(){let a=(0,p.rD)().active;if(!a)return;let b=(0,p.H$)(a.runId),c=(0,h.U$)(b);if("ok"===c.kind){(0,p.$H)(a.runId,c.report),this.settle(a.runId,"ok",null,!0);return}if("quiet"===c.kind)return void this.settle(a.runId,"quiet",null,!1);if("invalid"===c.kind&&null!==b)return void this.settle(a.runId,"failed","invalid_report",!1);let d=Date.parse(a.startedAt),e=Number.isFinite(d)&&this.ports.now()-d>r,f=a.conversationId??await this.relinkActiveRun(a.runId);f?await this.ports.conversationLive(f)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","run_ended_without_report",!1):this.planning.has(a.runId)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","launch_failed",!1)}settle(a,b,c,d,e={}){(0,p.k)(f=>{let h=f.active;if(!h||h.runId!==a)return;if(f.active=null,f.retry=e.requeue&&!h.retry?{runId:h.runId,trigger:h.trigger,armedAt:new Date(this.ports.now()).toISOString()}:null,f.history=[{id:h.runId,trigger:h.trigger,startedAt:h.startedAt,finishedAt:new Date(this.ports.now()).toISOString(),windowStart:h.windowStart,windowEnd:h.windowEnd,status:b,errorCode:c,conversationId:h.conversationId,hasReport:d,promptVersion:h.promptVersion},...f.history],"ok"!==b&&"quiet"!==b){let a=f.cursor.unreportedSinceAt;(!a||Date.parse(h.windowStart)<Date.parse(a))&&(f.cursor.unreportedSinceAt=h.windowStart);return}f.cursor.lastSuccessfulWindowEndAt=h.windowEnd,f.cursor.unreportedSinceAt=null;let j=(0,i.l)(this.ports.now(),g.cz);this.ports.now()>=(0,i.wk)(j,f.settings.time,g.cz)&&(f.cursor.lastScheduledDay=j)}),d?(0,p.jc)(a):(0,p.FF)(a)}recordFailure(a,b,c=(0,i.s)(this.ports.now(),(0,p.rD)().cursor)){let d=new Date(this.ports.now()).toISOString();return(0,p.k)(f=>{if(f.history=[{id:e().randomUUID(),trigger:a,startedAt:d,finishedAt:d,windowStart:c.startAt,windowEnd:c.endAt,status:"failed",errorCode:b,conversationId:null,hasReport:!1,promptVersion:h.BL},...f.history],"reports_disabled"===b)return;let g=f.cursor.unreportedSinceAt;(!g||Date.parse(c.startAt)<Date.parse(g))&&(f.cursor.unreportedSinceAt=c.startAt)}),{ok:!1,code:b}}}function w(a,b){return!!(a?.id&&b?.id&&a.id===b.id)}let x=globalThis;function y(){return x.__llvTelegramReportRunner??=new v}function z(){x.__llvTelegramReportTimer||(x.__llvTelegramReportTimer=setInterval(()=>{y().tick()},6e4),x.__llvTelegramReportTimer.unref?.(),y().tick())}function A(a){a?x.__llvTelegramReportRunner=a:delete x.__llvTelegramReportRunner}},52538:(a,b,c)=>{c.d(b,{hS:()=>f,jE:()=>g,zg:()=>d});let d="telegram-reports",e="telegram-report-";function f(a){return`${e}${a}`}function g(a){if("string"!=typeof a||!a.startsWith(e))return null;let b=a.slice(e.length);return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(b)?b:null}},55862:(a,b,c)=>{c.d(b,{jF:()=>k,l:()=>g,s:()=>l,wk:()=>i,z1:()=>j});var d=c(8668);let e=new Map;function f(a,b){let c=e.get(b);c||(c=new Intl.DateTimeFormat("en-US",{timeZone:b,hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),e.set(b,c));let d={};for(let b of c.formatToParts(new Date(a)))d[b.type]=b.value;return{year:Number(d.year),month:Number(d.month),day:Number(d.day),hour:Number(d.hour)%24,minute:Number(d.minute),second:Number(d.second)}}function g(a,b=d.cz){let c=f(a,b);return`${String(c.year).padStart(4,"0")}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`}function h(a,b){let c=f(a,b);return Date.UTC(c.year,c.month-1,c.day,c.hour,c.minute,c.second)-1e3*Math.floor(a/1e3)}function i(a,b,c=d.cz){let[e,f]=b.split(":").map(Number),[g,j,k]=a.split("-").map(Number),l=Date.UTC(g,j-1,k,e,f,0),m=l-h(l,c);return l-h(m,c)}function j(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return!1;let c=g(a.now,b);return a.cursor.lastScheduledDay!==c&&a.now>=i(c,a.settings.time,b)}function k(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return null;if(j(a))return a.now;let c=i(g(a.now,b),"12:00",b);for(let d=0;d<=8;d+=1){let e=g(c+864e5*d,b),f=i(e,a.settings.time,b);if(!(f<=a.now)&&a.cursor.lastScheduledDay!==e)return f}return null}function l(a,b){let c=b.unreportedSinceAt?Date.parse(b.unreportedSinceAt):NaN,d=b.lastSuccessfulWindowEndAt?Date.parse(b.lastSuccessfulWindowEndAt):NaN,e=Number.isFinite(c)?c:d;return{startAt:new Date(Number.isFinite(e)&&e<a?Math.max(e,a-2592e5):a-864e5).toISOString(),endAt:new Date(a).toISOString()}}}};
1
+ "use strict";exports.id=6453,exports.ids=[6453],exports.modules={46453:(a,b,c)=>{c.r(b),c.d(b,{CONNECTOR_RETRY_WINDOW_MS:()=>s,RUN_TIMEOUT_MS:()=>r,TelegramReportRunner:()=>v,ensureTelegramReportScheduler:()=>z,productionReportRunnerPorts:()=>t,sameTelegramAccount:()=>w,setTelegramReportRunnerForTests:()=>A,telegramReportRunner:()=>y});var d=c(77598),e=c.n(d),f=c(4837),g=c(8668),h=c(96101),i=c(55862),j=c(52538),k=c(43034),l=c(10230);function m(a){a().catch(()=>void 0)}let n="127.0.0.1";async function o(a){var b;let[{executeSpawnRequest:d,productionSpawnCommandDependencies:e},{ensureOperatorSpawnCapability:f},{VIEWER_SPAWN_CAPABILITY_HEADER:g}]=await Promise.all([Promise.all([c.e(4637),c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(1617),c.e(4509),c.e(4565),c.e(8797),c.e(8996),c.e(6809),c.e(3587),c.e(6926),c.e(6978),c.e(1100),c.e(8617),c.e(8991),c.e(6826),c.e(4127),c.e(3743),c.e(1849),c.e(7238),c.e(7722),c.e(3302)]).then(c.bind(c,67722)),c.e(9937).then(c.bind(c,89937)),c.e(4012).then(c.bind(c,4012))]),h={headers:new Headers({host:n,origin:`http://${n}`,"sec-fetch-site":"same-origin",[g]:f()}),json:async()=>a.body},i=await d(h,{...e,...(b=a.grantActive,{defer:m,internalGrant:()=>({sessionClass:l.Vv,mcpServers:(0,l.FE)({grantActive:b()})})})});return{status:i.status,body:await i.json()}}var p=c(79554),q=c(68032);let r=27e5,s=18e5,t={now:Date.now,connection:()=>{try{return(0,q.Kd)()}catch{return{version:1,status:"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:"session_unsafe",identityIdUpgradedAt:null}}},readPort:a=>(0,k.tx)(a),beginReadPhase:async()=>{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));return await a().beginReportReadPhase()},connectorReady:a=>(0,k.wZ)(a),migrateIdentity:async function(){try{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));await a().checkHealth()}catch{}},spawn:o,reportRunConversation:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b(),e=d.spawnReceiptForClientAttempt((0,j.hS)(a));return e?d.canonicalConversationId(e.conversationId):null}catch{return null}},conversationLive:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b().conversation(a);if(!d)return!1;return d.turn?.state!=="terminal"}catch{return!0}},log:a=>console.error(`[telegram report] ${a}`)};function u(a){let b=a.identity?.id;return b&&a.credentialRef?{id:b,credentialRef:a.credentialRef}:null}class v{constructor(a=t){this.ports=a,this.running=!1,this.planning=new Set,this.pending=[]}grantActive(a=null){let b=this.ports.connection();return(null===a||b.credentialRef===a)&&(0,p.rD)().settings.enabled&&"connected"===b.status}payload(){var a;let b=(0,p.rD)(),c=b.active?[{id:(a=b.active).runId,trigger:a.trigger,startedAt:a.startedAt,finishedAt:null,windowStart:a.windowStart,windowEnd:a.windowEnd,status:"running",errorCode:null,conversationId:a.conversationId,hasReport:!1,promptVersion:a.promptVersion},...b.history]:b.history,d=(0,i.jF)({now:this.ports.now(),settings:b.settings,cursor:b.cursor});return{settings:{...b.settings,promptIsDefault:null===b.prompt},history:c,nextRunAt:null===d?null:new Date(d).toISOString()}}async tick(){if(!this.running){this.running=!0;try{this.reconcileDisconnected(),await this.finalizeActiveRun();let a=(0,p.rD)();if(a.active||await this.runOwedConnectorRetry(a)||!(0,i.z1)({now:this.ports.now(),settings:a.settings,cursor:a.cursor}))return;let b=(0,i.l)(this.ports.now(),g.cz);(0,p.k)(a=>{a.cursor.lastScheduledDay=b});let c=this.beginRun("scheduled");c.ok&&await this.execute(c.runId)}catch{this.ports.log("tick_failed")}finally{this.running=!1}}}async runNow(){let a;if(this.running)return{ok:!1,code:"run_in_progress"};this.running=!0;try{if(await this.finalizeActiveRun(),(0,p.rD)().active)return{ok:!1,code:"run_in_progress"};a=this.beginRun("manual")}finally{this.running=!1}if(!a.ok)return a;let b=this.execute(a.runId);return this.pending.push(b),b.finally(()=>{this.pending=this.pending.filter(a=>a!==b)}),a}async settled(){let a=this.pending;this.pending=[],await Promise.all(a)}async runOwedConnectorRetry(a){let b=a.retry;if(!b)return!1;let c=Date.parse(b.armedAt);if(!Number.isFinite(c)||this.ports.now()-c>s||!a.settings.enabled)return(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)}),!1;if("connected"!==this.ports.connection().status)return!1;(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)});let d=this.beginRun(b.trigger,{retry:!0});return d.ok&&await this.execute(d.runId),!0}reconcileDisconnected(){let a=this.ports.connection();if("disconnected"!==a.status||null!==a.credentialRef)return;let b=(0,p.rD)();(b.settings.enabled||0!==b.history.length||b.active)&&(0,p.mI)()}beginRun(a,b={}){let c=(0,p.rD)(),d=this.ports.connection();if(!c.settings.enabled)return this.recordFailure(a,"reports_disabled");if("connected"!==d.status)return this.recordFailure(a,"not_connected");let f=e().randomUUID(),g=(0,i.s)(this.ports.now(),c.cursor);return this.planning.add(f),(0,p.k)(c=>{c.retry=null,c.active={runId:f,trigger:a,startedAt:new Date(this.ports.now()).toISOString(),windowStart:g.startAt,windowEnd:g.endAt,conversationId:null,promptVersion:h.BL,...b.retry?{retry:!0}:{}}}),{ok:!0,runId:f}}async execute(a){try{await this.executeLocked(a)}catch{this.ports.log("run_failed"),this.settle(a,"failed","launch_failed",!1)}finally{this.planning.delete(a)}}async verifiedIdentity(){let a=this.ports.connection();if(a.identity?.id)return u(a);if(!a.identity||a.identityIdUpgradedAt)return null;await this.ports.migrateIdentity();let b=this.ports.connection();return"connected"!==b.status?null:u(b)}async executeLocked(a){let b,c,d,e=(0,p.rD)(),g=e.active;if(!g||g.runId!==a)return;let i={startAt:g.windowStart,endAt:g.windowEnd},l=await this.verifiedIdentity();if(!l){this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}let m=this.ports.readPort(l.credentialRef);if(!this.ports.beginReadPhase)throw Error("Telegram report read lease is unavailable");let n=await this.ports.beginReadPhase();try{let d=await this.ports.connectorReady(l.credentialRef);if(!d.ready){this.ports.log("connector_unavailable"),this.settle(a,"failed","connector_unavailable",!1,{requeue:"unavailable"===d.reason});return}try{b=await m.getMe()}catch{this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}if(!w(b,l)){this.ports.log("account_mismatch"),this.settle(a,"account-mismatch",null,!1);return}try{let b=await (0,k.Cl)(m,{windowStart:i.startAt,windowEnd:i.endAt,groups:e.settings.groups,promptVersion:h.BL});c=(0,p.uc)(a,b)}catch{this.ports.log("sources_failed"),this.settle(a,"failed","sources_failed",!1);return}}finally{n()}if((0,p.rD)().active?.runId!==a)return void(0,p.jc)(a);if(this.ports.connection().credentialRef!==l.credentialRef){this.ports.log("account_mismatch"),(0,p.jc)(a),this.settle(a,"account-mismatch",null,!1);return}let o=(0,h.Y_)({windowStart:i.startAt,windowEnd:i.endAt,sourcesPath:c,outputPath:(0,p.sk)(a),instructions:(0,p.kG)((0,p.rD)())});try{d=await this.ports.spawn({body:{engine:"codex",model:(0,f.Gh)("codex"),effort:"medium",cwd:(0,p.lN)(),title:(0,h.sg)({windowStart:i.startAt,windowEnd:i.endAt}),clientAttemptId:(0,j.hS)(a),project:j.zg,prompt:o},grantActive:()=>this.grantActive(l.credentialRef)})}catch{this.ports.log("launch_failed"),this.settle(a,"failed","launch_failed",!1);return}let q="string"==typeof d.body.conversationId?d.body.conversationId:null;if(!(d.status>=200&&d.status<300&&!1!==d.body.ok&&null!==q)){this.ports.log("launch_rejected"),this.settle(a,"failed","launch_failed",!1);return}(0,p.k)(b=>{b.active?.runId===a&&(b.active.conversationId=q)})}async relinkActiveRun(a){if(this.planning.has(a))return null;let b=await this.ports.reportRunConversation(a);return b?((0,p.k)(c=>{c.active?.runId!==a||c.active.conversationId||(c.active.conversationId=b)}),b):null}async finalizeActiveRun(){let a=(0,p.rD)().active;if(!a)return;let b=(0,p.H$)(a.runId),c=(0,h.U$)(b);if("ok"===c.kind){(0,p.$H)(a.runId,c.report),this.settle(a.runId,"ok",null,!0);return}if("quiet"===c.kind)return void this.settle(a.runId,"quiet",null,!1);if("invalid"===c.kind&&null!==b)return void this.settle(a.runId,"failed","invalid_report",!1);let d=Date.parse(a.startedAt),e=Number.isFinite(d)&&this.ports.now()-d>r,f=a.conversationId??await this.relinkActiveRun(a.runId);f?await this.ports.conversationLive(f)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","run_ended_without_report",!1):this.planning.has(a.runId)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","launch_failed",!1)}settle(a,b,c,d,e={}){(0,p.k)(f=>{let h=f.active;if(!h||h.runId!==a)return;if(f.active=null,f.retry=e.requeue&&!h.retry?{runId:h.runId,trigger:h.trigger,armedAt:new Date(this.ports.now()).toISOString()}:null,f.history=[{id:h.runId,trigger:h.trigger,startedAt:h.startedAt,finishedAt:new Date(this.ports.now()).toISOString(),windowStart:h.windowStart,windowEnd:h.windowEnd,status:b,errorCode:c,conversationId:h.conversationId,hasReport:d,promptVersion:h.promptVersion},...f.history],"ok"!==b&&"quiet"!==b){let a=f.cursor.unreportedSinceAt;(!a||Date.parse(h.windowStart)<Date.parse(a))&&(f.cursor.unreportedSinceAt=h.windowStart);return}f.cursor.lastSuccessfulWindowEndAt=h.windowEnd,f.cursor.unreportedSinceAt=null;let j=(0,i.l)(this.ports.now(),g.cz);this.ports.now()>=(0,i.wk)(j,f.settings.time,g.cz)&&(f.cursor.lastScheduledDay=j)}),d?(0,p.jc)(a):(0,p.FF)(a)}recordFailure(a,b,c=(0,i.s)(this.ports.now(),(0,p.rD)().cursor)){let d=new Date(this.ports.now()).toISOString();return(0,p.k)(f=>{if(f.history=[{id:e().randomUUID(),trigger:a,startedAt:d,finishedAt:d,windowStart:c.startAt,windowEnd:c.endAt,status:"failed",errorCode:b,conversationId:null,hasReport:!1,promptVersion:h.BL},...f.history],"reports_disabled"===b)return;let g=f.cursor.unreportedSinceAt;(!g||Date.parse(c.startAt)<Date.parse(g))&&(f.cursor.unreportedSinceAt=c.startAt)}),{ok:!1,code:b}}}function w(a,b){return!!(a?.id&&b?.id&&a.id===b.id)}let x=globalThis;function y(){return x.__llvTelegramReportRunner??=new v}function z(){x.__llvTelegramReportTimer||(x.__llvTelegramReportTimer=setInterval(()=>{y().tick()},6e4),x.__llvTelegramReportTimer.unref?.(),y().tick())}function A(a){a?x.__llvTelegramReportRunner=a:delete x.__llvTelegramReportRunner}},52538:(a,b,c)=>{c.d(b,{hS:()=>f,jE:()=>g,zg:()=>d});let d="telegram-reports",e="telegram-report-";function f(a){return`${e}${a}`}function g(a){if("string"!=typeof a||!a.startsWith(e))return null;let b=a.slice(e.length);return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(b)?b:null}},55862:(a,b,c)=>{c.d(b,{jF:()=>k,l:()=>g,s:()=>l,wk:()=>i,z1:()=>j});var d=c(8668);let e=new Map;function f(a,b){let c=e.get(b);c||(c=new Intl.DateTimeFormat("en-US",{timeZone:b,hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),e.set(b,c));let d={};for(let b of c.formatToParts(new Date(a)))d[b.type]=b.value;return{year:Number(d.year),month:Number(d.month),day:Number(d.day),hour:Number(d.hour)%24,minute:Number(d.minute),second:Number(d.second)}}function g(a,b=d.cz){let c=f(a,b);return`${String(c.year).padStart(4,"0")}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`}function h(a,b){let c=f(a,b);return Date.UTC(c.year,c.month-1,c.day,c.hour,c.minute,c.second)-1e3*Math.floor(a/1e3)}function i(a,b,c=d.cz){let[e,f]=b.split(":").map(Number),[g,j,k]=a.split("-").map(Number),l=Date.UTC(g,j-1,k,e,f,0),m=l-h(l,c);return l-h(m,c)}function j(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return!1;let c=g(a.now,b);return a.cursor.lastScheduledDay!==c&&a.now>=i(c,a.settings.time,b)}function k(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return null;if(j(a))return a.now;let c=i(g(a.now,b),"12:00",b);for(let d=0;d<=8;d+=1){let e=g(c+864e5*d,b),f=i(e,a.settings.time,b);if(!(f<=a.now)&&a.cursor.lastScheduledDay!==e)return f}return null}function l(a,b){let c=b.unreportedSinceAt?Date.parse(b.unreportedSinceAt):NaN,d=b.lastSuccessfulWindowEndAt?Date.parse(b.lastSuccessfulWindowEndAt):NaN,e=Number.isFinite(c)?c:d;return{startAt:new Date(Number.isFinite(e)&&e<a?Math.max(e,a-2592e5):a-864e5).toISOString(),endAt:new Date(a).toISOString()}}}};
@@ -104,21 +104,21 @@ When the operator asks for work, assess complexity, compose stages/roles, POST /
104
104
 
105
105
  ${k}`).join("").split(k).join("");return m.reduce((a,{marker:b,directive:c})=>a.includes(b)?a:`${a}
106
106
 
107
- ${c}`,b)}},33302:(a,b,c)=>{c.d(b,{NZ:()=>r,OE:()=>m,Tj:()=>u,Yd:()=>t,kg:()=>s,mn:()=>n});var d=c(77598),e=c.n(d),f=c(10781),g=c(89937),h=c(4012);let i=/^[A-Za-z0-9_-]{43}$/,j="x-llv-internal-service",k=/^[a-f0-9]{64}$/,l=["monitor","mcp","orchestrator"];function m(a){let b,c=a.headers.get(h.VIEWER_SPAWN_CAPABILITY_HEADER)?.trim()??"";return c&&i.test(c)?(b=e().createHash("sha256").update(c).digest("hex"),(0,f.agentRegistry)().conversationIdForSpawnCapabilityDigest(b)):null}function n(a){return null===m(a)}let o={ok:!1,status:403,error:"this is an operator-only action; an agent may not perform it, whatever role it holds"},p={ok:!1,status:403,error:"background Viewer activity is outside direct operator activity"};function q(a){return e().createHmac("sha256",(0,g.ensureOperatorSpawnCapability)()).update(`llv-internal-service-v1\0${a}`).digest("hex")}function r(a){return{[j]:`${a}.${q(a)}`}}function s(a){return"valid"===function(a){let b=a.headers.get(j)?.trim()??"";if(!b)return"absent";let c=b.indexOf("."),d=b.slice(0,c),f=b.slice(c+1);if(!l.includes(d)||!k.test(f))return"invalid";try{let a=q(d);return e().timingSafeEqual(Buffer.from(f),Buffer.from(a))?"valid":"invalid"}catch{return"invalid"}}(a)?p:u(a)}function t(a){let b=m(a);return b?{kind:"agent",conversationId:b}:{kind:"operator",conversationId:null}}function u(a){return m(a)?o:{ok:!0}}},47008:(a,b,c)=>{c.d(b,{CX:()=>ai,eV:()=>al,reconcileActiveOrchestratorSeat:()=>af});var d=c(73024),e=c.n(d),f=c(22962),g=c(74382),h=c(10781),i=c(89937),j=c(4837),k=c(33302),l=c(4012),m=c(10167),n=c(50201),o=c(70107),p=c(89333),q=c(74127),r=c(99411),s=c(41022),t=c(30795),u=c(21153),v=c(76760),w=c.n(v),x=c(91724),y=c(56809),z=c(2798);let A="## Handoff from your predecessor (rotation)",B="## Rotation history",C=" …[truncated]";function D(a){return Buffer.byteLength(a,"utf8")}function E(a,b){if(D(a)<=b)return{value:a,truncated:!1,codePoints:[...a].length};let c=D(C),d=0,e=0,f="";for(let g of a){let a=D(g);if(d+a+c>b)break;f+=g,d+=a,e+=1}return f?{value:`${f}${C}`,truncated:!0,codePoints:e}:{value:"",truncated:!0,codePoints:0}}function F(a){return a.replace(/\r\n?/g,"\n")}function G(a){return F(a).replace(/^#{1,6}[ \t]+/gm,"- ")}function H(a,b,c,d){return[a,...b?[`${B}
108
- ${b}`]:[],[A,...c.header,...c.tasks?[c.tasks]:[],...d?[`Notes from the caller:
109
- ${d}`]:[]].join("\n\n")].join("\n\n")}function I(a,b){if("existing"===a)return 0;let c=(0,r.s8)({role:"orchestrator",roleParams:b??{mode:"standard"}});return c.ok&&c.value?D(c.value.scaffold)+2:0}function J(a){return{error:`mandate is too large to deliver: ${a.bytes} bytes of mandate plus ${a.overhead} bytes of launch overhead exceeds the ${a.bound}-byte structured envelope by ${a.excess} bytes; shorten the mandate by at least ${a.excess} bytes`,code:"mandate_too_large",bytes:a.bytes,overhead:a.overhead,bound:a.bound,excess:a.excess}}let K={resolveAccount:async a=>{let{accountManager:b}=await Promise.resolve().then(c.bind(c,26926));return b.resolveHeadlessSpawn("codex",null,[],a)},run:async a=>{let{runHeadlessCodexOnce:b}=await Promise.resolve().then(c.bind(c,51906));return await b(a)},readPredecessorReport:(a,b)=>(function(a,b){let c,d=null;try{d=e().openSync(a,e().constants.O_RDONLY|e().constants.O_NOFOLLOW);let b=e().fstatSync(d);if(!b.isFile())return null;let f=e().lstatSync(a);if(!f.isFile()||f.dev!==b.dev||f.ino!==b.ino)return null;let g=Math.max(0,b.size-262144),h=Buffer.alloc(b.size-g);e().readSync(d,h,0,h.length,g),c=h.toString("utf8"),g>0&&(c=c.slice(c.indexOf("\n")+1))}catch{return null}finally{null!==d&&e().closeSync(d)}let f=c.split("\n");for(let a=f.length-1;a>=0;a-=1){let c;try{let b=JSON.parse(f[a]);if(!b||"object"!=typeof b||Array.isArray(b))continue;c=b}catch{continue}let d="claude"===b?function(a){if("assistant"!==a.type)return null;let b=a.message;if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b.content;return"string"==typeof c?c:Array.isArray(c)?c.flatMap(a=>a&&"object"==typeof a&&!Array.isArray(a)&&"text"===a.type&&"string"==typeof a.text?[a.text]:[]).join("\n"):null}(c):function(a){let b=a.payload;return!b||"object"!=typeof b||Array.isArray(b)?null:"agent_message"===b.type&&"string"==typeof b.message?b.message:null}(c);if(d?.trim())return E(d.trim(),6e3).value||null}return null})(a,b)},L=/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g,M=/\b((?:github|gitlab)\.com\/|bitbucket\.org\/)[A-Za-z0-9][A-Za-z0-9-]{0,38}/gi,N=/(^|[^A-Za-z0-9_@/])@[A-Za-z0-9][A-Za-z0-9._-]{1,38}/g,O=/~\/[^\s"'`)\],;]*/g,P=/(?<![A-Za-z0-9_~:/])\/(?:home|Users|root|tmp|var|etc|opt|srv|mnt|media|app|workspace|private|data|usr|proc|dev)\/[^\s"'`)\],;]*/g,Q=/(?<![A-Za-z0-9_~:/])\/[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+\/[^\s"'`)\],;]*/g,R=/\b(?:conversation|session|launch|thread|run|acct|account|agent)_(?=[A-Za-z0-9-]*\d)[A-Za-z0-9-]{6,}\b/gi,S=/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;function T(a){return(0,y.j)(a).replace(L,"[redacted-email]").replace(M,"$1[redacted-handle]").replace(N,"$1[redacted-handle]").replace(O,"[redacted-path]").replace(P,"[redacted-path]").replace(Q,"[redacted-path]").replace(R,"[redacted-id]").replace(S,"[redacted-id]")}let U=`You are compacting the rotation history of a project manager agent's mandate. Write a digest of the material below for the manager's successor. Use exactly these three headings and short bullet points under each:
107
+ ${c}`,b)}},33302:(a,b,c)=>{c.d(b,{NZ:()=>r,OE:()=>m,Tj:()=>u,Yd:()=>t,kg:()=>s,mn:()=>n});var d=c(77598),e=c.n(d),f=c(10781),g=c(89937),h=c(4012);let i=/^[A-Za-z0-9_-]{43}$/,j="x-llv-internal-service",k=/^[a-f0-9]{64}$/,l=["monitor","mcp","orchestrator"];function m(a){let b,c=a.headers.get(h.VIEWER_SPAWN_CAPABILITY_HEADER)?.trim()??"";return c&&i.test(c)?(b=e().createHash("sha256").update(c).digest("hex"),(0,f.agentRegistry)().conversationIdForSpawnCapabilityDigest(b)):null}function n(a){return null===m(a)}let o={ok:!1,status:403,error:"this is an operator-only action; an agent may not perform it, whatever role it holds"},p={ok:!1,status:403,error:"background Viewer activity is outside direct operator activity"};function q(a){return e().createHmac("sha256",(0,g.ensureOperatorSpawnCapability)()).update(`llv-internal-service-v1\0${a}`).digest("hex")}function r(a){return{[j]:`${a}.${q(a)}`}}function s(a){return"valid"===function(a){let b=a.headers.get(j)?.trim()??"";if(!b)return"absent";let c=b.indexOf("."),d=b.slice(0,c),f=b.slice(c+1);if(!l.includes(d)||!k.test(f))return"invalid";try{let a=q(d);return e().timingSafeEqual(Buffer.from(f),Buffer.from(a))?"valid":"invalid"}catch{return"invalid"}}(a)?p:u(a)}function t(a){let b=m(a);return b?{kind:"agent",conversationId:b}:{kind:"operator",conversationId:null}}function u(a){return m(a)?o:{ok:!0}}},47008:(a,b,c)=>{c.d(b,{CX:()=>aj,eV:()=>am,reconcileActiveOrchestratorSeat:()=>ag});var d=c(73024),e=c.n(d),f=c(22962),g=c(74382),h=c(10781),i=c(89937),j=c(4837),k=c(33302),l=c(4012),m=c(10167),n=c(50201),o=c(11149),p=c(70107),q=c(89333),r=c(74127),s=c(99411),t=c(41022),u=c(30795),v=c(21153),w=c(76760),x=c.n(w),y=c(91724),z=c(56809),A=c(2798);let B="## Handoff from your predecessor (rotation)",C="## Rotation history",D=" …[truncated]";function E(a){return Buffer.byteLength(a,"utf8")}function F(a,b){if(E(a)<=b)return{value:a,truncated:!1,codePoints:[...a].length};let c=E(D),d=0,e=0,f="";for(let g of a){let a=E(g);if(d+a+c>b)break;f+=g,d+=a,e+=1}return f?{value:`${f}${D}`,truncated:!0,codePoints:e}:{value:"",truncated:!0,codePoints:0}}function G(a){return a.replace(/\r\n?/g,"\n")}function H(a){return G(a).replace(/^#{1,6}[ \t]+/gm,"- ")}function I(a,b,c,d){return[a,...b?[`${C}
108
+ ${b}`]:[],[B,...c.header,...c.tasks?[c.tasks]:[],...d?[`Notes from the caller:
109
+ ${d}`]:[]].join("\n\n")].join("\n\n")}function J(a,b){if("existing"===a)return 0;let c=(0,s.s8)({role:"orchestrator",roleParams:b??{mode:"standard"}});return c.ok&&c.value?E(c.value.scaffold)+2:0}function K(a){return{error:`mandate is too large to deliver: ${a.bytes} bytes of mandate plus ${a.overhead} bytes of launch overhead exceeds the ${a.bound}-byte structured envelope by ${a.excess} bytes; shorten the mandate by at least ${a.excess} bytes`,code:"mandate_too_large",bytes:a.bytes,overhead:a.overhead,bound:a.bound,excess:a.excess}}let L={resolveAccount:async a=>{let{accountManager:b}=await Promise.resolve().then(c.bind(c,26926));return b.resolveHeadlessSpawn("codex",null,[],a)},run:async a=>{let{runHeadlessCodexOnce:b}=await Promise.resolve().then(c.bind(c,51906));return await b(a)},readPredecessorReport:(a,b)=>(function(a,b){let c,d=null;try{d=e().openSync(a,e().constants.O_RDONLY|e().constants.O_NOFOLLOW);let b=e().fstatSync(d);if(!b.isFile())return null;let f=e().lstatSync(a);if(!f.isFile()||f.dev!==b.dev||f.ino!==b.ino)return null;let g=Math.max(0,b.size-262144),h=Buffer.alloc(b.size-g);e().readSync(d,h,0,h.length,g),c=h.toString("utf8"),g>0&&(c=c.slice(c.indexOf("\n")+1))}catch{return null}finally{null!==d&&e().closeSync(d)}let f=c.split("\n");for(let a=f.length-1;a>=0;a-=1){let c;try{let b=JSON.parse(f[a]);if(!b||"object"!=typeof b||Array.isArray(b))continue;c=b}catch{continue}let d="claude"===b?function(a){if("assistant"!==a.type)return null;let b=a.message;if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b.content;return"string"==typeof c?c:Array.isArray(c)?c.flatMap(a=>a&&"object"==typeof a&&!Array.isArray(a)&&"text"===a.type&&"string"==typeof a.text?[a.text]:[]).join("\n"):null}(c):function(a){let b=a.payload;return!b||"object"!=typeof b||Array.isArray(b)?null:"agent_message"===b.type&&"string"==typeof b.message?b.message:null}(c);if(d?.trim())return F(d.trim(),6e3).value||null}return null})(a,b)},M=/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g,N=/\b((?:github|gitlab)\.com\/|bitbucket\.org\/)[A-Za-z0-9][A-Za-z0-9-]{0,38}/gi,O=/(^|[^A-Za-z0-9_@/])@[A-Za-z0-9][A-Za-z0-9._-]{1,38}/g,P=/~\/[^\s"'`)\],;]*/g,Q=/(?<![A-Za-z0-9_~:/])\/(?:home|Users|root|tmp|var|etc|opt|srv|mnt|media|app|workspace|private|data|usr|proc|dev)\/[^\s"'`)\],;]*/g,R=/(?<![A-Za-z0-9_~:/])\/[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+\/[^\s"'`)\],;]*/g,S=/\b(?:conversation|session|launch|thread|run|acct|account|agent)_(?=[A-Za-z0-9-]*\d)[A-Za-z0-9-]{6,}\b/gi,T=/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;function U(a){return(0,z.j)(a).replace(M,"[redacted-email]").replace(N,"$1[redacted-handle]").replace(O,"$1[redacted-handle]").replace(P,"[redacted-path]").replace(Q,"[redacted-path]").replace(R,"[redacted-path]").replace(S,"[redacted-id]").replace(T,"[redacted-id]")}let V=`You are compacting the rotation history of a project manager agent's mandate. Write a digest of the material below for the manager's successor. Use exactly these three headings and short bullet points under each:
110
110
 
111
111
  Decisions:
112
112
  Blockers:
113
113
  In flight:
114
114
 
115
- Rules: at most 3500 bytes in total. Keep only what the successor needs to act: decisions already made, blockers still open, and work in flight with its current state. Never include names, account handles, email addresses, tokens, or file paths. Do not use Markdown headings starting with "#". Do not run commands or read files; everything you need is below. Output the digest only — no preamble, no closing remarks.`;async function V(a,b=K){let c=await b.resolveAccount(a.project);if("exhausted"===c.kind)return{kind:"fallback",reason:"exhausted"};if("available"!==c.kind)return{kind:"fallback",reason:"unavailable"};let d=a.predecessor?b.readPredecessorReport(a.predecessor.path,a.predecessor.engine):null,f=(0,x.BQ)("orchestrator","handoff-digests",a.clientRequestId);try{let e=await b.run({key:`orchestrator-handoff:${a.clientRequestId}`,cwd:w().join(f,"cwd"),prompt:function(a,b){let c=a.priorHistory?T(a.priorHistory).trim():null,d=b?T(b).trim():null,e=a.priorHandoffs.map(a=>T(a).trim()).filter(Boolean),f=D(c??"")+D(d??"")+e.reduce((a,b)=>a+D(b),0),g=0;for(;g<e.length&&f>48e3;)f-=D(e[g]),g+=1;let h=e.slice(g);return[U,`=== Previous rotation history ===
115
+ Rules: at most 3500 bytes in total. Keep only what the successor needs to act: decisions already made, blockers still open, and work in flight with its current state. Never include names, account handles, email addresses, tokens, or file paths. Do not use Markdown headings starting with "#". Do not run commands or read files; everything you need is below. Output the digest only — no preamble, no closing remarks.`;async function W(a,b=L){let c=await b.resolveAccount(a.project);if("exhausted"===c.kind)return{kind:"fallback",reason:"exhausted"};if("available"!==c.kind)return{kind:"fallback",reason:"unavailable"};let d=a.predecessor?b.readPredecessorReport(a.predecessor.path,a.predecessor.engine):null,f=(0,y.BQ)("orchestrator","handoff-digests",a.clientRequestId);try{let e=await b.run({key:`orchestrator-handoff:${a.clientRequestId}`,cwd:x().join(f,"cwd"),prompt:function(a,b){let c=a.priorHistory?U(a.priorHistory).trim():null,d=b?U(b).trim():null,e=a.priorHandoffs.map(a=>U(a).trim()).filter(Boolean),f=E(c??"")+E(d??"")+e.reduce((a,b)=>a+E(b),0),g=0;for(;g<e.length&&f>48e3;)f-=E(e[g]),g+=1;let h=e.slice(g);return[V,`=== Previous rotation history ===
116
116
  ${c??"(none)"}`,`=== Earlier handoffs, oldest first ===
117
117
  ${h.length?h.map((a,b)=>`--- handoff ${b+1} ---
118
118
  ${a}`).join("\n\n"):"(none)"}`,`=== Predecessor's last report ===
119
- ${d??"(unavailable)"}`].join("\n\n")}(a,d),model:j.Ze,effort:"low",account:"codex"===c.account.engine?{home:c.account.home,managed:"managed"===c.account.kind}:null,artifactDir:f,timeoutMs:75e3,sandbox:"read-only"});if("timeout"===e.status)return{kind:"fallback",reason:"timeout"};if("done"!==e.status)return{kind:"fallback",reason:"failed"};let g=T(e.finalOutput).trim();if(!g)return{kind:"fallback",reason:"empty"};if(D(g)>4096)return{kind:"fallback",reason:"over_budget"};let h=G(g).trim();return h?{kind:"digest",text:h}:{kind:"fallback",reason:"empty"}}finally{e().rmSync(f,{recursive:!0,force:!0})}}var W=c(15408);let X={spawn:async function(a){let{executeSpawnRequest:b}=await Promise.all([c.e(1849),c.e(7238),c.e(7722)]).then(c.bind(c,67722)),d={headers:new Headers({host:"127.0.0.1",...(0,k.NZ)("orchestrator"),[l.VIEWER_SPAWN_CAPABILITY_HEADER]:(0,i.ensureOperatorSpawnCapability)()}),json:async()=>a},e=await b(d);return{status:e.status,body:await e.json()}},deliver:async function(a){if((0,n.cM)()){let{enqueueStructuredMessage:b}=await Promise.resolve().then(c.bind(c,34083)),d=await b({path:a.path??"",conversationId:a.conversationId,clientMessageId:a.clientMessageId,text:a.text,images:[]});if(d)return d.ok?{ok:!0,outcome:"outcome"in d&&"string"==typeof d.outcome?d.outcome:"delivered"}:{ok:!1,error:d.error}}let b=await (0,m.Ku)({pid:null,path:a.path??"",conversationId:a.conversationId,clientMessageId:a.clientMessageId,text:a.text,images:[]});return b.ok?{ok:!0,outcome:b.outcome??"delivered"}:{ok:!1,error:b.error}},conversationTarget:a=>{let b=(0,h.agentRegistry)().conversation(a);if(!b)return null;if(b.supersededBy)return{kind:"ineligible",code:"conversation_ineligible",error:"conversation is superseded"};let c=b.generations.at(-1),d=c?.path?.trim();if(!d||!e().existsSync(d))return{kind:"ineligible",code:"missing_transcript",error:"conversation transcript is unavailable"};let f=c?.launchProfile?.cwd?.trim();if(!f||!e().existsSync(f)||!e().statSync(f).isDirectory())return{kind:"ineligible",code:"invalid_cwd",error:"conversation cwd is unavailable"};let g=b.projectOwnership?.project??(0,o.hY)(f);return g?{kind:"eligible",conversationId:b.id,path:d,cwd:f,project:(0,W.ut)(g),engine:b.engine,model:c?.launchProfile.model?.trim()||(0,j.Gh)(b.engine)}:{kind:"ineligible",code:"missing_project",error:"conversation project is unavailable"}},projectTasks:a=>(0,u.h6)().filter(b=>b.project===a&&"done"!==b.status).map(a=>({id:a.id,status:a.status,text:a.text})),summarizeHandoffs:a=>V(a),launchSettlement:({launchId:a,clientRequestId:b})=>{let c=(0,h.agentRegistry)(),d=c.spawnReceiptForClientAttempt(b);return!d||a&&d.launchId!==a?{kind:"unknown"}:d.rejection||"failed"===d.state||"conflicted"===d.state?{kind:"failed",error:d.error??d.rejection?.guidance??`spawn receipt is terminally ${d.state}`}:{kind:"settled",conversationId:d.conversationId,path:(0,h.Vt)(c.readOnlySnapshot()).allowsReceipt(d)?d.artifactPath:null,launchId:d.launchId,engine:d.engine,model:d.launchProfile.model}},resolvedConversation:a=>{if(!a)return null;let b=(0,h.agentRegistry)().conversation(a);if(!b)return null;let c=b.generations.at(-1)?.path?.trim();if(!c||!(0,p.EG)(c))return null;let d=b.generations.at(-1)?.launchProfile?.cwd?.trim();return{conversationId:b.id,path:c,holdsTurns:(0,q.x_)(c,b.engine),cwd:d&&function(a){try{return e().statSync(a).isDirectory()}catch{return!1}}(d)?d:null}},runtimeIdentity:a=>{let b=(0,h.agentRegistry)().conversation(a),c=b?b.generations.at(-1)?.launchProfile.model?.trim()||(0,j.Gh)(b.engine):null;return{engine:b?.engine??null,model:c}},stampRegistryIdentity:a=>{(0,h.agentRegistry)().stampOrchestratorSeatIdentity(a)},now:()=>new Date().toISOString()},Y=/^[A-Za-z0-9_-]{8,128}$/;function Z(a,b,c){return{status:409,body:{error:`the orchestrator seat for ${a} changed while this rotation composed its handoff (designation epoch ${b} is no longer current); rotate again to hand off from the seated orchestrator`,code:"incumbent_changed",currentSeatEpoch:c?.seatEpoch??null,currentConversationId:c?.conversationId??null}}}function $(a){return"string"==typeof a?a.trim():""}function _(a){let b=null===a.path&&null!==a.intent.launchId;return{status:200,body:{ok:!0,replayed:!0,state:a.path?"settled":b?"accepted":"starting",accepted:b,conversationId:a.conversationId,path:a.path,launchId:a.intent.launchId,seat:a}}}function aa(a){return{status:409,body:{error:"an orchestrator seat transition is already in progress for this project",code:"seat_intent_in_progress",seat:a}}}async function ab(a,b){let c=null,d=(0,f.oV)(()=>{let d=(0,W.ho)({project:a.project,clientRequestId:a.clientRequestId,conversationId:a.conversationId,path:a.path,launchId:a.launchId,engine:a.engine,model:a.model,now:b.now()});return"missing"!==d.kind&&(c=ac(d.seat,b)),d});return"missing"===d.kind?null:{seat:c??d.seat}}function ac(a,b){if(!a.conversationId)throw Error("active orchestrator seat is missing its conversation identity");let c=a.engine&&a.model?{engine:null,model:null}:b.runtimeIdentity(a.conversationId),d=(0,W.T7)({project:a.project,conversationId:a.conversationId,engine:c.engine,model:c.model})??a;return b.stampRegistryIdentity(d),d}function ad(a,b,c){return(0,f.oV)(()=>{let d=(0,W.HS)(a).active;return d&&d.intent.clientRequestId===b?ac(d,c):null})}function ae(a,b){let c=(0,W.HS)(a).active;if(!c?.conversationId||"spawn"!==c.intent.mode||null!==c.path)return null;let d=b.resolvedConversation(c.conversationId);if(d)return(0,W.x2)({project:a,clientRequestId:c.intent.clientRequestId,conversationId:c.conversationId,path:d.path}),null;let e=b.launchSettlement({launchId:c.intent.launchId,clientRequestId:c.intent.clientRequestId});if("failed"!==e.kind)return null;let f=(0,W.Ye)({project:a,clientRequestId:c.intent.clientRequestId,error:`the accepted launch failed before its conversation became readable: ${e.error}`,now:b.now(),resolvable:a=>null!==b.resolvedConversation(a),restorableSeat:a=>(function(a,b){let c=b.resolvedConversation(a.conversationId);if(!c)return null;let d=b.runtimeIdentity(a.conversationId);return{project:a.stillborn.project,seatEpoch:a.stillborn.seatEpoch,conversationId:c.conversationId,path:c.path,engine:d.engine,model:d.model,runtimeIdentityFrozen:!1,mandate:z.ij,promptVersion:z.L8,predecessorConversationId:null,triggeredBy:null,state:"active",intent:{clientRequestId:`restored-${a.stillborn.intent.clientRequestId}`.slice(0,128),mode:"existing",launchId:null,error:null},designatedAt:a.stillborn.designatedAt,activatedAt:null}})(a,b)});return f&&console.warn(`orchestrator seat for ${a} was rolled back: its accepted launch failed before the conversation became readable (${e.error})`),f}function af(a,b=X){return ae((0,W.ut)(a),b)}function ag(a,b){let c=(0,W.HS)(a).pending;if(!c||"spawn"!==c.intent.mode||null!==c.intent.error)return null;let d=b.launchSettlement({launchId:c.intent.launchId,clientRequestId:c.intent.clientRequestId});return"settled"===d.kind?ab({project:a,clientRequestId:c.intent.clientRequestId,conversationId:d.conversationId,path:d.path,launchId:d.launchId??c.intent.launchId,...d.engine?{engine:d.engine}:{},...d.model?{model:d.model}:{}},b):("failed"===d.kind&&(0,W.Cp)(a,c.intent.clientRequestId,d.error,b.now()),null)}async function ah(a,b,c){try{return await c()}catch(j){let c=j instanceof f.gB,d=j instanceof Error?j.message:String(j),e="string"==typeof a.project?(0,g.QK)(a.project):null,h=$(a.clientRequestId),i=null;if(e&&Y.test(h)){let a=(0,W.ut)(e);try{i=(0,W.Cp)(a,h,d)}catch{}}return console.error(`orchestrator seat transition failed for ${String(a.project)}: ${d}`),{status:c?503:500,body:{error:d,code:c?"seat_store_busy":b,retryable:c,seat:i?.seat??null}}}}function ai(a,b=X,c=null){return ah(a,"seat_transition_failed",()=>aj(a,b,c))}async function aj(a,b,c){let d,f,i,j="string"==typeof a.project?(0,g.QK)(a.project):null;if(!j)return{status:400,body:{error:"project must be a valid project key"}};let k=(0,W.ut)(j),l="string"==typeof a.mandate?a.mandate:"";if(!l.trim())return{status:400,body:{error:"mandate is required"}};let m=$(a.clientRequestId);if(!Y.test(m))return{status:400,body:{error:"clientRequestId must be 8-128 URL-safe characters"}};let n=$(a.conversationId);if(n&&!n.startsWith("conversation_"))return{status:400,body:{error:"conversationId is invalid"}};let o="number"==typeof a.promptVersion&&Number.isInteger(a.promptVersion)?a.promptVersion:null,p=(d=I(n?"existing":"spawn",a.roleParams),(i=(f=D((0,z.OT)(l)))+d-s.N0)>0?{ok:!1,bytes:f,overhead:d,bound:s.N0,excess:i}:{ok:!0,bytes:f,overhead:d});if(!p.ok)return{status:413,body:J(p)};ae(k,b);let q=ag(k,b);q&&await q;let u=ad(k,m,b);if(u)return _(u);let v="number"==typeof a.expectedIncumbentSeatEpoch?a.expectedIncumbentSeatEpoch:null;if(null!==v){let a=(0,W.HS)(k).active;if(!a||a.seatEpoch!==v)return Z(k,v,a)}if(n){let a=b.conversationTarget(n);if(!a)return{status:404,body:{error:"conversation is unknown to the registry"}};if("ineligible"===a.kind)return{status:409,body:{error:a.error,code:a.code}};if(a.project!==k)return{status:409,body:{error:"conversation belongs to a different project",code:"project_mismatch"}};let d=(0,W.$p)({project:k,mandate:l,clientRequestId:m,mode:"existing",conversationId:a.conversationId,engine:a.engine??null,model:a.model??null,promptVersion:o,triggeredBy:c,now:b.now()});if("completed"===d.kind){let a=ad(k,m,b);return a?_(a):{status:409,body:{error:"seat intent was superseded by a newer designation"}}}if("in_progress"===d.kind)return aa(d.seat);let e="replay"===d.kind?b.conversationTarget(d.seat.conversationId??""):a;if(!e||"ineligible"===e.kind||e.project!==k){let a="the pending adoption target is no longer eligible",c=(0,W.Cp)(k,m,a,b.now());return{status:409,body:{error:a,code:"adoption_target_unavailable",seat:c?.seat??null}}}let f=await b.deliver({conversationId:e.conversationId,path:e.path,clientMessageId:`orchmandate_${m}`,text:(0,z.OT)("replay"===d.kind?d.seat.mandate:l)});if(!f.ok){let a=f.error??"mandate delivery failed",c=(0,W.Cp)(k,m,a,b.now());return{status:502,body:{error:a,code:"mandate_delivery_failed",seat:c?.seat??null}}}let g=await ab({project:k,clientRequestId:m,conversationId:e.conversationId,path:e.path},b);return g?{status:200,body:{ok:!0,state:"settled",conversationId:e.conversationId,path:e.path,delivery:f.outcome??"delivered",seat:g.seat}}:{status:409,body:{error:"seat intent was superseded by a newer designation"}}}let w=(0,W.HS)(k).active;if(w&&w.intent.clientRequestId!==m&&!0!==a.replaceIncumbent)return{status:409,body:{error:`an orchestrator is already designated for ${k}; use rotate_orchestrator for an explicit handoff, or pass replaceIncumbent: true to replace deliberately`,code:"already_designated",incumbentSeatEpoch:w.seatEpoch}};let x=(0,r.s8)({role:"orchestrator",roleParams:a.roleParams,engine:a.engine,model:a.model,effort:a.effort});if(!x.ok||!x.value)return{status:400,body:{error:x.ok?"orchestrator runtime is unavailable":x.error}};let y=(0,W.$p)({project:k,mandate:l,clientRequestId:m,mode:"spawn",engine:x.value.config.engine,model:x.value.config.model,promptVersion:o,triggeredBy:c,now:b.now()});if("completed"===y.kind){let a=ad(k,m,b);return a?_(a):{status:409,body:{error:"seat intent was superseded by a newer designation"}}}if("in_progress"===y.kind)return aa(y.seat);if("replay"===y.kind&&!0!==y.seat.runtimeIdentityFrozen){let a="legacy pending orchestrator runtime identity is unavailable; retry the designation with a new clientRequestId",c=(0,W.Cp)(k,m,a,b.now());return{status:409,body:{error:a,code:"legacy_runtime_identity_unavailable",seat:c?.seat??null}}}let A=(0,z.OT)("replay"===y.kind?y.seat.mandate:l),B="replay"===y.kind?{...y.seat.engine?{engine:y.seat.engine}:{},...y.seat.model?{model:y.seat.model}:{}}:{engine:x.value.config.engine,model:x.value.config.model},C=function(a,b){if("string"==typeof b&&b.trim())return b.trim();let c=process.env.LLV_ORCHESTRATOR_CWD?.trim();if(c)return c;let d=a=>{if(!a)return!1;try{return e().statSync(a).isDirectory()}catch{return!1}};for(let b of Object.values((0,h.agentRegistry)().readOnlySnapshot().conversations).filter(b=>b.projectOwnership?.project===a||b.generations.some(b=>b.launchProfile?.project===a)).sort((a,b)=>(b.updatedAt??"").localeCompare(a.updatedAt??"")))for(let a=b.generations.length-1;a>=0;a-=1){let c=b.generations[a]?.launchProfile?.cwd;if(d(c))return c}return null}(k,a.cwd);if(!C){let a=(0,W.Cp)(k,m,"orchestrator cwd could not be resolved",b.now());return{status:400,body:{error:"orchestrator cwd could not be resolved — pass cwd explicitly or set LLV_ORCHESTRATOR_CWD",code:"cwd_unresolved",seat:a?.seat??null}}}let E={...Object.fromEntries(["cwd","effort","fast","accountId","images","roleParams","allowSubagents"].flatMap(b=>void 0===a[b]?[]:[[b,a[b]]])),...B,role:"orchestrator",roleParams:a.roleParams??{mode:"standard"},project:k,cwd:C,prompt:A,title:(0,t.bF)("orchestrator",A,k),clientAttemptId:m},F=await b.spawn(E),G=$(F.body.conversationId),H=F.status>=200&&F.status<300&&!1!==F.body.ok,K=$(F.body.launchId),L=H&&202===F.status&&!!G&&!!K;if(!(H&&!1!==F.body.launched&&G)&&!L){let a=$(F.body.error)||(H?G?"spawn did not report an accepted launch":"spawn response omitted conversationId":`spawn was rejected with HTTP status ${F.status}`),c=(0,W.Cp)(k,m,a,b.now());return{status:F.status,body:{...F.body,seat:c?.seat??null}}}let M=await ab({project:k,clientRequestId:m,conversationId:G,path:"string"==typeof F.body.path?F.body.path:null,launchId:K||null,engine:x.value.config.engine,model:x.value.config.model},b);return M?{status:F.status,body:{...F.body,...L?{accepted:!0,state:"accepted"}:{},seat:M.seat}}:{status:409,body:{error:"seat intent was superseded by a newer designation"}}}function ak(a){return`conversation_messages({"clientRequestId":"rotation-predecessor-recent-turns-${a}","conversationId":"${a}","roles":["user","assistant"],"limit":40})`}function al(a,b,c=X){return function(a,b=X,c=null){return ah(a,"rotation_failed",()=>am(a,b,c))}(b,c,(0,k.Yd)(a))}async function am(a,b,c){var d,e;let f,h,i=c?(h=c.conversationId?(0,W.js)().find(a=>a.conversationId===c.conversationId):void 0,{kind:c.kind,conversationId:c.conversationId,seatEpoch:h?.seatEpoch??null}):null,j="string"==typeof a.project?(0,g.QK)(a.project):null;if(!j)return{status:400,body:{error:"project must be a valid project key"}};let k=(0,W.ut)(j),l=$(a.clientRequestId);if(!Y.test(l))return{status:400,body:{error:"clientRequestId must be 8-128 URL-safe characters"}};let m=ae(k,b),n=m?{rolledBack:{conversationId:m.terminalized.seat.conversationId,seatEpoch:m.terminalized.seat.seatEpoch,error:m.terminalized.seat.intent.error,terminalizedAt:m.terminalized.terminalizedAt,restoredConversationId:m.restored?.conversationId??null}}:{},o=ag(k,b);o&&await o;let p=(0,W.HS)(k).active;if(!p?.conversationId)return{status:409,body:{error:"no orchestrator is designated for this project — use create_orchestrator instead of rotating",code:"no_incumbent",...n}};let q=b.conversationTarget(p.conversationId),r=q?.kind==="eligible"?q:null,s=function(a,b,c){let d=a=>{if(!a)return null;let b=c.resolvedConversation(a);return b?.holdsTurns?{conversationId:b.conversationId,cwd:b.cwd}:null},e=d(b.conversationId);if(e)return e;let f=(0,W.Kp)().filter(b=>b.project===a),g=new Set([b.conversationId??""]),h=b.conversationId;for(let a=0;a<8&&h;a+=1){let a=[...f].reverse().find(a=>a.successorConversationId===h),b=a?.conversationId??null;if(!b||g.has(b))break;g.add(b),h=b;let c=d(b);if(c)return c}return null}(k,p,b),t=b.projectTasks(k).slice(0,12),u=$(a.handoffNotes).slice(0,2e3),v={header:[`You are replacing orchestrator conversation ${p.conversationId} for project ${k}. Its manager authority is revoked; its session and card remain on the board, linked to yours.`,...s?[s.conversationId===p.conversationId?`Your predecessor's recent turns — decisions, blockers, in-flight work — are one call away: ${ak(s.conversationId)}. Records are newest first; pass the returned cursor with a fresh clientRequestId for each older page. Read them before acting, and never open the transcript file. If the call reports that the conversation has no transcript, reconstruct state from the board.`:`The seat you are replacing holds no readable turns, so it is not what you read. The last predecessor in this lineage that does is ${s.conversationId}: ${ak(s.conversationId)}. Records are newest first; pass the returned cursor with a fresh clientRequestId for each older page. Read them before acting, and never open the transcript file.`]:["No conversation in this seat's lineage holds readable turns — the seat you are replacing has none, and neither does any predecessor on record. There is no handover transcript to read: reconstruct state from the board tasks below and from the notes in this mandate, and do not go looking for the predecessor's transcript file."]],tasks:t.length?`Open board tasks for this project:
120
- ${t.map(a=>`- [${a.status}] ${a.text.slice(0,140)} (${a.id})`).join("\n")}`:"No open board tasks are recorded for this project.",notes:u||null},w=$(a.mandate)||p.mandate,x=w===z.ij?z.L8:w!==p.mandate&&(0,z.Ge)(p.promptVersion)?null:p.promptVersion,y=function(a,b){let c=(0,W.HS)(a.project).pending;if(c&&c.intent.clientRequestId===a.clientRequestId&&null===c.intent.error)return{kind:"composed",mandate:c.mandate,handoff:null};let d=function(a){let b=[],c=[],d=[],e=null,f=[],g=()=>{let a=f.join("\n").trim();a&&("history"===e?c.push(a):"handoff"===e&&d.push(a)),f=[]};for(let c of F(a).split("\n")){if(c===B||c===A){g(),e=c===B?"history":"handoff";continue}null===e?b.push(c):f.push(c)}return g(),{core:b.join("\n").trimEnd(),history:c.length?c.join("\n\n"):null,handoffs:d}}(a.base);return null===d.history&&0===d.handoffs.length?an(a,d.core,null,"none",null):(async()=>{let c;try{c=await b.summarizeHandoffs({project:a.project,clientRequestId:a.clientRequestId,priorHistory:d.history,priorHandoffs:d.handoffs,predecessor:a.predecessor})}catch{c={kind:"fallback",reason:"error"}}if("digest"===c.kind){let b;return an(a,d.core,(b=G(c.text).trim())&&E(b,4096).value||null,"digest",null)}return console.warn(`orchestrator rotation for ${a.project} used the verbatim handoff fallback: ${c.reason}`),an(a,d.core,function(a,b,c){let d=[...[...b].reverse().slice(0,2).map(a=>({label:"### Earlier handoff",body:a})),...a?[{label:"### Earlier rotation history",body:a}]:[]];if(!d.length)return null;let e=`(verbatim — summarizer ${c})`,f=4096-D(e),g=[];for(let a of d){let b=D(`
119
+ ${d??"(unavailable)"}`].join("\n\n")}(a,d),model:j.Ze,effort:"low",account:"codex"===c.account.engine?{home:c.account.home,managed:"managed"===c.account.kind}:null,artifactDir:f,timeoutMs:75e3,sandbox:"read-only"});if("timeout"===e.status)return{kind:"fallback",reason:"timeout"};if("done"!==e.status)return{kind:"fallback",reason:"failed"};let g=U(e.finalOutput).trim();if(!g)return{kind:"fallback",reason:"empty"};if(E(g)>4096)return{kind:"fallback",reason:"over_budget"};let h=H(g).trim();return h?{kind:"digest",text:h}:{kind:"fallback",reason:"empty"}}finally{e().rmSync(f,{recursive:!0,force:!0})}}var X=c(15408);let Y={spawn:async function(a){let{executeSpawnRequest:b}=await Promise.all([c.e(1849),c.e(7238),c.e(7722)]).then(c.bind(c,67722)),d={headers:new Headers({host:"127.0.0.1",...(0,k.NZ)("orchestrator"),[l.VIEWER_SPAWN_CAPABILITY_HEADER]:(0,i.ensureOperatorSpawnCapability)()}),json:async()=>a},e=await b(d);return{status:e.status,body:await e.json()}},deliver:async function(a){if((0,n.cM)()){let{enqueueStructuredMessage:b}=await Promise.resolve().then(c.bind(c,34083)),d=await b({path:a.path??"",conversationId:a.conversationId,clientMessageId:a.clientMessageId,text:a.text,images:[]});if(d)return d.ok?{ok:!0,outcome:"outcome"in d&&"string"==typeof d.outcome?d.outcome:"delivered"}:{ok:!1,error:d.error}}let b=await (0,m.Ku)({pid:null,path:a.path??"",conversationId:a.conversationId,clientMessageId:a.clientMessageId,text:a.text,images:[]});return b.ok?{ok:!0,outcome:b.outcome??"delivered"}:{ok:!1,error:b.error}},conversationTarget:a=>{let b=(0,h.agentRegistry)().conversation(a);if(!b)return null;if(b.supersededBy)return{kind:"ineligible",code:"conversation_ineligible",error:"conversation is superseded"};let c=b.generations.at(-1),d=c?.path?.trim();if(!d||!e().existsSync(d))return{kind:"ineligible",code:"missing_transcript",error:"conversation transcript is unavailable"};let f=c?.launchProfile?.cwd?.trim();if(!f||!e().existsSync(f)||!e().statSync(f).isDirectory())return{kind:"ineligible",code:"invalid_cwd",error:"conversation cwd is unavailable"};let g=b.projectOwnership?.project??(0,p.hY)(f);return g?{kind:"eligible",conversationId:b.id,path:d,cwd:f,project:(0,X.canonicalOrchestratorProject)(g),engine:b.engine,model:c?.launchProfile.model?.trim()||(0,j.Gh)(b.engine)}:{kind:"ineligible",code:"missing_project",error:"conversation project is unavailable"}},projectTasks:a=>(0,v.h6)().filter(b=>b.project===a&&"done"!==b.status).map(a=>({id:a.id,status:a.status,text:a.text})),summarizeHandoffs:a=>W(a),launchSettlement:({launchId:a,clientRequestId:b})=>{let c=(0,h.agentRegistry)(),d=c.spawnReceiptForClientAttempt(b);return!d||a&&d.launchId!==a?{kind:"unknown"}:d.rejection||"failed"===d.state||"conflicted"===d.state?{kind:"failed",error:d.error??d.rejection?.guidance??`spawn receipt is terminally ${d.state}`}:{kind:"settled",conversationId:d.conversationId,path:(0,h.Vt)(c.readOnlySnapshot()).allowsReceipt(d)?d.artifactPath:null,launchId:d.launchId,engine:d.engine,model:d.launchProfile.model}},resolvedConversation:a=>{if(!a)return null;let b=(0,h.agentRegistry)().conversation(a);if(!b)return null;let c=b.generations.at(-1)?.path?.trim();if(!c||!(0,q.EG)(c))return null;let d=b.generations.at(-1)?.launchProfile?.cwd?.trim();return{conversationId:b.id,path:c,holdsTurns:(0,r.x_)(c,b.engine),cwd:d&&function(a){try{return e().statSync(a).isDirectory()}catch{return!1}}(d)?d:null}},runtimeIdentity:a=>{let b=(0,h.agentRegistry)().conversation(a),c=b?b.generations.at(-1)?.launchProfile.model?.trim()||(0,j.Gh)(b.engine):null;return{engine:b?.engine??null,model:c}},stampRegistryIdentity:a=>{(0,h.agentRegistry)().stampOrchestratorSeatIdentity(a)},now:()=>new Date().toISOString()},Z=/^[A-Za-z0-9_-]{8,128}$/;function $(a,b,c){return{status:409,body:{error:`the orchestrator seat for ${a} changed while this rotation composed its handoff (designation epoch ${b} is no longer current); rotate again to hand off from the seated orchestrator`,code:"incumbent_changed",currentSeatEpoch:c?.seatEpoch??null,currentConversationId:c?.conversationId??null}}}function _(a){return"string"==typeof a?a.trim():""}function aa(a){let b=null===a.path&&null!==a.intent.launchId;return{status:200,body:{ok:!0,replayed:!0,state:a.path?"settled":b?"accepted":"starting",accepted:b,conversationId:a.conversationId,path:a.path,launchId:a.intent.launchId,seat:a}}}function ab(a){return{status:409,body:{error:"an orchestrator seat transition is already in progress for this project",code:"seat_intent_in_progress",seat:a}}}async function ac(a,b){let c=null,d=(0,f.oV)(()=>{let d=(0,X.completeOrchestratorSeatIntent)({project:a.project,clientRequestId:a.clientRequestId,conversationId:a.conversationId,path:a.path,launchId:a.launchId,engine:a.engine,model:a.model,now:b.now()});return"missing"!==d.kind&&(c=ad(d.seat,b)),d});return"missing"===d.kind?null:{seat:c??d.seat}}function ad(a,b){if(!a.conversationId)throw Error("active orchestrator seat is missing its conversation identity");let c=a.engine&&a.model?{engine:null,model:null}:b.runtimeIdentity(a.conversationId),d=(0,X.repairOrchestratorSeatRuntimeIdentity)({project:a.project,conversationId:a.conversationId,engine:c.engine,model:c.model})??a;return b.stampRegistryIdentity(d),d}function ae(a,b,c){return(0,f.oV)(()=>{let d=(0,X.orchestratorSeatFor)(a).active;return d&&d.intent.clientRequestId===b?ad(d,c):null})}function af(a,b){let c=(0,X.orchestratorSeatFor)(a).active;if(!c?.conversationId||"spawn"!==c.intent.mode||null!==c.path)return null;let d=b.resolvedConversation(c.conversationId);if(d)return(0,X.confirmOrchestratorSeatMaterialization)({project:a,clientRequestId:c.intent.clientRequestId,conversationId:c.conversationId,path:d.path}),null;let e=b.launchSettlement({launchId:c.intent.launchId,clientRequestId:c.intent.clientRequestId});if("failed"!==e.kind)return null;let f=(0,X.abandonStillbornOrchestratorSeat)({project:a,clientRequestId:c.intent.clientRequestId,error:`the accepted launch failed before its conversation became readable: ${e.error}`,now:b.now(),resolvable:a=>null!==b.resolvedConversation(a),restorableSeat:a=>(function(a,b){let c=b.resolvedConversation(a.conversationId);if(!c)return null;let d=b.runtimeIdentity(a.conversationId);return{project:a.stillborn.project,seatEpoch:a.stillborn.seatEpoch,conversationId:c.conversationId,path:c.path,engine:d.engine,model:d.model,runtimeIdentityFrozen:!1,mandate:A.ij,promptVersion:A.L8,predecessorConversationId:null,triggeredBy:null,state:"active",intent:{clientRequestId:`restored-${a.stillborn.intent.clientRequestId}`.slice(0,128),mode:"existing",launchId:null,error:null},designatedAt:a.stillborn.designatedAt,activatedAt:null}})(a,b)});return f&&console.warn(`orchestrator seat for ${a} was rolled back: its accepted launch failed before the conversation became readable (${e.error})`),f}function ag(a,b=Y){return af((0,X.canonicalOrchestratorProject)(a),b)}function ah(a,b){let c=(0,X.orchestratorSeatFor)(a).pending;if(!c||"spawn"!==c.intent.mode||null!==c.intent.error)return null;let d=b.launchSettlement({launchId:c.intent.launchId,clientRequestId:c.intent.clientRequestId});return"settled"===d.kind?ac({project:a,clientRequestId:c.intent.clientRequestId,conversationId:d.conversationId,path:d.path,launchId:d.launchId??c.intent.launchId,...d.engine?{engine:d.engine}:{},...d.model?{model:d.model}:{}},b):("failed"===d.kind&&(0,X.failOrchestratorSeatIntent)(a,c.intent.clientRequestId,d.error,b.now()),null)}async function ai(a,b,c){try{return await c()}catch(j){let c=j instanceof f.gB,d=j instanceof Error?j.message:String(j),e="string"==typeof a.project?(0,g.QK)(a.project):null,h=_(a.clientRequestId),i=null;if(e&&Z.test(h)){let a=(0,X.canonicalOrchestratorProject)(e);try{i=(0,X.failOrchestratorSeatIntent)(a,h,d)}catch{}}return console.error(`orchestrator seat transition failed for ${String(a.project)}: ${d}`),{status:c?503:500,body:{error:d,code:c?"seat_store_busy":b,retryable:c,seat:i?.seat??null}}}}function aj(a,b=Y,c=null){return ai(a,"seat_transition_failed",()=>ak(a,b,c))}async function ak(a,b,c){let d,f,i,j="string"==typeof a.project?(0,g.QK)(a.project):null;if(!j)return{status:400,body:{error:"project must be a valid project key"}};(0,o.n)([(0,o.M)((0,X.canonicalOrchestratorProject)(j),_(a.cwd))]);let k=(0,X.canonicalOrchestratorProject)(j),l="string"==typeof a.mandate?a.mandate:"";if(!l.trim())return{status:400,body:{error:"mandate is required"}};let m=_(a.clientRequestId);if(!Z.test(m))return{status:400,body:{error:"clientRequestId must be 8-128 URL-safe characters"}};let n=_(a.conversationId);if(n&&!n.startsWith("conversation_"))return{status:400,body:{error:"conversationId is invalid"}};let p="number"==typeof a.promptVersion&&Number.isInteger(a.promptVersion)?a.promptVersion:null,q=(d=J(n?"existing":"spawn",a.roleParams),(i=(f=E((0,A.OT)(l)))+d-t.N0)>0?{ok:!1,bytes:f,overhead:d,bound:t.N0,excess:i}:{ok:!0,bytes:f,overhead:d});if(!q.ok)return{status:413,body:K(q)};af(k,b);let r=ah(k,b);r&&await r;let v=ae(k,m,b);if(v)return aa(v);let w="number"==typeof a.expectedIncumbentSeatEpoch?a.expectedIncumbentSeatEpoch:null;if(null!==w){let a=(0,X.orchestratorSeatFor)(k).active;if(!a||a.seatEpoch!==w)return $(k,w,a)}if(n){let a=b.conversationTarget(n);if(!a)return{status:404,body:{error:"conversation is unknown to the registry"}};if("ineligible"===a.kind)return{status:409,body:{error:a.error,code:a.code}};if(a.project!==k)return{status:409,body:{error:"conversation belongs to a different project",code:"project_mismatch"}};let d=(0,X.beginOrchestratorSeatIntent)({project:k,mandate:l,clientRequestId:m,mode:"existing",conversationId:a.conversationId,engine:a.engine??null,model:a.model??null,promptVersion:p,triggeredBy:c,now:b.now()});if("completed"===d.kind){let a=ae(k,m,b);return a?aa(a):{status:409,body:{error:"seat intent was superseded by a newer designation"}}}if("in_progress"===d.kind)return ab(d.seat);let e="replay"===d.kind?b.conversationTarget(d.seat.conversationId??""):a;if(!e||"ineligible"===e.kind||e.project!==k){let a="the pending adoption target is no longer eligible",c=(0,X.failOrchestratorSeatIntent)(k,m,a,b.now());return{status:409,body:{error:a,code:"adoption_target_unavailable",seat:c?.seat??null}}}let f=await b.deliver({conversationId:e.conversationId,path:e.path,clientMessageId:`orchmandate_${m}`,text:(0,A.OT)("replay"===d.kind?d.seat.mandate:l)});if(!f.ok){let a=f.error??"mandate delivery failed",c=(0,X.failOrchestratorSeatIntent)(k,m,a,b.now());return{status:502,body:{error:a,code:"mandate_delivery_failed",seat:c?.seat??null}}}let g=await ac({project:k,clientRequestId:m,conversationId:e.conversationId,path:e.path},b);return g?{status:200,body:{ok:!0,state:"settled",conversationId:e.conversationId,path:e.path,delivery:f.outcome??"delivered",seat:g.seat}}:{status:409,body:{error:"seat intent was superseded by a newer designation"}}}let x=(0,X.orchestratorSeatFor)(k).active;if(x&&x.intent.clientRequestId!==m&&!0!==a.replaceIncumbent)return{status:409,body:{error:`an orchestrator is already designated for ${k}; use rotate_orchestrator for an explicit handoff, or pass replaceIncumbent: true to replace deliberately`,code:"already_designated",incumbentSeatEpoch:x.seatEpoch}};let y=(0,s.s8)({role:"orchestrator",roleParams:a.roleParams,engine:a.engine,model:a.model,effort:a.effort});if(!y.ok||!y.value)return{status:400,body:{error:y.ok?"orchestrator runtime is unavailable":y.error}};let z=(0,X.beginOrchestratorSeatIntent)({project:k,mandate:l,clientRequestId:m,mode:"spawn",engine:y.value.config.engine,model:y.value.config.model,promptVersion:p,triggeredBy:c,now:b.now()});if("completed"===z.kind){let a=ae(k,m,b);return a?aa(a):{status:409,body:{error:"seat intent was superseded by a newer designation"}}}if("in_progress"===z.kind)return ab(z.seat);if("replay"===z.kind&&!0!==z.seat.runtimeIdentityFrozen){let a="legacy pending orchestrator runtime identity is unavailable; retry the designation with a new clientRequestId",c=(0,X.failOrchestratorSeatIntent)(k,m,a,b.now());return{status:409,body:{error:a,code:"legacy_runtime_identity_unavailable",seat:c?.seat??null}}}let B=(0,A.OT)("replay"===z.kind?z.seat.mandate:l),C="replay"===z.kind?{...z.seat.engine?{engine:z.seat.engine}:{},...z.seat.model?{model:z.seat.model}:{}}:{engine:y.value.config.engine,model:y.value.config.model},D=function(a,b){if("string"==typeof b&&b.trim())return b.trim();let c=process.env.LLV_ORCHESTRATOR_CWD?.trim();if(c)return c;let d=a=>{if(!a)return!1;try{return e().statSync(a).isDirectory()}catch{return!1}};for(let b of Object.values((0,h.agentRegistry)().readOnlySnapshot().conversations).filter(b=>b.projectOwnership?.project===a||b.generations.some(b=>b.launchProfile?.project===a)).sort((a,b)=>(b.updatedAt??"").localeCompare(a.updatedAt??"")))for(let a=b.generations.length-1;a>=0;a-=1){let c=b.generations[a]?.launchProfile?.cwd;if(d(c))return c}return null}(k,a.cwd);if(!D){let a=(0,X.failOrchestratorSeatIntent)(k,m,"orchestrator cwd could not be resolved",b.now());return{status:400,body:{error:"orchestrator cwd could not be resolved — pass cwd explicitly or set LLV_ORCHESTRATOR_CWD",code:"cwd_unresolved",seat:a?.seat??null}}}let F={...Object.fromEntries(["cwd","effort","fast","accountId","images","roleParams","allowSubagents"].flatMap(b=>void 0===a[b]?[]:[[b,a[b]]])),...C,role:"orchestrator",roleParams:a.roleParams??{mode:"standard"},project:k,cwd:D,prompt:B,title:(0,u.bF)("orchestrator",B,k),clientAttemptId:m},G=await b.spawn(F),H=_(G.body.conversationId),I=G.status>=200&&G.status<300&&!1!==G.body.ok,L=_(G.body.launchId),M=I&&202===G.status&&!!H&&!!L;if(!(I&&!1!==G.body.launched&&H)&&!M){let a=_(G.body.error)||(I?H?"spawn did not report an accepted launch":"spawn response omitted conversationId":`spawn was rejected with HTTP status ${G.status}`),c=(0,X.failOrchestratorSeatIntent)(k,m,a,b.now());return{status:G.status,body:{...G.body,seat:c?.seat??null}}}let N=await ac({project:k,clientRequestId:m,conversationId:H,path:"string"==typeof G.body.path?G.body.path:null,launchId:L||null,engine:y.value.config.engine,model:y.value.config.model},b);return N?{status:G.status,body:{...G.body,...M?{accepted:!0,state:"accepted"}:{},seat:N.seat}}:{status:409,body:{error:"seat intent was superseded by a newer designation"}}}function al(a){return`conversation_messages({"clientRequestId":"rotation-predecessor-recent-turns-${a}","conversationId":"${a}","roles":["user","assistant"],"limit":40})`}function am(a,b,c=Y){return function(a,b=Y,c=null){return ai(a,"rotation_failed",()=>an(a,b,c))}(b,c,(0,k.Yd)(a))}async function an(a,b,c){var d,e;let f,h,i=c?(h=c.conversationId?(0,X.activeOrchestratorSeats)().find(a=>a.conversationId===c.conversationId):void 0,{kind:c.kind,conversationId:c.conversationId,seatEpoch:h?.seatEpoch??null}):null,j="string"==typeof a.project?(0,g.QK)(a.project):null;if(!j)return{status:400,body:{error:"project must be a valid project key"}};let k=(0,X.canonicalOrchestratorProject)(j),l=_(a.clientRequestId);if(!Z.test(l))return{status:400,body:{error:"clientRequestId must be 8-128 URL-safe characters"}};let m=af(k,b),n=m?{rolledBack:{conversationId:m.terminalized.seat.conversationId,seatEpoch:m.terminalized.seat.seatEpoch,error:m.terminalized.seat.intent.error,terminalizedAt:m.terminalized.terminalizedAt,restoredConversationId:m.restored?.conversationId??null}}:{},o=ah(k,b);o&&await o;let p=(0,X.orchestratorSeatFor)(k).active;if(!p?.conversationId)return{status:409,body:{error:"no orchestrator is designated for this project — use create_orchestrator instead of rotating",code:"no_incumbent",...n}};let q=b.conversationTarget(p.conversationId),r=q?.kind==="eligible"?q:null,s=function(a,b,c){let d=a=>{if(!a)return null;let b=c.resolvedConversation(a);return b?.holdsTurns?{conversationId:b.conversationId,cwd:b.cwd}:null},e=d(b.conversationId);if(e)return e;let f=(0,X.orchestratorRevocations)().filter(b=>b.project===a),g=new Set([b.conversationId??""]),h=b.conversationId;for(let a=0;a<8&&h;a+=1){let a=[...f].reverse().find(a=>a.successorConversationId===h),b=a?.conversationId??null;if(!b||g.has(b))break;g.add(b),h=b;let c=d(b);if(c)return c}return null}(k,p,b),t=b.projectTasks(k).slice(0,12),u=_(a.handoffNotes).slice(0,2e3),v={header:[`You are replacing orchestrator conversation ${p.conversationId} for project ${k}. Its manager authority is revoked; its session and card remain on the board, linked to yours.`,...s?[s.conversationId===p.conversationId?`Your predecessor's recent turns — decisions, blockers, in-flight work — are one call away: ${al(s.conversationId)}. Records are newest first; pass the returned cursor with a fresh clientRequestId for each older page. Read them before acting, and never open the transcript file. If the call reports that the conversation has no transcript, reconstruct state from the board.`:`The seat you are replacing holds no readable turns, so it is not what you read. The last predecessor in this lineage that does is ${s.conversationId}: ${al(s.conversationId)}. Records are newest first; pass the returned cursor with a fresh clientRequestId for each older page. Read them before acting, and never open the transcript file.`]:["No conversation in this seat's lineage holds readable turns — the seat you are replacing has none, and neither does any predecessor on record. There is no handover transcript to read: reconstruct state from the board tasks below and from the notes in this mandate, and do not go looking for the predecessor's transcript file."]],tasks:t.length?`Open board tasks for this project:
120
+ ${t.map(a=>`- [${a.status}] ${a.text.slice(0,140)} (${a.id})`).join("\n")}`:"No open board tasks are recorded for this project.",notes:u||null},w=_(a.mandate)||p.mandate,x=w===A.ij?A.L8:w!==p.mandate&&(0,A.Ge)(p.promptVersion)?null:p.promptVersion,y=function(a,b){let c=(0,X.orchestratorSeatFor)(a.project).pending;if(c&&c.intent.clientRequestId===a.clientRequestId&&null===c.intent.error)return{kind:"composed",mandate:c.mandate,handoff:null};let d=function(a){let b=[],c=[],d=[],e=null,f=[],g=()=>{let a=f.join("\n").trim();a&&("history"===e?c.push(a):"handoff"===e&&d.push(a)),f=[]};for(let c of G(a).split("\n")){if(c===C||c===B){g(),e=c===C?"history":"handoff";continue}null===e?b.push(c):f.push(c)}return g(),{core:b.join("\n").trimEnd(),history:c.length?c.join("\n\n"):null,handoffs:d}}(a.base);return null===d.history&&0===d.handoffs.length?ao(a,d.core,null,"none",null):(async()=>{let c;try{c=await b.summarizeHandoffs({project:a.project,clientRequestId:a.clientRequestId,priorHistory:d.history,priorHandoffs:d.handoffs,predecessor:a.predecessor})}catch{c={kind:"fallback",reason:"error"}}if("digest"===c.kind){let b;return ao(a,d.core,(b=H(c.text).trim())&&F(b,4096).value||null,"digest",null)}return console.warn(`orchestrator rotation for ${a.project} used the verbatim handoff fallback: ${c.reason}`),ao(a,d.core,function(a,b,c){let d=[...[...b].reverse().slice(0,2).map(a=>({label:"### Earlier handoff",body:a})),...a?[{label:"### Earlier rotation history",body:a}]:[]];if(!d.length)return null;let e=`(verbatim — summarizer ${c})`,f=4096-E(e),g=[];for(let a of d){let b=E(`
121
121
 
122
122
  ${a.label}
123
- `);if(f-b<=0)continue;let c=E(G(a.body).trim(),f-b).value;c&&(g.push({label:a.label,body:c}),f-=b+D(c))}return g.length?[e,...g.reverse().map(a=>`${a.label}
124
- ${a.body}`)].join("\n\n"):null}(d.history,d.handoffs,c.reason),"fallback",c.reason)})()}({project:k,clientRequestId:l,base:w,handoff:v,predecessor:r?{path:r.path,engine:r.engine}:null,roleParams:a.roleParams},b),C=y instanceof Promise?await y:y,H={conversationId:p.conversationId,path:r?.path??p.path,seatEpoch:p.seatEpoch},I=(0,W.HS)(k).active;if(!I||I.conversationId!==p.conversationId||I.seatEpoch!==p.seatEpoch){let a=Z(k,p.seatEpoch,I);return{status:a.status,body:{...a.body,rotatedFrom:H,triggeredBy:i}}}if("too_large"===C.kind)return{status:413,body:{...C.body,rotatedFrom:H,triggeredBy:i}};let J=await ai({project:k,mandate:C.mandate,clientRequestId:l,replaceIncumbent:!0,expectedIncumbentSeatEpoch:p.seatEpoch,promptVersion:x,...void 0!==a.engine?{engine:a.engine}:p.engine?{engine:p.engine}:{},...void 0!==a.model?{model:a.model}:(void 0===a.engine||a.engine===p.engine)&&p.model?{model:p.model}:{},...void 0!==a.effort?{effort:a.effort}:{},...void 0!==a.fast?{fast:a.fast}:{},...void 0!==a.cwd?{cwd:a.cwd}:r?{cwd:r.cwd}:s?.cwd?{cwd:s.cwd}:{},...void 0!==a.accountId?{accountId:a.accountId}:{}},b,i);return{status:J.status,body:{...J.body,...n,rotatedFrom:H,triggeredBy:(d=J.body,e=i,!(f=d.seat)||"object"!=typeof f||Array.isArray(f)?e:f.triggeredBy??null),...C.handoff?{handoff:C.handoff}:{}}}}function an(a,b,c,d,e){let f=I("spawn",a.roleParams),g=function(a){let b=F(a.core),c=null===a.history?null:G(a.history),d={header:a.handoff.header.map(G),tasks:null===a.handoff.tasks?null:G(a.handoff.tasks),notes:null===a.handoff.notes?null:G(a.handoff.notes)},e=b=>D(a.deliver(b)),f=H(b,c,d,d.notes),g=e(f);if(g<=a.budgetBytes)return{kind:"fits",mandate:f,bytes:g,historyDropped:!1,notesTruncatedTo:null};if(null!==c){let c=H(b,null,d,d.notes),f=e(c);if(f<=a.budgetBytes)return{kind:"fits",mandate:c,bytes:f,historyDropped:!0,notesTruncatedTo:null}}let h=null!==c,i=H(b,null,d,null),j=e(i);if(j>a.budgetBytes)return{kind:"too_large",bytes:j,budgetBytes:a.budgetBytes};let k=d.notes;if(!k)return{kind:"fits",mandate:i,bytes:j,historyDropped:h,notesTruncatedTo:null};let l=[...k],m={mandate:i,bytes:j,kept:0},n=1,o=l.length-1;for(;n<=o;){let c=Math.floor((n+o)/2),f=H(b,null,d,`${l.slice(0,c).join("")}${C}`),g=e(f);g<=a.budgetBytes?(m={mandate:f,bytes:g,kept:c},n=c+1):o=c-1}return{kind:"fits",mandate:m.mandate,bytes:m.bytes,historyDropped:h,notesTruncatedTo:m.kept}}({core:b,history:c,handoff:a.handoff,budgetBytes:s.N0-f,deliver:z.OT});return"too_large"===g.kind?{kind:"too_large",body:J({ok:!1,bytes:g.bytes,overhead:f,bound:s.N0,excess:g.bytes-g.budgetBytes})}:{kind:"composed",mandate:g.mandate,handoff:{history:d,reason:e,historyDropped:g.historyDropped,notesTruncatedTo:g.notesTruncatedTo,mandateBytes:g.bytes}}}}};
123
+ `);if(f-b<=0)continue;let c=F(H(a.body).trim(),f-b).value;c&&(g.push({label:a.label,body:c}),f-=b+E(c))}return g.length?[e,...g.reverse().map(a=>`${a.label}
124
+ ${a.body}`)].join("\n\n"):null}(d.history,d.handoffs,c.reason),"fallback",c.reason)})()}({project:k,clientRequestId:l,base:w,handoff:v,predecessor:r?{path:r.path,engine:r.engine}:null,roleParams:a.roleParams},b),z=y instanceof Promise?await y:y,D={conversationId:p.conversationId,path:r?.path??p.path,seatEpoch:p.seatEpoch},I=(0,X.orchestratorSeatFor)(k).active;if(!I||I.conversationId!==p.conversationId||I.seatEpoch!==p.seatEpoch){let a=$(k,p.seatEpoch,I);return{status:a.status,body:{...a.body,rotatedFrom:D,triggeredBy:i}}}if("too_large"===z.kind)return{status:413,body:{...z.body,rotatedFrom:D,triggeredBy:i}};let J=await aj({project:k,mandate:z.mandate,clientRequestId:l,replaceIncumbent:!0,expectedIncumbentSeatEpoch:p.seatEpoch,promptVersion:x,...void 0!==a.engine?{engine:a.engine}:p.engine?{engine:p.engine}:{},...void 0!==a.model?{model:a.model}:(void 0===a.engine||a.engine===p.engine)&&p.model?{model:p.model}:{},...void 0!==a.effort?{effort:a.effort}:{},...void 0!==a.fast?{fast:a.fast}:{},...void 0!==a.cwd?{cwd:a.cwd}:r?{cwd:r.cwd}:s?.cwd?{cwd:s.cwd}:{},...void 0!==a.accountId?{accountId:a.accountId}:{}},b,i);return{status:J.status,body:{...J.body,...n,rotatedFrom:D,triggeredBy:(d=J.body,e=i,!(f=d.seat)||"object"!=typeof f||Array.isArray(f)?e:f.triggeredBy??null),...z.handoff?{handoff:z.handoff}:{}}}}function ao(a,b,c,d,e){let f=J("spawn",a.roleParams),g=function(a){let b=G(a.core),c=null===a.history?null:H(a.history),d={header:a.handoff.header.map(H),tasks:null===a.handoff.tasks?null:H(a.handoff.tasks),notes:null===a.handoff.notes?null:H(a.handoff.notes)},e=b=>E(a.deliver(b)),f=I(b,c,d,d.notes),g=e(f);if(g<=a.budgetBytes)return{kind:"fits",mandate:f,bytes:g,historyDropped:!1,notesTruncatedTo:null};if(null!==c){let c=I(b,null,d,d.notes),f=e(c);if(f<=a.budgetBytes)return{kind:"fits",mandate:c,bytes:f,historyDropped:!0,notesTruncatedTo:null}}let h=null!==c,i=I(b,null,d,null),j=e(i);if(j>a.budgetBytes)return{kind:"too_large",bytes:j,budgetBytes:a.budgetBytes};let k=d.notes;if(!k)return{kind:"fits",mandate:i,bytes:j,historyDropped:h,notesTruncatedTo:null};let l=[...k],m={mandate:i,bytes:j,kept:0},n=1,o=l.length-1;for(;n<=o;){let c=Math.floor((n+o)/2),f=I(b,null,d,`${l.slice(0,c).join("")}${D}`),g=e(f);g<=a.budgetBytes?(m={mandate:f,bytes:g,kept:c},n=c+1):o=c-1}return{kind:"fits",mandate:m.mandate,bytes:m.bytes,historyDropped:h,notesTruncatedTo:m.kept}}({core:b,history:c,handoff:a.handoff,budgetBytes:t.N0-f,deliver:A.OT});return"too_large"===g.kind?{kind:"too_large",body:K({ok:!1,bytes:g.bytes,overhead:f,bound:t.N0,excess:g.bytes-g.budgetBytes})}:{kind:"composed",mandate:g.mandate,handoff:{history:d,reason:e,historyDropped:g.historyDropped,notesTruncatedTo:g.notesTruncatedTo,mandateBytes:g.bytes}}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=7192,exports.ids=[3302,7192],exports.modules={15408:(a,b,c)=>{c.d(b,{$p:()=>C,Cp:()=>F,EK:()=>L,HS:()=>B,Kp:()=>N,T7:()=>E,Ud:()=>K,Ye:()=>G,co:()=>M,ho:()=>D,js:()=>I,pQ:()=>O,uC:()=>J,uV:()=>v,ut:()=>n,x2:()=>H});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(22962),k=c(91724),l=c(89940);let m=()=>(0,k.BQ)("orchestrator-seats.json");function n(a){return(0,l.G$)(a.trim())}function o(){return{schemaVersion:1,nextSeatEpoch:1,seats:{},pending:{},revocations:[],history:[],rollbacks:{}}}function p(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function q(a){if(!a||"object"!=typeof a||Array.isArray(a)||"operator"!==a.kind&&"agent"!==a.kind)return null;let b="string"==typeof a.conversationId&&a.conversationId?a.conversationId:null,c="number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&a.seatEpoch>=1?a.seatEpoch:null;return{kind:a.kind,conversationId:b,seatEpoch:c}}function r(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.project||!a.project||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||null!==a.conversationId&&"string"!=typeof a.conversationId||null!==a.path&&"string"!=typeof a.path||"string"!=typeof a.mandate||"pending"!==a.state&&"active"!==a.state)return null;let b=a.intent;if(!b||"string"!=typeof b.clientRequestId||!b.clientRequestId||"spawn"!==b.mode&&"existing"!==b.mode||"string"!=typeof a.designatedAt||null!==a.activatedAt&&"string"!=typeof a.activatedAt)return null;let c="string"==typeof a.engine&&a.engine.trim()?a.engine:null,d="string"==typeof a.model&&a.model.trim()?a.model:null,e="boolean"==typeof a.runtimeIdentityFrozen?a.runtimeIdentityFrozen:!!(c||d);return{project:a.project,seatEpoch:a.seatEpoch,conversationId:a.conversationId??null,path:a.path??null,engine:c,model:d,runtimeIdentityFrozen:e,mandate:a.mandate,promptVersion:"number"==typeof a.promptVersion&&Number.isInteger(a.promptVersion)?a.promptVersion:null,predecessorConversationId:"string"==typeof a.predecessorConversationId?a.predecessorConversationId:null,triggeredBy:q(a.triggeredBy),state:a.state,intent:{clientRequestId:b.clientRequestId,mode:b.mode,launchId:"string"==typeof b.launchId?b.launchId:null,error:"string"==typeof b.error?b.error:null},designatedAt:a.designatedAt,activatedAt:a.activatedAt??null}}function s(a,b){return a.history.push(b),a.history.length>50&&a.history.splice(0,a.history.length-50),b}function t(a,b){let c=a[b.project];(!c||b.seatEpoch>c.seatEpoch)&&(a[b.project]=b)}function u(){let a;try{a=g().readFileSync(m(),"utf8")}catch(a){return a?.code==="ENOENT"?o():null}try{let b=JSON.parse(a);if(1!==b.schemaVersion)return null;let c=o();for(let[a,d]of(c.nextSeatEpoch="number"==typeof b.nextSeatEpoch&&Number.isInteger(b.nextSeatEpoch)&&b.nextSeatEpoch>=1?b.nextSeatEpoch:1,Object.entries(b.seats??{}))){let b=r(d);b&&b.project===a&&"active"===b.state&&b.conversationId&&t(c.seats,{...b,project:n(a)})}for(let[a,d]of Object.entries(b.pending??{})){let b=r(d);b&&b.project===a&&"pending"===b.state&&t(c.pending,{...b,project:n(a)})}for(let[a,d]of Object.entries(b.rollbacks??{})){let b=r(d);b&&b.conversationId&&(c.rollbacks[n(a)]=b)}for(let a of Array.isArray(b.revocations)?b.revocations:[])"string"==typeof a.project&&"string"==typeof a.conversationId&&"number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&"string"==typeof a.revokedAt&&c.revocations.push({project:n(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:"string"==typeof a.successorConversationId?a.successorConversationId:null,triggeredBy:q(a.triggeredBy)});for(let a of Array.isArray(b.history)?b.history:[]){let b=r(a.seat);b&&("terminal_error"===a.reason||"superseded_epoch"===a.reason)&&"string"==typeof a.terminalizedAt&&c.history.push({seat:{...b,project:n(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}let d=Math.max(0,...Object.values(c.seats).map(a=>a.seatEpoch),...Object.values(c.pending).map(a=>a.seatEpoch),...Object.values(c.rollbacks).map(a=>a.seatEpoch),...c.revocations.map(a=>a.seatEpoch),...c.history.map(a=>a.seat.seatEpoch));return c.nextSeatEpoch<=d&&(c.nextSeatEpoch=d+1),c}catch{return null}}function v(){return u()??o()}function w(a){return void 0===a?Error("orchestrator seat evidence is malformed"):Error("orchestrator seat evidence is malformed",{cause:a})}function x(a,b){if(void 0===a)return{};if(!a||"object"!=typeof a||Array.isArray(a))throw w(Error(`${b} is invalid`));return a}function y(a,b){if(void 0===a)return[];if(!Array.isArray(a))throw w(Error(`${b} is invalid`));return a}function z(){let a,b;try{a=g().readFileSync(m(),"utf8")}catch(a){if(a&&"object"==typeof a&&"ENOENT"===a.code)return{raw:null,normalized:o()};throw a}try{b=JSON.parse(a)}catch(a){throw w(a)}if(!b||"object"!=typeof b||Array.isArray(b))throw w();let c=b;if(1!==c.schemaVersion||"number"!=typeof c.nextSeatEpoch||!Number.isInteger(c.nextSeatEpoch)||c.nextSeatEpoch<1)throw w();let d=o();for(let[a,b]of(d.nextSeatEpoch=c.nextSeatEpoch,Object.entries(x(c.seats,"seats")))){let c=r(b);if(!c||c.project!==a||"active"!==c.state||!c.conversationId)throw w();let e=n(a);if(d.seats[e])throw w();d.seats[e]={...c,project:e}}for(let[a,b]of Object.entries(x(c.pending,"pending"))){let c=r(b);if(!c||c.project!==a||"pending"!==c.state)throw w();let e=n(a);if(d.pending[e])throw w();d.pending[e]={...c,project:e}}for(let a of y(c.revocations,"revocations")){if(!a||"object"!=typeof a||"string"!=typeof a.project||!a.project||"string"!=typeof a.conversationId||!a.conversationId||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||"string"!=typeof a.revokedAt||void 0!==a.successorConversationId&&null!==a.successorConversationId&&"string"!=typeof a.successorConversationId)throw w();d.revocations.push({project:n(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:a.successorConversationId??null,triggeredBy:q(a.triggeredBy)})}for(let a of y(c.history,"history")){let b=r(a?.seat);if(!a||!b||"terminal_error"!==a.reason&&"superseded_epoch"!==a.reason||"string"!=typeof a.terminalizedAt)throw w();d.history.push({seat:{...b,project:n(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}return{raw:c,normalized:d}}function A(a){p(m(),a)}function B(a){let b=v(),c=n(a);return{active:b.seats[c]??null,pending:b.pending[c]??null,history:b.history.filter(a=>a.seat.project===c)}}function C(a){return(0,j.oV)(()=>{let b,c=v(),d=n(a.project),e=c.seats[d];if(e&&e.intent.clientRequestId===a.clientRequestId)return{kind:"completed",seat:e};let f=c.pending[d];if(f&&null===f.intent.error&&f.intent.clientRequestId===a.clientRequestId)return{kind:"replay",seat:f};if(f){if(!(null!==f.intent.error||void 0!==e&&f.seatEpoch<e.seatEpoch))return{kind:"in_progress",seat:f};b=s(c,{seat:f,reason:null!==f.intent.error?"terminal_error":"superseded_epoch",terminalizedAt:a.now??new Date().toISOString()}),delete c.pending[d]}let g={project:d,seatEpoch:c.nextSeatEpoch,conversationId:a.conversationId??null,path:null,engine:a.engine?.trim()||null,model:a.model?.trim()||null,runtimeIdentityFrozen:!!(a.engine?.trim()&&a.model?.trim()),mandate:a.mandate,promptVersion:a.promptVersion??null,predecessorConversationId:null,triggeredBy:a.triggeredBy??null,state:"pending",intent:{clientRequestId:a.clientRequestId,mode:a.mode,launchId:null,error:null},designatedAt:a.now??new Date().toISOString(),activatedAt:null};return c.nextSeatEpoch+=1,c.pending[d]=g,A(c),{kind:"begun",seat:g,...b?{terminalized:b}:{}}})}function D(a){return(0,j.oV)(()=>{let b=v(),c=n(a.project),d=b.seats[c];if(d&&d.intent.clientRequestId===a.clientRequestId)return{kind:"replay",seat:d};let e=b.pending[c];if(!e||e.intent.clientRequestId!==a.clientRequestId)return{kind:"missing"};let f=a.now??new Date().toISOString(),g=null;d&&d.conversationId&&d.conversationId!==a.conversationId&&(g={project:c,conversationId:d.conversationId,seatEpoch:d.seatEpoch,revokedAt:f,successorConversationId:a.conversationId,triggeredBy:e.triggeredBy??null},b.revocations.push(g)),"spawn"===e.intent.mode&&null===a.path&&d?.conversationId&&d.conversationId!==a.conversationId?b.rollbacks[c]=d:delete b.rollbacks[c];let h={...e,conversationId:a.conversationId,path:a.path,engine:e.engine??(a.engine?.trim()||null),model:e.model??(a.model?.trim()||null),runtimeIdentityFrozen:!0===e.runtimeIdentityFrozen||!!(a.engine||a.model),predecessorConversationId:g?.conversationId??e.predecessorConversationId,state:"active",intent:{...e.intent,launchId:a.launchId??e.intent.launchId,error:null},activatedAt:f};return delete b.pending[c],b.seats[c]=h,A(b),{kind:"activated",seat:h,revoked:g}})}function E(a){return(0,j.oV)(()=>{let b=v(),c=n(a.project),d=b.seats[c];if(!d||d.conversationId!==a.conversationId)return null;let e=d.engine??(a.engine?.trim()||null),f=d.model??(a.model?.trim()||null);if(e===d.engine&&f===d.model)return d;let g={...d,engine:e,model:f};return b.seats[c]=g,A(b),g})}function F(a,b,c,d){return(0,j.oV)(()=>{let e=v(),f=n(a),g=e.pending[f];if(!g||g.intent.clientRequestId!==b)return null;g.intent.error=c.slice(0,500);let h=s(e,{seat:g,reason:"terminal_error",terminalizedAt:d??new Date().toISOString()});return delete e.pending[f],A(e),h})}function G(a){return(0,j.oV)(()=>{let b=v(),c=n(a.project),d=b.seats[c];if(!d||d.intent.clientRequestId!==a.clientRequestId||"active"!==d.state||"spawn"!==d.intent.mode||null!==d.path||!d.conversationId)return null;let e=a.now??new Date().toISOString(),f=b.rollbacks[c]??null,g=f?null:[...b.revocations].reverse().find(a=>a.project===c&&a.successorConversationId===d.conversationId)?.conversationId??null,h=f??(g?a.restorableSeat?.({conversationId:g,stillborn:d})??null:null),i=!!(h?.conversationId&&a.resolvable&&!a.resolvable(h.conversationId)),j=i?null:h,k=null;j?.conversationId?(k={...j,project:c,seatEpoch:b.nextSeatEpoch,state:"active",activatedAt:e},b.nextSeatEpoch+=1,b.seats[c]=k):delete b.seats[c],b.revocations.push({project:c,conversationId:d.conversationId,seatEpoch:d.seatEpoch,revokedAt:e,successorConversationId:k?.conversationId??null,triggeredBy:d.triggeredBy??null}),delete b.rollbacks[c];let l=i?`${a.error}; the predecessor ${h.conversationId} it would have been rolled back to is no longer resolvable either, so the project is left undesignated`:a.error,m=s(b,{seat:{...d,intent:{...d.intent,error:l.slice(0,500)}},reason:"terminal_error",terminalizedAt:e});return A(b),{terminalized:m,restored:k}})}function H(a){return(0,j.oV)(()=>{let b=v(),c=n(a.project),d=b.seats[c];if(!d||d.intent.clientRequestId!==a.clientRequestId||d.conversationId!==a.conversationId)return null;if(d.path===a.path&&!b.rollbacks[c])return d;let e={...d,path:a.path};return b.seats[c]=e,delete b.rollbacks[c],A(b),e})}function I(){return Object.values(v().seats)}function J(){let a=u();return null===a?null:Object.values(a.seats)}function K(a){let b=u();if(null===b)return null;let c=n(a);return{active:b.seats[c]??null,pending:b.pending[c]??null}}function L(){return Object.values(z().normalized.seats)}function M(a){0!==a.length&&(0,j.oV)(()=>{let b=z();if(!b.raw||0===Object.keys(b.normalized.seats).length)return;let c=new Map(a.map(a=>[a.legacyPath,a.sharedPath])),d=x(b.raw.seats,"seats"),e=!1;for(let a of Object.values(d)){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.path)continue;let b=c.get(a.path);b&&(a.path=b,e=!0)}e&&p(m(),b.raw)})}function N(){return v().revocations}function O(a=a=>a){let b=u();if(null===b)return null;let c=new Map,d=b=>{if(!b.conversationId)return;let d=a(b.conversationId);c.set(d,Math.max(c.get(d)??0,b.seatEpoch))};for(let a of Object.values(b.seats))d(a);for(let a of Object.values(b.pending))null===a.intent.error&&d(a);let e=new Set;for(let d of b.revocations){let b=a(d.conversationId);d.seatEpoch>=(c.get(b)??0)&&e.add(b)}return e}},33302:(a,b,c)=>{c.d(b,{NZ:()=>r,OE:()=>m,Tj:()=>u,Yd:()=>t,kg:()=>s,mn:()=>n});var d=c(77598),e=c.n(d),f=c(10781),g=c(89937),h=c(4012);let i=/^[A-Za-z0-9_-]{43}$/,j="x-llv-internal-service",k=/^[a-f0-9]{64}$/,l=["monitor","mcp","orchestrator"];function m(a){let b,c=a.headers.get(h.VIEWER_SPAWN_CAPABILITY_HEADER)?.trim()??"";return c&&i.test(c)?(b=e().createHash("sha256").update(c).digest("hex"),(0,f.agentRegistry)().conversationIdForSpawnCapabilityDigest(b)):null}function n(a){return null===m(a)}let o={ok:!1,status:403,error:"this is an operator-only action; an agent may not perform it, whatever role it holds"},p={ok:!1,status:403,error:"background Viewer activity is outside direct operator activity"};function q(a){return e().createHmac("sha256",(0,g.ensureOperatorSpawnCapability)()).update(`llv-internal-service-v1\0${a}`).digest("hex")}function r(a){return{[j]:`${a}.${q(a)}`}}function s(a){return"valid"===function(a){let b=a.headers.get(j)?.trim()??"";if(!b)return"absent";let c=b.indexOf("."),d=b.slice(0,c),f=b.slice(c+1);if(!l.includes(d)||!k.test(f))return"invalid";try{let a=q(d);return e().timingSafeEqual(Buffer.from(f),Buffer.from(a))?"valid":"invalid"}catch{return"invalid"}}(a)?p:u(a)}function t(a){let b=m(a);return b?{kind:"agent",conversationId:b}:{kind:"operator",conversationId:null}}function u(a){return m(a)?o:{ok:!0}}},63184:(a,b,c)=>{function d(a){for(let b=a.generations.length-1;b>=0;b-=1){let c=a.generations[b]?.launchProfile?.role;if(c)return c}return null}function e(a){let b=(a.configuredRootId?a.conversations.find(b=>b.id===a.configuredRootId):void 0)??[...a.conversations].filter(a=>"root"===d(a)).sort((a,b)=>a.updatedAt.localeCompare(b.updatedAt)).at(-1);return b?{conversationId:b.id,path:b.generations.at(-1)?.path??null}:null}c.d(b,{O7:()=>d,jL:()=>e}),c(33017)}};
1
+ "use strict";exports.id=7192,exports.ids=[3302,5408,7192],exports.modules={15408:(a,b,c)=>{c.r(b),c.d(b,{ORCHESTRATOR_SEATS_SCHEMA_VERSION:()=>m,ORCHESTRATOR_SEAT_HISTORY_CAP:()=>n,abandonStillbornOrchestratorSeat:()=>I,activeOrchestratorSeats:()=>K,activeOrchestratorSeatsForMigration:()=>N,activeOrchestratorSeatsOrUnknown:()=>L,beginOrchestratorSeatIntent:()=>E,canonicalOrchestratorProject:()=>p,completeOrchestratorSeatIntent:()=>F,confirmOrchestratorSeatMaterialization:()=>J,failOrchestratorSeatIntent:()=>H,orchestratorRevocations:()=>P,orchestratorSeatFor:()=>D,orchestratorSeatForOrUnknown:()=>M,readOrchestratorSeatFile:()=>x,rekeyOrchestratorSeatPaths:()=>O,repairOrchestratorSeatRuntimeIdentity:()=>G,revokedOrchestratorSeatConversationsOrUnknown:()=>Q});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(22962),k=c(91724),l=c(89940);let m=1,n=50,o=()=>(0,k.BQ)("orchestrator-seats.json");function p(a){return(0,l.G$)(a.trim())}function q(){return{schemaVersion:m,nextSeatEpoch:1,seats:{},pending:{},revocations:[],history:[],rollbacks:{}}}function r(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function s(a){if(!a||"object"!=typeof a||Array.isArray(a)||"operator"!==a.kind&&"agent"!==a.kind)return null;let b="string"==typeof a.conversationId&&a.conversationId?a.conversationId:null,c="number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&a.seatEpoch>=1?a.seatEpoch:null;return{kind:a.kind,conversationId:b,seatEpoch:c}}function t(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.project||!a.project||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||null!==a.conversationId&&"string"!=typeof a.conversationId||null!==a.path&&"string"!=typeof a.path||"string"!=typeof a.mandate||"pending"!==a.state&&"active"!==a.state)return null;let b=a.intent;if(!b||"string"!=typeof b.clientRequestId||!b.clientRequestId||"spawn"!==b.mode&&"existing"!==b.mode||"string"!=typeof a.designatedAt||null!==a.activatedAt&&"string"!=typeof a.activatedAt)return null;let c="string"==typeof a.engine&&a.engine.trim()?a.engine:null,d="string"==typeof a.model&&a.model.trim()?a.model:null,e="boolean"==typeof a.runtimeIdentityFrozen?a.runtimeIdentityFrozen:!!(c||d);return{project:a.project,seatEpoch:a.seatEpoch,conversationId:a.conversationId??null,path:a.path??null,engine:c,model:d,runtimeIdentityFrozen:e,mandate:a.mandate,promptVersion:"number"==typeof a.promptVersion&&Number.isInteger(a.promptVersion)?a.promptVersion:null,predecessorConversationId:"string"==typeof a.predecessorConversationId?a.predecessorConversationId:null,triggeredBy:s(a.triggeredBy),state:a.state,intent:{clientRequestId:b.clientRequestId,mode:b.mode,launchId:"string"==typeof b.launchId?b.launchId:null,error:"string"==typeof b.error?b.error:null},designatedAt:a.designatedAt,activatedAt:a.activatedAt??null}}function u(a,b){return a.history.push(b),a.history.length>n&&a.history.splice(0,a.history.length-n),b}function v(a,b){let c=a[b.project];(!c||b.seatEpoch>c.seatEpoch)&&(a[b.project]=b)}function w(){let a;try{a=g().readFileSync(o(),"utf8")}catch(a){return a?.code==="ENOENT"?q():null}try{let b=JSON.parse(a);if(b.schemaVersion!==m)return null;let c=q();for(let[a,d]of(c.nextSeatEpoch="number"==typeof b.nextSeatEpoch&&Number.isInteger(b.nextSeatEpoch)&&b.nextSeatEpoch>=1?b.nextSeatEpoch:1,Object.entries(b.seats??{}))){let b=t(d);b&&b.project===a&&"active"===b.state&&b.conversationId&&v(c.seats,{...b,project:p(a)})}for(let[a,d]of Object.entries(b.pending??{})){let b=t(d);b&&b.project===a&&"pending"===b.state&&v(c.pending,{...b,project:p(a)})}for(let[a,d]of Object.entries(b.rollbacks??{})){let b=t(d);b&&b.conversationId&&(c.rollbacks[p(a)]=b)}for(let a of Array.isArray(b.revocations)?b.revocations:[])"string"==typeof a.project&&"string"==typeof a.conversationId&&"number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&"string"==typeof a.revokedAt&&c.revocations.push({project:p(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:"string"==typeof a.successorConversationId?a.successorConversationId:null,triggeredBy:s(a.triggeredBy)});for(let a of Array.isArray(b.history)?b.history:[]){let b=t(a.seat);b&&("terminal_error"===a.reason||"superseded_epoch"===a.reason)&&"string"==typeof a.terminalizedAt&&c.history.push({seat:{...b,project:p(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}let d=Math.max(0,...Object.values(c.seats).map(a=>a.seatEpoch),...Object.values(c.pending).map(a=>a.seatEpoch),...Object.values(c.rollbacks).map(a=>a.seatEpoch),...c.revocations.map(a=>a.seatEpoch),...c.history.map(a=>a.seat.seatEpoch));return c.nextSeatEpoch<=d&&(c.nextSeatEpoch=d+1),c}catch{return null}}function x(){return w()??q()}function y(a){return void 0===a?Error("orchestrator seat evidence is malformed"):Error("orchestrator seat evidence is malformed",{cause:a})}function z(a,b){if(void 0===a)return{};if(!a||"object"!=typeof a||Array.isArray(a))throw y(Error(`${b} is invalid`));return a}function A(a,b){if(void 0===a)return[];if(!Array.isArray(a))throw y(Error(`${b} is invalid`));return a}function B(){let a,b;try{a=g().readFileSync(o(),"utf8")}catch(a){if(a&&"object"==typeof a&&"ENOENT"===a.code)return{raw:null,normalized:q()};throw a}try{b=JSON.parse(a)}catch(a){throw y(a)}if(!b||"object"!=typeof b||Array.isArray(b))throw y();let c=b;if(c.schemaVersion!==m||"number"!=typeof c.nextSeatEpoch||!Number.isInteger(c.nextSeatEpoch)||c.nextSeatEpoch<1)throw y();let d=q();for(let[a,b]of(d.nextSeatEpoch=c.nextSeatEpoch,Object.entries(z(c.seats,"seats")))){let c=t(b);if(!c||c.project!==a||"active"!==c.state||!c.conversationId)throw y();let e=p(a);if(d.seats[e])throw y();d.seats[e]={...c,project:e}}for(let[a,b]of Object.entries(z(c.pending,"pending"))){let c=t(b);if(!c||c.project!==a||"pending"!==c.state)throw y();let e=p(a);if(d.pending[e])throw y();d.pending[e]={...c,project:e}}for(let a of A(c.revocations,"revocations")){if(!a||"object"!=typeof a||"string"!=typeof a.project||!a.project||"string"!=typeof a.conversationId||!a.conversationId||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||"string"!=typeof a.revokedAt||void 0!==a.successorConversationId&&null!==a.successorConversationId&&"string"!=typeof a.successorConversationId)throw y();d.revocations.push({project:p(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:a.successorConversationId??null,triggeredBy:s(a.triggeredBy)})}for(let a of A(c.history,"history")){let b=t(a?.seat);if(!a||!b||"terminal_error"!==a.reason&&"superseded_epoch"!==a.reason||"string"!=typeof a.terminalizedAt)throw y();d.history.push({seat:{...b,project:p(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}return{raw:c,normalized:d}}function C(a){r(o(),a)}function D(a){let b=x(),c=p(a);return{active:b.seats[c]??null,pending:b.pending[c]??null,history:b.history.filter(a=>a.seat.project===c)}}function E(a){return(0,j.oV)(()=>{let b,c=x(),d=p(a.project),e=c.seats[d];if(e&&e.intent.clientRequestId===a.clientRequestId)return{kind:"completed",seat:e};let f=c.pending[d];if(f&&null===f.intent.error&&f.intent.clientRequestId===a.clientRequestId)return{kind:"replay",seat:f};if(f){if(!(null!==f.intent.error||void 0!==e&&f.seatEpoch<e.seatEpoch))return{kind:"in_progress",seat:f};b=u(c,{seat:f,reason:null!==f.intent.error?"terminal_error":"superseded_epoch",terminalizedAt:a.now??new Date().toISOString()}),delete c.pending[d]}let g={project:d,seatEpoch:c.nextSeatEpoch,conversationId:a.conversationId??null,path:null,engine:a.engine?.trim()||null,model:a.model?.trim()||null,runtimeIdentityFrozen:!!(a.engine?.trim()&&a.model?.trim()),mandate:a.mandate,promptVersion:a.promptVersion??null,predecessorConversationId:null,triggeredBy:a.triggeredBy??null,state:"pending",intent:{clientRequestId:a.clientRequestId,mode:a.mode,launchId:null,error:null},designatedAt:a.now??new Date().toISOString(),activatedAt:null};return c.nextSeatEpoch+=1,c.pending[d]=g,C(c),{kind:"begun",seat:g,...b?{terminalized:b}:{}}})}function F(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(d&&d.intent.clientRequestId===a.clientRequestId)return{kind:"replay",seat:d};let e=b.pending[c];if(!e||e.intent.clientRequestId!==a.clientRequestId)return{kind:"missing"};let f=a.now??new Date().toISOString(),g=null;d&&d.conversationId&&d.conversationId!==a.conversationId&&(g={project:c,conversationId:d.conversationId,seatEpoch:d.seatEpoch,revokedAt:f,successorConversationId:a.conversationId,triggeredBy:e.triggeredBy??null},b.revocations.push(g)),"spawn"===e.intent.mode&&null===a.path&&d?.conversationId&&d.conversationId!==a.conversationId?b.rollbacks[c]=d:delete b.rollbacks[c];let h={...e,conversationId:a.conversationId,path:a.path,engine:e.engine??(a.engine?.trim()||null),model:e.model??(a.model?.trim()||null),runtimeIdentityFrozen:!0===e.runtimeIdentityFrozen||!!(a.engine||a.model),predecessorConversationId:g?.conversationId??e.predecessorConversationId,state:"active",intent:{...e.intent,launchId:a.launchId??e.intent.launchId,error:null},activatedAt:f};return delete b.pending[c],b.seats[c]=h,C(b),{kind:"activated",seat:h,revoked:g}})}function G(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(!d||d.conversationId!==a.conversationId)return null;let e=d.engine??(a.engine?.trim()||null),f=d.model??(a.model?.trim()||null);if(e===d.engine&&f===d.model)return d;let g={...d,engine:e,model:f};return b.seats[c]=g,C(b),g})}function H(a,b,c,d){return(0,j.oV)(()=>{let e=x(),f=p(a),g=e.pending[f];if(!g||g.intent.clientRequestId!==b)return null;g.intent.error=c.slice(0,500);let h=u(e,{seat:g,reason:"terminal_error",terminalizedAt:d??new Date().toISOString()});return delete e.pending[f],C(e),h})}function I(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(!d||d.intent.clientRequestId!==a.clientRequestId||"active"!==d.state||"spawn"!==d.intent.mode||null!==d.path||!d.conversationId)return null;let e=a.now??new Date().toISOString(),f=b.rollbacks[c]??null,g=f?null:[...b.revocations].reverse().find(a=>a.project===c&&a.successorConversationId===d.conversationId)?.conversationId??null,h=f??(g?a.restorableSeat?.({conversationId:g,stillborn:d})??null:null),i=!!(h?.conversationId&&a.resolvable&&!a.resolvable(h.conversationId)),j=i?null:h,k=null;j?.conversationId?(k={...j,project:c,seatEpoch:b.nextSeatEpoch,state:"active",activatedAt:e},b.nextSeatEpoch+=1,b.seats[c]=k):delete b.seats[c],b.revocations.push({project:c,conversationId:d.conversationId,seatEpoch:d.seatEpoch,revokedAt:e,successorConversationId:k?.conversationId??null,triggeredBy:d.triggeredBy??null}),delete b.rollbacks[c];let l=i?`${a.error}; the predecessor ${h.conversationId} it would have been rolled back to is no longer resolvable either, so the project is left undesignated`:a.error,m=u(b,{seat:{...d,intent:{...d.intent,error:l.slice(0,500)}},reason:"terminal_error",terminalizedAt:e});return C(b),{terminalized:m,restored:k}})}function J(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(!d||d.intent.clientRequestId!==a.clientRequestId||d.conversationId!==a.conversationId)return null;if(d.path===a.path&&!b.rollbacks[c])return d;let e={...d,path:a.path};return b.seats[c]=e,delete b.rollbacks[c],C(b),e})}function K(){return Object.values(x().seats)}function L(){let a=w();return null===a?null:Object.values(a.seats)}function M(a){let b=w();if(null===b)return null;let c=p(a);return{active:b.seats[c]??null,pending:b.pending[c]??null}}function N(){return Object.values(B().normalized.seats)}function O(a){0!==a.length&&(0,j.oV)(()=>{let b=B();if(!b.raw||0===Object.keys(b.normalized.seats).length)return;let c=new Map(a.map(a=>[a.legacyPath,a.sharedPath])),d=z(b.raw.seats,"seats"),e=!1;for(let a of Object.values(d)){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.path)continue;let b=c.get(a.path);b&&(a.path=b,e=!0)}e&&r(o(),b.raw)})}function P(){return x().revocations}function Q(a=a=>a){let b=w();if(null===b)return null;let c=new Map,d=b=>{if(!b.conversationId)return;let d=a(b.conversationId);c.set(d,Math.max(c.get(d)??0,b.seatEpoch))};for(let a of Object.values(b.seats))d(a);for(let a of Object.values(b.pending))null===a.intent.error&&d(a);let e=new Set;for(let d of b.revocations){let b=a(d.conversationId);d.seatEpoch>=(c.get(b)??0)&&e.add(b)}return e}},33302:(a,b,c)=>{c.d(b,{NZ:()=>r,OE:()=>m,Tj:()=>u,Yd:()=>t,kg:()=>s,mn:()=>n});var d=c(77598),e=c.n(d),f=c(10781),g=c(89937),h=c(4012);let i=/^[A-Za-z0-9_-]{43}$/,j="x-llv-internal-service",k=/^[a-f0-9]{64}$/,l=["monitor","mcp","orchestrator"];function m(a){let b,c=a.headers.get(h.VIEWER_SPAWN_CAPABILITY_HEADER)?.trim()??"";return c&&i.test(c)?(b=e().createHash("sha256").update(c).digest("hex"),(0,f.agentRegistry)().conversationIdForSpawnCapabilityDigest(b)):null}function n(a){return null===m(a)}let o={ok:!1,status:403,error:"this is an operator-only action; an agent may not perform it, whatever role it holds"},p={ok:!1,status:403,error:"background Viewer activity is outside direct operator activity"};function q(a){return e().createHmac("sha256",(0,g.ensureOperatorSpawnCapability)()).update(`llv-internal-service-v1\0${a}`).digest("hex")}function r(a){return{[j]:`${a}.${q(a)}`}}function s(a){return"valid"===function(a){let b=a.headers.get(j)?.trim()??"";if(!b)return"absent";let c=b.indexOf("."),d=b.slice(0,c),f=b.slice(c+1);if(!l.includes(d)||!k.test(f))return"invalid";try{let a=q(d);return e().timingSafeEqual(Buffer.from(f),Buffer.from(a))?"valid":"invalid"}catch{return"invalid"}}(a)?p:u(a)}function t(a){let b=m(a);return b?{kind:"agent",conversationId:b}:{kind:"operator",conversationId:null}}function u(a){return m(a)?o:{ok:!0}}},63184:(a,b,c)=>{function d(a){for(let b=a.generations.length-1;b>=0;b-=1){let c=a.generations[b]?.launchProfile?.role;if(c)return c}return null}function e(a){let b=(a.configuredRootId?a.conversations.find(b=>b.id===a.configuredRootId):void 0)??[...a.conversations].filter(a=>"root"===d(a)).sort((a,b)=>a.updatedAt.localeCompare(b.updatedAt)).at(-1);return b?{conversationId:b.id,path:b.generations.at(-1)?.path??null}:null}c.d(b,{O7:()=>d,jL:()=>e}),c(33017)}};