agent-log-viewer 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/README.md +12 -21
  2. package/bin/cli.mjs +28 -4
  3. package/bin/mcp-server.mjs +7 -0
  4. package/bin/mcp-server.test.ts +2 -0
  5. package/bin/provision-telegram-connector.mjs +193 -0
  6. package/bin/server-runtime.mjs +4 -8
  7. package/bin/server-runtime.test.ts +46 -7
  8. package/bin/telegram-login-bridge.py +253 -0
  9. package/bin/telegram-mcp-server.py +106 -0
  10. package/bin/telegram-session-reader.mjs +6 -0
  11. package/bin/telegram-session-validator.mjs +71 -0
  12. package/dist/mcp-server.mjs +31771 -25627
  13. package/dist/standalone/.next/BUILD_ID +1 -1
  14. package/dist/standalone/.next/app-path-routes-manifest.json +22 -15
  15. package/dist/standalone/.next/build-manifest.json +3 -3
  16. package/dist/standalone/.next/prerender-manifest.json +3 -3
  17. package/dist/standalone/.next/react-loadable-manifest.json +19 -0
  18. package/dist/standalone/.next/required-server-files.json +4 -1
  19. package/dist/standalone/.next/routes-manifest.json +48 -6
  20. package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -0
  21. package/dist/standalone/.next/server/app/_global-error/page.js +3 -3
  22. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  23. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  24. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  25. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  26. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  27. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  28. package/dist/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  29. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  30. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  31. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  32. package/dist/standalone/.next/server/app/_not-found/page.js +2 -2
  33. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  35. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  36. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  37. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  38. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  39. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  40. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  41. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  42. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  43. package/dist/standalone/.next/server/app/api/access/route.js +1 -1
  44. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  45. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  46. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  47. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +4 -1
  48. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  49. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
  50. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  51. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +4 -1
  52. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  53. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +4 -1
  54. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  55. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
  56. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  57. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  58. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  59. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +4 -1
  60. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  61. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
  62. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  63. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
  64. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  65. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  66. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  67. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +4 -1
  68. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  69. package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
  70. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  71. package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
  72. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  73. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  74. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  75. package/dist/standalone/.next/server/app/api/answer/route.js +1 -1
  76. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  77. package/dist/standalone/.next/server/app/api/artifact/route.js +1 -0
  78. package/dist/standalone/.next/server/app/api/{orchestrator → artifact}/route.js.nft.json +1 -1
  79. package/dist/standalone/.next/server/app/api/artifact/route_client-reference-manifest.js +1 -0
  80. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  81. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  82. package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
  83. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  84. package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
  85. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  86. package/dist/standalone/.next/server/app/api/board/route.js +1 -1
  87. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  88. package/dist/standalone/.next/server/app/api/bridge/route.js +2 -2
  89. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  90. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  91. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  92. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  93. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  94. package/dist/standalone/.next/server/app/api/files/route.js +2 -2
  95. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  96. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  97. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  98. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  99. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  100. package/dist/standalone/.next/server/app/api/image/route.js +1 -1
  101. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  102. package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
  103. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  104. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  105. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  106. package/dist/standalone/.next/server/app/api/limits/history/route.js +4 -1
  107. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  108. package/dist/standalone/.next/server/app/api/limits/route.js +4 -1
  109. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  110. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  111. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  112. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  113. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  114. package/dist/standalone/.next/server/app/api/log/provenance/route.js +1 -0
  115. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -0
  116. package/dist/standalone/.next/server/app/api/log/provenance/route_client-reference-manifest.js +1 -0
  117. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  118. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  119. package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
  120. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  121. package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
  122. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  123. package/dist/standalone/.next/server/app/api/monitor/lock/route.js +2 -2
  124. package/dist/standalone/.next/server/app/api/monitor/lock/route.js.nft.json +1 -1
  125. package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -1
  126. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  127. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  128. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  129. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  130. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  131. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +3 -0
  132. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -0
  133. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route_client-reference-manifest.js +1 -0
  134. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  135. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  136. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
  137. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  138. package/dist/standalone/.next/server/app/api/pipelines/route.js +2 -2
  139. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  140. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +2 -2
  141. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  142. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  143. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  144. package/dist/standalone/.next/server/app/api/projects/create/route.js +3 -0
  145. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -0
  146. package/dist/standalone/.next/server/app/api/projects/create/route_client-reference-manifest.js +1 -0
  147. package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -0
  148. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -0
  149. package/dist/standalone/.next/server/app/api/projects/crown/route_client-reference-manifest.js +1 -0
  150. package/dist/standalone/.next/server/app/api/push/route.js +2 -2
  151. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  152. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  153. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  154. package/dist/standalone/.next/server/app/api/roles/route.js +2 -2
  155. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  156. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +1 -1
  157. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  158. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
  159. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  160. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
  161. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  162. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
  163. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  164. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +1 -1
  165. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  166. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +1 -1
  167. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  168. package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
  169. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  170. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +1 -1
  171. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  172. package/dist/standalone/.next/server/app/api/runtime/send/route.js +1 -1
  173. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  174. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
  175. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  176. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +1 -1
  177. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  178. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +1 -1
  179. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  180. package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
  181. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  182. package/dist/standalone/.next/server/app/api/search/transcripts/route.js +2 -0
  183. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -0
  184. package/dist/standalone/.next/server/app/api/search/transcripts/route_client-reference-manifest.js +1 -0
  185. package/dist/standalone/.next/server/app/api/session/route.js +1 -1
  186. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  187. package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
  188. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  189. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  190. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  191. package/dist/standalone/.next/server/app/api/spawn/policy/route.js +6 -3
  192. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  193. package/dist/standalone/.next/server/app/api/spawn/route.js +2 -2
  194. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  195. package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
  196. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  197. package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
  198. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  199. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  200. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  201. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  202. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  203. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +1 -1
  204. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  205. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +1 -1
  206. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  207. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  208. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  209. package/dist/standalone/.next/server/app/api/tasks/route.js +2 -2
  210. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  211. package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -0
  212. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -0
  213. package/dist/standalone/.next/server/app/api/telegram/reports/route_client-reference-manifest.js +1 -0
  214. package/dist/standalone/.next/server/app/api/telegram/route.js +1 -0
  215. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -0
  216. package/dist/standalone/.next/server/app/api/telegram/route_client-reference-manifest.js +1 -0
  217. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  218. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  219. package/dist/standalone/.next/server/app/api/tmux/route.js +1 -1
  220. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  221. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  222. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  223. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
  224. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  225. package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
  226. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  227. package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
  228. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  229. package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
  230. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  231. package/dist/standalone/.next/server/app/api/tts/route.js +3 -3
  232. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  233. package/dist/standalone/.next/server/app/api/view/presence/route.js +1 -2
  234. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  235. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  236. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  237. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  238. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  239. package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
  240. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  241. package/dist/standalone/.next/server/app/index.html +1 -1
  242. package/dist/standalone/.next/server/app/index.rsc +3 -3
  243. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  244. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  245. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  246. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  247. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  248. package/dist/standalone/.next/server/app/page.js +41 -24
  249. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  250. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  251. package/dist/standalone/.next/server/app-paths-manifest.json +22 -15
  252. package/dist/standalone/.next/server/chunks/156.js +2 -2
  253. package/dist/standalone/.next/server/chunks/1617.js +2 -0
  254. package/dist/standalone/.next/server/chunks/1858.js +91 -0
  255. package/dist/standalone/.next/server/chunks/1888.js +1 -0
  256. package/dist/standalone/.next/server/chunks/1920.js +1 -1
  257. package/dist/standalone/.next/server/chunks/2190.js +1 -1
  258. package/dist/standalone/.next/server/chunks/230.js +1 -0
  259. package/dist/standalone/.next/server/chunks/2318.js +2 -0
  260. package/dist/standalone/.next/server/chunks/2324.js +1 -0
  261. package/dist/standalone/.next/server/chunks/2338.js +9 -0
  262. package/dist/standalone/.next/server/chunks/2904.js +42 -0
  263. package/dist/standalone/.next/server/chunks/2923.js +1 -0
  264. package/dist/standalone/.next/server/chunks/2962.js +1 -0
  265. package/dist/standalone/.next/server/chunks/2977.js +1 -1
  266. package/dist/standalone/.next/server/chunks/306.js +3 -3
  267. package/dist/standalone/.next/server/chunks/3086.js +1 -0
  268. package/dist/standalone/.next/server/chunks/3139.js +10 -0
  269. package/dist/standalone/.next/server/chunks/3214.js +82 -0
  270. package/dist/standalone/.next/server/chunks/3336.js +1 -1
  271. package/dist/standalone/.next/server/chunks/3558.js +1 -1
  272. package/dist/standalone/.next/server/chunks/3587.js +1 -1
  273. package/dist/standalone/.next/server/chunks/3598.js +81 -0
  274. package/dist/standalone/.next/server/chunks/3740.js +126 -0
  275. package/dist/standalone/.next/server/chunks/3793.js +6 -0
  276. package/dist/standalone/.next/server/chunks/3916.js +1 -0
  277. package/dist/standalone/.next/server/chunks/3953.js +1 -0
  278. package/dist/standalone/.next/server/chunks/4012.js +2 -2
  279. package/dist/standalone/.next/server/chunks/4191.js +1 -1
  280. package/dist/standalone/.next/server/chunks/4260.js +2 -2
  281. package/dist/standalone/.next/server/chunks/4509.js +1 -1
  282. package/dist/standalone/.next/server/chunks/4968.js +1 -1
  283. package/dist/standalone/.next/server/chunks/4972.js +130 -2
  284. package/dist/standalone/.next/server/chunks/5689.js +11 -0
  285. package/dist/standalone/.next/server/chunks/6333.js +47 -0
  286. package/dist/standalone/.next/server/chunks/6796.js +1 -0
  287. package/dist/standalone/.next/server/chunks/6826.js +2 -2
  288. package/dist/standalone/.next/server/chunks/6850.js +1 -1
  289. package/dist/standalone/.next/server/chunks/6909.js +1 -0
  290. package/dist/standalone/.next/server/chunks/6977.js +1 -0
  291. package/dist/standalone/.next/server/chunks/7126.js +1 -0
  292. package/dist/standalone/.next/server/chunks/7159.js +1 -0
  293. package/dist/standalone/.next/server/chunks/7270.js +45 -0
  294. package/dist/standalone/.next/server/chunks/7295.js +10 -0
  295. package/dist/standalone/.next/server/chunks/7471.js +16 -14
  296. package/dist/standalone/.next/server/chunks/7563.js +1 -1
  297. package/dist/standalone/.next/server/chunks/7644.js +13 -0
  298. package/dist/standalone/.next/server/chunks/7722.js +1 -1
  299. package/dist/standalone/.next/server/chunks/7733.js +4 -0
  300. package/dist/standalone/.next/server/chunks/7868.js +1 -0
  301. package/dist/standalone/.next/server/chunks/8026.js +1 -0
  302. package/dist/standalone/.next/server/chunks/8176.js +1 -1
  303. package/dist/standalone/.next/server/chunks/8444.js +1 -1
  304. package/dist/standalone/.next/server/chunks/8465.js +2 -0
  305. package/dist/standalone/.next/server/chunks/849.js +6 -0
  306. package/dist/standalone/.next/server/chunks/8600.js +12 -0
  307. package/dist/standalone/.next/server/chunks/8617.js +2 -0
  308. package/dist/standalone/.next/server/chunks/8797.js +1 -1
  309. package/dist/standalone/.next/server/chunks/8817.js +5 -0
  310. package/dist/standalone/.next/server/chunks/8966.js +2 -2
  311. package/dist/standalone/.next/server/chunks/8996.js +1 -0
  312. package/dist/standalone/.next/server/chunks/9246.js +47 -0
  313. package/dist/standalone/.next/server/chunks/9364.js +310 -0
  314. package/dist/standalone/.next/server/chunks/9411.js +3 -3
  315. package/dist/standalone/.next/server/chunks/9434.js +13 -0
  316. package/dist/standalone/.next/server/chunks/9507.js +1 -0
  317. package/dist/standalone/.next/server/chunks/9676.js +62 -0
  318. package/dist/standalone/.next/server/chunks/9733.js +6 -3
  319. package/dist/standalone/.next/server/chunks/9901.js +62 -0
  320. package/dist/standalone/.next/server/chunks/9937.js +2 -0
  321. package/dist/standalone/.next/server/chunks/9940.js +128 -0
  322. package/dist/standalone/.next/server/chunks/static/media/pdf.worker.min.65fe1ff1.mjs +6 -0
  323. package/dist/standalone/.next/server/file-scanner-worker.js +2 -2
  324. package/dist/standalone/.next/server/files-response-worker.js +5 -5
  325. package/dist/standalone/.next/server/functions-config-manifest.json +8 -1
  326. package/dist/standalone/.next/server/instrumentation.js +1 -1
  327. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  328. package/dist/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  329. package/dist/standalone/.next/server/pages/404.html +1 -1
  330. package/dist/standalone/.next/server/pages/500.html +1 -1
  331. package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
  332. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  333. package/dist/standalone/.next/server/wakatime-sync-worker.js +2 -0
  334. package/dist/standalone/.next/server/webpack-runtime.js +1 -1
  335. package/dist/standalone/.next/static/chunks/2619.fd64e7a5bd9005d5.js +1 -0
  336. package/dist/standalone/.next/static/chunks/8293.5545fdbde0213c98.js +1 -0
  337. package/dist/standalone/.next/static/chunks/9178-e32f088e89b55503.js +1 -0
  338. package/dist/standalone/.next/static/chunks/9b0008ae.eb7a9c4c1c92a63b.js +45 -0
  339. package/dist/standalone/.next/static/chunks/app/_global-error/page-c132c5ba005ff29e.js +1 -0
  340. package/dist/standalone/.next/static/chunks/app/api/access/route-c132c5ba005ff29e.js +1 -0
  341. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-c132c5ba005ff29e.js +1 -0
  342. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-c132c5ba005ff29e.js +1 -0
  343. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-c132c5ba005ff29e.js +1 -0
  344. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-c132c5ba005ff29e.js +1 -0
  345. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-c132c5ba005ff29e.js +1 -0
  346. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-c132c5ba005ff29e.js +1 -0
  347. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-c132c5ba005ff29e.js +1 -0
  348. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-c132c5ba005ff29e.js +1 -0
  349. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-c132c5ba005ff29e.js +1 -0
  350. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-c132c5ba005ff29e.js +1 -0
  351. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-c132c5ba005ff29e.js +1 -0
  352. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-c132c5ba005ff29e.js +1 -0
  353. package/dist/standalone/.next/static/chunks/app/api/accounts/route-c132c5ba005ff29e.js +1 -0
  354. package/dist/standalone/.next/static/chunks/app/api/agent/route-c132c5ba005ff29e.js +1 -0
  355. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-c132c5ba005ff29e.js +1 -0
  356. package/dist/standalone/.next/static/chunks/app/api/answer/route-c132c5ba005ff29e.js +1 -0
  357. package/dist/standalone/.next/static/chunks/app/api/artifact/route-c132c5ba005ff29e.js +1 -0
  358. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-c132c5ba005ff29e.js +1 -0
  359. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-c132c5ba005ff29e.js +1 -0
  360. package/dist/standalone/.next/static/chunks/app/api/attention/route-c132c5ba005ff29e.js +1 -0
  361. package/dist/standalone/.next/static/chunks/app/api/board/route-c132c5ba005ff29e.js +1 -0
  362. package/dist/standalone/.next/static/chunks/app/api/bridge/route-c132c5ba005ff29e.js +1 -0
  363. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-c132c5ba005ff29e.js +1 -0
  364. package/dist/standalone/.next/static/chunks/app/api/conversations/route-c132c5ba005ff29e.js +1 -0
  365. package/dist/standalone/.next/static/chunks/app/api/files/route-c132c5ba005ff29e.js +1 -0
  366. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-c132c5ba005ff29e.js +1 -0
  367. package/dist/standalone/.next/static/chunks/app/api/flows/route-c132c5ba005ff29e.js +1 -0
  368. package/dist/standalone/.next/static/chunks/app/api/image/route-c132c5ba005ff29e.js +1 -0
  369. package/dist/standalone/.next/static/chunks/app/api/inbox/route-c132c5ba005ff29e.js +1 -0
  370. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-c132c5ba005ff29e.js +1 -0
  371. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-c132c5ba005ff29e.js +1 -0
  372. package/dist/standalone/.next/static/chunks/app/api/limits/route-c132c5ba005ff29e.js +1 -0
  373. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-c132c5ba005ff29e.js +1 -0
  374. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-c132c5ba005ff29e.js +1 -0
  375. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-c132c5ba005ff29e.js +1 -0
  376. package/dist/standalone/.next/static/chunks/app/api/log/route-c132c5ba005ff29e.js +1 -0
  377. package/dist/standalone/.next/static/chunks/app/api/logs/route-c132c5ba005ff29e.js +1 -0
  378. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-c132c5ba005ff29e.js +1 -0
  379. package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-c132c5ba005ff29e.js +1 -0
  380. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-c132c5ba005ff29e.js +1 -0
  381. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-c132c5ba005ff29e.js +1 -0
  382. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-c132c5ba005ff29e.js +1 -0
  383. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-c132c5ba005ff29e.js +1 -0
  384. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-c132c5ba005ff29e.js +1 -0
  385. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-c132c5ba005ff29e.js +1 -0
  386. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-c132c5ba005ff29e.js +1 -0
  387. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-c132c5ba005ff29e.js +1 -0
  388. package/dist/standalone/.next/static/chunks/app/api/proc/route-c132c5ba005ff29e.js +1 -0
  389. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-c132c5ba005ff29e.js +1 -0
  390. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-c132c5ba005ff29e.js +1 -0
  391. package/dist/standalone/.next/static/chunks/app/api/push/route-c132c5ba005ff29e.js +1 -0
  392. package/dist/standalone/.next/static/chunks/app/api/resources/route-c132c5ba005ff29e.js +1 -0
  393. package/dist/standalone/.next/static/chunks/app/api/roles/route-c132c5ba005ff29e.js +1 -0
  394. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-c132c5ba005ff29e.js +1 -0
  395. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-c132c5ba005ff29e.js +1 -0
  396. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-c132c5ba005ff29e.js +1 -0
  397. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-c132c5ba005ff29e.js +1 -0
  398. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-c132c5ba005ff29e.js +1 -0
  399. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-c132c5ba005ff29e.js +1 -0
  400. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-c132c5ba005ff29e.js +1 -0
  401. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-c132c5ba005ff29e.js +1 -0
  402. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-c132c5ba005ff29e.js +1 -0
  403. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-c132c5ba005ff29e.js +1 -0
  404. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-c132c5ba005ff29e.js +1 -0
  405. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-c132c5ba005ff29e.js +1 -0
  406. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-c132c5ba005ff29e.js +1 -0
  407. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-c132c5ba005ff29e.js +1 -0
  408. package/dist/standalone/.next/static/chunks/app/api/session/route-c132c5ba005ff29e.js +1 -0
  409. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-c132c5ba005ff29e.js +1 -0
  410. package/dist/standalone/.next/static/chunks/app/api/session/title/route-c132c5ba005ff29e.js +1 -0
  411. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-c132c5ba005ff29e.js +1 -0
  412. package/dist/standalone/.next/static/chunks/app/api/spawn/route-c132c5ba005ff29e.js +1 -0
  413. package/dist/standalone/.next/static/chunks/app/api/staging/route-c132c5ba005ff29e.js +1 -0
  414. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-c132c5ba005ff29e.js +1 -0
  415. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-c132c5ba005ff29e.js +1 -0
  416. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-c132c5ba005ff29e.js +1 -0
  417. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-c132c5ba005ff29e.js +1 -0
  418. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-c132c5ba005ff29e.js +1 -0
  419. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-c132c5ba005ff29e.js +1 -0
  420. package/dist/standalone/.next/static/chunks/app/api/tasks/route-c132c5ba005ff29e.js +1 -0
  421. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-c132c5ba005ff29e.js +1 -0
  422. package/dist/standalone/.next/static/chunks/app/api/telegram/route-c132c5ba005ff29e.js +1 -0
  423. package/dist/standalone/.next/static/chunks/app/api/timeline/route-c132c5ba005ff29e.js +1 -0
  424. package/dist/standalone/.next/static/chunks/app/api/tmux/route-c132c5ba005ff29e.js +1 -0
  425. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-c132c5ba005ff29e.js +1 -0
  426. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-c132c5ba005ff29e.js +1 -0
  427. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-c132c5ba005ff29e.js +1 -0
  428. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-c132c5ba005ff29e.js +1 -0
  429. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-c132c5ba005ff29e.js +1 -0
  430. package/dist/standalone/.next/static/chunks/app/api/tts/route-c132c5ba005ff29e.js +1 -0
  431. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-c132c5ba005ff29e.js +1 -0
  432. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-c132c5ba005ff29e.js +1 -0
  433. package/dist/standalone/.next/static/chunks/app/api/workflows/route-c132c5ba005ff29e.js +1 -0
  434. package/dist/standalone/.next/static/chunks/app/page-ac9463b910bf83fe.js +77 -0
  435. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c132c5ba005ff29e.js +1 -0
  436. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c132c5ba005ff29e.js +1 -0
  437. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c132c5ba005ff29e.js +1 -0
  438. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c132c5ba005ff29e.js +1 -0
  439. package/dist/standalone/.next/static/chunks/webpack-1637988d4c7cf23c.js +1 -0
  440. package/dist/standalone/.next/static/css/498f12ddef7ecb0e.css +1 -0
  441. package/dist/standalone/.next/static/kt9OPe8iwfpNcdOX9ygvb/_buildManifest.js +1 -0
  442. package/dist/standalone/.next/static/media/pdf.worker.min.e890bf87.mjs +6 -0
  443. package/dist/standalone/package.json +9 -5
  444. package/dist/standalone/server.bun.js +38 -0
  445. package/dist/standalone/server.js +18 -37
  446. package/package.json +9 -5
  447. package/vendor/telegram-mcp/.python-version +1 -0
  448. package/vendor/telegram-mcp/LICENSE +201 -0
  449. package/vendor/telegram-mcp/PROVENANCE.md +70 -0
  450. package/vendor/telegram-mcp/SHA256SUMS +24 -0
  451. package/vendor/telegram-mcp/main.py +67 -0
  452. package/vendor/telegram-mcp/pyproject.toml +100 -0
  453. package/vendor/telegram-mcp/requirements.txt +7 -0
  454. package/vendor/telegram-mcp/sanitize.py +143 -0
  455. package/vendor/telegram-mcp/session_string_generator.py +259 -0
  456. package/vendor/telegram-mcp/telegram_mcp/__init__.py +15 -0
  457. package/vendor/telegram-mcp/telegram_mcp/client_identity.py +31 -0
  458. package/vendor/telegram-mcp/telegram_mcp/install_guard.py +209 -0
  459. package/vendor/telegram-mcp/telegram_mcp/runner.py +198 -0
  460. package/vendor/telegram-mcp/telegram_mcp/runtime.py +1812 -0
  461. package/vendor/telegram-mcp/telegram_mcp/singleton.py +143 -0
  462. package/vendor/telegram-mcp/telegram_mcp/tools/__init__.py +13 -0
  463. package/vendor/telegram-mcp/telegram_mcp/tools/accounts.py +31 -0
  464. package/vendor/telegram-mcp/telegram_mcp/tools/chats.py +1163 -0
  465. package/vendor/telegram-mcp/telegram_mcp/tools/contacts.py +802 -0
  466. package/vendor/telegram-mcp/telegram_mcp/tools/events.py +485 -0
  467. package/vendor/telegram-mcp/telegram_mcp/tools/folders.py +600 -0
  468. package/vendor/telegram-mcp/telegram_mcp/tools/groups.py +1286 -0
  469. package/vendor/telegram-mcp/telegram_mcp/tools/media.py +470 -0
  470. package/vendor/telegram-mcp/telegram_mcp/tools/messages.py +2041 -0
  471. package/vendor/telegram-mcp/telegram_mcp/tools/profile.py +449 -0
  472. package/vendor/telegram-mcp/uv.lock +1693 -0
  473. package/dist/standalone/.next/server/app/api/orchestrator/route.js +0 -1
  474. package/dist/standalone/.next/server/app/api/orchestrator/route_client-reference-manifest.js +0 -1
  475. package/dist/standalone/.next/server/chunks/1699.js +0 -1
  476. package/dist/standalone/.next/server/chunks/2596.js +0 -1
  477. package/dist/standalone/.next/server/chunks/3886.js +0 -1
  478. package/dist/standalone/.next/server/chunks/4792.js +0 -101
  479. package/dist/standalone/.next/server/chunks/5622.js +0 -2
  480. package/dist/standalone/.next/server/chunks/616.js +0 -42
  481. package/dist/standalone/.next/server/chunks/620.js +0 -1
  482. package/dist/standalone/.next/server/chunks/6299.js +0 -4
  483. package/dist/standalone/.next/server/chunks/9598.js +0 -1
  484. package/dist/standalone/.next/server/chunks/9936.js +0 -6
  485. package/dist/standalone/.next/static/5aZdjqUDNxpxX8nVsuO2S/_buildManifest.js +0 -1
  486. package/dist/standalone/.next/static/chunks/9260-0e7e550c65609f11.js +0 -1
  487. package/dist/standalone/.next/static/chunks/app/_global-error/page-483eb859fba02a43.js +0 -1
  488. package/dist/standalone/.next/static/chunks/app/api/access/route-483eb859fba02a43.js +0 -1
  489. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-483eb859fba02a43.js +0 -1
  490. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-483eb859fba02a43.js +0 -1
  491. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-483eb859fba02a43.js +0 -1
  492. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-483eb859fba02a43.js +0 -1
  493. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-483eb859fba02a43.js +0 -1
  494. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-483eb859fba02a43.js +0 -1
  495. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-483eb859fba02a43.js +0 -1
  496. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-483eb859fba02a43.js +0 -1
  497. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-483eb859fba02a43.js +0 -1
  498. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-483eb859fba02a43.js +0 -1
  499. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-483eb859fba02a43.js +0 -1
  500. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-483eb859fba02a43.js +0 -1
  501. package/dist/standalone/.next/static/chunks/app/api/accounts/route-483eb859fba02a43.js +0 -1
  502. package/dist/standalone/.next/static/chunks/app/api/agent/route-483eb859fba02a43.js +0 -1
  503. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-483eb859fba02a43.js +0 -1
  504. package/dist/standalone/.next/static/chunks/app/api/answer/route-483eb859fba02a43.js +0 -1
  505. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-483eb859fba02a43.js +0 -1
  506. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-483eb859fba02a43.js +0 -1
  507. package/dist/standalone/.next/static/chunks/app/api/attention/route-483eb859fba02a43.js +0 -1
  508. package/dist/standalone/.next/static/chunks/app/api/board/route-483eb859fba02a43.js +0 -1
  509. package/dist/standalone/.next/static/chunks/app/api/bridge/route-483eb859fba02a43.js +0 -1
  510. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-483eb859fba02a43.js +0 -1
  511. package/dist/standalone/.next/static/chunks/app/api/conversations/route-483eb859fba02a43.js +0 -1
  512. package/dist/standalone/.next/static/chunks/app/api/files/route-483eb859fba02a43.js +0 -1
  513. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-483eb859fba02a43.js +0 -1
  514. package/dist/standalone/.next/static/chunks/app/api/flows/route-483eb859fba02a43.js +0 -1
  515. package/dist/standalone/.next/static/chunks/app/api/image/route-483eb859fba02a43.js +0 -1
  516. package/dist/standalone/.next/static/chunks/app/api/inbox/route-483eb859fba02a43.js +0 -1
  517. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-483eb859fba02a43.js +0 -1
  518. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-483eb859fba02a43.js +0 -1
  519. package/dist/standalone/.next/static/chunks/app/api/limits/route-483eb859fba02a43.js +0 -1
  520. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-483eb859fba02a43.js +0 -1
  521. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-483eb859fba02a43.js +0 -1
  522. package/dist/standalone/.next/static/chunks/app/api/log/route-483eb859fba02a43.js +0 -1
  523. package/dist/standalone/.next/static/chunks/app/api/logs/route-483eb859fba02a43.js +0 -1
  524. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-483eb859fba02a43.js +0 -1
  525. package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-483eb859fba02a43.js +0 -1
  526. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-483eb859fba02a43.js +0 -1
  527. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-483eb859fba02a43.js +0 -1
  528. package/dist/standalone/.next/static/chunks/app/api/orchestrator/route-483eb859fba02a43.js +0 -1
  529. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-483eb859fba02a43.js +0 -1
  530. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-483eb859fba02a43.js +0 -1
  531. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-483eb859fba02a43.js +0 -1
  532. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-483eb859fba02a43.js +0 -1
  533. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-483eb859fba02a43.js +0 -1
  534. package/dist/standalone/.next/static/chunks/app/api/proc/route-483eb859fba02a43.js +0 -1
  535. package/dist/standalone/.next/static/chunks/app/api/push/route-483eb859fba02a43.js +0 -1
  536. package/dist/standalone/.next/static/chunks/app/api/resources/route-483eb859fba02a43.js +0 -1
  537. package/dist/standalone/.next/static/chunks/app/api/roles/route-483eb859fba02a43.js +0 -1
  538. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-483eb859fba02a43.js +0 -1
  539. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-483eb859fba02a43.js +0 -1
  540. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-483eb859fba02a43.js +0 -1
  541. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-483eb859fba02a43.js +0 -1
  542. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-483eb859fba02a43.js +0 -1
  543. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-483eb859fba02a43.js +0 -1
  544. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-483eb859fba02a43.js +0 -1
  545. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-483eb859fba02a43.js +0 -1
  546. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-483eb859fba02a43.js +0 -1
  547. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-483eb859fba02a43.js +0 -1
  548. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-483eb859fba02a43.js +0 -1
  549. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-483eb859fba02a43.js +0 -1
  550. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-483eb859fba02a43.js +0 -1
  551. package/dist/standalone/.next/static/chunks/app/api/session/route-483eb859fba02a43.js +0 -1
  552. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-483eb859fba02a43.js +0 -1
  553. package/dist/standalone/.next/static/chunks/app/api/session/title/route-483eb859fba02a43.js +0 -1
  554. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-483eb859fba02a43.js +0 -1
  555. package/dist/standalone/.next/static/chunks/app/api/spawn/route-483eb859fba02a43.js +0 -1
  556. package/dist/standalone/.next/static/chunks/app/api/staging/route-483eb859fba02a43.js +0 -1
  557. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-483eb859fba02a43.js +0 -1
  558. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-483eb859fba02a43.js +0 -1
  559. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-483eb859fba02a43.js +0 -1
  560. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-483eb859fba02a43.js +0 -1
  561. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-483eb859fba02a43.js +0 -1
  562. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-483eb859fba02a43.js +0 -1
  563. package/dist/standalone/.next/static/chunks/app/api/tasks/route-483eb859fba02a43.js +0 -1
  564. package/dist/standalone/.next/static/chunks/app/api/timeline/route-483eb859fba02a43.js +0 -1
  565. package/dist/standalone/.next/static/chunks/app/api/tmux/route-483eb859fba02a43.js +0 -1
  566. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-483eb859fba02a43.js +0 -1
  567. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-483eb859fba02a43.js +0 -1
  568. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-483eb859fba02a43.js +0 -1
  569. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-483eb859fba02a43.js +0 -1
  570. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-483eb859fba02a43.js +0 -1
  571. package/dist/standalone/.next/static/chunks/app/api/tts/route-483eb859fba02a43.js +0 -1
  572. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-483eb859fba02a43.js +0 -1
  573. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-483eb859fba02a43.js +0 -1
  574. package/dist/standalone/.next/static/chunks/app/api/workflows/route-483eb859fba02a43.js +0 -1
  575. package/dist/standalone/.next/static/chunks/app/page-45fd788b5dbb86eb.js +0 -57
  576. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-483eb859fba02a43.js +0 -1
  577. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-483eb859fba02a43.js +0 -1
  578. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-483eb859fba02a43.js +0 -1
  579. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-483eb859fba02a43.js +0 -1
  580. package/dist/standalone/.next/static/chunks/webpack-46c1a0323c2ca312.js +0 -1
  581. package/dist/standalone/.next/static/css/b5b2fbc52caf460a.css +0 -1
  582. /package/dist/standalone/.next/static/{5aZdjqUDNxpxX8nVsuO2S → kt9OPe8iwfpNcdOX9ygvb}/_ssgManifest.js +0 -0
