agent-log-viewer 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/dist/mcp-server.mjs +2225 -1385
  2. package/dist/runtime-host.mjs +1690 -972
  3. package/dist/standalone/.next/BUILD_ID +1 -1
  4. package/dist/standalone/.next/app-path-routes-manifest.json +26 -24
  5. package/dist/standalone/.next/build-manifest.json +2 -2
  6. package/dist/standalone/.next/prerender-manifest.json +4 -4
  7. package/dist/standalone/.next/required-server-files.json +1 -0
  8. package/dist/standalone/.next/routes-manifest.json +12 -0
  9. package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -1
  10. package/dist/standalone/.next/server/app/_global-error/page.js +2 -2
  11. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  14. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  15. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  16. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  17. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/dist/standalone/.next/server/app/_not-found/page.js +1 -1
  19. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  22. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  23. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  24. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  25. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/dist/standalone/.next/server/app/api/access/route.js +1 -1
  27. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  28. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  29. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  30. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js +1 -1
  31. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js.nft.json +1 -1
  32. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +1 -1
  33. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
  35. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  36. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js +1 -1
  37. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js.nft.json +1 -1
  38. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +1 -1
  39. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  40. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +1 -1
  41. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  42. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
  43. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  44. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  45. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  46. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +1 -1
  47. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  48. package/dist/standalone/.next/server/app/api/accounts/cli/route.js +1 -0
  49. package/dist/standalone/.next/server/app/api/accounts/cli/route.js.nft.json +1 -0
  50. package/dist/standalone/.next/server/app/api/accounts/cli/route_client-reference-manifest.js +1 -0
  51. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
  52. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  53. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js +1 -1
  54. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js.nft.json +1 -1
  55. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
  56. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  57. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js +2 -2
  58. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js.nft.json +1 -1
  59. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  60. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  61. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +1 -1
  62. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  63. package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
  64. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  65. package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
  66. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  67. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  68. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  69. package/dist/standalone/.next/server/app/api/answer/route.js +1 -1
  70. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  71. package/dist/standalone/.next/server/app/api/artifact/route.js +1 -1
  72. package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
  73. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  74. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  75. package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
  76. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  77. package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
  78. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  79. package/dist/standalone/.next/server/app/api/board/route.js +1 -1
  80. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  81. package/dist/standalone/.next/server/app/api/bridge/route.js +1 -1
  82. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  83. package/dist/standalone/.next/server/app/api/conversation-host/route.js +1 -1
  84. package/dist/standalone/.next/server/app/api/conversation-host/route.js.nft.json +1 -1
  85. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js +1 -1
  86. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js.nft.json +1 -1
  87. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  88. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  89. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  90. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  91. package/dist/standalone/.next/server/app/api/files/route.js +6 -3
  92. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  93. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  94. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  95. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  96. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  97. package/dist/standalone/.next/server/app/api/image/route.js +1 -1
  98. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  99. package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
  100. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  101. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  102. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  103. package/dist/standalone/.next/server/app/api/limits/history/route.js +1 -1
  104. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  105. package/dist/standalone/.next/server/app/api/limits/route.js +1 -1
  106. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  107. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  108. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  109. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  110. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  111. package/dist/standalone/.next/server/app/api/log/provenance/route.js +14 -12
  112. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
  113. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  114. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  115. package/dist/standalone/.next/server/app/api/log/suggestions/route.js +2 -2
  116. package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -1
  117. package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
  118. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  119. package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
  120. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  121. package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -1
  122. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  123. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js +6 -5
  124. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js.nft.json +1 -1
  125. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js +2 -2
  126. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js.nft.json +1 -1
  127. package/dist/standalone/.next/server/app/api/onboarding/route.js +1 -0
  128. package/dist/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -0
  129. package/dist/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -0
  130. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  131. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  132. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  133. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  134. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +1 -1
  135. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
  136. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  137. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  138. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
  139. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  140. package/dist/standalone/.next/server/app/api/pipelines/route.js +1 -1
  141. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  142. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +1 -2
  143. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  144. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  145. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  146. package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
  147. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
  148. package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
  149. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
  150. package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -1
  151. package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -1
  152. package/dist/standalone/.next/server/app/api/push/route.js +2 -2
  153. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  154. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  155. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  156. package/dist/standalone/.next/server/app/api/roles/route.js +3 -3
  157. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  158. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +1 -1
  159. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  160. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
  161. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  162. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
  163. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  164. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
  165. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  166. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -1
  167. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -1
  168. package/dist/standalone/.next/server/app/api/runtime/inject/route.js +1 -1
  169. package/dist/standalone/.next/server/app/api/runtime/inject/route.js.nft.json +1 -1
  170. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +1 -1
  171. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  172. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +1 -1
  173. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  174. package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
  175. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  176. package/dist/standalone/.next/server/app/api/runtime/queue/route.js +1 -1
  177. package/dist/standalone/.next/server/app/api/runtime/queue/route.js.nft.json +1 -1
  178. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +1 -1
  179. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  180. package/dist/standalone/.next/server/app/api/runtime/send/route.js +1 -1
  181. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  182. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
  183. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  184. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +1 -1
  185. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  186. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +1 -1
  187. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  188. package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
  189. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  190. package/dist/standalone/.next/server/app/api/search/transcripts/route.js +1 -1
  191. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
  192. package/dist/standalone/.next/server/app/api/session/route.js +1 -1
  193. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  194. package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
  195. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  196. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  197. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  198. package/dist/standalone/.next/server/app/api/spawn/policy/route.js +2 -2
  199. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  200. package/dist/standalone/.next/server/app/api/spawn/route.js +1 -1
  201. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  202. package/dist/standalone/.next/server/app/api/spawn/validate/route.js +1 -1
  203. package/dist/standalone/.next/server/app/api/spawn/validate/route.js.nft.json +1 -1
  204. package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
  205. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  206. package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
  207. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  208. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  209. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  210. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  211. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  212. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +1 -1
  213. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  214. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +1 -1
  215. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  216. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  217. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  218. package/dist/standalone/.next/server/app/api/tasks/route.js +1 -1
  219. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  220. package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
  221. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
  222. package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
  223. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
  224. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  225. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  226. package/dist/standalone/.next/server/app/api/tmux/route.js +1 -1
  227. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  228. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  229. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  230. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
  231. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  232. package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
  233. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  234. package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
  235. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  236. package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
  237. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  238. package/dist/standalone/.next/server/app/api/tts/route.js +2 -2
  239. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  240. package/dist/standalone/.next/server/app/api/view/presence/route.js +2 -1
  241. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  242. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  243. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  244. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  245. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  246. package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
  247. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  248. package/dist/standalone/.next/server/app/index.html +1 -1
  249. package/dist/standalone/.next/server/app/index.rsc +3 -3
  250. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  251. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  252. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  253. package/dist/standalone/.next/server/app/page.js +20 -20
  254. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  255. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  256. package/dist/standalone/.next/server/app-paths-manifest.json +26 -24
  257. package/dist/standalone/.next/server/chunks/107.js +1 -1
  258. package/dist/standalone/.next/server/chunks/1106.js +5 -0
  259. package/dist/standalone/.next/server/chunks/112.js +1 -0
  260. package/dist/standalone/.next/server/chunks/1406.js +35 -168
  261. package/dist/standalone/.next/server/chunks/1585.js +3 -3
  262. package/dist/standalone/.next/server/chunks/160.js +18 -18
  263. package/dist/standalone/.next/server/chunks/1617.js +1 -1
  264. package/dist/standalone/.next/server/chunks/1849.js +1 -1
  265. package/dist/standalone/.next/server/chunks/1952.js +1 -1
  266. package/dist/standalone/.next/server/chunks/2499.js +1 -0
  267. package/dist/standalone/.next/server/chunks/2555.js +1 -1
  268. package/dist/standalone/.next/server/chunks/2589.js +127 -0
  269. package/dist/standalone/.next/server/chunks/261.js +1 -0
  270. package/dist/standalone/.next/server/chunks/2744.js +1 -1
  271. package/dist/standalone/.next/server/chunks/286.js +2 -2
  272. package/dist/standalone/.next/server/chunks/2914.js +20 -21
  273. package/dist/standalone/.next/server/chunks/2916.js +1 -0
  274. package/dist/standalone/.next/server/chunks/3086.js +1 -1
  275. package/dist/standalone/.next/server/chunks/3407.js +1 -1
  276. package/dist/standalone/.next/server/chunks/3509.js +1 -0
  277. package/dist/standalone/.next/server/chunks/3570.js +1 -1
  278. package/dist/standalone/.next/server/chunks/3696.js +5 -0
  279. package/dist/standalone/.next/server/chunks/3743.js +9 -9
  280. package/dist/standalone/.next/server/chunks/3784.js +5 -0
  281. package/dist/standalone/.next/server/chunks/3830.js +1 -1
  282. package/dist/standalone/.next/server/chunks/3957.js +1 -0
  283. package/dist/standalone/.next/server/chunks/4037.js +1 -1
  284. package/dist/standalone/.next/server/chunks/4651.js +1 -1
  285. package/dist/standalone/.next/server/chunks/4972.js +38 -16
  286. package/dist/standalone/.next/server/chunks/53.js +1 -0
  287. package/dist/standalone/.next/server/chunks/5408.js +1 -1
  288. package/dist/standalone/.next/server/chunks/5465.js +156 -0
  289. package/dist/standalone/.next/server/chunks/5545.js +1 -1
  290. package/dist/standalone/.next/server/chunks/568.js +1 -1
  291. package/dist/standalone/.next/server/chunks/6023.js +1 -1
  292. package/dist/standalone/.next/server/chunks/6211.js +1 -0
  293. package/dist/standalone/.next/server/chunks/6289.js +1 -2
  294. package/dist/standalone/.next/server/chunks/6418.js +1 -0
  295. package/dist/standalone/.next/server/chunks/6453.js +1 -1
  296. package/dist/standalone/.next/server/chunks/6522.js +1 -1
  297. package/dist/standalone/.next/server/chunks/6796.js +1 -1
  298. package/dist/standalone/.next/server/chunks/6826.js +3 -3
  299. package/dist/standalone/.next/server/chunks/6942.js +3 -3
  300. package/dist/standalone/.next/server/chunks/6978.js +1 -1
  301. package/dist/standalone/.next/server/chunks/7008.js +21 -19
  302. package/dist/standalone/.next/server/chunks/7192.js +1 -1
  303. package/dist/standalone/.next/server/chunks/7238.js +2 -2
  304. package/dist/standalone/.next/server/chunks/7294.js +1 -0
  305. package/dist/standalone/.next/server/chunks/7722.js +1 -1
  306. package/dist/standalone/.next/server/chunks/781.js +17 -17
  307. package/dist/standalone/.next/server/chunks/8027.js +1 -1
  308. package/dist/standalone/.next/server/chunks/8330.js +1 -0
  309. package/dist/standalone/.next/server/chunks/8444.js +1 -1
  310. package/dist/standalone/.next/server/chunks/8512.js +1 -1
  311. package/dist/standalone/.next/server/chunks/8513.js +2 -2
  312. package/dist/standalone/.next/server/chunks/8617.js +1 -1
  313. package/dist/standalone/.next/server/chunks/8817.js +2 -2
  314. package/dist/standalone/.next/server/chunks/8966.js +1 -1
  315. package/dist/standalone/.next/server/chunks/8985.js +1 -1
  316. package/dist/standalone/.next/server/chunks/8996.js +1 -1
  317. package/dist/standalone/.next/server/chunks/9006.js +1 -0
  318. package/dist/standalone/.next/server/chunks/9060.js +4 -0
  319. package/dist/standalone/.next/server/chunks/9296.js +20 -21
  320. package/dist/standalone/.next/server/chunks/9298.js +1 -2
  321. package/dist/standalone/.next/server/chunks/9307.js +1 -1
  322. package/dist/standalone/.next/server/chunks/9360.js +12 -12
  323. package/dist/standalone/.next/server/chunks/9517.js +1 -1
  324. package/dist/standalone/.next/server/chunks/9611.js +1 -0
  325. package/dist/standalone/.next/server/chunks/9822.js +1 -1
  326. package/dist/standalone/.next/server/chunks/9839.js +5 -0
  327. package/dist/standalone/.next/server/chunks/9867.js +1 -0
  328. package/dist/standalone/.next/server/chunks/9940.js +37 -15
  329. package/dist/standalone/.next/server/chunks/9998.js +1 -1
  330. package/dist/standalone/.next/server/file-scanner-worker.js +1 -1
  331. package/dist/standalone/.next/server/files-response-worker.js +2 -2
  332. package/dist/standalone/.next/server/functions-config-manifest.json +2 -0
  333. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  334. package/dist/standalone/.next/server/middleware.js +3 -3
  335. package/dist/standalone/.next/server/pages/404.html +1 -1
  336. package/dist/standalone/.next/server/pages/500.html +1 -1
  337. package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
  338. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  339. package/dist/standalone/.next/server/state-backup-worker.js +3 -0
  340. package/dist/standalone/.next/server/wakatime-sync-worker.js +1 -1
  341. package/dist/standalone/.next/static/chunks/9591-0fd6a5a4172de16d.js +1 -0
  342. package/dist/standalone/.next/static/chunks/app/_global-error/page-151390fbd8c93c25.js +1 -0
  343. package/dist/standalone/.next/static/chunks/app/api/access/route-151390fbd8c93c25.js +1 -0
  344. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-151390fbd8c93c25.js +1 -0
  345. package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-151390fbd8c93c25.js +1 -0
  346. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-151390fbd8c93c25.js +1 -0
  347. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-151390fbd8c93c25.js +1 -0
  348. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-151390fbd8c93c25.js +1 -0
  349. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-151390fbd8c93c25.js +1 -0
  350. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-151390fbd8c93c25.js +1 -0
  351. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-151390fbd8c93c25.js +1 -0
  352. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-151390fbd8c93c25.js +1 -0
  353. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-151390fbd8c93c25.js +1 -0
  354. package/dist/standalone/.next/static/chunks/app/api/accounts/cli/route-151390fbd8c93c25.js +1 -0
  355. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-151390fbd8c93c25.js +1 -0
  356. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-151390fbd8c93c25.js +1 -0
  357. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-151390fbd8c93c25.js +1 -0
  358. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-151390fbd8c93c25.js +1 -0
  359. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-151390fbd8c93c25.js +1 -0
  360. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-151390fbd8c93c25.js +1 -0
  361. package/dist/standalone/.next/static/chunks/app/api/accounts/route-151390fbd8c93c25.js +1 -0
  362. package/dist/standalone/.next/static/chunks/app/api/agent/route-151390fbd8c93c25.js +1 -0
  363. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-151390fbd8c93c25.js +1 -0
  364. package/dist/standalone/.next/static/chunks/app/api/answer/route-151390fbd8c93c25.js +1 -0
  365. package/dist/standalone/.next/static/chunks/app/api/artifact/route-151390fbd8c93c25.js +1 -0
  366. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-151390fbd8c93c25.js +1 -0
  367. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-151390fbd8c93c25.js +1 -0
  368. package/dist/standalone/.next/static/chunks/app/api/attention/route-151390fbd8c93c25.js +1 -0
  369. package/dist/standalone/.next/static/chunks/app/api/board/route-151390fbd8c93c25.js +1 -0
  370. package/dist/standalone/.next/static/chunks/app/api/bridge/route-151390fbd8c93c25.js +1 -0
  371. package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-151390fbd8c93c25.js +1 -0
  372. package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-151390fbd8c93c25.js +1 -0
  373. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-151390fbd8c93c25.js +1 -0
  374. package/dist/standalone/.next/static/chunks/app/api/conversations/route-151390fbd8c93c25.js +1 -0
  375. package/dist/standalone/.next/static/chunks/app/api/files/route-151390fbd8c93c25.js +1 -0
  376. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-151390fbd8c93c25.js +1 -0
  377. package/dist/standalone/.next/static/chunks/app/api/flows/route-151390fbd8c93c25.js +1 -0
  378. package/dist/standalone/.next/static/chunks/app/api/image/route-151390fbd8c93c25.js +1 -0
  379. package/dist/standalone/.next/static/chunks/app/api/inbox/route-151390fbd8c93c25.js +1 -0
  380. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-151390fbd8c93c25.js +1 -0
  381. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-151390fbd8c93c25.js +1 -0
  382. package/dist/standalone/.next/static/chunks/app/api/limits/route-151390fbd8c93c25.js +1 -0
  383. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-151390fbd8c93c25.js +1 -0
  384. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-151390fbd8c93c25.js +1 -0
  385. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-151390fbd8c93c25.js +1 -0
  386. package/dist/standalone/.next/static/chunks/app/api/log/route-151390fbd8c93c25.js +1 -0
  387. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-151390fbd8c93c25.js +1 -0
  388. package/dist/standalone/.next/static/chunks/app/api/logs/route-151390fbd8c93c25.js +1 -0
  389. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-151390fbd8c93c25.js +1 -0
  390. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-151390fbd8c93c25.js +1 -0
  391. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-151390fbd8c93c25.js +1 -0
  392. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-151390fbd8c93c25.js +1 -0
  393. package/dist/standalone/.next/static/chunks/app/api/onboarding/route-151390fbd8c93c25.js +1 -0
  394. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-151390fbd8c93c25.js +1 -0
  395. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-151390fbd8c93c25.js +1 -0
  396. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-151390fbd8c93c25.js +1 -0
  397. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-151390fbd8c93c25.js +1 -0
  398. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-151390fbd8c93c25.js +1 -0
  399. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-151390fbd8c93c25.js +1 -0
  400. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-151390fbd8c93c25.js +1 -0
  401. package/dist/standalone/.next/static/chunks/app/api/proc/route-151390fbd8c93c25.js +1 -0
  402. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-151390fbd8c93c25.js +1 -0
  403. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-151390fbd8c93c25.js +1 -0
  404. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-151390fbd8c93c25.js +1 -0
  405. package/dist/standalone/.next/static/chunks/app/api/push/route-151390fbd8c93c25.js +1 -0
  406. package/dist/standalone/.next/static/chunks/app/api/resources/route-151390fbd8c93c25.js +1 -0
  407. package/dist/standalone/.next/static/chunks/app/api/roles/route-151390fbd8c93c25.js +1 -0
  408. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-151390fbd8c93c25.js +1 -0
  409. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-151390fbd8c93c25.js +1 -0
  410. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-151390fbd8c93c25.js +1 -0
  411. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-151390fbd8c93c25.js +1 -0
  412. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-151390fbd8c93c25.js +1 -0
  413. package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-151390fbd8c93c25.js +1 -0
  414. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-151390fbd8c93c25.js +1 -0
  415. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-151390fbd8c93c25.js +1 -0
  416. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-151390fbd8c93c25.js +1 -0
  417. package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-151390fbd8c93c25.js +1 -0
  418. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-151390fbd8c93c25.js +1 -0
  419. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-151390fbd8c93c25.js +1 -0
  420. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-151390fbd8c93c25.js +1 -0
  421. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-151390fbd8c93c25.js +1 -0
  422. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-151390fbd8c93c25.js +1 -0
  423. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-151390fbd8c93c25.js +1 -0
  424. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-151390fbd8c93c25.js +1 -0
  425. package/dist/standalone/.next/static/chunks/app/api/session/route-151390fbd8c93c25.js +1 -0
  426. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-151390fbd8c93c25.js +1 -0
  427. package/dist/standalone/.next/static/chunks/app/api/session/title/route-151390fbd8c93c25.js +1 -0
  428. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-151390fbd8c93c25.js +1 -0
  429. package/dist/standalone/.next/static/chunks/app/api/spawn/route-151390fbd8c93c25.js +1 -0
  430. package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-151390fbd8c93c25.js +1 -0
  431. package/dist/standalone/.next/static/chunks/app/api/staging/route-151390fbd8c93c25.js +1 -0
  432. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-151390fbd8c93c25.js +1 -0
  433. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-151390fbd8c93c25.js +1 -0
  434. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-151390fbd8c93c25.js +1 -0
  435. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-151390fbd8c93c25.js +1 -0
  436. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-151390fbd8c93c25.js +1 -0
  437. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-151390fbd8c93c25.js +1 -0
  438. package/dist/standalone/.next/static/chunks/app/api/tasks/route-151390fbd8c93c25.js +1 -0
  439. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-151390fbd8c93c25.js +1 -0
  440. package/dist/standalone/.next/static/chunks/app/api/telegram/route-151390fbd8c93c25.js +1 -0
  441. package/dist/standalone/.next/static/chunks/app/api/timeline/route-151390fbd8c93c25.js +1 -0
  442. package/dist/standalone/.next/static/chunks/app/api/tmux/route-151390fbd8c93c25.js +1 -0
  443. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-151390fbd8c93c25.js +1 -0
  444. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-151390fbd8c93c25.js +1 -0
  445. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-151390fbd8c93c25.js +1 -0
  446. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-151390fbd8c93c25.js +1 -0
  447. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-151390fbd8c93c25.js +1 -0
  448. package/dist/standalone/.next/static/chunks/app/api/tts/route-151390fbd8c93c25.js +1 -0
  449. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-151390fbd8c93c25.js +1 -0
  450. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-151390fbd8c93c25.js +1 -0
  451. package/dist/standalone/.next/static/chunks/app/api/workflows/route-151390fbd8c93c25.js +1 -0
  452. package/dist/standalone/.next/static/chunks/app/page-a2e19d755e17b569.js +125 -0
  453. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-151390fbd8c93c25.js +1 -0
  454. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-151390fbd8c93c25.js +1 -0
  455. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-151390fbd8c93c25.js +1 -0
  456. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-151390fbd8c93c25.js +1 -0
  457. package/dist/standalone/.next/static/css/9b32c3f7f468cbcc.css +1 -0
  458. package/dist/standalone/.next/static/fQ2a5S10vvpyAqE0L_wUj/_buildManifest.js +1 -0
  459. package/dist/standalone/package.json +1 -1
  460. package/dist/standalone/server.bun.js +1 -1
  461. package/dist/standalone/src/lib/viewerInstrumentation.ts +44 -1
  462. package/package.json +1 -1
  463. package/dist/standalone/.next/server/chunks/1888.js +0 -1
  464. package/dist/standalone/.next/server/chunks/4127.js +0 -1
  465. package/dist/standalone/.next/server/chunks/606.js +0 -126
  466. package/dist/standalone/.next/static/836HTp-5V8cZC5YWFVOCk/_buildManifest.js +0 -1
  467. package/dist/standalone/.next/static/chunks/7333-cf17cea2a91e7b4b.js +0 -1
  468. package/dist/standalone/.next/static/chunks/app/_global-error/page-60a25d1c4cbf0128.js +0 -1
  469. package/dist/standalone/.next/static/chunks/app/api/access/route-60a25d1c4cbf0128.js +0 -1
  470. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-60a25d1c4cbf0128.js +0 -1
  471. package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-60a25d1c4cbf0128.js +0 -1
  472. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-60a25d1c4cbf0128.js +0 -1
  473. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-60a25d1c4cbf0128.js +0 -1
  474. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-60a25d1c4cbf0128.js +0 -1
  475. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-60a25d1c4cbf0128.js +0 -1
  476. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-60a25d1c4cbf0128.js +0 -1
  477. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-60a25d1c4cbf0128.js +0 -1
  478. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-60a25d1c4cbf0128.js +0 -1
  479. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-60a25d1c4cbf0128.js +0 -1
  480. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-60a25d1c4cbf0128.js +0 -1
  481. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-60a25d1c4cbf0128.js +0 -1
  482. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-60a25d1c4cbf0128.js +0 -1
  483. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-60a25d1c4cbf0128.js +0 -1
  484. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-60a25d1c4cbf0128.js +0 -1
  485. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-60a25d1c4cbf0128.js +0 -1
  486. package/dist/standalone/.next/static/chunks/app/api/accounts/route-60a25d1c4cbf0128.js +0 -1
  487. package/dist/standalone/.next/static/chunks/app/api/agent/route-60a25d1c4cbf0128.js +0 -1
  488. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-60a25d1c4cbf0128.js +0 -1
  489. package/dist/standalone/.next/static/chunks/app/api/answer/route-60a25d1c4cbf0128.js +0 -1
  490. package/dist/standalone/.next/static/chunks/app/api/artifact/route-60a25d1c4cbf0128.js +0 -1
  491. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-60a25d1c4cbf0128.js +0 -1
  492. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-60a25d1c4cbf0128.js +0 -1
  493. package/dist/standalone/.next/static/chunks/app/api/attention/route-60a25d1c4cbf0128.js +0 -1
  494. package/dist/standalone/.next/static/chunks/app/api/board/route-60a25d1c4cbf0128.js +0 -1
  495. package/dist/standalone/.next/static/chunks/app/api/bridge/route-60a25d1c4cbf0128.js +0 -1
  496. package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-60a25d1c4cbf0128.js +0 -1
  497. package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-60a25d1c4cbf0128.js +0 -1
  498. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-60a25d1c4cbf0128.js +0 -1
  499. package/dist/standalone/.next/static/chunks/app/api/conversations/route-60a25d1c4cbf0128.js +0 -1
  500. package/dist/standalone/.next/static/chunks/app/api/files/route-60a25d1c4cbf0128.js +0 -1
  501. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-60a25d1c4cbf0128.js +0 -1
  502. package/dist/standalone/.next/static/chunks/app/api/flows/route-60a25d1c4cbf0128.js +0 -1
  503. package/dist/standalone/.next/static/chunks/app/api/image/route-60a25d1c4cbf0128.js +0 -1
  504. package/dist/standalone/.next/static/chunks/app/api/inbox/route-60a25d1c4cbf0128.js +0 -1
  505. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-60a25d1c4cbf0128.js +0 -1
  506. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-60a25d1c4cbf0128.js +0 -1
  507. package/dist/standalone/.next/static/chunks/app/api/limits/route-60a25d1c4cbf0128.js +0 -1
  508. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-60a25d1c4cbf0128.js +0 -1
  509. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-60a25d1c4cbf0128.js +0 -1
  510. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-60a25d1c4cbf0128.js +0 -1
  511. package/dist/standalone/.next/static/chunks/app/api/log/route-60a25d1c4cbf0128.js +0 -1
  512. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-60a25d1c4cbf0128.js +0 -1
  513. package/dist/standalone/.next/static/chunks/app/api/logs/route-60a25d1c4cbf0128.js +0 -1
  514. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-60a25d1c4cbf0128.js +0 -1
  515. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-60a25d1c4cbf0128.js +0 -1
  516. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-60a25d1c4cbf0128.js +0 -1
  517. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-60a25d1c4cbf0128.js +0 -1
  518. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-60a25d1c4cbf0128.js +0 -1
  519. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-60a25d1c4cbf0128.js +0 -1
  520. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-60a25d1c4cbf0128.js +0 -1
  521. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-60a25d1c4cbf0128.js +0 -1
  522. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-60a25d1c4cbf0128.js +0 -1
  523. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-60a25d1c4cbf0128.js +0 -1
  524. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-60a25d1c4cbf0128.js +0 -1
  525. package/dist/standalone/.next/static/chunks/app/api/proc/route-60a25d1c4cbf0128.js +0 -1
  526. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-60a25d1c4cbf0128.js +0 -1
  527. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-60a25d1c4cbf0128.js +0 -1
  528. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-60a25d1c4cbf0128.js +0 -1
  529. package/dist/standalone/.next/static/chunks/app/api/push/route-60a25d1c4cbf0128.js +0 -1
  530. package/dist/standalone/.next/static/chunks/app/api/resources/route-60a25d1c4cbf0128.js +0 -1
  531. package/dist/standalone/.next/static/chunks/app/api/roles/route-60a25d1c4cbf0128.js +0 -1
  532. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-60a25d1c4cbf0128.js +0 -1
  533. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-60a25d1c4cbf0128.js +0 -1
  534. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-60a25d1c4cbf0128.js +0 -1
  535. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-60a25d1c4cbf0128.js +0 -1
  536. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-60a25d1c4cbf0128.js +0 -1
  537. package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-60a25d1c4cbf0128.js +0 -1
  538. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-60a25d1c4cbf0128.js +0 -1
  539. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-60a25d1c4cbf0128.js +0 -1
  540. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-60a25d1c4cbf0128.js +0 -1
  541. package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-60a25d1c4cbf0128.js +0 -1
  542. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-60a25d1c4cbf0128.js +0 -1
  543. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-60a25d1c4cbf0128.js +0 -1
  544. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-60a25d1c4cbf0128.js +0 -1
  545. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-60a25d1c4cbf0128.js +0 -1
  546. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-60a25d1c4cbf0128.js +0 -1
  547. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-60a25d1c4cbf0128.js +0 -1
  548. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-60a25d1c4cbf0128.js +0 -1
  549. package/dist/standalone/.next/static/chunks/app/api/session/route-60a25d1c4cbf0128.js +0 -1
  550. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-60a25d1c4cbf0128.js +0 -1
  551. package/dist/standalone/.next/static/chunks/app/api/session/title/route-60a25d1c4cbf0128.js +0 -1
  552. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-60a25d1c4cbf0128.js +0 -1
  553. package/dist/standalone/.next/static/chunks/app/api/spawn/route-60a25d1c4cbf0128.js +0 -1
  554. package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-60a25d1c4cbf0128.js +0 -1
  555. package/dist/standalone/.next/static/chunks/app/api/staging/route-60a25d1c4cbf0128.js +0 -1
  556. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-60a25d1c4cbf0128.js +0 -1
  557. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-60a25d1c4cbf0128.js +0 -1
  558. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-60a25d1c4cbf0128.js +0 -1
  559. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-60a25d1c4cbf0128.js +0 -1
  560. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-60a25d1c4cbf0128.js +0 -1
  561. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-60a25d1c4cbf0128.js +0 -1
  562. package/dist/standalone/.next/static/chunks/app/api/tasks/route-60a25d1c4cbf0128.js +0 -1
  563. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-60a25d1c4cbf0128.js +0 -1
  564. package/dist/standalone/.next/static/chunks/app/api/telegram/route-60a25d1c4cbf0128.js +0 -1
  565. package/dist/standalone/.next/static/chunks/app/api/timeline/route-60a25d1c4cbf0128.js +0 -1
  566. package/dist/standalone/.next/static/chunks/app/api/tmux/route-60a25d1c4cbf0128.js +0 -1
  567. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-60a25d1c4cbf0128.js +0 -1
  568. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-60a25d1c4cbf0128.js +0 -1
  569. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-60a25d1c4cbf0128.js +0 -1
  570. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-60a25d1c4cbf0128.js +0 -1
  571. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-60a25d1c4cbf0128.js +0 -1
  572. package/dist/standalone/.next/static/chunks/app/api/tts/route-60a25d1c4cbf0128.js +0 -1
  573. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-60a25d1c4cbf0128.js +0 -1
  574. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-60a25d1c4cbf0128.js +0 -1
  575. package/dist/standalone/.next/static/chunks/app/api/workflows/route-60a25d1c4cbf0128.js +0 -1
  576. package/dist/standalone/.next/static/chunks/app/page-1cde2db61f461960.js +0 -125
  577. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-60a25d1c4cbf0128.js +0 -1
  578. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-60a25d1c4cbf0128.js +0 -1
  579. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-60a25d1c4cbf0128.js +0 -1
  580. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60a25d1c4cbf0128.js +0 -1
  581. package/dist/standalone/.next/static/css/b25c03e915fd256b.css +0 -1
  582. /package/dist/standalone/.next/static/{836HTp-5V8cZC5YWFVOCk → fQ2a5S10vvpyAqE0L_wUj}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=286,exports.ids=[286],exports.modules={5343:(a,b,c)=>{c.d(b,{Tc:()=>K,W6:()=>g,re:()=>Q,fK:()=>o,Ho:()=>N,K:()=>J,Cs:()=>I,WI:()=>T,hD:()=>S,l6:()=>G,aW:()=>u});var d=c(34196),e=c(76775),f=c(85745);let g=36e5,h=3e5,i=24e5,j=864e5,k=5,l=2,m=2592e5;function n(a,b,c){let d=Number(a?.trim());return Number.isFinite(d)&&d>0?d*c:b}function o(a=process.env){let b=a.LLV_SEAT_TICK_CHECK_MINUTES?.trim();return b&&0===Number(b)?null:{checkIntervalMs:n(b,h,6e4),stallAfterMs:n(a.LLV_SEAT_TICK_STALL_MINUTES,i,6e4),proposalIntervalMs:n(a.LLV_SEAT_TICK_PROPOSAL_HOURS,j,36e5),itemsPerWake:Math.floor(n(a.LLV_SEAT_TICK_ITEMS,k,1)),retryGuard:Math.floor(n(a.LLV_SEAT_TICK_RETRY_GUARD,l,1)),backlogAfterMs:n(a.LLV_SEAT_TICK_BACKLOG_DAYS,m,864e5)}}function p(a){return"terminal"!==a.state}function q(a){return"running"===a.status}function r(a){return"terminal"===a.status}function s(a){return`child:${a.conversationId}`}function t(a){return(0,d.jk)(a.type)&&!a.pipelineTerminal}function u(a){if("busy"!==a.turn)return!1;let b=a.activity;return!!b&&("waiting"===b.lifecycle?"busy"===b.turnState:"running"===b.lifecycle||"starting"===b.lifecycle)}function v(a){return"unresolvable"!==a.transcript}function w(a){let b=a.terminalAt?Date.parse(a.terminalAt):NaN;return Number.isFinite(b)?b:a.lastRecordAt?Date.parse(a.lastRecordAt):NaN}function x(a,b){let c=null===b?String(w(a)):b.slice(-32);return`${a.conversationId}@${c}`}let y=["unreadable","stale","unchanged"],z=new Set;function A(a,b){let c=0;for(let d of a.values())d===b&&(c+=1);return c}function B(a,b,c,d){let e=C(a,b);return e||(d.has(x(a,c))?"unchanged":null)}function C(a,b){let c,d;return v(a)&&Number.isFinite(w(a))?(c=w(a),d=b.designatedAt?Date.parse(b.designatedAt):NaN,Number.isFinite(c)&&Number.isFinite(d)&&(c<d-864e5||"number"==typeof a.harvestedEpoch&&a.harvestedEpoch<b.seatEpoch&&c<d))?"stale":null:"unreadable"}function D(a,b){return b?null===C(a,b):v(a)}function E(a){return a.ownLanes.filter(b=>{let c=b.updatedAt?Date.parse(b.updatedAt):NaN;return Number.isFinite(c)&&a.now-c<a.policy.backlogAfterMs})}function F(a,b,c){if(!a)return!0;let d=Date.parse(a);return!Number.isFinite(d)||b-d>=c}function G(a,b,c){return F(a,b,c)}function H(a,b,c){if(!a)return!1;let d=Date.parse(a.since);return Number.isFinite(d)&&b-d>=c}function I(a,b,c){if(!a||!H(a,b,c))return!0;let d=Date.parse(a.lastAttemptAt);return!Number.isFinite(d)||b-d>=c}function J(a,b,c){return a?{...a,gap:b,lastAttemptAt:c,attempts:a.attempts+1}:{gap:b,since:c,lastAttemptAt:c,attempts:1,reported:!1}}let K="unread";function L(a,b){if(null===a)return!0;let c=M(a),d=M(b);return c&&d?c.board!==d.board||c.pullRequests!==K&&d.pullRequests!==K&&c.pullRequests!==d.pullRequests:a!==b}function M(a){let b=a.indexOf(".");return b<=0||b===a.length-1?null:{board:a.slice(0,b),pullRequests:a.slice(b+1)}}function N(a){return a.isDefault?a.lapsed?"the recorded tick setting reached its expiry, so this project is back on the default wake interval":"this project is on the default tick settings":a.enabled?`wakes for this project are set to one every ${Math.round(a.wakeIntervalMs/6e4)} minute(s)`:"ticking is off for this project: no wake will be sent until it is turned back on"}function O(a){switch(a){case"registry-unreadable":return"the registry read failed";case"children-unindexed":return"the registry backend has no indexed lineage projection, so children cannot be paged";case"migration-pending":return"the SQLite accounting has not finished importing the legacy tick state";case"migration-blocked":return"the legacy tick state at state/seat-tick.json cannot be imported and blocks every wake until it is fixed or removed";case"discovery-incomplete":return"an owner's lineage page or the seat file's revocations could not be read to the end";case"ledger-gap":return"a child's event ledger was replaced, torn, malformed or skipped a sequence";case"ledger-pending":return"a child left its running state and its ledger has not been read yet";case"child-departed":return"a tracked child no longer projects under this seat and project";case"child-unplaced":return"a child has no conversation record or an unobserved turn with no host behind it"}}function P(a,b){let c="pull-requests"===b?a.state.pullRequestGap:a.state.childrenGap;if(!("pull-requests"===b?a.pullRequestsUnavailable:a.childrenUnavailable)||!c||c.reported||!H(c,a.now,a.settings.wakeIntervalMs))return null;let d=`${c.since.slice(0,16).replace("T"," ")} UTC (${c.gap}, ${c.attempts} attempt(s))`;return{card:{ref:(0,e.X7)(b),kind:"source-unreadable",instance:c.since,detail:"pull-requests"===b?`The open pull requests of this project's finished lanes have not been readable since ${d}`:`The seat's spawned children have not been fully accountable since ${d}: `+O(c.gap)},gap:{...c,reported:!0}}}function Q(a){let b=function(a){var b,c,d,f;let g,h,i=new Date(a.now).toISOString(),j={...a.state,lastCheckAt:i};if(!a.seat)return{verdict:{kind:"no-seat",detail:"the project has open work and no active orchestrator seat"},state:{...j,seatEpoch:null},cards:[{ref:e.Qw,kind:"no-seat",detail:"No active orchestrator seat holds this project, so the tick has nothing to wake"}]};if(u(a.seat))return{verdict:{kind:"skipped",reason:"seat-busy"},state:j,cards:[]};let k={...j,seatEpoch:a.seat.seatEpoch,eventsThrough:function(a,b){let c=b;for(let b of a){if(t(b))break;c=Math.max(c??b.seq,b.seq)}return c}(a.events,j.eventsThrough)},l=function(a){let b={now:new Date(a.now),stallAfterMs:null},c=[];for(let d of a.pipelines){if(!p(d))continue;let a=function(a,b){if("terminal"===a.state)return null;if("inert"===a.state)return`${a.kind} ${a.id} is parked`;if(null===b.stallAfterMs)return null;let c=b.stallAfterMs??1728e5,d=a.updatedAt?Date.parse(a.updatedAt):NaN;return Number.isFinite(d)&&b.now.getTime()-d>c?`${a.kind} ${a.id} is live but shows no movement past the stall threshold`:null}({kind:"pipeline",id:d.id,state:d.state,updatedAt:d.updatedAt},b);if(a){c.push({pipeline:d,reason:a});continue}let e=d.stageActivity;if(e&&("stalled"===e.lifecycle||"gone"===e.lifecycle)){let a=d.stageId?` stage ${d.stageId}`:"";c.push({pipeline:d,reason:`pipeline ${d.id}${a} runs a turn the registry reports ${e.lifecycle} (${e.reason})`})}}return c}(a),m=function(a){let b=[];for(let c of a.children){if(!q(c))continue;let a=c.activity;a&&("stalled"===a.lifecycle||"gone"===a.lifecycle)&&b.push({child:c,reason:`child ${c.conversationId} runs a turn the registry reports ${a.lifecycle} (${a.reason})`})}return b}(a),n=[...l.map(a=>a.pipeline.id),...m.map(a=>s(a.child))],o=E(a),v=new Map,w=(a,b)=>{let c=v.get(a.conversationId);(!c||y.indexOf(b)<y.indexOf(c))&&v.set(a.conversationId,b)},C=a.children.filter(r).sort((a,b)=>{let c=a=>{let b=a.terminalAt?Date.parse(a.terminalAt):NaN;return Number.isFinite(b)?b:1/0};return c(a)-c(b)||a.conversationId.localeCompare(b.conversationId)}).filter(b=>{let c=B(b,a.seat,b.outcomeId??null,z);return c&&w(b,c),null===c}),G=new Set(a.state.childrenShown??[]),H=(function(a){let b=[],c=new Map;for(let d of a){let a=c.get(d.conversationId);if(!a){b.push(d.conversationId),c.set(d.conversationId,{child:d,outcomeIds:d.outcomeId?[d.outcomeId]:[]});continue}a.child=d,d.outcomeId&&a.outcomeIds.push(d.outcomeId)}return b.map(a=>c.get(a))})(C).filter(b=>{let c=B(b.child,a.seat,b.child.outcomeId??null,G);return c&&w(b.child,c),null===c}),I=m.filter(b=>{let c=B(b.child,a.seat,null,G);return c&&w(b.child,c),null===c}),J=a.children.filter(q).filter(b=>{let c=B(b,a.seat,null,z);return c&&w(b,c),null===c});for(let a of[...H.map(a=>a.child),...I.map(a=>a.child),...J])v.delete(a.conversationId);let K={stale:A(v,"stale"),unreadable:A(v,"unreadable"),unchanged:A(v,"unchanged")},M=l.filter(b=>a.state.stalledSeen.includes(b.pipeline.id)),N=I.filter(b=>a.state.stalledSeen.includes(s(b.child))),Q=a.children.filter(a=>"unknown"===a.status).length,S=a.tasks.filter(b=>(function(a,b,c){if("assigned"!==a.status||a.owned)return!1;let d=a.updatedAt?Date.parse(a.updatedAt):NaN;return Number.isFinite(d)&&b-d<c})(b,a.now,a.policy.backlogAfterMs)),T=a.tasks.filter(a=>"assigned"===a.status&&!a.owned).length-S.length,U=a.pipelines.some(p)||a.tasks.some(a=>"inbox"===a.status||"assigned"===a.status)||a.pullRequests.length>0||E(a).length>0||a.children.some(b=>q(b)&&D(b,a.seat))||a.children.some(b=>r(b)&&D(b,a.seat)),V=(b=a.state.lastWakeAt,F(b,a.now,a.settings.wakeIntervalMs)),W={...k,stalledSeen:n};if(!a.settings.enabled)return{verdict:{kind:"quiet",detail:a.settings.reason?`ticking is off for this project: ${a.settings.reason}`:"ticking is off for this project"},state:R(W,i),cards:[]};let X=a.events.filter(t),Y=[];if(V){if(o.length>0){let a=o[0],b=o.length>1?` and ${o.length-1} more`:"";Y.push({kind:"own-lane-settled",detail:`a lane you launched is ${a.settled}${b}`})}if(X.length>0){let a=X[0],b=X.length>1?` and ${X.length-1} more`:"";Y.push({kind:"lane-event",detail:`${a.type} since the last delivered wake${b}`})}if(H.length>0){let a=H[0],b=H.length>1?` and ${H.length-1} more`:"";Y.push({kind:"child-terminal",detail:`a spawned child ${a.child.outcome??"finished"} and its outcome is unharvested${b}`})}if(a.pullRequests.length>0){let b=a.pullRequests[0],c=a.pullRequests.length>1?` and ${a.pullRequests.length-1} more`:"";Y.push({kind:"unmerged-pr",detail:`pull request #${b.number}${c} left open by a lane that finished`})}if((M.length>0||N.length>0)&&Y.push({kind:"stalled",detail:(M[0]??N[0]).reason}),S.length>0){let a=T>0?`, and ${T} older than the backlog bound the wake no longer names`:"";Y.push({kind:"unstarted-task",detail:`${S.length} assigned board task(s) nothing has started${a}`})}let b=a.pipelines.some(p)||J.length>0||a.signals.length>0;U&&b&&0===Y.length&&Y.push({kind:"interval",detail:"the wake interval elapsed while work is open"})}let Z=[],$=[],_=0;for(let b of Y){if(c=a.state,d=b.kind,f=a.changeFingerprint,(L(c.lastWakeFingerprint,f)?0:c.wakesWithoutChange[d]??0)>=a.policy.retryGuard){_+=1,Z.push({ref:(0,e.jK)(b.kind),kind:"retry-guard",detail:`Wakes for "${b.kind}" stopped producing any board or pipeline change; the tick has stopped re-sending it until state moves`});continue}$.push(b)}let aa=(g=[],(h=a.pullRequestsUnavailable)&&g.push({source:"pull-requests",gap:h,detail:`the open pull requests of this project's finished lanes could not be read (${h}), so a pull request a finished lane left unmerged cannot be named in this wake`}),a.childrenUnavailable&&g.push({source:"children",gap:a.childrenUnavailable,detail:`the seat's spawned children could not be read (${a.childrenUnavailable}): ${O(a.childrenUnavailable)}, so a running or finished worker cannot be named in this wake`}),g),ab=P(a,"pull-requests");ab&&Z.push(ab.card);let ac=P(a,"children");ac&&Z.push(ac.card);let ad=ab?.gap??null,ae=ac?.gap??null;if($.length>0){let b=function(a){let{input:b}=a,c=[];for(let a of b.pullRequests)c.push({kind:"pull-request",id:`#${a.number}`,label:`${a.title} — open pull request from ${a.pipelineTitle}, unmerged since that lane finished`});let d=new Set(b.pullRequests.map(a=>a.pipelineId));for(let b of a.ownLanes)d.has(b.id)||c.push({kind:"provisioned"===b.settled?"provisioning":"pipeline",id:b.id,label:function(a){if("provisioned"===a.settled)return`${a.title} — lane you launched: provisioned, first stage running`;if("provisioning-failed"===a.settled)return`${a.title} — lane you launched: provisioning failed, it never ran a stage: ${a.detail||"no reason recorded"}`;let b="completed"===a.settled?"completed, and nobody has closed it out":"failed"===a.settled?"a stage failed":"parked on a decision";return`${a.title} — lane you launched: ${b}`}(b)});for(let b of a.laneEvents)c.push({kind:"event",id:b.pipelineId??b.type,label:`${b.type}: ${b.summary}`});for(let b of a.harvest)c.push({kind:"child",id:b.child.conversationId,outcomeId:b.child.outcomeId,outcomeIds:b.outcomeIds,stateTokens:[x(b.child,b.child.outcomeId??null),x(b.child,null)],label:`${b.child.title} — spawned child ${b.child.outcome??"finished"}, outcome unharvested`});let e=new Set(a.ownLanes.map(a=>a.id));for(let b of a.stalled)e.has(b.pipeline.id)||c.push({kind:"pipeline",id:b.pipeline.id,label:`${b.pipeline.title} — ${b.reason}`});for(let b of a.stalledChildren)c.some(a=>"child"===a.kind&&a.id===b.child.conversationId)||c.push({kind:"child",id:b.child.conversationId,stateTokens:[x(b.child,null)],label:`${b.child.title} — ${b.reason}`});for(let b of a.unstarted)c.push({kind:"task",id:b.id,label:`${b.title} — assigned, nothing started it`});for(let a of b.pipelines)p(a)&&(c.some(b=>b.id===a.id)||c.push({kind:"pipeline",id:a.id,label:`${a.title} — open`}));for(let b of a.runningChildren)c.some(a=>a.id===b.conversationId)||c.push({kind:"child",id:b.outcomeId??b.conversationId,label:`${b.title} — spawned child running`});for(let a of b.signals)c.push({kind:"signal",id:a.id,label:a.label});return c}({input:a,ownLanes:o,stalled:M,stalledChildren:N,harvest:H,runningChildren:J,laneEvents:X,unstarted:S});return{verdict:{kind:"wake",reasons:$,items:b.slice(0,a.policy.itemsPerWake),deferred:Math.max(0,b.length-a.policy.itemsPerWake),skippedChildren:K,gaps:aa},state:W,cards:Z,reportedSourceGap:ad,reportedChildrenGap:ae}}if(aa.length>0){let a=aa[0],b="children"===a.source?"the seat's spawned children":"the open pull requests of this project's finished lanes",c="children"===a.source?`: ${O(a.gap)}`:"";return{verdict:{kind:"error",detail:`${b} could not be read (${a.gap})${c}, so nothing owed is not established`},state:W,cards:Z,reportedSourceGap:ad,reportedChildrenGap:ae}}if(_>0)return{verdict:{kind:"quiet",detail:"every wake reason is held by the retry guard"},state:R(W,i),cards:Z};let af=Q>0?`; ${Q} spawned child(ren) in an unknown state`:"";if(!U){let b={...R(W,i),idleSince:a.state.idleSince??i};return V&&F(a.state.lastProposalAt,a.now,a.policy.proposalIntervalMs)?{verdict:{kind:"proactive",detail:`no open lane, no unblocked task, and the proposal slot is due${af}`},state:b,cards:[]}:{verdict:{kind:"quiet",detail:`the board is done and the proposal slot is not due${af}`},state:b,cards:[]}}return{verdict:{kind:"quiet",detail:`nothing owed${af}`},state:{...R(W,i),idleSince:null},cards:[]}}(a);return{...b,cards:[...b.cards,...function(a){let b=a.settings;if(!b.configured)return[];let c={reason:b.reason,until:b.until,setBy:b.setBy,updatedAt:b.updatedAt};return[{ref:e.Gx,kind:"tick-settings",state:b.isDefault?"resolved":"open",settings:c,detail:N(b)}]}(a)]}}function R(a,b){return{...a,quietSince:a.quietSince??b}}function S(a,b){let{fingerprint:c,eventsThrough:d}=b;if("proactive"===a.kind)return{proposal:!0,reasons:[],fingerprint:c,eventsThrough:d,children:[],announcedLanes:[],shownChildren:[]};if("wake"!==a.kind)return null;let e=new Set(b.terminalChildren??[]),f=[...new Set(a.items.flatMap(a=>a.stateTokens??[]))],g=a.items.filter(a=>"child"===a.kind).flatMap(a=>a.outcomeIds?.length?a.outcomeIds:[a.outcomeId??a.id]).filter(a=>e.has(a)),h=a.items.filter(a=>"provisioning"===a.kind).map(a=>a.id);return{proposal:!1,reasons:a.reasons.map(a=>a.kind),fingerprint:c,eventsThrough:d,children:g,announcedLanes:h,shownChildren:f}}function T(a,b,c){var d,e,g,h,i,j;let k,l,m=new Date(c).toISOString(),n=Math.max(a.eventsThrough??0,b.eventsThrough);if(b.proposal)return{...a,lastWakeAt:m,lastProposalAt:m,lastWakeReasons:[],lastWakeFingerprint:b.fingerprint,quietSince:null,eventsThrough:n,outstandingWake:null,releasedWake:null};let o=b.reasons,p=!L(a.lastWakeFingerprint,b.fingerprint),q={};for(let b of f.MQ)o.includes(b)&&(q[b]=p?(a.wakesWithoutChange[b]??0)+1:0);return{...a,lastWakeAt:m,lastWakeReasons:o,lastWakeFingerprint:b.fingerprint,wakesWithoutChange:q,quietSince:null,idleSince:null,eventsThrough:n,outstandingWake:null,releasedWake:null,harvestedChildren:(d=a.harvestedChildren,e=b.children,[...new Set([...d.filter(a=>!e.includes(a)),...e])]),childrenShown:(g=a.childrenShown??[],h=b.shownChildren??[],k=a=>a.slice(0,a.lastIndexOf("@")),l=new Set(h.map(k)),[...g.filter(a=>!l.has(k(a))),...h].slice(-f.kZ)),announcedLanes:(i=a.announcedLanes??[],j=b.announcedLanes??[],[...new Set([...i.filter(a=>!j.includes(a)),...j])].slice(-f.GN))}}},18398:(a,b,c)=>{c.d(b,{Ch:()=>s,Fm:()=>x,Hy:()=>v,Y$:()=>w,to:()=>C,yO:()=>B});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(2033),l=c(85745);function m(){return process.env.LLV_MONITOR_AUDIT_FILE?.trim()||(0,j.BQ)(i().join("conversation-monitor","runs.ndjson"))}let n=["completed","in-flight","stalled","untracked","awaiting-confirmation"],o=["clean","failed","skipped"],p=["already-tracked","card-budget","dry-run"];function q(a,b){return"string"==typeof a?a.slice(0,b):null}function r(a){return"number"==typeof a&&Number.isFinite(a)&&a>=0?Math.floor(a):0}function s(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=q(a.runId,100),c=o.find(b=>b===a.outcome);if(1!==a.schemaVersion||!b||!c)return null;let d=a.window??{},e=a.scope??{},f=a.orchestrator??{},g=a.scanned??{},h=a.found??{},i=h.byState??{},j=Object.fromEntries(n.map(a=>[a,r(i[a])])),k=Array.isArray(a.created)?a.created:[],l=Array.isArray(a.skipped)?a.skipped:[];return{schemaVersion:1,runId:b,startedAt:q(a.startedAt,40)??"",finishedAt:q(a.finishedAt,40)??"",outcome:c,detail:q(a.detail,800),window:{from:q(d.from,40)??"",to:q(d.to,40)??"",hours:r(d.hours)},scope:{project:q(e.project,200)},orchestrator:{resolution:q(f.resolution,40)??"unavailable",conversationId:q(f.conversationId,100),delivered:!0===f.delivered},scanned:{conversations:r(g.conversations),operatorMessages:r(g.operatorMessages)},found:{total:r(h.total),byState:j,fingerprints:(Array.isArray(h.fingerprints)?h.fingerprints:[]).filter(a=>"string"==typeof a&&/^[A-Za-z0-9_-]{4,64}$/.test(a)).slice(0,500)},created:k.flatMap(a=>{let b=a??{},c=q(b.fingerprint,64),d=q(b.taskId,100);return c&&d?[{fingerprint:c,taskId:d,state:q(b.state,40)??"untracked"}]:[]}).slice(0,500),skipped:l.flatMap(a=>{let b=a??{},c=q(b.fingerprint,64),d=p.find(a=>a===b.reason);return c&&d?[{fingerprint:c,reason:d}]:[]}).slice(0,500)}}function t(a,b){g().mkdirSync(i().dirname(b.filePath),{recursive:!0,mode:448}),(0,k.Ol)(b.filePath,b.busyMessage,()=>{g().appendFileSync(b.filePath,`${JSON.stringify(a)}
1
+ "use strict";exports.id=286,exports.ids=[286],exports.modules={5343:(a,b,c)=>{c.d(b,{Tc:()=>L,W6:()=>g,re:()=>R,fK:()=>o,Ho:()=>O,K:()=>K,Cs:()=>J,WI:()=>W,hD:()=>V,l6:()=>H,aW:()=>u});var d=c(34196),e=c(76775),f=c(85745);let g=36e5,h=3e5,i=24e5,j=864e5,k=5,l=2,m=2592e5;function n(a,b,c){let d=Number(a?.trim());return Number.isFinite(d)&&d>0?d*c:b}function o(a=process.env){let b=a.LLV_SEAT_TICK_CHECK_MINUTES?.trim();return b&&0===Number(b)?null:{checkIntervalMs:n(b,h,6e4),stallAfterMs:n(a.LLV_SEAT_TICK_STALL_MINUTES,i,6e4),proposalIntervalMs:n(a.LLV_SEAT_TICK_PROPOSAL_HOURS,j,36e5),itemsPerWake:Math.floor(n(a.LLV_SEAT_TICK_ITEMS,k,1)),retryGuard:Math.floor(n(a.LLV_SEAT_TICK_RETRY_GUARD,l,1)),backlogAfterMs:n(a.LLV_SEAT_TICK_BACKLOG_DAYS,m,864e5)}}function p(a){return"terminal"!==a.state}function q(a){return"running"===a.status}function r(a){return"terminal"===a.status}function s(a){return`child:${a.conversationId}`}function t(a){return(0,d.jk)(a.type)&&!a.pipelineTerminal}function u(a){if("busy"!==a.turn)return!1;let b=a.activity;return!!b&&("waiting"===b.lifecycle?"busy"===b.turnState:"running"===b.lifecycle||"starting"===b.lifecycle)}function v(a){return null!==a&&("stalled"===a.lifecycle||"gone"===a.lifecycle)}function w(a){return"unresolvable"!==a.transcript}function x(a){let b=a.terminalAt?Date.parse(a.terminalAt):NaN;if(Number.isFinite(b))return b;let c=a.lastRecordAt?Date.parse(a.lastRecordAt):NaN;return Number.isFinite(c)?c:a.spawnedAt?Date.parse(a.spawnedAt):NaN}function y(a,b){let c=null===b?String(x(a)):b.slice(-32);return`${a.conversationId}@${c}`}let z=["unreadable","stale","unchanged"],A=new Set;function B(a,b){let c=0;for(let d of a.values())d===b&&(c+=1);return c}function C(a,b,c,d){let e=D(a,b);return e||(d.has(y(a,c))?"unchanged":null)}function D(a,b){let c,d;return(c=x(a),d=b.designatedAt?Date.parse(b.designatedAt):NaN,Number.isFinite(c)&&Number.isFinite(d)&&(c<d-864e5||"number"==typeof a.harvestedEpoch&&a.harvestedEpoch<b.seatEpoch&&c<d))?"stale":(w(a)||"terminal"===a.status)&&Number.isFinite(x(a))?null:"unreadable"}function E(a,b){return b?null===D(a,b):w(a)||"terminal"===a.status}function F(a){return a.ownLanes.filter(b=>{let c=b.updatedAt?Date.parse(b.updatedAt):NaN;return Number.isFinite(c)&&a.now-c<a.policy.backlogAfterMs})}function G(a,b,c){if(!a)return!0;let d=Date.parse(a);return!Number.isFinite(d)||b-d>=c}function H(a,b,c){return G(a,b,c)}function I(a,b,c){if(!a)return!1;let d=Date.parse(a.since);return Number.isFinite(d)&&b-d>=c}function J(a,b,c){if(!a||!I(a,b,c))return!0;let d=Date.parse(a.lastAttemptAt);return!Number.isFinite(d)||b-d>=c}function K(a,b,c){return a?{...a,gap:b,lastAttemptAt:c,attempts:a.attempts+1}:{gap:b,since:c,lastAttemptAt:c,attempts:1,reported:!1}}let L="unread";function M(a,b){if(null===a)return!0;let c=N(a),d=N(b);return c&&d?c.board!==d.board||c.pullRequests!==L&&d.pullRequests!==L&&c.pullRequests!==d.pullRequests:a!==b}function N(a){let b=a.indexOf(".");return b<=0||b===a.length-1?null:{board:a.slice(0,b),pullRequests:a.slice(b+1)}}function O(a){return a.isDefault?a.lapsed?"the recorded tick setting reached its expiry, so this project is back on the default wake interval":"this project is on the default tick settings":a.enabled?`wakes for this project are set to one every ${Math.round(a.wakeIntervalMs/6e4)} minute(s)`:"ticking is off for this project: no wake will be sent until it is turned back on"}function P(a){switch(a){case"registry-unreadable":return"the registry read failed";case"children-unindexed":return"the registry backend has no indexed lineage projection, so children cannot be paged";case"migration-pending":return"the SQLite accounting has not finished importing the legacy tick state";case"migration-blocked":return"the legacy tick state at state/seat-tick.json cannot be imported and blocks every wake until it is fixed or removed";case"discovery-incomplete":return"an owner's lineage page or the seat file's revocations could not be read to the end";case"ledger-gap":return"a child's event ledger was replaced, torn, malformed or skipped a sequence";case"ledger-pending":return"a child left its running state and its ledger has not been read yet";case"child-departed":return"a tracked child no longer projects under this seat and project";case"child-unplaced":return"a child has no conversation record or an unobserved turn with no host behind it"}}function Q(a,b){let c="pull-requests"===b?a.state.pullRequestGap:a.state.childrenGap;if(!("pull-requests"===b?a.pullRequestsUnavailable:a.childrenUnavailable)||!c||c.reported||!I(c,a.now,a.settings.wakeIntervalMs))return null;let d=`${c.since.slice(0,16).replace("T"," ")} UTC (${c.gap}, ${c.attempts} attempt(s))`;return{card:{ref:(0,e.X7)(b),kind:"source-unreadable",instance:c.since,detail:"pull-requests"===b?`The open pull requests of this project's finished lanes have not been readable since ${d}`:`The seat's spawned children have not been fully accountable since ${d}: `+P(c.gap)},gap:{...c,reported:!0}}}function R(a){let b=function(a){var b,c,d,f;let g,h,i=new Date(a.now).toISOString(),j={...a.state,lastCheckAt:i};if(!a.seat)return{verdict:{kind:"no-seat",detail:"the project has open work and no active orchestrator seat"},state:{...j,seatEpoch:null},cards:[{ref:e.Qw,kind:"no-seat",detail:"No active orchestrator seat holds this project, so the tick has nothing to wake"}]};if(u(a.seat))return{verdict:{kind:"skipped",reason:"seat-busy"},state:j,cards:[]};let k={...j,seatEpoch:a.seat.seatEpoch,eventsThrough:function(a,b){let c=b;for(let b of a){if(t(b))break;c=Math.max(c??b.seq,b.seq)}return c}(a.events,j.eventsThrough)},l=function(a){let b={now:new Date(a.now),stallAfterMs:null},c=[];for(let d of a.pipelines){if(!p(d))continue;let a=function(a,b){if("terminal"===a.state)return null;if("inert"===a.state)return`${a.kind} ${a.id} is parked`;if(null===b.stallAfterMs)return null;let c=b.stallAfterMs??1728e5,d=a.updatedAt?Date.parse(a.updatedAt):NaN;return Number.isFinite(d)&&b.now.getTime()-d>c?`${a.kind} ${a.id} is live but shows no movement past the stall threshold`:null}({kind:"pipeline",id:d.id,state:d.state,updatedAt:d.updatedAt},b);if(a){c.push({pipeline:d,reason:a});continue}let e=d.stageActivity;if(e&&("stalled"===e.lifecycle||"gone"===e.lifecycle)){let a=d.stageId?` stage ${d.stageId}`:"";c.push({pipeline:d,reason:`pipeline ${d.id}${a} runs a turn the registry reports ${e.lifecycle} (${e.reason})`})}}return c}(a),m=function(a){let b=[];for(let c of a.children){if(!q(c))continue;let a=c.activity;a&&v(a)&&b.push({child:c,reason:`child ${c.conversationId} runs a turn the registry reports ${a.lifecycle} (${a.reason})`})}return b}(a),n=[...l.map(a=>a.pipeline.id),...m.map(a=>s(a.child))],o=F(a),x=new Map,D=(a,b)=>{let c=x.get(a.conversationId);(!c||z.indexOf(b)<z.indexOf(c))&&x.set(a.conversationId,b)},H=a.children.filter(r).sort((a,b)=>{let c=a=>{let b=a.terminalAt?Date.parse(a.terminalAt):NaN;return Number.isFinite(b)?b:1/0};return c(a)-c(b)||a.conversationId.localeCompare(b.conversationId)}).filter(b=>{let c=C(b,a.seat,b.outcomeId??null,A);return c&&D(b,c),null===c}),I=new Set(a.state.childrenShown??[]),J=(function(a){let b=[],c=new Map;for(let d of a){let a=c.get(d.conversationId);if(!a){b.push(d.conversationId),c.set(d.conversationId,{child:d,outcomeIds:d.outcomeId?[d.outcomeId]:[]});continue}a.child=d,d.outcomeId&&a.outcomeIds.push(d.outcomeId)}return b.map(a=>c.get(a))})(H).filter(b=>{let c=C(b.child,a.seat,b.child.outcomeId??null,I);return c&&D(b.child,c),null===c}),K=m.filter(b=>{let c=C(b.child,a.seat,null,I);return c&&D(b.child,c),null===c}),L=a.children.filter(q).filter(b=>{let c=C(b,a.seat,null,A);return c&&D(b,c),null===c});for(let a of[...J.map(a=>a.child),...K.map(a=>a.child),...L])x.delete(a.conversationId);let N=function(a,b,c){let d=[],e=new Set,f=0;for(let g of a){if("unreadable"!==b.get(g.conversationId)||e.has(g.conversationId))continue;e.add(g.conversationId);let a=U(g);if(c.has(a)){f+=1;continue}d.length>=5||d.push({conversationId:g.conversationId,title:g.title,reason:T(g.transcriptReason),stateToken:a})}return{named:d,unchanged:f}}(a.children,x,I),O={stale:B(x,"stale"),unreadable:B(x,"unreadable")-N.named.length-N.unchanged,unchanged:B(x,"unchanged")+N.unchanged},R=l.filter(b=>a.state.stalledSeen.includes(b.pipeline.id)),V=K.filter(b=>a.state.stalledSeen.includes(s(b.child))),W=a.children.filter(a=>"unknown"===a.status).length,X=a.tasks.filter(b=>(function(a,b,c){if("assigned"!==a.status||a.owned)return!1;let d=a.updatedAt?Date.parse(a.updatedAt):NaN;return Number.isFinite(d)&&b-d<c})(b,a.now,a.policy.backlogAfterMs)),Y=a.tasks.filter(a=>"assigned"===a.status&&!a.owned).length-X.length,Z=a.pipelines.some(p)||a.tasks.some(a=>"inbox"===a.status||"assigned"===a.status)||a.pullRequests.length>0||F(a).length>0||a.children.some(b=>q(b)&&E(b,a.seat))||a.children.some(b=>r(b)&&E(b,a.seat)),$=J.length>0||V.length>0,_=L.filter(a=>!v(a.activity)),aa=$?3e5:_.length>0?9e5:1/0,ab=(b=a.state.lastWakeAt,G(b,a.now,Math.min(a.settings.wakeIntervalMs,aa))),ac={...k,stalledSeen:n};if(!a.settings.enabled)return{verdict:{kind:"quiet",detail:a.settings.reason?`ticking is off for this project: ${a.settings.reason}`:"ticking is off for this project"},state:S(ac,i),cards:[]};let ad=a.events.filter(t),ae=[];if(ab){if(o.length>0){let a=o[0],b=o.length>1?` and ${o.length-1} more`:"";ae.push({kind:"own-lane-settled",detail:`a lane you launched is ${a.settled}${b}`})}if(ad.length>0){let a=ad[0],b=ad.length>1?` and ${ad.length-1} more`:"";ae.push({kind:"lane-event",detail:`${a.type} since the last delivered wake${b}`})}if(J.length>0){let a=J[0],b=J.length>1?` and ${J.length-1} more`:"";ae.push({kind:"child-terminal",detail:`a spawned child ${a.child.outcome??"finished"} and its outcome is unharvested${b}`})}if(a.pullRequests.length>0){let b=a.pullRequests[0],c=a.pullRequests.length>1?` and ${a.pullRequests.length-1} more`:"";ae.push({kind:"unmerged-pr",detail:`pull request #${b.number}${c} left open by a lane that finished`})}if((R.length>0||V.length>0)&&ae.push({kind:"stalled",detail:(R[0]??V[0]).reason}),X.length>0){let a=Y>0?`, and ${Y} older than the backlog bound the wake no longer names`:"";ae.push({kind:"unstarted-task",detail:`${X.length} assigned board task(s) nothing has started${a}`})}let b=a.pipelines.some(p)||L.length>0||a.signals.length>0;Z&&b&&0===ae.length&&ae.push({kind:"interval",detail:"the wake interval elapsed while work is open"})}let af=[],ag=[],ah=0;for(let b of ae){if(c=a.state,d=b.kind,f=a.changeFingerprint,(M(c.lastWakeFingerprint,f)?0:c.wakesWithoutChange[d]??0)>=a.policy.retryGuard){ah+=1,af.push({ref:(0,e.jK)(b.kind),kind:"retry-guard",detail:`Wakes for "${b.kind}" stopped producing any board or pipeline change; the tick has stopped re-sending it until state moves`});continue}ag.push(b)}let ai=(g=[],(h=a.pullRequestsUnavailable)&&g.push({source:"pull-requests",gap:h,detail:`the open pull requests of this project's finished lanes could not be read (${h}), so a pull request a finished lane left unmerged cannot be named in this wake`}),a.childrenUnavailable&&g.push({source:"children",gap:a.childrenUnavailable,detail:`the seat's spawned children could not be read (${a.childrenUnavailable}): ${P(a.childrenUnavailable)}, so a running or finished worker cannot be named in this wake`}),g),aj=Q(a,"pull-requests");aj&&af.push(aj.card);let ak=Q(a,"children");ak&&af.push(ak.card);let al=aj?.gap??null,am=ak?.gap??null;if(ag.length>0){let b=function(a){let{input:b}=a,c=[];for(let a of b.pullRequests)c.push({kind:"pull-request",id:`#${a.number}`,label:`${a.title} — open pull request from ${a.pipelineTitle}, unmerged since that lane finished`});let d=new Set(b.pullRequests.map(a=>a.pipelineId));for(let b of a.ownLanes)d.has(b.id)||c.push({kind:"provisioned"===b.settled?"provisioning":"pipeline",id:b.id,label:function(a){if("provisioned"===a.settled)return`${a.title} — lane you launched: provisioned, first stage running`;if("provisioning-failed"===a.settled)return`${a.title} — lane you launched: provisioning failed, it never ran a stage: ${a.detail||"no reason recorded"}`;let b="completed"===a.settled?"completed, and nobody has closed it out":"failed"===a.settled?"a stage failed":"parked on a decision";return`${a.title} — lane you launched: ${b}`}(b)});for(let b of a.laneEvents)c.push({kind:"event",id:b.pipelineId??b.type,label:`${b.type}: ${b.summary}`});for(let b of a.harvest){let{child:a}=b,d=w(a);c.push({kind:"child",id:a.conversationId,outcomeId:a.outcomeId,outcomeIds:b.outcomeIds,stateTokens:[y(a,a.outcomeId??null),y(a,null),...d?[]:[U(a)]],label:d?`${a.title} — spawned child ${a.outcome??"finished"}, outcome unharvested`:`${a.title} — spawned child ${a.outcome??"finished"}, transcript not readable: ${T(a.transcriptReason)}`,...d&&a.transcriptPath?{finalMessageFrom:{path:a.transcriptPath,engine:a.engine??null}}:{}})}let e=new Set(a.ownLanes.map(a=>a.id));for(let b of a.stalled)e.has(b.pipeline.id)||c.push({kind:"pipeline",id:b.pipeline.id,label:`${b.pipeline.title} — ${b.reason}`});for(let b of a.stalledChildren)c.some(a=>"child"===a.kind&&a.id===b.child.conversationId)||c.push({kind:"child",id:b.child.conversationId,stateTokens:[y(b.child,null)],label:`${b.child.title} — ${b.reason}`});for(let b of a.unstarted)c.push({kind:"task",id:b.id,label:`${b.title} — assigned, nothing started it`});for(let a of b.pipelines)p(a)&&(c.some(b=>b.id===a.id)||c.push({kind:"pipeline",id:a.id,label:`${a.title} — open`}));for(let b of a.runningChildren)c.some(a=>a.id===b.conversationId)||c.push({kind:"child",id:b.outcomeId??b.conversationId,label:`${b.title} — spawned child running`});for(let a of b.signals)c.push({kind:"signal",id:a.id,label:a.label});return c}({input:a,ownLanes:o,stalled:R,stalledChildren:V,harvest:J,runningChildren:L,laneEvents:ad,unstarted:X});return{verdict:{kind:"wake",reasons:ag,items:b.slice(0,a.policy.itemsPerWake),deferred:Math.max(0,b.length-a.policy.itemsPerWake),skippedChildren:O,unreadableChildren:N.named,gaps:ai},state:ac,cards:af,reportedSourceGap:al,reportedChildrenGap:am}}if(ai.length>0){let a=ai[0],b="children"===a.source?"the seat's spawned children":"the open pull requests of this project's finished lanes",c="children"===a.source?`: ${P(a.gap)}`:"";return{verdict:{kind:"error",detail:`${b} could not be read (${a.gap})${c}, so nothing owed is not established`},state:ac,cards:af,reportedSourceGap:al,reportedChildrenGap:am}}if(ah>0)return{verdict:{kind:"quiet",detail:"every wake reason is held by the retry guard"},state:S(ac,i),cards:af};let an=W>0?`; ${W} spawned child(ren) in an unknown state`:"";if(!Z){let b={...S(ac,i),idleSince:a.state.idleSince??i};return ab&&G(a.state.lastProposalAt,a.now,a.policy.proposalIntervalMs)?{verdict:{kind:"proactive",detail:`no open lane, no unblocked task, and the proposal slot is due${an}`},state:b,cards:[]}:{verdict:{kind:"quiet",detail:`the board is done and the proposal slot is not due${an}`},state:b,cards:[]}}return{verdict:{kind:"quiet",detail:`nothing owed${an}`},state:{...S(ac,i),idleSince:null},cards:[]}}(a);return{...b,cards:[...b.cards,...function(a){let b=a.settings;if(!b.configured)return[];let c={reason:b.reason,until:b.until,setBy:b.setBy,updatedAt:b.updatedAt};return[{ref:e.Gx,kind:"tick-settings",state:b.isDefault?"resolved":"open",settings:c,detail:O(b)}]}(a)]}}function S(a,b){return{...a,quietSince:a.quietSince??b}}function T(a){switch(a){case"no-transcript":return"the registry holds no transcript for it";case"outside-roots":return"its transcript path is outside every folder this Viewer scans";case"missing":return"the transcript file is no longer on disk";default:return"the Viewer cannot resolve its transcript"}}function U(a){return`${a.conversationId}@unreadable:${a.transcriptReason??"unknown"}`}function V(a,b){let{fingerprint:c,eventsThrough:d}=b;if("proactive"===a.kind)return{proposal:!0,reasons:[],fingerprint:c,eventsThrough:d,children:[],announcedLanes:[],shownChildren:[]};if("wake"!==a.kind)return null;let e=new Set(b.terminalChildren??[]),f=[...new Set([...a.items.flatMap(a=>a.stateTokens??[]),...(a.unreadableChildren??[]).map(a=>a.stateToken)])],g=a.items.filter(a=>"child"===a.kind).flatMap(a=>a.outcomeIds?.length?a.outcomeIds:[a.outcomeId??a.id]).filter(a=>e.has(a)),h=a.items.filter(a=>"provisioning"===a.kind).map(a=>a.id);return{proposal:!1,reasons:a.reasons.map(a=>a.kind),fingerprint:c,eventsThrough:d,children:g,announcedLanes:h,shownChildren:f}}function W(a,b,c){var d,e,g,h,i,j;let k,l,m=new Date(c).toISOString(),n=Math.max(a.eventsThrough??0,b.eventsThrough);if(b.proposal)return{...a,lastWakeAt:m,lastProposalAt:m,lastWakeReasons:[],lastWakeFingerprint:b.fingerprint,quietSince:null,eventsThrough:n,outstandingWake:null,releasedWake:null};let o=b.reasons,p=!M(a.lastWakeFingerprint,b.fingerprint),q={};for(let b of f.MQ)o.includes(b)&&(q[b]=p?(a.wakesWithoutChange[b]??0)+1:0);return{...a,lastWakeAt:m,lastWakeReasons:o,lastWakeFingerprint:b.fingerprint,wakesWithoutChange:q,quietSince:null,idleSince:null,eventsThrough:n,outstandingWake:null,releasedWake:null,harvestedChildren:(d=a.harvestedChildren,e=b.children,[...new Set([...d.filter(a=>!e.includes(a)),...e])]),childrenShown:(g=a.childrenShown??[],h=b.shownChildren??[],k=a=>a.slice(0,a.lastIndexOf("@")),l=new Set(h.map(k)),[...g.filter(a=>!l.has(k(a))),...h].slice(-f.kZ)),announcedLanes:(i=a.announcedLanes??[],j=b.announcedLanes??[],[...new Set([...i.filter(a=>!j.includes(a)),...j])].slice(-f.GN))}}},18398:(a,b,c)=>{c.d(b,{Ch:()=>s,Fm:()=>x,Hy:()=>v,Y$:()=>w,to:()=>C,yO:()=>B});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(2033),l=c(85745);function m(){return process.env.LLV_MONITOR_AUDIT_FILE?.trim()||(0,j.BQ)(i().join("conversation-monitor","runs.ndjson"))}let n=["completed","in-flight","stalled","untracked","awaiting-confirmation"],o=["clean","failed","skipped"],p=["already-tracked","card-budget","dry-run"];function q(a,b){return"string"==typeof a?a.slice(0,b):null}function r(a){return"number"==typeof a&&Number.isFinite(a)&&a>=0?Math.floor(a):0}function s(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=q(a.runId,100),c=o.find(b=>b===a.outcome);if(1!==a.schemaVersion||!b||!c)return null;let d=a.window??{},e=a.scope??{},f=a.orchestrator??{},g=a.scanned??{},h=a.found??{},i=h.byState??{},j=Object.fromEntries(n.map(a=>[a,r(i[a])])),k=Array.isArray(a.created)?a.created:[],l=Array.isArray(a.skipped)?a.skipped:[];return{schemaVersion:1,runId:b,startedAt:q(a.startedAt,40)??"",finishedAt:q(a.finishedAt,40)??"",outcome:c,detail:q(a.detail,800),window:{from:q(d.from,40)??"",to:q(d.to,40)??"",hours:r(d.hours)},scope:{project:q(e.project,200)},orchestrator:{resolution:q(f.resolution,40)??"unavailable",conversationId:q(f.conversationId,100),delivered:!0===f.delivered},scanned:{conversations:r(g.conversations),operatorMessages:r(g.operatorMessages)},found:{total:r(h.total),byState:j,fingerprints:(Array.isArray(h.fingerprints)?h.fingerprints:[]).filter(a=>"string"==typeof a&&/^[A-Za-z0-9_-]{4,64}$/.test(a)).slice(0,500)},created:k.flatMap(a=>{let b=a??{},c=q(b.fingerprint,64),d=q(b.taskId,100);return c&&d?[{fingerprint:c,taskId:d,state:q(b.state,40)??"untracked"}]:[]}).slice(0,500),skipped:l.flatMap(a=>{let b=a??{},c=q(b.fingerprint,64),d=p.find(a=>a===b.reason);return c&&d?[{fingerprint:c,reason:d}]:[]}).slice(0,500)}}function t(a,b){g().mkdirSync(i().dirname(b.filePath),{recursive:!0,mode:448}),(0,k.Ol)(b.filePath,b.busyMessage,()=>{g().appendFileSync(b.filePath,`${JSON.stringify(a)}
2
2
  `,{encoding:"utf8",mode:384}),function(a,b){let c;try{c=g().readFileSync(a,"utf8").split("\n").filter(a=>a.trim())}catch{return}if(c.length<=b)return;let d=`${a}.${process.pid}.${e().randomUUID()}.tmp`;g().writeFileSync(d,`${c.slice(-b).join("\n")}
3
3
  `,{encoding:"utf8",mode:384}),g().renameSync(d,a)}(b.filePath,b.retention)})}function u(a,b){let c;try{c=g().readFileSync(b.filePath,"utf8")}catch{return[]}let d=[];for(let a of c.split("\n"))if(a.trim())try{let c=b.sanitize(JSON.parse(a));c&&d.push(c)}catch{continue}return d.slice(-Math.max(0,a))}function v(a,b=m()){t(a,{filePath:b,retention:200,busyMessage:"the monitor journal is busy"})}function w(a,b=m()){return u(a,{filePath:b,sanitize:s})}let x=500,y=["quiet","wake","proactive","no-seat","skipped","error","refused","revoked","landed","dropped","uncertain","retired"];function z(){return process.env.LLV_SEAT_TICK_AUDIT_FILE?.trim()||(0,j.BQ)(i().join("seat-tick","runs.ndjson"))}function A(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=q(a.project,200)??"",c=y.find(b=>b===a.verdict);if(1!==a.schemaVersion||!c||!b&&"refused"!==c)return null;let d=a.delivery??null,e=d?q(d.clientMessageId,200):null,f=d?q(d.outcome,60):null;return{schemaVersion:1,at:q(a.at,40)??"",project:b,seatEpoch:"number"==typeof a.seatEpoch&&Number.isSafeInteger(a.seatEpoch)?a.seatEpoch:null,verdict:c,reasons:(Array.isArray(a.reasons)?a.reasons:[]).filter(a=>l.MQ.includes(a)),items:r(a.items),deferred:r(a.deferred),eventsThrough:r(a.eventsThrough),delivery:e&&f?{clientMessageId:e,outcome:f}:null,detail:q(a.detail,800)}}function B(a,b=z()){t(a,{filePath:b,retention:x,busyMessage:"the seat tick journal is busy"})}function C(a,b=z()){return u(a,{filePath:b,sanitize:A})}},45811:(a,b,c)=>{c.d(b,{Qw:()=>q,g2:()=>r,yY:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(13117),i=c(5343),j=c(85745),k=c(71715);let l="seat-tick-v3",m=new Map,n=a=>{let b=g().statSync(a);return`${b.dev}:${b.ino}`},o=a=>e().createHash("sha256").update(JSON.stringify(a)).digest("hex"),p=(a,b,c="")=>`${a}/${encodeURIComponent(b)}/${encodeURIComponent(c)}`,q=8,r=4;function s(a){if(!a||"object"!=typeof a)return null;let b=a=>"string"==typeof a&&a.length>0,c=a=>Number.isSafeInteger(a)&&Number(a)>=0,d=a=>null===a||"string"==typeof a,e=a=>a&&b(a.conversationId)&&"string"==typeof a.title&&["running","terminal","unknown"].includes(a.status)&&(null===a.outcome||["finished","failed"].includes(a.outcome));if(1!==a.schemaVersion||!b(a.key)||"string"!=typeof a.project||"string"!=typeof a.kind||!a.key.startsWith(p(a.kind,a.project)))return null;switch(a.kind){case"project":{let e=a.state;if(!c(a.revision)||!c(a.sequence)||!["ready","pending","unknown"].includes(a.migration)||!e||"object"!=typeof e||!d(a.gap)||null!==e.seatEpoch&&!c(e.seatEpoch))return null;for(let a of["lastCheckAt","lastWakeAt","quietSince","idleSince","lastProposalAt"]){let b=e[a];if(null!==b&&("string"!=typeof b||!Number.isFinite(Date.parse(b))))return null}if(null!==e.eventsThrough&&!c(e.eventsThrough)||!Array.isArray(e.harvestedChildren)||0!==e.harvestedChildren.length||!Array.isArray(e.lastWakeReasons)||!Array.isArray(e.stalledSeen)||!e.wakesWithoutChange||"object"!=typeof e.wakesWithoutChange||void 0!==e.childrenShown&&(!Array.isArray(e.childrenShown)||!e.childrenShown.every(b))||void 0!==e.announcedLanes&&(!Array.isArray(e.announcedLanes)||!e.announcedLanes.every(b)))return null;let f=a=>!!a&&!!b(a.clientMessageId)&&!!b(a.conversationId)&&!!c(a.seatEpoch)&&!!d(a.operationId)&&!!a.commit&&"boolean"==typeof a.commit.proposal&&!!b(a.commit.fingerprint)&&!!c(a.commit.eventsThrough)&&!!Array.isArray(a.commit.reasons)&&!!Array.isArray(a.commit.children)&&!!a.commit.children.every(b)&&(void 0===a.commit.shownChildren||!!Array.isArray(a.commit.shownChildren)&&!!a.commit.shownChildren.every(b))&&(void 0===a.commit.announcedLanes||!!Array.isArray(a.commit.announcedLanes)&&!!a.commit.announcedLanes.every(b))&&(void 0===a.preparedAt||!!b(a.preparedAt))&&(void 0===a.dispatch||!!a.dispatch&&b(a.dispatch.token)&&["active","refused","returned"].includes(a.dispatch.state)),g=e.outstandingWake;if(null!==g&&!f(g)||void 0!==a.ownerScan&&(!a.ownerScan||!b(a.ownerScan.identity)||"boolean"!=typeof a.ownerScan.gap))return null;let h=e.retiredWakes;if(void 0===h)return{...a,state:{...e,retiredWakes:[]}};if(!Array.isArray(h))return null;let i=[];for(let a of h){if(!a||"object"!=typeof a||!f(a.wake)||!b(a.retiredAt))return null;let d=a.reason??"seat-superseded";if("seat-superseded"!==d&&"unresolved-age"!==d)return null;let e=a.supersededBy??null;if("seat-superseded"===d&&(!e||!b(e.conversationId)||!c(e.seatEpoch))||"unresolved-age"===d&&null!==e)return null;i.push({...a,supersededBy:e,reason:d})}return{...a,state:{...e,retiredWakes:i}}}case"owner":{if(!b(a.conversationId)||!c(a.epoch))return null;if("string"==typeof a.after&&void 0===a.pollKey)return{...a,after:null,pollKey:""};let d=a=>null===a||!!a&&"object"==typeof a&&Number.isSafeInteger(a.order)&&b(a.key);return"string"==typeof a.pollKey&&d(a.after)&&(void 0===a.bootstrap||a.bootstrap&&d(a.bootstrap.after))?a:null}case"child":return b(a.identity)&&b(a.rowKey)&&b(a.owner)&&b(a.launchId)&&e(a.input)&&c(a.generationIndex)&&d(a.runningKey)&&(void 0===a.pollKey||d(a.pollKey))&&(void 0===a.harvestedEpoch||c(a.harvestedEpoch))?{...a,pollKey:a.pollKey??null}:null;case"source":return b(a.identity)&&b(a.child)&&b(a.engine)&&b(a.generation)&&a.cursor&&c(a.cursor.offset)&&c(a.cursor.seq)&&c(a.cursor.settledThrough)&&c(a.cursor.initialSize)&&d(a.cursor.identity)&&d(a.cursor.activeTurn)&&d(a.cursor.gap)&&"boolean"==typeof a.cursor.atEnd?a:null;case"outcome":return Array.isArray(a.tuple)&&[2,3].includes(a.tuple.length)&&a.tuple.every(b)&&a.identity===o(a.tuple)&&a.key===p("outcome",a.project,a.identity)&&e(a.input)&&a.input.outcomeId===a.identity&&"terminal"===a.input.status&&["owed","acknowledged"].includes(a.status)&&b(a.child)&&b(a.readyKey)?a:null;case"poll":case"ready":case"owner-poll":case"running":return b(a.target)?a:null;case"legacy":return b(a.conversationId)&&"boolean"==typeof a.reconciled?a:null;default:return null}}function t(a,b){let c;try{c=g().openSync(a,g().constants.O_RDONLY|g().constants.O_NOFOLLOW);let d=g().fstatSync(c);if(!d.isFile())return{kind:"gap",gap:"not-a-file"};if(d.size>b)return{kind:"gap",gap:"oversized"};let e=Buffer.allocUnsafe(d.size),f=0;for(;f<d.size;){let a=g().readSync(c,e,f,d.size-f,f);if(!a)break;f+=a}try{return{kind:"parsed",value:JSON.parse(e.subarray(0,f).toString("utf8"))}}catch{return{kind:"gap",gap:"malformed"}}}catch(a){return"ENOENT"===a.code?{kind:"absent"}:{kind:"gap",gap:"unreadable"}}finally{void 0!==c&&g().closeSync(c)}}class u{constructor(a,b){this.filename=a,this.project=b;const c=m.get(a);if(c){if(n(a)!==c.identity)throw Error("seat accounting database was replaced");this.collection=c.collection;return}(0,h.t0)(a,[{collection:l,schemaVersion:1,migrationId:"monitor-v3",key:a=>a.key,loadRecords:()=>[]}]),this.collection=new h.UY(a,{collection:l,schemaVersion:1,busyMessage:"seat outcome accounting is busy",key:a=>a.key,decode:s,clone:structuredClone,strictDecode:!0}),m.set(a,{identity:n(a),collection:this.collection})}base(a,b=""){return{key:p(a,this.project,b),project:this.project,schemaVersion:1}}get(a){return this.collection.get(a)}row(){let a=this.get(p("project",this.project));if(a&&"project"!==a.kind)throw Error("invalid project accounting row");return a}page(a,b){let c=p(a,this.project);return this.collection.keyRange(c,`${c}~`,b)}pollPage(a){let b=this.collection.keyRange(`${p("poll",this.project)}0`,`${p("poll",this.project)}~`,8),c=this.page("poll",a),d=new Set(b.map(a=>a.key));return[...b,...c.filter(a=>!d.has(a.key))].slice(0,a)}ticket(a,b,c,d,e="tail"){if(!Number.isSafeInteger(++b.sequence))throw Error("accounting sequence exhausted");let f={...this.base(c,`${"head"===e?"!":""}${String(b.sequence).padStart(16,"0")}`),kind:c,target:d};return a.put(f),f.key}atHead(a,b){return a.startsWith(p(b,this.project,"!"))}trackRunning(a,b,c){"running"===c.input.status?c.runningKey||(c.runningKey=this.ticket(a,b,"running",c.key)):c.runningKey&&(a.delete(c.runningKey),c.runningKey=null)}mutate(a){return this.collection.boundedPatch(4096,b=>{let c=b.get(p("project",this.project));if(!c||"project"!==c.kind)throw Error("accounting migration has not completed");let d=a(b,c);return c.revision++,b.put(c),d})}initialize(a,b){this.collection.boundedPatch(4096,c=>{if(!c.get(p("project",this.project))){for(let b of a.harvestedChildren)c.put({...this.base("legacy",b),kind:"legacy",conversationId:b,reconciled:!1});c.put({...this.base("project"),kind:"project",revision:0,sequence:0,state:{...a,harvestedChildren:[]},migration:b?"unknown":"ready",gap:b})}})}migrateLegacy(a,b){if(this.row()?.migration==="ready")return;this.row()||this.collection.boundedPatch(2,a=>{a.get(p("project",this.project))||a.put({...this.base("project"),kind:"project",revision:0,sequence:0,state:(0,j.v0)(),migration:"pending",gap:null})});let c=this.row(),d=t(a,4194304),e=null,f=(0,j.v0)(),g=[];if("gap"===d.kind)e="malformed"===d.gap?"legacy-json-malformed":"oversized"===d.gap?"legacy-state-oversized":"legacy-state-unreadable";else if("parsed"===d.kind){let a=d.value,c=a&&"object"==typeof a&&!Array.isArray(a)?a.projects:void 0;if(!c||"object"!=typeof c||Array.isArray(c))e="legacy-projects-unreadable";else{let d="number"==typeof a.version?a.version:null,h=c[this.project];if(void 0!==h){let a=h&&"object"==typeof h&&!Array.isArray(h)?h:{};f=b(a,d);let c=a.harvestedChildren;if(void 0!==c)if(Array.isArray(c))for(let a of c){if("string"!=typeof a||!a||a.length>200){e="legacy-acknowledgments-unreadable";break}g.push(a)}else e="legacy-acknowledgments-unreadable";Object.hasOwn(a,"outstandingWake")&&null!==a.outstandingWake&&!f.outstandingWake&&(e="legacy-outstanding-unreadable")}}}let h=e?[]:[...new Set(g)];for(let a=0;a<h.length;a+=1e3){let b=h.slice(a,a+1e3);this.collection.boundedPatch(1002,a=>{let d=a.get(c.key);if(d&&"project"===d.kind&&d.revision===c.revision)for(let c of b)a.put({...this.base("legacy",c),kind:"legacy",conversationId:c,reconciled:!1})})}this.collection.boundedPatch(2,a=>{let b=a.get(c.key);if(!b||"project"!==b.kind||b.revision!==c.revision)return;let d=e?"unknown":"ready";b.migration===d&&b.gap===e&&e||a.put({...b,revision:b.revision+1,state:e?b.state:{...f,harvestedChildren:[]},migration:d,gap:e})})}readState(){let a=this.row();if(!a)throw Error("missing project accounting");return{...a.state,accounting:{filename:this.filename,revision:a.revision,gap:"ready"===a.migration?a.gap:a.gap??"legacy-migration-pending"}}}writeState(a){this.mutate((b,c)=>{if(a.accounting?.revision!==c.revision)throw Error("stale seat tick state");c.state={...a,accounting:void 0,harvestedChildren:[]}})}owner(a,b){let c=p("owner",this.project,String(b)),d=this.get(c);if(d?.kind==="owner"&&d.conversationId===a&&d.pollKey)return d;this.mutate((d,e)=>{let f=d.get(c);if(f){if("owner"!==f.kind||f.conversationId!==a)throw Error("contradictory seat ownership");f.pollKey||d.put({...f,pollKey:this.ticket(d,e,"owner-poll",c)});return}let g={...this.base("owner",String(b)),kind:"owner",conversationId:a,epoch:b,after:null,pollKey:""};g.pollKey=this.ticket(d,e,"owner-poll",c),d.put(g)});let e=this.get(c);if(!e||"owner"!==e.kind)throw Error("missing owner provenance");return e}discoverRevokedOwners(a,b){let c,d=this.row();try{let b=g().statSync(a);c=`${b.dev}:${b.ino}:${b.size}:${b.mtimeMs}`}catch(a){return"ENOENT"!==a.code}if(d.ownerScan?.identity===c)return d.ownerScan.gap;let e=t(a,0x1000000);if("absent"===e.kind)return!1;let f="gap"===e.kind,h=[];if("parsed"===e.kind){let a=e.value,c=a&&"object"==typeof a&&!Array.isArray(a)&&1===a.schemaVersion&&Array.isArray(a.revocations)?a.revocations:null;if(c)for(let a of c){let c=a??{};"string"==typeof c.project&&b(c.project)&&"string"==typeof c.conversationId&&c.conversationId.startsWith("conversation_")&&Number.isSafeInteger(c.seatEpoch)&&Number(c.seatEpoch)>=1&&"string"==typeof c.revokedAt&&Number.isFinite(Date.parse(c.revokedAt))&&h.push({conversationId:c.conversationId,epoch:Number(c.seatEpoch)})}else f=!0}let i=h.slice(0,200),j=h.length>i.length,k=!1;return this.mutate((a,b)=>{if(b.revision!==d.revision){k=!0;return}for(let c of i){let d=p("owner",this.project,String(c.epoch)),e=a.get(d);if(e){if("owner"!==e.kind||e.conversationId!==c.conversationId)throw Error("contradictory predecessor ownership");continue}let f={...this.base("owner",String(c.epoch)),kind:"owner",conversationId:c.conversationId,epoch:c.epoch,after:null,pollKey:""};f.pollKey=this.ticket(a,b,"owner-poll",d),a.put(f)}j||(b.ownerScan={identity:c,gap:f})}),f||j||k}discovery(a,b){this.mutate((c,d)=>{if(c.get(a.pollKey)){for(let{child:a,position:e}of b){let b=c.get(a.key);if(b){if("child"!==b.kind)throw Error("invalid child provenance");b.pollKey||c.put({...b,pollKey:this.ticket(c,d,"poll",a.key,e)});continue}a.pollKey=this.ticket(c,d,"poll",a.key,e),this.trackRunning(c,d,a),c.put(a)}c.delete(a.pollKey),c.put({...a,pollKey:this.ticket(c,d,"owner-poll",a.key)})}})}adoptPoll(a,b){return a.pollKey?a:(this.mutate(c=>{let d=c.get(a.key),e=c.get(b);d?.kind!=="child"||d.pollKey||e?.kind!=="poll"||e.target!==a.key||c.put({...d,pollKey:b})}),this.get(a.key))}child(a,b,c,d){let e=o([b,a,c]);return{...this.base("child",e),kind:"child",identity:e,rowKey:a,owner:b,launchId:c,input:d,generationIndex:0,runningKey:null,pollKey:null}}source(a,b,c){let d=o([b,c]),e=this.get(p("source",this.project,d));if(e){if("source"!==e.kind||e.child!==a.key||e.engine!==b||e.generation!==c)throw Error("source identity collision");return e}return{...this.base("source",d),kind:"source",identity:d,child:a.key,engine:b,generation:c,cursor:(0,k.rD)()}}ingest(a,b,c,d=!1,e="tail"){this.mutate((f,g)=>{a.pollKey&&f.get(a.pollKey)&&(b?.cursor.identity&&b.legacyBoundary?.identity!==b.cursor.identity&&(b.legacyBoundary={identity:b.cursor.identity,bytes:b.cursor.initialSize}),(d?[[a.launchId,"pre-execution-failure"]]:c.map(a=>[b.engine,b.generation,a.turnId])).forEach((e,h)=>{let i=o(e),j=p("outcome",this.project,i),k=d||"completed"!==c[h].status?"failed":"finished",l=f.get(j);if(l){if("outcome"!==l.kind||JSON.stringify(l.tuple)!==JSON.stringify(e))throw Error("outcome identity collision");l.input.outcome!==k&&f.put({...l,gap:"conflicting-terminal"});return}let m=f.get(p("legacy",this.project,a.input.conversationId)),n={...a.input,status:"terminal",outcome:k,outcomeId:i},q=p("ready",this.project,String(g.sequence+1).padStart(16,"0"));this.ticket(f,g,"ready",j),f.put({...this.base("outcome",i),kind:"outcome",identity:i,child:a.key,tuple:e,input:n,status:"owed",landingKey:null,readyKey:q,gap:m&&(d||!b?.legacyBoundary||c[h].endOffset<=b.legacyBoundary.bytes)?"legacy-delivery-ambiguous":null})}),b&&f.put(b),this.trackRunning(f,g,a),f.delete(a.pollKey),a.pollKey=this.ticket(f,g,"poll",a.key,e),f.put(a))})}promote(a){!a.pollKey||this.atHead(a.pollKey,"poll")||this.mutate((b,c)=>{b.get(a.pollKey)&&(b.delete(a.pollKey),a.pollKey=this.ticket(b,c,"poll",a.key,"head"),b.put(a))})}rotateCold(a){a.length&&this.mutate((b,c)=>{for(let d of a){let a=b.get(d.key);a?.kind==="child"&&d.pollKey&&a.pollKey===d.pollKey&&b.get(d.pollKey)&&(b.delete(d.pollKey),b.put({...a,pollKey:this.ticket(b,c,"poll",d.key)}))}})}drop(a){this.mutate(b=>{b.get(a.key)&&b.delete(a.key)})}rotateRunning(a){0!==a.length&&this.mutate((b,c)=>{for(let d of a){if("running"!==d.kind||!b.get(d.key))continue;b.delete(d.key);let a=b.get(d.target);a&&"child"===a.kind&&a.runningKey===d.key&&(a.runningKey="running"===a.input.status?this.ticket(b,c,"running",a.key):null,b.put(a))}})}ready(a){return this.page("ready",a).flatMap(a=>{if("ready"!==a.kind)throw Error("invalid ready ticket");let b=this.get(a.target);if(!b||"outcome"!==b.kind)throw Error("missing outcome");return"owed"===b.status&&b.gap&&this.defer(b),"owed"!==b.status||b.gap?[]:[b]})}defer(a){this.mutate((b,c)=>{let d=b.get(a.key);d&&"outcome"===d.kind&&"owed"===d.status&&d.readyKey===a.readyKey&&(b.delete(d.readyKey),d.readyKey=p("ready",this.project,String(c.sequence+1).padStart(16,"0")),this.ticket(b,c,"ready",d.key),b.put(d))})}prepare(a,b){return this.collection.boundedPatch(4096,c=>{let d=c.get(p("project",this.project));if(!d||"project"!==d.kind)throw Error("accounting migration has not completed");if(d.revision!==a.accounting?.revision||d.state.outstandingWake||"ready"!==d.migration)return!1;for(let a of b.commit.children){let b=c.get(p("outcome",this.project,a));if(!b||"outcome"!==b.kind||"owed"!==b.status||b.gap)return!1}return d.state={...a,accounting:void 0,harvestedChildren:[],outstandingWake:b},d.revision++,c.put(d),!0})}beginDispatch(a){return this.mutate((b,c)=>{let d=c.state.outstandingWake;if(!d||d.clientMessageId!==a.clientMessageId||d.dispatch&&"refused"!==d.dispatch.state||d.dispatch?.token!==a.dispatch?.token)return null;let f=e().randomUUID();return c.state.outstandingWake={...d,dispatch:{token:f,state:"active"}},f})}returnedDispatch(a,b,c){this.mutate((d,e)=>{let f=e.state.outstandingWake;if(f?.clientMessageId===a&&f.dispatch?.token===b&&"active"===f.dispatch.state){e.state.outstandingWake={...f,dispatch:{token:b,state:c?"refused":"returned"}};return}let g=e.state.retiredWakes??[],h=g.findIndex(c=>c.wake.clientMessageId===a&&c.wake.dispatch?.token===b&&"active"===c.wake.dispatch.state);if(h<0)return;let i=[...g];i[h]={...i[h],wake:{...i[h].wake,dispatch:{token:b,state:c?"refused":"returned"}}},e.state={...e.state,retiredWakes:i}})}cancelUndispatched(a){return this.mutate((b,c)=>{let d=c.state.outstandingWake;return!!d&&d.clientMessageId===a.clientMessageId&&!d.dispatch&&(c.state.outstandingWake=null,!0)})}settleAbsent(a){return this.mutate((b,c)=>{let d=c.state.outstandingWake;return!!d&&d.clientMessageId===a.clientMessageId&&!d.operationId&&!!d.text&&d.dispatch?.state==="refused"&&d.dispatch.token===a.dispatch?.token&&(c.state.outstandingWake=null,!0)})}retire(a,b,c,d){return this.mutate((e,f)=>{let g=f.state.outstandingWake;if(!g||g.clientMessageId!==a.clientMessageId)return{retired:!1,evicted:null};let h=f.state.retiredWakes??[],i=null;if(h.length>=j.r8){let a=h.findIndex(a=>{if(a.wake.dispatch?.state==="active")return!1;let b=Date.parse(a.wake.preparedAt??a.retiredAt);return Number.isFinite(b)&&void 0!==d&&b<=d});if(a<0)return{retired:!1,evicted:null};i=h[a].wake.clientMessageId,h=[...h.slice(0,a),...h.slice(a+1)]}return f.state={...f.state,outstandingWake:null,retiredWakes:[...h,{wake:g,retiredAt:b,supersededBy:c.supersededBy,reason:c.reason}],releasedWake:{clientMessageId:g.clientMessageId,releasedAt:b}},{retired:!0,evicted:i}})}settleRetired(a){return this.mutate((b,c)=>{let d=c.state.retiredWakes??[],e=d.filter(b=>b.wake.clientMessageId!==a);return e.length!==d.length&&(c.state={...c.state,retiredWakes:e},!0)})}settle(a,b,c){return this.mutate((d,e)=>{let f=e.state.outstandingWake;if(!f||f.clientMessageId!==a||"unsent"===c&&f.dispatch?.state==="active")return!1;if("landed"===c)for(let b of f.commit.children){let c=d.get(p("outcome",this.project,b));if(!c){if(!b.startsWith("conversation_"))throw Error("missing frozen outcome");d.put({...this.base("legacy",b),kind:"legacy",conversationId:b,reconciled:!0});continue}if("outcome"!==c.kind)throw Error("invalid frozen outcome");d.put({...c,status:"acknowledged",landingKey:a}),d.delete(c.readyKey);let e=d.get(c.child);e?.kind==="child"&&(e.harvestedEpoch??-1)<f.seatEpoch&&d.put({...e,harvestedEpoch:f.seatEpoch})}let g="landed"===c?(0,i.WI)(e.state,f.commit,Date.parse(b.lastWakeAt)):e.state;return e.state={...g,accounting:void 0,harvestedChildren:[],outstandingWake:null,releasedWake:"landed"===c?null:b.releasedWake??null},!0})}}},51529:(a,b,c)=>{c.d(b,{L0:()=>v,S9:()=>r,U2:()=>u,Vw:()=>x,w$:()=>w});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(45811),i=c(91724),j=c(85745);function k(){return process.env.LLV_SEAT_TICK_STATE_FILE?.trim()||(0,i.BQ)("seat-tick.json")}function l(a){return"string"==typeof a&&Number.isFinite(Date.parse(a))?a:null}function m(a){return(Array.isArray(a)?a:[]).filter(a=>"string"==typeof a&&a.length>0&&a.length<=200)}function n(a){var b;if(!a||"object"!=typeof a||Array.isArray(a))return null;let c="string"==typeof a.clientMessageId?a.clientMessageId:"",d="string"==typeof a.conversationId?a.conversationId:"",e=a.seatEpoch,f=!(b=a.commit)||"object"!=typeof b||Array.isArray(b)?null:"string"==typeof b.fingerprint&&b.fingerprint&&"number"==typeof b.eventsThrough&&Number.isInteger(b.eventsThrough)&&!(b.eventsThrough<0)?{proposal:!0===b.proposal,reasons:(Array.isArray(b.reasons)?b.reasons:[]).filter(a=>j.MQ.includes(a)),fingerprint:b.fingerprint.slice(0,200),eventsThrough:b.eventsThrough,children:m(b.children),shownChildren:m(b.shownChildren),announcedLanes:m(b.announcedLanes)}:null;return c&&d&&f&&"number"==typeof e&&Number.isSafeInteger(e)?{clientMessageId:c,conversationId:d,seatEpoch:e,operationId:"string"==typeof a.operationId&&a.operationId?a.operationId:null,commit:f,..."string"==typeof a.text?{text:a.text}:{},...l(a.preparedAt)?{preparedAt:a.preparedAt}:{}}:null}let o=["timed-out","command-failed","malformed-output","lanes-unreadable"];function p(a,b){var c;let d,e=(0,j.v0)();if(!a||"object"!=typeof a||Array.isArray(a))return e;let f={},g=a.wakesWithoutChange??{};for(let a of j.MQ){let b=g[a];"number"==typeof b&&Number.isInteger(b)&&b>=0&&(f[a]=b)}return{seatEpoch:"number"==typeof a.seatEpoch&&Number.isSafeInteger(a.seatEpoch)?a.seatEpoch:null,lastCheckAt:l(a.lastCheckAt),lastWakeAt:l(a.lastWakeAt),lastWakeReasons:(Array.isArray(a.lastWakeReasons)?a.lastWakeReasons:[]).filter(a=>j.MQ.includes(a)),wakesWithoutChange:f,quietSince:l(a.quietSince),idleSince:l(a.idleSince),lastProposalAt:l(a.lastProposalAt),stalledSeen:(Array.isArray(a.stalledSeen)?a.stalledSeen:[]).filter(a=>"string"==typeof a&&a.length>0&&a.length<=100).slice(0,200),lastWakeFingerprint:"string"==typeof a.lastWakeFingerprint?a.lastWakeFingerprint.slice(0,200):null,eventsThrough:"number"!=typeof(d=a.eventsThrough)||!Number.isInteger(d)||d<0||b&&0===d&&!l(a.lastWakeAt)?null:d,outstandingWake:n(a.outstandingWake),retiredWakes:(Array.isArray(c=a.retiredWakes)?c:[]).flatMap(a=>{if(!a||"object"!=typeof a||Array.isArray(a))return[];let b=n(a.wake),c=l(a.retiredAt);if(!b||!c)return[];let d=void 0===a.reason?"seat-superseded":a.reason;if("seat-superseded"!==d&&"unresolved-age"!==d)return[];if("unresolved-age"===d)return a.supersededBy?[]:[{wake:b,retiredAt:c,supersededBy:null,reason:d}];let e=a.supersededBy;if(!e||"object"!=typeof e)return[];let f="string"==typeof e.conversationId?e.conversationId:"",g=e.seatEpoch;return f&&"number"==typeof g&&Number.isSafeInteger(g)?[{wake:b,retiredAt:c,supersededBy:{conversationId:f,seatEpoch:g},reason:d}]:[]}).slice(0,j.r8),releasedWake:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b="string"==typeof a.clientMessageId&&a.clientMessageId.length>0&&a.clientMessageId.length<=1e3?a.clientMessageId:null,c=l(a.releasedAt);return b&&c?{clientMessageId:b,releasedAt:c}:null}(a.releasedWake),pullRequestGap:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=o.find(b=>b===a.gap),c=l(a.since),d=l(a.lastAttemptAt),e=a.attempts;return b&&c&&d&&"number"==typeof e&&Number.isInteger(e)&&!(e<1)?{gap:b,since:c,lastAttemptAt:d,attempts:e,reported:!0===a.reported}:null}(a.pullRequestGap),childrenGap:null,harvestedChildren:m(a.harvestedChildren),childrenShown:m(a.childrenShown).slice(-j.kZ),announcedLanes:m(a.announcedLanes).slice(-j.GN)}}function q(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));if(!b||"object"!=typeof b||Array.isArray(b))return{version:2,projects:{}};let c=!("number"==typeof b.version&&b.version>=2),d=b.projects??{};return{version:2,projects:Object.fromEntries(Object.entries(d).map(([a,b])=>[a,p(b,c)]))}}catch{return{version:2,projects:{}}}}function r(a,b){return a.seatEpoch===b?a:{...(0,j.v0)(),seatEpoch:b,eventsThrough:a.eventsThrough,lastWakeAt:a.lastWakeAt,lastProposalAt:a.lastProposalAt,outstandingWake:a.outstandingWake,retiredWakes:a.retiredWakes??[],releasedWake:a.releasedWake??null,pullRequestGap:a.pullRequestGap,childrenGap:a.childrenGap,harvestedChildren:a.harvestedChildren,accounting:a.accounting}}function s(a){return a===k()?g().join(g().dirname(a),"state.sqlite"):`${a}.sqlite`}function t(a,b){let c=new h.yY(s(b),a);return c.migrateLegacy(b,(a,b)=>p(a,2!==b)),c}function u(a,b=k()){return t(a,b).readState()}function v(a,b=k()){let c=new h.yY(s(b),a);return c.row()?c.readState():q(b).projects[a]??(0,j.v0)()}function w(a=k()){for(let b of Object.keys(q(a).projects))t(b,a);let b=s(a);return Object.fromEntries(new h.yY(b,"").collection.snapshot().flatMap(a=>"project"===a.kind?[[a.project,{...a.state,accounting:{filename:b,revision:a.revision,gap:a.gap}}]]:[]))}function x(a,b,c=k()){let d=t(a,c);d.writeState(b.accounting?b:{...b,accounting:d.readState().accounting})}},71715:(a,b,c)=>{c.d(b,{Hw:()=>g,IV:()=>k,rD:()=>f});var d=c(73024),e=c.n(d);let f=()=>({offset:0,identity:null,seq:0,activeTurn:null,settledThrough:0,atEnd:!1,initialSize:0,gap:null}),g=256,h=Buffer.from('"turn-'),i=new Set(["completed","interrupted","error"]);function j(a){let b;try{b=JSON.parse(a.toString("utf8"))}catch{return null}if(!b||"object"!=typeof b||Array.isArray(b))return null;let c=b;return"string"!=typeof c.kind||!Number.isSafeInteger(c.seq)||c.seq<=0?null:{kind:c.kind,seq:c.seq,turnId:c.turnId,status:c.status}}function k(a,b,c,d=g){let l;if(!Number.isSafeInteger(c)||c<1||c>0x4000000)throw Error("invalid ledger budget");if(!Number.isSafeInteger(d)||d<1||d>g)throw Error("invalid ledger outcome budget");let m={...b},n=[],o=0,p=0;try{l=e().openSync(a,e().constants.O_RDONLY|e().constants.O_NOFOLLOW);let g=e().fstatSync(l);if(!g.isFile())throw Error("ledger is not a regular file");let k=`${g.dev}:${g.ino}`;(m.identity!==k||g.size<m.offset)&&(m={...f(),identity:k,initialSize:g.size,gap:b.identity?"ledger-replaced":b.gap}),"ledger-unreadable"===m.gap&&(m.gap=null);let q=Buffer.allocUnsafe(Math.min(262144,Math.max(c,1))),r=[],s=0,t=!1,u=m.offset,v=!1;for(;!v&&u<g.size&&(!(o>=c)||!(p>0)&&(0!==s||t));){let a=e().readSync(l,q,0,q.length,u);if(!a)break;o+=a,u+=a;let b=0;for(;b<a;){let c=q.indexOf(10,b);if(c<0){let c=q.subarray(b,a);t||((s+=c.length)>0x1000000?(t=!0,r=[],s=0):r.push(Buffer.from(c)));break}let e=u-a+c+1;if(t)m.gap="malformed-record",m.resync=!0,t=!1;else{let a=q.subarray(b,c),d=r.length?Buffer.concat([...r,a]):a;d.length>0x1000000?m.gap="malformed-record":function(a,b,c,d){let e;if(b.indexOf(h)>=0)e=j(b);else{let a,c,d=(a=b.subarray(Math.max(0,b.length-48)).toString("latin1").trimEnd(),(c=/"seq":(\d{1,15})\}$/.exec(a))?Number(c[1]):null);e=null!==d?{kind:"",seq:d}:j(b)}if(!e){a.gap="malformed-record",a.resync=!0;return}a.resync?delete a.resync:e.seq!==a.seq+1&&(a.gap="sequence-gap"),a.seq=e.seq,"turn-started"===e.kind?"string"==typeof e.turnId&&e.turnId?a.activeTurn=e.turnId:a.gap="invalid-turn-start":"turn-ended"===e.kind&&("string"==typeof e.turnId&&e.turnId.length>0&&i.has(String(e.status))?((null===a.activeTurn||a.activeTurn===e.turnId)&&(a.activeTurn=null,a.settledThrough=e.seq),d.push({turnId:e.turnId,status:e.status,seq:e.seq,endOffset:c})):a.gap="invalid-terminal")}(m,d,e,n)}if(r=[],s=0,m.offset=e,p++,b=c+1,n.length>=d){v=!0;break}}}m.atEnd=m.offset===g.size}catch(b){let a="ENOENT"===b.code;m.gap=a?m.identity?"ledger-missing":m.gap:"ledger-unreadable",m.atEnd=!1}finally{void 0!==l&&e().closeSync(l)}return{cursor:m,outcomes:n,bytes:o,records:p}}},76775:(a,b,c)=>{c.d(b,{GP:()=>g,Gx:()=>k,Lz:()=>o,M$:()=>i,Qw:()=>f,V2:()=>h,Vi:()=>p,X7:()=>l,_I:()=>m,aS:()=>e,jK:()=>j,xz:()=>n});var d=c(26347);let e="monitor-ref:",f="orchestrator-unresolved",g=a=>`monitor-741:${a}`;function h(a){let b=a.match(/^monitor-ref:\s*([A-Za-z0-9_-]{4,64})\s*$/m);return b?b[1]:null}function i(a,b){return(0,d.t)(`Conversation monitor cannot resolve a live orchestrator
4
4
 
@@ -19,4 +19,4 @@ Wakes continue on every reason that does not depend on it, and each one names th
19
19
  The tick keeps asking, at this project's wake interval, and reports nothing further until the source answers — this card is raised once per outage.
20
20
  Project ${a}. Observed ${f.slice(0,16).replace("T"," ")} UTC.
21
21
 
22
- ${e} ${c}`,5e3)}function p(a){let b=a.setBy?.project&&a.setBy.project!==a.project,c=a.setBy?`Set by ${"manager"===a.setBy.kind?"the designated seat":"gateway"===a.setBy.kind?"the operator's own session":"agent"===a.setBy.kind?"an agent session":"a caller nothing identified"}${a.setBy.conversationId?` (${a.setBy.conversationId})`:""}${b?`, whose own project is ${a.setBy.project}`:""}.`:"Set by nobody the record names.";return(0,d.t)(["This project's seat tick is not on its default settings\n",`${a.detail}.`,`Reason given: ${a.reason??"none recorded"}.`,a.until?`It returns to the default at ${a.until.slice(0,16).replace("T"," ")} UTC.`:"It stands until someone changes it back.",c,`Project ${a.project}. Recorded ${a.updatedAt?`${a.updatedAt.slice(0,16).replace("T"," ")} UTC`:"at an unrecorded time"}.`,"Change it with the seat tick settings tool; this card clears itself once the project is back on the defaults.\n",`${e} ${k}`].join("\n"),5e3)}},85745:(a,b,c)=>{c.d(b,{GN:()=>h,M:()=>e,MQ:()=>d,kZ:()=>g,r8:()=>f,v0:()=>i});let d=["lane-event","unmerged-pr","stalled","unstarted-task","interval","child-terminal","own-lane-settled"],e=["registry-unreadable","children-unindexed","migration-blocked","migration-pending","discovery-incomplete","ledger-gap","child-departed","child-unplaced","ledger-pending"],f=20,g=64,h=64;function i(){return{seatEpoch:null,lastCheckAt:null,lastWakeAt:null,lastWakeReasons:[],wakesWithoutChange:{},quietSince:null,idleSince:null,lastProposalAt:null,stalledSeen:[],lastWakeFingerprint:null,eventsThrough:null,outstandingWake:null,retiredWakes:[],releasedWake:null,pullRequestGap:null,childrenGap:null,harvestedChildren:[],childrenShown:[],announcedLanes:[]}}},86631:(a,b,c)=>{c.d(b,{Es:()=>t,Fh:()=>r,X6:()=>s,nj:()=>q,q0:()=>o,qx:()=>p,tx:()=>k});var d=c(73024),e=c.n(d),f=c(91724),g=c(65154),h=c(2033),i=c(26347);function j(){return process.env.LLV_SEAT_TICK_SETTINGS_FILE?.trim()||(0,f.BQ)("seat-tick-settings.json")}function k(a){return{project:a,enabled:!0,wakeIntervalMinutes:null,reason:null,monitorPrompt:null,until:null,updatedAt:null,setBy:null}}function l(a){return a.enabled&&null===a.wakeIntervalMinutes}function m(a){return"string"==typeof a&&Number.isFinite(Date.parse(a))?a:null}function n(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));if(!b||"object"!=typeof b||Array.isArray(b))return{version:1,projects:{}};let c=b.projects??{};return{version:1,projects:Object.fromEntries(Object.entries(c).map(([a,b])=>{var c,d,e;let f;return[a,(c=a,d=b,f=k(c),!d||"object"!=typeof d||Array.isArray(d)?f:{project:c,enabled:!1!==d.enabled,wakeIntervalMinutes:"number"!=typeof(e=d.wakeIntervalMinutes)||!Number.isFinite(e)||e<=0?null:Math.min(525600,e),reason:"string"==typeof d.reason&&d.reason.trim()?d.reason.slice(0,500):null,monitorPrompt:"string"==typeof d.monitorPrompt&&d.monitorPrompt.trim()?d.monitorPrompt.slice(0,16e3):null,until:m(d.until),updatedAt:m(d.updatedAt),setBy:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;return"manager"!==b&&"agent"!==b&&"gateway"!==b&&"unidentified"!==b?null:{kind:b,conversationId:"string"==typeof a.conversationId&&a.conversationId?a.conversationId.slice(0,200):null,project:"string"==typeof a.project&&a.project?a.project.slice(0,200):null,seatEpoch:"number"==typeof a.seatEpoch&&Number.isSafeInteger(a.seatEpoch)?a.seatEpoch:null}}(d.setBy)})]}))}}catch{return{version:1,projects:{}}}}function o(a,b=j()){return n(b).projects[a]??k(a)}function p(a=j()){return n(a).projects}function q(a,b,c=j()){(0,h.Ol)(c,"seat tick settings are busy",()=>{let d=n(c);(0,g.f)(c,{version:1,projects:{...d.projects,[a]:{...b,project:a}}})})}function r(a,b,c){let d=a.until?Date.parse(a.until):NaN,e=Number.isFinite(d)&&d<=b&&!l(a),f=null!==a.updatedAt;return e||l(a)?{enabled:!0,wakeIntervalMs:c,reason:null,monitorPrompt:a.monitorPrompt,until:null,updatedAt:a.updatedAt,isDefault:!0,configured:f,lapsed:e,setBy:e?a.setBy:null}:{enabled:a.enabled,wakeIntervalMs:null===a.wakeIntervalMinutes?c:Math.round(6e4*a.wakeIntervalMinutes),reason:a.reason,monitorPrompt:a.monitorPrompt,until:a.until,updatedAt:a.updatedAt,isDefault:!1,configured:f,lapsed:!1,setBy:a.setBy}}function s(a,b){let c=k(a);return b.monitorPrompt?{...c,monitorPrompt:b.monitorPrompt,updatedAt:b.updatedAt,setBy:b.setBy}:c}function t(a,b,c){if(0===["enabled","wakeIntervalMinutes","reason","monitorPrompt","until"].filter(a=>Object.hasOwn(b,a)).length)return{ok:!1,error:"a tick settings change needs at least one field"};let d=Object.hasOwn(b,"enabled")?b.enabled:a.enabled;if("boolean"!=typeof d)return{ok:!1,error:"enabled must be a boolean"};let e=a.wakeIntervalMinutes;if(Object.hasOwn(b,"wakeIntervalMinutes")){let a=b.wakeIntervalMinutes;if(null===a)e=null;else{if("number"!=typeof a||!Number.isFinite(a)||a<=0)return{ok:!1,error:"wakeIntervalMinutes must be a positive number of minutes, or null for the default"};if(a>525600)return{ok:!1,error:"wakeIntervalMinutes must be at most 525600; disable the tick instead of setting a longer interval"};e=a}}let f=a.until;if(Object.hasOwn(b,"until")){let a=b.until;if(null===a)f=null;else{if("string"!=typeof a||!Number.isFinite(Date.parse(a)))return{ok:!1,error:"until must be an ISO instant, or null for a setting that stands until it is changed"};f=new Date(Date.parse(a)).toISOString()}}let g=a.reason;if(Object.hasOwn(b,"reason")){let a=b.reason;if(null===a)g=null;else{if("string"!=typeof a)return{ok:!1,error:"reason must be a string"};g=(0,i.t)(a,500)||null}}let h=a.monitorPrompt??null;if(Object.hasOwn(b,"monitorPrompt")){let a=b.monitorPrompt;if(null===a)h=null;else{if("string"!=typeof a)return{ok:!1,error:"monitorPrompt must be a string, or null to clear it"};let b=(0,i.l)(a).trim();if(a.length>16e3||b.length>16e3)return{ok:!1,error:`monitorPrompt is ${a.length} characters; the limit is 16000. Nothing was stored — shorten the note and send it again`};h=b||null}}let j={project:a.project,enabled:d,wakeIntervalMinutes:e,reason:g,monitorPrompt:h,until:f,updatedAt:c.at,setBy:c.actor};return l(j)||j.reason?l(j)?{ok:!0,settings:{...j,wakeIntervalMinutes:null,reason:null,until:null}}:{ok:!0,settings:j}:{ok:!1,error:"a reason is required when the tick is disabled or its wake interval is changed; a quiet tick with no recorded reason is indistinguishable from a broken one"}}}};
22
+ ${e} ${c}`,5e3)}function p(a){let b=a.setBy?.project&&a.setBy.project!==a.project,c=a.setBy?`Set by ${"manager"===a.setBy.kind?"the designated seat":"gateway"===a.setBy.kind?"the operator's own session":"agent"===a.setBy.kind?"an agent session":"a caller nothing identified"}${a.setBy.conversationId?` (${a.setBy.conversationId})`:""}${b?`, whose own project is ${a.setBy.project}`:""}.`:"Set by nobody the record names.";return(0,d.t)(["This project's seat tick is not on its default settings\n",`${a.detail}.`,`Reason given: ${a.reason??"none recorded"}.`,a.until?`It returns to the default at ${a.until.slice(0,16).replace("T"," ")} UTC.`:"It stands until someone changes it back.",c,`Project ${a.project}. Recorded ${a.updatedAt?`${a.updatedAt.slice(0,16).replace("T"," ")} UTC`:"at an unrecorded time"}.`,"Change it with the seat tick settings tool; this card clears itself once the project is back on the defaults.\n",`${e} ${k}`].join("\n"),5e3)}},85745:(a,b,c)=>{c.d(b,{GN:()=>h,M:()=>e,MQ:()=>d,kZ:()=>g,r8:()=>f,v0:()=>i});let d=["lane-event","unmerged-pr","stalled","unstarted-task","interval","child-terminal","own-lane-settled"],e=["registry-unreadable","children-unindexed","migration-blocked","migration-pending","discovery-incomplete","ledger-gap","child-departed","child-unplaced","ledger-pending"],f=20,g=64,h=64;function i(){return{seatEpoch:null,lastCheckAt:null,lastWakeAt:null,lastWakeReasons:[],wakesWithoutChange:{},quietSince:null,idleSince:null,lastProposalAt:null,stalledSeen:[],lastWakeFingerprint:null,eventsThrough:null,outstandingWake:null,retiredWakes:[],releasedWake:null,pullRequestGap:null,childrenGap:null,harvestedChildren:[],childrenShown:[],announcedLanes:[]}}},86631:(a,b,c)=>{c.d(b,{Es:()=>t,Fh:()=>r,X6:()=>s,nj:()=>q,q0:()=>o,qx:()=>p,tx:()=>k});var d=c(73024),e=c.n(d),f=c(91724),g=c(65154),h=c(2033),i=c(26347);function j(){return process.env.LLV_SEAT_TICK_SETTINGS_FILE?.trim()||(0,f.BQ)("seat-tick-settings.json")}function k(a){return{project:a,enabled:!0,wakeIntervalMinutes:null,reason:null,monitorPrompt:null,until:null,updatedAt:null,setBy:null}}function l(a){return a.enabled&&null===a.wakeIntervalMinutes}function m(a){return"string"==typeof a&&Number.isFinite(Date.parse(a))?a:null}function n(a){try{let b=JSON.parse(e().readFileSync(a,"utf8"));if(!b||"object"!=typeof b||Array.isArray(b))return{version:1,projects:{}};let c=b.projects??{};return{version:1,projects:Object.fromEntries(Object.entries(c).map(([a,b])=>{var c,d,e;let f;return[a,(c=a,d=b,f=k(c),!d||"object"!=typeof d||Array.isArray(d)?f:{project:c,enabled:!1!==d.enabled,wakeIntervalMinutes:"number"!=typeof(e=d.wakeIntervalMinutes)||!Number.isFinite(e)||e<=0?null:Math.min(525600,e),reason:"string"==typeof d.reason&&d.reason.trim()?d.reason.slice(0,500):null,monitorPrompt:"string"==typeof d.monitorPrompt&&d.monitorPrompt.trim()?d.monitorPrompt.slice(0,16e3):null,until:m(d.until),updatedAt:m(d.updatedAt),setBy:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;return"manager"!==b&&"agent"!==b&&"gateway"!==b&&"unidentified"!==b?null:{kind:b,conversationId:"string"==typeof a.conversationId&&a.conversationId?a.conversationId.slice(0,200):null,project:"string"==typeof a.project&&a.project?a.project.slice(0,200):null,seatEpoch:"number"==typeof a.seatEpoch&&Number.isSafeInteger(a.seatEpoch)?a.seatEpoch:null}}(d.setBy)})]}))}}catch{return{version:1,projects:{}}}}function o(a,b=j()){return n(b).projects[a]??k(a)}function p(a=j()){return n(a).projects}function q(a,b,c=j()){(0,h.Ol)(c,"seat tick settings are busy",()=>{let d=n(c);(0,g.fZ)(c,{version:1,projects:{...d.projects,[a]:{...b,project:a}}})})}function r(a,b,c){let d=a.until?Date.parse(a.until):NaN,e=Number.isFinite(d)&&d<=b&&!l(a),f=null!==a.updatedAt;return e||l(a)?{enabled:!0,wakeIntervalMs:c,reason:null,monitorPrompt:a.monitorPrompt,until:null,updatedAt:a.updatedAt,isDefault:!0,configured:f,lapsed:e,setBy:e?a.setBy:null}:{enabled:a.enabled,wakeIntervalMs:null===a.wakeIntervalMinutes?c:Math.round(6e4*a.wakeIntervalMinutes),reason:a.reason,monitorPrompt:a.monitorPrompt,until:a.until,updatedAt:a.updatedAt,isDefault:!1,configured:f,lapsed:!1,setBy:a.setBy}}function s(a,b){let c=k(a);return b.monitorPrompt?{...c,monitorPrompt:b.monitorPrompt,updatedAt:b.updatedAt,setBy:b.setBy}:c}function t(a,b,c){if(0===["enabled","wakeIntervalMinutes","reason","monitorPrompt","until"].filter(a=>Object.hasOwn(b,a)).length)return{ok:!1,error:"a tick settings change needs at least one field"};let d=Object.hasOwn(b,"enabled")?b.enabled:a.enabled;if("boolean"!=typeof d)return{ok:!1,error:"enabled must be a boolean"};let e=a.wakeIntervalMinutes;if(Object.hasOwn(b,"wakeIntervalMinutes")){let a=b.wakeIntervalMinutes;if(null===a)e=null;else{if("number"!=typeof a||!Number.isFinite(a)||a<=0)return{ok:!1,error:"wakeIntervalMinutes must be a positive number of minutes, or null for the default"};if(a>525600)return{ok:!1,error:"wakeIntervalMinutes must be at most 525600; disable the tick instead of setting a longer interval"};e=a}}let f=a.until;if(Object.hasOwn(b,"until")){let a=b.until;if(null===a)f=null;else{if("string"!=typeof a||!Number.isFinite(Date.parse(a)))return{ok:!1,error:"until must be an ISO instant, or null for a setting that stands until it is changed"};f=new Date(Date.parse(a)).toISOString()}}let g=a.reason;if(Object.hasOwn(b,"reason")){let a=b.reason;if(null===a)g=null;else{if("string"!=typeof a)return{ok:!1,error:"reason must be a string"};g=(0,i.t)(a,500)||null}}let h=a.monitorPrompt??null;if(Object.hasOwn(b,"monitorPrompt")){let a=b.monitorPrompt;if(null===a)h=null;else{if("string"!=typeof a)return{ok:!1,error:"monitorPrompt must be a string, or null to clear it"};let b=(0,i.l)(a).trim();if(a.length>16e3||b.length>16e3)return{ok:!1,error:`monitorPrompt is ${a.length} characters; the limit is 16000. Nothing was stored — shorten the note and send it again`};h=b||null}}let j={project:a.project,enabled:d,wakeIntervalMinutes:e,reason:g,monitorPrompt:h,until:f,updatedAt:c.at,setBy:c.actor};return l(j)||j.reason?l(j)?{ok:!0,settings:{...j,wakeIntervalMinutes:null,reason:null,until:null}}:{ok:!0,settings:j}:{ok:!1,error:"a reason is required when the tick is disabled or its wake interval is changed; a quiet tick with no recorded reason is indistinguishable from a broken one"}}}};
@@ -1,24 +1,23 @@
1
- "use strict";exports.id=2914,exports.ids=[2914],exports.modules={30533:(a,b,c)=>{c.r(b),c.d(b,{STRUCTURED_HOST_RETIREMENT_CLAUSES:()=>F,STRUCTURED_HOST_RETIREMENT_INTERVAL_MS:()=>A,reconcileStructuredHostRetirement:()=>$,runStructuredHostRetirementSweep:()=>Z,startStructuredHostRetirement:()=>aa,stopStructuredHostRetirement:()=>ab,structuredHostRetirementBatch:()=>B,structuredHostRetirementGraceMs:()=>N,structuredHostRetirementIdleMs:()=>M,structuredHostRetirementJournalRecord:()=>U,structuredHostRetirementVerdict:()=>L});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(10781),i=c(48892),j=c(91724),k=c(15408),l=c(63657),m=c(70547),n=c(9302),o=c(30096),p=c(78746),q=c(37037);function r(a){return[...a].sort((a,b)=>a.seq-b.seq)}function s(a,b){return[...new Set(a.filter(a=>a.conversationId===b).flatMap(a=>a.replayedDeliveryIds))]}class t{constructor(a,b=()=>new Date().toISOString()){this.store=a,this.clock=b}loadState(){return{rows:this.store.load(),history:this.store.loadHistory?.()??[],drainingGenerations:this.store.loadDrainingGenerations?.()??[]}}mutate(a){let b=b=>{let c=new Map(b.rows.map(a=>[a.operationId,a])),d=a(c,b);return b.rows.splice(0,b.rows.length,...c.values()),d};if(this.store.transaction)return this.store.transaction(b);let c=this.loadState(),d=b(c);return this.store.save(c.rows),this.store.saveHistory?.(c.history),this.store.saveDrainingGenerations?.(c.drainingGenerations),d}rows(){return this.store.load().map(a=>structuredClone(a))}history(){return(this.store.loadHistory?.()??[]).map(a=>structuredClone(a))}row(a){let b=this.loadState(),c=[...b.rows,...b.history].find(b=>b.operationId===a);return c?structuredClone(c):null}enqueue(a){let b=this.clock();this.mutate((c,d)=>{for(let e of a){if(c.has(e.operationId)||d.history.some(a=>a.operationId===e.operationId))continue;let a=[...c.values()].find(a=>a.conversationId===e.conversationId);if(a){if("pending"===a.status||"draining"===a.status)continue;c.delete(a.operationId),d.history.push(structuredClone(a))}c.set(e.operationId,{...e,pendingDeliveries:a?function(a,b){let c=new Set(a.replayedDeliveryIds),d=r(b).filter(a=>!c.has(a.deliveryId)),e=new Set(d.map(a=>a.deliveryId));return[...r(a.pendingDeliveries).filter(a=>!c.has(a.deliveryId)).filter(a=>!e.has(a.deliveryId)),...d].map((a,b)=>({...a,seq:b+1}))}(a,e.pendingDeliveries):r(e.pendingDeliveries),status:"pending",predecessorGeneration:null,successorGeneration:null,replayedDeliveryIds:s(d.history,e.conversationId),interruptionOutcome:null,lastError:null,enqueuedAt:b,updatedAt:b})}})}beginDrain(a){let b=this.clock();this.mutate((c,d)=>{for(let e of(d.drainingGenerations.includes(a)||d.drainingGenerations.push(a),c.values()))e.hostGeneration===a&&("pending"===e.status||"claimed"===e.status)&&(e.status="draining",e.updatedAt=b)})}isAdmittingNewHosts(a){return!this.loadState().drainingGenerations.includes(a)}admitMessage(a,b){return this.mutate(c=>{let d=c.get(a);return!!d&&"terminal"!==d.status&&(!!d.pendingDeliveries.some(a=>a.deliveryId===b.deliveryId)||(d.pendingDeliveries=r([...d.pendingDeliveries,b]),d.updatedAt=this.clock(),!0))})}refreshTurnState(a,b,c){return this.mutate(d=>{let e=d.get(a);return!!e&&e.hostGeneration===b&&("pending"===e.status||"draining"===e.status)&&("terminal"!==e.turnState||"terminal"===c)&&(e.turnState=c,e.updatedAt=this.clock(),!0)})}claim(a,b){return this.mutate(c=>{var d;let e=c.get(a);if(!e)return{ok:!1,row:null,replay:[],reason:"not-found"};let f=r(e.pendingDeliveries).filter(a=>!e.replayedDeliveryIds.includes(a.deliveryId));return e.successorGeneration===b.toGeneration&&("claimed"===e.status||"terminal"===e.status)?{ok:!0,row:structuredClone(e),replay:f}:e.hostGeneration!==b.fromGeneration?{ok:!1,row:structuredClone(e),replay:[],reason:"generation-fence"}:(e.predecessorGeneration=b.fromGeneration,e.successorGeneration=b.toGeneration,e.hostGeneration=b.toGeneration,e.status="terminal"===e.turnState?"terminal":"claimed",e.interruptionOutcome="terminal"===(d=e.turnState)?"completed":"busy"===d?"interrupted":null,e.updatedAt=this.clock(),{ok:!0,row:structuredClone(e),replay:f})})}acknowledgeReplay(a,b,c){return this.mutate(d=>{let e=d.get(a);if(!e||e.successorGeneration!==b||"claimed"!==e.status&&"terminal"!==e.status)return!1;let f=new Set(e.pendingDeliveries.map(a=>a.deliveryId));return!c.some(a=>!f.has(a))&&(e.replayedDeliveryIds=[...new Set([...e.replayedDeliveryIds,...c])],e.updatedAt=this.clock(),!0)})}failCandidate(a){let b=this.clock();this.mutate((c,d)=>{let e=new Set(d.drainingGenerations);for(let f of c.values()){if(f.successorGeneration!==a)continue;let c=f.predecessorGeneration;f.hostGeneration=c??f.hostGeneration,f.status=c&&e.has(c)?"draining":"pending",f.predecessorGeneration=null,f.successorGeneration=null,f.replayedDeliveryIds=s(d.history,f.conversationId),f.interruptionOutcome=null,f.updatedAt=b}})}markRetryableFailure(a,b){this.mutate(c=>{let d=c.get(a);d&&(d.status="failed",d.lastError=b,d.updatedAt=this.clock())})}retirable(a){for(let b of this.store.load())if(b.hostGeneration===a&&("pending"===b.status||"draining"===b.status))return!1;return!0}}class u{constructor(a){this.filename=a,e().mkdirSync(g().dirname(a),{recursive:!0,mode:448});const b=process.getBuiltinModule?.("bun:sqlite");if(!b)throw Error("SQLite handoff queue requires the Bun runtime");this.db=new b.Database(a,{create:!0,strict:!0}),this.db.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL;"),this.db.exec(`
2
- CREATE TABLE IF NOT EXISTS handoff_rows (
3
- operation_id TEXT PRIMARY KEY,
4
- conversation_id TEXT,
5
- row_order INTEGER NOT NULL,
6
- value_json TEXT NOT NULL
7
- );
8
- CREATE TABLE IF NOT EXISTS handoff_history (
9
- operation_id TEXT PRIMARY KEY,
10
- conversation_id TEXT NOT NULL,
11
- row_order INTEGER NOT NULL,
12
- value_json TEXT NOT NULL
13
- );
14
- CREATE TABLE IF NOT EXISTS handoff_draining_generations (
15
- generation TEXT PRIMARY KEY,
16
- row_order INTEGER NOT NULL
17
- );
18
- `),this.db.exec("BEGIN IMMEDIATE");try{this.db.query("PRAGMA table_info(handoff_rows)").all().some(a=>"conversation_id"===a.name)||this.db.exec("ALTER TABLE handoff_rows ADD COLUMN conversation_id TEXT"),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}this.migrateActiveRows(),this.db.exec(`
1
+ "use strict";exports.id=2914,exports.ids=[2914],exports.modules={30533:(a,b,c)=>{c.r(b),c.d(b,{STRUCTURED_HOST_RETIREMENT_CLAUSES:()=>H,STRUCTURED_HOST_RETIREMENT_INTERVAL_MS:()=>C,reconcileStructuredHostRetirement:()=>aa,runStructuredHostRetirementSweep:()=>_,startStructuredHostRetirement:()=>ac,stopStructuredHostRetirement:()=>ad,structuredHostRetirementBatch:()=>D,structuredHostRetirementGraceMs:()=>P,structuredHostRetirementIdleMs:()=>O,structuredHostRetirementJournalRecord:()=>W,structuredHostRetirementVerdict:()=>N});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(10781),i=c(48892),j=c(91724),k=c(65154),l=c(15408),m=c(63657),n=c(70547),o=c(9302),p=c(30096),q=c(78746),r=c(37037),s=c(25087);function t(a){return[...a].sort((a,b)=>a.seq-b.seq)}function u(a,b){return[...new Set(a.filter(a=>a.conversationId===b).flatMap(a=>a.replayedDeliveryIds))]}class v{constructor(a,b=()=>new Date().toISOString()){this.store=a,this.clock=b}loadState(){return{rows:this.store.load(),history:this.store.loadHistory?.()??[],drainingGenerations:this.store.loadDrainingGenerations?.()??[]}}mutate(a){let b=b=>{let c=new Map(b.rows.map(a=>[a.operationId,a])),d=a(c,b);return b.rows.splice(0,b.rows.length,...c.values()),d};if(this.store.transaction)return this.store.transaction(b);let c=this.loadState(),d=b(c);return this.store.save(c.rows),this.store.saveHistory?.(c.history),this.store.saveDrainingGenerations?.(c.drainingGenerations),d}rows(){return this.store.load().map(a=>structuredClone(a))}history(){return(this.store.loadHistory?.()??[]).map(a=>structuredClone(a))}row(a){let b=this.loadState(),c=[...b.rows,...b.history].find(b=>b.operationId===a);return c?structuredClone(c):null}enqueue(a){let b=this.clock();this.mutate((c,d)=>{for(let e of a){if(c.has(e.operationId)||d.history.some(a=>a.operationId===e.operationId))continue;let a=[...c.values()].find(a=>a.conversationId===e.conversationId);if(a){if("pending"===a.status||"draining"===a.status)continue;c.delete(a.operationId),d.history.push(structuredClone(a))}c.set(e.operationId,{...e,pendingDeliveries:a?function(a,b){let c=new Set(a.replayedDeliveryIds),d=t(b).filter(a=>!c.has(a.deliveryId)),e=new Set(d.map(a=>a.deliveryId));return[...t(a.pendingDeliveries).filter(a=>!c.has(a.deliveryId)).filter(a=>!e.has(a.deliveryId)),...d].map((a,b)=>({...a,seq:b+1}))}(a,e.pendingDeliveries):t(e.pendingDeliveries),status:"pending",predecessorGeneration:null,successorGeneration:null,replayedDeliveryIds:u(d.history,e.conversationId),interruptionOutcome:null,lastError:null,enqueuedAt:b,updatedAt:b})}})}beginDrain(a){let b=this.clock();this.mutate((c,d)=>{for(let e of(d.drainingGenerations.includes(a)||d.drainingGenerations.push(a),c.values()))e.hostGeneration===a&&("pending"===e.status||"claimed"===e.status)&&(e.status="draining",e.updatedAt=b)})}isAdmittingNewHosts(a){return!this.loadState().drainingGenerations.includes(a)}admitMessage(a,b){return this.mutate(c=>{let d=c.get(a);return!!d&&"terminal"!==d.status&&(!!d.pendingDeliveries.some(a=>a.deliveryId===b.deliveryId)||(d.pendingDeliveries=t([...d.pendingDeliveries,b]),d.updatedAt=this.clock(),!0))})}refreshTurnState(a,b,c){return this.mutate(d=>{let e=d.get(a);return!!e&&e.hostGeneration===b&&("pending"===e.status||"draining"===e.status)&&("terminal"!==e.turnState||"terminal"===c)&&(e.turnState=c,e.updatedAt=this.clock(),!0)})}claim(a,b){return this.mutate(c=>{var d;let e=c.get(a);if(!e)return{ok:!1,row:null,replay:[],reason:"not-found"};let f=t(e.pendingDeliveries).filter(a=>!e.replayedDeliveryIds.includes(a.deliveryId));return e.successorGeneration===b.toGeneration&&("claimed"===e.status||"terminal"===e.status)?{ok:!0,row:structuredClone(e),replay:f}:e.hostGeneration!==b.fromGeneration?{ok:!1,row:structuredClone(e),replay:[],reason:"generation-fence"}:(e.predecessorGeneration=b.fromGeneration,e.successorGeneration=b.toGeneration,e.hostGeneration=b.toGeneration,e.status="terminal"===e.turnState?"terminal":"claimed",e.interruptionOutcome="terminal"===(d=e.turnState)?"completed":"busy"===d?"interrupted":null,e.updatedAt=this.clock(),{ok:!0,row:structuredClone(e),replay:f})})}acknowledgeReplay(a,b,c){return this.mutate(d=>{let e=d.get(a);if(!e||e.successorGeneration!==b||"claimed"!==e.status&&"terminal"!==e.status)return!1;let f=new Set(e.pendingDeliveries.map(a=>a.deliveryId));return!c.some(a=>!f.has(a))&&(e.replayedDeliveryIds=[...new Set([...e.replayedDeliveryIds,...c])],e.updatedAt=this.clock(),!0)})}failCandidate(a){let b=this.clock();this.mutate((c,d)=>{let e=new Set(d.drainingGenerations);for(let f of c.values()){if(f.successorGeneration!==a)continue;let c=f.predecessorGeneration;f.hostGeneration=c??f.hostGeneration,f.status=c&&e.has(c)?"draining":"pending",f.predecessorGeneration=null,f.successorGeneration=null,f.replayedDeliveryIds=u(d.history,f.conversationId),f.interruptionOutcome=null,f.updatedAt=b}})}markRetryableFailure(a,b){this.mutate(c=>{let d=c.get(a);d&&(d.status="failed",d.lastError=b,d.updatedAt=this.clock())})}retirable(a){for(let b of this.store.load())if(b.hostGeneration===a&&("pending"===b.status||"draining"===b.status))return!1;return!0}}class w{constructor(a){this.filename=a,e().mkdirSync(g().dirname(a),{recursive:!0,mode:448});const b=process.getBuiltinModule?.("bun:sqlite");if(!b)throw Error("SQLite handoff queue requires the Bun runtime");this.db=(0,s.PK)(a,()=>{let c=new b.Database(a,{create:!0,strict:!0});return c.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL; PRAGMA journal_size_limit = 67108864;"),c.exec(`
2
+ CREATE TABLE IF NOT EXISTS handoff_rows (
3
+ operation_id TEXT PRIMARY KEY,
4
+ conversation_id TEXT,
5
+ row_order INTEGER NOT NULL,
6
+ value_json TEXT NOT NULL
7
+ );
8
+ CREATE TABLE IF NOT EXISTS handoff_history (
9
+ operation_id TEXT PRIMARY KEY,
10
+ conversation_id TEXT NOT NULL,
11
+ row_order INTEGER NOT NULL,
12
+ value_json TEXT NOT NULL
13
+ );
14
+ CREATE TABLE IF NOT EXISTS handoff_draining_generations (
15
+ generation TEXT PRIMARY KEY,
16
+ row_order INTEGER NOT NULL
17
+ );
18
+ `),c}),this.db.exec("BEGIN IMMEDIATE");try{this.db.query("PRAGMA table_info(handoff_rows)").all().some(a=>"conversation_id"===a.name)||this.db.exec("ALTER TABLE handoff_rows ADD COLUMN conversation_id TEXT"),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}this.migrateActiveRows(),this.db.exec(`
19
19
  CREATE UNIQUE INDEX IF NOT EXISTS handoff_one_active_conversation
20
20
  ON handoff_rows(conversation_id)
21
21
  WHERE conversation_id IS NOT NULL;
22
- `);try{e().chmodSync(a,384)}catch{}}load(){return this.db.query("SELECT value_json FROM handoff_rows ORDER BY row_order ASC").all().map(a=>JSON.parse(a.value_json))}loadHistory(){return this.db.query("SELECT value_json FROM handoff_history ORDER BY row_order ASC").all().map(a=>JSON.parse(a.value_json))}loadDrainingGenerations(){return this.db.query("SELECT generation FROM handoff_draining_generations ORDER BY row_order ASC").all().map(a=>a.generation)}writeRows(a){let b=this.db.query("INSERT INTO handoff_rows(operation_id, conversation_id, row_order, value_json) VALUES (?, ?, ?, ?)");this.db.exec("DELETE FROM handoff_rows"),a.forEach((a,c)=>b.run(a.operationId,a.conversationId,c,JSON.stringify(a)))}writeHistory(a){let b=this.db.query("INSERT INTO handoff_history(operation_id, conversation_id, row_order, value_json) VALUES (?, ?, ?, ?)");this.db.exec("DELETE FROM handoff_history"),a.forEach((a,c)=>b.run(a.operationId,a.conversationId,c,JSON.stringify(a)))}writeDrainingGenerations(a){let b=this.db.query("INSERT INTO handoff_draining_generations(generation, row_order) VALUES (?, ?)");this.db.exec("DELETE FROM handoff_draining_generations"),[...new Set(a)].forEach((a,c)=>b.run(a,c))}migrateActiveRows(){this.db.exec("BEGIN IMMEDIATE");try{let a=new Map,b=this.loadHistory(),c=new Map(b.map(a=>[a.operationId,a])),d=new Set(this.loadDrainingGenerations()),e=this.load();for(let a of[...b,...e])"draining"===a.status&&d.add(a.hostGeneration);for(let b of e){let d=a.get(b.conversationId);d&&c.set(d.operationId,d),a.set(b.conversationId,b)}this.writeRows([...a.values()]),this.writeHistory([...c.values()]),this.writeDrainingGenerations([...d]),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}save(a){this.db.exec("BEGIN IMMEDIATE");try{this.writeRows(a),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}saveHistory(a){this.db.exec("BEGIN IMMEDIATE");try{this.writeHistory(a),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}saveDrainingGenerations(a){this.db.exec("BEGIN IMMEDIATE");try{this.writeDrainingGenerations(a),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}transaction(a){this.db.exec("BEGIN IMMEDIATE");try{let b={rows:this.load(),history:this.loadHistory(),drainingGenerations:this.loadDrainingGenerations()},c=a(b);return this.writeRows(b.rows),this.writeHistory(b.history),this.writeDrainingGenerations(b.drainingGenerations),this.db.exec("COMMIT"),c}catch(a){throw this.db.exec("ROLLBACK"),a}}}let v=null;var w=c(37412),x=c(97810),y=c(9488),z=c(87229);let A=3e5;function B(a,b=A){return Math.max(1,Math.min(8,Math.floor(.5*b/Math.max(1,a+1e4))))}let C=new Set(["completed","failed","conflicted"]),D=new Set(["held","assigned","delivery-uncertain"]),E=new Set(["idle","dead"]),F=["seat-free","turn-settled","attention-settled","host-idle-or-dead","no-active-flags","handoff-queue-drained","no-open-operation","events-flushed","no-realtime-binding","resumable","transcript-idle","process-identity"],G=(0,p.yV)(null),H=a=>(0,p.yV)(a);function I(a){return a.seat.determined&&"revoked"===a.seat.value}function J(a){return null===a.process.startIdentity?(0,p.nZ)(`the registry stored no kernel identity for pid ${a.process.pid}`):(0,p.yV)(a.process.startIdentity)}let K={"seat-free":a=>(0,p.Le)(a.seat,a=>"live"===a?"the host holds a live orchestrator seat":null),"turn-settled":a=>null!==a.activeTurnRef?H(`turn ${a.activeTurnRef} is in flight`):(0,p.Le)(a.turnBusy,a=>a?"the conversation turn has not settled":null),"attention-settled":a=>a.pendingAttention.length>0?H(`${a.pendingAttention.length} question(s) await an operator answer`):G,"host-idle-or-dead":a=>E.has(a.status)?G:H(`the host status is ${a.status}`),"no-active-flags":a=>{let b=(0,w.S0)(a.activeFlags);return b.length>0?H(`the host is flagged ${b.join(", ")}`):G},"handoff-queue-drained":a=>(0,p.Le)(a.undeliveredHandoffEntries,a=>a>0?`${a} undelivered handoff entr(ies) name this key`:null),"no-open-operation":a=>null!==a.pendingAction?H(`a ${a.pendingAction} action is pending`):null!==a.structuredHostOperationId?H("a structured host operation is still in flight"):a.openOperations>0?H(`${a.openOperations} spawn receipt(s) are pending or non-terminal`):G,"events-flushed":a=>(0,p.Le)(a.durableEventTail,b=>a.eventCursor<b?`the flushed cursor ${a.eventCursor} is behind the session's ${b}`:null),"no-realtime-binding":a=>(0,p.Le)(a.realtimeBound,a=>a?"a realtime session is bound to this conversation":null),resumable:a=>""===a.transcriptPath?H("the host names no transcript to resume from"):(0,p.Le)(a.transcriptFile,a=>null===a?"the transcript is not present on disk":null),"transcript-idle":(a,b)=>(0,p.Le)(a.transcriptFile,c=>{if(null===c)return"the transcript is not present on disk";if(I(a))return null;let d=b.now-c.mtimeMs;return d<b.idleMs?`the transcript was written ${Math.max(0,Math.round(d/1e3))}s ago`:null}),"process-identity":a=>{let b=J(a);if(!b.determined)return b;let c="string"==typeof a.process.bootEpoch&&a.process.bootEpoch?(0,p.yV)(a.process.bootEpoch):(0,p.nZ)(`the registry stored no boot epoch for pid ${a.process.pid}`);if(!c.determined)return c;if(!a.observedStartIdentity.determined)return a.observedStartIdentity;if(!a.observedBootEpoch.determined)return a.observedBootEpoch;let d=a.observedStartIdentity.value,e=a.observedBootEpoch.value;return"alive"===(0,n.Ue)(a.process,{pidAlive:()=>!0,processIdentity:()=>d,bootEpoch:()=>e})?G:H(`pid ${a.process.pid} is no longer the recorded host`)}};function L(a,b){let c=[];for(let d of F){let e=K[d](a,b);if(!e.determined)return{retire:!1,clause:d,reason:e.why,undetermined:!0};if(null!==e.value)return{retire:!1,clause:d,reason:e.value};c.push(d)}let d=J(a);return d.determined?{retire:!0,passed:c,startIdentity:d.value}:{retire:!1,clause:"process-identity",reason:d.why,undetermined:!0}}function M(a=process.env){let b=a.LLV_HOST_RETIREMENT_IDLE_HOURS;if(void 0===b||""===b.trim())return 216e5;let c=Number(b);return!Number.isFinite(c)||c<0?(console.warn("[host retirement] LLV_HOST_RETIREMENT_IDLE_HOURS is not a duration; using 6h"),216e5):0===c?null:36e5*c}function N(a=process.env){let b=a.LLV_HOST_RETIREMENT_GRACE_MS;if(void 0===b||""===b.trim())return 5e3;let c=Number(b);return!Number.isFinite(c)||c<0?5e3:Math.min(c,6e4)}function O(a){try{let b=e().statSync(a);return(0,p.yV)(b.isFile()?{mtimeMs:b.mtimeMs}:null)}catch(b){let a=b.code;return"ENOENT"===a||"ENOTDIR"===a?(0,p.yV)(null):(0,p.nZ)(`the transcript could not be read (${a??"unknown"})`)}}function P(a){try{if((0,z.VD)().has(a))return(0,p.yV)(!0);let b=(0,x.Aj)(a);return(0,p.yV)("function"==typeof b?.currentRealtimeSessionId&&null!==b.currentRealtimeSessionId())}catch(a){return(0,p.nZ)(`the realtime binding could not be read: ${T(a)}`)}}function Q(){let a;try{let b=(0,k.activeOrchestratorSeatsOrUnknown)();if(null===b)return(0,p.nZ)("the orchestrator seat store could not be established");let c=R();a=new Set(b.flatMap(a=>a.conversationId?[c(a.conversationId)]:[]))}catch(a){return(0,p.nZ)(`the orchestrator seat store could not be read: ${T(a)}`)}return(0,p.yV)(a)}function R(){let a=(0,h.agentRegistry)();return b=>a.canonicalConversationId(b)}function S(){let a;try{a=(0,k.revokedOrchestratorSeatConversationsOrUnknown)(R())}catch(a){return(0,p.nZ)(`the orchestrator revocation record could not be read: ${T(a)}`)}return null===a?(0,p.nZ)("the orchestrator revocation record could not be established"):(0,p.yV)(a)}function T(a){return a instanceof Error?a.message:String(a)}function U(a){let{refused:b,...c}=a,d={},e={};for(let a of b)d[a.clause]=(d[a.clause]??0)+1,a.undetermined&&(e[a.clause]=(e[a.clause]??0)+1);return{...c,refusedByClause:d,undeterminedByClause:e}}function V(a){try{var b;let c;b=(0,j.BQ)("host-retirement-report.json"),e().mkdirSync(g().dirname(b),{recursive:!0,mode:448}),c=`${b}.${process.pid}.tmp`,e().writeFileSync(c,`${JSON.stringify(a,null,2)}
23
- `,{encoding:"utf8",mode:384}),e().renameSync(c,b)}catch(a){console.error("[host retirement] report could not be written",a)}try{let b=(0,j.BQ)("host-retirement-journal.ndjson");e().mkdirSync(g().dirname(b),{recursive:!0,mode:448});try{e().statSync(b).size>4194304&&e().renameSync(b,`${b}.1`)}catch{}e().appendFileSync(b,`${JSON.stringify(U(a))}
24
- `,{encoding:"utf8",mode:384})}catch(a){console.error("[host retirement] journal could not be appended",a)}for(let b of a.retired){let a=b.seatRevoked?", revoked seat":"";console.warn(`[host retirement] retired ${b.key} (${b.role??"no role"}, idle ${Math.round(b.idleMs/6e4)}m${a}) via ${b.via}: ${b.reclaimed.processes} process(es), ${Math.round(b.reclaimed.rssBytes/1048576)} MiB resident + ${Math.round(b.reclaimed.swapBytes/1048576)} MiB swapped reclaimed`)}for(let b of a.failed)console.warn(`[host retirement] left ${b.key} intact: ${b.error}`);let c=Object.entries(U(a).undeterminedByClause);if(c.length>0){let b=c.map(([a,b])=>`${a} (${b})`).join(", "),d=a.refused.find(a=>a.undetermined)?.reason??"";console.warn(`[host retirement] kept hosts whose clauses could not be determined: ${b} — ${d}`)}}class W{add(a){null!==a&&this.counts.set(a,(this.counts.get(a)??0)+1)}addKey(a){this.add(`key:${a}`)}addConversation(a){this.add(null===a?null:`conv:${a}`)}count(a,b){return(this.counts.get(`key:${a}`)??0)+(null===b?0:this.counts.get(`conv:${b}`)??0)}constructor(){this.counts=new Map}}function X(a){var b;let c=a.snapshot(),d=new Map;for(let a of Object.values(c.conversations))for(let b of a.generations)d.set(b.id,a);return{file:c,conversationsBySession:d,undelivered:(b=a.handoffRows(),(0,p.Le)(b,a=>{let b=new W;for(let c of a){let a=new Set(c.replayedDeliveryIds??[]);(c.pendingDeliveries??[]).some(b=>!a.has(b.deliveryId))&&("claude"===c.engine||"codex"===c.engine?b.addKey(`${c.engine}:${c.engineSessionId}`):b.addConversation(c.conversationId))}for(let a of Object.values(c.heldDeliveries??{}))D.has(a.state)&&b.addConversation(a.conversationId);return b})),openOperations:function(a){let b=new W;for(let c of Object.values(a.receipts??{}))C.has(c.state)||(null!==c.key?b.addKey((0,i.pp)(c.key)):b.addConversation(c.conversationId));return b}(c),seatConversations:a.seatConversations(),revokedConversations:a.revokedConversations()}}function Y(a,b,c){var d,e,f;let g,h=a.structuredHost,j=h.process,k=a.key,l=(0,i.pp)(k),m=b.conversationsBySession.get(k.sessionId)??null,n=m?.id??null,o=m?b.file.memberships[m.id]??[]:[],q=o.find(a=>"pipeline"===a.kind)??null,r=m?.generations.find(a=>a.id===k.sessionId)??null;return{key:k,keyId:l,conversationId:n,title:r?.launchProfile.title??null,role:m?.agentRole??q?.role??r?.launchProfile.role??null,stage:q?.stageId??q?.slot??null,cwd:a.cwd||r?.launchProfile.cwd||"",transcriptPath:a.artifactPath||"",process:j,status:a.status,activeTurnRef:h.activeTurnRef,turnBusy:null===m?(0,p.nZ)("no conversation record establishes this host's turn state"):"unknown"===m.turn.state?(0,p.nZ)("the conversation's turn state is unknown"):(0,p.yV)("busy"===m.turn.state),pendingAttention:h.pendingAttention,activeFlags:h.activeFlags,pendingAction:a.pendingAction,structuredHostOperationId:a.structuredHostOperationId??null,undeliveredHandoffEntries:(0,p.Le)(b.undelivered,a=>a.count(l,n)),openOperations:b.openOperations.count(l,n),eventCursor:h.eventCursor,durableEventTail:c.durableEventTail(k.sessionId),realtimeBound:null===n?(0,p.nZ)("the host names no conversation, so no realtime binding can be looked up"):c.realtimeBound(n),seat:null===m?(0,p.nZ)("no conversation record establishes whether this host holds a seat"):(d=m.id,e=b.seatConversations,f=b.revokedConversations,(g=o.some(a=>"orchestrator"===a.kind)?(0,p.yV)(!0):(0,p.Le)(e,a=>a.has(d))).determined?g.value?(0,p.Le)(f,a=>a.has(d)?"revoked":"live"):(0,p.yV)("none"):g),transcriptFile:a.artifactPath?c.transcriptStat(a.artifactPath):(0,p.yV)(null),observedStartIdentity:c.processIdentity(j.pid),observedBootEpoch:c.bootEpoch()}}async function Z(a={}){let b=a.now??Date.now,c=b(),d=a.idleMs??M()??216e5,e=a.graceMs??N(),f=a.batch??B(e),g={snapshot:a.snapshot??(()=>(0,h.agentRegistry)().readOnlySnapshot()),handoffRows:a.handoffRows??(()=>{try{return(0,p.yV)((v??=new t(new u((0,j.BQ)("handoff-queue.sqlite")))).rows())}catch(a){return(0,p.nZ)(`the handoff queue could not be read: ${T(a)}`)}}),seatConversations:a.orchestratorSeatConversations??Q,revokedConversations:a.revokedSeatConversations??S},i={durableEventTail:a.durableEventTail??(a=>(0,q.t2)(a)),realtimeBound:a.realtimeBound??P,transcriptStat:a.transcriptStat??O,processIdentity:a.processIdentity??(a=>{let b=l.B.processIdentity(a);return null===b?(0,p.nZ)(`no kernel identity can be observed for pid ${a}`):(0,p.yV)(b)}),bootEpoch:a.bootEpoch??(()=>{let a=(0,n.h_)();return null===a?(0,p.nZ)("the kernel boot epoch could not be read"):(0,p.yV)(a)})},k=a.processMemory??(a=>l.B.processMemory(a)),r=a.ppidMap??(()=>l.B.ppidMap()),s=a.owned??x.sy,w=a.terminate??(a=>(0,y.terminateStructuredHostTree)(a,{graceMs:e,deadlineMs:e+1e4})),z=a.record??V,A=a.publicationState??x.du,C={version:1,startedAt:new Date(c).toISOString(),finishedAt:"",idleHours:d/36e5,evaluated:0,deferred:0,standDown:null,retired:[],refused:[],failed:[],reclaimed:{rssBytes:0,swapBytes:0,processes:0}},D=A();if("ready"!==D)return C.standDown=D,C.finishedAt=new Date(b()).toISOString(),z(C),C;let E=X(g),F=Object.values(E.file.entries).filter(a=>!!a.structuredHost?.process&&("claude"===a.key.engine||"codex"===a.key.engine)&&null===a.host).slice(0,o.sb);C.evaluated=F.length;let G=[];for(let a of F){let b=Y(a,E,i),e=L(b,{now:c,idleMs:d});if(!e.retire){C.refused.push({key:b.keyId,conversationId:b.conversationId,clause:e.clause,reason:e.reason,...e.undetermined?{undetermined:!0}:{}});continue}if(G.length>=f){C.deferred+=1;continue}G.push(b)}let H=null;for(let a of G){var J;let e,f=X(g),h=f.file.entries[a.keyId]??null;if(null===h||!h.structuredHost?.process){C.refused.push({key:a.keyId,conversationId:a.conversationId,clause:"process-identity",reason:"the registry no longer records this host",changed:!0});continue}let j=Y(h,f,i),l=L(j,{now:b(),idleMs:d});if(!l.retire){C.refused.push({key:j.keyId,conversationId:j.conversationId,clause:l.clause,reason:l.reason,...l.undetermined?{undetermined:!0}:{},changed:!0});continue}let n=j.process,o=j.transcriptFile.determined?j.transcriptFile.value?.mtimeMs??null:null;H??=r();let p=k((0,m.mO)(n.pid,H)),q={rssBytes:0,swapBytes:0,processes:p.size};for(let a of p.values())q.rssBytes+=a.rssBytes,q.swapBytes+=a.swapBytes;let t={kind:"structured",pid:n.pid,startIdentity:l.startIdentity,bootEpoch:n.bootEpoch??null,engine:j.key.engine,sessionId:j.key.sessionId,conversationId:j.conversationId,seat:j.seat.determined?"live"===j.seat.value:null,turnBusy:(J=j.turnBusy).determined?J.value:null,owned:s(j.key),lastActiveAt:null===o?null:new Date(o).toISOString()};try{e=await w(t)}catch(a){C.failed.push({key:j.keyId,conversationId:j.conversationId,error:String(a),remaining:[]});continue}if(!e.ok){C.failed.push({key:j.keyId,conversationId:j.conversationId,error:e.error,remaining:e.remaining});continue}C.retired.push({key:j.keyId,engine:j.key.engine,sessionId:j.key.sessionId,conversationId:j.conversationId,title:j.title,role:j.role,stage:j.stage,cwd:j.cwd,idleMs:null===o?0:c-o,passed:l.passed,...I(j)?{seatRevoked:!0}:{},via:e.via,pids:e.pids,reclaimed:q}),C.reclaimed.rssBytes+=q.rssBytes,C.reclaimed.swapBytes+=q.swapBytes,C.reclaimed.processes+=q.processes,H=null}return C.finishedAt=new Date(b()).toISOString(),z(C),C}async function $(a={}){let b=M(a.env??process.env);if(null===b)return null;let c=a.sweep??(a=>Z({idleMs:a}));try{return await c(b)}catch(a){return console.error("[host retirement] sweep failed",a),null}}let _=globalThis;function aa(a={}){if(_.__llvStructuredHostRetirementTimer)return;let b=a.scheduleInterval??((a,b)=>setInterval(a,b)),c=a.sweep??(()=>$()),d=b(()=>{c()},a.intervalMs??A);d.unref?.(),_.__llvStructuredHostRetirementTimer=d}function ab(){let a=_.__llvStructuredHostRetirementTimer;a&&clearInterval(a),_.__llvStructuredHostRetirementTimer=void 0}}};
22
+ `);try{e().chmodSync(a,384)}catch{}}load(){return this.db.query("SELECT value_json FROM handoff_rows ORDER BY row_order ASC").all().map(a=>JSON.parse(a.value_json))}loadHistory(){return this.db.query("SELECT value_json FROM handoff_history ORDER BY row_order ASC").all().map(a=>JSON.parse(a.value_json))}loadDrainingGenerations(){return this.db.query("SELECT generation FROM handoff_draining_generations ORDER BY row_order ASC").all().map(a=>a.generation)}writeRows(a){let b=this.db.query("INSERT INTO handoff_rows(operation_id, conversation_id, row_order, value_json) VALUES (?, ?, ?, ?)");this.db.exec("DELETE FROM handoff_rows"),a.forEach((a,c)=>b.run(a.operationId,a.conversationId,c,JSON.stringify(a)))}writeHistory(a){let b=this.db.query("INSERT INTO handoff_history(operation_id, conversation_id, row_order, value_json) VALUES (?, ?, ?, ?)");this.db.exec("DELETE FROM handoff_history"),a.forEach((a,c)=>b.run(a.operationId,a.conversationId,c,JSON.stringify(a)))}writeDrainingGenerations(a){let b=this.db.query("INSERT INTO handoff_draining_generations(generation, row_order) VALUES (?, ?)");this.db.exec("DELETE FROM handoff_draining_generations"),[...new Set(a)].forEach((a,c)=>b.run(a,c))}migrateActiveRows(){this.db.exec("BEGIN IMMEDIATE");try{let a=new Map,b=this.loadHistory(),c=new Map(b.map(a=>[a.operationId,a])),d=new Set(this.loadDrainingGenerations()),e=this.load();for(let a of[...b,...e])"draining"===a.status&&d.add(a.hostGeneration);for(let b of e){let d=a.get(b.conversationId);d&&c.set(d.operationId,d),a.set(b.conversationId,b)}this.writeRows([...a.values()]),this.writeHistory([...c.values()]),this.writeDrainingGenerations([...d]),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}save(a){this.db.exec("BEGIN IMMEDIATE");try{this.writeRows(a),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}saveHistory(a){this.db.exec("BEGIN IMMEDIATE");try{this.writeHistory(a),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}saveDrainingGenerations(a){this.db.exec("BEGIN IMMEDIATE");try{this.writeDrainingGenerations(a),this.db.exec("COMMIT")}catch(a){throw this.db.exec("ROLLBACK"),a}}transaction(a){this.db.exec("BEGIN IMMEDIATE");try{let b={rows:this.load(),history:this.loadHistory(),drainingGenerations:this.loadDrainingGenerations()},c=a(b);return this.writeRows(b.rows),this.writeHistory(b.history),this.writeDrainingGenerations(b.drainingGenerations),this.db.exec("COMMIT"),c}catch(a){throw this.db.exec("ROLLBACK"),a}}}let x=null;var y=c(37412),z=c(97810),A=c(9488),B=c(87229);let C=3e5;function D(a,b=C){return Math.max(1,Math.min(8,Math.floor(.5*b/Math.max(1,a+1e4))))}let E=new Set(["completed","failed","conflicted"]),F=new Set(["held","assigned","delivery-uncertain"]),G=new Set(["idle","dead"]),H=["seat-free","turn-settled","attention-settled","host-idle-or-dead","no-active-flags","handoff-queue-drained","no-open-operation","events-flushed","no-realtime-binding","resumable","transcript-idle","process-identity"],I=(0,q.yV)(null),J=a=>(0,q.yV)(a);function K(a){return a.seat.determined&&"revoked"===a.seat.value}function L(a){return null===a.process.startIdentity?(0,q.nZ)(`the registry stored no kernel identity for pid ${a.process.pid}`):(0,q.yV)(a.process.startIdentity)}let M={"seat-free":a=>(0,q.Le)(a.seat,a=>"live"===a?"the host holds a live orchestrator seat":null),"turn-settled":a=>null!==a.activeTurnRef?J(`turn ${a.activeTurnRef} is in flight`):(0,q.Le)(a.turnBusy,a=>a?"the conversation turn has not settled":null),"attention-settled":a=>a.pendingAttention.length>0?J(`${a.pendingAttention.length} question(s) await an operator answer`):I,"host-idle-or-dead":a=>G.has(a.status)?I:J(`the host status is ${a.status}`),"no-active-flags":a=>{let b=(0,y.S0)(a.activeFlags);return b.length>0?J(`the host is flagged ${b.join(", ")}`):I},"handoff-queue-drained":a=>(0,q.Le)(a.undeliveredHandoffEntries,a=>a>0?`${a} undelivered handoff entr(ies) name this key`:null),"no-open-operation":a=>null!==a.pendingAction?J(`a ${a.pendingAction} action is pending`):null!==a.structuredHostOperationId?J("a structured host operation is still in flight"):a.openOperations>0?J(`${a.openOperations} spawn receipt(s) are pending or non-terminal`):I,"events-flushed":a=>(0,q.Le)(a.durableEventTail,b=>a.eventCursor<b?`the flushed cursor ${a.eventCursor} is behind the session's ${b}`:null),"no-realtime-binding":a=>(0,q.Le)(a.realtimeBound,a=>a?"a realtime session is bound to this conversation":null),resumable:a=>""===a.transcriptPath?J("the host names no transcript to resume from"):(0,q.Le)(a.transcriptFile,a=>null===a?"the transcript is not present on disk":null),"transcript-idle":(a,b)=>(0,q.Le)(a.transcriptFile,c=>{if(null===c)return"the transcript is not present on disk";if(K(a))return null;let d=b.now-c.mtimeMs;return d<b.idleMs?`the transcript was written ${Math.max(0,Math.round(d/1e3))}s ago`:null}),"process-identity":a=>{let b=L(a);if(!b.determined)return b;let c="string"==typeof a.process.bootEpoch&&a.process.bootEpoch?(0,q.yV)(a.process.bootEpoch):(0,q.nZ)(`the registry stored no boot epoch for pid ${a.process.pid}`);if(!c.determined)return c;if(!a.observedStartIdentity.determined)return a.observedStartIdentity;if(!a.observedBootEpoch.determined)return a.observedBootEpoch;let d=a.observedStartIdentity.value,e=a.observedBootEpoch.value;return"alive"===(0,o.Ue)(a.process,{pidAlive:()=>!0,processIdentity:()=>d,bootEpoch:()=>e})?I:J(`pid ${a.process.pid} is no longer the recorded host`)}};function N(a,b){let c=[];for(let d of H){let e=M[d](a,b);if(!e.determined)return{retire:!1,clause:d,reason:e.why,undetermined:!0};if(null!==e.value)return{retire:!1,clause:d,reason:e.value};c.push(d)}let d=L(a);return d.determined?{retire:!0,passed:c,startIdentity:d.value}:{retire:!1,clause:"process-identity",reason:d.why,undetermined:!0}}function O(a=process.env){let b=a.LLV_HOST_RETIREMENT_IDLE_HOURS;if(void 0===b||""===b.trim())return 216e5;let c=Number(b);return!Number.isFinite(c)||c<0?(console.warn("[host retirement] LLV_HOST_RETIREMENT_IDLE_HOURS is not a duration; using 6h"),216e5):0===c?null:36e5*c}function P(a=process.env){let b=a.LLV_HOST_RETIREMENT_GRACE_MS;if(void 0===b||""===b.trim())return 5e3;let c=Number(b);return!Number.isFinite(c)||c<0?5e3:Math.min(c,6e4)}function Q(a){try{let b=e().statSync(a);return(0,q.yV)(b.isFile()?{mtimeMs:b.mtimeMs}:null)}catch(b){let a=b.code;return"ENOENT"===a||"ENOTDIR"===a?(0,q.yV)(null):(0,q.nZ)(`the transcript could not be read (${a??"unknown"})`)}}function R(a){try{if((0,B.VD)().has(a))return(0,q.yV)(!0);let b=(0,z.Aj)(a);return(0,q.yV)("function"==typeof b?.currentRealtimeSessionId&&null!==b.currentRealtimeSessionId())}catch(a){return(0,q.nZ)(`the realtime binding could not be read: ${V(a)}`)}}function S(){let a;try{let b=(0,l.activeOrchestratorSeatsOrUnknown)();if(null===b)return(0,q.nZ)("the orchestrator seat store could not be established");let c=T();a=new Set(b.flatMap(a=>a.conversationId?[c(a.conversationId)]:[]))}catch(a){return(0,q.nZ)(`the orchestrator seat store could not be read: ${V(a)}`)}return(0,q.yV)(a)}function T(){let a=(0,h.agentRegistry)();return b=>a.canonicalConversationId(b)}function U(){let a;try{a=(0,l.revokedOrchestratorSeatConversationsOrUnknown)(T())}catch(a){return(0,q.nZ)(`the orchestrator revocation record could not be read: ${V(a)}`)}return null===a?(0,q.nZ)("the orchestrator revocation record could not be established"):(0,q.yV)(a)}function V(a){return a instanceof Error?a.message:String(a)}function W(a){let{refused:b,...c}=a,d={},e={};for(let a of b)d[a.clause]=(d[a.clause]??0)+1,a.undetermined&&(e[a.clause]=(e[a.clause]??0)+1);return{...c,refusedByClause:d,undeterminedByClause:e}}function X(a){try{var b;b=(0,j.BQ)("host-retirement-report.json"),e().mkdirSync(g().dirname(b),{recursive:!0,mode:448}),(0,k.fZ)(b,a)}catch(a){console.error("[host retirement] report could not be written",a)}try{let b=(0,j.BQ)("host-retirement-journal.ndjson");e().mkdirSync(g().dirname(b),{recursive:!0,mode:448});try{e().statSync(b).size>4194304&&e().renameSync(b,`${b}.1`)}catch{}e().appendFileSync(b,`${JSON.stringify(W(a))}
23
+ `,{encoding:"utf8",mode:384})}catch(a){console.error("[host retirement] journal could not be appended",a)}for(let b of a.retired){let a=b.seatRevoked?", revoked seat":"";console.warn(`[host retirement] retired ${b.key} (${b.role??"no role"}, idle ${Math.round(b.idleMs/6e4)}m${a}) via ${b.via}: ${b.reclaimed.processes} process(es), ${Math.round(b.reclaimed.rssBytes/1048576)} MiB resident + ${Math.round(b.reclaimed.swapBytes/1048576)} MiB swapped reclaimed`)}for(let b of a.failed)console.warn(`[host retirement] left ${b.key} intact: ${b.error}`);let c=Object.entries(W(a).undeterminedByClause);if(c.length>0){let b=c.map(([a,b])=>`${a} (${b})`).join(", "),d=a.refused.find(a=>a.undetermined)?.reason??"";console.warn(`[host retirement] kept hosts whose clauses could not be determined: ${b} — ${d}`)}}class Y{add(a){null!==a&&this.counts.set(a,(this.counts.get(a)??0)+1)}addKey(a){this.add(`key:${a}`)}addConversation(a){this.add(null===a?null:`conv:${a}`)}count(a,b){return(this.counts.get(`key:${a}`)??0)+(null===b?0:this.counts.get(`conv:${b}`)??0)}constructor(){this.counts=new Map}}function Z(a){var b;let c=a.snapshot(),d=new Map;for(let a of Object.values(c.conversations))for(let b of a.generations)d.set(b.id,a);return{file:c,conversationsBySession:d,undelivered:(b=a.handoffRows(),(0,q.Le)(b,a=>{let b=new Y;for(let c of a){let a=new Set(c.replayedDeliveryIds??[]);(c.pendingDeliveries??[]).some(b=>!a.has(b.deliveryId))&&("claude"===c.engine||"codex"===c.engine?b.addKey(`${c.engine}:${c.engineSessionId}`):b.addConversation(c.conversationId))}for(let a of Object.values(c.heldDeliveries??{}))F.has(a.state)&&b.addConversation(a.conversationId);return b})),openOperations:function(a){let b=new Y;for(let c of Object.values(a.receipts??{}))E.has(c.state)||(null!==c.key?b.addKey((0,i.pp)(c.key)):b.addConversation(c.conversationId));return b}(c),seatConversations:a.seatConversations(),revokedConversations:a.revokedConversations()}}function $(a,b,c){var d,e,f;let g,h=a.structuredHost,j=h.process,k=a.key,l=(0,i.pp)(k),m=b.conversationsBySession.get(k.sessionId)??null,n=m?.id??null,o=m?b.file.memberships[m.id]??[]:[],p=o.find(a=>"pipeline"===a.kind)??null,r=m?.generations.find(a=>a.id===k.sessionId)??null;return{key:k,keyId:l,conversationId:n,title:r?.launchProfile.title??null,role:m?.agentRole??p?.role??r?.launchProfile.role??null,stage:p?.stageId??p?.slot??null,cwd:a.cwd||r?.launchProfile.cwd||"",transcriptPath:a.artifactPath||"",process:j,status:a.status,activeTurnRef:h.activeTurnRef,turnBusy:null===m?(0,q.nZ)("no conversation record establishes this host's turn state"):"unknown"===m.turn.state?(0,q.nZ)("the conversation's turn state is unknown"):(0,q.yV)("busy"===m.turn.state),pendingAttention:h.pendingAttention,activeFlags:h.activeFlags,pendingAction:a.pendingAction,structuredHostOperationId:a.structuredHostOperationId??null,undeliveredHandoffEntries:(0,q.Le)(b.undelivered,a=>a.count(l,n)),openOperations:b.openOperations.count(l,n),eventCursor:h.eventCursor,durableEventTail:c.durableEventTail(k.sessionId),realtimeBound:null===n?(0,q.nZ)("the host names no conversation, so no realtime binding can be looked up"):c.realtimeBound(n),seat:null===m?(0,q.nZ)("no conversation record establishes whether this host holds a seat"):(d=m.id,e=b.seatConversations,f=b.revokedConversations,(g=o.some(a=>"orchestrator"===a.kind)?(0,q.yV)(!0):(0,q.Le)(e,a=>a.has(d))).determined?g.value?(0,q.Le)(f,a=>a.has(d)?"revoked":"live"):(0,q.yV)("none"):g),transcriptFile:a.artifactPath?c.transcriptStat(a.artifactPath):(0,q.yV)(null),observedStartIdentity:c.processIdentity(j.pid),observedBootEpoch:c.bootEpoch()}}async function _(a={}){let b=a.now??Date.now,c=b(),d=a.idleMs??O()??216e5,e=a.graceMs??P(),f=a.batch??D(e),g={snapshot:a.snapshot??(()=>(0,h.agentRegistry)().readOnlySnapshot()),handoffRows:a.handoffRows??(()=>{try{return(0,q.yV)((x??=new v(new w((0,j.BQ)("handoff-queue.sqlite")))).rows())}catch(a){return(0,q.nZ)(`the handoff queue could not be read: ${V(a)}`)}}),seatConversations:a.orchestratorSeatConversations??S,revokedConversations:a.revokedSeatConversations??U},i={durableEventTail:a.durableEventTail??(a=>(0,r.t2)(a)),realtimeBound:a.realtimeBound??R,transcriptStat:a.transcriptStat??Q,processIdentity:a.processIdentity??(a=>{let b=m.B.processIdentity(a);return null===b?(0,q.nZ)(`no kernel identity can be observed for pid ${a}`):(0,q.yV)(b)}),bootEpoch:a.bootEpoch??(()=>{let a=(0,o.h_)();return null===a?(0,q.nZ)("the kernel boot epoch could not be read"):(0,q.yV)(a)})},k=a.processMemory??(a=>m.B.processMemory(a)),l=a.ppidMap??(()=>m.B.ppidMap()),s=a.owned??z.sy,t=a.terminate??(a=>(0,A.terminateStructuredHostTree)(a,{graceMs:e,deadlineMs:e+1e4})),u=a.record??X,y=a.publicationState??z.du,B={version:1,startedAt:new Date(c).toISOString(),finishedAt:"",idleHours:d/36e5,evaluated:0,deferred:0,standDown:null,retired:[],refused:[],failed:[],reclaimed:{rssBytes:0,swapBytes:0,processes:0}},C=y();if("ready"!==C)return B.standDown=C,B.finishedAt=new Date(b()).toISOString(),u(B),B;let E=Z(g),F=Object.values(E.file.entries).filter(a=>!!a.structuredHost?.process&&("claude"===a.key.engine||"codex"===a.key.engine)&&null===a.host).slice(0,p.sb);B.evaluated=F.length;let G=[];for(let a of F){let b=$(a,E,i),e=N(b,{now:c,idleMs:d});if(!e.retire){B.refused.push({key:b.keyId,conversationId:b.conversationId,clause:e.clause,reason:e.reason,...e.undetermined?{undetermined:!0}:{}});continue}if(G.length>=f){B.deferred+=1;continue}G.push(b)}let H=null;for(let a of G){var I;let e,f=Z(g),h=f.file.entries[a.keyId]??null;if(null===h||!h.structuredHost?.process){B.refused.push({key:a.keyId,conversationId:a.conversationId,clause:"process-identity",reason:"the registry no longer records this host",changed:!0});continue}let j=$(h,f,i),m=N(j,{now:b(),idleMs:d});if(!m.retire){B.refused.push({key:j.keyId,conversationId:j.conversationId,clause:m.clause,reason:m.reason,...m.undetermined?{undetermined:!0}:{},changed:!0});continue}let o=j.process,p=j.transcriptFile.determined?j.transcriptFile.value?.mtimeMs??null:null;H??=l();let q=k((0,n.mO)(o.pid,H)),r={rssBytes:0,swapBytes:0,processes:q.size};for(let a of q.values())r.rssBytes+=a.rssBytes,r.swapBytes+=a.swapBytes;let u={kind:"structured",pid:o.pid,startIdentity:m.startIdentity,bootEpoch:o.bootEpoch??null,engine:j.key.engine,sessionId:j.key.sessionId,conversationId:j.conversationId,seat:j.seat.determined?"live"===j.seat.value:null,turnBusy:(I=j.turnBusy).determined?I.value:null,owned:s(j.key),lastActiveAt:null===p?null:new Date(p).toISOString()};try{e=await t(u)}catch(a){B.failed.push({key:j.keyId,conversationId:j.conversationId,error:String(a),remaining:[]});continue}if(!e.ok){B.failed.push({key:j.keyId,conversationId:j.conversationId,error:e.error,remaining:e.remaining});continue}B.retired.push({key:j.keyId,engine:j.key.engine,sessionId:j.key.sessionId,conversationId:j.conversationId,title:j.title,role:j.role,stage:j.stage,cwd:j.cwd,idleMs:null===p?0:c-p,passed:m.passed,...K(j)?{seatRevoked:!0}:{},via:e.via,pids:e.pids,reclaimed:r}),B.reclaimed.rssBytes+=r.rssBytes,B.reclaimed.swapBytes+=r.swapBytes,B.reclaimed.processes+=r.processes,H=null}return B.finishedAt=new Date(b()).toISOString(),u(B),B}async function aa(a={}){let b=O(a.env??process.env);if(null===b)return null;let c=a.sweep??(a=>_({idleMs:a}));try{return await c(b)}catch(a){return console.error("[host retirement] sweep failed",a),null}}let ab=globalThis;function ac(a={}){if(ab.__llvStructuredHostRetirementTimer)return;let b=a.scheduleInterval??((a,b)=>setInterval(a,b)),c=a.sweep??(()=>aa()),d=b(()=>{c()},a.intervalMs??C);d.unref?.(),ab.__llvStructuredHostRetirementTimer=d}function ad(){let a=ab.__llvStructuredHostRetirementTimer;a&&clearInterval(a),ab.__llvStructuredHostRetirementTimer=void 0}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=2916,exports.ids=[2916],exports.modules={2916:(a,b,c)=>{c.r(b),c.d(b,{BOARD_TASKS_PER_PROJECT_LIMIT:()=>o,RECENT_CREATES_CAP:()=>p,TASK_DETAILS_LIMIT:()=>m,TASK_TEXT_LIMIT:()=>l,applyAssignmentPatches:()=>I,assignmentRefFromBody:()=>D,createTask:()=>z,deleteTask:()=>C,mergeAssignments:()=>H,patchTask:()=>A,pinnedAccountId:()=>G,removeAssignment:()=>F});var d=c(77598),e=c.n(d),f=c(70395),g=c(31822),h=c(44770);function i(a,b){return"hidden"!==a.board||b}function j(a,b,c){let d=0;for(let e of a)e.project===b&&i(e,c(e))&&(d+=1);return d}var k=c(48939);let l=6e3,m=2e4,n=["coral","amber","lime","teal","sky","violet","pink","slate"],o=300,p=100;function q(a){return{ok:!1,error:`The board already shows ${o} task bands for this project. Hide a band you no longer need, or keep this task off the board with board: "hidden".`,status:409,code:"TASK_BOARD_FULL",field:a}}function r(a){return"string"!=typeof a?null:a.trim()||null}function s(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:null,c=b?"number"==typeof b.x&&Number.isFinite(b.x)?"pos.y":"pos.x":"pos";return{ok:!1,error:`${c} must be ${"pos"===c?"an object with finite x and y":"a finite number"}`,status:400,code:"TASK_INVALID_FIELD",field:c}}function t(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)?{x:a.x,y:a.y}:null}function u(a){return"shown"===a||"hidden"===a?a:null}function v(a){return"pinned"===a||"unplaced"===a?a:null}function w(a,b){let c=null!=a,d=null!=b;if(!c&&!d)return{ok:!0};if(c!==d)return{ok:!1,error:"dueAt and dueTz must be set together"};if("string"!=typeof a||"string"!=typeof b)return{ok:!1,error:"invalid deadline"};let e=Date.parse(a);return Number.isFinite(e)?!function(a){try{return new Intl.DateTimeFormat(void 0,{timeZone:a}),!0}catch{return!1}}(b)?{ok:!1,error:"invalid dueTz"}:{ok:!0,dueAt:new Date(e).toISOString(),dueTz:b}:{ok:!1,error:"invalid dueAt"}}function x(){return{ok:!1,error:`Task text must be no longer than ${l} characters`,status:400}}function y(a){if(null==a)return{ok:!0};if("string"!=typeof a)return{ok:!1,error:"details must be a string",status:400,code:"TASK_INVALID_FIELD",field:"details"};let b=a.trim();return b?b.length>m?{ok:!1,error:`Task details must be no longer than ${m} characters`,status:400,code:"TASK_INVALID_FIELD",field:"details"}:{ok:!0,details:b}:{ok:!0}}function z(a,b,c=[],d={}){var g,i;let k="string"!=typeof(i=b.project)?null:i.trim()||null;if(!k)return{ok:!1,error:"project is required",status:400};let m=r(b.text);if(!m)return{ok:!1,error:"task text is required",status:400};if(m.length>l)return x();let n=y(b.details);if(!n.ok)return n;let A="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(A){let b=c.find(a=>a.clientRequestId===A);if(b){let d=a.find(a=>a.id===b.taskId);if(d)return{ok:!0,tasks:a,task:d,recentCreates:c,replay:!0}}}let B=t(b.pos);if(Object.hasOwn(b,"pos")&&!B)return s(b.pos);let C=v(b.placement)??(B?"pinned":null);if(void 0!==b.placement&&null===C)return{ok:!1,error:"invalid placement",status:400};if("pinned"===C&&!B)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if("unplaced"===C&&B)return{ok:!1,error:"unplaced task must not carry a position",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if(null===C)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};let D=w(b.dueAt,b.dueTz);if(!D.ok)return{ok:!1,error:D.error,status:400};let E=function(a,b){if(null==a)return{ok:!0};if(!Array.isArray(a))return{ok:!1,error:"invalid attachments",status:400};if(0===a.length)return{ok:!0};let c=[];for(let d of a){if(!(0,f.tK)(d))return{ok:!1,error:"invalid attachment ref",status:400};if(!b(d))return{ok:!1,error:"attachment not found in store",status:400};c.push(d)}return{ok:!0,attachments:c}}(b.attachments,d.attachmentExists??(()=>!0));if(!E.ok)return E;let F=void 0===(g=b.source)?void 0:!g||"object"!=typeof g||Array.isArray(g)?null:"string"==typeof g.path&&g.path.trim()&&(null===g.ts||"string"==typeof g.ts)&&"string"==typeof g.text&&g.text.trim()&&"string"==typeof g.fingerprint&&g.fingerprint.trim()&&("claude"===g.engine||"codex"===g.engine)?{path:g.path,ts:g.ts,text:g.text,fingerprint:g.fingerprint,engine:g.engine}:null;if(null===F)return{ok:!1,error:"invalid task source",status:400};let G=Object.hasOwn(b,"board")?u(b.board):void 0;if(null===G)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};if("hidden"!==G&&j(a,k,d.hasBoardMembers??(()=>!1))>=o)return q("project");let H=d.now?.()??(0,h.Ec)(),I=d.id?.()??e().randomUUID(),J={id:I,project:k,status:"inbox",text:m,...n.details?{details:n.details}:{},placement:C,..."pinned"===C&&B?{pos:B}:{},...D.dueAt?{dueAt:D.dueAt,dueTz:D.dueTz}:{},...E.attachments?{attachments:E.attachments}:{},...F?{source:F}:{},...G?{board:G}:{},assignments:[],createdAt:H,updatedAt:H};return{ok:!0,tasks:[...a,J],task:J,recentCreates:A?[...c.filter(a=>a.clientRequestId!==A),{clientRequestId:A,taskId:I}].slice(-p):c,replay:!1}}function A(a,b,c,d=(0,h.Ec)(),e={}){var f,k;let m=a.findIndex(a=>a.id===b);if(m<0)return{ok:!1,error:"task not found",status:404};let p=a[m];if(e.requirePlacementGuards&&(Object.hasOwn(c,"pos")||Object.hasOwn(c,"placement"))||Object.hasOwn(c,"hide")||Object.hasOwn(c,"expectedProject")||Object.hasOwn(c,"expectedRevision")){for(let a of["expectedProject","expectedRevision"])if("string"!=typeof c[a]||!c[a].trim())return{ok:!1,status:400,code:"TASK_INVALID_FIELD",field:a,error:`${a} must be a non-empty string copied from the current task`};if(c.expectedProject!==p.project)return{ok:!1,status:409,code:"TASK_PROJECT_MISMATCH",field:"expectedProject",error:"expectedProject does not match the current task project; read the task and reconsider the request"};if(c.expectedRevision!==(0,g.d4)(p))return{ok:!1,status:409,code:"TASK_REVISION_MISMATCH",field:"expectedRevision",error:"expectedRevision is stale; read the task and reconsider the request"}}let z={};if(Object.hasOwn(c,"text")){let b=r(c.text);if(!b)return{ok:!1,error:"task text is required",status:400};if(b.length>l)return x();z.text=b,a[m].origin?.refinement==="pending"&&b!==a[m].text&&(z.origin={...a[m].origin,refinement:"titled"})}if(Object.hasOwn(c,"details")){let a=y(c.details);if(!a.ok)return a;z.details=a.details}if(Object.hasOwn(c,"status")){let a="inbox"===(f=c.status)||"assigned"===f||"blocked"===f||"done"===f?f:null;if(!a)return{ok:!1,error:"invalid task status",status:400};z.status=a}if(Object.hasOwn(c,"pos")){let a=t(c.pos);if(!a)return s(c.pos);z.pos=a,z.placement="pinned"}if(Object.hasOwn(c,"board")){let b=u(c.board);if(!b)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};let d=e.hasBoardMembers??(()=>!1);if("shown"===b&&!i(p,d(p))&&j(a,p.project,d)>=o)return q("board");z.board=b}if(Object.hasOwn(c,"color")){let a="none"===(k=c.color)||"string"==typeof k&&n.includes(k)?k:null;if(!a)return{ok:!1,error:`color must be one of none, ${n.join(", ")}`,status:400,code:"TASK_INVALID_FIELD",field:"color"};z.color="none"===a?void 0:a}if(Object.hasOwn(c,"hide")){if(!0!==c.hide&&!1!==c.hide)return{ok:!1,error:"hide must be true or false",status:400,code:"TASK_INVALID_FIELD",field:"hide"};if(c.hide){let a=e.seatHolding?e.seatHolding(p):"unknown";if("holds"===a)return{ok:!1,status:409,code:"TASK_HIDE_PROTECTED",field:"hide",error:"this task holds the project's orchestrator seat conversation, which stays on the board; it cannot be hidden"};if("unknown"===a)return{ok:!1,status:503,code:"TASK_HIDE_UNVERIFIED",field:"hide",error:"the orchestrator seat record could not be read, so the hide was not applied; try again"};z.groupHidden={at:d,by:e.actor??"operator",admitted:function(a){let b=new Set;for(let c of a)if("failed"!==c.state){for(let a of[c.clientAttemptId,c.launchId,c.conversationId,c.path].filter(a=>"string"==typeof a&&a.length>0))b.add(a)}return[...b].sort()}(p.assignments)}}else z.groupHidden=void 0}if(Object.hasOwn(c,"placement")){let a=v(c.placement);if(!a)return{ok:!1,error:"invalid placement",status:400};if("pinned"===a&&!z.pos&&!p.pos)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};z.placement=a}if(Object.hasOwn(c,"dueAt")||Object.hasOwn(c,"dueTz"))if(null===c.dueAt&&void 0===c.dueTz)z.dueAt=void 0,z.dueTz=void 0;else{let a=w(c.dueAt,c.dueTz);if(!a.ok)return{ok:!1,error:a.error,status:400};z.dueAt=a.dueAt,z.dueTz=a.dueTz}let B=Object.keys(c).every(a=>"color"===a||"hide"===a||"expectedProject"===a||"expectedRevision"===a)&&(Object.hasOwn(c,"color")||Object.hasOwn(c,"hide")),C={...p,...z,updatedAt:B?p.updatedAt:d};Object.hasOwn(z,"dueAt")&&void 0===z.dueAt&&(delete C.dueAt,delete C.dueTz),"unplaced"===C.placement&&delete C.pos,Object.hasOwn(z,"details")&&void 0===z.details&&delete C.details,Object.hasOwn(z,"color")&&void 0===z.color&&delete C.color,Object.hasOwn(z,"groupHidden")&&void 0===z.groupHidden&&delete C.groupHidden;let D=a.slice();return D[m]=C,{ok:!0,tasks:D,task:C}}function B(a,b,c,d,e){let f=a,g=[];for(let a of c){if("failed"===a.state)continue;let c=(0,k.On)(a),h=(0,k.Z1)(a);if(!c||!h||(0,k.v1)(f,c))continue;let i=(0,k.IE)(f,{project:b,origin:h,identity:c},e);if(!i.ok)return i;if(d&&i.taskIds.includes(d))return{ok:!1,error:"this task is the conversation's own membership; link the conversation to another task first or delete the task",status:409};f=i.tasks,g.push(...i.created)}return{ok:!0,tasks:f,replacements:g}}function C(a,b,c={}){let d=a.find(a=>a.id===b);return d?B(a.filter(a=>a.id!==b),d.project,d.assignments,null,c):{ok:!1,error:"task not found",status:404}}function D(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};return"string"==typeof a.launchId&&a.launchId.trim()&&(b.launchId=a.launchId.trim()),"string"==typeof a.path&&a.path.trim()&&(b.path=a.path.trim()),"string"==typeof a.conversationId&&a.conversationId.trim()&&(b.conversationId=a.conversationId.trim()),"number"==typeof a.panePid&&Number.isInteger(a.panePid)&&a.panePid>0&&(b.panePid=a.panePid),null!=b.launchId||null!=b.conversationId||null!=b.path||null!=b.panePid?b:null}function E(a,b){return null!=b.launchId?a.launchId===b.launchId:null!=b.conversationId?a.conversationId===b.conversationId:null!=b.path?a.path===b.path:null!=b.panePid&&a.panePid===b.panePid}function F(a,b,c,d=(0,h.Ec)(),e={}){let f=a.findIndex(a=>a.id===b);if(f<0)return{ok:!1,error:"task not found",status:404};let g="string"==typeof c?{path:c}:c,i=a[f],j=i.assignments.filter(a=>!E(a,g));if(j.length===i.assignments.length)return{ok:!0,tasks:a,task:i};let k=i.assignments.filter(a=>E(a,g)),l={...i,assignments:j,updatedAt:d},m=a.slice();m[f]=l;let n=B(m,i.project,k,b,{now:()=>d,...e});return n.ok?{ok:!0,tasks:n.tasks,task:l}:n}function G(a,b){return a.find(a=>a.engine===b&&"string"==typeof a.accountId)?.accountId??null}function H(a,b){let c=a.slice();for(let a of b){let b=c.findIndex(b=>a.launchId&&b.launchId?b.launchId===a.launchId:null!==a.path&&b.path===a.path||null===a.path&&null!==a.panePid&&null===b.path&&b.panePid===a.panePid),d=b>=0?c[b]:void 0,e=void 0!==a.launchId?a.launchId:d?.launchId,f=void 0!==a.clientAttemptId?a.clientAttemptId:d?.clientAttemptId,g=void 0!==a.conversationId?a.conversationId:d?.conversationId,h={...void 0!==e?{launchId:e}:{},...void 0!==f?{clientAttemptId:f}:{},path:a.path,...void 0!==g?{conversationId:g}:{},panePid:a.panePid,state:a.state,error:a.error,at:a.at,...void 0!==a.accountId?{accountId:a.accountId}:{},...void 0!==a.engine?{engine:a.engine}:{}};c=b>=0?[...c.slice(0,b),h,...c.slice(b+1)]:[...c,h]}return c}function I(a,b,c,d=(0,h.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f=a[e],g=H(f.assignments,c),i=g.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state||"linked"===a.state),j=f.status;("inbox"===j||"assigned"===j)&&(j=i?"assigned":"inbox");let k={...f,status:j,assignments:g,updatedAt:d},l=a.slice();return l[e]=k,{ok:!0,tasks:l,task:k}}},44770:(a,b,c)=>{c.d(b,{Ec:()=>d});function d(){return new Date().toISOString()}},48939:(a,b,c)=>{c.d(b,{IE:()=>n,On:()=>i,Z1:()=>j,mD:()=>r,to:()=>o,v1:()=>k});var d=c(77598),e=c.n(d),f=c(44770),g=c(71106);let h=function(a,b){return b.conversationId&&a.conversationId?a.conversationId===b.conversationId:b.launchId&&a.launchId?a.launchId===b.launchId:b.clientAttemptId&&a.clientAttemptId?a.clientAttemptId===b.clientAttemptId:!!b.path&&a.path===b.path};function i(a){let b={launchId:a.launchId??null,clientAttemptId:a.clientAttemptId??null,conversationId:a.conversationId??null,path:a.path??null,engine:a.engine??null,accountId:a.accountId??null};return m(b)?b:null}function j(a){let b=a.clientAttemptId??a.launchId;if(b)return{kind:"launch",key:b};let c=a.conversationId??a.path;return c?{kind:"conversation",key:c}:null}function k(a,b){return a.some(a=>a.assignments.some(a=>"failed"!==a.state&&h(a,b)))}function l(a,b,c){let d=a.assignments.findIndex(a=>h(a,b));if(d>=0){let e=a.assignments[d],f={...e,...b.launchId&&!e.launchId?{launchId:b.launchId}:{},...b.clientAttemptId&&!e.clientAttemptId?{clientAttemptId:b.clientAttemptId}:{},...b.conversationId&&!e.conversationId?{conversationId:b.conversationId}:{},path:e.path??b.path??null,...b.engine&&!e.engine?{engine:b.engine}:{},...b.accountId&&!e.accountId?{accountId:b.accountId}:{}};if(JSON.stringify(f)===JSON.stringify(e))return{task:a,changed:!1};let g=a.assignments.slice();return g[d]=f,{task:{...a,assignments:g,updatedAt:c},changed:!0}}let e={...b.launchId?{launchId:b.launchId}:{},...b.clientAttemptId?{clientAttemptId:b.clientAttemptId}:{},path:b.path??null,...b.conversationId?{conversationId:b.conversationId}:{},panePid:null,state:"linked",error:null,at:c,...b.engine?{engine:b.engine}:{},...b.accountId?{accountId:b.accountId}:{}},f="inbox"===a.status?"assigned":a.status;return{task:{...a,status:f,assignments:[...a.assignments,e],updatedAt:c},changed:!0}}function m(a){return!!(a.launchId||a.clientAttemptId||a.conversationId||a.path)}function n(a,b,c={}){var d;let g,i=b.project.trim();if(!i&&!b.explicitTaskIds?.length)return{ok:!1,error:"project is required",status:400};if(!b.origin.key.trim())return{ok:!1,error:"membership origin key is required",status:400};if(!m(b.identity))return{ok:!1,error:"membership needs a launch, conversation or path identity",status:400};let j=c.now?.()??(0,f.Ec)(),k=a.slice(),o=!1,p=(a,b)=>{b.changed&&(k[a]=b.task,o=!0)},q=k.filter(a=>a.assignments.some(a=>{var c;return"failed"!==a.state&&((c=b.identity).launchId&&a.launchId?a.launchId===c.launchId:!!c.clientAttemptId&&a.clientAttemptId===c.clientAttemptId)})),r=k.find(a=>a.project===(i||a.project)&&a.origin?.kind===b.origin.kind&&a.origin.key===b.origin.key);if(b.explicitTaskIds?.length){let c=[...new Set(b.explicitTaskIds)];if(r&&!c.includes(r.id))return{ok:!1,error:"this launch was admitted without a task target; a retry cannot add one",status:409};if(q.length&&(q.length!==c.length||q.some(a=>!c.includes(a.id))))return{ok:!1,error:"this launch was admitted with a different task target set; a retry keeps the original",status:409};let d=c.map(a=>k.findIndex(b=>b.id===a)),e=d.findIndex(a=>a<0);if(e>=0)return{ok:!1,error:`task ${c[e]} is not available`,status:404};let f=new Set(d.map(a=>k[a].project));if(f.size>1||i&&!f.has(i))return{ok:!1,error:"explicit tasks must belong to the launch's project",status:409};for(let a of d)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:c,created:[],changed:o}}let s=k.findIndex(a=>a.project===i&&a.origin?.kind===b.origin.kind&&a.origin.key===b.origin.key);if(s>=0)return p(s,l(k[s],b.identity,j)),{ok:!0,tasks:o?k:a.slice(),taskIds:[k[s].id],created:[],changed:o};let t=k.map((a,b)=>({task:a,index:b})).filter(({task:a})=>a.assignments.some(a=>"failed"!==a.state&&h(a,b.identity)));if(t.length){for(let{index:a}of t)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:t.map(({task:a})=>a.id),created:[],changed:o}}let u=(b.inherit??[]).filter(m),v=k.map((a,b)=>({task:a,index:b})).filter(({task:a})=>u.some(b=>a.assignments.some(a=>"failed"!==a.state&&h(a,b))));if(v.length){for(let{index:a}of v)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:v.map(({task:a})=>a.id),created:[],changed:o}}let w=c.id?.()??e().randomUUID(),x=l({id:w,project:i,status:"inbox",text:(d=b.title,(g=(d??"").split(/\r?\n/,1)[0]?.trim()??"")?g.length>80?`${g.slice(0,79).trimEnd()}…`:g:"Untitled task"),placement:"unplaced",origin:{kind:b.origin.kind,key:b.origin.key,refinement:"pending"},assignments:[],createdAt:j,updatedAt:j},b.identity,j).task;for(let a of u)x=l(x,a,j).task;return{ok:!0,tasks:k=[...k,x],taskIds:[w],created:[w],changed:!0}}function o(a,b){return(0,g.mutateTasks)(b=>{let c=n(b,a);return{tasks:c.ok&&c.changed?c.tasks:void 0,result:c}},b)}function p(a){return!(!a.project||!a.path||a.path.startsWith("spawn:"))&&("claude-projects"===a.root||"codex-sessions"===a.root)&&!a.path.includes("/subagents/")}let q=(a,b)=>!!(b.conversationId&&a.conversationIds.has(b.conversationId))||a.paths.has(b.path);function r(a,b,c){return(0,g.mutateTasks)(c=>{let d=function(a,b,c,d=50){let e=function(a){let b={conversationIds:new Set,paths:new Set,launches:new Map};for(let c of a)for(let a of c.assignments)if("failed"!==a.state)for(let d of(a.conversationId&&b.conversationIds.add(a.conversationId),a.path&&b.paths.add(a.path),[a.launchId,a.clientAttemptId])){if(!d)continue;let a=b.launches.get(d)??[];a.includes(c.id)||a.push(c.id),b.launches.set(d,a)}return b}(b),f=[],g=new Set,h=new Map(a.map(a=>[a.path,a])),i=b=>(b.agentPath?h.get(b.agentPath):void 0)??(b.conversationId?a.find(a=>a.conversationId===b.conversationId):void 0);for(let a of c){if(a.hiddenAt)continue;let b=a.runs.flatMap(a=>a.attempts).map(i).filter(a=>!!a);for(let a of b)g.add(a.path);if(!a.taskIds.length)for(let c of b)q(e,c)||f.length>=d||(f.push({project:c.project,origin:{kind:"pipeline",key:a.id},title:a.task,identity:{conversationId:c.conversationId??null,path:c.path,engine:"claude"===c.engine||"codex"===c.engine?c.engine:null}}),e.paths.add(c.path),c.conversationId&&e.conversationIds.add(c.conversationId))}let j=(a,b)=>{let c=function(a,b){let c=[b.spawn?.launchId,b.spawn?.clientAttemptId].filter(a=>!!a),d=new Set;for(let b of c)for(let c of a.launches.get(b)??[])d.add(c);return[...d]}(e,a);c.length?f.push({project:a.project,origin:{kind:"launch",key:a.spawn?.clientAttemptId??a.spawn?.launchId??a.path},identity:{launchId:a.spawn?.launchId??null,clientAttemptId:a.spawn?.clientAttemptId??null,conversationId:a.conversationId??null,path:a.path},explicitTaskIds:c}):f.push({project:a.project,origin:{kind:"conversation",key:a.conversationId??a.path},title:a.title,identity:{conversationId:a.conversationId??null,path:a.path,engine:"claude"===a.engine||"codex"===a.engine?a.engine:null},...b.length?{inherit:b}:{}}),e.paths.add(a.path),a.conversationId&&e.conversationIds.add(a.conversationId)};for(let b of a){if(f.length>=d)break;b.parent||g.has(b.path)||!p(b)||q(e,b)||j(b,[])}for(let b of a){if(f.length>=d)break;if(!b.parent||g.has(b.path)||!p(b)||q(e,b))continue;let a=h.get(b.parent);(!a||q(e,a))&&j(b,a?[{conversationId:a.conversationId??null,path:a.path}]:[])}return f}(a,c,b);if(!d.length)return{tasks:void 0,result:0};let e=function(a,b,c={}){let d=a.slice(),e=0;for(let a of b){let b=n(d,a,c);b.ok&&b.changed&&(d=b.tasks,e+=1)}return{tasks:d,admitted:e}}(c,d);return{tasks:e.admitted?e.tasks:void 0,result:e.admitted}},c)}}};
@@ -1 +1 @@
1
- "use strict";exports.id=3086,exports.ids=[3086],exports.modules={4934:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KZ:()=>h,uh:()=>k,wj:()=>l});var e=c(803),f=c(96458),g=a([e]);e=(g.then?(await g)():g)[0];let m=globalThis;function h(a,b={},c=new AbortController().signal){let d={...b,persist:a.persist,...a.fresh?{fresh:!0}:{}};if(c.aborted)return Promise.reject(i(c.reason));if(!(0,f.hq)()||null===(0,f.hn)())return(0,e.SW)(void 0,{...d,signal:c}).then(a=>{if(c.aborted)throw i(c.reason);return a});let{onResourceSnapshot:g,...j}=d;return(0,f.PC)(j,g,{signal:c})}let n=(a,b)=>h(a,{},b);function i(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}function j(a,b){if(b.settled||b.subscribers>0||(b.controller.abort(i()),b.started))return;let c=a.queue.indexOf(b);c>=0&&a.queue.splice(c,1),b.settled=!0,b.reject(i())}async function k(a={},b=n){var c,d;let e=m.__llvFileScanCoordinator??={generation:0,queue:[],startScheduled:!1};if(a.signal?.aborted)throw i(a.signal.reason);let f={persist:!0===a.persist,fresh:!0===a.fresh},g=!0===a.exclusive,h=e.inflight,l=g||!h||h.controller.signal.aborted||h.exclusive||!1===a.join||(c=h.intent,!c.persist&&f.persist||!c.fresh&&f.fresh)?function(a,b,c,d){let e,f,g;if(!d){let c=a.queue.find(a=>!a.exclusive);if(c)return c.intent={persist:c.intent.persist||b.persist,fresh:c.intent.fresh||b.fresh},c}let h=((g=new Promise((a,b)=>{e=a,f=b})).catch(()=>void 0),{generation:0,intent:b,runner:c,exclusive:d,controller:new AbortController,subscribers:0,started:!1,settled:!1,promise:g,resolve:e,reject:f});return a.queue.push(h),function a(b){b.startScheduled||(b.startScheduled=!0,queueMicrotask(()=>{if(b.startScheduled=!1,b.inflight)return;let c=b.queue.shift();c&&function(b,c){let d;b.generation+=1,c.generation=b.generation,c.started=!0,b.inflight=c;try{d=Promise.resolve(c.runner(c.intent,c.controller.signal))}catch(a){d=Promise.reject(a)}d.then(a=>{c.settled=!0,c.resolve(a)},a=>{c.settled=!0,c.reject(a)}).finally(()=>{b.inflight===c&&(b.inflight=void 0),a(b)})}(b,c)}))}(a),h}(e,f,b,g):h;return d=a.signal,d?.aborted?(j(e,l),Promise.reject(i(d.reason))):(l.subscribers+=1,new Promise((a,b)=>{let c=!0,f=()=>{c&&(c=!1,d?.removeEventListener("abort",g),l.subscribers-=1,j(e,l))},g=()=>{f(),b(i(d?.reason))};d?.addEventListener("abort",g,{once:!0}),l.promise.then(b=>{c&&(f(),a(structuredClone(b)))},a=>{c&&(f(),b(a))})}))}function l(){return k({persist:!0})}d()}catch(a){d(a)}})},23086:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ll:()=>P,Nm:()=>O,TF:()=>v,vx:()=>Q});var e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(50920),l=c(7058),m=c(94284),n=c(7343),o=c(78598),p=c(4934),q=a([p]);function r(...a){return p.KZ(...a)}p=(q.then?(await q)():q)[0];let R="files-scan-snapshot.json",S=-1/0,T=globalThis;function s(a){return"object"==typeof a&&null!==a}function t(a){if(!s(a)||!0!==a.complete||!Array.isArray(a.files)||!Array.isArray(a.projectCatalog))return!1;let b=a.files.every(a=>{var b;return!!s(a)&&"string"==typeof a.path&&("codex-sessions"===a.root||"claude-projects"===a.root||"claude-tasks"===a.root||"openclaw-sessions"===a.root)&&"string"==typeof a.name&&"string"==typeof a.project&&"string"==typeof a.title&&("codex"===a.engine||"claude"===a.engine||"shell"===a.engine||"openclaw"===a.engine)&&"string"==typeof a.kind&&("codex"===a.fmt||"claude"===a.fmt||"plain"===a.fmt||"openclaw"===a.fmt)&&(null===a.parent||"string"==typeof a.parent)&&"number"==typeof a.mtime&&Number.isFinite(a.mtime)&&"number"==typeof a.size&&Number.isFinite(a.size)&&(void 0===a.sessionStartedAt||null===a.sessionStartedAt||"string"==typeof a.sessionStartedAt)&&(void 0===a.nativeParentThreadId||null===a.nativeParentThreadId||"string"==typeof a.nativeParentThreadId)&&(void 0===a.nativeForkSourceThreadId||null===a.nativeForkSourceThreadId||"string"==typeof a.nativeForkSourceThreadId)&&("live"===a.activity||"recent"===a.activity||"stalled"===a.activity||"idle"===a.activity)&&(void 0===a.authoritativeTurn||(b=a.authoritativeTurn,!!s(b)&&("busy"===b.state||"terminal"===b.state||"idle"===b.state||"unknown"===b.state)&&("lifecycle"===b.source||"tool"===b.source||"assistant"===b.source||"empty"===b.source)&&(null===b.terminalAt||"string"==typeof b.terminalAt)))&&(null===a.proc||"running"===a.proc||"done"===a.proc||"killed"===a.proc)&&(null===a.pid||"number"==typeof a.pid)&&(null===a.model||"string"==typeof a.model)&&(null===a.pendingQuestion||s(a.pendingQuestion))&&(null===a.waitingInput||s(a.waitingInput))}),c=a.projectCatalog.every(a=>s(a)&&"string"==typeof a.project&&"number"==typeof a.smt&&Number.isFinite(a.smt)&&"number"==typeof a.conversations&&Number.isSafeInteger(a.conversations)&&(void 0===a.projectRoot||"string"==typeof a.projectRoot));return b&&c}function u(){try{let a=JSON.parse(h().readFileSync((0,k.BQ)(R),"utf8"));if(!s(a)||1!==a.version||11!==a.schemaVersion||!t(a.snapshot))return;return a.snapshot}catch{return}}function v(){return u()}function w(a){let b,c="create state directory",d=(0,k.BQ)(R);try{let e=(0,k.BQ)(R);d=e,h().mkdirSync(j().dirname(e),{recursive:!0,mode:448}),b=j().join(j().dirname(e),`.${j().basename(e)}.${process.pid}.${f().randomUUID()}.tmp`),c="write temporary snapshot",d=b,h().writeFileSync(b,JSON.stringify({version:1,schemaVersion:11,snapshot:a})+"\n",{encoding:"utf8",mode:384}),c="rename temporary snapshot",d=e,h().renameSync(b,e)}catch(e){if(void 0!==b)try{h().unlinkSync(b)}catch{}let a=Date.now();if(a-S>=6e4){S=a;let b=e instanceof Error?`${e.message}${"code"in e&&e.code?` (${String(e.code)})`:""}`:String(e);console.error(`[files scan cache] ${c} failed for ${d}: ${b}; a later refresh will retry`)}}}function x(a){return s(a)&&"promise"in a?x(a.promise):s(a)&&"function"==typeof a.then?Promise.resolve(a):void 0}function y(a,b,c,d=c,e=new AbortController){let f={generation:b,promise:c,resourcePromise:d,controller:e,subscribers:0,settled:!1};a.refresh=f;let g=()=>{f.settled=!0,a.refresh===f&&(a.refresh=void 0)};return c.then(g,g),f}function z(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}function A(a,b){return b?.aborted?Promise.reject(z(b.reason)):(a.subscribers+=1,new Promise((c,d)=>{let e=!0,f=()=>{e&&(e=!1,b?.removeEventListener("abort",g),a.subscribers-=1,0!==a.subscribers||a.settled||a.controller.abort(z()))},g=()=>{f(),d(z(b?.reason))};b?.addEventListener("abort",g,{once:!0}),a.promise.then(a=>{e&&(f(),c(a))},a=>{e&&(f(),d(a))})}))}async function B(a,b,c,d){let e=performance.now();try{let f=await d();return a.lastScan={generation:b,reason:c,status:"complete",durationMs:performance.now()-e},f}catch(d){throw a.lastScan={generation:b,reason:c,status:"failed",durationMs:performance.now()-e},d}}function C(a,b,c,d,e){let f=void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration,g="ordinary"===c||"cold"===c;return B(a,b,c,async()=>{let c=await (0,p.uh)({fresh:f,join:g,signal:e},(b,c)=>r(b,{persistIndex:"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER,...d?{onResourceSnapshot:d,resourceBaseline:a.snapshot}:{}},c));if(!c.complete)throw Error("filesystem scan incomplete");return"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER&&w(c),a.snapshot=c,a.snapshotGeneration=Math.max(a.snapshotGeneration,b),a.refreshedAt=Date.now(),a.completedAt=a.refreshedAt,f&&void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration&&(a.freshObservationGeneration=void 0),c})}function D(a,b,c){let d=new AbortController,e=C(a,b,c,void 0,d.signal);return y(a,b,e,e,d)}function E(a,b,c){var d;let e,f,g,h,i,j,k;return d=(d,e)=>C(a,b,c,d,e),g=new AbortController,h=!1,(i=new Promise((a,b)=>{e=a,f=b})).catch(()=>{}),j=a=>{h||(h=!0,e(a))},(k=d(j,g.signal)).then(j,a=>{h||f(a)}),y(a,b,k,i,g)}function F(a,b){let c=!1,d=!1,e=new AbortController,f=new Promise(a=>setImmediate(a)).then(()=>{if(c=!0,e.signal.aborted)throw z(e.signal.reason);if(d){if(!a.snapshot)throw Error("deferred file scan canceled without a completed snapshot");return a.snapshot}return C(a,b,"ordinary",void 0,e.signal)}),g=y(a,b,f,f,e);return g.cancelBeforeStart=()=>!c&&(d=!0,!0),g}async function G(a,b,c,d="generation",e){for(;!a.snapshot||a.snapshotGeneration<b||void 0!==c&&(a.pinnedSnapshots?.get(c)?.generation??-1)<b;){let f=a.refresh??(c?function(a,b,c,d){let e=new AbortController,f=void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration,g=B(a,b,d,async()=>{let d=await (0,p.uh)({fresh:f,join:!1,exclusive:!0,signal:e.signal},(a,b)=>r(a,{persistIndex:"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER,pin:c},b));if(!d.complete)throw Error("filesystem scan incomplete");let g=d.pinOverlayPaths??[],h=new Set(g),i={files:d.files.filter(a=>!h.has(a.path)),projectCatalog:d.projectCatalog,complete:!0};for(a.pinnedSnapshots??=new Map,a.pinnedSnapshots.delete(c),a.pinnedSnapshots.set(c,{snapshot:{...i,files:d.files},...g.length?{pinOverlayPaths:g}:{},generation:b,refreshedAt:Date.now()});a.pinnedSnapshots.size>8;){let b=a.pinnedSnapshots.keys().next().value;if(void 0===b)break;a.pinnedSnapshots.delete(b),a.pinnedGenerations?.delete(b)}return"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER&&w(i),a.snapshot=i,a.snapshotGeneration=Math.max(a.snapshotGeneration,b),a.refreshedAt=Date.now(),a.completedAt=a.refreshedAt,f&&void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration&&(a.freshObservationGeneration=void 0),i});return y(a,b,g,g,e)}(a,b,c,d):D(a,b,d));await A(f,e)}return a.snapshot}function H(a,b){let c=a.pinnedSnapshots?.get(b);if(c)return a.pinnedSnapshots.delete(b),a.pinnedSnapshots.set(b,c),c}function I(a,b,c,d){let e=performance.now(),f=b?H(a,b):void 0;if(f){let b=structuredClone({snapshot:f.snapshot,pinOverlayPaths:f.pinOverlayPaths,generation:f.generation,targetGeneration:c});return{...b,cacheStatus:d??(b.generation<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:f.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}return{snapshot:structuredClone(a.snapshot),generation:a.snapshotGeneration,targetGeneration:c,cacheStatus:d??(a.snapshotGeneration<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:a.completedAt??a.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}function J(a){return a.requestedGeneration+=1,a.requestedGeneration}function K(a){a.catch(()=>void 0)}function L(a,b,c){a.pinnedGenerations??=new Map;let d=Math.max(a.pinnedGenerations.get(b)??-1,c);for(a.pinnedGenerations.delete(b),a.pinnedGenerations.set(b,d);a.pinnedGenerations.size>8;){let b=a.pinnedGenerations.keys().next().value;if(void 0===b)break;a.pinnedGenerations.delete(b)}return d}function M(){let a=(T.__llvFilesRouteScans??=new Map,T.__llvFilesRouteScans),b=a.get("");if(void 0===b){let b=u();b&&function(a){for(let c of((0,n.X$)(a.files),a.files)){var b;let a;if(!0!==c.derivationComplete)continue;try{a=h().statSync(c.path)}catch{continue}if(a.size!==c.size||a.mtimeMs/1e3!==c.mtime)continue;let d=1e3*c.mtime,e=function(a){if("jsonl_turn_open"===a.activityReason||"jsonl_turn_stalled"===a.activityReason||"pane_at_composer"===a.activityReason)return{state:"busy",source:"lifecycle",terminalAt:null};if("jsonl_turn_completed"===a.activityReason){let b=a.lastTurn?.endedAt;return{state:"terminal",source:"lifecycle",terminalAt:"number"==typeof b&&Number.isFinite(b)?new Date(b).toISOString():null}}if("mtime_fresh"===a.activityReason||"mtime_recent"===a.activityReason||"mtime_old"===a.activityReason)return{state:"unknown",source:"empty",terminalAt:null}}(c);if(void 0!==e&&c.path.endsWith(".jsonl")&&(b=c.engine,"claude"===b||"codex"===b||"openclaw"===b)){let a=c.engine;(0,l.Ul)(c.path,c.size,d,a,e,{authoritative:!1,composerReleased:"pane_at_composer"===c.activityReason}),c.authoritativeTurn?(0,l.Ul)(c.path,c.size,d,a,c.authoritativeTurn,{composerReleased:"pane_at_composer"===c.activityReason}):("claude"!==a||"terminal"!==e.state)&&(0,l.Ul)(c.path,c.size,d,a,e,{composerReleased:"pane_at_composer"===c.activityReason})}"claude-projects"===c.root&&c.path.includes(`${j().sep}subagents${j().sep}`)||(0,m.E)("model").set(c.path,[c.size,d,{display:c.model,launch:c.launchModel??null}]),Object.hasOwn(c,"effort")&&("claude"!==c.engine||"running"!==c.proc)&&(0,m.E)("effort").set(c.path,[c.size,d,c.effort??null]),Object.hasOwn(c,"plan")&&(0,m.E)("plan-v2").set(c.path,[c.size,d,c.plan]),Object.hasOwn(c,"goal")&&(0,m.E)("goal-v2").set(c.path,[c.size,d,c.goal]),Object.hasOwn(c,"ctx")&&(0,m.E)("ctx-v2").set(c.path,[c.size,d,c.ctx]),Object.hasOwn(c,"lastTurn")&&(0,m.E)("last-turn-v5").set(c.path,[c.size,d,c.lastTurn]),Object.hasOwn(c,"pendingWakeup")&&(0,m.E)("wakeup-v2").set(c.path,[c.size,d,c.pendingWakeup]),"claude-projects"===c.root&&c.path.endsWith(".jsonl")&&(0,m.E)(o.oS).set(c.path,[c.size,d,function(a){if(!a.pendingQuestion)return null;let{pid:b,paneTarget:c,...d}=a.pendingQuestion;return d}(c)])}}(b);let c={schemaVersion:11,snapshot:b,snapshotGeneration:0,requestedGeneration:0,refreshedAt:0,completedAt:b?function(){try{return h().statSync((0,k.BQ)(R)).mtimeMs}catch{return 0}}():0};return a.set("",c),c}let c=function(a){if(s(a)&&11===a.schemaVersion&&Number.isSafeInteger(a.snapshotGeneration)&&Number.isSafeInteger(a.requestedGeneration)){let b=x(a.refresh);return!b||a.refresh?.controller&&Number.isSafeInteger(a.refresh.subscribers)||y(a,a.refresh?.generation??0,b),a}let b=s(a)?a:{},c={schemaVersion:11,snapshot:t(b.snapshot)?b.snapshot:void 0,snapshotGeneration:0,requestedGeneration:0,refreshedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0,completedAt:"number"==typeof b.completedAt&&Number.isFinite(b.completedAt)?b.completedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0},d=x(b.refresh);if(d){let a=d.then(a=>{if(!a.complete)throw Error("filesystem scan incomplete");return c.snapshot=a,c.refreshedAt=Date.now(),c.completedAt=c.refreshedAt,a});y(c,0,a)}return c}(b);return a.delete(""),a.set("",c),c}async function N(a,b,c=Date.now(),d,e){let f=M();f.requestCount=(f.requestCount??0)+1;let g=b&&!f.snapshot?.files.some(a=>a.path===b)?b:void 0,h=g?f.pinnedSnapshots?.get(g):void 0,i=void 0===g||void 0!==h,j=h?.refreshedAt??f.refreshedAt;if(void 0!==d&&f.snapshot&&i&&(void 0!==f.refresh&&f.refresh.generation>(h?.generation??f.snapshotGeneration)||f.lastScan?.reason==="revision"&&c-j<3e5)){let a=h?.generation??f.snapshotGeneration;return I(f,g,a,f.refresh?"stale":"hit")}let k=void 0!==e&&e<=f.requestedGeneration?e:void 0;if(void 0!==k)g&&(k=L(f,g,k));else if(void 0!==d){let a;f.forcedRevision===d&&void 0!==f.forcedGeneration?a=f.forcedGeneration:(a=J(f),f.forcedRevision=d,f.forcedGeneration=a),k=a,g&&(k=L(f,g,a));let b=G(f,k,g,"revision"),c=()=>{f.forcedGeneration===a&&(f.forcedRevision=void 0,f.forcedGeneration=void 0)};if(!f.snapshot)try{return await b,I(f,g,k,"miss")}finally{c()}b.then(c,c)}if(void 0!==k){let a=G(f,k,g,"generation"),b=!f.snapshot;return b?await a:K(a),I(f,g,k,b?"miss":void 0)}if(g){let a,b;f.pinnedSnapshots??=new Map;let d=H(f,g);if(d&&c-d.refreshedAt<1e3)return I(f,g,d.generation);a=f.pinnedGenerations?.get(g),b=f.pinnedSnapshots?.get(g)?.generation??-1,k=void 0!==a&&a>b?a:L(f,g,J(f));let e=G(f,k,g,"pinned"),h=!f.snapshot;return h?await e:K(e),I(f,g,k,h?"miss":void 0)}if(!f.snapshot){k=f.refresh?.generation??J(f);let a=f.refresh??D(f,k,"cold");return await A(a),I(f,void 0,k,"miss")}return f.refresh?k=f.refresh.generation:c-Math.max(f.refreshedAt,f.ordinaryRefreshRequestedAt??0)>=3e5?(k=J(f),f.ordinaryRefreshRequestedAt=c,F(f,k)):k=f.snapshotGeneration,I(f,void 0,k)}async function O({revalidate:a=!0,signal:b}={}){let c=M();if(c.requestCount=(c.requestCount??0)+1,c.snapshot){let b=Date.now();if(a&&!c.refresh&&b-Math.max(c.refreshedAt,c.ordinaryRefreshRequestedAt??0)>=3e5){let a=J(c);c.ordinaryRefreshRequestedAt=b,F(c,a)}return I(c,void 0,c.snapshotGeneration)}let d=c.refresh?.generation??J(c),e=c.refresh??D(c,d,"cold");return await A(e,b),I(c,void 0,d,"miss")}async function P({fresh:a=!1,now:b=Date.now()}={}){if(a){let a=M(),b=a.freshObservationGeneration??J(a);return a.freshObservationGeneration=b,await G(a,b,void 0,"fresh"),I(a,void 0,b)}let c=await N(void 0,void 0,b);if(c.generation>=c.targetGeneration)return c;let d=M();return await G(d,c.targetGeneration,void 0,"current"),I(d,void 0,c.targetGeneration)}async function Q(){let a,b=M();b.requestCount=(b.requestCount??0)+1;let c=b.freshObservationGeneration;if(void 0===c){let d=b.refresh;d?.cancelBeforeStart?.()?(c=J(b),b.freshObservationGeneration=c,a=E(b,c,"fresh")):d?c=d.generation:(c=J(b),b.freshObservationGeneration=c)}for(;;){let f=a??b.refresh??E(b,c,"fresh");a=void 0;let g=await f.resourcePromise;if(f.generation>=c){var d,e;return d=f.generation,e=c,{snapshot:g,generation:d,targetGeneration:e,cacheStatus:"miss",requestCount:b.requestCount??0,cloneDurationMs:0,refreshedAt:Date.now(),...b.lastScan?{lastScan:{...b.lastScan}}:{}}}await A(f)}}d()}catch(a){d(a)}})},96458:(a,b,c)=>{c.d(b,{PC:()=>q,hq:()=>p,hn:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g);let i={setTimeout:(a,b)=>setTimeout(a,b),clearTimeout:a=>{clearTimeout(a)}};var j=c(31751),k=c(65377),l=c(8638);function m(){return new DOMException("file scan cancelled","AbortError")}function n(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function o(a=process.cwd()){let b=h().join(a,"src/lib/fileScanner.worker.ts"),c=h().join(a,".next/server/file-scanner-worker.js");return f().existsSync(b)&&f().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:f().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:f().existsSync(b)?{executable:process.execPath,workerPath:b}:null}function p(a=process.env){return"test"!==a.NODE_ENV&&"1"!==a.LLV_FILE_SCANNER_WORKER&&"1"!==a.LLV_FILE_SCANNER_WORKER_DISABLED}function q(a,b,c={}){if(c.signal?.aborted)return Promise.reject(m());let e=c.launch??o(c.cwd);if(!e)return Promise.reject(Error("this process has no file scanner worker artifact"));let g=(0,l.FX)(!1),h=void 0===c.launch&&f().existsSync("/usr/bin/nice"),p=(0,d.spawn)(h?"/usr/bin/nice":e.executable,[...h?["-n","10",e.executable]:[],e.workerPath],{cwd:c.cwd??process.cwd(),stdio:["pipe","pipe","pipe"],env:{...(0,k.Fd)(c.env??process.env),LLV_FILE_SCANNER_WORKER:"1"}});return new Promise((d,e)=>{let f,h,k=c.scheduler??i,o=!1,q=!1,r="",s="",t=0,u=null,v=null,w=(a,b)=>{o||(o=!0,void 0!==h&&(k.clearTimeout(h),h=void 0),q&&(c.signal?.removeEventListener("abort",z),q=!1),a?e(a):d(b))},x=a=>{if(!o&&!v){v=a;try{p.kill("SIGKILL")}catch{}(null!==p.exitCode||null!==p.signalCode)&&w(a)}},y=a=>{x(Error(a))},z=()=>x(m()),A=()=>{for(;;){let a,c=r.indexOf("\n");if(c<0)return;let d=r.slice(0,c);if(r=r.slice(c+1),!d)continue;try{a=JSON.parse(d)}catch{y("file scanner worker emitted invalid JSON");return}let e=function(a){var b;return n(a)&&("resource"===a.type||"complete"===a.type)&&n(b=a.snapshot)&&Array.isArray(b.files)&&Array.isArray(b.projectCatalog)&&"boolean"==typeof b.complete&&(void 0===b.conversationCatalog||Array.isArray(b.conversationCatalog))&&(void 0===b.pinOverlayPaths||Array.isArray(b.pinOverlayPaths))?a:null}(a);if(!e)return void y("file scanner worker emitted an invalid message");if("resource"===e.type)b?.(e.snapshot);else{let{conversationCatalog:a,...b}=e.snapshot;f=a,u=b}}};h=k.setTimeout(()=>{h=void 0,y("file scanner worker timed out")},c.timeoutMs??3e5),p.once("error",a=>w(a)),p.stdout.setEncoding("utf8"),p.stdout.on("data",a=>{(t+=Buffer.byteLength(a))>0x2000000?y("file scanner worker exceeded output limit"):(r+=a,A())}),p.stderr.setEncoding("utf8"),p.stderr.on("data",a=>{s=`${s}${a}`,Buffer.byteLength(s)>4096&&(s=Buffer.from(s).subarray(-4096).toString("utf8"))}),p.once("close",(a,b)=>{if(!o){if(v)return void w(v);if(A(),0!==a||!u){let c=s.trim();w(Error(`file scanner worker exited before completion (${b??a??"unknown"})${c?`: ${c}`:""}`));return}if(f){let a=(0,l.pu)(g);(0,l.OQ)(f,g,u.complete),a&&(c.transcriptIndexScheduler??j.O)({complete:u.complete,sources:f.flatMap(a=>"openclaw"===a.engine?[]:[{path:a.path,project:a.project,engine:a.engine,size:a.size,mtimeMs:1e3*a.mtime}])})}w(void 0,u)}}),p.stdin.once("error",a=>{v||w(a)}),c.signal&&(c.signal.addEventListener("abort",z,{once:!0}),q=!0,c.signal.aborted&&z()),p.stdin.end(JSON.stringify({type:"scan",options:a}))})}}};
1
+ "use strict";exports.id=3086,exports.ids=[3086],exports.modules={4934:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KZ:()=>h,uh:()=>k,wj:()=>l});var e=c(803),f=c(96458),g=a([e]);e=(g.then?(await g)():g)[0];let m=globalThis;function h(a,b={},c=new AbortController().signal){let d={...b,persist:a.persist,...a.fresh?{fresh:!0}:{}};if(c.aborted)return Promise.reject(i(c.reason));if(!(0,f.hq)()||null===(0,f.hn)())return(0,e.SW)(void 0,{...d,signal:c}).then(a=>{if(c.aborted)throw i(c.reason);return a});let{onResourceSnapshot:g,...j}=d;return(0,f.PC)(j,g,{signal:c})}let n=(a,b)=>h(a,{},b);function i(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}function j(a,b){if(b.settled||b.subscribers>0||(b.controller.abort(i()),b.started))return;let c=a.queue.indexOf(b);c>=0&&a.queue.splice(c,1),b.settled=!0,b.reject(i())}async function k(a={},b=n){var c,d;let e=m.__llvFileScanCoordinator??={generation:0,queue:[],startScheduled:!1};if(a.signal?.aborted)throw i(a.signal.reason);let f={persist:!0===a.persist,fresh:!0===a.fresh},g=!0===a.exclusive,h=e.inflight,l=g||!h||h.controller.signal.aborted||h.exclusive||!1===a.join||(c=h.intent,!c.persist&&f.persist||!c.fresh&&f.fresh)?function(a,b,c,d){let e,f,g;if(!d){let c=a.queue.find(a=>!a.exclusive);if(c)return c.intent={persist:c.intent.persist||b.persist,fresh:c.intent.fresh||b.fresh},c}let h=((g=new Promise((a,b)=>{e=a,f=b})).catch(()=>void 0),{generation:0,intent:b,runner:c,exclusive:d,controller:new AbortController,subscribers:0,started:!1,settled:!1,promise:g,resolve:e,reject:f});return a.queue.push(h),function a(b){b.startScheduled||(b.startScheduled=!0,queueMicrotask(()=>{if(b.startScheduled=!1,b.inflight)return;let c=b.queue.shift();c&&function(b,c){let d;b.generation+=1,c.generation=b.generation,c.started=!0,b.inflight=c;try{d=Promise.resolve(c.runner(c.intent,c.controller.signal))}catch(a){d=Promise.reject(a)}d.then(a=>{c.settled=!0,c.resolve(a)},a=>{c.settled=!0,c.reject(a)}).finally(()=>{b.inflight===c&&(b.inflight=void 0),a(b)})}(b,c)}))}(a),h}(e,f,b,g):h;return d=a.signal,d?.aborted?(j(e,l),Promise.reject(i(d.reason))):(l.subscribers+=1,new Promise((a,b)=>{let c=!0,f=()=>{c&&(c=!1,d?.removeEventListener("abort",g),l.subscribers-=1,j(e,l))},g=()=>{f(),b(i(d?.reason))};d?.addEventListener("abort",g,{once:!0}),l.promise.then(b=>{c&&(f(),a(structuredClone(b)))},a=>{c&&(f(),b(a))})}))}function l(){return k({persist:!0})}d()}catch(a){d(a)}})},23086:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ll:()=>Q,Nm:()=>P,TF:()=>w,vx:()=>R});var e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(50920),l=c(24661),m=c(7058),n=c(94284),o=c(7343),p=c(78598),q=c(4934),r=a([q]);function s(...a){return q.KZ(...a)}q=(r.then?(await r)():r)[0];let S="files-scan-snapshot.json",T=-1/0,U=globalThis;function t(a){return"object"==typeof a&&null!==a}function u(a){if(!t(a)||!0!==a.complete||!Array.isArray(a.files)||!Array.isArray(a.projectCatalog))return!1;let b=a.files.every(a=>{var b;return!!t(a)&&"string"==typeof a.path&&("codex-sessions"===a.root||"claude-projects"===a.root||"claude-tasks"===a.root||"openclaw-sessions"===a.root)&&"string"==typeof a.name&&"string"==typeof a.project&&"string"==typeof a.title&&("codex"===a.engine||"claude"===a.engine||"shell"===a.engine||"openclaw"===a.engine)&&"string"==typeof a.kind&&("codex"===a.fmt||"claude"===a.fmt||"plain"===a.fmt||"openclaw"===a.fmt)&&(null===a.parent||"string"==typeof a.parent)&&"number"==typeof a.mtime&&Number.isFinite(a.mtime)&&"number"==typeof a.size&&Number.isFinite(a.size)&&(void 0===a.sessionStartedAt||null===a.sessionStartedAt||"string"==typeof a.sessionStartedAt)&&(void 0===a.nativeParentThreadId||null===a.nativeParentThreadId||"string"==typeof a.nativeParentThreadId)&&(void 0===a.nativeForkSourceThreadId||null===a.nativeForkSourceThreadId||"string"==typeof a.nativeForkSourceThreadId)&&("live"===a.activity||"recent"===a.activity||"stalled"===a.activity||"idle"===a.activity)&&(void 0===a.authoritativeTurn||(b=a.authoritativeTurn,!!t(b)&&("busy"===b.state||"terminal"===b.state||"idle"===b.state||"unknown"===b.state)&&("lifecycle"===b.source||"tool"===b.source||"assistant"===b.source||"empty"===b.source)&&(null===b.terminalAt||"string"==typeof b.terminalAt)))&&(null===a.proc||"running"===a.proc||"done"===a.proc||"killed"===a.proc)&&(null===a.pid||"number"==typeof a.pid)&&(null===a.model||"string"==typeof a.model)&&(null===a.pendingQuestion||t(a.pendingQuestion))&&(null===a.waitingInput||t(a.waitingInput))}),c=a.projectCatalog.every(a=>t(a)&&"string"==typeof a.project&&"number"==typeof a.smt&&Number.isFinite(a.smt)&&"number"==typeof a.conversations&&Number.isSafeInteger(a.conversations)&&(void 0===a.projectRoot||"string"==typeof a.projectRoot));return b&&c}function v(){try{let a=(0,l.dt)((0,k.BQ)(S));if(!t(a)||1!==a.version||11!==a.schemaVersion||!u(a.snapshot))return;return a.snapshot}catch{return}}function w(){return v()}function x(a){let b,c="create state directory",d=(0,k.BQ)(S);try{let e=(0,k.BQ)(S);d=e,h().mkdirSync(j().dirname(e),{recursive:!0,mode:448}),b=j().join(j().dirname(e),`.${j().basename(e)}.${process.pid}.${f().randomUUID()}.tmp`),c="write temporary snapshot",d=b,h().writeFileSync(b,JSON.stringify({version:1,schemaVersion:11,snapshot:a})+"\n",{encoding:"utf8",mode:384}),(0,l.Hr)(b),c="rename temporary snapshot",d=e,h().renameSync(b,e),(0,l.Hr)(j().dirname(e))}catch(e){if(void 0!==b)try{h().unlinkSync(b)}catch{}let a=Date.now();if(a-T>=6e4){T=a;let b=e instanceof Error?`${e.message}${"code"in e&&e.code?` (${String(e.code)})`:""}`:String(e);console.error(`[files scan cache] ${c} failed for ${d}: ${b}; a later refresh will retry`)}}}function y(a){return t(a)&&"promise"in a?y(a.promise):t(a)&&"function"==typeof a.then?Promise.resolve(a):void 0}function z(a,b,c,d=c,e=new AbortController){let f={generation:b,promise:c,resourcePromise:d,controller:e,subscribers:0,settled:!1};a.refresh=f;let g=()=>{f.settled=!0,a.refresh===f&&(a.refresh=void 0)};return c.then(g,g),f}function A(a){return a instanceof Error&&"AbortError"===a.name?a:new DOMException("file scan cancelled","AbortError")}function B(a,b){return b?.aborted?Promise.reject(A(b.reason)):(a.subscribers+=1,new Promise((c,d)=>{let e=!0,f=()=>{e&&(e=!1,b?.removeEventListener("abort",g),a.subscribers-=1,0!==a.subscribers||a.settled||a.controller.abort(A()))},g=()=>{f(),d(A(b?.reason))};b?.addEventListener("abort",g,{once:!0}),a.promise.then(a=>{e&&(f(),c(a))},a=>{e&&(f(),d(a))})}))}async function C(a,b,c,d){let e=performance.now();try{let f=await d();return a.lastScan={generation:b,reason:c,status:"complete",durationMs:performance.now()-e},f}catch(d){throw a.lastScan={generation:b,reason:c,status:"failed",durationMs:performance.now()-e},d}}function D(a,b,c,d,e){let f=void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration,g="ordinary"===c||"cold"===c;return C(a,b,c,async()=>{let c=await (0,q.uh)({fresh:f,join:g,signal:e},(b,c)=>s(b,{persistIndex:"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER,...d?{onResourceSnapshot:d,resourceBaseline:a.snapshot}:{}},c));if(!c.complete)throw Error("filesystem scan incomplete");return"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER&&x(c),a.snapshot=c,a.snapshotGeneration=Math.max(a.snapshotGeneration,b),a.refreshedAt=Date.now(),a.completedAt=a.refreshedAt,f&&void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration&&(a.freshObservationGeneration=void 0),c})}function E(a,b,c){let d=new AbortController,e=D(a,b,c,void 0,d.signal);return z(a,b,e,e,d)}function F(a,b,c){var d;let e,f,g,h,i,j,k;return d=(d,e)=>D(a,b,c,d,e),g=new AbortController,h=!1,(i=new Promise((a,b)=>{e=a,f=b})).catch(()=>{}),j=a=>{h||(h=!0,e(a))},(k=d(j,g.signal)).then(j,a=>{h||f(a)}),z(a,b,k,i,g)}function G(a,b){let c=!1,d=!1,e=new AbortController,f=new Promise(a=>setImmediate(a)).then(()=>{if(c=!0,e.signal.aborted)throw A(e.signal.reason);if(d){if(!a.snapshot)throw Error("deferred file scan canceled without a completed snapshot");return a.snapshot}return D(a,b,"ordinary",void 0,e.signal)}),g=z(a,b,f,f,e);return g.cancelBeforeStart=()=>!c&&(d=!0,!0),g}async function H(a,b,c,d="generation",e){for(;!a.snapshot||a.snapshotGeneration<b||void 0!==c&&(a.pinnedSnapshots?.get(c)?.generation??-1)<b;){let f=a.refresh??(c?function(a,b,c,d){let e=new AbortController,f=void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration,g=C(a,b,d,async()=>{let d=await (0,q.uh)({fresh:f,join:!1,exclusive:!0,signal:e.signal},(a,b)=>s(a,{persistIndex:"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER,pin:c},b));if(!d.complete)throw Error("filesystem scan incomplete");let g=d.pinOverlayPaths??[],h=new Set(g),i={files:d.files.filter(a=>!h.has(a.path)),projectCatalog:d.projectCatalog,complete:!0};for(a.pinnedSnapshots??=new Map,a.pinnedSnapshots.delete(c),a.pinnedSnapshots.set(c,{snapshot:{...i,files:d.files},...g.length?{pinOverlayPaths:g}:{},generation:b,refreshedAt:Date.now()});a.pinnedSnapshots.size>8;){let b=a.pinnedSnapshots.keys().next().value;if(void 0===b)break;a.pinnedSnapshots.delete(b),a.pinnedGenerations?.delete(b)}return"1"!==process.env.LLV_RESOURCE_OBSERVATION_WORKER&&x(i),a.snapshot=i,a.snapshotGeneration=Math.max(a.snapshotGeneration,b),a.refreshedAt=Date.now(),a.completedAt=a.refreshedAt,f&&void 0!==a.freshObservationGeneration&&b>=a.freshObservationGeneration&&(a.freshObservationGeneration=void 0),i});return z(a,b,g,g,e)}(a,b,c,d):E(a,b,d));await B(f,e)}return a.snapshot}function I(a,b){let c=a.pinnedSnapshots?.get(b);if(c)return a.pinnedSnapshots.delete(b),a.pinnedSnapshots.set(b,c),c}function J(a,b,c,d){let e=performance.now(),f=b?I(a,b):void 0;if(f){let b=structuredClone({snapshot:f.snapshot,pinOverlayPaths:f.pinOverlayPaths,generation:f.generation,targetGeneration:c});return{...b,cacheStatus:d??(b.generation<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:f.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}return{snapshot:structuredClone(a.snapshot),generation:a.snapshotGeneration,targetGeneration:c,cacheStatus:d??(a.snapshotGeneration<c?"stale":"hit"),requestCount:a.requestCount??0,cloneDurationMs:performance.now()-e,refreshedAt:a.completedAt??a.refreshedAt,...a.lastScan?{lastScan:{...a.lastScan}}:{}}}function K(a){return a.requestedGeneration+=1,a.requestedGeneration}function L(a){a.catch(()=>void 0)}function M(a,b,c){a.pinnedGenerations??=new Map;let d=Math.max(a.pinnedGenerations.get(b)??-1,c);for(a.pinnedGenerations.delete(b),a.pinnedGenerations.set(b,d);a.pinnedGenerations.size>8;){let b=a.pinnedGenerations.keys().next().value;if(void 0===b)break;a.pinnedGenerations.delete(b)}return d}function N(){let a=(U.__llvFilesRouteScans??=new Map,U.__llvFilesRouteScans),b=a.get("");if(void 0===b){let b=v();b&&function(a){for(let c of((0,o.X$)(a.files),a.files)){var b;let a;if(!0!==c.derivationComplete)continue;try{a=h().statSync(c.path)}catch{continue}if(a.size!==c.size||a.mtimeMs/1e3!==c.mtime)continue;let d=1e3*c.mtime,e=function(a){if("jsonl_turn_open"===a.activityReason||"jsonl_turn_stalled"===a.activityReason||"pane_at_composer"===a.activityReason)return{state:"busy",source:"lifecycle",terminalAt:null};if("jsonl_turn_completed"===a.activityReason){let b=a.lastTurn?.endedAt;return{state:"terminal",source:"lifecycle",terminalAt:"number"==typeof b&&Number.isFinite(b)?new Date(b).toISOString():null}}if("mtime_fresh"===a.activityReason||"mtime_recent"===a.activityReason||"mtime_old"===a.activityReason)return{state:"unknown",source:"empty",terminalAt:null}}(c);if(void 0!==e&&c.path.endsWith(".jsonl")&&(b=c.engine,"claude"===b||"codex"===b||"openclaw"===b)){let a=c.engine;(0,m.Ul)(c.path,c.size,d,a,e,{authoritative:!1,composerReleased:"pane_at_composer"===c.activityReason}),c.authoritativeTurn?(0,m.Ul)(c.path,c.size,d,a,c.authoritativeTurn,{composerReleased:"pane_at_composer"===c.activityReason}):("claude"!==a||"terminal"!==e.state)&&(0,m.Ul)(c.path,c.size,d,a,e,{composerReleased:"pane_at_composer"===c.activityReason})}"claude-projects"===c.root&&c.path.includes(`${j().sep}subagents${j().sep}`)||(0,n.E)("model").set(c.path,[c.size,d,{display:c.model,launch:c.launchModel??null}]),Object.hasOwn(c,"effort")&&("claude"!==c.engine||"running"!==c.proc)&&(0,n.E)("effort").set(c.path,[c.size,d,c.effort??null]),Object.hasOwn(c,"plan")&&(0,n.E)("plan-v2").set(c.path,[c.size,d,c.plan]),Object.hasOwn(c,"goal")&&(0,n.E)("goal-v2").set(c.path,[c.size,d,c.goal]),Object.hasOwn(c,"ctx")&&(0,n.E)("ctx-v2").set(c.path,[c.size,d,c.ctx]),Object.hasOwn(c,"lastTurn")&&(0,n.E)("last-turn-v5").set(c.path,[c.size,d,c.lastTurn]),Object.hasOwn(c,"pendingWakeup")&&(0,n.E)("wakeup-v2").set(c.path,[c.size,d,c.pendingWakeup]),"claude-projects"===c.root&&c.path.endsWith(".jsonl")&&(0,n.E)(p.oS).set(c.path,[c.size,d,function(a){if(!a.pendingQuestion)return null;let{pid:b,paneTarget:c,...d}=a.pendingQuestion;return d}(c)])}}(b);let c={schemaVersion:11,snapshot:b,snapshotGeneration:0,requestedGeneration:0,refreshedAt:0,completedAt:b?function(){try{return h().statSync((0,k.BQ)(S)).mtimeMs}catch{return 0}}():0};return a.set("",c),c}let c=function(a){if(t(a)&&11===a.schemaVersion&&Number.isSafeInteger(a.snapshotGeneration)&&Number.isSafeInteger(a.requestedGeneration)){let b=y(a.refresh);return!b||a.refresh?.controller&&Number.isSafeInteger(a.refresh.subscribers)||z(a,a.refresh?.generation??0,b),a}let b=t(a)?a:{},c={schemaVersion:11,snapshot:u(b.snapshot)?b.snapshot:void 0,snapshotGeneration:0,requestedGeneration:0,refreshedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0,completedAt:"number"==typeof b.completedAt&&Number.isFinite(b.completedAt)?b.completedAt:"number"==typeof b.refreshedAt&&Number.isFinite(b.refreshedAt)?b.refreshedAt:0},d=y(b.refresh);if(d){let a=d.then(a=>{if(!a.complete)throw Error("filesystem scan incomplete");return c.snapshot=a,c.refreshedAt=Date.now(),c.completedAt=c.refreshedAt,a});z(c,0,a)}return c}(b);return a.delete(""),a.set("",c),c}async function O(a,b,c=Date.now(),d,e){let f=N();f.requestCount=(f.requestCount??0)+1;let g=b&&!f.snapshot?.files.some(a=>a.path===b)?b:void 0,h=g?f.pinnedSnapshots?.get(g):void 0,i=void 0===g||void 0!==h,j=h?.refreshedAt??f.refreshedAt;if(void 0!==d&&f.snapshot&&i&&(void 0!==f.refresh&&f.refresh.generation>(h?.generation??f.snapshotGeneration)||f.lastScan?.reason==="revision"&&c-j<3e5)){let a=h?.generation??f.snapshotGeneration;return J(f,g,a,f.refresh?"stale":"hit")}let k=void 0!==e&&e<=f.requestedGeneration?e:void 0;if(void 0!==k)g&&(k=M(f,g,k));else if(void 0!==d){let a;f.forcedRevision===d&&void 0!==f.forcedGeneration?a=f.forcedGeneration:(a=K(f),f.forcedRevision=d,f.forcedGeneration=a),k=a,g&&(k=M(f,g,a));let b=H(f,k,g,"revision"),c=()=>{f.forcedGeneration===a&&(f.forcedRevision=void 0,f.forcedGeneration=void 0)};if(!f.snapshot)try{return await b,J(f,g,k,"miss")}finally{c()}b.then(c,c)}if(void 0!==k){let a=H(f,k,g,"generation"),b=!f.snapshot;return b?await a:L(a),J(f,g,k,b?"miss":void 0)}if(g){let a,b;f.pinnedSnapshots??=new Map;let d=I(f,g);if(d&&c-d.refreshedAt<1e3)return J(f,g,d.generation);a=f.pinnedGenerations?.get(g),b=f.pinnedSnapshots?.get(g)?.generation??-1,k=void 0!==a&&a>b?a:M(f,g,K(f));let e=H(f,k,g,"pinned"),h=!f.snapshot;return h?await e:L(e),J(f,g,k,h?"miss":void 0)}if(!f.snapshot){k=f.refresh?.generation??K(f);let a=f.refresh??E(f,k,"cold");return await B(a),J(f,void 0,k,"miss")}return f.refresh?k=f.refresh.generation:c-Math.max(f.refreshedAt,f.ordinaryRefreshRequestedAt??0)>=3e5?(k=K(f),f.ordinaryRefreshRequestedAt=c,G(f,k)):k=f.snapshotGeneration,J(f,void 0,k)}async function P({revalidate:a=!0,signal:b}={}){let c=N();if(c.requestCount=(c.requestCount??0)+1,c.snapshot){let b=Date.now();if(a&&!c.refresh&&b-Math.max(c.refreshedAt,c.ordinaryRefreshRequestedAt??0)>=3e5){let a=K(c);c.ordinaryRefreshRequestedAt=b,G(c,a)}return J(c,void 0,c.snapshotGeneration)}let d=c.refresh?.generation??K(c),e=c.refresh??E(c,d,"cold");return await B(e,b),J(c,void 0,d,"miss")}async function Q({fresh:a=!1,now:b=Date.now()}={}){if(a){let a=N(),b=a.freshObservationGeneration??K(a);return a.freshObservationGeneration=b,await H(a,b,void 0,"fresh"),J(a,void 0,b)}let c=await O(void 0,void 0,b);if(c.generation>=c.targetGeneration)return c;let d=N();return await H(d,c.targetGeneration,void 0,"current"),J(d,void 0,c.targetGeneration)}async function R(){let a,b=N();b.requestCount=(b.requestCount??0)+1;let c=b.freshObservationGeneration;if(void 0===c){let d=b.refresh;d?.cancelBeforeStart?.()?(c=K(b),b.freshObservationGeneration=c,a=F(b,c,"fresh")):d?c=d.generation:(c=K(b),b.freshObservationGeneration=c)}for(;;){let f=a??b.refresh??F(b,c,"fresh");a=void 0;let g=await f.resourcePromise;if(f.generation>=c){var d,e;return d=f.generation,e=c,{snapshot:g,generation:d,targetGeneration:e,cacheStatus:"miss",requestCount:b.requestCount??0,cloneDurationMs:0,refreshedAt:Date.now(),...b.lastScan?{lastScan:{...b.lastScan}}:{}}}await B(f)}}d()}catch(a){d(a)}})},96458:(a,b,c)=>{c.d(b,{PC:()=>q,hq:()=>p,hn:()=>o});var d=c(31421),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g);let i={setTimeout:(a,b)=>setTimeout(a,b),clearTimeout:a=>{clearTimeout(a)}};var j=c(31751),k=c(65377),l=c(8638);function m(){return new DOMException("file scan cancelled","AbortError")}function n(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function o(a=process.cwd()){let b=h().join(a,"src/lib/fileScanner.worker.ts"),c=h().join(a,".next/server/file-scanner-worker.js");return f().existsSync(b)&&f().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:f().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:f().existsSync(b)?{executable:process.execPath,workerPath:b}:null}function p(a=process.env){return"test"!==a.NODE_ENV&&"1"!==a.LLV_FILE_SCANNER_WORKER&&"1"!==a.LLV_FILE_SCANNER_WORKER_DISABLED}function q(a,b,c={}){if(c.signal?.aborted)return Promise.reject(m());let e=c.launch??o(c.cwd);if(!e)return Promise.reject(Error("this process has no file scanner worker artifact"));let g=(0,l.FX)(!1),h=void 0===c.launch&&f().existsSync("/usr/bin/nice"),p=(0,d.spawn)(h?"/usr/bin/nice":e.executable,[...h?["-n","10",e.executable]:[],e.workerPath],{cwd:c.cwd??process.cwd(),stdio:["pipe","pipe","pipe"],env:{...(0,k.Fd)(c.env??process.env),LLV_FILE_SCANNER_WORKER:"1"}});return new Promise((d,e)=>{let f,h,k=c.scheduler??i,o=!1,q=!1,r="",s="",t=0,u=null,v=null,w=(a,b)=>{o||(o=!0,void 0!==h&&(k.clearTimeout(h),h=void 0),q&&(c.signal?.removeEventListener("abort",z),q=!1),a?e(a):d(b))},x=a=>{if(!o&&!v){v=a;try{p.kill("SIGKILL")}catch{}(null!==p.exitCode||null!==p.signalCode)&&w(a)}},y=a=>{x(Error(a))},z=()=>x(m()),A=()=>{for(;;){let a,c=r.indexOf("\n");if(c<0)return;let d=r.slice(0,c);if(r=r.slice(c+1),!d)continue;try{a=JSON.parse(d)}catch{y("file scanner worker emitted invalid JSON");return}let e=function(a){var b;return n(a)&&("resource"===a.type||"complete"===a.type)&&n(b=a.snapshot)&&Array.isArray(b.files)&&Array.isArray(b.projectCatalog)&&"boolean"==typeof b.complete&&(void 0===b.conversationCatalog||Array.isArray(b.conversationCatalog))&&(void 0===b.pinOverlayPaths||Array.isArray(b.pinOverlayPaths))?a:null}(a);if(!e)return void y("file scanner worker emitted an invalid message");if("resource"===e.type)b?.(e.snapshot);else{let{conversationCatalog:a,...b}=e.snapshot;f=a,u=b}}};h=k.setTimeout(()=>{h=void 0,y("file scanner worker timed out")},c.timeoutMs??3e5),p.once("error",a=>w(a)),p.stdout.setEncoding("utf8"),p.stdout.on("data",a=>{(t+=Buffer.byteLength(a))>0x2000000?y("file scanner worker exceeded output limit"):(r+=a,A())}),p.stderr.setEncoding("utf8"),p.stderr.on("data",a=>{s=`${s}${a}`,Buffer.byteLength(s)>4096&&(s=Buffer.from(s).subarray(-4096).toString("utf8"))}),p.once("close",(a,b)=>{if(!o){if(v)return void w(v);if(A(),0!==a||!u){let c=s.trim();w(Error(`file scanner worker exited before completion (${b??a??"unknown"})${c?`: ${c}`:""}`));return}if(f){let a=(0,l.pu)(g);(0,l.OQ)(f,g,u.complete),a&&(c.transcriptIndexScheduler??j.O)({complete:u.complete,sources:f.flatMap(a=>"openclaw"===a.engine?[]:[{path:a.path,project:a.project,engine:a.engine,size:a.size,mtimeMs:1e3*a.mtime}])})}w(void 0,u)}}),p.stdin.once("error",a=>{v||w(a)}),c.signal&&(c.signal.addEventListener("abort",z,{once:!0}),q=!0,c.signal.aborted&&z()),p.stdin.end(JSON.stringify({type:"scan",options:a}))})}}};