agent-log-viewer 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/README.md +37 -21
  2. package/bin/cli.mjs +212 -12
  3. package/bin/server-runtime.mjs +51 -0
  4. package/bin/server-runtime.test.ts +190 -0
  5. package/dist/mcp-server.mjs +2515 -416
  6. package/dist/runtime-host.mjs +41670 -0
  7. package/dist/standalone/.next/BUILD_ID +1 -1
  8. package/dist/standalone/.next/app-path-routes-manifest.json +28 -25
  9. package/dist/standalone/.next/build-manifest.json +2 -2
  10. package/dist/standalone/.next/prerender-manifest.json +3 -3
  11. package/dist/standalone/.next/routes-manifest.json +18 -0
  12. package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -1
  13. package/dist/standalone/.next/server/app/_global-error/page.js +3 -3
  14. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  15. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  16. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  17. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  18. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  19. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  20. package/dist/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  21. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  22. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  23. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  24. package/dist/standalone/.next/server/app/_not-found/page.js +2 -2
  25. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  26. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  27. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  28. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  29. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  30. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  31. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  32. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  33. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  34. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  35. package/dist/standalone/.next/server/app/api/access/route.js +1 -1
  36. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  37. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  38. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  39. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +3 -3
  40. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  41. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
  42. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  43. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +3 -3
  44. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  45. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +3 -3
  46. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  47. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
  48. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  49. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  50. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  51. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +3 -3
  52. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  53. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
  54. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  55. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
  56. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  57. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  58. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  59. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +3 -3
  60. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  61. package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
  62. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  63. package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
  64. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  65. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  66. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  67. package/dist/standalone/.next/server/app/api/answer/route.js +2 -1
  68. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  69. package/dist/standalone/.next/server/app/api/artifact/route.js +1 -1
  70. package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
  71. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  72. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  73. package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
  74. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  75. package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
  76. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  77. package/dist/standalone/.next/server/app/api/board/route.js +1 -1
  78. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  79. package/dist/standalone/.next/server/app/api/bridge/route.js +2 -2
  80. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  81. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  82. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  83. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  84. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  85. package/dist/standalone/.next/server/app/api/files/route.js +2 -2
  86. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  87. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  88. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  89. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  90. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  91. package/dist/standalone/.next/server/app/api/image/route.js +1 -1
  92. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  93. package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
  94. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  95. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  96. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  97. package/dist/standalone/.next/server/app/api/limits/history/route.js +3 -3
  98. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  99. package/dist/standalone/.next/server/app/api/limits/route.js +3 -3
  100. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  101. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  102. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  103. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  104. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  105. package/dist/standalone/.next/server/app/api/log/provenance/route.js +67 -1
  106. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
  107. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  108. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  109. package/dist/standalone/.next/server/app/api/log/suggestions/route.js +3 -0
  110. package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -0
  111. package/dist/standalone/.next/server/app/api/log/suggestions/route_client-reference-manifest.js +1 -0
  112. package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
  113. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  114. package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
  115. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  116. package/dist/standalone/.next/server/app/api/monitor/lock/route.js +1 -3
  117. package/dist/standalone/.next/server/app/api/monitor/lock/route.js.nft.json +1 -1
  118. package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -3
  119. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  120. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  121. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  122. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  123. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  124. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +2 -2
  125. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
  126. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  127. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  128. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
  129. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  130. package/dist/standalone/.next/server/app/api/pipelines/route.js +2 -2
  131. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  132. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +2 -2
  133. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  134. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  135. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  136. package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
  137. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
  138. package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
  139. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
  140. package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -0
  141. package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -0
  142. package/dist/standalone/.next/server/app/api/projects/directories/route_client-reference-manifest.js +1 -0
  143. package/dist/standalone/.next/server/app/api/push/route.js +2 -2
  144. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  145. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  146. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  147. package/dist/standalone/.next/server/app/api/roles/route.js +2 -2
  148. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  149. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +2 -1
  150. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  151. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
  152. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  153. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
  154. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  155. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
  156. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  157. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -0
  158. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -0
  159. package/dist/standalone/.next/server/app/api/runtime/hosts/route_client-reference-manifest.js +1 -0
  160. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +2 -1
  161. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  162. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +2 -1
  163. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  164. package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
  165. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  166. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +2 -1
  167. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  168. package/dist/standalone/.next/server/app/api/runtime/send/route.js +2 -1
  169. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  170. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
  171. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  172. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +2 -1
  173. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  174. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +2 -1
  175. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  176. package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
  177. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  178. package/dist/standalone/.next/server/app/api/search/transcripts/route.js +2 -2
  179. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
  180. package/dist/standalone/.next/server/app/api/session/route.js +1 -1
  181. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  182. package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
  183. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  184. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  185. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  186. package/dist/standalone/.next/server/app/api/spawn/policy/route.js +4 -4
  187. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  188. package/dist/standalone/.next/server/app/api/spawn/route.js +2 -2
  189. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  190. package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
  191. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  192. package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
  193. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  194. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  195. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  196. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  197. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  198. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +2 -1
  199. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  200. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +2 -1
  201. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  202. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  203. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  204. package/dist/standalone/.next/server/app/api/tasks/route.js +2 -2
  205. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  206. package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
  207. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
  208. package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
  209. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
  210. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  211. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  212. package/dist/standalone/.next/server/app/api/tmux/route.js +2 -1
  213. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  214. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  215. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  216. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
  217. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  218. package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
  219. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  220. package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
  221. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  222. package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
  223. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  224. package/dist/standalone/.next/server/app/api/tts/route.js +1 -1
  225. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  226. package/dist/standalone/.next/server/app/api/view/presence/route.js +1 -1
  227. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  228. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  229. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  230. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  231. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  232. package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
  233. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  234. package/dist/standalone/.next/server/app/index.html +1 -1
  235. package/dist/standalone/.next/server/app/index.rsc +3 -3
  236. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  237. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  238. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  239. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  240. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  241. package/dist/standalone/.next/server/app/page.js +21 -14
  242. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  243. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  244. package/dist/standalone/.next/server/app-paths-manifest.json +28 -25
  245. package/dist/standalone/.next/server/chunks/107.js +1 -0
  246. package/dist/standalone/.next/server/chunks/{1858.js → 1100.js} +2 -2
  247. package/dist/standalone/.next/server/chunks/1872.js +42 -0
  248. package/dist/standalone/.next/server/chunks/1952.js +3 -0
  249. package/dist/standalone/.next/server/chunks/2243.js +1 -0
  250. package/dist/standalone/.next/server/chunks/2260.js +104 -0
  251. package/dist/standalone/.next/server/chunks/2318.js +2 -2
  252. package/dist/standalone/.next/server/chunks/2324.js +1 -1
  253. package/dist/standalone/.next/server/chunks/2549.js +81 -0
  254. package/dist/standalone/.next/server/chunks/2682.js +85 -0
  255. package/dist/standalone/.next/server/chunks/3086.js +1 -1
  256. package/dist/standalone/.next/server/chunks/3214.js +1 -1
  257. package/dist/standalone/.next/server/chunks/3302.js +2 -0
  258. package/dist/standalone/.next/server/chunks/3336.js +1 -1
  259. package/dist/standalone/.next/server/chunks/3386.js +2 -0
  260. package/dist/standalone/.next/server/chunks/3558.js +1 -1
  261. package/dist/standalone/.next/server/chunks/3587.js +1 -1
  262. package/dist/standalone/.next/server/chunks/3740.js +20 -20
  263. package/dist/standalone/.next/server/chunks/3830.js +1 -0
  264. package/dist/standalone/.next/server/chunks/4012.js +3 -3
  265. package/dist/standalone/.next/server/chunks/4191.js +1 -1
  266. package/dist/standalone/.next/server/chunks/4310.js +1 -0
  267. package/dist/standalone/.next/server/chunks/4509.js +1 -1
  268. package/dist/standalone/.next/server/chunks/4565.js +1 -0
  269. package/dist/standalone/.next/server/chunks/4651.js +2 -0
  270. package/dist/standalone/.next/server/chunks/4756.js +13 -0
  271. package/dist/standalone/.next/server/chunks/4972.js +2 -2
  272. package/dist/standalone/.next/server/chunks/5103.js +10 -0
  273. package/dist/standalone/.next/server/chunks/5408.js +1 -0
  274. package/dist/standalone/.next/server/chunks/5545.js +1 -0
  275. package/dist/standalone/.next/server/chunks/5689.js +2 -2
  276. package/dist/standalone/.next/server/chunks/6333.js +3 -3
  277. package/dist/standalone/.next/server/chunks/6487.js +10 -0
  278. package/dist/standalone/.next/server/chunks/6796.js +1 -1
  279. package/dist/standalone/.next/server/chunks/6820.js +99 -0
  280. package/dist/standalone/.next/server/chunks/6826.js +1 -1
  281. package/dist/standalone/.next/server/chunks/6839.js +81 -0
  282. package/dist/standalone/.next/server/chunks/6850.js +1 -1
  283. package/dist/standalone/.next/server/chunks/6909.js +1 -1
  284. package/dist/standalone/.next/server/chunks/6942.js +27 -0
  285. package/dist/standalone/.next/server/chunks/7139.js +82 -0
  286. package/dist/standalone/.next/server/chunks/7471.js +13 -13
  287. package/dist/standalone/.next/server/chunks/7644.js +2 -2
  288. package/dist/standalone/.next/server/chunks/7722.js +1 -1
  289. package/dist/standalone/.next/server/chunks/773.js +47 -0
  290. package/dist/standalone/.next/server/chunks/7733.js +3 -3
  291. package/dist/standalone/.next/server/chunks/8263.js +81 -0
  292. package/dist/standalone/.next/server/chunks/8326.js +1 -0
  293. package/dist/standalone/.next/server/chunks/8444.js +1 -1
  294. package/dist/standalone/.next/server/chunks/8617.js +1 -1
  295. package/dist/standalone/.next/server/chunks/8797.js +1 -1
  296. package/dist/standalone/.next/server/chunks/8817.js +2 -2
  297. package/dist/standalone/.next/server/chunks/8996.js +1 -1
  298. package/dist/standalone/.next/server/chunks/9307.js +1 -0
  299. package/dist/standalone/.next/server/chunks/9364.js +61 -61
  300. package/dist/standalone/.next/server/chunks/9381.js +42 -0
  301. package/dist/standalone/.next/server/chunks/9403.js +1 -0
  302. package/dist/standalone/.next/server/chunks/9411.js +2 -2
  303. package/dist/standalone/.next/server/chunks/9434.js +3 -3
  304. package/dist/standalone/.next/server/chunks/9488.js +1 -0
  305. package/dist/standalone/.next/server/chunks/9750.js +1 -0
  306. package/dist/standalone/.next/server/chunks/9777.js +1 -0
  307. package/dist/standalone/.next/server/chunks/9937.js +1 -1
  308. package/dist/standalone/.next/server/chunks/9940.js +1 -1
  309. package/dist/standalone/.next/server/chunks/9998.js +1 -1
  310. package/dist/standalone/.next/server/files-response-worker.js +3 -3
  311. package/dist/standalone/.next/server/functions-config-manifest.json +3 -0
  312. package/dist/standalone/.next/server/instrumentation.js +1 -1
  313. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  314. package/dist/standalone/.next/server/pages/404.html +1 -1
  315. package/dist/standalone/.next/server/pages/500.html +1 -1
  316. package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
  317. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  318. package/dist/standalone/.next/server/wakatime-sync-worker.js +2 -2
  319. package/dist/standalone/.next/static/94yAMfjyhUPRgarycP9y4/_buildManifest.js +1 -0
  320. package/dist/standalone/.next/static/chunks/app/_global-error/page-ae02882983617748.js +1 -0
  321. package/dist/standalone/.next/static/chunks/app/api/access/route-ae02882983617748.js +1 -0
  322. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-ae02882983617748.js +1 -0
  323. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-ae02882983617748.js +1 -0
  324. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-ae02882983617748.js +1 -0
  325. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-ae02882983617748.js +1 -0
  326. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-ae02882983617748.js +1 -0
  327. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-ae02882983617748.js +1 -0
  328. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-ae02882983617748.js +1 -0
  329. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-ae02882983617748.js +1 -0
  330. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-ae02882983617748.js +1 -0
  331. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-ae02882983617748.js +1 -0
  332. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-ae02882983617748.js +1 -0
  333. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-ae02882983617748.js +1 -0
  334. package/dist/standalone/.next/static/chunks/app/api/accounts/route-ae02882983617748.js +1 -0
  335. package/dist/standalone/.next/static/chunks/app/api/agent/route-ae02882983617748.js +1 -0
  336. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-ae02882983617748.js +1 -0
  337. package/dist/standalone/.next/static/chunks/app/api/answer/route-ae02882983617748.js +1 -0
  338. package/dist/standalone/.next/static/chunks/app/api/artifact/route-ae02882983617748.js +1 -0
  339. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-ae02882983617748.js +1 -0
  340. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-ae02882983617748.js +1 -0
  341. package/dist/standalone/.next/static/chunks/app/api/attention/route-ae02882983617748.js +1 -0
  342. package/dist/standalone/.next/static/chunks/app/api/board/route-ae02882983617748.js +1 -0
  343. package/dist/standalone/.next/static/chunks/app/api/bridge/route-ae02882983617748.js +1 -0
  344. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-ae02882983617748.js +1 -0
  345. package/dist/standalone/.next/static/chunks/app/api/conversations/route-ae02882983617748.js +1 -0
  346. package/dist/standalone/.next/static/chunks/app/api/files/route-ae02882983617748.js +1 -0
  347. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-ae02882983617748.js +1 -0
  348. package/dist/standalone/.next/static/chunks/app/api/flows/route-ae02882983617748.js +1 -0
  349. package/dist/standalone/.next/static/chunks/app/api/image/route-ae02882983617748.js +1 -0
  350. package/dist/standalone/.next/static/chunks/app/api/inbox/route-ae02882983617748.js +1 -0
  351. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-ae02882983617748.js +1 -0
  352. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-ae02882983617748.js +1 -0
  353. package/dist/standalone/.next/static/chunks/app/api/limits/route-ae02882983617748.js +1 -0
  354. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-ae02882983617748.js +1 -0
  355. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-ae02882983617748.js +1 -0
  356. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-ae02882983617748.js +1 -0
  357. package/dist/standalone/.next/static/chunks/app/api/log/route-ae02882983617748.js +1 -0
  358. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-ae02882983617748.js +1 -0
  359. package/dist/standalone/.next/static/chunks/app/api/logs/route-ae02882983617748.js +1 -0
  360. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-ae02882983617748.js +1 -0
  361. package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-ae02882983617748.js +1 -0
  362. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-ae02882983617748.js +1 -0
  363. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-ae02882983617748.js +1 -0
  364. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-ae02882983617748.js +1 -0
  365. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-ae02882983617748.js +1 -0
  366. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-ae02882983617748.js +1 -0
  367. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-ae02882983617748.js +1 -0
  368. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-ae02882983617748.js +1 -0
  369. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-ae02882983617748.js +1 -0
  370. package/dist/standalone/.next/static/chunks/app/api/proc/route-ae02882983617748.js +1 -0
  371. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-ae02882983617748.js +1 -0
  372. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-ae02882983617748.js +1 -0
  373. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-ae02882983617748.js +1 -0
  374. package/dist/standalone/.next/static/chunks/app/api/push/route-ae02882983617748.js +1 -0
  375. package/dist/standalone/.next/static/chunks/app/api/resources/route-ae02882983617748.js +1 -0
  376. package/dist/standalone/.next/static/chunks/app/api/roles/route-ae02882983617748.js +1 -0
  377. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-ae02882983617748.js +1 -0
  378. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-ae02882983617748.js +1 -0
  379. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-ae02882983617748.js +1 -0
  380. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-ae02882983617748.js +1 -0
  381. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-ae02882983617748.js +1 -0
  382. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-ae02882983617748.js +1 -0
  383. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-ae02882983617748.js +1 -0
  384. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-ae02882983617748.js +1 -0
  385. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-ae02882983617748.js +1 -0
  386. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-ae02882983617748.js +1 -0
  387. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-ae02882983617748.js +1 -0
  388. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-ae02882983617748.js +1 -0
  389. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-ae02882983617748.js +1 -0
  390. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-ae02882983617748.js +1 -0
  391. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-ae02882983617748.js +1 -0
  392. package/dist/standalone/.next/static/chunks/app/api/session/route-ae02882983617748.js +1 -0
  393. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-ae02882983617748.js +1 -0
  394. package/dist/standalone/.next/static/chunks/app/api/session/title/route-ae02882983617748.js +1 -0
  395. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-ae02882983617748.js +1 -0
  396. package/dist/standalone/.next/static/chunks/app/api/spawn/route-ae02882983617748.js +1 -0
  397. package/dist/standalone/.next/static/chunks/app/api/staging/route-ae02882983617748.js +1 -0
  398. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-ae02882983617748.js +1 -0
  399. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-ae02882983617748.js +1 -0
  400. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-ae02882983617748.js +1 -0
  401. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-ae02882983617748.js +1 -0
  402. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-ae02882983617748.js +1 -0
  403. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-ae02882983617748.js +1 -0
  404. package/dist/standalone/.next/static/chunks/app/api/tasks/route-ae02882983617748.js +1 -0
  405. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-ae02882983617748.js +1 -0
  406. package/dist/standalone/.next/static/chunks/app/api/telegram/route-ae02882983617748.js +1 -0
  407. package/dist/standalone/.next/static/chunks/app/api/timeline/route-ae02882983617748.js +1 -0
  408. package/dist/standalone/.next/static/chunks/app/api/tmux/route-ae02882983617748.js +1 -0
  409. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-ae02882983617748.js +1 -0
  410. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-ae02882983617748.js +1 -0
  411. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-ae02882983617748.js +1 -0
  412. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-ae02882983617748.js +1 -0
  413. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-ae02882983617748.js +1 -0
  414. package/dist/standalone/.next/static/chunks/app/api/tts/route-ae02882983617748.js +1 -0
  415. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-ae02882983617748.js +1 -0
  416. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-ae02882983617748.js +1 -0
  417. package/dist/standalone/.next/static/chunks/app/api/workflows/route-ae02882983617748.js +1 -0
  418. package/dist/standalone/.next/static/chunks/app/page-1a141ae4aa9d31a9.js +85 -0
  419. package/dist/standalone/.next/static/chunks/{framework-d1de002210ddaaef.js → framework-04bc8c1a646a0097.js} +1 -1
  420. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ae02882983617748.js +1 -0
  421. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ae02882983617748.js +1 -0
  422. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ae02882983617748.js +1 -0
  423. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ae02882983617748.js +1 -0
  424. package/dist/standalone/.next/static/css/dc96fb2edbd8742e.css +1 -0
  425. package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/non-secure/index.cjs +2 -2
  426. package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/package.json +1 -1
  427. package/dist/standalone/node_modules/react/cjs/react.development.js +1 -1
  428. package/dist/standalone/node_modules/react/cjs/react.production.js +1 -1
  429. package/dist/standalone/node_modules/react/package.json +3 -3
  430. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  431. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  432. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
  433. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
  434. package/dist/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
  435. package/dist/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  436. package/dist/standalone/node_modules/react-dom/package.json +4 -4
  437. package/dist/standalone/package.json +9 -8
  438. package/dist/standalone/src/lib/inboxFiles.ts +203 -0
  439. package/package.json +9 -8
  440. package/dist/standalone/.next/server/chunks/156.js +0 -2
  441. package/dist/standalone/.next/server/chunks/1920.js +0 -27
  442. package/dist/standalone/.next/server/chunks/2338.js +0 -9
  443. package/dist/standalone/.next/server/chunks/2904.js +0 -42
  444. package/dist/standalone/.next/server/chunks/2977.js +0 -1
  445. package/dist/standalone/.next/server/chunks/3139.js +0 -10
  446. package/dist/standalone/.next/server/chunks/3598.js +0 -81
  447. package/dist/standalone/.next/server/chunks/4968.js +0 -1
  448. package/dist/standalone/.next/server/chunks/6977.js +0 -1
  449. package/dist/standalone/.next/server/chunks/7295.js +0 -10
  450. package/dist/standalone/.next/server/chunks/7868.js +0 -1
  451. package/dist/standalone/.next/server/chunks/8026.js +0 -1
  452. package/dist/standalone/.next/server/chunks/8600.js +0 -12
  453. package/dist/standalone/.next/server/chunks/9246.js +0 -47
  454. package/dist/standalone/.next/server/chunks/9733.js +0 -42
  455. package/dist/standalone/.next/static/chunks/app/_global-error/page-c132c5ba005ff29e.js +0 -1
  456. package/dist/standalone/.next/static/chunks/app/api/access/route-c132c5ba005ff29e.js +0 -1
  457. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-c132c5ba005ff29e.js +0 -1
  458. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-c132c5ba005ff29e.js +0 -1
  459. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-c132c5ba005ff29e.js +0 -1
  460. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-c132c5ba005ff29e.js +0 -1
  461. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-c132c5ba005ff29e.js +0 -1
  462. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-c132c5ba005ff29e.js +0 -1
  463. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-c132c5ba005ff29e.js +0 -1
  464. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-c132c5ba005ff29e.js +0 -1
  465. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-c132c5ba005ff29e.js +0 -1
  466. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-c132c5ba005ff29e.js +0 -1
  467. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-c132c5ba005ff29e.js +0 -1
  468. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-c132c5ba005ff29e.js +0 -1
  469. package/dist/standalone/.next/static/chunks/app/api/accounts/route-c132c5ba005ff29e.js +0 -1
  470. package/dist/standalone/.next/static/chunks/app/api/agent/route-c132c5ba005ff29e.js +0 -1
  471. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-c132c5ba005ff29e.js +0 -1
  472. package/dist/standalone/.next/static/chunks/app/api/answer/route-c132c5ba005ff29e.js +0 -1
  473. package/dist/standalone/.next/static/chunks/app/api/artifact/route-c132c5ba005ff29e.js +0 -1
  474. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-c132c5ba005ff29e.js +0 -1
  475. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-c132c5ba005ff29e.js +0 -1
  476. package/dist/standalone/.next/static/chunks/app/api/attention/route-c132c5ba005ff29e.js +0 -1
  477. package/dist/standalone/.next/static/chunks/app/api/board/route-c132c5ba005ff29e.js +0 -1
  478. package/dist/standalone/.next/static/chunks/app/api/bridge/route-c132c5ba005ff29e.js +0 -1
  479. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-c132c5ba005ff29e.js +0 -1
  480. package/dist/standalone/.next/static/chunks/app/api/conversations/route-c132c5ba005ff29e.js +0 -1
  481. package/dist/standalone/.next/static/chunks/app/api/files/route-c132c5ba005ff29e.js +0 -1
  482. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-c132c5ba005ff29e.js +0 -1
  483. package/dist/standalone/.next/static/chunks/app/api/flows/route-c132c5ba005ff29e.js +0 -1
  484. package/dist/standalone/.next/static/chunks/app/api/image/route-c132c5ba005ff29e.js +0 -1
  485. package/dist/standalone/.next/static/chunks/app/api/inbox/route-c132c5ba005ff29e.js +0 -1
  486. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-c132c5ba005ff29e.js +0 -1
  487. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-c132c5ba005ff29e.js +0 -1
  488. package/dist/standalone/.next/static/chunks/app/api/limits/route-c132c5ba005ff29e.js +0 -1
  489. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-c132c5ba005ff29e.js +0 -1
  490. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-c132c5ba005ff29e.js +0 -1
  491. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-c132c5ba005ff29e.js +0 -1
  492. package/dist/standalone/.next/static/chunks/app/api/log/route-c132c5ba005ff29e.js +0 -1
  493. package/dist/standalone/.next/static/chunks/app/api/logs/route-c132c5ba005ff29e.js +0 -1
  494. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-c132c5ba005ff29e.js +0 -1
  495. package/dist/standalone/.next/static/chunks/app/api/monitor/lock/route-c132c5ba005ff29e.js +0 -1
  496. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-c132c5ba005ff29e.js +0 -1
  497. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-c132c5ba005ff29e.js +0 -1
  498. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-c132c5ba005ff29e.js +0 -1
  499. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-c132c5ba005ff29e.js +0 -1
  500. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-c132c5ba005ff29e.js +0 -1
  501. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-c132c5ba005ff29e.js +0 -1
  502. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-c132c5ba005ff29e.js +0 -1
  503. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-c132c5ba005ff29e.js +0 -1
  504. package/dist/standalone/.next/static/chunks/app/api/proc/route-c132c5ba005ff29e.js +0 -1
  505. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-c132c5ba005ff29e.js +0 -1
  506. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-c132c5ba005ff29e.js +0 -1
  507. package/dist/standalone/.next/static/chunks/app/api/push/route-c132c5ba005ff29e.js +0 -1
  508. package/dist/standalone/.next/static/chunks/app/api/resources/route-c132c5ba005ff29e.js +0 -1
  509. package/dist/standalone/.next/static/chunks/app/api/roles/route-c132c5ba005ff29e.js +0 -1
  510. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-c132c5ba005ff29e.js +0 -1
  511. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-c132c5ba005ff29e.js +0 -1
  512. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-c132c5ba005ff29e.js +0 -1
  513. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-c132c5ba005ff29e.js +0 -1
  514. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-c132c5ba005ff29e.js +0 -1
  515. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-c132c5ba005ff29e.js +0 -1
  516. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-c132c5ba005ff29e.js +0 -1
  517. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-c132c5ba005ff29e.js +0 -1
  518. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-c132c5ba005ff29e.js +0 -1
  519. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-c132c5ba005ff29e.js +0 -1
  520. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-c132c5ba005ff29e.js +0 -1
  521. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-c132c5ba005ff29e.js +0 -1
  522. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-c132c5ba005ff29e.js +0 -1
  523. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-c132c5ba005ff29e.js +0 -1
  524. package/dist/standalone/.next/static/chunks/app/api/session/route-c132c5ba005ff29e.js +0 -1
  525. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-c132c5ba005ff29e.js +0 -1
  526. package/dist/standalone/.next/static/chunks/app/api/session/title/route-c132c5ba005ff29e.js +0 -1
  527. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-c132c5ba005ff29e.js +0 -1
  528. package/dist/standalone/.next/static/chunks/app/api/spawn/route-c132c5ba005ff29e.js +0 -1
  529. package/dist/standalone/.next/static/chunks/app/api/staging/route-c132c5ba005ff29e.js +0 -1
  530. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-c132c5ba005ff29e.js +0 -1
  531. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-c132c5ba005ff29e.js +0 -1
  532. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-c132c5ba005ff29e.js +0 -1
  533. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-c132c5ba005ff29e.js +0 -1
  534. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-c132c5ba005ff29e.js +0 -1
  535. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-c132c5ba005ff29e.js +0 -1
  536. package/dist/standalone/.next/static/chunks/app/api/tasks/route-c132c5ba005ff29e.js +0 -1
  537. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-c132c5ba005ff29e.js +0 -1
  538. package/dist/standalone/.next/static/chunks/app/api/telegram/route-c132c5ba005ff29e.js +0 -1
  539. package/dist/standalone/.next/static/chunks/app/api/timeline/route-c132c5ba005ff29e.js +0 -1
  540. package/dist/standalone/.next/static/chunks/app/api/tmux/route-c132c5ba005ff29e.js +0 -1
  541. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-c132c5ba005ff29e.js +0 -1
  542. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-c132c5ba005ff29e.js +0 -1
  543. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-c132c5ba005ff29e.js +0 -1
  544. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-c132c5ba005ff29e.js +0 -1
  545. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-c132c5ba005ff29e.js +0 -1
  546. package/dist/standalone/.next/static/chunks/app/api/tts/route-c132c5ba005ff29e.js +0 -1
  547. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-c132c5ba005ff29e.js +0 -1
  548. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-c132c5ba005ff29e.js +0 -1
  549. package/dist/standalone/.next/static/chunks/app/api/workflows/route-c132c5ba005ff29e.js +0 -1
  550. package/dist/standalone/.next/static/chunks/app/page-ac9463b910bf83fe.js +0 -77
  551. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c132c5ba005ff29e.js +0 -1
  552. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c132c5ba005ff29e.js +0 -1
  553. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c132c5ba005ff29e.js +0 -1
  554. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c132c5ba005ff29e.js +0 -1
  555. package/dist/standalone/.next/static/css/498f12ddef7ecb0e.css +0 -1
  556. package/dist/standalone/.next/static/kt9OPe8iwfpNcdOX9ygvb/_buildManifest.js +0 -1
  557. /package/dist/standalone/.next/static/{kt9OPe8iwfpNcdOX9ygvb → 94yAMfjyhUPRgarycP9y4}/_ssgManifest.js +0 -0
  558. /package/dist/standalone/node_modules/{nanoid → next/node_modules/postcss/node_modules/nanoid}/non-secure/package.json +0 -0
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5545,exports.ids=[5545],exports.modules={95545:(a,b,c)=>{c.r(b),c.d(b,{productionTelegramConnectorBootPorts:()=>f,provisionTelegramConnectorAtStartup:()=>g});var d=c(19777),e=c(773);let f={hasCredentialedSession:()=>{try{return null!==(0,d.w0)()}catch{return!1}},reportsEnabled:()=>(0,e.rD)().settings.enabled,provision:async()=>{let{telegramService:a}=await Promise.all([c.e(8465),c.e(2549),c.e(3793)]).then(c.bind(c,99085));await a().checkHealth()},connected:()=>{try{return"connected"===(0,d.Kd)().status}catch{return!1}},log:a=>console.error(`[telegram connector] ${a}`)};async function g(a=f){if(!a.hasCredentialedSession())return"no_session";if(!a.reportsEnabled())return"reports_disabled";try{await a.provision()}catch{return a.log("provision_failed"),"provision_failed"}return a.connected()?"provisioned":(a.log("connector_unavailable"),"unavailable")}}};
@@ -1,4 +1,4 @@
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.
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:()=>k,ck:()=>g,ve:()=>j,z9:()=>e});let d={claude:["low","medium","high","xhigh","max"],codex:["low","medium","high","xhigh"]};function e(a,b){return d[a].includes(b)}let f=["minimal","low","medium","high","xhigh","max","ultra"];function g(a){return f.includes(a)}let h=[[/^gpt-5\.6-(sol|terra)\b/,["low","medium","high","xhigh","max","ultra"]],[/^gpt-5\.6\b/,["low","medium","high","xhigh","max"]]],i=["off","minimal","low","medium","high","xhigh","max"];function j(a,b){if("claude"===a)return d.claude;if("openclaw"===a)return i;if("codex"!==a)return null;let c=(b??"").trim().toLowerCase();for(let[a,b]of h)if(a.test(c))return b;return d.codex}function k(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:()=>t,im:()=>u,qe:()=>p,rj:()=>q,z:()=>n});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c;return{project:p(b),displayName:d}}function p(a){return`dir-${e().createHash("sha256").update(`dir:${a}`).digest("hex").slice(0,32)}`}function q(a){return a===l?m:a}function r(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function s(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return r(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return r(f)?f:null}catch{return null}}function t(a){let b=k().resolve(a);for(;;){if(s(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function u(a){let b,c=s(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),f=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),h=d?function(a,b){let c=/^[a-z][a-z0-9+.-]*:\/\//i.test(a)?null:/^(?:[^@\s]+@)?([^:/\s]+):(.+)$/.exec(a);if(c){let a=c[1].toLowerCase(),b=c[2].replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return b?`${a}/${b}`:null}try{let b=new URL(a);if("file:"===b.protocol){let a=k().resolve(b.pathname).replace(/\.git$/i,"");return`file:${a}`}let c=b.hostname.toLowerCase(),d=b.port?`:${b.port}`:"",e=b.pathname.replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return c&&e?`${c}${d}/${e}`:null}catch{let c=k().resolve(b,a).replace(/\.git$/i,"");return`file:${c}`}}(d,a):`local:${f}`,i=h&&h.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!h||!i)return null;let j=e().createHash("sha256").update(h).digest("hex").slice(0,32);return{project:`repo-${j}`,displayName:i,canonicalRemote:h}}},49048:(a,b,c)=>{c.d(b,{W:()=>h});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=`http://127.0.0.1:${process.env.PORT?.trim()||"8898"}`,h=[{id:"orchestrator",name:"Orchestrator",description:"Coordinates fresh agents through the Viewer control plane.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Operating mode for the coordination run.",kind:"select",options:["standard","plan-tickets","wayfind","backlog-campaign"]},{key:"repo",label:"Repository",description:"Repository for backlog-campaign mode.",kind:"text"},{key:"issueQuery",label:"Issue query",description:"GitHub issue query for backlog-campaign mode.",kind:"text"},{key:"urgent",label:"Urgent list",description:"Comma-separated urgent issue ids.",kind:"text"},{key:"maxWorkers",label:"Maximum workers",description:"Worker cap for backlog-campaign mode.",kind:"integer",default:3,min:1,max:20},{key:"mergePolicy",label:"Merge policy",description:"Delivery policy for backlog-campaign mode.",kind:"select",options:["pr","merge"]},{key:"completionPolicy",label:"Completion policy",description:"Terminal policy for backlog-campaign mode.",kind:"select",options:["pr-opened","merged","released"]}],promptScaffold:`You are the Orchestrator. Drive work through the production Viewer API at ${g}. Use fresh empty sessions with src lineage; forks are disabled. Keep every worker visible and controllable in the Viewer.
2
2
 
3
3
  Mode: {{mode}}
4
4
  Repository: {{repo}}
@@ -8,4 +8,4 @@ Maximum workers: {{maxWorkers}}
8
8
  Merge policy: {{mergePolicy}}
9
9
  Completion policy: {{completionPolicy}}
10
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"]}]}};
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 ${g} with src lineage.`,"Fresh empty sessions only; forks are disabled.","One owner holds a file at a time across active worktrees."],capabilities:["spawn"]},{id:"reviewer",name:"Reviewer",description:"Reviews a code diff and returns severity-ranked evidence-backed findings.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"diffSource",label:"Diff source",description:"Diff or pull request reference to inspect.",kind:"text",required:!0},{key:"lens",label:"Lens",description:"Review lens.",kind:"select",options:["correctness","over-engineering","silent-failure","test-coverage","scope","prod-ops","standards+spec","code-smells","all"]},{key:"mode",label:"Mode",description:"Reviewer context mode.",kind:"select",options:["fresh"]},{key:"parallelN",label:"Parallel passes",description:"Independent review passes.",kind:"integer",min:1,max:8}],promptScaffold:`You are a fresh-context Reviewer. Inspect {{diffSource}} with lens {{lens}}. Run {{parallelN}} independent pass(es), preserving their axes. Report the reviewed SHA. State plainly when GitHub or DNS access was unavailable. Classify any gate blocked by sandbox limits as an environmental note and keep it out of code findings. Run TypeScript checks with bunx tsc --noEmit --incremental false so they do not need a tsbuildinfo write in the checkout. Return severity-ranked findings with file:line evidence, or exactly NO FINDINGS when the diff is clean. Every finding is an actionable fix plan: clear problem statement, fix intent, constraints, and acceptance criteria. No copy-paste code unless absolutely necessary. ${f}`,safetyFences:e,capabilities:["read-only"]},{id:"verifier",name:"Verifier",description:"Tests supplied hypotheses and returns a per-claim evidence verdict.",config:{engine:"codex",model:d.je,effort:"high"},parameters:[{key:"claims",label:"Claims",description:"Hypotheses to confirm or refute.",kind:"text",required:!0}],promptScaffold:"You are a Verifier. Evaluate these supplied claims: {{claims}}. Rank falsifiable hypotheses before testing. Return CONFIRMED or WRONG for every claim with exact evidence and identify missing evidence.",safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.je,effort:"medium"},parameters:[{key:"mode",label:"Mode",description:"Implementation discipline.",kind:"select",options:["plain","apply-fixes","tdd","diagnose","prototype","merge-resolve"]},{key:"domain",label:"Domain",description:"Product domain for the implementation.",kind:"select",options:["general","frontend"]}],promptScaffold:"You are a Builder in {{mode}} mode. Implement the scoped product directive with focused checks. Keep changes within the assigned file ownership, run a self-review, and report the verification evidence.",safetyFences:["Product source changes stay inside the assigned scope.","A deployment requires a Deployer role and explicit operator approval."],capabilities:[]},{id:"architect",name:"Architect",description:"Produces an evidence-grounded design without product edits.",config:{engine:"claude",model:"opus",effort:"high"},parameters:[{key:"mode",label:"Mode",description:"Architecture output mode.",kind:"select",options:["design","spec","architecture-audit"]}],promptScaffold:`You are an Architect in {{mode}} mode. Ground the design in current code, state options and trade-offs, then deliver a design document. Product-source edits are prohibited. Open the document with the requester's originating requirement verbatim (with date and source; redact credentials and personal data). The default answer to "should we build this" is no unless that requirement demands it; validate the final design against the quote, and move cut scope into a "Deferred — not currently justified" section instead of deleting it. ${f}`,safetyFences:["Product-source edits, staging, commits, pushes, and service restarts are prohibited.","Capture an ADR only for a hard-to-reverse decision with a material trade-off."],capabilities:["read-only"]},{id:"cleaner",name:"Cleaner",description:"Safely recovers a dirty checkout under a backup contract.",config:{engine:"codex",model:d.fC,effort:"low"},parameters:[],promptScaffold:"You are a Cleaner. Classify the dirty checkout, preserve recoverable evidence before each destructive operation, and keep sibling worktrees untouched. Report the exact recovery actions and resulting git status.",safetyFences:["Create a backup before each destructive operation.","Sibling worktrees and user data remain untouched without explicit operator approval."],capabilities:[]},{id:"prod-auditor",name:"Prod-auditor",description:"Performs a read-only evidence-backed production investigation.",config:{engine:"codex",model:d.je,effort:"xhigh"},parameters:[{key:"questions",label:"Questions",description:"Production questions to investigate.",kind:"text",required:!0}],promptScaffold:"You are a Prod-auditor. Investigate {{questions}} through the production read wrapper only. Cite every finding with the exact command or SQL and UTC time bounds. Return evidence with no runtime mutation.",safetyFences:["Use the production read wrapper only.","Writes, restarts, deploys, and credential disclosure are prohibited."],capabilities:["read-only","production-read"]},{id:"deployer",name:"Deployer",description:"Plans a blue/green production deployment and stops for approval before mutation.",config:{engine:"codex",model:d.fC,effort:"medium"},parameters:[{key:"sha",label:"Merged SHA",description:"Merged commit SHA to deploy.",kind:"text",required:!0},{key:"pr",label:"Pull request",description:"Optional pull request reference.",kind:"text"}],promptScaffold:"You are a Deployer. Plan the blue/green deployment for merged SHA {{sha}} (PR {{pr}}). Validate the inactive color, present each mutating step for explicit operator approval, then stop. Preserve the external-worker deployment barrier.",safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]}};
@@ -1,4 +1,4 @@
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.
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,{wZ:()=>s,tx:()=>t,$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(5103)]).then(c.bind(c,27484)),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")}async function s(a,b=p){let c=Math.max(1,b.readinessTimeoutMs??9e4),d=b.now()+c,e=250;for(;b.now()<d;){let c,f;try{c=q(a,b)}catch{return{ready:!1,reason:"refused"}}try{f=await b.ensureConnector(c)}catch{f={ok:!1,code:"connector_failed"}}if(f.ok)return{ready:!0};if("connector_failed"!==f.code)return{ready:!1,reason:"refused"};let g=d-b.now();if(g<=0)break;await b.sleep(Math.min(e,g)),e=Math.min(2*e,2e3)}return{ready:!1,reason:"unavailable"}}function t(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(1872),c.e(9940),c.e(4509),c.e(4565),c.e(8797),c.e(8996),c.e(107),c.e(3587),c.e(8176),c.e(6850),c.e(9411),c.e(1100),c.e(8617),c.e(6826),c.e(640),c.e(2190),c.e(4127),c.e(7471),c.e(4191),c.e(2318),c.e(7722),c.e(3302)]).then(c.bind(c,67722)),c.e(9937).then(c.bind(c,89937)),c.e(4012).then(c.bind(c,4012))]),h={headers:new Headers({host:n,origin:`http://${n}`,"sec-fetch-site":"same-origin",[g]:f()}),json:async()=>a.body},i=await d(h,{...e,...(b=a.grantActive,{defer:m,internalGrant:()=>({sessionClass:l.Vv,mcpServers:(0,l.FE)({grantActive:b()})})})});return{status:i.status,body:await i.json()}}var p=c(79554),q=c(68032);let r={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()},connectorReady:a=>(0,k.wZ)(a),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(1872),c.e(2962)]).then(c.bind(c,21872)),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(1872),c.e(2962)]).then(c.bind(c,21872)),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||await this.runOwedConnectorRetry(a)||!(0,i.z1)({now:this.ports.now(),settings:a.settings,cursor:a.cursor}))return;let b=(0,i.l)(this.ports.now(),g.cz);(0,p.k)(a=>{a.cursor.lastScheduledDay=b});let c=this.beginRun("scheduled");c.ok&&await this.execute(c.runId)}catch{this.ports.log("tick_failed")}finally{this.running=!1}}}async runNow(){let a;if(this.running)return{ok:!1,code:"run_in_progress"};this.running=!0;try{if(await this.finalizeActiveRun(),(0,p.rD)().active)return{ok:!1,code:"run_in_progress"};a=this.beginRun("manual")}finally{this.running=!1}if(!a.ok)return a;let b=this.execute(a.runId);return this.pending.push(b),b.finally(()=>{this.pending=this.pending.filter(a=>a!==b)}),a}async settled(){let a=this.pending;this.pending=[],await Promise.all(a)}async runOwedConnectorRetry(a){let b=a.retry;if(!b)return!1;let c=Date.parse(b.armedAt);if(!Number.isFinite(c)||this.ports.now()-c>18e5||!a.settings.enabled)return(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)}),!1;if("connected"!==this.ports.connection().status)return!1;(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)});let d=this.beginRun(b.trigger,{retry:!0});return d.ok&&await this.execute(d.runId),!0}reconcileDisconnected(){let a=this.ports.connection();if("disconnected"!==a.status||null!==a.credentialRef)return;let b=(0,p.rD)();(b.settings.enabled||0!==b.history.length||b.active)&&(0,p.mI)()}beginRun(a,b={}){let c=(0,p.rD)(),d=this.ports.connection();if(!c.settings.enabled)return this.recordFailure(a,"reports_disabled");if("connected"!==d.status)return this.recordFailure(a,"not_connected");let f=e().randomUUID(),g=(0,i.s)(this.ports.now(),c.cursor);return this.planning.add(f),(0,p.k)(c=>{c.retry=null,c.active={runId:f,trigger:a,startedAt:new Date(this.ports.now()).toISOString(),windowStart:g.startAt,windowEnd:g.endAt,conversationId:null,promptVersion:h.BL,...b.retry?{retry:!0}:{}}}),{ok:!0,runId:f}}async execute(a){try{await this.executeLocked(a)}catch{this.ports.log("run_failed"),this.settle(a,"failed","launch_failed",!1)}finally{this.planning.delete(a)}}async verifiedIdentity(){let a=this.ports.connection();if(a.identity?.id)return 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;let d=await this.ports.connectorReady(l.credentialRef);if(!d.ready){this.ports.log("connector_unavailable"),this.settle(a,"failed","connector_unavailable",!1,{requeue:"unavailable"===d.reason});return}try{b=await m.getMe()}catch{this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}if(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)(),title:(0,h.sg)({windowStart:i.startAt,windowEnd:i.endAt}),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,e={}){(0,p.k)(f=>{let h=f.active;if(!h||h.runId!==a)return;if(f.active=null,f.retry=e.requeue&&!h.retry?{runId:h.runId,trigger:h.trigger,armedAt:new Date(this.ports.now()).toISOString()}:null,f.history=[{id:h.runId,trigger:h.trigger,startedAt:h.startedAt,finishedAt:new Date(this.ports.now()).toISOString(),windowStart:h.windowStart,windowEnd:h.windowEnd,status:b,errorCode:c,conversationId:h.conversationId,hasReport:d,promptVersion:h.promptVersion},...f.history],"ok"!==b&&"quiet"!==b){let a=f.cursor.unreportedSinceAt;(!a||Date.parse(h.windowStart)<Date.parse(a))&&(f.cursor.unreportedSinceAt=h.windowStart);return}f.cursor.lastSuccessfulWindowEndAt=h.windowEnd,f.cursor.unreportedSinceAt=null;let j=(0,i.l)(this.ports.now(),g.cz);this.ports.now()>=(0,i.wk)(j,f.settings.time,g.cz)&&(f.cursor.lastScheduledDay=j)}),d?(0,p.jc)(a):(0,p.FF)(a)}recordFailure(a,b,c=(0,i.s)(this.ports.now(),(0,p.rD)().cursor)){let d=new Date(this.ports.now()).toISOString();return(0,p.k)(f=>{if(f.history=[{id:e().randomUUID(),trigger:a,startedAt:d,finishedAt:d,windowStart:c.startAt,windowEnd:c.endAt,status:"failed",errorCode:b,conversationId:null,hasReport:!1,promptVersion:h.BL},...f.history],"reports_disabled"===b)return;let g=f.cursor.unreportedSinceAt;(!g||Date.parse(c.startAt)<Date.parse(g))&&(f.cursor.unreportedSinceAt=c.startAt)}),{ok:!1,code:b}}}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,retry: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,b;let c,d,e,f,g,k,l=null;try{l=(0,i.ck)(j())}catch{return{...o,settings:{...o.settings},cursor:{...o.cursor},retry:null,history:[]}}if(!l||"object"!=typeof l)return{...o,settings:{...o.settings},cursor:{...o.cursor},retry:null,history:[]};let m=l,n=m.cursor&&"object"==typeof m.cursor?m.cursor:{};return{version:1,settings:q(m.settings),prompt:"string"==typeof m.prompt&&m.prompt.trim()?m.prompt.slice(0,h.gW):null,cursor:{lastSuccessfulWindowEndAt:p(n.lastSuccessfulWindowEndAt),unreportedSinceAt:p(n.unreportedSinceAt),lastScheduledDay:p(n.lastScheduledDay)},active:(d=p((c=(a=m.active)&&"object"==typeof a?a:{}).runId),e=p(c.startedAt),d&&e?{runId:d,trigger:"manual"===c.trigger?"manual":"scheduled",startedAt:e,windowStart:p(c.windowStart)??e,windowEnd:p(c.windowEnd)??e,conversationId:p(c.conversationId),promptVersion:p(c.promptVersion)??"unknown",...!0===c.retry?{retry:!0}:{}}:null),retry:(g=p((f=(b=m.retry)&&"object"==typeof b?b:{}).runId),k=p(f.armedAt),g&&k&&Number.isFinite(Date.parse(k))?{runId:g,trigger:"manual"===f.trigger?"manual":"scheduled",armedAt:k}:null),history:Array.isArray(m.history)?m.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(5103)]).then(c.bind(c,27484)),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$:()=>k,U8:()=>f,Y_:()=>i,gW:()=>g,sg:()=>h});let d="v1",e="QUIET",f=`Write one report on the operator's Telegram for this window.
2
2
 
3
3
  The first line of the report is exactly:
4
4
 
@@ -20,7 +20,7 @@ Every item states its substance, the person or chat it came from, and a link htt
20
20
 
21
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
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).
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).`}function i(a){return`${`${h(a)}
24
24
 
25
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
26
 
@@ -44,4 +44,4 @@ ${e}
44
44
 
45
45
  YOUR INSTRUCTIONS (from the operator)`}
46
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"}}}};
47
+ ${a.instructions.trim()}`}let j=/^(?:[-*•]\s*)?\[(\d{1,3})\]/;function k(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=>j.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,10 @@
1
+ "use strict";exports.id=6487,exports.ids=[6487],exports.modules={56487:(a,b,c)=>{let d;c.d(b,{StreamableHTTPClientTransport:()=>at});var e,f=c(94941);function g(a){return a?a instanceof Headers?Object.fromEntries(a.entries()):Array.isArray(a)?Object.fromEntries(a):{...a}:{}}var h=c(9676);async function i(a){return(await d).getRandomValues(new Uint8Array(a))}async function j(a){let b="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~",c=256-256%b.length,d="";for(;d.length<a;)for(let e of(await i(a-d.length)))e<c&&(d+=b[e%b.length]);return d}async function k(a){return await j(a)}async function l(a){return btoa(String.fromCharCode(...new Uint8Array(await (await d).subtle.digest("SHA-256",new TextEncoder().encode(a))))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}async function m(a){if(a||(a=43),a<43||a>128)throw`Expected a length between 43 and 128. Received ${a}.`;let b=await k(a),c=await l(b);return{code_verifier:b,code_challenge:c}}d=globalThis.crypto?.webcrypto??globalThis.crypto??Promise.resolve().then(c.t.bind(c,77598,19)).then(a=>a.webcrypto);var n=c(45218);e||(e={});var o=c(46462),p=c(99449);let q=n.OZ().superRefine((a,b)=>{if(!URL.canParse(a))return b.addIssue({code:"custom",message:"URL must be parseable",fatal:!0}),o.tm}).refine(a=>{let b=new URL(a);return"javascript:"!==b.protocol&&"data:"!==b.protocol&&"vbscript:"!==b.protocol},{message:"URL cannot use javascript:, data:, or vbscript: scheme"}),r=n._H({resource:n.Yj().url(),authorization_servers:n.YO(q).optional(),jwks_uri:n.Yj().url().optional(),scopes_supported:n.YO(n.Yj()).optional(),bearer_methods_supported:n.YO(n.Yj()).optional(),resource_signing_alg_values_supported:n.YO(n.Yj()).optional(),resource_name:n.Yj().optional(),resource_documentation:n.Yj().optional(),resource_policy_uri:n.Yj().url().optional(),resource_tos_uri:n.Yj().url().optional(),tls_client_certificate_bound_access_tokens:n.zM().optional(),authorization_details_types_supported:n.YO(n.Yj()).optional(),dpop_signing_alg_values_supported:n.YO(n.Yj()).optional(),dpop_bound_access_tokens_required:n.zM().optional()}),s=n._H({issuer:n.Yj(),authorization_endpoint:q,token_endpoint:q,registration_endpoint:q.optional(),scopes_supported:n.YO(n.Yj()).optional(),response_types_supported:n.YO(n.Yj()),response_modes_supported:n.YO(n.Yj()).optional(),grant_types_supported:n.YO(n.Yj()).optional(),token_endpoint_auth_methods_supported:n.YO(n.Yj()).optional(),token_endpoint_auth_signing_alg_values_supported:n.YO(n.Yj()).optional(),service_documentation:q.optional(),revocation_endpoint:q.optional(),revocation_endpoint_auth_methods_supported:n.YO(n.Yj()).optional(),revocation_endpoint_auth_signing_alg_values_supported:n.YO(n.Yj()).optional(),introspection_endpoint:n.Yj().optional(),introspection_endpoint_auth_methods_supported:n.YO(n.Yj()).optional(),introspection_endpoint_auth_signing_alg_values_supported:n.YO(n.Yj()).optional(),code_challenge_methods_supported:n.YO(n.Yj()).optional(),client_id_metadata_document_supported:n.zM().optional()}),t=n._H({issuer:n.Yj(),authorization_endpoint:q,token_endpoint:q,userinfo_endpoint:q.optional(),jwks_uri:q,registration_endpoint:q.optional(),scopes_supported:n.YO(n.Yj()).optional(),response_types_supported:n.YO(n.Yj()),response_modes_supported:n.YO(n.Yj()).optional(),grant_types_supported:n.YO(n.Yj()).optional(),acr_values_supported:n.YO(n.Yj()).optional(),subject_types_supported:n.YO(n.Yj()),id_token_signing_alg_values_supported:n.YO(n.Yj()),id_token_encryption_alg_values_supported:n.YO(n.Yj()).optional(),id_token_encryption_enc_values_supported:n.YO(n.Yj()).optional(),userinfo_signing_alg_values_supported:n.YO(n.Yj()).optional(),userinfo_encryption_alg_values_supported:n.YO(n.Yj()).optional(),userinfo_encryption_enc_values_supported:n.YO(n.Yj()).optional(),request_object_signing_alg_values_supported:n.YO(n.Yj()).optional(),request_object_encryption_alg_values_supported:n.YO(n.Yj()).optional(),request_object_encryption_enc_values_supported:n.YO(n.Yj()).optional(),token_endpoint_auth_methods_supported:n.YO(n.Yj()).optional(),token_endpoint_auth_signing_alg_values_supported:n.YO(n.Yj()).optional(),display_values_supported:n.YO(n.Yj()).optional(),claim_types_supported:n.YO(n.Yj()).optional(),claims_supported:n.YO(n.Yj()).optional(),service_documentation:n.Yj().optional(),claims_locales_supported:n.YO(n.Yj()).optional(),ui_locales_supported:n.YO(n.Yj()).optional(),claims_parameter_supported:n.zM().optional(),request_parameter_supported:n.zM().optional(),request_uri_parameter_supported:n.zM().optional(),require_request_uri_registration:n.zM().optional(),op_policy_uri:q.optional(),op_tos_uri:q.optional(),client_id_metadata_document_supported:n.zM().optional()}),u=n.Ik({...t.shape,...s.pick({code_challenge_methods_supported:!0}).shape}),v=n.Ik({access_token:n.Yj(),id_token:n.Yj().optional(),token_type:n.Yj(),expires_in:p.qG(n.rS,void 0).optional(),scope:n.Yj().optional(),refresh_token:n.Yj().optional()}).strip(),w=n.Ik({error:n.Yj(),error_description:n.Yj().optional(),error_uri:n.Yj().optional()}),x=q.optional().or(n.eu("").transform(()=>void 0)),y=n.Ik({redirect_uris:n.YO(q),token_endpoint_auth_method:n.Yj().optional(),grant_types:n.YO(n.Yj()).optional(),response_types:n.YO(n.Yj()).optional(),client_name:n.Yj().optional(),client_uri:q.optional(),logo_uri:x,scope:n.Yj().optional(),contacts:n.YO(n.Yj()).optional(),tos_uri:x,policy_uri:n.Yj().optional(),jwks_uri:q.optional(),jwks:n.bz().optional(),software_id:n.Yj().optional(),software_version:n.Yj().optional(),software_statement:n.Yj().optional()}).strip(),z=n.Ik({client_id:n.Yj(),client_secret:n.Yj().optional(),client_id_issued_at:n.ai().optional(),client_secret_expires_at:n.ai().optional()}).strip(),A=y.merge(z);n.Ik({error:n.Yj(),error_description:n.Yj().optional()}).strip(),n.Ik({token:n.Yj(),token_type_hint:n.Yj().optional()}).strip();class B extends Error{constructor(a,b){super(a),this.errorUri=b,this.name=this.constructor.name}toResponseObject(){let a={error:this.errorCode,error_description:this.message};return this.errorUri&&(a.error_uri=this.errorUri),a}get errorCode(){return this.constructor.errorCode}}class C extends B{}C.errorCode="invalid_request";class D extends B{}D.errorCode="invalid_client";class E extends B{}E.errorCode="invalid_grant";class F extends B{}F.errorCode="unauthorized_client";class G extends B{}G.errorCode="unsupported_grant_type";class H extends B{}H.errorCode="invalid_scope";class I extends B{}I.errorCode="access_denied";class J extends B{}J.errorCode="server_error";class K extends B{}K.errorCode="temporarily_unavailable";class L extends B{}L.errorCode="unsupported_response_type";class M extends B{}M.errorCode="unsupported_token_type";class N extends B{}N.errorCode="invalid_token";class O extends B{}O.errorCode="method_not_allowed";class P extends B{}P.errorCode="too_many_requests";class Q extends B{}Q.errorCode="invalid_client_metadata";class R extends B{}R.errorCode="insufficient_scope";class S extends B{}S.errorCode="invalid_target";let T={[C.errorCode]:C,[D.errorCode]:D,[E.errorCode]:E,[F.errorCode]:F,[G.errorCode]:G,[H.errorCode]:H,[I.errorCode]:I,[J.errorCode]:J,[K.errorCode]:K,[L.errorCode]:L,[M.errorCode]:M,[N.errorCode]:N,[O.errorCode]:O,[P.errorCode]:P,[Q.errorCode]:Q,[R.errorCode]:R,[S.errorCode]:S};class U extends Error{constructor(a){super(a??"Unauthorized")}}let V="code",W="S256";async function X(a){let b=a instanceof Response?a.status:void 0,c=a instanceof Response?await a.text():a;try{let{error:a,error_description:b,error_uri:d}=w.parse(JSON.parse(c));return new(T[a]||J)(b||"",d)}catch(a){return new J(`${b?`HTTP ${b}: `:""}Invalid OAuth error response: ${a}. Raw body: ${c}`)}}async function Y(a,b){try{return await Z(a,b)}catch(c){if(c instanceof D||c instanceof F)return await a.invalidateCredentials?.("all"),await Z(a,b);if(c instanceof E)return await a.invalidateCredentials?.("tokens"),await Z(a,b);throw c}}async function Z(a,{serverUrl:b,authorizationCode:c,scope:d,resourceMetadataUrl:e,fetchFn:f}){let g,h,i,j=await a.discoveryState?.(),k=e;if(!k&&j?.resourceMetadataUrl&&(k=new URL(j.resourceMetadataUrl)),j?.authorizationServerUrl){if(h=j.authorizationServerUrl,g=j.resourceMetadata,i=j.authorizationServerMetadata??await af(h,{fetchFn:f}),!g)try{g=await ab(b,{resourceMetadataUrl:k},f)}catch{}(i!==j.authorizationServerMetadata||g!==j.resourceMetadata)&&await a.saveDiscoveryState?.({authorizationServerUrl:String(h),resourceMetadataUrl:k?.toString(),resourceMetadata:g,authorizationServerMetadata:i})}else{let c=await ag(b,{resourceMetadataUrl:k,fetchFn:f});h=c.authorizationServerUrl,i=c.authorizationServerMetadata,g=c.resourceMetadata,await a.saveDiscoveryState?.({authorizationServerUrl:String(h),resourceMetadataUrl:k?.toString(),resourceMetadata:g,authorizationServerMetadata:i})}let l=await $(b,a,g),m=d||g?.scopes_supported?.join(" ")||a.clientMetadata.scope,n=await Promise.resolve(a.clientInformation());if(!n){if(void 0!==c)throw Error("Existing OAuth client information is required when exchanging an authorization code");let b=i?.client_id_metadata_document_supported===!0,d=a.clientMetadataUrl;if(d&&!function(a){if(!a)return!1;try{let b=new URL(a);return"https:"===b.protocol&&"/"!==b.pathname}catch{return!1}}(d))throw new Q(`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${d}`);if(b&&d)n={client_id:d},await a.saveClientInformation?.(n);else{if(!a.saveClientInformation)throw Error("OAuth client information must be saveable for dynamic registration");let b=await al(h,{metadata:i,clientMetadata:a.clientMetadata,scope:m,fetchFn:f});await a.saveClientInformation(b),n=b}}let o=!a.redirectUrl;if(void 0!==c||o){let b=await ak(a,h,{metadata:i,resource:l,authorizationCode:c,fetchFn:f});return await a.saveTokens(b),"AUTHORIZED"}let p=await a.tokens();if(p?.refresh_token)try{let b=await aj(h,{metadata:i,clientInformation:n,refreshToken:p.refresh_token,resource:l,addClientAuthentication:a.addClientAuthentication,fetchFn:f});return await a.saveTokens(b),"AUTHORIZED"}catch(a){if(!(a instanceof B)||a instanceof J);else throw a}let q=a.state?await a.state():void 0,{authorizationUrl:r,codeVerifier:s}=await ah(h,{metadata:i,clientInformation:n,state:q,redirectUrl:a.redirectUrl,scope:m,resource:l});return await a.saveCodeVerifier(s),await a.redirectToAuthorization(r),"REDIRECT"}async function $(a,b,c){let d,e=((d=new URL("string"==typeof a?a:a.href)).hash="",d);if(b.validateResourceURL)return await b.validateResourceURL(e,c?.resource);if(c){if(!function({requestedResource:a,configuredResource:b}){let c=new URL("string"==typeof a?a:a.href),d=new URL("string"==typeof b?b:b.href);if(c.origin!==d.origin||c.pathname.length<d.pathname.length)return!1;let e=c.pathname.endsWith("/")?c.pathname:c.pathname+"/",f=d.pathname.endsWith("/")?d.pathname:d.pathname+"/";return e.startsWith(f)}({requestedResource:e,configuredResource:c.resource}))throw Error(`Protected resource ${c.resource} does not match expected ${e} (or origin)`);return new URL(c.resource)}}function _(a){let b,c=a.headers.get("WWW-Authenticate");if(!c)return{};let[d,e]=c.split(" ");if("bearer"!==d.toLowerCase()||!e)return{};let f=aa(a,"resource_metadata")||void 0;if(f)try{b=new URL(f)}catch{}return{resourceMetadataUrl:b,scope:aa(a,"scope")||void 0,error:aa(a,"error")||void 0}}function aa(a,b){let c=a.headers.get("WWW-Authenticate");if(!c)return null;let d=RegExp(`${b}=(?:"([^"]+)"|([^\\s,]+))`),e=c.match(d);return e?e[1]||e[2]:null}async function ab(a,b,c=fetch){let d=await ae(a,"oauth-protected-resource",c,{protocolVersion:b?.protocolVersion,metadataUrl:b?.resourceMetadataUrl});if(!d||404===d.status)throw await d?.body?.cancel(),Error("Resource server does not implement OAuth 2.0 Protected Resource Metadata.");if(!d.ok)throw await d.body?.cancel(),Error(`HTTP ${d.status} trying to load well-known OAuth protected resource metadata.`);return r.parse(await d.json())}async function ac(a,b,c=fetch){try{return await c(a,{headers:b})}catch(d){if(d instanceof TypeError)if(b)return ac(a,void 0,c);else return;throw d}}async function ad(a,b,c=fetch){return await ac(a,{"MCP-Protocol-Version":b},c)}async function ae(a,b,c,d){var e,f;let g,i=new URL(a),j=d?.protocolVersion??h.aE;d?.metadataUrl?g=new URL(d.metadataUrl):(g=new URL(function(a,b="",c={}){return b.endsWith("/")&&(b=b.slice(0,-1)),c.prependPathname?`${b}/.well-known/${a}`:`/.well-known/${a}${b}`}(b,i.pathname),d?.metadataServerUrl??i)).search=i.search;let k=await ad(g,j,c);if(!d?.metadataUrl&&(e=k,f=i.pathname,!e||e.status>=400&&e.status<500&&"/"!==f)){let a=new URL(`/.well-known/${b}`,i);k=await ad(a,j,c)}return k}async function af(a,{fetchFn:b=fetch,protocolVersion:c=h.aE}={}){let d={"MCP-Protocol-Version":c,Accept:"application/json"};for(let{url:c,type:e}of function(a){let b="string"==typeof a?new URL(a):a,c="/"!==b.pathname,d=[];if(!c)return d.push({url:new URL("/.well-known/oauth-authorization-server",b.origin),type:"oauth"}),d.push({url:new URL("/.well-known/openid-configuration",b.origin),type:"oidc"}),d;let e=b.pathname;return e.endsWith("/")&&(e=e.slice(0,-1)),d.push({url:new URL(`/.well-known/oauth-authorization-server${e}`,b.origin),type:"oauth"}),d.push({url:new URL(`/.well-known/openid-configuration${e}`,b.origin),type:"oidc"}),d.push({url:new URL(`${e}/.well-known/openid-configuration`,b.origin),type:"oidc"}),d}(a)){let a=await ac(c,d,b);if(a){if(!a.ok){if(await a.body?.cancel(),a.status>=400&&a.status<500)continue;throw Error(`HTTP ${a.status} trying to load ${"oauth"===e?"OAuth":"OpenID provider"} metadata from ${c}`)}if("oauth"===e)return s.parse(await a.json());return u.parse(await a.json())}}}async function ag(a,b){let c,d;try{(c=await ab(a,{resourceMetadataUrl:b?.resourceMetadataUrl},b?.fetchFn)).authorization_servers&&c.authorization_servers.length>0&&(d=c.authorization_servers[0])}catch{}d||(d=String(new URL("/",a)));let e=await af(d,{fetchFn:b?.fetchFn});return{authorizationServerUrl:d,authorizationServerMetadata:e,resourceMetadata:c}}async function ah(a,{metadata:b,clientInformation:c,redirectUrl:d,scope:e,state:f,resource:g}){let h;if(b){if(h=new URL(b.authorization_endpoint),!b.response_types_supported.includes(V))throw Error(`Incompatible auth server: does not support response type ${V}`);if(b.code_challenge_methods_supported&&!b.code_challenge_methods_supported.includes(W))throw Error(`Incompatible auth server: does not support code challenge method ${W}`)}else h=new URL("/authorize",a);let i=await m(),j=i.code_verifier,k=i.code_challenge;return h.searchParams.set("response_type",V),h.searchParams.set("client_id",c.client_id),h.searchParams.set("code_challenge",k),h.searchParams.set("code_challenge_method",W),h.searchParams.set("redirect_uri",String(d)),f&&h.searchParams.set("state",f),e&&h.searchParams.set("scope",e),e?.includes("offline_access")&&h.searchParams.append("prompt","consent"),g&&h.searchParams.set("resource",g.href),{authorizationUrl:h,codeVerifier:j}}async function ai(a,{metadata:b,tokenRequestParams:c,clientInformation:d,addClientAuthentication:e,resource:f,fetchFn:g}){var h,i;let j,k=b?.token_endpoint?new URL(b.token_endpoint):new URL("/token",a),l=new Headers({"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"});f&&c.set("resource",f.href),e?await e(l,c,k,b):d&&function(a,b,c,d){let{client_id:e,client_secret:f}=b;switch(a){case"client_secret_basic":var g,h,i,j,k=e,l=f,m=c;if(!l)throw Error("client_secret_basic authentication requires a client_secret");let n=btoa(`${k}:${l}`);m.set("Authorization",`Basic ${n}`);return;case"client_secret_post":g=e,h=f,(i=d).set("client_id",g),h&&i.set("client_secret",h);return;case"none":j=e,d.set("client_id",j);return;default:throw Error(`Unsupported client authentication method: ${a}`)}}((h=d,i=b?.token_endpoint_auth_methods_supported??[],j=void 0!==h.client_secret,"token_endpoint_auth_method"in h&&h.token_endpoint_auth_method&&["client_secret_basic","client_secret_post","none"].includes(h.token_endpoint_auth_method)&&(0===i.length||i.includes(h.token_endpoint_auth_method))?h.token_endpoint_auth_method:0===i.length?j?"client_secret_basic":"none":j&&i.includes("client_secret_basic")?"client_secret_basic":j&&i.includes("client_secret_post")?"client_secret_post":i.includes("none")?"none":j?"client_secret_post":"none"),d,l,c);let m=await (g??fetch)(k,{method:"POST",headers:l,body:c});if(!m.ok)throw await X(m);return v.parse(await m.json())}async function aj(a,{metadata:b,clientInformation:c,refreshToken:d,resource:e,addClientAuthentication:f,fetchFn:g}){let h=new URLSearchParams({grant_type:"refresh_token",refresh_token:d});return{refresh_token:d,...await ai(a,{metadata:b,tokenRequestParams:h,clientInformation:c,addClientAuthentication:f,resource:e,fetchFn:g})}}async function ak(a,b,{metadata:c,resource:d,authorizationCode:e,fetchFn:f}={}){let g,h=a.clientMetadata.scope;if(a.prepareTokenRequest&&(g=await a.prepareTokenRequest(h)),!g){if(!e)throw Error("Either provider.prepareTokenRequest() or authorizationCode is required");if(!a.redirectUrl)throw Error("redirectUrl is required for authorization_code flow");g=new URLSearchParams({grant_type:"authorization_code",code:e,code_verifier:await a.codeVerifier(),redirect_uri:String(a.redirectUrl)})}return ai(b,{metadata:c,tokenRequestParams:g,clientInformation:await a.clientInformation()??void 0,addClientAuthentication:a.addClientAuthentication,resource:d,fetchFn:f})}async function al(a,{metadata:b,clientMetadata:c,scope:d,fetchFn:e}){let f;if(b){if(!b.registration_endpoint)throw Error("Incompatible auth server: does not support dynamic client registration");f=new URL(b.registration_endpoint)}else f=new URL("/register",a);let g=await (e??fetch)(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...c,...void 0!==d?{scope:d}:{}})});if(!g.ok)throw await X(g);return A.parse(await g.json())}class am extends Error{constructor(a,b){super(a),this.name="ParseError",this.type=b.type,this.field=b.field,this.value=b.value,this.line=b.line}}function an(a){}function ao(a,b,c){return 100===c&&97===a.charCodeAt(b+1)&&116===a.charCodeAt(b+2)&&97===a.charCodeAt(b+3)&&58===a.charCodeAt(b+4)}function ap(a,b,c){return 101===c&&118===a.charCodeAt(b+1)&&101===a.charCodeAt(b+2)&&110===a.charCodeAt(b+3)&&116===a.charCodeAt(b+4)&&58===a.charCodeAt(b+5)}class aq extends TransformStream{constructor({onError:a,onRetry:b,onComment:c,maxBufferSize:d}={}){let e;super({start(f){e=function(a){if("function"==typeof a)throw TypeError("`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?");let{onEvent:b=an,onError:c=an,onRetry:d=an,onComment:e,maxBufferSize:f}=a,g=[],h=0,i=!0,j,k="",l=0,m,n=!1;function o(){void 0!==f&&(h+k.length<=f||(n=!0,g.length=0,h=0,j=void 0,k="",l=0,m=void 0,c(new am(`Buffered data exceeded max buffer size of ${f} characters`,{type:"max-buffer-size-exceeded"}))))}function p(a){let c=0;if(-1===a.indexOf("\r")){let d=a.indexOf(`
2
+ `,c);for(;-1!==d;){if(c===d){l>0&&b({id:j,event:m,data:k}),j=void 0,k="",l=0,m=void 0,c=d+1,d=a.indexOf(`
3
+ `,c);continue}let e=a.charCodeAt(c);if(ao(a,c,e)){let e=32===a.charCodeAt(c+5)?c+6:c+5,f=a.slice(e,d);if(0===l&&10===a.charCodeAt(d+1)){b({id:j,event:m,data:f}),j=void 0,k="",m=void 0,c=d+2,d=a.indexOf(`
4
+ `,c);continue}k=0===l?f:`${k}
5
+ ${f}`,l++}else ap(a,c,e)?m=a.slice(32===a.charCodeAt(c+6)?c+7:c+6,d)||void 0:q(a,c,d);c=d+1,d=a.indexOf(`
6
+ `,c)}return a.slice(c)}for(;c<a.length;){let b=a.indexOf("\r",c),d=a.indexOf(`
7
+ `,c),e=-1;if(-1!==b&&-1!==d?e=b<d?b:d:-1!==b?e=b===a.length-1?-1:b:-1!==d&&(e=d),-1===e)break;q(a,c,e),c=e+1,13===a.charCodeAt(c-1)&&10===a.charCodeAt(c)&&c++}return a.slice(c)}function q(a,c,d){if(c===d)return void(l>0&&b({id:j,event:m,data:k}),j=void 0,k="",l=0,m=void 0);let f=a.charCodeAt(c);if(ao(a,c,f)){let b=32===a.charCodeAt(c+5)?c+6:c+5,e=a.slice(b,d);k=0===l?e:`${k}
8
+ ${e}`,l++;return}if(ap(a,c,f)){m=a.slice(32===a.charCodeAt(c+6)?c+7:c+6,d)||void 0;return}if(105===f&&100===a.charCodeAt(c+1)&&58===a.charCodeAt(c+2)){let b=a.slice(32===a.charCodeAt(c+3)?c+4:c+3,d);j=b.includes("\0")?void 0:b;return}if(58===f){e&&e(a.slice(c,d).slice(32===a.charCodeAt(c+1)?2:1));return}let g=a.slice(c,d),h=g.indexOf(":");if(-1===h)return void r(g,"",g);let i=g.slice(0,h),n=32===g.charCodeAt(h+1)?2:1;r(i,g.slice(h+n),g)}function r(a,b,e){switch(a){case"event":m=b||void 0;break;case"data":k=0===l?b:`${k}
9
+ ${b}`,l++;break;case"id":j=b.includes("\0")?void 0:b;break;case"retry":/^\d+$/.test(b)?d(parseInt(b,10)):c(new am(`Invalid \`retry\` value: "${b}"`,{type:"invalid-retry",value:b,line:e}));break;default:c(new am(`Unknown field "${a.length>20?`${a.slice(0,20)}\u2026`:a}"`,{type:"unknown-field",field:a,value:b,line:e}))}}return{feed:function(a){if(n)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(i&&(i=!1,239===a.charCodeAt(0)&&187===a.charCodeAt(1)&&191===a.charCodeAt(2)&&(a=a.slice(3))),0===g.length){let b=p(a);""!==b&&(g.push(b),h=b.length),o();return}if(-1===a.indexOf(`
10
+ `)&&-1===a.indexOf("\r")){g.push(a),h+=a.length,o();return}g.push(a);let b=g.join("");g.length=0,h=0;let c=p(b);""!==c&&(g.push(c),h=c.length),o()},reset:function(a={}){if(a.consume&&g.length>0){let a=g.join("");q(a,0,a.length)}i=!0,j=void 0,k="",l=0,m=void 0,g.length=0,h=0,n=!1}}}({onEvent:a=>{f.enqueue(a)},onError(b){"function"==typeof a&&a(b),("terminate"===a||"max-buffer-size-exceeded"===b.type)&&f.error(b)},onRetry:b,onComment:c,maxBufferSize:d})},transform(a){e.feed(a)}})}}let ar={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};class as extends Error{constructor(a,b){super(`Streamable HTTP error: ${b}`),this.code=a}}class at{constructor(a,b){this._hasCompletedAuthFlow=!1,this._url=a,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=b?.requestInit,this._authProvider=b?.authProvider,this._fetch=b?.fetch,this._fetchWithInit=function(a=fetch,b){return b?async(c,d)=>a(c,{...b,...d,headers:d?.headers?{...g(b.headers),...g(d.headers)}:b.headers}):a}(b?.fetch,b?.requestInit),this._sessionId=b?.sessionId,this._reconnectionOptions=b?.reconnectionOptions??ar}async _authThenStart(){let a;if(!this._authProvider)throw new U("No auth provider");try{a=await Y(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(a){throw this.onerror?.(a),a}if("AUTHORIZED"!==a)throw new U;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let a={};if(this._authProvider){let b=await this._authProvider.tokens();b&&(a.Authorization=`Bearer ${b.access_token}`)}this._sessionId&&(a["mcp-session-id"]=this._sessionId),this._protocolVersion&&(a["mcp-protocol-version"]=this._protocolVersion);let b=g(this._requestInit?.headers);return new Headers({...a,...b})}async _startOrAuthSse(a){let{resumptionToken:b}=a;try{let c=await this._commonHeaders();c.set("Accept","text/event-stream"),b&&c.set("last-event-id",b);let d=await (this._fetch??fetch)(this._url,{method:"GET",headers:c,signal:this._abortController?.signal});if(!d.ok){if(await d.body?.cancel(),401===d.status&&this._authProvider)return await this._authThenStart();if(405===d.status)return;throw new as(d.status,`Failed to open SSE stream: ${d.statusText}`)}this._handleSseStream(d.body,a,!0)}catch(a){throw this.onerror?.(a),a}}_getNextReconnectionDelay(a){return void 0!==this._serverRetryMs?this._serverRetryMs:Math.min(this._reconnectionOptions.initialReconnectionDelay*Math.pow(this._reconnectionOptions.reconnectionDelayGrowFactor,a),this._reconnectionOptions.maxReconnectionDelay)}_scheduleReconnection(a,b=0){let c=this._reconnectionOptions.maxRetries;if(b>=c)return void this.onerror?.(Error(`Maximum reconnection attempts (${c}) exceeded.`));let d=this._getNextReconnectionDelay(b);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(a).catch(c=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${c instanceof Error?c.message:String(c)}`)),this._scheduleReconnection(a,b+1)})},d)}_handleSseStream(a,b,c){let d;if(!a)return;let{onresumptiontoken:e,replayMessageId:f}=b,g=!1,i=!1;(async()=>{try{let b=a.pipeThrough(new TextDecoderStream).pipeThrough(new aq({onRetry:a=>{this._serverRetryMs=a}})).getReader();for(;;){let{value:a,done:c}=await b.read();if(c)break;if((a.id&&(d=a.id,g=!0,e?.(a.id)),a.data)&&(!a.event||"message"===a.event))try{let b=h.OR.parse(JSON.parse(a.data));(0,h.ig)(b)&&(i=!0,void 0!==f&&(b.id=f)),this.onmessage?.(b)}catch(a){this.onerror?.(a)}}(c||g)&&!i&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:d,onresumptiontoken:e,replayMessageId:f},0)}catch(a){if(this.onerror?.(Error(`SSE stream disconnected: ${a}`)),(c||g)&&!i&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:d,onresumptiontoken:e,replayMessageId:f},0)}catch(a){this.onerror?.(Error(`Failed to reconnect: ${a instanceof Error?a.message:String(a)}`))}}})()}async start(){if(this._abortController)throw Error("StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._abortController=new AbortController}async finishAuth(a){if(!this._authProvider)throw new U("No auth provider");if("AUTHORIZED"!==await Y(this._authProvider,{serverUrl:this._url,authorizationCode:a,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit}))throw new U("Failed to authorize")}async close(){this._reconnectionTimeout&&(clearTimeout(this._reconnectionTimeout),this._reconnectionTimeout=void 0),this._abortController?.abort(),this.onclose?.()}async send(a,b){try{let{resumptionToken:c,onresumptiontoken:d}=b||{};if(c)return void this._startOrAuthSse({resumptionToken:c,replayMessageId:(0,h.vo)(a)?a.id:void 0}).catch(a=>this.onerror?.(a));let e=await this._commonHeaders();e.set("content-type","application/json"),e.set("accept","application/json, text/event-stream");let g={...this._requestInit,method:"POST",headers:e,body:JSON.stringify(a),signal:this._abortController?.signal},i=await (this._fetch??fetch)(this._url,g),j=i.headers.get("mcp-session-id");if(j&&(this._sessionId=j),!i.ok){let b=await i.text().catch(()=>null);if(401===i.status&&this._authProvider){if(this._hasCompletedAuthFlow)throw new as(401,"Server returned 401 after successful authentication");let{resourceMetadataUrl:b,scope:c}=_(i);this._resourceMetadataUrl=b,this._scope=c;let d=await Y(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit});if("AUTHORIZED"!==d)throw new U;return this._hasCompletedAuthFlow=!0,this.send(a)}if(403===i.status&&this._authProvider){let{resourceMetadataUrl:b,scope:c,error:d}=_(i);if("insufficient_scope"===d){let d=i.headers.get("WWW-Authenticate");if(this._lastUpscopingHeader===d)throw new as(403,"Server returned 403 after trying upscoping");c&&(this._scope=c),b&&(this._resourceMetadataUrl=b),this._lastUpscopingHeader=d??void 0;let e=await Y(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch});if("AUTHORIZED"!==e)throw new U;return this.send(a)}}throw new as(i.status,`Error POSTing to endpoint: ${b}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,202===i.status){await i.body?.cancel(),(0,h.wU)(a)&&this._startOrAuthSse({resumptionToken:void 0}).catch(a=>this.onerror?.(a));return}let k=(Array.isArray(a)?a:[a]).filter(a=>"method"in a&&"id"in a&&void 0!==a.id).length>0,l=i.headers.get("content-type"),m=function(a){if(a)try{return f.parse(a).type}catch{let b=(a.split(";",1)[0]??"").trim().toLowerCase();if(""===b||a.slice(b.length).includes(","))return;return b}}(l);if(k)if("text/event-stream"===m)this._handleSseStream(i.body,{onresumptiontoken:d},!1);else if("application/json"===m){let a=await i.json();for(let b of Array.isArray(a)?a.map(a=>h.OR.parse(a)):[h.OR.parse(a)])this.onmessage?.(b)}else throw await i.body?.cancel(),new as(-1,`Unexpected content type: ${l}`);else await i.body?.cancel()}catch(a){throw this.onerror?.(a),a}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let a=await this._commonHeaders(),b={...this._requestInit,method:"DELETE",headers:a,signal:this._abortController?.signal},c=await (this._fetch??fetch)(this._url,b);if(await c.body?.cancel(),!c.ok&&405!==c.status)throw new as(c.status,`Failed to terminate session: ${c.statusText}`);this._sessionId=void 0}catch(a){throw this.onerror?.(a),a}}setProtocolVersion(a){this._protocolVersion=a}get protocolVersion(){return this._protocolVersion}async resumeStream(a,b){await this._startOrAuthSse({resumptionToken:a,onresumptiontoken:b?.onresumptiontoken})}}},94941:(a,b)=>{var c=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,d=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,e=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,f=/\\([\u000b\u0020-\u00ff])/g,g=/([\\"])/g,h=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function i(a){this.parameters=Object.create(null),this.type=a}b.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.parameters,c=a.type;if(!c||!h.test(c))throw TypeError("invalid type");var f=c;if(b&&"object"==typeof b)for(var i,j=Object.keys(b).sort(),k=0;k<j.length;k++){if(i=j[k],!e.test(i))throw TypeError("invalid parameter name");f+="; "+i+"="+function(a){var b=String(a);if(e.test(b))return b;if(b.length>0&&!d.test(b))throw TypeError("invalid parameter value");return'"'+b.replace(g,"\\$1")+'"'}(b[i])}return f},b.parse=function(a){if(!a)throw TypeError("argument string is required");var b,d,e,g="object"==typeof a?function(a){var b;if("function"==typeof a.getHeader?b=a.getHeader("content-type"):"object"==typeof a.headers&&(b=a.headers&&a.headers["content-type"]),"string"!=typeof b)throw TypeError("content-type header is missing from object");return b}(a):a;if("string"!=typeof g)throw TypeError("argument string is required to be a string");var j=g.indexOf(";"),k=-1!==j?g.slice(0,j).trim():g.trim();if(!h.test(k))throw TypeError("invalid media type");var l=new i(k.toLowerCase());if(-1!==j){for(c.lastIndex=j;d=c.exec(g);){if(d.index!==j)throw TypeError("invalid parameter format");j+=d[0].length,b=d[1].toLowerCase(),34===(e=d[2]).charCodeAt(0)&&-1!==(e=e.slice(1,-1)).indexOf("\\")&&(e=e.replace(f,"$1")),l.parameters[b]=e}if(j!==g.length)throw TypeError("invalid parameter format")}return l}}};
@@ -1 +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")}}};
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(29381),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")}}};