@@ -1,2 +1,130 @@
1
- "use strict";exports.id=4972,exports.ids=[4972],exports.modules={16196:(a,b,c)=>{function d(a){if(void 0===a)return!1;switch(a.trim().replace(/^(["'])([\s\S]*)\1$/,"$2").trim().toLowerCase()){case"0":case"false":case"off":case"no":return!0;default:return!1}}function e(a=process.env){return!d(a.LLV_STRUCTURED_HOSTS)}function f(a=process.env){return!function(a=process.env){return d(a.LLV_RUNTIME_EVENTS)}(a)&&!!h(a)}function g(a=process.env){return!d(a.NEXT_PUBLIC_RUNTIME_UI)}function h(a=process.env){return a.LLV_RUNTIME_HOST_SOCKET?.trim()||null}c.d(b,{Ee:()=>g,S0:()=>h,Zn:()=>f,cM:()=>e})},21420:(a,b,c)=>{let d;c.d(b,{P3:()=>h,bL:()=>f,x_:()=>g});let e=BigInt(1e6);class f extends Error{constructor(...a){super(...a),this.name="StructuredRuntimeRequirementError"}}function g(a=process.platform,b=process.versions){if("darwin"===a&&!b.bun)throw new f("structured hosts on macOS require the Viewer server to run with Bun")}function h(a){if(!Number.isInteger(a)||a<=0)return null;let b=function(){if(void 0!==d)return d;if("darwin"!==process.platform)return d=null;try{let a=c(85786),b=a.dlopen("/usr/lib/libproc.dylib",{proc_pidinfo:{args:[a.FFIType.i32,a.FFIType.i32,a.FFIType.u64,a.FFIType.ptr,a.FFIType.i32],returns:a.FFIType.i32}});d=(c,d)=>Number(b.symbols.proc_pidinfo(c,3,BigInt(0),a.ptr(d),d.byteLength))}catch{d=null}return d}();if(!b)return null;let f=Buffer.alloc(136);try{var g=b(a,f);if(!Number.isInteger(a)||a<=0||g<136||f.byteLength<136||f.readUInt32LE(12)!==a)return null;let c=f.readBigUInt64LE(120),d=f.readBigUInt64LE(128);return c===BigInt(0)||d>=e?null:`${a}:${c}:${d.toString().padStart(6,"0")}`}catch{return null}}},27146:(a,b,c)=>{c.d(b,{ks:()=>n,oy:()=>t,Pn:()=>r,BQ:()=>s});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h);function j(a=process.env){return"1"===a.LLV_STAGING}let k="agent-log-viewer",l="live-log-viewer";function m(){return process.env.XDG_CONFIG_HOME||i().join(g().homedir(),".config")}function n(a){var b=m(),c=a;let d=i().join(b,k,c);if(e().existsSync(d))return d;let f=i().join(b,l,c);return e().existsSync(f)?f:d}let o=new Set,p=".migrated-from-legacy";function q(a,b){if("1"===process.env.LLV_RESOURCE_OBSERVATION_WORKER||o.has(a))return;let c=i().join(a,p),d=()=>`${new Date().toISOString()} ${b}
2
- `;try{if(e().existsSync(c))return void o.add(a);if(!e().existsSync(b)){e().mkdirSync(a,{recursive:!0}),e().writeFileSync(c,d()),o.add(a);return}if(!e().existsSync(a)){e().mkdirSync(i().dirname(a),{recursive:!0});let c=`${a}.migrating.${process.pid}`;e().rmSync(c,{recursive:!0,force:!0});try{e().cpSync(b,c,{recursive:!0}),e().writeFileSync(i().join(c,p),d()),e().renameSync(c,a)}catch(a){throw e().rmSync(c,{recursive:!0,force:!0}),a}o.add(a);return}e().cpSync(b,a,{recursive:!0,force:!1,errorOnExist:!1}),e().writeFileSync(c,d()),o.add(a)}catch(c){console.error(`viewer state migration ${b} -> ${a} failed; will retry:`,c)}}function r(){let a=process.env.LLV_STATE_DIR;if(j()){var b=a;let c=b||i().join(m(),k,"state-staging"),d=i().resolve(c);if([i().join(m(),k,"state"),i().join(m(),l,"state"),i().join(g().homedir(),".claude","viewer-state")].some(a=>i().resolve(a)===d))throw Error(`staging mode refuses the production state dir ${d}; set LLV_STATE_DIR to a staging-only dir`);return c}if(a)return a;let c=i().join(m(),k,"state");return q(c,i().join(g().homedir(),".claude","viewer-state")),c}function s(...a){return i().join(r(),...a)}function t(){if(j())return s("inbox");let a=i().join(m(),k,"inbox");return q(a,i().join(g().homedir(),".claude","viewer-inbox")),a}},61532:(a,b,c)=>{c.d(b,{vE:()=>e,xE:()=>f});let d=process;function e(){d.__llvStructuredHostStartupFailed=!0}function f(){d.__llvStructuredHostStartupFailed=!1}},94972:(a,b,c)=>{c.r(b),c.d(b,{accountControllerDelayMs:()=>p,activateViewerRuntimeWhenCurrent:()=>o,completeViewerReleaseDemotion:()=>r,initializeOperatorSpawnCapabilityAtStartup:()=>t,registerViewerRuntime:()=>x,runStructuredHostStartup:()=>w,scheduleAccountMigrationController:()=>q,startCurrentReleaseControllers:()=>s,startWakatimeIntegrationIfEnabled:()=>u,viewerReleaseOwnsTraffic:()=>n});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(27146),i=c(16196),j=c(61532),k=c(21420),l=c(65281);let m=globalThis;function n(a=process.env,b=()=>e().readFileSync((0,h.BQ)("viewer-release.json"),"utf8")){let c,d=a.PORT?.trim();if(!d)return!0;try{c=b()}catch(a){return"ENOENT"===a.code}try{let a=JSON.parse(c);if("string"!=typeof a.endpoint)return!1;return new URL(a.endpoint).port===d}catch{return!1}}async function o(a,b,c={}){let d=c.pollMs??250,e=c.schedule??((a,b)=>setTimeout(a,b)),f=c.log??console.error,g=!1,h=!1,i=()=>{if(!h){if(g&&!b()){h=!0,Promise.resolve(c.onDemoted?.()).catch(a=>{f("[viewer release] demotion checkpoint failed",a)});return}e(i,d).unref?.()}},j=async()=>{g||(g=!0,await a(),e(i,d).unref?.())};if(b())return void await j();let k=()=>{if(!g){if(!b())return void e(k,d).unref?.();j().catch(a=>f("[viewer release] deferred runtime activation failed",a))}};e(k,d).unref?.()}function p(a=process.env){let b=Number(a.LLV_ACCOUNT_CONTROLLER_DELAY_MS??0);return Number.isFinite(b)?Math.max(0,b):0}function q(a,b){let c=()=>{a().catch(a=>{console.error("[account migration controller] initial durable reconciliation failed",a)})},d=setTimeout(()=>{b>0?c():setTimeout(c,0).unref?.()},b);d.unref?.()}async function r(a,b=a=>process.exit(a),c=console.error){try{await a(),b(0)}catch(a){c("[viewer release] demotion checkpoint failed",a),b(1)}}async function s(a=process.env,b={loadFlowPipelineController:()=>Promise.all([c.e(616),c.e(4792),c.e(8444),c.e(156)]).then(c.bind(c,60156)),loadAccountMigrationController:()=>Promise.all([c.e(616),c.e(4792),c.e(8444),c.e(2596)]).then(c.bind(c,92596))}){let{startFlowPipelineController:d}=await b.loadFlowPipelineController();if(d(),"1"===a.LLV_ACCOUNT_CONTROLLER_DISABLED)return;let{startAccountMigrationController:e}=await b.loadAccountMigrationController();q(e,p(a))}async function t(a=process.env,b=a=>console.error(a)){let{ensureOperatorSpawnCapability:d,rotateOperatorSpawnCapability:e}=await c.e(4260).then(c.bind(c,74260));"1"===a.LLV_ROTATE_OPERATOR_SPAWN_CAPABILITY?e():d();let f=a.PORT?.trim()||"8898";b(`[viewer] Open http://127.0.0.1:${f}.`)}async function u(a=process.env,b=v,c=(a,b)=>console.error(a,b)){if("1"===a.LLV_WAKATIME_ENABLED)try{await b()}catch{c("[wakatime] startup_failed",{})}}async function v(){if(m.__llvWakatimeWorker)return;let a=process.cwd(),b=g().join(a,"src/lib/wakatimeSync.worker.ts"),d=g().join(a,".next/server/wakatime-sync-worker.js"),f="/usr/local/bin/bun-container",h=e().existsSync(b)&&e().existsSync(f)?{executable:f,workerPath:b}:e().existsSync(d)?{executable:process.execPath,workerPath:d}:{executable:process.execPath,workerPath:b},{spawn:i}=await Promise.resolve().then(c.t.bind(c,31421,23)),j=e().existsSync("/usr/bin/nice"),k=i(j?"/usr/bin/nice":h.executable,[...j?["-n","10",h.executable]:[],h.workerPath],{cwd:a,stdio:["ignore","inherit","inherit"],env:{...(0,l.Fd)(process.env),LLV_WAKATIME_SYNC_WORKER:"1"}});m.__llvWakatimeWorker=k,k.once("error",a=>{console.error("[wakatime] worker_start_failed",{message:a.message})}),k.once("exit",(a,b)=>{if(m.__llvWakatimeWorker===k&&(m.__llvWakatimeWorker=void 0),m.__llvWakatimeWorkerRestart)return;console.error("[wakatime] worker_exited",{code:a,signal:b});let c=setTimeout(()=>{m.__llvWakatimeWorkerRestart=void 0,v()},1e3);c.unref?.(),m.__llvWakatimeWorkerRestart=c})}async function w(a,b=console.error,c={}){let d=c.schedule??((a,b)=>setTimeout(a,b)),e=c.maxRetryMs??1e3,f=Math.min(Math.max(c.jitterRatio??.2,0),1),g=c.random??Math.random,h=c.initialRetryMs??100,i=!1,l=0,m=async()=>{l+=1;try{await a(),(0,j.xE)(),l>1&&b("[structured hosts] startup adoption recovered",{attempts:l})}catch(n){if((0,j.vE)(),n instanceof k.bL)throw b("[structured hosts] startup adoption failed",n),n;if(i)return;let a=1+(2*Math.min(Math.max(g(),0),1)-1)*f,c=Math.min(e,Math.max(0,Math.round(h*a)));h=Math.min(2*h,e),i=!0,1===l&&b("[structured hosts] startup adoption failed; retry scheduled",n),d(()=>{i=!1,m().catch(a=>{b("[structured hosts] startup adoption retry aborted",a)})},c).unref?.()}};await m()}async function x(){(0,l.kL)(),await o(async()=>{if(await t(),await u(),(0,i.cM)()){let{adoptStructuredHostsAtStartup:a}=await Promise.all([c.e(616),c.e(4792),c.e(3886)]).then(c.bind(c,23886));await w(a)}await s()},()=>n(),{onDemoted:()=>r(async()=>{let{agentRegistry:a}=await c.e(616).then(c.bind(c,20616));a().checkpointRollbackMirrorForDemotion()})})}}};
1
+ "use strict";exports.id=4972,exports.ids=[4972],exports.modules={1198:(a,b,c)=>{function d(a,b){let c=RegExp(`^${b}:\\s+(\\d+)\\s*kB`,"m").exec(a);if(!c)return null;let d=Number(c[1]);return Number.isFinite(d)?1024*d:null}function e(a){let b=d(a,"MemTotal"),c=d(a,"MemAvailable");if(null===b||null===c||b<=0)return null;let e=d(a,"SwapTotal")??0,f=d(a,"SwapFree")??e;return{ramTotal:b,ramAvailable:c,swapTotal:e,swapUsed:Math.max(0,e-f)}}function f(a){return{rssBytes:d(a,"VmRSS")??0,swapBytes:d(a,"VmSwap")??0}}function g(a){let b=Number(/page size of (\d+) bytes/.exec(a)?.[1]);if(!Number.isFinite(b)||b<=0)return null;let c=b=>{let c=RegExp(`^${b}:\\s+(\\d+)\\.?`,"m").exec(a);return c?Number(c[1]):null},d=c("Pages free"),e=c("Pages inactive");return null===d||null===e?null:(d+e+(c("Pages purgeable")??0))*b}c.d(b,{CT:()=>k,Lc:()=>g,NW:()=>e,mO:()=>l,sW:()=>f,yh:()=>j});let h=/([\d.]+)\s*([KMGT])/;function i(a){let b=h.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isFinite(c)?Math.round(c*({K:1024,M:1048576,G:0x40000000,T:0x10000000000})[b[2]]):null}function j(a){let b=/total\s*=\s*(\S+)/.exec(a)?.[1],c=/used\s*=\s*(\S+)/.exec(a)?.[1];if(!b||!c)return null;let d=i(b),e=i(c);return null===d||null===e?null:{swapTotal:d,swapUsed:e}}function k(a){let b=new Map;for(let c of a.split("\n")){let a=/^\s*(\d+)\s+(\d+)\s*$/.exec(c);a&&b.set(Number(a[1]),1024*Number(a[2]))}return b}function l(a,b){let c=new Map;for(let[a,d]of b){if(a===d)continue;let b=c.get(d);b?b.push(a):c.set(d,[a])}let d=new Set([a]),e=[],f=[a];for(;f.length;){let a=f.pop();for(let b of(e.push(a),c.get(a)??[]))d.has(b)||(d.add(b),f.push(b))}return e}},14928:(a,b,c)=>{c.d(b,{Gw:()=>H,M:()=>F,UY:()=>I,Vx:()=>E,bG:()=>s,iy:()=>q,jY:()=>G,t0:()=>C});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(52e3),k=c(89204),l=c(95697);let m=new Int32Array(new SharedArrayBuffer(4)),n=new Set,o=0;function p(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("SQLite state stores require the Bun runtime");return a.Database}function q(a){n.add(i().resolve(a))}function r(a,b){let c=a.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?");return b.every(a=>{let b=c.get(a.collection);return b?.schema_version===a.schemaVersion&&b.migration_id===a.migrationId})}function s(a,b){if(!g().existsSync(a))return!1;let c=null;try{return c=w(a),r(c,b)}catch{return!1}finally{c?.close()}}function t(a){if(!(0,l.Ny)(i().dirname(a)))throw new k.Qm("hot state writes are fenced during release handoff")}function u(a,b=!1){if((0,l.Ny)(i().dirname(a))||n.has(i().resolve(a))&&(0,l.T2)(i().dirname(a)))return;let c=(0,l.jU)(i().dirname(a)),d=(0,l.a5)(i().dirname(a));if(!b||null===c||d?.mode!=="fencing"||d.releaseRevision!==c)throw new k.Qm("hot state migration is waiting for release promotion")}function v(a){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(p())(a,{create:!0,strict:!0});try{for(let a=0;a<6e3;a+=1)try{return b.exec("PRAGMA busy_timeout = 0; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON;"),b}catch(a){if(!A(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm("state database connection is busy")}catch(a){throw b.close(),a}}function w(a){o+=1;let b=new(p())(a,{readonly:!0,strict:!0});return b.exec("PRAGMA busy_timeout = 0; PRAGMA foreign_keys = ON;"),b}function x(a){let b=v(a);try{for(let c=0;c<6e3;c+=1)try{return b.exec("PRAGMA journal_mode = WAL; PRAGMA auto_vacuum = INCREMENTAL;"),b.exec("BEGIN IMMEDIATE"),b.exec(`
2
+ CREATE TABLE IF NOT EXISTS state_collections (
3
+ collection TEXT PRIMARY KEY,
4
+ schema_version INTEGER NOT NULL,
5
+ revision INTEGER NOT NULL,
6
+ change_floor INTEGER NOT NULL DEFAULT 0,
7
+ migration_id TEXT NOT NULL,
8
+ imported_at TEXT NOT NULL
9
+ );
10
+ CREATE TABLE IF NOT EXISTS state_rows (
11
+ collection TEXT NOT NULL,
12
+ row_key TEXT NOT NULL,
13
+ value_json TEXT NOT NULL,
14
+ row_order INTEGER NOT NULL,
15
+ row_revision INTEGER NOT NULL,
16
+ controller_active INTEGER NOT NULL CHECK(controller_active IN (0, 1)),
17
+ PRIMARY KEY(collection, row_key),
18
+ FOREIGN KEY(collection) REFERENCES state_collections(collection) ON DELETE CASCADE
19
+ );
20
+ CREATE INDEX IF NOT EXISTS state_rows_collection_order
21
+ ON state_rows(collection, row_order);
22
+ CREATE INDEX IF NOT EXISTS state_rows_controller_active
23
+ ON state_rows(collection, controller_active, row_order);
24
+ CREATE TABLE IF NOT EXISTS state_changes (
25
+ collection TEXT NOT NULL,
26
+ revision INTEGER NOT NULL,
27
+ row_key TEXT NOT NULL,
28
+ operation TEXT NOT NULL CHECK(operation IN ('upsert', 'delete')),
29
+ PRIMARY KEY(collection, revision, row_key),
30
+ FOREIGN KEY(collection) REFERENCES state_collections(collection) ON DELETE CASCADE
31
+ );
32
+ CREATE INDEX IF NOT EXISTS state_changes_collection_revision
33
+ ON state_changes(collection, revision);
34
+ CREATE TABLE IF NOT EXISTS state_leases (
35
+ collection TEXT PRIMARY KEY,
36
+ owner_token TEXT NOT NULL,
37
+ owner_pid INTEGER NOT NULL,
38
+ owner_start_identity TEXT,
39
+ acquired_at INTEGER NOT NULL
40
+ );
41
+ `),b.query("PRAGMA table_info(state_collections)").all().some(a=>"change_floor"===a.name)||b.exec("ALTER TABLE state_collections ADD COLUMN change_floor INTEGER NOT NULL DEFAULT 0"),b.exec("COMMIT"),y(a),b}catch(a){if(z(b),!A(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm("state database initialization is busy")}catch(a){throw b.close(),a}}function y(a){for(let b of[a,`${a}-wal`,`${a}-shm`])try{g().chmodSync(b,384)}catch(a){if("ENOENT"!==a.code)throw a}}function z(a){try{a.exec("ROLLBACK")}catch{}}function A(a){let b=a instanceof Error?a.message:String(a);return/database is (?:locked|busy)|SQLITE_BUSY/i.test(b)}function B(a,b,c){for(let b=0;b<6e3;b+=1)try{a.exec("BEGIN IMMEDIATE");let b=c();return a.exec("COMMIT"),b}catch(b){if(z(a),!A(b))throw b;Atomics.wait(m,0,0,5)}throw new k.Qm(b)}function C(a,b,c={}){!function(a,b){let c=i().resolve(a);if(n.has(c)||s(a,b))return;let d=i().dirname(a);if(null===(0,l.X4)(d))return n.add(c);if(!(0,l.Ny)(d))throw new k.Qm("hot state migration is waiting for release promotion");n.add(c)}(a,b);let d=!c.reimportExisting&&s(a,b),e=x(a);try{for(let f=0;f<6e3;f+=1)try{if(e.exec("BEGIN IMMEDIATE"),u(a,d),c.reimportExisting&&!r(e,b)){let a=e.query("DELETE FROM state_leases WHERE collection = ?"),c=e.query("DELETE FROM state_collections WHERE collection = ?");for(let d of b)a.run(d.collection),c.run(d.collection)}for(let a of b){let b=e.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?").get(a.collection);if(b){if(b.schema_version!==a.schemaVersion)throw Error(`unsupported ${a.collection} SQLite schema: ${b.schema_version}`);if(b.migration_id!==a.migrationId)throw Error(`unsupported ${a.collection} SQLite migration: ${b.migration_id}`);continue}!function(a,b){let c=b.loadRecords(),d=+(c.length>0);a.query(`
42
+ INSERT INTO state_collections(collection, schema_version, revision, migration_id, imported_at)
43
+ VALUES (?, ?, ?, ?, ?)
44
+ `).run(b.collection,b.schemaVersion,d,b.migrationId,new Date().toISOString());let e=a.query(`
45
+ INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
46
+ VALUES (?, ?, ?, ?, ?, ?)
47
+ `),f=new Set;c.forEach((a,c)=>{let g=b.key(a);if(!g||f.has(g))throw Error(`duplicate or empty ${b.collection} migration key: ${g}`);f.add(g),e.run(b.collection,g,JSON.stringify(a),c,d,+(b.controllerActive?.(a)!==!1))})}(e,a),c.afterCollectionImport?.(a.collection)}u(a,d),e.exec("COMMIT"),y(a);return}catch(a){if(z(e),!A(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm("state migration is busy")}finally{e.close()}}function D(a){let b=[a];for(let c of[a,`${a}-wal`])try{let a=g().statSync(c,{bigint:!0});b.push(`${i().basename(c)}:${a.mtimeNs}:${a.size}`)}catch{b.push(`${i().basename(c)}:missing`)}return b.join("|")}function E(a,b){return F(a,[b]).get(b)??null}function F(a,b){let c=new Map(b.map(a=>[a,null]));if(!g().existsSync(a)||0===b.length)return c;let d=w(a);try{let a=b.map(()=>"?").join(", ");for(let e of d.query(`
48
+ SELECT collections.collection, rows.row_key, rows.value_json
49
+ FROM state_collections AS collections
50
+ LEFT JOIN state_rows AS rows ON rows.collection = collections.collection
51
+ WHERE collections.collection IN (${a})
52
+ ORDER BY collections.collection, rows.row_order, rows.row_key
53
+ `).all(...b)){let a=c.get(e.collection)??[];if(c.set(e.collection,a),null!==e.row_key&&null!==e.value_json)try{a.push(JSON.parse(e.value_json))}catch(a){throw Error(`corrupt ${e.collection} SQLite row: ${e.row_key}`,{cause:a})}}return c}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return c;throw a}finally{d.close()}}function G(a,b){return H(a,[b]).get(b)??null}function H(a,b){let c=new Map(b.map(a=>[a,null]));if(!g().existsSync(a))return c;let d=w(a);try{if(0===b.length)return c;let a=b.map(()=>"?").join(", ");for(let e of d.query(`
54
+ SELECT collection, revision FROM state_collections
55
+ WHERE collection IN (${a})
56
+ `).all(...b))c.set(e.collection,e.revision);return c}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return c;throw a}finally{d.close()}}class I{constructor(a,b){this.filename=a,this.options=b,this.cache=null,this.revisionCache=null,this.readDb=x(a);const c=this.collectionMeta();if(!c)throw Error(`SQLite state collection is not initialized: ${b.collection}`);if(c.schema_version!==b.schemaVersion)throw Error(`unsupported ${b.collection} SQLite schema: ${c.schema_version}`)}revision(){let a=D(this.filename);if(this.revisionCache?.signature===a)return this.revisionCache.revision;let b=this.collectionMeta()?.revision??0,c=D(this.filename);return c===a&&(this.revisionCache={signature:c,revision:b}),b}signature(){return`${this.filename}:${this.options.collection}:${this.revision()}`}snapshot(){return this.loadReadonly().map(this.options.clone)}snapshotForController(){return this.loadControllerReadonly().map(this.options.clone)}get(a){let b=this.readDb.query("SELECT value_json FROM state_rows WHERE collection = ? AND row_key = ?").get(this.options.collection,a);if(!b)return null;let c=this.decodeRow(b.value_json);return null===c?null:this.options.clone(c)}loadReadonly(){this.readDb.exec("BEGIN");try{let a=this.collectionMeta();if(!a)throw Error(`SQLite state collection disappeared: ${this.options.collection}`);let b=a.revision;if(this.cache?.revision===b)return this.readDb.exec("COMMIT"),this.cache.ordered;if(!this.cache||this.cache.revision>b||this.cache.revision<a.change_floor){let a=this.loadFull(b);return this.readDb.exec("COMMIT"),a}let c=this.readDb.query(`
57
+ SELECT DISTINCT row_key FROM state_changes
58
+ WHERE collection = ? AND revision > ? AND revision <= ?
59
+ ORDER BY revision, row_key
60
+ `).all(this.options.collection,this.cache.revision,b);if(0===c.length){let a=this.loadFull(b);return this.readDb.exec("COMMIT"),a}this.options.onIncrementalReadSnapshot?.(b);let d=[...new Set(c.map(a=>a.row_key))],e=new Map;for(let a=0;a<d.length;a+=400){let b=d.slice(a,a+400),c=b.map(()=>"?").join(", "),f=[this.options.collection,...b];for(let a of this.readDb.query(`
61
+ SELECT row_key, value_json, row_order, row_revision, controller_active
62
+ FROM state_rows WHERE collection = ? AND row_key IN (${c})
63
+ `).all(...f))e.set(a.row_key,a)}let f=new Map(this.cache.records),g=!1;for(let a of d){let b=e.get(a);if(!b){f.has(a)&&(g=!0),f.delete(a);continue}let c=f.get(a);if(c&&c.order===b.row_order||(g=!0),c?.valueJson===b.value_json){f.set(a,{...c,order:b.row_order,rowRevision:b.row_revision});continue}let d=this.decodeRow(b.value_json);null===d?f.delete(a):f.set(a,{valueJson:b.value_json,value:d,order:b.row_order,rowRevision:b.row_revision})}let h=g?this.rememberCache(b,f):this.rememberCacheWithOrder(b,f,this.cache.orderedKeys);return this.readDb.exec("COMMIT"),h}catch(a){throw z(this.readDb),a}}moveMatchingTo(a,b,c={}){if(a===this||a.filename!==this.filename)throw Error("atomic state moves require two collections in one database");t(this.filename);let d=[this,a].sort((a,b)=>a.options.collection.localeCompare(b.options.collection)),e=new Map;try{for(let a of d)e.set(a,a.acquireLeaseSync());let f=v(this.filename);try{let d=B(f,this.options.busyMessage,()=>{t(this.filename),this.assertLease(f,e.get(this)),a.assertLease(f,e.get(a));let d=f.query(`
64
+ SELECT row_key, value_json, row_order, row_revision, controller_active
65
+ FROM state_rows WHERE collection = ? ORDER BY row_order, row_key
66
+ `).all(this.options.collection).flatMap(a=>{let c=this.decodeRow(a.value_json);return null!==c&&b(c)?[{row:a,record:c}]:[]});if(0===d.length)return 0;for(let b of d)a.validate(b.record);let g=this.collectionMeta(f).revision+1,h=a.collectionMeta(f),i=new Map(f.query(`
67
+ SELECT row_key, value_json, row_order, row_revision, controller_active
68
+ FROM state_rows WHERE collection = ?
69
+ `).all(a.options.collection).map(a=>[a.row_key,a])),j=Math.max(-1,...[...i.values()].map(a=>a.row_order))+1,k=d.map(({record:b})=>{let c=a.options.key(b),d=JSON.stringify(b),e=+(a.options.controllerActive?.(b)!==!1),f=i.get(c);return{key:c,valueJson:d,controllerActive:e,held:f,order:f?.row_order??j++}}).filter(a=>a.held?.value_json!==a.valueJson||a.held.controller_active!==a.controllerActive),l=k.length>0?h.revision+1:h.revision,m=f.query(`
70
+ INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
71
+ VALUES (?, ?, ?, ?, ?, ?)
72
+ ON CONFLICT(collection, row_key) DO UPDATE SET
73
+ value_json = excluded.value_json,
74
+ row_revision = excluded.row_revision,
75
+ controller_active = excluded.controller_active
76
+ `),n=f.query(`
77
+ INSERT INTO state_changes(collection, revision, row_key, operation)
78
+ VALUES (?, ?, ?, ?)
79
+ `);for(let b of k)m.run(a.options.collection,b.key,b.valueJson,b.order,l,b.controllerActive),n.run(a.options.collection,l,b.key,"upsert");let o=f.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?");for(let{row:a}of d)o.run(this.options.collection,a.row_key),n.run(this.options.collection,g,a.row_key,"delete");return f.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(g,this.options.collection),k.length>0&&f.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(l,a.options.collection),this.pruneChanges(f,g),k.length>0&&a.pruneChanges(f,l),c.beforeCommit?.(),d.length});return d>0&&(y(this.filename),this.invalidateAfterCommit(),a.invalidateAfterCommit()),d}finally{f.close()}}finally{for(let a of[...d].reverse()){let b=e.get(a);b&&a.releaseLeaseSync(b)}}}replaceSync(a,b={}){t(this.filename);let c=this.acquireLeaseSync();try{b.beforePersist?.(a),this.persistReplacement(c,a,!0===b.mergeOmitted,b.deleteKeys??[])}finally{this.releaseLeaseSync(c)}}patchSync(a){t(this.filename);let b=this.acquireLeaseSync();try{let c=a();this.persistReplacement(b,c.records,!0,c.deleteKeys??[])}finally{this.releaseLeaseSync(b)}}withSnapshotSync(a){let b=this.acquireLeaseSync();try{return a(this.snapshot())}finally{this.releaseLeaseSync(b)}}async mutate(a,b,c=!1){t(this.filename);let d=await this.acquireLease();try{let e=c?this.loadControllerReadonly():this.loadReadonly(),f=this.track(e);return await a(f.records,a=>{this.persistSession(d,f,b,a)})}finally{await this.releaseLease(d)}}checkpointMirror(a){let b=this.acquireLeaseSync();try{let b=this.snapshot();a(b,this.revision())}finally{this.releaseLeaseSync(b)}}checkpointMirrorForDemotion(a,b=2){for(let c=0;c<b;c+=1){let b=-1;if(this.checkpointMirror((c,d)=>{b=d,a(c,d)}),this.revision()===b)return b}throw Error(`${this.options.collection} rollback checkpoint did not converge`)}collectionMeta(a=this.readDb){return a.query("SELECT revision, schema_version, change_floor FROM state_collections WHERE collection = ?").get(this.options.collection)??null}decodeRow(a){try{let b=this.options.decode(JSON.parse(a));if(null===b&&this.options.strictDecode)throw Error(`${this.options.collection} SQLite row is malformed`);return b}catch(a){if(this.options.strictDecode)throw this.options.decodeError?.(a)??a;return this.options.onDecodeError?.(a),null}}loadControllerReadonly(){return this.readDb.query(`
80
+ SELECT value_json FROM state_rows
81
+ WHERE collection = ? AND controller_active = 1
82
+ ORDER BY row_order, row_key
83
+ `).all(this.options.collection).flatMap(a=>{let b=this.decodeRow(a.value_json);return null===b?[]:[b]})}loadFull(a){let b=new Map;for(let a of this.readDb.query(`
84
+ SELECT row_key, value_json, row_order, row_revision
85
+ FROM state_rows WHERE collection = ? ORDER BY row_order, row_key
86
+ `).all(this.options.collection)){let c=this.decodeRow(a.value_json);null!==c&&b.set(a.row_key,{valueJson:a.value_json,value:c,order:a.row_order,rowRevision:a.row_revision})}return this.rememberCache(a,b)}rememberCache(a,b){let c=[...b.entries()].sort((a,b)=>a[1].order-b[1].order||a[0].localeCompare(b[0])),d=c.map(a=>a[0]),e=c.map(a=>a[1].value);return this.cache={revision:a,records:b,orderedKeys:d,ordered:e},this.revisionCache=null,e}rememberCacheWithOrder(a,b,c){let d=c.flatMap(a=>{let c=b.get(a);return c?[c.value]:[]});return this.cache={revision:a,records:b,orderedKeys:c,ordered:d},this.revisionCache=null,d}invalidateAfterCommit(){this.revisionCache=null}track(a){let b=new Map,c=[...a],d={records:[],rawRecords:c,materialized:b,structural:!1},e=a=>{if("string"!=typeof a||!/^(?:0|[1-9][0-9]*)$/.test(a))return null;let b=Number(a);return Number.isSafeInteger(b)?b:null};return d.records=new Proxy(c,{get:(a,c,d)=>{let f=e(c);if(null===f||f>=a.length)return Reflect.get(a,c,d);if(!b.has(f)){let c=this.options.clone(a[f]);a[f]=c,b.set(f,{originalKey:this.options.key(c),persistedJson:JSON.stringify(c),value:c})}return a[f]},set:(a,c,f)=>{d.structural=!0;let g=e(c);return null!==g&&b.delete(g),Reflect.set(a,c,f)},deleteProperty:(a,c)=>{d.structural=!0;let f=e(c);return null!==f&&b.delete(f),Reflect.deleteProperty(a,c)},defineProperty:(a,c,f)=>{d.structural=!0;let g=e(c);return null!==g&&b.delete(g),Reflect.defineProperty(a,c,f)}}),d}persistSession(a,b,c,d){if(d){if(0===d.length)return;c?.({records:b.records,dirtyRecords:d,structural:!1}),this.persistChangedRows(a,d);let e=new Set(d.map(a=>this.options.key(a)));for(let a of b.materialized.values()){let b=this.options.key(a.value);e.has(b)&&(a.originalKey=b,a.persistedJson=JSON.stringify(a.value))}return}let e=[];if(b.structural){for(let a of b.records)e.push(a);c?.({records:b.records,dirtyRecords:e,structural:!0}),this.persistReplacement(a,e,!1),b.structural=!1,b.materialized.clear(),b.rawRecords.forEach((a,c)=>b.materialized.set(c,{originalKey:this.options.key(a),persistedJson:JSON.stringify(a),value:a}));return}for(let d of b.materialized.values()){if(this.options.key(d.value)!==d.originalKey)return b.structural=!0,this.persistSession(a,b,c);JSON.stringify(d.value)!==d.persistedJson&&e.push(d.value)}if(0!==e.length)for(let d of(c?.({records:b.records,dirtyRecords:e,structural:!1}),this.persistChangedRows(a,e),b.materialized.values()))d.originalKey=this.options.key(d.value),d.persistedJson=JSON.stringify(d.value)}validate(a){if(!this.options.key(a))throw Error(`refusing to persist an empty ${this.options.collection} row key`);this.options.validate?.(a)}persistChangedRows(a,b){for(let a of b)this.validate(a);let c=v(this.filename);try{let d=B(c,this.options.busyMessage,()=>{t(this.filename),this.assertLease(c,a);let d=this.collectionMeta(c),e=c.query(`
87
+ SELECT row_key, value_json, row_order, row_revision, controller_active
88
+ FROM state_rows WHERE collection = ? AND row_key = ?
89
+ `),f=b.map(a=>{let b=this.options.key(a),c=JSON.stringify(a),d=+(this.options.controllerActive?.(a)!==!1);return{key:b,valueJson:c,controllerActive:d,row:e.get(this.options.collection,b)}}).filter(a=>a.row?.value_json!==a.valueJson||a.row.controller_active!==a.controllerActive);if(0===f.length)return null;let g=d.revision+1,h=(c.query("SELECT COALESCE(MAX(row_order), -1) AS value FROM state_rows WHERE collection = ?").get(this.options.collection)?.value??-1)+1,i=c.query(`
90
+ INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
91
+ VALUES (?, ?, ?, ?, ?, ?)
92
+ ON CONFLICT(collection, row_key) DO UPDATE SET
93
+ value_json = excluded.value_json,
94
+ row_revision = excluded.row_revision,
95
+ controller_active = excluded.controller_active
96
+ `),j=c.query(`
97
+ INSERT INTO state_changes(collection, revision, row_key, operation)
98
+ VALUES (?, ?, ?, 'upsert')
99
+ `);for(let a of f){let b=a.row?.row_order??h++;i.run(this.options.collection,a.key,a.valueJson,b,g,a.controllerActive),j.run(this.options.collection,g,a.key)}return c.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(g,this.options.collection),this.pruneChanges(c,g),g});null!==d&&(y(this.filename),this.invalidateAfterCommit())}finally{c.close()}}persistReplacement(a,b,c,d=[]){for(let a of b)this.validate(a);let e=new Set;for(let a of b){let b=this.options.key(a);if(e.has(b))throw Error(`duplicate ${this.options.collection} row key: ${b}`);e.add(b)}let f=new Set(d);if(f.size!==d.length||[...f].some(a=>!a||e.has(a)))throw Error(`invalid ${this.options.collection} row deletion`);let g=v(this.filename);try{let d=B(g,this.options.busyMessage,()=>{t(this.filename),this.assertLease(g,a);let d=this.collectionMeta(g),h=new Map(g.query(`
100
+ SELECT row_key, value_json, row_order, row_revision, controller_active
101
+ FROM state_rows WHERE collection = ?
102
+ `).all(this.options.collection).map(a=>[a.row_key,a])),i=b.map((a,b)=>({key:this.options.key(a),valueJson:JSON.stringify(a),order:b,controllerActive:+(this.options.controllerActive?.(a)!==!1)})).filter(a=>{let b=h.get(a.key);return!b||b.value_json!==a.valueJson||b.controller_active!==a.controllerActive||!c&&b.row_order!==a.order}),j=c?[...f].filter(a=>h.has(a)):[...h.keys()].filter(a=>!e.has(a));if(0===i.length&&0===j.length)return null;let k=d.revision+1,l=c?Math.max(-1,...[...h.values()].map(a=>a.row_order))+1:0,m=g.query(`
103
+ INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
104
+ VALUES (?, ?, ?, ?, ?, ?)
105
+ ON CONFLICT(collection, row_key) DO UPDATE SET
106
+ value_json = excluded.value_json,
107
+ row_order = excluded.row_order,
108
+ row_revision = excluded.row_revision,
109
+ controller_active = excluded.controller_active
110
+ `),n=g.query(`
111
+ INSERT INTO state_changes(collection, revision, row_key, operation)
112
+ VALUES (?, ?, ?, ?)
113
+ `);for(let a of i){let b=h.get(a.key),d=c?b?.row_order??l++:a.order;m.run(this.options.collection,a.key,a.valueJson,d,k,a.controllerActive),n.run(this.options.collection,k,a.key,"upsert")}let o=g.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?");for(let a of j)o.run(this.options.collection,a),n.run(this.options.collection,k,a,"delete");return g.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(k,this.options.collection),this.pruneChanges(g,k),k});null!==d&&(y(this.filename),this.invalidateAfterCommit())}finally{g.close()}}assertLease(a,b){let c=a.query("SELECT owner_token FROM state_leases WHERE collection = ?").get(this.options.collection);if(c?.owner_token!==b)throw new k.Qm(this.options.busyMessage)}pruneChanges(a,b){let c=b-1024;c<=0||(a.query(`
114
+ DELETE FROM state_changes WHERE rowid IN (
115
+ SELECT rowid FROM state_changes
116
+ WHERE collection = ? AND revision <= ?
117
+ ORDER BY revision, row_key LIMIT ?
118
+ )
119
+ `).run(this.options.collection,c,1e3),a.query(`
120
+ UPDATE state_collections SET change_floor = MAX(change_floor, ?)
121
+ WHERE collection = ?
122
+ `).run(c,this.options.collection))}tryAcquireLease(a,b){try{var c;a.exec("BEGIN IMMEDIATE");let d=a.query(`
123
+ SELECT owner_token, owner_pid, owner_start_identity
124
+ FROM state_leases WHERE collection = ?
125
+ `).get(this.options.collection);if(d&&Number.isInteger((c={pid:d.owner_pid,startIdentity:d.owner_start_identity}).pid)&&c.pid>0&&function(a,b){if(!j.B.pidAlive(a))return!1;if(null===b)return!0;let c=j.B.processIdentity(a);return null===c||c===b}(c.pid,c.startIdentity))return a.exec("ROLLBACK"),!1;return d&&a.query("DELETE FROM state_leases WHERE collection = ?").run(this.options.collection),a.query(`
126
+ INSERT INTO state_leases(collection, owner_token, owner_pid, owner_start_identity, acquired_at)
127
+ VALUES (?, ?, ?, ?, ?)
128
+ `).run(this.options.collection,b,process.pid,j.B.processIdentity(process.pid),Date.now()),a.exec("COMMIT"),!0}catch(b){if(z(a),A(b))return!1;throw b}}acquireLeaseSync(){let a=v(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;Atomics.wait(m,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}async acquireLease(){let a=v(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}releaseLeaseSync(a){let b=v(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(z(b),!A(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}async releaseLease(a){let b=v(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(z(b),!A(a))throw a;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}}},16196:(a,b,c)=>{function d(a){if(void 0===a)return!1;switch(a.trim().replace(/^(["'])([\s\S]*)\1$/,"$2").trim().toLowerCase()){case"0":case"false":case"off":case"no":return!0;default:return!1}}function e(a=process.env){return!d(a.LLV_STRUCTURED_HOSTS)}function f(a=process.env){return d(a.LLV_RUNTIME_EVENTS)}function g(a=process.env){return!f(a)&&!!i(a)}function h(a=process.env){return!d(a.NEXT_PUBLIC_RUNTIME_UI)}function i(a=process.env){return a.LLV_RUNTIME_HOST_SOCKET?.trim()||null}c.d(b,{Ee:()=>h,S0:()=>i,Zn:()=>g,cM:()=>e,ji:()=>f})},21420:(a,b,c)=>{let d;c.d(b,{P3:()=>h,bL:()=>f,x_:()=>g});let e=BigInt(1e6);class f extends Error{constructor(...a){super(...a),this.name="StructuredRuntimeRequirementError"}}function g(a=process.platform,b=process.versions){if("darwin"===a&&!b.bun)throw new f("structured hosts on macOS require the Viewer server to run with Bun")}function h(a){if(!Number.isInteger(a)||a<=0)return null;let b=function(){if(void 0!==d)return d;if("darwin"!==process.platform)return d=null;try{let a=c(85786),b=a.dlopen("/usr/lib/libproc.dylib",{proc_pidinfo:{args:[a.FFIType.i32,a.FFIType.i32,a.FFIType.u64,a.FFIType.ptr,a.FFIType.i32],returns:a.FFIType.i32}});d=(c,d)=>Number(b.symbols.proc_pidinfo(c,3,BigInt(0),a.ptr(d),d.byteLength))}catch{d=null}return d}();if(!b)return null;let f=Buffer.alloc(136);try{var g=b(a,f);if(!Number.isInteger(a)||a<=0||g<136||f.byteLength<136||f.readUInt32LE(12)!==a)return null;let c=f.readBigUInt64LE(120),d=f.readBigUInt64LE(128);return c===BigInt(0)||d>=e?null:`${a}:${c}:${d.toString().padStart(6,"0")}`}catch{return null}}},27146:(a,b,c)=>{c.d(b,{ks:()=>n,oy:()=>t,Pn:()=>r,BQ:()=>s});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h);function j(a=process.env){return"1"===a.LLV_STAGING}let k="agent-log-viewer",l="live-log-viewer";function m(){return process.env.XDG_CONFIG_HOME||i().join(g().homedir(),".config")}function n(a){var b=m(),c=a;let d=i().join(b,k,c);if(e().existsSync(d))return d;let f=i().join(b,l,c);return e().existsSync(f)?f:d}let o=new Set,p=".migrated-from-legacy";function q(a,b){if("1"===process.env.LLV_RESOURCE_OBSERVATION_WORKER||o.has(a))return;let c=i().join(a,p),d=()=>`${new Date().toISOString()} ${b}
129
+ `;try{if(e().existsSync(c))return void o.add(a);if(!e().existsSync(b)){e().mkdirSync(a,{recursive:!0}),e().writeFileSync(c,d()),o.add(a);return}if(!e().existsSync(a)){e().mkdirSync(i().dirname(a),{recursive:!0});let c=`${a}.migrating.${process.pid}`;e().rmSync(c,{recursive:!0,force:!0});try{e().cpSync(b,c,{recursive:!0}),e().writeFileSync(i().join(c,p),d()),e().renameSync(c,a)}catch(a){throw e().rmSync(c,{recursive:!0,force:!0}),a}o.add(a);return}e().cpSync(b,a,{recursive:!0,force:!1,errorOnExist:!1}),e().writeFileSync(c,d()),o.add(a)}catch(c){console.error(`viewer state migration ${b} -> ${a} failed; will retry:`,c)}}function r(){let a=process.env.LLV_STATE_DIR;if(j()){var b=a;let c=b||i().join(m(),k,"state-staging"),d=i().resolve(c);if([i().join(m(),k,"state"),i().join(m(),l,"state"),i().join(g().homedir(),".claude","viewer-state")].some(a=>i().resolve(a)===d))throw Error(`staging mode refuses the production state dir ${d}; set LLV_STATE_DIR to a staging-only dir`);return c}if(a)return a;let c=i().join(m(),k,"state");return q(c,i().join(g().homedir(),".claude","viewer-state")),c}function s(...a){return i().join(r(),...a)}function t(){if(j())return s("inbox");let a=i().join(m(),k,"inbox");return q(a,i().join(g().homedir(),".claude","viewer-inbox")),a}},52e3:(a,b,c)=>{let d;c.d(b,{B:()=>C});var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(1198);let j="/proc";function k(a){try{return f().readFileSync(h().join(j,String(a),"cmdline"),"utf8").split("\0").filter(Boolean)}catch{return[]}}function l(a){try{return f().readlinkSync(h().join(j,String(a),"cwd"))}catch{return null}}function m(a){let b;try{b=f().readFileSync(h().join(j,String(a),"stat"),"utf8")}catch{return null}return b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/)}function n(a){try{return(128&f().lstatSync(a).mode)!=0}catch{return!1}}function o(a){let b;try{b=f().readdirSync(j,{withFileTypes:!0})}catch{return}for(let c of b){let b;if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let d=Number(c.name),e=h().join(j,c.name,"fd");try{b=f().readdirSync(e,{withFileTypes:!0})}catch{continue}for(let c of b){let b,g=h().join(e,c.name);try{b=f().readlinkSync(g)}catch{continue}a(b,d,()=>n(g))}}}let p={name:"linux",pidAlive:function(a){return Number.isInteger(a)&&a>0&&f().existsSync(h().join(j,String(a)))},readArgv:k,readCwd:l,readPpid:function(a){let b=m(a),c=b?Number(b[1]):NaN;return Number.isInteger(c)&&c>1?c:null},processIdentity:function(a){let b=m(a),c=b?.[19];return c?`${a}:${c}`:null},readEnvVar:function(a,b){let c;try{c=f().readFileSync(h().join(j,String(a),"environ"),"utf8")}catch{return null}let d=b+"=",e=null;for(let a of c.split("\0"))a.startsWith(d)&&(e=a.slice(d.length));return e},listProcesses:function(){let a,b=[];try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name);b.push({pid:a,argv:k(a),cwd:l(a),tty:function(a){let b=m(a),c=b?Number(b[4]):NaN;return Number.isInteger(c)&&c>0?c:0}(a)})}return b},systemMemory:function(){try{return(0,i.NW)(f().readFileSync(h().join(j,"meminfo"),"utf8"))}catch{return null}},processMemory:function(a){let b=new Map;for(let c of a)if(Number.isInteger(c)&&!(c<=0))try{b.set(c,(0,i.sW)(f().readFileSync(h().join(j,String(c),"status"),"utf8")))}catch{}return b},ppidMap:function(){let a,b=new Map;try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name),d=m(a),e=d?Number(d[1]):NaN;Number.isInteger(e)&&e>0&&b.set(a,e)}return b},scanFdTargetsUnder:function(a,b){o(b)},scanFdTargetsFor:function(a,b){o(b)},pidWritesPath:function(a,b){let c,d;try{c=f().realpathSync(b)}catch{c=null}let e=h().join(j,String(a),"fd");try{d=f().readdirSync(e,{withFileTypes:!0})}catch{return!1}for(let a of d){let d,g=h().join(e,a.name);try{d=f().readlinkSync(g)}catch{continue}if((d===b||d===c)&&n(g))return!0}return!1},pidHoldsPath:function(a,b){let c;try{c=f().readdirSync(h().join(j,String(a),"fd"),{withFileTypes:!0})}catch{return!1}for(let d of c)try{if(f().readlinkSync(h().join(j,String(a),"fd",d.name))===b)return!0}catch{continue}return!1}};var q=c(31421),r=c(48161),s=c.n(r),t=c(21420);function u(a,b){let c=(0,q.spawnSync)(a,b,{encoding:"utf8",maxBuffer:0x1000000,timeout:1e4});return c.error||"string"!=typeof c.stdout?"":c.stdout}let v=new Map,w=1,x=/^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.*)$/;function y(a,b){let c=0,d="";for(let e of a.split("\n")){if(!e)continue;let a=e[0],f=e.slice(1);if("p"===a)c=Number(f),d="";else if("f"===a)d="";else if("a"===a)d=f;else if("n"===a&&c>0&&f){let a="w"===d||"u"===d;b(f,c,()=>a)}}}let z=null;function A(){let a=Date.now();if(z&&a-z.at<5e3)return z.byPid;let b=function(a){let b=new Map;for(let c of a.split("\n")){let a=x.exec(c);if(!a)continue;let d=Number(a[1]),e=Number(a[2]),f=(a[4]??"").trim().split(/\s+/).filter(Boolean);b.set(d,{ppid:Number.isInteger(e)&&e>1?e:null,tty:function(a){if(!a||"?"===a||"??"===a||"-"===a)return 0;let b=v.get(a);return void 0===b&&(b=w,w+=1,v.set(a,b)),b}(a[3]??""),argv:f})}return b}(u("ps",["-axo","pid=,ppid=,tty=,args="])),c=function(a){let b=new Map,c=0;for(let d of a.split("\n")){if(!d)continue;let a=d[0],e=d.slice(1);"p"===a?c=Number(e):"n"===a&&c>0&&b.set(c,e)}return b}(u("lsof",["-w","-d","cwd","-Fpn"])),d=new Map;for(let[a,e]of b)d.set(a,{argv:e.argv,ppid:e.ppid,tty:e.tty,cwd:c.get(a)??null});return z={at:a,byPid:d},d}let B={name:"portable",pidAlive:function(a){if(!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}},readArgv:function(a){return A().get(a)?.argv??[]},readCwd:function(a){return A().get(a)?.cwd??null},readPpid:function(a){return A().get(a)?.ppid??null},processIdentity:function(a){return!Number.isInteger(a)||a<=0?null:"darwin"===process.platform?(0,t.P3)(a):null},readEnvVar:function(){return null},listProcesses:function(){let a=[];for(let[b,c]of A())a.push({pid:b,argv:c.argv,cwd:c.cwd,tty:c.tty});return a},systemMemory:function(){let a=s().totalmem(),b=(0,i.Lc)(u("vm_stat",[]));if(!a||null===b)return null;let c=(0,i.yh)(u("sysctl",["-n","vm.swapusage"]));return{ramTotal:a,ramAvailable:Math.min(b,a),swapTotal:c?.swapTotal??0,swapUsed:c?.swapUsed??0}},processMemory:function(a){let b=new Set;for(let c of a)Number.isInteger(c)&&c>0&&b.add(c);let c=new Map;if(0===b.size)return c;for(let[a,d]of(0,i.CT)(u("ps",["-axo","pid=,rss="])))b.has(a)&&c.set(a,{rssBytes:d,swapBytes:0});return c},ppidMap:function(){let a=new Map;for(let[b,c]of A())null!==c.ppid&&a.set(b,c.ppid);return a},scanFdTargetsUnder:function(a,b){a&&f().existsSync(a)&&y(u("lsof",["-w","+D",a,"-Fpfan"]),b)},scanFdTargetsFor:function(a,b){let c=[...new Set(a.filter(Boolean))];0!==c.length&&y(u("lsof",["-w","-Fpfan","--",...c]),b)},pidWritesPath:function(a,b){let c=!1;return y(u("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),(a,b,d)=>{d()&&(c=!0)}),c},pidHoldsPath:function(a,b){let c=!1;return y(u("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),()=>{c=!0}),c}},C="portable"===(d=process.env.VIEWER_PROC_BACKEND)?B:"linux"===d||"linux"===process.platform?p:B},61532:(a,b,c)=>{c.d(b,{lk:()=>g,vE:()=>h,xE:()=>i});let d=process;function e(){return{state:"pending",phase:"waiting for structured startup",completedHosts:0,totalHosts:null,updatedAt:new Date().toISOString()}}function f(a,b){if(!Number.isSafeInteger(b.completedHosts)||b.completedHosts<0)throw Error("structured host startup completed count is invalid");if(null!==b.totalHosts&&(!Number.isSafeInteger(b.totalHosts)||b.totalHosts<b.completedHosts))throw Error("structured host startup total count is invalid");d.__llvStructuredHostStartupProgress={...b,state:a,updatedAt:new Date().toISOString()}}function g(a){f(!0===d.__llvStructuredHostStartupFailed?"failed":"pending",a)}function h(){d.__llvStructuredHostStartupFailed=!0,f("failed",d.__llvStructuredHostStartupProgress??e())}function i(){d.__llvStructuredHostStartupFailed=!1,f("ready",{...d.__llvStructuredHostStartupProgress??e(),phase:"ready"})}},89204:(a,b,c)=>{c.d(b,{Ol:()=>r,Qm:()=>l,pM:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(52e3);let k=new Int32Array(new SharedArrayBuffer(4));class l extends Error{constructor(a){super(a),this.name="FileTransactionBusyError"}}function m(a){try{let b=JSON.parse(g().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){let a="string"==typeof b.startIdentity?b.startIdentity:null;if(!j.B.pidAlive(b.pid))return!0;if(null!==a){let c=j.B.processIdentity(b.pid);return null!==c&&c!==a}return!1}return Date.now()-g().statSync(a).mtimeMs>3e4}catch{try{return Date.now()-g().statSync(a).mtimeMs>3e4}catch{return!1}}}function n(a,b){try{JSON.parse(g().readFileSync(a,"utf8")).token===b&&g().rmSync(a,{force:!0})}catch{}}function o(a){let b=`${a}.write-lock`,c=`${a}.write-locks`;g().mkdirSync(c,{recursive:!0,mode:448});let d={pid:process.pid,startIdentity:j.B.processIdentity(process.pid),token:e().randomUUID()},f=i().join(c,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${e().randomUUID()}.json`);return g().writeFileSync(f,JSON.stringify(d),{encoding:"utf8",flag:"wx",mode:384}),{lockPath:b,queuePath:c,owner:d,ticketPath:f}}function p(a){let b;if(function(a){let b=[];for(let c of g().readdirSync(a.queuePath).filter(a=>a.endsWith(".json")).sort()){let d=i().join(a.queuePath,c);if(m(d)){g().rmSync(d,{force:!0});continue}g().existsSync(d)&&b.push(d)}return b[0]??null}(a)!==a.ticketPath)return null;try{b=g().openSync(a.lockPath,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return m(a.lockPath)&&g().rmSync(a.lockPath,{force:!0}),null}try{return g().writeFileSync(b,JSON.stringify(a.owner),"utf8"),g().fsyncSync(b),b}catch(c){throw g().closeSync(b),g().rmSync(a.lockPath,{force:!0}),c}}function q(a,b){g().closeSync(b),n(a.lockPath,a.owner.token)}function r(a,b,c){let d=o(a);try{for(let a=0;a<6e3;a+=1){let a=p(d);if(null===a){Atomics.wait(k,0,0,5);continue}try{return c()}finally{q(d,a)}}throw new l(b)}finally{n(d.ticketPath,d.owner.token)}}async function s(a,b,c){let d=o(a);try{for(let a=0;a<6e3;a+=1){let a=p(d);if(null===a){await new Promise(a=>setTimeout(a,5));continue}try{return await c()}finally{q(d,a)}}throw new l(b)}finally{n(d.ticketPath,d.owner.token)}}},94972:(a,b,c)=>{c.r(b),c.d(b,{accountControllerDelayMs:()=>t,activateViewerRuntimeWhenCurrent:()=>s,checkpointHotStateRollbackMirrorsForDemotion:()=>w,completeViewerReleaseDemotion:()=>v,completeViewerRuntimeActivation:()=>D,establishHotStateCutoverBoundary:()=>r,initializeHotStateStoresAtStartup:()=>x,initializeOperatorSpawnCapabilityAtStartup:()=>z,registerViewerRuntime:()=>E,runStructuredHostStartup:()=>C,scheduleAccountMigrationController:()=>u,startCurrentReleaseControllers:()=>y,startWakatimeIntegrationIfEnabled:()=>A,viewerReleaseOwnsTraffic:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(27146),i=c(16196),j=c(95697),k=c(14928),l=c(61532),m=c(21420),n=c(65281);let o=globalThis;function p(a=process.env,b=()=>e().readFileSync((0,h.BQ)("viewer-release.json"),"utf8")){let c,d=a.PORT?.trim();if(!d)return!0;try{c=b()}catch(a){return"ENOENT"===a.code}try{let a=JSON.parse(c);if("string"!=typeof a.endpoint)return!1;return new URL(a.endpoint).port===d}catch{return!1}}function q(){return["flows.json","pipelines.json","pipelines-archive.json","workflows.json"].map(a=>{let b=(0,h.BQ)(a);try{let c=e().statSync(b,{bigint:!0});return`${a}:${c.mtimeNs}:${c.size}`}catch{return`${a}:missing`}}).join("|")}async function r(a,b={}){let d=g().dirname((0,h.BQ)("state.sqlite")),f=(0,j.jU)(d);if((null!==f||e().existsSync((0,h.BQ)("viewer-release.json")))&&null===f)throw Error("viewer release cannot publish hot-state authority");if(null===f)return(0,k.iy)((0,h.BQ)("state.sqlite")),{authority:null,reimportLegacy:!1};let i=(0,j.a5)(d);if(i?.mode==="sqlite"&&i.releaseRevision!==f)return i=(0,j.RG)(d,"sqlite",f),(0,k.iy)((0,h.BQ)("state.sqlite")),{authority:i,reimportLegacy:!1};if(i?.mode==="sqlite"&&i.releaseRevision===f)return(0,k.iy)((0,h.BQ)("state.sqlite")),{authority:i,reimportLegacy:!1};if(i?.mode==="fencing")throw Error("hot-state cutover cannot replace an active rollback fence");(i?.mode!=="preparing"||i.releaseRevision!==f)&&(i=(0,j.RG)(d,"preparing",f));let{hotStateMigrationApplied:l,hotStateMigrationDryRun:m}=await Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(3916),c.e(6796),c.e(7159)]).then(c.bind(c,25682));if(l())return(0,k.iy)((0,h.BQ)("state.sqlite")),{authority:i,reimportLegacy:!1};let n=b.pollMs??250,o=b.stablePolls??3,p=b.maxPolls??12,s=b.schedule??((a,b)=>setTimeout(a,b)),t=b.legacySignature??q,u=t(),v=0;for(let b=0;b<p;b+=1){if(await new Promise(a=>s(a,n).unref?.()),!a())throw Error("viewer release lost traffic during hot-state cutover");let b=t();if(v=b===u?v+1:0,u=b,v>=o)return m(),(0,k.iy)((0,h.BQ)("state.sqlite")),{authority:i,reimportLegacy:!0}}throw Error("legacy hot-state files did not quiesce during release cutover")}async function s(a,b,c={}){let d=c.pollMs??250,e=c.schedule??((a,b)=>setTimeout(a,b)),f=c.log??console.error,g=!1,h=!1,i=!1,j=null,k=()=>{if(h)return;if(g&&!b()){h=!0,Promise.resolve(c.onDemoted?.({fenced:null!==j})).catch(a=>{f("[viewer release] demotion checkpoint failed",a)});return}let a=g?c.fenceRequest?.()??null:null;a&&"fencing"===a.mode?j===a.epoch||i||(i=!0,Promise.resolve(c.onFenceRequested?.(a)).then(()=>{j=a.epoch}).catch(a=>{f("[viewer release] hot-state fence checkpoint failed",a)}).finally(()=>{i=!1})):i||(j=null),e(k,d).unref?.()},l=async()=>{g||(g=!0,e(k,d).unref?.(),await a())};if(b())return void await l();let m=()=>{if(!g){if(!b())return void e(m,d).unref?.();l().catch(a=>f("[viewer release] deferred runtime activation failed",a))}};e(m,d).unref?.()}function t(a=process.env){let b=Number(a.LLV_ACCOUNT_CONTROLLER_DELAY_MS??0);return Number.isFinite(b)?Math.max(0,b):0}function u(a,b){let c=()=>{a().catch(a=>{console.error("[account migration controller] initial durable reconciliation failed",a)})},d=setTimeout(()=>{b>0?c():setTimeout(c,0).unref?.()},b);d.unref?.()}async function v(a,b=a=>process.exit(a),c=console.error){try{await a(),b(0)}catch(a){c("[viewer release] demotion checkpoint failed",a),b(1)}}async function w(){let[a,b,d]=await Promise.all([Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(1888)]).then(c.bind(c,98817)),Promise.all([c.e(5689),c.e(3916),c.e(9507)]).then(c.bind(c,3916)),Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(6796),c.e(7126)]).then(c.bind(c,96796))]),e=a.checkpointFlowRollbackMirrorForDemotion(),f=b.checkpointPipelineRollbackMirrorsForDemotion(),g=d.checkpointWorkflowRollbackMirrorForDemotion();return{flows:e,pipelines:f.pipelines,pipelinesArchive:f.pipelinesArchive,workflows:g}}async function x(a={authority:null,reimportLegacy:!1},b={}){let[d,e,f]=await Promise.all([Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(1888)]).then(c.bind(c,98817)),Promise.all([c.e(5689),c.e(3916),c.e(9507)]).then(c.bind(c,3916)),Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(6796),c.e(7126)]).then(c.bind(c,96796))]);return((0,k.t0)((0,h.BQ)("state.sqlite"),[d.flowStateCollectionSeed(),...e.pipelineStateCollectionSeeds(),f.workflowStateCollectionSeed()],{reimportExisting:a.reimportLegacy,...b.afterCollectionImport?{afterCollectionImport:b.afterCollectionImport}:{}}),d.loadFlows(),e.loadPipelines(),e.loadArchivedPipelines(),f.loadWorkflows(),a.authority?.mode==="preparing")?(0,j.H0)(g().dirname((0,h.BQ)("state.sqlite")),a.authority):a.authority}async function y(a=process.env,b={loadFlowPipelineController:()=>Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(3916),c.e(6796),c.e(8465),c.e(3740),c.e(3598),c.e(8444),c.e(156)]).then(c.bind(c,60156)),loadAccountMigrationController:()=>Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(3916),c.e(6796),c.e(8465),c.e(3740),c.e(3598),c.e(8444),c.e(7868)]).then(c.bind(c,37868)),loadTelegramReportScheduler:()=>Promise.all([c.e(3953),c.e(3598),c.e(9246)]).then(c.bind(c,99246))}){let{startFlowPipelineController:d}=await b.loadFlowPipelineController();d();try{let a=await b.loadTelegramReportScheduler?.();a?.ensureTelegramReportScheduler()}catch(a){console.error("[telegram report] scheduler start failed",a instanceof Error?a.name:"unknown")}if("1"===a.LLV_ACCOUNT_CONTROLLER_DISABLED)return;let{startAccountMigrationController:e}=await b.loadAccountMigrationController();u(e,t(a))}async function z(a=process.env,b=a=>console.error(a)){let{ensureOperatorSpawnCapability:d,rotateOperatorSpawnCapability:e}=await c.e(4260).then(c.bind(c,74260));"1"===a.LLV_ROTATE_OPERATOR_SPAWN_CAPABILITY?e():d();let f=a.PORT?.trim()||"8898";b(`[viewer] Open http://127.0.0.1:${f}.`)}async function A(a=process.env,b=B,c=(a,b)=>console.error(a,b)){if("1"===a.LLV_WAKATIME_ENABLED)try{await b()}catch{c("[wakatime] startup_failed",{})}}async function B(){if(o.__llvWakatimeWorker)return;let a=process.cwd(),b=g().join(a,"src/lib/wakatimeSync.worker.ts"),d=g().join(a,".next/server/wakatime-sync-worker.js"),f="/usr/local/bin/bun-container",h=e().existsSync(b)&&e().existsSync(f)?{executable:f,workerPath:b}:e().existsSync(d)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:d}:{executable:process.execPath,workerPath:b},{spawn:i}=await Promise.resolve().then(c.t.bind(c,31421,23)),j=e().existsSync("/usr/bin/nice"),k=i(j?"/usr/bin/nice":h.executable,[...j?["-n","10",h.executable]:[],h.workerPath],{cwd:a,stdio:["ignore","inherit","inherit"],env:{...(0,n.Fd)(process.env),LLV_WAKATIME_SYNC_WORKER:"1"}});o.__llvWakatimeWorker=k,k.once("error",a=>{console.error("[wakatime] worker_start_failed",{message:a.message})}),k.once("exit",(a,b)=>{if(o.__llvWakatimeWorker===k&&(o.__llvWakatimeWorker=void 0),o.__llvWakatimeWorkerRestart)return;console.error("[wakatime] worker_exited",{code:a,signal:b});let c=setTimeout(()=>{o.__llvWakatimeWorkerRestart=void 0,B()},1e3);c.unref?.(),o.__llvWakatimeWorkerRestart=c})}async function C(a,b=console.error,c={}){let d=c.schedule??((a,b)=>setTimeout(a,b)),e=c.maxRetryMs??1e3,f=Math.min(Math.max(c.jitterRatio??.2,0),1),g=c.random??Math.random,h=c.initialRetryMs??100,i=!1,j=0,k=null,n=null,o=c.waitUntilReady?new Promise((a,b)=>{k=a,n=b}):null,p=async()=>{j+=1;try{await a(),(0,l.xE)(),k?.(),j>1&&b("[structured hosts] startup adoption recovered",{attempts:j})}catch(k){if((0,l.vE)(),k instanceof m.bL)throw b("[structured hosts] startup adoption failed",k),n?.(k),k;if(i)return;let a=1+(2*Math.min(Math.max(g(),0),1)-1)*f,c=Math.min(e,Math.max(0,Math.round(h*a)));h=Math.min(2*h,e),i=!0,1===j&&b("[structured hosts] startup adoption failed; retry scheduled",k),d(()=>{i=!1,p().catch(a=>{b("[structured hosts] startup adoption retry aborted",a)})},c).unref?.()}};await p(),await o}async function D(a){await a.initializeOperatorCapability(),await a.startWakatime(),a.publishHotStateActivation(),a.startStructuredHosts?.(),await a.startControllers(),a.publishViewerReleaseReady()}async function E(){(0,n.kL)();let a=()=>p(),b=g().dirname((0,h.BQ)("state.sqlite")),d=null;await s(async()=>{let e=await r(a);d=e.authority?.releaseRevision??null;let f=await x(e),g=null;await D({initializeOperatorCapability:z,startWakatime:A,startStructuredHosts:(0,i.cM)()?()=>{(async()=>{let{adoptStructuredHostsAtStartup:a}=await Promise.all([c.e(2904),c.e(5689),c.e(3953),c.e(8817),c.e(3916),c.e(6796),c.e(8465),c.e(3740),c.e(3598),c.e(8026)]).then(c.bind(c,28026));await C(a,console.error,{waitUntilReady:!0})})().catch(a=>console.error("[structured hosts] background startup aborted",a))}:null,startControllers:y,publishHotStateActivation:()=>{f&&(g=(0,j.tT)(b,f))},publishViewerReleaseReady:()=>{g&&(0,j.uB)(b,g)}})},a,{fenceRequest:()=>{let a=(0,j.jU)(b),c=(0,j.a5)(b);return null!==a&&c?.mode==="fencing"&&c.releaseRevision===a?c:null},onFenceRequested:async a=>{let d=await w(),{agentRegistry:e}=await Promise.all([c.e(2904),c.e(3953)]).then(c.bind(c,12904));e().checkpointRollbackMirrorForDemotion(),(0,j.u_)(b,a,d)},onDemoted:({fenced:a})=>v(async()=>{if(a)return;let e=(0,j.a5)(b);if(!d||e?.releaseRevision!==d||"sqlite"!==e.mode&&"fencing"!==e.mode)return;let{agentRegistry:f}=await Promise.all([c.e(2904),c.e(3953)]).then(c.bind(c,12904));await w(),f().checkpointRollbackMirrorForDemotion()})})}},95697:(a,b,c)=>{c.d(b,{H0:()=>w,Ny:()=>q,RG:()=>u,T2:()=>r,X4:()=>o,a5:()=>n,jU:()=>p,tT:()=>x,uB:()=>y,u_:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(89204);let k="LLV_HOT_STATE_RELEASE_REVISION";function l(a){return i().join(a,"hot-state-authority.json")}function m(a){return"string"==typeof a&&/^[0-9a-f]{40}$/.test(a)}function n(a){try{var b;let c=!(b=JSON.parse(g().readFileSync(l(a),"utf8")))||"object"!=typeof b||Array.isArray(b)?null:1===b.schemaVersion&&Number.isInteger(b.epoch)&&!(b.epoch<1)&&["legacy","preparing","sqlite","fencing"].includes(String(b.mode))&&(null===b.releaseRevision||m(b.releaseRevision))&&"string"==typeof b.updatedAt&&(void 0===b.activationReadyAt||"string"==typeof b.activationReadyAt)&&(void 0===b.releaseReadyAt||"string"==typeof b.releaseReadyAt)&&(void 0===b.releaseReadyAt||void 0!==b.activationReadyAt)&&(void 0===b.checkpoint||function(a){if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.revisions,c=b?[b.flows,b.pipelines,b.pipelinesArchive,b.workflows]:[];return"string"==typeof a.acknowledgedAt&&4===c.length&&c.every(a=>Number.isInteger(a)&&a>=0)}(b.checkpoint))?b:null;if(!c)throw Error("hot-state authority is invalid");return c}catch(a){if("ENOENT"===a.code)return null;throw a}}function o(a,b=process.env){let c=b.LLV_VIEWER_DEPLOY_TARGET?.trim()||i().join(a,"viewer-release.json");try{var d;let a=!(d=JSON.parse(g().readFileSync(c,"utf8")))||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.endpoint&&m(d.revision)&&(void 0===d.hotStateBackend||"sqlite-v1"===d.hotStateBackend)?d:null;if(!a)throw Error("Viewer release target cannot authorize hot state");return a}catch(a){if("ENOENT"===a.code)return null;throw a}}function p(a,b=process.env){let c=o(a,b);if(!c)return null;let d=b[k]?.trim();if(d)return m(d)&&d===c.revision?d:null;let e=b.PORT?.trim();if(!e)return null;try{return new URL(c.endpoint).port===e?c.revision:null}catch{return null}}function q(a,b=process.env){let c=o(a,b);if(!c)return!0;let d=n(a),e=p(a,b);return e?d?.mode==="sqlite"&&d.releaseRevision===e&&c.revision===e:!(b[k]?.trim()||b.PORT?.trim())&&d?.mode==="sqlite"&&d.releaseRevision===c.revision&&"string"==typeof d.activationReadyAt}function r(a,b=process.env){let c=o(a,b);if(!c)return!0;let d=p(a,b);if(!d)return!1;let e=n(a);return e?.mode==="preparing"&&e.releaseRevision===d&&c.revision===d}function s(a,b){return null!==a&&JSON.stringify(a)===JSON.stringify(b)}function t(a,b,c,d,f={}){if(f.releaseReadyAt&&!f.activationReadyAt)throw Error("Viewer release readiness requires completed hot-state activation");let h={schemaVersion:1,epoch:f.epoch??(b?.epoch??0)+1,mode:c,releaseRevision:d,updatedAt:new Date().toISOString(),...f.activationReadyAt?{activationReadyAt:f.activationReadyAt}:{},...f.releaseReadyAt?{releaseReadyAt:f.releaseReadyAt}:{},...f.checkpoint?{checkpoint:f.checkpoint}:{}};if(!Number.isInteger(h.epoch)||h.epoch<1)throw Error("hot-state authority epoch is invalid");if(b&&h.epoch<b.epoch)throw Error("hot-state authority epoch cannot regress");return!function(a,b){let c=i().dirname(a);g().mkdirSync(c,{recursive:!0,mode:448});let d=i().join(c,`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`),f=g().openSync(d,"wx",384);try{g().writeFileSync(f,`${JSON.stringify(b,null,2)}
130
+ `,"utf8"),g().fsyncSync(f)}finally{g().closeSync(f)}g().renameSync(d,a);let h=g().openSync(c,"r");try{g().fsyncSync(h)}finally{g().closeSync(h)}}(l(a),h),h}function u(a,b,c,d={}){if(null!==c&&!m(c))throw Error("hot-state release revision is invalid");return(0,j.Ol)(l(a),"hot-state authority is busy",()=>t(a,n(a),b,c,d))}function v(a,b,c){return(0,j.Ol)(l(a),"hot-state authority is busy",()=>{let d=n(a);if(!d||"fencing"!==d.mode||d.epoch!==b.epoch||d.releaseRevision!==b.releaseRevision||d.checkpoint)throw Error("hot-state fence request changed before checkpoint acknowledgement");return t(a,d,"fencing",d.releaseRevision,{epoch:d.epoch,checkpoint:{acknowledgedAt:new Date().toISOString(),revisions:c}})})}function w(a,b){return(0,j.Ol)(l(a),"hot-state authority is busy",()=>{let c=n(a);if(!c||!s(c,b)||"preparing"!==c.mode)throw Error("hot-state preparation changed before completion");return t(a,c,"sqlite",c.releaseRevision,{epoch:c.epoch})})}function x(a,b){return(0,j.Ol)(l(a),"hot-state authority is busy",()=>{let c=n(a);if(!c||!s(c,b)||"sqlite"!==c.mode)throw Error("hot-state authority changed before activation completed");return t(a,c,"sqlite",c.releaseRevision,{epoch:c.epoch,activationReadyAt:new Date().toISOString()})})}function y(a,b){return(0,j.Ol)(l(a),"hot-state authority is busy",()=>{let c=n(a);if(!c||!s(c,b)||"sqlite"!==c.mode||"string"!=typeof c.activationReadyAt)throw Error("hot-state authority changed before Viewer release startup completed");return t(a,c,"sqlite",c.releaseRevision,{epoch:c.epoch,activationReadyAt:c.activationReadyAt,releaseReadyAt:new Date().toISOString()})})}}};
@@ -0,0 +1,11 @@
1
+ "use strict";exports.id=5689,exports.ids=[5689],exports.modules={22371:(a,b,c)=>{c.d(b,{le:()=>k,pQ:()=>o,e3:()=>p});var d=c(73024),e=c.n(d);c(76760);var f=c(27146),g=c(22619),h=c(51888),i=c(49048);let j=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],k=12e3;class l extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let m=()=>(0,f.BQ)("role-presets.json");function n(a){return i.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold}})}function o(){return n(function(){let a,b;try{a=e().readFileSync(m(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:1,overrides:{}};throw new l(`could not read role override registry: ${m()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new l("role override registry contains malformed JSON",{cause:a})}if(1!==b.schemaVersion)throw new l(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new l("role override registry must contain an overrides object");let c={};for(let[a,d]of Object.entries(b.overrides)){if(!("string"==typeof a&&j.includes(a))||!function(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"config"!==a&&"promptScaffold"!==a)||void 0!==a.promptScaffold&&("string"!=typeof a.promptScaffold||a.promptScaffold.length>k))return!1;if(void 0!==a.config){if(!a.config||"object"!=typeof a.config||Array.isArray(a.config)||Object.keys(a.config).some(a=>"engine"!==a&&"model"!==a&&"effort"!==a))return!1;let{engine:b,model:c,effort:d}=a.config;if(void 0!==b&&"claude"!==b&&"codex"!==b||void 0!==c&&("string"!=typeof c||c.length>128)||void 0!==d&&("string"!=typeof d||d.length>32))return!1}return!0}(d)||!function(a,b){let c={...i.W.find(b=>b.id===a).config,...b.config};return!(c.model.length>128||/[\u0000-\u001f\u007f]/.test(c.model))&&("claude"!==c.engine||!!(0,h.OV)(c.model))&&("codex"!==c.engine||!!c.model.startsWith("gpt-"))&&(0,g.z9)(c.engine,c.effort)}(a,d))throw new l(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:1,overrides:c}}().overrides)}function p(){try{return o()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),n({})}}},22619:(a,b,c)=>{c.d(b,{BL:()=>j,ck:()=>g,ve:()=>i,z9:()=>e});let d={claude:["low","medium","high","xhigh","max"],codex:["low","medium","high","xhigh"]};function e(a,b){return d[a].includes(b)}let f=["minimal","low","medium","high","xhigh","max","ultra"];function g(a){return f.includes(a)}let h=[[/^gpt-5\.6-(sol|terra)\b/,["low","medium","high","xhigh","max","ultra"]],[/^gpt-5\.6\b/,["low","medium","high","xhigh","max"]]];function i(a,b){if("claude"===a)return d.claude;if("codex"!==a)return null;let c=(b??"").trim().toLowerCase();for(let[a,b]of h)if(a.test(c))return b;return d.codex}function j(a,b){let c="string"==typeof b.effort?b.effort.trim():"";return c&&!e(a,c)?{effort:null,fast:null,error:`effort for ${a} must be one of: ${d[a].join(", ")}`}:{effort:c||null,fast:"codex"===a&&"boolean"==typeof b.fast?b.fast:null}}},38751:(a,b,c)=>{c.d(b,{E2:()=>s,G$:()=>r,JC:()=>v,YX:()=>x,oh:()=>y});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(27146),k=c(14928),l=c(46211);let m=null;function n(){return(0,j.BQ)("project-aliases.json")}function o(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=Object.entries(a);return b.every(([a,b])=>!!a.trim()&&"string"==typeof b&&!!b.trim())?Object.fromEntries(b):null}function p(){let a,b=n();try{a=g().statSync(b)}catch{return(m={file:b,mtimeMs:-1,size:-1,snapshot:{aliases:{},displayNames:{}}}).snapshot}if(m&&m.file===b&&m.mtimeMs===a.mtimeMs&&m.size===a.size)return m.snapshot;try{let c=JSON.parse(g().readFileSync(b,"utf8")),d=1===c.schemaVersion?o(c.aliases):null,e=1===c.schemaVersion?o(c.displayNames):null,f=d&&e?{aliases:d,displayNames:e}:{aliases:{},displayNames:{}};return m={file:b,mtimeMs:a.mtimeMs,size:a.size,snapshot:f},f}catch{let c={aliases:{},displayNames:{}};return m={file:b,mtimeMs:a.mtimeMs,size:a.size,snapshot:c},c}}function q(a,b){let c=a,d=new Set;for(;b[c]&&!d.has(c);)d.add(c),c=b[c];return d.has(c)?a:c}function r(a){return q(a,p().aliases)}function s(){let a=p();return{aliases:{...a.aliases},displayNames:{...a.displayNames}}}function t(a){try{let b=JSON.parse(g().readFileSync((0,j.BQ)(a),"utf8"));return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function u(a,b,c){let d=(["flows","pipelines","workflows"].includes(b)?(0,k.Vx)((0,j.BQ)("state.sqlite"),b):null)??t(a)?.[b];if(!Array.isArray(d))return[];let e=[];for(let a of d)!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.project&&a.project.trim()&&"string"==typeof a[c]&&a[c].trim()&&e.push([a.project,a[c]]);return e}function v(){let a=function(){let a=t("worktree-map.json");if(!a)return new Map;let b=new Map;for(let[c,d]of Object.entries(a)){if(!d||"object"!=typeof d||Array.isArray(d))continue;let a=d.repo;"string"==typeof a&&a.trim()&&b.set(c,a)}return b}(),b=[...u("flows.json","flows","cwd"),...u("pipelines.json","pipelines","repoDir"),...u("workflows.json","workflows","repoDir")],c=new Map;for(let[d,e]of b){let b=(0,l.V5)(e)??a.get(e),f=b?(0,l.im)(b):null;if(!f)continue;let g=c.get(d)??new Map,h=g.get(f.project)??{registration:{source:d,target:f.project,displayName:f.displayName},records:0};h.records+=1,g.set(f.project,h),c.set(d,g)}let d=[],e=[];for(let[a,b]of c){if(b.has(a)){b.size>1&&e.push(a);continue}let c=[...b.values()].sort((a,b)=>b.records-a.records),f=c.reduce((a,b)=>a+b.records,0),g=c[0];2*g.records>f?d.push(g.registration):e.push(a)}let f=function(a){let b=new Map(a.map(a=>[a.source,a.target])),c=new Set,d=new Set;for(let[a,e]of[["tasks.json","tasks"],["flows.json","flows"],["pipelines.json","pipelines"],["workflows.json","workflows"]]){let f=new Map;for(let g of function(a,b){let c=(["flows","pipelines","workflows"].includes(b)?(0,k.Vx)((0,j.BQ)("state.sqlite"),b):null)??t(a)?.[b];return Array.isArray(c)?c.filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)):[]}(a,e)){if("string"!=typeof g.id||!g.id.trim()||"string"!=typeof g.project||!g.project.trim())continue;let a=r(g.project),h=b.get(a)??a,i=`${h}\0${g.id}`,j=f.get(i);j&&j!==a?(c.add(`${e} id collision`),b.has(j)&&d.add(j),b.has(a)&&d.add(a)):f.set(i,a)}}return{labels:[...c],sources:d}}(d);return e.push(...f.labels),{registrations:d.filter(a=>!f.sources.has(a.source)),conflicts:e}}function w(a){let b=p(),c={...b.aliases},d={...b.displayNames};for(let b of a){let a=b.source.trim(),e=q(b.target.trim(),c),f=b.displayName.trim();if(!a||!e||!f)return null;let g=c[a]?q(c[a],c):null;if(g&&g!==e)return null;a!==e&&(c[a]=e),d[e]=f}return{aliases:c,displayNames:d}}function x(a){return null!==w(a)}function y(a){if(0===a.length)return!0;let b=w(a);if(!b)return!1;let c=n(),d=i().join(i().dirname(c),`.${i().basename(c)}.${process.pid}.${e().randomUUID()}.tmp`);try{return g().mkdirSync(i().dirname(c),{recursive:!0,mode:448}),g().writeFileSync(d,JSON.stringify({schemaVersion:1,...b},null,2)+"\n",{encoding:"utf8",mode:384}),g().renameSync(d,c),m=null,p(),!0}catch{try{g().rmSync(d,{force:!0})}catch{}return!1}}},46211:(a,b,c)=>{c.d(b,{MO:()=>m,Mv:()=>l,NP:()=>o,V5:()=>s,im:()=>t,rj:()=>p,z:()=>n});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c,f=e().createHash("sha256").update(`dir:${b}`).digest("hex").slice(0,32);return{project:`dir-${f}`,displayName:d}}function p(a){return a===l?m:a}function q(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function r(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return q(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return q(f)?f:null}catch{return null}}function s(a){let b=k().resolve(a);for(;;){if(r(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function t(a){let b,c=r(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),f=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),h=d?function(a,b){let c=/^[a-z][a-z0-9+.-]*:\/\//i.test(a)?null:/^(?:[^@\s]+@)?([^:/\s]+):(.+)$/.exec(a);if(c){let a=c[1].toLowerCase(),b=c[2].replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return b?`${a}/${b}`:null}try{let b=new URL(a);if("file:"===b.protocol){let a=k().resolve(b.pathname).replace(/\.git$/i,"");return`file:${a}`}let c=b.hostname.toLowerCase(),d=b.port?`:${b.port}`:"",e=b.pathname.replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return c&&e?`${c}${d}/${e}`:null}catch{let c=k().resolve(b,a).replace(/\.git$/i,"");return`file:${c}`}}(d,a):`local:${f}`,i=h&&h.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!h||!i)return null;let j=e().createHash("sha256").update(h).digest("hex").slice(0,32);return{project:`repo-${j}`,displayName:i,canonicalRemote:h}}},49048:(a,b,c)=>{c.d(b,{W:()=>g});var d=c(51888);let e=["Read-only mode: edits, staging, commits, pushes, service restarts, and GitHub comments are prohibited.","Every finding carries file:line evidence. Clean work earns a clear NO FINDINGS verdict."],f="Two standing rules. (1) Anchor the frame: when the assignment carries the requester's originating requirement, validate the work against that verbatim requirement, never against the artifact's previous revision — WRONG-PREMISE (\"this does not serve the original requirement\") is an expected verdict and outranks any finding about internal rigour. (2) Over-engineering pass: on every review, flag machinery heavier than the problem it solves (a library plus wrapper where a native primitive does), name the simpler mechanism, and report what to cut — OVER-BUILT is a first-class verdict, and a round that only removes scope is a successful round.",g=[{id:"orchestrator",name:"Orchestrator",description:"Coordinates fresh agents through the Viewer control plane.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Operating mode for the coordination run.",kind:"select",options:["standard","plan-tickets","wayfind","backlog-campaign"]},{key:"repo",label:"Repository",description:"Repository for backlog-campaign mode.",kind:"text"},{key:"issueQuery",label:"Issue query",description:"GitHub issue query for backlog-campaign mode.",kind:"text"},{key:"urgent",label:"Urgent list",description:"Comma-separated urgent issue ids.",kind:"text"},{key:"maxWorkers",label:"Maximum workers",description:"Worker cap for backlog-campaign mode.",kind:"integer",default:3,min:1,max:20},{key:"mergePolicy",label:"Merge policy",description:"Delivery policy for backlog-campaign mode.",kind:"select",options:["pr","merge"]},{key:"completionPolicy",label:"Completion policy",description:"Terminal policy for backlog-campaign mode.",kind:"select",options:["pr-opened","merged","released"]}],promptScaffold:`You are the Orchestrator. Drive work through the production Viewer API at http://127.0.0.1:8898. Use fresh empty sessions with src lineage; forks are disabled. Keep every worker visible and controllable in the Viewer.
2
+
3
+ Mode: {{mode}}
4
+ Repository: {{repo}}
5
+ Issue query: {{issueQuery}}
6
+ Urgent list: {{urgent}}
7
+ Maximum workers: {{maxWorkers}}
8
+ Merge policy: {{mergePolicy}}
9
+ Completion policy: {{completionPolicy}}
10
+
11
+ For backlog-campaign mode, inventory dependencies before assignment, use Opus/Sol gates, route backend work to Terra and frontend work to Opus, complete one review round, and require root release checks. Before a Viewer replacement, preserve the external-worker deployment barrier.`,safetyFences:["Viewer control uses http://127.0.0.1:8898 with src lineage.","Fresh empty sessions only; forks are disabled.","One owner holds a file at a time across active worktrees."],capabilities:["spawn"]},{id:"reviewer",name:"Reviewer",description:"Reviews a code diff and returns severity-ranked evidence-backed findings.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"diffSource",label:"Diff source",description:"Diff or pull request reference to inspect.",kind:"text",required:!0},{key:"lens",label:"Lens",description:"Review lens.",kind:"select",options:["correctness","over-engineering","silent-failure","test-coverage","scope","prod-ops","standards+spec","code-smells","all"]},{key:"mode",label:"Mode",description:"Reviewer context mode.",kind:"select",options:["fresh"]},{key:"parallelN",label:"Parallel passes",description:"Independent review passes.",kind:"integer",min:1,max:8}],promptScaffold:`You are a fresh-context Reviewer. Inspect {{diffSource}} with lens {{lens}}. Run {{parallelN}} independent pass(es), preserving their axes. Report the reviewed SHA. State plainly when GitHub or DNS access was unavailable. Classify any gate blocked by sandbox limits as an environmental note and keep it out of code findings. Run TypeScript checks with bunx tsc --noEmit --incremental false so they do not need a tsbuildinfo write in the checkout. Return severity-ranked findings with file:line evidence, or exactly NO FINDINGS when the diff is clean. Every finding is an actionable fix plan: clear problem statement, fix intent, constraints, and acceptance criteria. No copy-paste code unless absolutely necessary. ${f}`,safetyFences:e,capabilities:["read-only"]},{id:"verifier",name:"Verifier",description:"Tests supplied hypotheses and returns a per-claim evidence verdict.",config:{engine:"codex",model:d.je,effort:"high"},parameters:[{key:"claims",label:"Claims",description:"Hypotheses to confirm or refute.",kind:"text",required:!0}],promptScaffold:"You are a Verifier. Evaluate these supplied claims: {{claims}}. Rank falsifiable hypotheses before testing. Return CONFIRMED or WRONG for every claim with exact evidence and identify missing evidence.",safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.je,effort:"medium"},parameters:[{key:"mode",label:"Mode",description:"Implementation discipline.",kind:"select",options:["plain","apply-fixes","tdd","diagnose","prototype","merge-resolve"]},{key:"domain",label:"Domain",description:"Product domain for the implementation.",kind:"select",options:["general","frontend"]}],promptScaffold:"You are a Builder in {{mode}} mode. Implement the scoped product directive with focused checks. Keep changes within the assigned file ownership, run a self-review, and report the verification evidence.",safetyFences:["Product source changes stay inside the assigned scope.","A deployment requires a Deployer role and explicit operator approval."],capabilities:[]},{id:"architect",name:"Architect",description:"Produces an evidence-grounded design without product edits.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Architecture output mode.",kind:"select",options:["design","spec","architecture-audit"]}],promptScaffold:`You are an Architect in {{mode}} mode. Ground the design in current code, state options and trade-offs, then deliver a design document. Product-source edits are prohibited. Open the document with the requester's originating requirement verbatim (with date and source; redact credentials and personal data). The default answer to "should we build this" is no unless that requirement demands it; validate the final design against the quote, and move cut scope into a "Deferred — not currently justified" section instead of deleting it. ${f}`,safetyFences:["Product-source edits, staging, commits, pushes, and service restarts are prohibited.","Capture an ADR only for a hard-to-reverse decision with a material trade-off."],capabilities:["read-only"]},{id:"cleaner",name:"Cleaner",description:"Safely recovers a dirty checkout under a backup contract.",config:{engine:"codex",model:d.fC,effort:"low"},parameters:[],promptScaffold:"You are a Cleaner. Classify the dirty checkout, preserve recoverable evidence before each destructive operation, and keep sibling worktrees untouched. Report the exact recovery actions and resulting git status.",safetyFences:["Create a backup before each destructive operation.","Sibling worktrees and user data remain untouched without explicit operator approval."],capabilities:[]},{id:"prod-auditor",name:"Prod-auditor",description:"Performs a read-only evidence-backed production investigation.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"questions",label:"Questions",description:"Production questions to investigate.",kind:"text",required:!0}],promptScaffold:"You are a Prod-auditor. Investigate {{questions}} through the production read wrapper only. Cite every finding with the exact command or SQL and UTC time bounds. Return evidence with no runtime mutation.",safetyFences:["Use the production read wrapper only.","Writes, restarts, deploys, and credential disclosure are prohibited."],capabilities:["read-only","production-read"]},{id:"deployer",name:"Deployer",description:"Plans a blue/green production deployment and stops for approval before mutation.",config:{engine:"codex",model:d.fC,effort:"medium"},parameters:[{key:"sha",label:"Merged SHA",description:"Merged commit SHA to deploy.",kind:"text",required:!0},{key:"pr",label:"Pull request",description:"Optional pull request reference.",kind:"text"}],promptScaffold:"You are a Deployer. Plan the blue/green deployment for merged SHA {{sha}} (PR {{pr}}). Validate the inactive color, present each mutating step for explicit operator approval, then stop. Preserve the external-worker deployment barrier.",safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]}};
@@ -0,0 +1,47 @@
1
+ "use strict";exports.id=6333,exports.ids=[6333],exports.modules={8668:(a,b,c)=>{c.d(b,{Wp:()=>g,cz:()=>d,mq:()=>h,oM:()=>f,zv:()=>e});let d="Europe/Kyiv",e={enabled:!1,time:"10:00",groups:[],promptIsDefault:!0},f=60;function g(a){return"string"==typeof a&&/^([01]\d|2[0-3]):[0-5]\d$/.test(a)}function h(a){return"string"==typeof a&&/^-?\d{1,20}$/.test(a)}},35961:(a,b,c)=>{c.d(b,{W:()=>g});var d=c(23211);let e=["localhost","127.0.0.1","::1"];function f(a){if(a.startsWith("[")){let b=a.indexOf("]");return -1===b?a:a.slice(1,b)}let b=a.lastIndexOf(":");return -1===b?a:a.slice(0,b)}function g(a){let b=new Set(e),c=process.env.LLV_TS_HOST;c&&b.add(f(c));let d=a.headers.get("host");if(null===d||!b.has(f(d)))return h();let g=a.headers.get("origin");if(null!==g){let a;try{a=new URL(g).host}catch{a=null}if(null===a||!b.has(f(a)))return h()}let i=a.headers.get("sec-fetch-site");return null!==i&&"same-origin"!==i&&"none"!==i?h():null}function h(){return d.NextResponse.json({error:"forbidden: cross-origin request"},{status:403})}},43034:(a,b,c)=>{c.d(b,{tx:()=>s,$S:()=>l,Cl:()=>k});var d=c(68032),e=c(80338),f=c(88714),g=c(21962);function h(a){return"number"!=typeof a||!Number.isFinite(a)||a<=0?null:Math.round(1e3*a)}function i(a){return/^\d+$/.test(a)}async function j(a){let b=await a.listChats({kind:"user",limit:100}),c=new Set,d=[],e=!1;for(let a of b)!c.has(a.id)&&(c.add(a.id),(a.username??"").toLowerCase().endsWith("bot")||d.push({id:a.id,title:a.title}));for(let b=1;b<=3;b+=1){let f=await a.pageChats({page:b,pageSize:100});if(0===f.length)break;for(let a of f)!c.has(a.id)&&i(a.id)&&(c.add(a.id),d.push(a));if(f.length<100)break;3===b&&(e=!0)}return{candidates:d,truncated:e}}async function k(a,b){let c=Date.parse(b.windowStart),d=await a.feedDialogs({sinceMs:c}),e=[],f=new Set;for(let a of d.dialogs)f.has(a.id)||(f.add(a.id),e.push({id:a.id,title:a.title,lastMessageAt:a.lastMessageAt}));let g=await j(a),h=g.candidates.filter(a=>!f.has(a.id)),i=null!==d.coveredSinceMs&&d.coveredSinceMs<=c?300:150,k=0;for(let b of h){if(k>=i)break;let d=await a.lastMessageAt(b.id);k+=1;let f=d?Date.parse(d):NaN;Number.isFinite(f)&&!(f<c)&&e.push({id:b.id,title:b.title,lastMessageAt:new Date(f).toISOString()})}e.sort((a,b)=>Date.parse(b.lastMessageAt)-Date.parse(a.lastMessageAt));let l=k>=i&&h.length>k;if(l||g.truncated)throw Error("Telegram report sources cannot cover this window");return{version:1,promptVersion:b.promptVersion,windowStart:b.windowStart,windowEnd:b.windowEnd,privateDialogs:e.slice(0,25),groups:b.groups.map(a=>({...a})),probes:k,feedDialogs:f.size,truncated:e.length>25,probeBudgetExhausted:l}}async function l(a){let b=await a.listChats({kind:"group",limit:100}),c=new Set,d=[];for(let a of b)c.has(a.id)||(c.add(a.id),d.push({id:a.id,title:a.title}));for(let b=1;b<=3;b+=1){let e=await a.pageChats({page:b,pageSize:100});if(0===e.length)break;for(let a of e)c.has(a.id)||i(a.id)||(c.add(a.id),d.push(a));if(e.length<100)break}return d}function m(a){return(a?.content??[]).filter(a=>a?.type==="text").map(a=>a.text??"").join("\n")}function n(a){try{let b=JSON.parse(m(a));return Array.isArray(b?.results)?b.results:[]}catch{return[]}}async function o(a,b,d){let{Client:e}=await Promise.all([c.e(9901),c.e(9434)]).then(c.bind(c,79434)),{StreamableHTTPClientTransport:g}=await Promise.all([c.e(9901),c.e(7295)]).then(c.bind(c,59676)),h=new e({name:"agent-log-viewer",version:"1.0.0"}),i=new g(new URL((0,f.h3)()),{requestInit:{headers:{Authorization:`Bearer ${a.connectorToken}`}}});try{return await h.connect(i),await h.callTool({name:b,arguments:d})}finally{await h.close().catch(()=>void 0)}}let p={readSession:d.w0,callTool:o,ensureConnector:a=>(0,e.X8)(a),sleep:a=>new Promise(b=>setTimeout(b,a)),now:Date.now};function q(a,b){let c=b.readSession();if(!c)throw Error("Telegram is not connected");if(c.credentialRef!==a)throw Error("Telegram credential generation changed");return c}async function r(a,b,c,d=p){try{return await d.callTool(a,b,c)}catch{}let e=Math.max(1,d.readinessTimeoutMs??3e4),f=d.now()+e,g=250;for(;d.now()<f;){let e,h=q(a.credentialRef,d);try{e=await d.ensureConnector(h)}catch{e={ok:!1,code:"connector_failed"}}if(e.ok){let e=q(a.credentialRef,d);try{return await d.callTool(e,b,c)}catch{}}else if("connector_failed"!==e.code)break;let i=f-d.now();if(i<=0)break;await d.sleep(Math.min(g,i)),g=Math.min(2*g,2e3)}throw Error("Telegram connector is unavailable")}function s(a=null,b=p){let c=a,f=async(a,d)=>{let e=b.readSession();if(!e)throw Error("Telegram is not connected");if(c??=e.credentialRef,e.credentialRef!==c)throw Error("Telegram credential generation changed");return await r(e,a,d,b)};return{async getMe(){let a=JSON.parse(m(await f("get_me",{}))),b="string"==typeof a?.name?a.name.trim():"",c=(0,g.S)(a?.id);return b||c?{name:b,username:"string"==typeof a.username&&a.username?a.username:null,id:c}:null},async feedDialogs(a){let b=null;try{let a=m(await f("incoming_feed_status",{}));b=function(a,b){if(!b)return null;let c=function(a){let b;try{b=JSON.parse(a)}catch{return null}let c=b?.enabled===!0||b?.autostart_pending===!0,d="string"==typeof b?.feed_file?b.feed_file.trim():"";return c&&d?d:null}(a);return null!==c&&c===(0,d.ZI)(b)?c:null}(a,c)}catch{}if(!b)throw Error("Telegram incoming feed is unavailable");return{dialogs:function(a,b){if(!a)return[];let c=(0,d.Cx)(a,{chunkBytes:524288,maxBytes:8388608},a=>(function(a,b){for(let c of a.split("\n")){let a;if(!c.trim())continue;try{a=JSON.parse(c)}catch{continue}let d=h(a.ts);if(null!==d&&d<b)return!0}return!1})(a,b));if(null===c)return[];if(!c.complete)throw Error("Telegram incoming feed is larger than one report read");return function(a,b){let c=new Map,d=new Map;for(let f of a.split("\n")){var e;let a;if(!f.trim())continue;try{a=JSON.parse(f)}catch{continue}let g="number"==typeof(e=a.chat_id)?Number.isSafeInteger(e)&&e>0?String(e):null:"string"!=typeof e?null:/^[1-9]\d{0,18}$/.test(e.trim())?e.trim():null;if(!g||"string"==typeof a.username&&a.username.toLowerCase().endsWith("bot"))continue;let i=h(a.ts);if(null===i||i<b)continue;let j=c.get(g);void 0!==j&&j>=i||(c.set(g,i),d.set(g,"string"==typeof a.name&&a.name?a.name.slice(0,120):g))}return[...c.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({id:a,title:d.get(a)??a,lastMessageAt:new Date(b).toISOString()}))}(c.text,b)}(b,a.sinceMs),coveredSinceMs:null===c?null:(0,e.Yb)(c)}},listChats:async a=>n(await f("list_chats",{chat_type:a.kind,limit:Math.min(a.limit,100)})).map(b=>(function(a,b){let c=a.chat_id;if("number"!=typeof c&&"string"!=typeof c)return null;let d="string"==typeof a.title?a.title:"string"==typeof a.name?a.name:String(c);return{id:String(c),kind:b,title:d,username:"string"==typeof a.username?a.username:null,unread:"number"==typeof a.unread?a.unread:0}})(b,a.kind)).filter(a=>null!==a),pageChats:async a=>n(await f("get_chats",{page:a.page,page_size:Math.min(a.pageSize,100)})).map(a=>{let b=a.chat_id;return"number"!=typeof b&&"string"!=typeof b?null:{id:String(b),title:"string"==typeof a.title?a.title:String(b)}}).filter(a=>null!==a),async lastMessageAt(a){let b=n(await f("list_messages",{chat_id:Number(a),limit:1}))[0],c=b?.date;if("string"!=typeof c)return null;let d=Date.parse(c);return Number.isFinite(d)?new Date(d).toISOString():null}}}},46453:(a,b,c)=>{c.d(b,{VD:()=>w,M2:()=>v});var d=c(77598),e=c.n(d),f=c(4837),g=c(8668),h=c(96101),i=c(55862),j=c(52538),k=c(43034),l=c(10230);function m(a){a().catch(()=>void 0)}let n="127.0.0.1";async function o(a){var b;let[{executeSpawnRequest:d,productionSpawnCommandDependencies:e},{ensureOperatorSpawnCapability:f},{VIEWER_SPAWN_CAPABILITY_HEADER:g}]=await Promise.all([Promise.all([c.e(8966),c.e(1617),c.e(9733),c.e(9940),c.e(4509),c.e(2977),c.e(8797),c.e(8996),c.e(3587),c.e(8176),c.e(6850),c.e(1858),c.e(9411),c.e(8617),c.e(6826),c.e(640),c.e(2190),c.e(4127),c.e(7471),c.e(7722),c.e(9937)]).then(c.bind(c,67722)),c.e(2318).then(c.bind(c,89937)),c.e(4012).then(c.bind(c,4012))]),h={headers:new Headers({host:n,origin:`http://${n}`,"sec-fetch-site":"same-origin",[g]:f()}),json:async()=>a.body},i=await d(h,{...e,...(b=a.grantActive,{defer:m,internalGrant:()=>({sessionClass:l.Vv,mcpServers:(0,l.FE)({grantActive:b()})})})});return{status:i.status,body:await i.json()}}var p=c(79554),q=c(68032);let r={now:Date.now,connection:()=>{try{return(0,q.Kd)()}catch{return{version:1,status:"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:"session_unsafe",identityIdUpgradedAt:null}}},readPort:a=>(0,k.tx)(a),beginReadPhase:async()=>{let{telegramService:a}=await Promise.all([c.e(8966),c.e(849)]).then(c.bind(c,70849));return await a().beginReportReadPhase()},migrateIdentity:async function(){try{let{telegramService:a}=await Promise.all([c.e(8966),c.e(849)]).then(c.bind(c,70849));await a().checkHealth()}catch{}},spawn:o,reportRunConversation:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9733),c.e(2962)]).then(c.bind(c,29733)),d=b(),e=d.spawnReceiptForClientAttempt((0,j.hS)(a));return e?d.canonicalConversationId(e.conversationId):null}catch{return null}},conversationLive:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9733),c.e(2962)]).then(c.bind(c,29733)),d=b().conversation(a);if(!d)return!1;return d.turn?.state!=="terminal"}catch{return!0}},log:a=>console.error(`[telegram report] ${a}`)};function s(a){let b=a.identity?.id;return b&&a.credentialRef?{id:b,credentialRef:a.credentialRef}:null}class t{constructor(a=r){this.ports=a,this.running=!1,this.planning=new Set,this.pending=[]}grantActive(a=null){let b=this.ports.connection();return(null===a||b.credentialRef===a)&&(0,p.rD)().settings.enabled&&"connected"===b.status}payload(){var a;let b=(0,p.rD)(),c=b.active?[{id:(a=b.active).runId,trigger:a.trigger,startedAt:a.startedAt,finishedAt:null,windowStart:a.windowStart,windowEnd:a.windowEnd,status:"running",errorCode:null,conversationId:a.conversationId,hasReport:!1,promptVersion:a.promptVersion},...b.history]:b.history,d=(0,i.jF)({now:this.ports.now(),settings:b.settings,cursor:b.cursor});return{settings:{...b.settings,promptIsDefault:null===b.prompt},history:c,nextRunAt:null===d?null:new Date(d).toISOString()}}async tick(){if(!this.running){this.running=!0;try{this.reconcileDisconnected(),await this.finalizeActiveRun();let a=(0,p.rD)();if(a.active||!(0,i.z1)({now:this.ports.now(),settings:a.settings,cursor:a.cursor}))return;let b=(0,i.l)(this.ports.now(),g.cz);(0,p.k)(a=>{a.cursor.lastScheduledDay=b});let c=this.beginRun("scheduled");c.ok&&await this.execute(c.runId)}catch{this.ports.log("tick_failed")}finally{this.running=!1}}}async runNow(){let a;if(this.running)return{ok:!1,code:"run_in_progress"};this.running=!0;try{if(await this.finalizeActiveRun(),(0,p.rD)().active)return{ok:!1,code:"run_in_progress"};a=this.beginRun("manual")}finally{this.running=!1}if(!a.ok)return a;let b=this.execute(a.runId);return this.pending.push(b),b.finally(()=>{this.pending=this.pending.filter(a=>a!==b)}),a}async settled(){let a=this.pending;this.pending=[],await Promise.all(a)}reconcileDisconnected(){let a=this.ports.connection();if("disconnected"!==a.status||null!==a.credentialRef)return;let b=(0,p.rD)();(b.settings.enabled||0!==b.history.length||b.active)&&(0,p.mI)()}beginRun(a){let b=(0,p.rD)(),c=this.ports.connection();if(!b.settings.enabled)return this.recordFailure(a,"reports_disabled");if("connected"!==c.status)return this.recordFailure(a,"not_connected");let d=e().randomUUID(),f=(0,i.s)(this.ports.now(),b.cursor);return this.planning.add(d),(0,p.k)(b=>{b.active={runId:d,trigger:a,startedAt:new Date(this.ports.now()).toISOString(),windowStart:f.startAt,windowEnd:f.endAt,conversationId:null,promptVersion:h.BL}}),{ok:!0,runId:d}}async execute(a){try{await this.executeLocked(a)}catch{this.ports.log("run_failed"),this.settle(a,"failed","launch_failed",!1)}finally{this.planning.delete(a)}}async verifiedIdentity(){let a=this.ports.connection();if(a.identity?.id)return s(a);if(!a.identity||a.identityIdUpgradedAt)return null;await this.ports.migrateIdentity();let b=this.ports.connection();return"connected"!==b.status?null:s(b)}async executeLocked(a){let b,c,d,e=(0,p.rD)(),g=e.active;if(!g||g.runId!==a)return;let i={startAt:g.windowStart,endAt:g.windowEnd},l=await this.verifiedIdentity();if(!l){this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}let m=this.ports.readPort(l.credentialRef);if(!this.ports.beginReadPhase)throw Error("Telegram report read lease is unavailable");let n=await this.ports.beginReadPhase();try{var o,q;try{b=await m.getMe()}catch{this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}if(o=b,q=l,!(o?.id&&q?.id)||o.id!==q.id){this.ports.log("account_mismatch"),this.settle(a,"account-mismatch",null,!1);return}try{let b=await (0,k.Cl)(m,{windowStart:i.startAt,windowEnd:i.endAt,groups:e.settings.groups,promptVersion:h.BL});c=(0,p.uc)(a,b)}catch{this.ports.log("sources_failed"),this.settle(a,"failed","sources_failed",!1);return}}finally{n()}if((0,p.rD)().active?.runId!==a)return void(0,p.jc)(a);if(this.ports.connection().credentialRef!==l.credentialRef){this.ports.log("account_mismatch"),(0,p.jc)(a),this.settle(a,"account-mismatch",null,!1);return}let r=(0,h.Y_)({windowStart:i.startAt,windowEnd:i.endAt,sourcesPath:c,outputPath:(0,p.sk)(a),instructions:(0,p.kG)((0,p.rD)())});try{d=await this.ports.spawn({body:{engine:"codex",model:f.je,effort:"medium",cwd:(0,p.lN)(),clientAttemptId:(0,j.hS)(a),project:j.zg,prompt:r},grantActive:()=>this.grantActive(l.credentialRef)})}catch{this.ports.log("launch_failed"),this.settle(a,"failed","launch_failed",!1);return}let s="string"==typeof d.body.conversationId?d.body.conversationId:null;if(!(d.status>=200&&d.status<300&&!1!==d.body.ok&&null!==s)){this.ports.log("launch_rejected"),this.settle(a,"failed","launch_failed",!1);return}(0,p.k)(b=>{b.active?.runId===a&&(b.active.conversationId=s)})}async relinkActiveRun(a){if(this.planning.has(a))return null;let b=await this.ports.reportRunConversation(a);return b?((0,p.k)(c=>{c.active?.runId!==a||c.active.conversationId||(c.active.conversationId=b)}),b):null}async finalizeActiveRun(){let a=(0,p.rD)().active;if(!a)return;let b=(0,p.H$)(a.runId),c=(0,h.U$)(b);if("ok"===c.kind){(0,p.$H)(a.runId,c.report),this.settle(a.runId,"ok",null,!0);return}if("quiet"===c.kind)return void this.settle(a.runId,"quiet",null,!1);if("invalid"===c.kind&&null!==b)return void this.settle(a.runId,"failed","invalid_report",!1);let d=Date.parse(a.startedAt),e=Number.isFinite(d)&&this.ports.now()-d>27e5,f=a.conversationId??await this.relinkActiveRun(a.runId);f?await this.ports.conversationLive(f)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","run_ended_without_report",!1):this.planning.has(a.runId)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","launch_failed",!1)}settle(a,b,c,d){(0,p.k)(e=>{let f=e.active;if(!f||f.runId!==a)return;if(e.active=null,e.history=[{id:f.runId,trigger:f.trigger,startedAt:f.startedAt,finishedAt:new Date(this.ports.now()).toISOString(),windowStart:f.windowStart,windowEnd:f.windowEnd,status:b,errorCode:c,conversationId:f.conversationId,hasReport:d,promptVersion:f.promptVersion},...e.history],"ok"!==b&&"quiet"!==b){let a=e.cursor.unreportedSinceAt;(!a||Date.parse(f.windowStart)<Date.parse(a))&&(e.cursor.unreportedSinceAt=f.windowStart);return}e.cursor.lastSuccessfulWindowEndAt=f.windowEnd,e.cursor.unreportedSinceAt=null;let h=(0,i.l)(this.ports.now(),g.cz);this.ports.now()>=(0,i.wk)(h,e.settings.time,g.cz)&&(e.cursor.lastScheduledDay=h)}),d?(0,p.jc)(a):(0,p.FF)(a)}recordFailure(a,b,c=(0,i.s)(this.ports.now(),(0,p.rD)().cursor)){let d=new Date(this.ports.now()).toISOString();return(0,p.k)(f=>{if(f.history=[{id:e().randomUUID(),trigger:a,startedAt:d,finishedAt:d,windowStart:c.startAt,windowEnd:c.endAt,status:"failed",errorCode:b,conversationId:null,hasReport:!1,promptVersion:h.BL},...f.history],"reports_disabled"===b)return;let g=f.cursor.unreportedSinceAt;(!g||Date.parse(c.startAt)<Date.parse(g))&&(f.cursor.unreportedSinceAt=c.startAt)}),{ok:!1,code:b}}}let u=globalThis;function v(){return u.__llvTelegramReportRunner??=new t}function w(){u.__llvTelegramReportTimer||(u.__llvTelegramReportTimer=setInterval(()=>{v().tick()},6e4),u.__llvTelegramReportTimer.unref?.(),v().tick())}},52538:(a,b,c)=>{c.d(b,{hS:()=>f,jE:()=>g,zg:()=>d});let d="telegram-reports",e="telegram-report-";function f(a){return`${e}${a}`}function g(a){if("string"!=typeof a||!a.startsWith(e))return null;let b=a.slice(e.length);return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(b)?b:null}},55862:(a,b,c)=>{c.d(b,{jF:()=>k,l:()=>g,s:()=>l,wk:()=>i,z1:()=>j});var d=c(8668);let e=new Map;function f(a,b){let c=e.get(b);c||(c=new Intl.DateTimeFormat("en-US",{timeZone:b,hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),e.set(b,c));let d={};for(let b of c.formatToParts(new Date(a)))d[b.type]=b.value;return{year:Number(d.year),month:Number(d.month),day:Number(d.day),hour:Number(d.hour)%24,minute:Number(d.minute),second:Number(d.second)}}function g(a,b=d.cz){let c=f(a,b);return`${String(c.year).padStart(4,"0")}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`}function h(a,b){let c=f(a,b);return Date.UTC(c.year,c.month-1,c.day,c.hour,c.minute,c.second)-1e3*Math.floor(a/1e3)}function i(a,b,c=d.cz){let[e,f]=b.split(":").map(Number),[g,j,k]=a.split("-").map(Number),l=Date.UTC(g,j-1,k,e,f,0),m=l-h(l,c);return l-h(m,c)}function j(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return!1;let c=g(a.now,b);return a.cursor.lastScheduledDay!==c&&a.now>=i(c,a.settings.time,b)}function k(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return null;if(j(a))return a.now;let c=i(g(a.now,b),"12:00",b);for(let d=0;d<=8;d+=1){let e=g(c+864e5*d,b),f=i(e,a.settings.time,b);if(!(f<=a.now)&&a.cursor.lastScheduledDay!==e)return f}return null}function l(a,b){let c=b.unreportedSinceAt?Date.parse(b.unreportedSinceAt):NaN,d=b.lastSuccessfulWindowEndAt?Date.parse(b.lastSuccessfulWindowEndAt):NaN,e=Number.isFinite(c)?c:d;return{startAt:new Date(Number.isFinite(e)&&e<a?Math.max(e,a-2592e5):a-864e5).toISOString(),endAt:new Date(a).toISOString()}}},79554:(a,b,c)=>{c.d(b,{$H:()=>w,FF:()=>B,H$:()=>z,Kq:()=>x,Zc:()=>q,iZ:()=>r,jc:()=>A,k:()=>v,kG:()=>s,lN:()=>n,mI:()=>C,rD:()=>u,sk:()=>m,uc:()=>y});var d=c(73024),e=c.n(d);c(76760);var f=c(91724),g=c(8668),h=c(96101),i=c(68032);function j(){return(0,f.BQ)("telegram","reports.json")}function k(a){return(0,f.BQ)("telegram",`report-${a}.md`)}function l(a){return(0,f.BQ)("telegram",`run-${a}.sources.json`)}function m(a){return(0,f.BQ)("telegram",`run-${a}.out.md`)}function n(){let a=process.env.LLV_TELEGRAM_REPORT_CWD?.trim()||(0,f.BQ)("telegram","report-workspace");return e().mkdirSync(a,{recursive:!0,mode:448}),a}let o={version:1,settings:{enabled:g.zv.enabled,time:g.zv.time,groups:[]},prompt:null,cursor:{lastSuccessfulWindowEndAt:null,unreportedSinceAt:null,lastScheduledDay:null},active:null,history:[]};function p(a){return"string"==typeof a&&a?a:null}function q(a){let b=a&&"object"==typeof a?a:{};return{enabled:!0===b.enabled,time:(0,g.Wp)(b.time)?b.time:g.zv.time,groups:function(a){if(!Array.isArray(a))return[];let b=[];for(let c of a.slice(0,50))(0,g.mq)(c.id)&&b.push({id:c.id,title:"string"==typeof c.title?c.title.slice(0,120):c.id,mode:"light"===c.mode?"light":"full"});return b}(b.groups)}}function r(a){if("string"!=typeof a)return;let b=a.trim();return b&&b!==h.U8.trim()?b.slice(0,h.gW):null}function s(a){return a.prompt??h.U8}function t(a){let b=a&&"object"==typeof a?a:{},c=p(b.id),d=p(b.startedAt);if(!c||!d)return null;let e=b.status;return{id:c,trigger:"manual"===b.trigger?"manual":"scheduled",startedAt:d,finishedAt:p(b.finishedAt),windowStart:p(b.windowStart)??d,windowEnd:p(b.windowEnd)??d,status:"ok"===e||"quiet"===e||"failed"===e||"account-mismatch"===e||"running"===e?e:"failed",errorCode:p(b.errorCode)??null,conversationId:p(b.conversationId),hasReport:!0===b.hasReport,promptVersion:p(b.promptVersion)??"unknown"}}function u(){var a;let b,c,d,e=null;try{e=(0,i.ck)(j())}catch{return{...o,settings:{...o.settings},cursor:{...o.cursor},history:[]}}if(!e||"object"!=typeof e)return{...o,settings:{...o.settings},cursor:{...o.cursor},history:[]};let f=e,g=f.cursor&&"object"==typeof f.cursor?f.cursor:{};return{version:1,settings:q(f.settings),prompt:"string"==typeof f.prompt&&f.prompt.trim()?f.prompt.slice(0,h.gW):null,cursor:{lastSuccessfulWindowEndAt:p(g.lastSuccessfulWindowEndAt),unreportedSinceAt:p(g.unreportedSinceAt),lastScheduledDay:p(g.lastScheduledDay)},active:(c=p((b=(a=f.active)&&"object"==typeof a?a:{}).runId),d=p(b.startedAt),c&&d?{runId:c,trigger:"manual"===b.trigger?"manual":"scheduled",startedAt:d,windowStart:p(b.windowStart)??d,windowEnd:p(b.windowEnd)??d,conversationId:p(b.conversationId),promptVersion:p(b.promptVersion)??"unknown"}:null),history:Array.isArray(f.history)?f.history.map(t).filter(a=>null!==a):[]}}function v(a){let b=u();a(b);let c=b.history.slice(0,g.oM);for(let a of b.history.slice(g.oM))B(a.id);return b.history=c,(0,i.xh)(j(),JSON.stringify(b)),b}function w(a,b){(0,i.xh)(k(a),b)}function x(a){try{return(0,i.L0)(k(a))}catch{return null}}function y(a,b){let c=l(a);return(0,i.xh)(c,JSON.stringify(b,null,2)+"\n"),c}function z(a){let b=m(a);try{if(null===(0,i._q)(!1))return null;let a=e().lstatSync(b);if(a.isSymbolicLink()||!a.isFile()||"function"==typeof process.getuid&&a.uid!==process.getuid()||0===a.size||a.size>262144)return null;return e().readFileSync(b,"utf8")}catch{return null}finally{try{e().rmSync(b,{force:!0})}catch{}}}function A(a){try{(0,i.at)(l(a))}catch{}try{e().rmSync(m(a),{force:!0})}catch{}}function B(a){try{(0,i.at)(k(a))}catch{}A(a)}function C(){let a=u();for(let b of a.history)B(b.id);a.active&&B(a.active.runId);try{(0,i.at)(j())}catch{}try{let a=(0,f.BQ)("telegram","report-workspace");e().rmSync(a,{recursive:!0,force:!0})}catch{}}},80338:(a,b,c)=>{c.d(b,{TT:()=>I,UF:()=>J,X8:()=>H,Yb:()=>x,e4:()=>z});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(91724),j=c(59683),k=c(2033),l=c(24962),m=c(88714),n=c(68032);let o=new Set([...new Set(["export_contacts","get_admins","get_banned_users","get_blocked_users","get_bot_info","get_chat","get_chats","get_common_chats","get_contact_chats","get_contact_ids","get_direct_chat_by_contact","get_drafts","get_folder","get_full_chat","get_full_user","get_gif_search","get_history","get_last_interaction","get_me","get_media_info","get_message_context","get_message_link","get_message_reactions","get_message_read_by","get_messages","get_participants","get_pinned_messages","get_privacy_settings","get_recent_actions","get_scheduled_messages","get_sticker_sets","get_user_photos","get_user_status","incoming_feed_status","list_accounts","list_chats","list_contact_aliases","list_contacts","list_folders","list_inline_buttons","list_messages","list_topics","resolve_username","search_contacts","search_global","search_messages","search_public_chats","wait_for_new_message","wait_for_settled_message"])].filter(a=>!m.vx.includes(a)));async function p(a,b,c){let d=f().randomBytes(32).toString("base64url"),e=new URL(a);e.pathname="/llv-telegram-proof",e.search="";try{let a=await fetch(e,{headers:{"x-llv-telegram-nonce":d},signal:c});if(!a.ok)return!1;let g=Buffer.from((await a.text()).trim(),"hex"),h=Buffer.from(f().createHmac("sha256",b).update(d).digest("hex"),"hex");return g.length===h.length&&f().timingSafeEqual(g,h)}catch{return!1}}let q={spawn(a){try{let b=(0,d.spawn)(a.command,a.args,{cwd:a.cwd,env:a.env,stdio:"ignore",detached:!0});return b.unref(),b}catch{return null}},probe:async function(a,b,d){try{if(!await p(a,b,d))return{ok:!1};let{Client:e}=await Promise.all([c.e(9901),c.e(9434)]).then(c.bind(c,79434)),{StreamableHTTPClientTransport:f}=await Promise.all([c.e(9901),c.e(7295)]).then(c.bind(c,59676)),g=new e({name:"agent-log-viewer",version:"1.0.0"}),h=new f(new URL(a),{requestInit:{headers:{Authorization:`Bearer ${b}`},signal:d}});try{await g.connect(h);let a=await g.listTools();return{ok:!0,serverName:g.getServerVersion()?.name??"",tools:a.tools.map(a=>({name:a.name,readOnly:a.annotations?.readOnlyHint===!0}))}}finally{await g.close().catch(()=>void 0)}}catch{return{ok:!1}}},sleep:a=>new Promise(b=>setTimeout(b,a)),now:()=>Date.now(),ownsProcess:y,recordProcess:B,stop:E,beginOperation:function(){let a=++t;return()=>a===t}};function r(){return(0,i.BQ)("telegram","connector.json")}let s=null,t=0;function u(a){return f().createHash("sha256").update(a).digest("hex")}function v(){try{if(null===(0,n._q)(!1))return null;let a=h().lstatSync(r());if(a.isSymbolicLink()||!a.isFile()||(63&a.mode)!=0||"function"==typeof process.getuid&&a.uid!==process.getuid())return null;let b=JSON.parse(h().readFileSync(r(),"utf8"));if(1!==b.version||"number"!=typeof b.pid||!Number.isInteger(b.pid)||b.pid<=1||"string"!=typeof b.identity||"string"!=typeof b.credentialRef||"string"!=typeof b.connectorTokenSha256||"string"!=typeof b.command||"string"!=typeof b.entrypoint||void 0!==b.feedFile&&"string"!=typeof b.feedFile||void 0!==b.feedSince&&"string"!=typeof b.feedSince||void 0!==b.logSinkVersion&&1!==b.logSinkVersion)return null;return b}catch{return null}}function w(a){let b=j.B.readArgv(a.pid);return b[0]===a.command&&b[1]===a.entrypoint&&a.command===(0,m.jd)()&&a.entrypoint===(0,m.Kn)()}function x(a){let b=v();if(!b||b.feedFile!==(0,n.ZI)(a)||!b.feedSince)return null;let c=Date.parse(b.feedSince);return Number.isFinite(c)?c:null}function y(a){let b=v();return!!(b&&b.credentialRef===a.credentialRef&&b.connectorTokenSha256===u(a.connectorToken)&&j.B.processIdentity(b.pid)===b.identity&&w(b))}function z(a){return y(a)}function A(a){try{a.kill("SIGKILL")}catch{}}function B(a,b,c){let d=a.pid,e=d?j.B.processIdentity(d):null;if(!d||!e||!b.args[0])return A(a),!1;s={child:a,pid:d,identity:e};let f={version:1,pid:d,identity:e,credentialRef:c.credentialRef,connectorTokenSha256:u(c.connectorToken),command:b.command,entrypoint:b.args[0],...b.env?.TELEGRAM_EVENT_FEED_FILE?{feedFile:b.env.TELEGRAM_EVENT_FEED_FILE,feedSince:new Date().toISOString()}:{},...b.env?.LLV_TELEGRAM_CONNECTOR_LOG===(0,l.cO)()&&b.env.LLV_TELEGRAM_CONNECTOR_LOG_MAX_BYTES===String(l.yb)?{logSinkVersion:1}:{}},g=`${r()}.${process.pid}.tmp`;try{let a=(0,n._q)(!0);h().writeFileSync(g,JSON.stringify(f),{mode:384});let b=h().openSync(g,"r");try{h().fsyncSync(b)}finally{h().closeSync(b)}h().renameSync(g,r());let c=h().openSync(a,"r");try{h().fsyncSync(c)}finally{h().closeSync(c)}let d=h().lstatSync(r());if(!d.isFile()||d.isSymbolicLink()||(63&d.mode)!=0)throw Error("unsafe connector record");return!0}catch{h().rmSync(g,{force:!0});try{h().rmSync(r(),{force:!0})}catch{}return s=null,A(a),!1}}function C(a){return j.B.processIdentity(a.pid)===a.identity}async function D(a,b){let c=Date.now()+b;for(;a.some(C)&&Date.now()<c;)await new Promise(a=>setTimeout(a,25));return a.every(a=>!C(a))}async function E(){t+=1;let a=new Map,b=s;b&&C(b)&&a.set(b.pid,{pid:b.pid,identity:b.identity,term:()=>{try{b.child.kill("SIGTERM")}catch{}},kill:()=>A(b.child)});let c=v(),d=!1;c&&C(c)&&!a.has(c.pid)&&(w(c)?a.set(c.pid,{pid:c.pid,identity:c.identity,term:()=>{try{process.kill(c.pid,"SIGTERM")}catch{}},kill:()=>{try{process.kill(c.pid,"SIGKILL")}catch{}}}):d=!0);let e=[...a.values()];for(let a of e)a.term();if(!await D(e,2e3)){for(let a of e.filter(C))a.kill();if(!await D(e,2e3))throw Error("Telegram connector did not terminate")}if(d)throw Error("Telegram connector ownership could not be verified");s=null;try{null!==(0,n._q)(!1)&&h().rmSync(r(),{force:!0})}catch{}}async function F(a){return(0,n._q)(!0),await (0,k.pM)((0,i.BQ)("telegram","connector-supervisor"),"Telegram connector supervisor is busy",a)}async function G(a,b,c,d=1/0){let e=new AbortController,g=Math.max(1,Math.min(c.probeTimeoutMs??5e3,d)),h=c.probe(a,b,e.signal).catch(()=>({ok:!1})),i=null,j=new Promise(a=>{i=setTimeout(()=>{e.abort(),a("timeout")},g),i.unref?.()}),k=await Promise.race([h,j]);return(i&&clearTimeout(i),"timeout"===k)?"timeout":(e.abort(),k.ok)?k.serverName!==`telegram-${f().createHash("sha256").update(b).digest("hex")}`?{ok:!1,code:"connector_failed"}:function(a,b=o){let c=a.filter(a=>!a.readOnly||!b.has(a.name)).map(a=>a.name);return{ok:a.length>0&&0===c.length,offending:c}}(k.tools).ok?{ok:!0,url:a}:{ok:!1,code:"not_read_only"}:null}async function H(a,b=q){let c=(0,m.h3)(),d={credentialRef:a.credentialRef,connectorToken:a.connectorToken},e=b.stop??E,f=b.ownsProcess??y,g=b.beginOperation?.()??(()=>!0),h=await F(async()=>{let h;if(f(d)){let d=await G(c,a.connectorToken,b);if(!g())return{ok:!1,code:"connector_failed"};if(d&&"timeout"!==d)return d.ok||await e(),d}await e(),g=b.beginOperation?.()??(()=>!0);let i=(0,m.w5)();if(!i)return{ok:!1,code:"credentials_missing"};try{h=(0,m.ue)({credentialRef:a.credentialRef,sessionString:a.sessionString,connectorToken:a.connectorToken,credentials:i})}catch{return{ok:!1,code:"connector_failed"}}if(!g())return{ok:!1,code:"connector_failed"};let j=b.spawn(h);return j?(b.recordProcess??B)(j,h,d)?"spawned":(A(j),{ok:!1,code:"connector_failed"}):{ok:!1,code:"connector_failed"}});if("spawned"!==h)return h;let i=async()=>{await F(async()=>{f(d)&&await e()})},j=b.now()+3e4;for(;b.now()<j;){let d=await G(c,a.connectorToken,b,j-b.now());if(!g())return{ok:!1,code:"connector_failed"};if("timeout"===d)break;if(d)return d.ok||await i(),d;await b.sleep(500)}return await i(),{ok:!1,code:"connector_failed"}}async function I(){await F(E)}async function J(a,b={}){let c=b.ownsProcess??y,d=b.stop??E;return await F(async()=>!!c(a)&&(await d(),!0))}},96101:(a,b,c)=>{c.d(b,{BL:()=>d,U$:()=>j,U8:()=>f,Y_:()=>h,gW:()=>g});let d="v1",e="QUIET",f=`Write one report on the operator's Telegram for this window.
2
+
3
+ The first line of the report is exactly:
4
+
5
+ #daily_report
6
+
7
+ Then these sections, in this order, and only the ones that have content:
8
+
9
+ ⏳ Awaiting your reply — someone asked the operator something and has had no answer: who, what they asked, and how long it has been waiting.
10
+ 📌 You promised — commitments the operator made with no visible follow-through.
11
+ 🐙 Proposed issues — anything that should become a tracked task in the operator's product repository: a ready title plus one or two sentences of body.
12
+ 📅 Proposed calendar items — anything with a concrete date and time.
13
+ 👀 Worth attention — urgent, important, or easy to miss.
14
+
15
+ Cover every important item in the window. There is no item cap: keep the report short by writing each item once and moving on, and keep every item that matters. Skip bots and service broadcasts unless one is genuinely urgent.
16
+
17
+ Number every proposal consecutively across the whole report, starting at [1] and counting up without gaps — [1], [2], [3] — so the operator can answer "do 2". Put the number at the start of the item's line.
18
+
19
+ Every item states its substance, the person or chat it came from, and a link https://t.me/c/<internal_id>/<message_id> when the chat is a supergroup (use get_message_link when unsure). Private chats have no message links; name the person instead.
20
+
21
+ Write the items in the language their conversation used, and keep the section titles exactly as written above. Full sentences: no abbreviations, no compressed jargon, no telegraphic style. Each item must be understandable without opening Telegram.
22
+
23
+ No methodology preamble, no closing summary, no "not X but Y" constructions, no praise of the operator.`,g=2e4;function h(a){return`${`Telegram daily report — window ${a.windowStart} → ${a.windowEnd} (UTC).
24
+
25
+ You have the read-only \`telegram\` MCP connector for the operator's own account. Work through it only; do not install anything and do not write to Telegram — the connector exposes no write tools. The Viewer has already verified with \`get_me\` that the connector holds the account this report belongs to.
26
+
27
+ RUN RULES (these come from the Viewer and are not negotiable)
28
+
29
+ 1. Your sources are listed in ${a.sourcesPath}: the private dialogs active in this window (already selected by last-message date — the connector's chat-list order is pinned/folder order and is NOT recency, so never re-derive sources from \`get_chats\`/\`list_chats\` yourself) and the groups the operator picked, each marked \`full\` or \`light\`. Start there. Follow a thread, a mentioned chat, or older context beyond that list when your instructions below call for it.
30
+
31
+ 2. Read SEQUENTIALLY. One tool call at a time, never in parallel: the connector dies under concurrent large reads and the run is then lost. Use \`list_messages\` with \`limit\` of 40 or less per call, paging only while messages still fall inside the window. A \`full\` group is read like a private dialog; a \`light\` group yields only mentions of the operator, replies to them, and one or two notable threads.
32
+
33
+ 3. If the connector stops answering, stop and write nothing. A missing report is a failed run the operator can retry; an invented one is worse than silence.
34
+
35
+ 4. The report's FIRST line is the hashtag line your instructions below specify, and nothing else. The Viewer refuses a file that does not start with one.
36
+
37
+ 5. Numbered items are numbered consecutively from [1] with no gaps and no repeats, each number at the start of its line. The Viewer refuses a file that numbers them any other way.
38
+
39
+ 6. If nothing in the window is worth reporting, the whole file is that hashtag line and then:
40
+
41
+ ${e}
42
+
43
+ 7. Write the report to ${a.outputPath} — that exact path, plain UTF-8 text, nothing else in the file — and then stop. Do not print the report as your answer; the Viewer reads the file.
44
+
45
+ YOUR INSTRUCTIONS (from the operator)`}
46
+
47
+ ${a.instructions.trim()}`}let i=/^(?:[-*•]\s*)?\[(\d{1,3})\]/;function j(a){let b=(a??"").trim();if(!b)return{kind:"invalid"};let c=b.split(/\r?\n/).map(a=>a.trim());if(!c[0].startsWith("#"))return{kind:"invalid"};let d=c.slice(1).filter(a=>""!==a);return 0===d.length?{kind:"invalid"}:1===d.length&&d[0].toUpperCase()===e?{kind:"quiet"}:d.map(a=>i.exec(a)).filter(a=>null!==a).map(a=>Number(a[1])).every((a,b)=>a===b+1)?{kind:"ok",report:b}:{kind:"invalid"}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6796,exports.ids=[6796],exports.modules={96796:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_FIXER:()=>v,SEEDED_TEMPLATES:()=>z,buildWorkflow:()=>ae,checkpointWorkflowRollbackMirrorForDemotion:()=>R,defaultFixerFromRoles:()=>u,loadTemplates:()=>ab,loadWorkflows:()=>K,mergeSeededTemplates:()=>ad,normalizeStage:()=>D,normalizeStages:()=>E,normalizeTemplate:()=>G,planWorkflowStateMigration:()=>M,reconcileWorkflowConversationOwnership:()=>X,reconcileWorkflowConversationOwnershipCooperatively:()=>Y,roleConfigFromReference:()=>C,saveTemplates:()=>ac,saveWorkflows:()=>_,seededTemplatesFromRoles:()=>y,setupExitPath:()=>ai,setupStderrPath:()=>ah,setupStdoutPath:()=>ag,validateWorkflowLaunchModels:()=>F,withWorkflowMutation:()=>aa,workflowArtifactsDir:()=>af,workflowStateCollectionSeed:()=>P});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(51888),i=c(27146),j=c(38751),k=c(12904),l=c(43237),m=c(98817),n=c(49048),o=c(97386),p=c(22371),q=c(14928);let r=()=>(0,i.BQ)("workflows.json"),s=()=>(0,i.BQ)("workflow-templates.json");function t(a,b={},c=(0,p.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,o.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...n.W.find(b=>b.id===a).config}}function u(a){let b=t("cleaner",{},a);return{..."codex"===b.engine?b:{...n.W.find(a=>"cleaner"===a.id).config},effort:"low"}}let v=u(),w=[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:{engine:"codex",model:null,effort:"high"},scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:{engine:"claude",model:"fable",effort:null},scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:{engine:"codex",model:null,effort:"xhigh"},fixer:{engine:"codex",model:null,effort:"low"},roundLimit:5,reviewerMode:"headless"}]}],x=[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:{engine:"codex",model:"gpt-5.6-terra",effort:"high"},scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:{engine:"claude",model:"fable",effort:null},scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"},fixer:{engine:"codex",model:"gpt-5.6-terra",effort:"low"},roundLimit:5,reviewerMode:"headless"}]},{name:"Terra → Sol review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:{engine:"codex",model:"gpt-5.6-terra",effort:"high"},scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:{engine:"codex",model:"gpt-5.6-sol",effort:"xhigh"},fixer:{engine:"codex",model:"gpt-5.6-terra",effort:"low"},roundLimit:5,reviewerMode:"headless"}]}];function y(){let a=(0,p.e3)(),b=t("builder",{},a),c=t("builder",{mode:"plain",domain:"frontend"},a),d=t("reviewer",{},a),e=u(a);return[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:c,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]},{name:"Sol medium → Sol xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}))}let z=y();function A(a,b){(0,m.atomicWriteText)(a,JSON.stringify(b,null,2)+"\n")}function B(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function C(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,o.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function D(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=B(a.agent)??C(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=B(a.reviewer)??C(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=B(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:u(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}function E(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=D(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function F(a){for(let b of a)for(let a of"implement"===b.kind?[b.agent]:[b.reviewer,b.fixer]){if(!a.model)continue;let b=(0,h.RC)(a.engine,a.model);if("error"in b)return b;a.model=b.model}return{stages:a}}function G(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=E(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function H(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==G(a.template)}let I=new WeakMap;function J(a){return I.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function K(){return J(Q().snapshot())}function L(){let a=function(){let a;try{a=e().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(H))throw Error("legacy workflow state contains malformed records");return a.workflows.map(N)}function M(){let a=L();return{records:a.length,keys:a.map(a=>a.id)}}function N(a){return{...a,project:(0,j.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let O=new Map;function P(){return{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:L,key:a=>a.id}}function Q(){let a=(0,i.BQ)("state.sqlite"),b=O.get(a);if(b)return b;(0,q.t0)(a,[P()]);let c=new q.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>H(a)?N(a):null,clone:a=>N(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!H(a))throw Error("refusing to persist a malformed workflow record")}});return O.set(a,c),c}function R(){return Q().checkpointMirrorForDemotion((a,b)=>{A(r(),{_sqliteRevision:b,workflows:a})})}function S(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function T(a,b){let c=S({path:a.agentPath,conversationId:a.agentConversationId},b);return a.agentPath=c.path,a.agentConversationId=c.conversationId,c.changed}function U(a,b){let c=S({path:a.srcPath??null,conversationId:a.srcConversationId},b);a.srcPath=c.path,a.srcConversationId=c.conversationId;let d=S({path:a.fixerPath,conversationId:a.fixerConversationId},b);return a.fixerPath=d.path,a.fixerConversationId=d.conversationId,c.changed||d.changed}function V(a,b,c){return a===c.path&&(b??null)===c.conversationId}function W(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}function X(a=(0,k.agentRegistry)()){let b=K(),c=!1;for(let d of b)for(let b of(c=U(d,a)||c,d.stageRuns))c=T(b,a)||c;c&&_(b)}async function Y(a=(0,k.agentRegistry)()){let b=K(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.srcPath??null,conversationId:b.srcConversationId??null},e={path:b.fixerPath,conversationId:b.fixerConversationId??null};U(b,a);let f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null},h=[];await (0,l.pV)(b.stageRuns,b=>{let c={path:b.agentPath,conversationId:b.agentConversationId??null};T(b,a)&&h.push({index:b.index,before:c,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let i=W(d,f),j=W(e,g);(i||j||h.length>0)&&c.push({id:b.id,source:i?{before:d,after:f}:null,fixer:j?{before:e,after:g}:null,runs:h})}),function(a){if(0===a.length)return;let b=K(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&V(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&V(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&V(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&_(b)}(c)}function Z(a,b){return JSON.stringify(a)===JSON.stringify(b)}function $(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function _(a){let b=I.get(a);if(!b){Q().replaceSync(a),J(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));Q().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=Q().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=N(function a(b,c,d){if(Z(c,b))return structuredClone(d);if(Z(d,b))return structuredClone(c);if($(b)&&$(c)&&$(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=Q().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),J(a)}async function aa(a){return Q().mutate(a)}function ab(){let a=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.templates)?a.templates.map(G).filter(a=>null!==a):[],c=ad(b);return JSON.stringify(c)!==JSON.stringify(b)&&ac(c),c}function ac(a){A(s(),{templates:a})}function ad(a,b=y()){let c=new Set([...w,...x].map(a=>JSON.stringify(G(a)))),d=a.filter(a=>"role-registry"!==a.managed&&!c.has(JSON.stringify(a))),e=new Set(d.map(a=>a.name));return[...b.filter(a=>!e.has(a.name)),...d]}function ae(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,agentConversationId:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,fixerConversationId:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,srcConversationId:null,prUrl:null,createdAt:a.now,closedAt:null}}function af(a){return g().join((0,i.BQ)("workflows"),a)}function ag(a){return g().join(af(a),"setup-stdout.log")}function ah(a){return g().join(af(a),"setup-stderr.log")}function ai(a){return g().join(af(a),"setup-exit")}}};