agent-log-viewer 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/dist/mcp-server.mjs +3712 -1753
  2. package/dist/runtime-host.mjs +3442 -1472
  3. package/dist/standalone/.next/BUILD_ID +1 -1
  4. package/dist/standalone/.next/app-path-routes-manifest.json +29 -27
  5. package/dist/standalone/.next/build-manifest.json +2 -2
  6. package/dist/standalone/.next/prerender-manifest.json +4 -4
  7. package/dist/standalone/.next/required-server-files.json +1 -0
  8. package/dist/standalone/.next/routes-manifest.json +12 -0
  9. package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -1
  10. package/dist/standalone/.next/server/app/_global-error/page.js +2 -2
  11. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  14. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  15. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  16. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  17. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/dist/standalone/.next/server/app/_not-found/page.js +1 -1
  19. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  22. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  23. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  24. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  25. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/dist/standalone/.next/server/app/api/access/route.js +1 -1
  27. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  28. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  29. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  30. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js +1 -1
  31. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js.nft.json +1 -1
  32. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +1 -1
  33. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
  35. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  36. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js +1 -1
  37. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js.nft.json +1 -1
  38. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +1 -1
  39. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  40. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +1 -1
  41. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  42. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
  43. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  44. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  45. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  46. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +1 -1
  47. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  48. package/dist/standalone/.next/server/app/api/accounts/cli/route.js +1 -0
  49. package/dist/standalone/.next/server/app/api/accounts/cli/route.js.nft.json +1 -0
  50. package/dist/standalone/.next/server/app/api/accounts/cli/route_client-reference-manifest.js +1 -0
  51. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
  52. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  53. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js +1 -1
  54. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js.nft.json +1 -1
  55. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
  56. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  57. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js +2 -2
  58. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js.nft.json +1 -1
  59. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  60. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  61. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +1 -1
  62. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  63. package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
  64. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  65. package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
  66. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  67. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  68. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  69. package/dist/standalone/.next/server/app/api/answer/route.js +1 -1
  70. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  71. package/dist/standalone/.next/server/app/api/artifact/route.js +1 -1
  72. package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
  73. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  74. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  75. package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
  76. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  77. package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
  78. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  79. package/dist/standalone/.next/server/app/api/board/route.js +1 -1
  80. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  81. package/dist/standalone/.next/server/app/api/bridge/route.js +1 -1
  82. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  83. package/dist/standalone/.next/server/app/api/conversation-host/route.js +1 -1
  84. package/dist/standalone/.next/server/app/api/conversation-host/route.js.nft.json +1 -1
  85. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js +1 -1
  86. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js.nft.json +1 -1
  87. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  88. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  89. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  90. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  91. package/dist/standalone/.next/server/app/api/files/route.js +6 -3
  92. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  93. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  94. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  95. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  96. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  97. package/dist/standalone/.next/server/app/api/image/route.js +1 -1
  98. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  99. package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
  100. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  101. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  102. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  103. package/dist/standalone/.next/server/app/api/limits/history/route.js +1 -1
  104. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  105. package/dist/standalone/.next/server/app/api/limits/route.js +1 -1
  106. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  107. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  108. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  109. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  110. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  111. package/dist/standalone/.next/server/app/api/log/provenance/route.js +14 -12
  112. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
  113. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  114. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  115. package/dist/standalone/.next/server/app/api/log/suggestions/route.js +2 -2
  116. package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -1
  117. package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
  118. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  119. package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
  120. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  121. package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -1
  122. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  123. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js +13 -14
  124. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js.nft.json +1 -1
  125. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js +2 -2
  126. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js.nft.json +1 -1
  127. package/dist/standalone/.next/server/app/api/onboarding/route.js +1 -0
  128. package/dist/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -0
  129. package/dist/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -0
  130. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  131. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  132. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  133. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  134. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +1 -3
  135. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
  136. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  137. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  138. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
  139. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  140. package/dist/standalone/.next/server/app/api/pipelines/route.js +1 -1
  141. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  142. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +1 -2
  143. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  144. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  145. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  146. package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
  147. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
  148. package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
  149. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
  150. package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -1
  151. package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -1
  152. package/dist/standalone/.next/server/app/api/push/route.js +2 -2
  153. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  154. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  155. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  156. package/dist/standalone/.next/server/app/api/roles/route.js +3 -3
  157. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  158. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +1 -1
  159. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  160. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
  161. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  162. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
  163. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  164. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
  165. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  166. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -1
  167. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -1
  168. package/dist/standalone/.next/server/app/api/runtime/inject/route.js +1 -1
  169. package/dist/standalone/.next/server/app/api/runtime/inject/route.js.nft.json +1 -1
  170. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +1 -1
  171. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  172. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +1 -1
  173. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  174. package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
  175. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  176. package/dist/standalone/.next/server/app/api/runtime/queue/route.js +1 -1
  177. package/dist/standalone/.next/server/app/api/runtime/queue/route.js.nft.json +1 -1
  178. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +1 -1
  179. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  180. package/dist/standalone/.next/server/app/api/runtime/send/route.js +1 -1
  181. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  182. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
  183. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  184. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +1 -1
  185. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  186. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +1 -1
  187. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  188. package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
  189. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  190. package/dist/standalone/.next/server/app/api/search/transcripts/route.js +1 -1
  191. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
  192. package/dist/standalone/.next/server/app/api/session/route.js +1 -1
  193. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  194. package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
  195. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  196. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  197. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  198. package/dist/standalone/.next/server/app/api/spawn/policy/route.js +2 -2
  199. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  200. package/dist/standalone/.next/server/app/api/spawn/route.js +1 -1
  201. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  202. package/dist/standalone/.next/server/app/api/spawn/validate/route.js +1 -1
  203. package/dist/standalone/.next/server/app/api/spawn/validate/route.js.nft.json +1 -1
  204. package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
  205. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  206. package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
  207. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  208. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  209. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  210. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  211. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  212. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +1 -1
  213. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  214. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +1 -1
  215. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  216. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  217. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  218. package/dist/standalone/.next/server/app/api/tasks/route.js +1 -1
  219. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  220. package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
  221. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
  222. package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
  223. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
  224. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  225. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  226. package/dist/standalone/.next/server/app/api/tmux/route.js +1 -1
  227. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  228. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  229. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  230. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
  231. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  232. package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
  233. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  234. package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
  235. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  236. package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
  237. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  238. package/dist/standalone/.next/server/app/api/tts/route.js +2 -2
  239. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  240. package/dist/standalone/.next/server/app/api/view/presence/route.js +2 -1
  241. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  242. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  243. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  244. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  245. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  246. package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
  247. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  248. package/dist/standalone/.next/server/app/index.html +1 -1
  249. package/dist/standalone/.next/server/app/index.rsc +3 -3
  250. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  251. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  252. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  253. package/dist/standalone/.next/server/app/page.js +20 -20
  254. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  255. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  256. package/dist/standalone/.next/server/app-paths-manifest.json +29 -27
  257. package/dist/standalone/.next/server/chunks/107.js +1 -1
  258. package/dist/standalone/.next/server/chunks/1106.js +5 -0
  259. package/dist/standalone/.next/server/chunks/112.js +1 -0
  260. package/dist/standalone/.next/server/chunks/1406.js +37 -170
  261. package/dist/standalone/.next/server/chunks/1585.js +3 -3
  262. package/dist/standalone/.next/server/chunks/160.js +18 -18
  263. package/dist/standalone/.next/server/chunks/1617.js +2 -2
  264. package/dist/standalone/.next/server/chunks/1849.js +1 -1
  265. package/dist/standalone/.next/server/chunks/1952.js +1 -1
  266. package/dist/standalone/.next/server/chunks/2150.js +1 -1
  267. package/dist/standalone/.next/server/chunks/2499.js +1 -0
  268. package/dist/standalone/.next/server/chunks/2555.js +1 -1
  269. package/dist/standalone/.next/server/chunks/2589.js +127 -0
  270. package/dist/standalone/.next/server/chunks/261.js +1 -0
  271. package/dist/standalone/.next/server/chunks/2744.js +3 -0
  272. package/dist/standalone/.next/server/chunks/2857.js +1 -1
  273. package/dist/standalone/.next/server/chunks/286.js +22 -0
  274. package/dist/standalone/.next/server/chunks/2914.js +20 -21
  275. package/dist/standalone/.next/server/chunks/2916.js +1 -0
  276. package/dist/standalone/.next/server/chunks/3086.js +1 -1
  277. package/dist/standalone/.next/server/chunks/3131.js +1 -1
  278. package/dist/standalone/.next/server/chunks/3407.js +1 -1
  279. package/dist/standalone/.next/server/chunks/3509.js +1 -0
  280. package/dist/standalone/.next/server/chunks/3570.js +1 -1
  281. package/dist/standalone/.next/server/chunks/3696.js +5 -0
  282. package/dist/standalone/.next/server/chunks/3743.js +10 -8
  283. package/dist/standalone/.next/server/chunks/3784.js +5 -0
  284. package/dist/standalone/.next/server/chunks/3830.js +1 -1
  285. package/dist/standalone/.next/server/chunks/3957.js +1 -0
  286. package/dist/standalone/.next/server/chunks/4037.js +1 -0
  287. package/dist/standalone/.next/server/chunks/4651.js +1 -1
  288. package/dist/standalone/.next/server/chunks/4972.js +38 -16
  289. package/dist/standalone/.next/server/chunks/53.js +1 -0
  290. package/dist/standalone/.next/server/chunks/5408.js +1 -0
  291. package/dist/standalone/.next/server/chunks/5465.js +156 -0
  292. package/dist/standalone/.next/server/chunks/5545.js +1 -1
  293. package/dist/standalone/.next/server/chunks/568.js +1 -1
  294. package/dist/standalone/.next/server/chunks/5771.js +1 -1
  295. package/dist/standalone/.next/server/chunks/6023.js +1 -1
  296. package/dist/standalone/.next/server/chunks/6211.js +1 -0
  297. package/dist/standalone/.next/server/chunks/6289.js +1 -2
  298. package/dist/standalone/.next/server/chunks/6418.js +1 -0
  299. package/dist/standalone/.next/server/chunks/644.js +1 -1
  300. package/dist/standalone/.next/server/chunks/6453.js +1 -1
  301. package/dist/standalone/.next/server/chunks/6522.js +1 -1
  302. package/dist/standalone/.next/server/chunks/6796.js +1 -1
  303. package/dist/standalone/.next/server/chunks/6826.js +3 -3
  304. package/dist/standalone/.next/server/chunks/6942.js +3 -3
  305. package/dist/standalone/.next/server/chunks/6978.js +1 -1
  306. package/dist/standalone/.next/server/chunks/7008.js +21 -19
  307. package/dist/standalone/.next/server/chunks/7192.js +1 -1
  308. package/dist/standalone/.next/server/chunks/7238.js +2 -2
  309. package/dist/standalone/.next/server/chunks/7294.js +1 -0
  310. package/dist/standalone/.next/server/chunks/7722.js +1 -1
  311. package/dist/standalone/.next/server/chunks/781.js +17 -17
  312. package/dist/standalone/.next/server/chunks/8027.js +1 -1
  313. package/dist/standalone/.next/server/chunks/8330.js +1 -0
  314. package/dist/standalone/.next/server/chunks/8444.js +1 -1
  315. package/dist/standalone/.next/server/chunks/8465.js +2 -2
  316. package/dist/standalone/.next/server/chunks/8512.js +1 -1
  317. package/dist/standalone/.next/server/chunks/8513.js +2 -2
  318. package/dist/standalone/.next/server/chunks/8617.js +1 -1
  319. package/dist/standalone/.next/server/chunks/8817.js +2 -2
  320. package/dist/standalone/.next/server/chunks/8966.js +2 -2
  321. package/dist/standalone/.next/server/chunks/8985.js +1 -1
  322. package/dist/standalone/.next/server/chunks/8996.js +1 -1
  323. package/dist/standalone/.next/server/chunks/9006.js +1 -0
  324. package/dist/standalone/.next/server/chunks/9060.js +4 -0
  325. package/dist/standalone/.next/server/chunks/9296.js +20 -21
  326. package/dist/standalone/.next/server/chunks/9298.js +1 -2
  327. package/dist/standalone/.next/server/chunks/9307.js +1 -1
  328. package/dist/standalone/.next/server/chunks/9360.js +14 -12
  329. package/dist/standalone/.next/server/chunks/9517.js +1 -1
  330. package/dist/standalone/.next/server/chunks/9611.js +1 -0
  331. package/dist/standalone/.next/server/chunks/9822.js +1 -1
  332. package/dist/standalone/.next/server/chunks/9839.js +5 -0
  333. package/dist/standalone/.next/server/chunks/9867.js +1 -0
  334. package/dist/standalone/.next/server/chunks/9940.js +37 -15
  335. package/dist/standalone/.next/server/chunks/9998.js +1 -1
  336. package/dist/standalone/.next/server/file-scanner-worker.js +2 -2
  337. package/dist/standalone/.next/server/files-response-worker.js +2 -2
  338. package/dist/standalone/.next/server/functions-config-manifest.json +2 -0
  339. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  340. package/dist/standalone/.next/server/middleware.js +3 -3
  341. package/dist/standalone/.next/server/pages/404.html +1 -1
  342. package/dist/standalone/.next/server/pages/500.html +1 -1
  343. package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
  344. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  345. package/dist/standalone/.next/server/state-backup-worker.js +3 -0
  346. package/dist/standalone/.next/server/wakatime-sync-worker.js +1 -1
  347. package/dist/standalone/.next/static/chunks/9591-0fd6a5a4172de16d.js +1 -0
  348. package/dist/standalone/.next/static/chunks/app/_global-error/page-151390fbd8c93c25.js +1 -0
  349. package/dist/standalone/.next/static/chunks/app/api/access/route-151390fbd8c93c25.js +1 -0
  350. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-151390fbd8c93c25.js +1 -0
  351. package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-151390fbd8c93c25.js +1 -0
  352. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-151390fbd8c93c25.js +1 -0
  353. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-151390fbd8c93c25.js +1 -0
  354. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-151390fbd8c93c25.js +1 -0
  355. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-151390fbd8c93c25.js +1 -0
  356. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-151390fbd8c93c25.js +1 -0
  357. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-151390fbd8c93c25.js +1 -0
  358. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-151390fbd8c93c25.js +1 -0
  359. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-151390fbd8c93c25.js +1 -0
  360. package/dist/standalone/.next/static/chunks/app/api/accounts/cli/route-151390fbd8c93c25.js +1 -0
  361. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-151390fbd8c93c25.js +1 -0
  362. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-151390fbd8c93c25.js +1 -0
  363. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-151390fbd8c93c25.js +1 -0
  364. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-151390fbd8c93c25.js +1 -0
  365. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-151390fbd8c93c25.js +1 -0
  366. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-151390fbd8c93c25.js +1 -0
  367. package/dist/standalone/.next/static/chunks/app/api/accounts/route-151390fbd8c93c25.js +1 -0
  368. package/dist/standalone/.next/static/chunks/app/api/agent/route-151390fbd8c93c25.js +1 -0
  369. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-151390fbd8c93c25.js +1 -0
  370. package/dist/standalone/.next/static/chunks/app/api/answer/route-151390fbd8c93c25.js +1 -0
  371. package/dist/standalone/.next/static/chunks/app/api/artifact/route-151390fbd8c93c25.js +1 -0
  372. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-151390fbd8c93c25.js +1 -0
  373. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-151390fbd8c93c25.js +1 -0
  374. package/dist/standalone/.next/static/chunks/app/api/attention/route-151390fbd8c93c25.js +1 -0
  375. package/dist/standalone/.next/static/chunks/app/api/board/route-151390fbd8c93c25.js +1 -0
  376. package/dist/standalone/.next/static/chunks/app/api/bridge/route-151390fbd8c93c25.js +1 -0
  377. package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-151390fbd8c93c25.js +1 -0
  378. package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-151390fbd8c93c25.js +1 -0
  379. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-151390fbd8c93c25.js +1 -0
  380. package/dist/standalone/.next/static/chunks/app/api/conversations/route-151390fbd8c93c25.js +1 -0
  381. package/dist/standalone/.next/static/chunks/app/api/files/route-151390fbd8c93c25.js +1 -0
  382. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-151390fbd8c93c25.js +1 -0
  383. package/dist/standalone/.next/static/chunks/app/api/flows/route-151390fbd8c93c25.js +1 -0
  384. package/dist/standalone/.next/static/chunks/app/api/image/route-151390fbd8c93c25.js +1 -0
  385. package/dist/standalone/.next/static/chunks/app/api/inbox/route-151390fbd8c93c25.js +1 -0
  386. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-151390fbd8c93c25.js +1 -0
  387. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-151390fbd8c93c25.js +1 -0
  388. package/dist/standalone/.next/static/chunks/app/api/limits/route-151390fbd8c93c25.js +1 -0
  389. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-151390fbd8c93c25.js +1 -0
  390. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-151390fbd8c93c25.js +1 -0
  391. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-151390fbd8c93c25.js +1 -0
  392. package/dist/standalone/.next/static/chunks/app/api/log/route-151390fbd8c93c25.js +1 -0
  393. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-151390fbd8c93c25.js +1 -0
  394. package/dist/standalone/.next/static/chunks/app/api/logs/route-151390fbd8c93c25.js +1 -0
  395. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-151390fbd8c93c25.js +1 -0
  396. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-151390fbd8c93c25.js +1 -0
  397. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-151390fbd8c93c25.js +1 -0
  398. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-151390fbd8c93c25.js +1 -0
  399. package/dist/standalone/.next/static/chunks/app/api/onboarding/route-151390fbd8c93c25.js +1 -0
  400. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-151390fbd8c93c25.js +1 -0
  401. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-151390fbd8c93c25.js +1 -0
  402. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-151390fbd8c93c25.js +1 -0
  403. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-151390fbd8c93c25.js +1 -0
  404. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-151390fbd8c93c25.js +1 -0
  405. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-151390fbd8c93c25.js +1 -0
  406. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-151390fbd8c93c25.js +1 -0
  407. package/dist/standalone/.next/static/chunks/app/api/proc/route-151390fbd8c93c25.js +1 -0
  408. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-151390fbd8c93c25.js +1 -0
  409. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-151390fbd8c93c25.js +1 -0
  410. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-151390fbd8c93c25.js +1 -0
  411. package/dist/standalone/.next/static/chunks/app/api/push/route-151390fbd8c93c25.js +1 -0
  412. package/dist/standalone/.next/static/chunks/app/api/resources/route-151390fbd8c93c25.js +1 -0
  413. package/dist/standalone/.next/static/chunks/app/api/roles/route-151390fbd8c93c25.js +1 -0
  414. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-151390fbd8c93c25.js +1 -0
  415. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-151390fbd8c93c25.js +1 -0
  416. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-151390fbd8c93c25.js +1 -0
  417. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-151390fbd8c93c25.js +1 -0
  418. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-151390fbd8c93c25.js +1 -0
  419. package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-151390fbd8c93c25.js +1 -0
  420. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-151390fbd8c93c25.js +1 -0
  421. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-151390fbd8c93c25.js +1 -0
  422. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-151390fbd8c93c25.js +1 -0
  423. package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-151390fbd8c93c25.js +1 -0
  424. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-151390fbd8c93c25.js +1 -0
  425. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-151390fbd8c93c25.js +1 -0
  426. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-151390fbd8c93c25.js +1 -0
  427. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-151390fbd8c93c25.js +1 -0
  428. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-151390fbd8c93c25.js +1 -0
  429. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-151390fbd8c93c25.js +1 -0
  430. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-151390fbd8c93c25.js +1 -0
  431. package/dist/standalone/.next/static/chunks/app/api/session/route-151390fbd8c93c25.js +1 -0
  432. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-151390fbd8c93c25.js +1 -0
  433. package/dist/standalone/.next/static/chunks/app/api/session/title/route-151390fbd8c93c25.js +1 -0
  434. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-151390fbd8c93c25.js +1 -0
  435. package/dist/standalone/.next/static/chunks/app/api/spawn/route-151390fbd8c93c25.js +1 -0
  436. package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-151390fbd8c93c25.js +1 -0
  437. package/dist/standalone/.next/static/chunks/app/api/staging/route-151390fbd8c93c25.js +1 -0
  438. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-151390fbd8c93c25.js +1 -0
  439. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-151390fbd8c93c25.js +1 -0
  440. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-151390fbd8c93c25.js +1 -0
  441. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-151390fbd8c93c25.js +1 -0
  442. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-151390fbd8c93c25.js +1 -0
  443. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-151390fbd8c93c25.js +1 -0
  444. package/dist/standalone/.next/static/chunks/app/api/tasks/route-151390fbd8c93c25.js +1 -0
  445. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-151390fbd8c93c25.js +1 -0
  446. package/dist/standalone/.next/static/chunks/app/api/telegram/route-151390fbd8c93c25.js +1 -0
  447. package/dist/standalone/.next/static/chunks/app/api/timeline/route-151390fbd8c93c25.js +1 -0
  448. package/dist/standalone/.next/static/chunks/app/api/tmux/route-151390fbd8c93c25.js +1 -0
  449. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-151390fbd8c93c25.js +1 -0
  450. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-151390fbd8c93c25.js +1 -0
  451. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-151390fbd8c93c25.js +1 -0
  452. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-151390fbd8c93c25.js +1 -0
  453. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-151390fbd8c93c25.js +1 -0
  454. package/dist/standalone/.next/static/chunks/app/api/tts/route-151390fbd8c93c25.js +1 -0
  455. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-151390fbd8c93c25.js +1 -0
  456. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-151390fbd8c93c25.js +1 -0
  457. package/dist/standalone/.next/static/chunks/app/api/workflows/route-151390fbd8c93c25.js +1 -0
  458. package/dist/standalone/.next/static/chunks/app/page-a2e19d755e17b569.js +125 -0
  459. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-151390fbd8c93c25.js +1 -0
  460. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-151390fbd8c93c25.js +1 -0
  461. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-151390fbd8c93c25.js +1 -0
  462. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-151390fbd8c93c25.js +1 -0
  463. package/dist/standalone/.next/static/css/9b32c3f7f468cbcc.css +1 -0
  464. package/dist/standalone/.next/static/fQ2a5S10vvpyAqE0L_wUj/_buildManifest.js +1 -0
  465. package/dist/standalone/AGENTS.md +10 -0
  466. package/dist/standalone/package.json +1 -1
  467. package/dist/standalone/server.bun.js +1 -1
  468. package/dist/standalone/src/lib/viewerInstrumentation.ts +63 -5
  469. package/package.json +1 -1
  470. package/dist/standalone/.next/server/chunks/1888.js +0 -1
  471. package/dist/standalone/.next/server/chunks/4127.js +0 -1
  472. package/dist/standalone/.next/server/chunks/480.js +0 -126
  473. package/dist/standalone/.next/server/chunks/7361.js +0 -22
  474. package/dist/standalone/.next/static/chunks/6976-016b6947195a6ed2.js +0 -1
  475. package/dist/standalone/.next/static/chunks/app/_global-error/page-60a25d1c4cbf0128.js +0 -1
  476. package/dist/standalone/.next/static/chunks/app/api/access/route-60a25d1c4cbf0128.js +0 -1
  477. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-60a25d1c4cbf0128.js +0 -1
  478. package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-60a25d1c4cbf0128.js +0 -1
  479. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-60a25d1c4cbf0128.js +0 -1
  480. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-60a25d1c4cbf0128.js +0 -1
  481. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-60a25d1c4cbf0128.js +0 -1
  482. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-60a25d1c4cbf0128.js +0 -1
  483. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-60a25d1c4cbf0128.js +0 -1
  484. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-60a25d1c4cbf0128.js +0 -1
  485. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-60a25d1c4cbf0128.js +0 -1
  486. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-60a25d1c4cbf0128.js +0 -1
  487. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-60a25d1c4cbf0128.js +0 -1
  488. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-60a25d1c4cbf0128.js +0 -1
  489. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-60a25d1c4cbf0128.js +0 -1
  490. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-60a25d1c4cbf0128.js +0 -1
  491. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-60a25d1c4cbf0128.js +0 -1
  492. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-60a25d1c4cbf0128.js +0 -1
  493. package/dist/standalone/.next/static/chunks/app/api/accounts/route-60a25d1c4cbf0128.js +0 -1
  494. package/dist/standalone/.next/static/chunks/app/api/agent/route-60a25d1c4cbf0128.js +0 -1
  495. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-60a25d1c4cbf0128.js +0 -1
  496. package/dist/standalone/.next/static/chunks/app/api/answer/route-60a25d1c4cbf0128.js +0 -1
  497. package/dist/standalone/.next/static/chunks/app/api/artifact/route-60a25d1c4cbf0128.js +0 -1
  498. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-60a25d1c4cbf0128.js +0 -1
  499. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-60a25d1c4cbf0128.js +0 -1
  500. package/dist/standalone/.next/static/chunks/app/api/attention/route-60a25d1c4cbf0128.js +0 -1
  501. package/dist/standalone/.next/static/chunks/app/api/board/route-60a25d1c4cbf0128.js +0 -1
  502. package/dist/standalone/.next/static/chunks/app/api/bridge/route-60a25d1c4cbf0128.js +0 -1
  503. package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-60a25d1c4cbf0128.js +0 -1
  504. package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-60a25d1c4cbf0128.js +0 -1
  505. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-60a25d1c4cbf0128.js +0 -1
  506. package/dist/standalone/.next/static/chunks/app/api/conversations/route-60a25d1c4cbf0128.js +0 -1
  507. package/dist/standalone/.next/static/chunks/app/api/files/route-60a25d1c4cbf0128.js +0 -1
  508. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-60a25d1c4cbf0128.js +0 -1
  509. package/dist/standalone/.next/static/chunks/app/api/flows/route-60a25d1c4cbf0128.js +0 -1
  510. package/dist/standalone/.next/static/chunks/app/api/image/route-60a25d1c4cbf0128.js +0 -1
  511. package/dist/standalone/.next/static/chunks/app/api/inbox/route-60a25d1c4cbf0128.js +0 -1
  512. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-60a25d1c4cbf0128.js +0 -1
  513. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-60a25d1c4cbf0128.js +0 -1
  514. package/dist/standalone/.next/static/chunks/app/api/limits/route-60a25d1c4cbf0128.js +0 -1
  515. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-60a25d1c4cbf0128.js +0 -1
  516. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-60a25d1c4cbf0128.js +0 -1
  517. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-60a25d1c4cbf0128.js +0 -1
  518. package/dist/standalone/.next/static/chunks/app/api/log/route-60a25d1c4cbf0128.js +0 -1
  519. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-60a25d1c4cbf0128.js +0 -1
  520. package/dist/standalone/.next/static/chunks/app/api/logs/route-60a25d1c4cbf0128.js +0 -1
  521. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-60a25d1c4cbf0128.js +0 -1
  522. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-60a25d1c4cbf0128.js +0 -1
  523. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-60a25d1c4cbf0128.js +0 -1
  524. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-60a25d1c4cbf0128.js +0 -1
  525. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-60a25d1c4cbf0128.js +0 -1
  526. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-60a25d1c4cbf0128.js +0 -1
  527. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-60a25d1c4cbf0128.js +0 -1
  528. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-60a25d1c4cbf0128.js +0 -1
  529. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-60a25d1c4cbf0128.js +0 -1
  530. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-60a25d1c4cbf0128.js +0 -1
  531. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-60a25d1c4cbf0128.js +0 -1
  532. package/dist/standalone/.next/static/chunks/app/api/proc/route-60a25d1c4cbf0128.js +0 -1
  533. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-60a25d1c4cbf0128.js +0 -1
  534. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-60a25d1c4cbf0128.js +0 -1
  535. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-60a25d1c4cbf0128.js +0 -1
  536. package/dist/standalone/.next/static/chunks/app/api/push/route-60a25d1c4cbf0128.js +0 -1
  537. package/dist/standalone/.next/static/chunks/app/api/resources/route-60a25d1c4cbf0128.js +0 -1
  538. package/dist/standalone/.next/static/chunks/app/api/roles/route-60a25d1c4cbf0128.js +0 -1
  539. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-60a25d1c4cbf0128.js +0 -1
  540. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-60a25d1c4cbf0128.js +0 -1
  541. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-60a25d1c4cbf0128.js +0 -1
  542. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-60a25d1c4cbf0128.js +0 -1
  543. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-60a25d1c4cbf0128.js +0 -1
  544. package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-60a25d1c4cbf0128.js +0 -1
  545. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-60a25d1c4cbf0128.js +0 -1
  546. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-60a25d1c4cbf0128.js +0 -1
  547. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-60a25d1c4cbf0128.js +0 -1
  548. package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-60a25d1c4cbf0128.js +0 -1
  549. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-60a25d1c4cbf0128.js +0 -1
  550. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-60a25d1c4cbf0128.js +0 -1
  551. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-60a25d1c4cbf0128.js +0 -1
  552. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-60a25d1c4cbf0128.js +0 -1
  553. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-60a25d1c4cbf0128.js +0 -1
  554. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-60a25d1c4cbf0128.js +0 -1
  555. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-60a25d1c4cbf0128.js +0 -1
  556. package/dist/standalone/.next/static/chunks/app/api/session/route-60a25d1c4cbf0128.js +0 -1
  557. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-60a25d1c4cbf0128.js +0 -1
  558. package/dist/standalone/.next/static/chunks/app/api/session/title/route-60a25d1c4cbf0128.js +0 -1
  559. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-60a25d1c4cbf0128.js +0 -1
  560. package/dist/standalone/.next/static/chunks/app/api/spawn/route-60a25d1c4cbf0128.js +0 -1
  561. package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-60a25d1c4cbf0128.js +0 -1
  562. package/dist/standalone/.next/static/chunks/app/api/staging/route-60a25d1c4cbf0128.js +0 -1
  563. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-60a25d1c4cbf0128.js +0 -1
  564. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-60a25d1c4cbf0128.js +0 -1
  565. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-60a25d1c4cbf0128.js +0 -1
  566. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-60a25d1c4cbf0128.js +0 -1
  567. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-60a25d1c4cbf0128.js +0 -1
  568. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-60a25d1c4cbf0128.js +0 -1
  569. package/dist/standalone/.next/static/chunks/app/api/tasks/route-60a25d1c4cbf0128.js +0 -1
  570. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-60a25d1c4cbf0128.js +0 -1
  571. package/dist/standalone/.next/static/chunks/app/api/telegram/route-60a25d1c4cbf0128.js +0 -1
  572. package/dist/standalone/.next/static/chunks/app/api/timeline/route-60a25d1c4cbf0128.js +0 -1
  573. package/dist/standalone/.next/static/chunks/app/api/tmux/route-60a25d1c4cbf0128.js +0 -1
  574. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-60a25d1c4cbf0128.js +0 -1
  575. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-60a25d1c4cbf0128.js +0 -1
  576. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-60a25d1c4cbf0128.js +0 -1
  577. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-60a25d1c4cbf0128.js +0 -1
  578. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-60a25d1c4cbf0128.js +0 -1
  579. package/dist/standalone/.next/static/chunks/app/api/tts/route-60a25d1c4cbf0128.js +0 -1
  580. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-60a25d1c4cbf0128.js +0 -1
  581. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-60a25d1c4cbf0128.js +0 -1
  582. package/dist/standalone/.next/static/chunks/app/api/workflows/route-60a25d1c4cbf0128.js +0 -1
  583. package/dist/standalone/.next/static/chunks/app/page-16384e540b4c0a90.js +0 -125
  584. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-60a25d1c4cbf0128.js +0 -1
  585. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-60a25d1c4cbf0128.js +0 -1
  586. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-60a25d1c4cbf0128.js +0 -1
  587. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60a25d1c4cbf0128.js +0 -1
  588. package/dist/standalone/.next/static/css/496211a19557b7ee.css +0 -1
  589. package/dist/standalone/.next/static/e4qE_aCE0s0KQnnU6IWRw/_buildManifest.js +0 -1
  590. /package/dist/standalone/.next/static/{e4qE_aCE0s0KQnnU6IWRw → fQ2a5S10vvpyAqE0L_wUj}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=9517,exports.ids=[9517],exports.modules={81334:(a,b,c)=>{c.d(b,{Ck:()=>y,Du:()=>M,Ep:()=>H,Ew:()=>m,F1:()=>E,GJ:()=>I,HH:()=>K,N5:()=>L,Vq:()=>J,jK:()=>D,s4:()=>l,zJ:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(77598),i=c.n(h),j=c(25617),k=c(10781);class l extends Error{constructor(a){super("account history inventory blocked removal"),this.report=a,this.name="AccountHistoryInventoryBlockedError"}}function m(a){let b=g().resolve(a);try{return e().lstatSync(b),!0}catch(a){if("ENOENT"===a.code)return!1;throw new l({home:b,artifacts:[],error:{path:".",message:w(a)}})}}let n={claude:new Set(["projects","file-history","session-env","shell-snapshots","todos","debug","backups","paste-cache"]),codex:new Set(["sessions","archived_sessions","log","shell_snapshots"])},o={claude:new Set([".credentials.json",".claude.json"]),codex:new Set(["auth.json"])},p={claude:new Set(["skills","commands","agents"]),codex:new Set(["skills","prompts","config.toml","AGENTS.md","memories","rules",g().join("plugins","cache")])},q={claude:new Set(["cache","plugins"]),codex:new Set([".tmp","mcp-oauth",g().join("plugins","data")])},r=/^[a-z0-9][a-z0-9-]{0,31}$/;function s(a,b){let c=new Set;for(let d of Object.values((0,k.agentRegistry)().readOnlySnapshot().conversations)){if(d.engine!==a)continue;let e=d.generations.filter(a=>a.accountId===b);for(let a of e)c.add(g().resolve(a.path));if(0!==e.length)for(let a of[...d.continuityPaths,...d.abandonedContinuityPaths,...d.providerForkPaths,...d.migration?.pendingContinuityPaths??[],...d.migration?.providerReceipt?.continuityPaths??[],...d.migration?.providerReceipt?[d.migration.providerReceipt.path]:[]])c.add(g().resolve(a))}return c}function t(a,b){return a===b||a.startsWith(`${b}${g().sep}`)}function u(a,b){if("claude"===a&&t(b,g().join("plugins","data")))return!1;for(let c of q[a])if(t(b,c))return!0;return!1}function v(a,b,c,d,e){let f,h,i=(f=b.split(g().sep)[0],h=g().basename(b),n[a].has(f)||"history.jsonl"===f||h.endsWith(".jsonl")||"codex"===a&&/\.sqlite3?(?:-(?:shm|wal))?$/.test(h));return d.isSymbolicLink()?p[a].has(b)?{path:b,classification:"owned",history:!1}:i?{path:b,classification:"history",history:!0}:{path:b,classification:"unknown",history:!1}:d.isDirectory()?function(a,b){for(let c of n[a])if(t(b,c))return!0;return!1}(a,b)||u(a,b)||"codex"===a&&"plugins"===b?{path:b,classification:"owned",history:!1}:{path:b,classification:"unknown",history:!1}:d.isFile()&&e.has(g().resolve(c))?{path:b,classification:"owned",history:!0}:i?{path:b,classification:"history",history:!0}:d.isFile()&&(o[a].has(b)||u(a,b))?{path:b,classification:"owned",history:!1}:{path:b,classification:"unknown",history:!1}}function w(a){return a instanceof Error?a.message:"filesystem inventory failed"}function x(){if("linux"!==process.platform)return new Set;let a=new Set;for(let b of e().readFileSync("/proc/self/mountinfo","utf8").split("\n")){if(!b)continue;let c=b.split(" ")[4];if(!c)throw Error("filesystem mount inventory is malformed");a.add(g().resolve(c.replace(/\\([0-7]{3})/g,(a,b)=>String.fromCharCode(Number.parseInt(b,8)))))}return a}function y(a,b,c){let d=g().resolve(c),f=[],h=".";try{let c=e().lstatSync(d);if(!c.isDirectory()||c.isSymbolicLink())throw Error("managed account home is not a safe directory");let i=process.getuid?.()??c.uid;if(c.uid!==i||(18&c.mode)!=0)throw Error("managed account home has unsafe ownership or permissions");let j=x();if(j.has(d))throw Error("managed account home is an external mount");let k=s(a,b),l=(b,d)=>{for(let m of(h=d||".",e().readdirSync(b,{withFileTypes:!0}))){let n=g().join(b,m.name),o=d?g().join(d,m.name):m.name;h=o;let p=e().lstatSync(n);if(j.has(g().resolve(n)))throw Error(`history inventory reached an external mount at ${o}`);if(p.dev!==c.dev)throw Error(`history inventory crossed a filesystem boundary at ${o}`);if(p.uid!==i||!p.isSymbolicLink()&&(18&p.mode)!=0)throw Error(`history inventory found unsafe ownership or permissions at ${o}`);if(f.push(v(a,o,n,p,k)),!p.isSymbolicLink()&&p.isDirectory()){l(n,o);continue}}};l(d,"")}catch(a){throw new l({home:d,artifacts:f,error:{path:h,message:w(a)}})}let i={home:d,artifacts:f.sort((a,b)=>a.path.localeCompare(b.path))};if(i.artifacts.some(a=>"owned"!==a.classification))throw new l(i);return i}function z(a,b,c){return new l({...a,error:{path:b,message:c}})}function A(a,b,c){let d=g().resolve(c),f=e().lstatSync(d),h=process.getuid?.()??f.uid;if(!f.isDirectory()||f.isSymbolicLink()||f.uid!==h||(18&f.mode)!=0)throw Error("managed account home is not a safe directory");let i=x();if(i.has(d))throw Error("managed account home is an external mount");return{root:d,stat:f,uid:h,mounts:i,ownedPaths:s(a,b)}}function B(a,b,c){return!a.mounts.has(g().resolve(c))&&b.dev===a.stat.dev&&b.uid===a.uid&&(b.isSymbolicLink()||(18&b.mode)==0)}function C(a,b,c,d,f,h,i,j){let k;if("linux"!==process.platform)return{complete:!1,changed:!1};try{k=e().openSync(f,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW)}catch(d){throw z(y(a,b,c),h||".",w(d))}try{let f=e().fstatSync(k),l=h?g().join(d.root,h):d.root;if(f.dev!==i.dev||f.ino!==i.ino||!B(d,f,l)){let d=y(a,b,c);throw z(d,h||".","account-home directory identity changed during removal")}let m=`/proc/self/fd/${k}`,n=!0,o=!1;for(let f of e().readdirSync(m,{withFileTypes:!0})){let i;if(!h&&j===f.name)continue;let k=g().join(m,f.name),l=h?g().join(h,f.name):f.name;try{i=e().lstatSync(k)}catch(e){let d=y(a,b,c);throw z(d,l,w(e))}if(!B(d,i,g().join(d.root,l))){let d=y(a,b,c);throw z(d,l,"account-home entry failed removal safety checks")}let p=v(a,l,g().join(d.root,l),i,d.ownedPaths);if("owned"!==p.classification||p.history){let d=y(a,b,c);throw z(d,l,"account-home entry is outside deletion ownership")}if(i.isSymbolicLink()){try{e().rmSync(k,{force:!0}),o=!0}catch{n=!1}continue}if(i.isDirectory()){let f=C(a,b,c,d,k,l,i,j);f.complete||(n=!1),f.changed&&(o=!0);try{e().rmdirSync(k),o=!0}catch(e){let d=y(a,b,c);if(d.artifacts.some(a=>a.history&&(a.path===l||a.path.startsWith(`${l}${g().sep}`))))throw z(d,l,"history appeared during account-home removal");"ENOENT"!==e.code&&(n=!1)}continue}try{e().rmSync(k,{force:!0}),o=!0}catch{n=!1}}return{complete:n,changed:o}}finally{e().closeSync(k)}}function D(a,b,c){let d,f=y(a,b,c);if(f.artifacts.some(a=>a.history))throw new l(f);if("linux"!==process.platform)return!1;try{d=A(a,b,c)}catch(a){throw z(f,".",w(a))}let g=C(a,b,c,d,d.root,"",d.stat,null);try{e().rmdirSync(d.root)}catch(d){if("ENOENT"!==d.code){let d=y(a,b,c);if(d.artifacts.some(a=>a.history))throw z(d,".","history appeared during account-home removal");return!1}}try{return g.complete&&!m(d.root)}catch{return!1}}function E(a,b,c,d){let e,f=y(a,b,c);try{e=A(a,b,c)}catch(a){throw z(f,".",w(a))}let g=C(a,b,c,e,e.root,"",e.stat,d),h=y(a,b,c),i=f.artifacts.filter(a=>a.history).map(a=>`${a.path}:${a.classification}`).sort(),j=h.artifacts.filter(a=>a.history).map(a=>`${a.path}:${a.classification}`).sort();if(i.length!==j.length||i.some((a,b)=>a!==j[b]))throw z(h,d,"history changed during account-home cleanup");return g}function F(a,b){let c=a.artifacts.filter(a=>a.history).map(a=>`${a.path}:${a.classification}`).sort(),d=b.artifacts.filter(a=>a.history).map(a=>`${a.path}:${a.classification}`).sort();return c.length===d.length&&c.every((a,b)=>a===d[b])}function G(a){try{let b=`/proc/self/fd/${a.descriptor}`,c=`/proc/self/fd/${a.stagingDescriptor}`;for(let a of e().readdirSync(c).reverse()){let d=g().join(c,a);try{e().lstatSync(d)}catch(a){if("ENOENT"===a.code)continue;throw a}let f=g().join(b,a);try{e().lstatSync(f),f=g().join(b,`.${a}.recovered-${i().randomUUID()}`)}catch(a){if("ENOENT"!==a.code)throw a}e().renameSync(d,f)}e().rmdirSync(a.stagingHome)}finally{e().closeSync(a.descriptor),e().closeSync(a.stagingDescriptor)}}function H(a){e().closeSync(a.descriptor),e().closeSync(a.stagingDescriptor)}function I(a,b,c){let d,f;try{d=e().lstatSync(c.home),f=e().fstatSync(c.descriptor)}catch(a){throw z(c.history,".",w(a))}if(d.dev!==f.dev||d.ino!==f.ino)throw z(c.history,".","account-home identity changed during account-registry commit");try{d=e().lstatSync(c.stagingHome),f=e().fstatSync(c.stagingDescriptor)}catch(a){throw z(c.history,".",w(a))}if(d.dev!==f.dev||d.ino!==f.ino)throw z(c.history,".","staging-home identity changed during account-registry commit");let g=y(a,b,c.home);if(!F(c.history,g))throw z(g,".","history changed during account-registry commit");let h=y(a,b,c.stagingHome);if(h.artifacts.some(a=>a.history))throw z(h,".","history appeared in staged account data during account-registry commit")}function J(a,b,c,d){let f,h,j=y(a,b,c);try{f=A(a,b,c),h=g().join(g().dirname(f.root),`.${g().basename(f.root)}.removal-${process.pid}-${i().randomUUID()}`),e().mkdirSync(h,{mode:448})}catch(a){throw z(j,".",w(a))}let k=null,m=null,n=null,o=!1;try{if("linux"!==process.platform)throw Error("stable account-home staging is unavailable on this platform");m=e().openSync(f.root,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW),n=e().openSync(h,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW);let c=e().fstatSync(m);if(c.dev!==f.stat.dev||c.ino!==f.stat.ino||!B(f,c,f.root))throw Error("account-home identity changed before staging");let i=e().fstatSync(n),l=e().lstatSync(h);if(i.dev!==l.dev||i.ino!==l.ino)throw Error("staging-home identity changed before staging");k={home:f.root,stagingHome:h,moved:[],descriptor:m,stagingDescriptor:n,history:j};let p=`/proc/self/fd/${m}`,q=`/proc/self/fd/${n}`;for(let a of e().readdirSync(p,{withFileTypes:!0}))d!==a.name&&(e().renameSync(g().join(p,a.name),g().join(q,a.name)),k.moved.push(a.name));let r=y(a,b,f.root);if(!F(j,r))throw z(r,d??".","history changed while account-home cleanup was staged");return o=!0,k}catch(a){try{if(k)try{G(k)}finally{m=null,n=null}else e().rmdirSync(h)}catch(a){throw Error("account-home staging rollback failed",{cause:a})}if(a instanceof l)throw a;throw z(j,".",w(a))}finally{o||null===m||e().closeSync(m),o||null===n||e().closeSync(n)}}function K(a,b,c){let d,f;try{d=e().lstatSync(c.stagingHome),f=e().fstatSync(c.stagingDescriptor)}catch(a){throw z(c.history,".",w(a))}if(d.dev!==f.dev||d.ino!==f.ino)throw z(c.history,".","staging-home identity changed before discard");return D(a,b,c.stagingHome)}function L(a,b,c){let d,f,h,i=[],j=[];if(!r.test(b))return{removed:i,unresolved:c.map(a=>`${b}${a}`)};let k=g().resolve(a);try{d=e().lstatSync(k);let a=process.getuid?.()??d.uid;if(!d.isDirectory()||d.isSymbolicLink()||d.uid!==a||(18&d.mode)!=0)throw Error("unsafe account root")}catch(a){if("ENOENT"===a.code)return{removed:i,unresolved:j};return{removed:i,unresolved:c.map(a=>`${b}${a}`)}}let l=process.getuid?.()??d.uid;try{f=x()}catch{return{removed:i,unresolved:c.map(a=>`${b}${a}`)}}if("linux"!==process.platform){for(let a of c){let c=`${b}${a}`;try{e().lstatSync(g().join(k,c)),j.push(c)}catch(a){"ENOENT"!==a.code&&j.push(c)}}return{removed:i,unresolved:j.sort()}}try{h=e().openSync(k,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW);let a=e().fstatSync(h);if(a.dev!==d.dev||a.ino!==d.ino)throw Error("account root identity changed")}catch{return{removed:i,unresolved:c.map(a=>`${b}${a}`)}}try{let a=`/proc/self/fd/${h}`;for(let h of c){let c=`${b}${h}`,m=g().join(a,c),n=g().join(k,c);try{if(e().lstatSync(m),!function a(b,c,d,f,h){let i,j=e().lstatSync(b);if(h.has(g().resolve(c))||j.isSymbolicLink()||j.dev!==d.dev||j.uid!==f||(18&j.mode)!=0)return!1;if(!j.isDirectory())return j.isFile();if("linux"!==process.platform)return!1;try{i=e().openSync(b,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW)}catch{return!1}try{let b=e().fstatSync(i);if(b.dev!==j.dev||b.ino!==j.ino)return!1;let k=`/proc/self/fd/${i}`;for(let b of e().readdirSync(k,{withFileTypes:!0}))if(!a(g().join(k,b.name),g().join(c,b.name),d,f,h))return!1}finally{e().closeSync(i)}return!0}(m,n,d,l,f)){j.push(c);continue}e().rmSync(m,{recursive:!0,force:!1});try{e().lstatSync(m),j.push(c)}catch(a){"ENOENT"===a.code?i.push(c):j.push(c)}}catch(a){if("ENOENT"===a.code){try{e().lstatSync(m),j.push(c)}catch(a){"ENOENT"!==a.code&&j.push(c)}continue}j.push(c)}}}finally{e().closeSync(h)}return{removed:i.sort(),unresolved:j.sort()}}function M(a,b,c={}){let d=(0,k.agentRegistry)().readOnlySnapshot();return[...(0,j.fI)(d,a,b,c)?["live_sessions"]:[],...(0,j.Vm)(d,a,b,c).length>0?["current_conversations"]:[]]}},92806:(a,b,c)=>{c.d(b,{Cy:()=>d,Fd:()=>e});let d="WAKATIME_API_KEY";function e(a){let b={};for(let c of Object.keys(a))c!==d&&(b[c]=a[c]);return b}}};
1
+ "use strict";exports.id=9517,exports.ids=[9517],exports.modules={81334:(a,b,c)=>{c.d(b,{Ck:()=>w,Du:()=>E,F1:()=>C,N5:()=>D,QQ:()=>G,Qo:()=>F,XU:()=>U,Zi:()=>M,gz:()=>V,jK:()=>B,jZ:()=>W,nH:()=>S,ne:()=>R,nr:()=>L,s4:()=>k,yK:()=>T});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(25617),j=c(10781);class k extends Error{constructor(a){super("account history inventory blocked removal"),this.report=a,this.name="AccountHistoryInventoryBlockedError"}}let l={claude:new Set(["projects","file-history","session-env","shell-snapshots","todos","debug","backups","paste-cache"]),codex:new Set(["sessions","archived_sessions","log","shell_snapshots"])},m={claude:new Set([".credentials.json",".claude.json"]),codex:new Set(["auth.json"])},n={claude:new Set(["skills","commands","agents"]),codex:new Set(["skills","prompts","config.toml","AGENTS.md","memories","rules",g().join("plugins","cache")])},o={claude:new Set(["cache","plugins"]),codex:new Set([".tmp","mcp-oauth",g().join("plugins","data")])},p=/^[a-z0-9][a-z0-9-]{0,31}$/;function q(a,b){let c=new Set;for(let d of Object.values((0,j.agentRegistry)().readOnlySnapshot().conversations)){if(d.engine!==a)continue;let e=d.generations.filter(a=>a.accountId===b);for(let a of e)c.add(g().resolve(a.path));if(0!==e.length)for(let a of[...d.continuityPaths,...d.abandonedContinuityPaths,...d.providerForkPaths,...d.migration?.pendingContinuityPaths??[],...d.migration?.providerReceipt?.continuityPaths??[],...d.migration?.providerReceipt?[d.migration.providerReceipt.path]:[]])c.add(g().resolve(a))}return c}function r(a,b){return a===b||a.startsWith(`${b}${g().sep}`)}function s(a,b){if("claude"===a&&r(b,g().join("plugins","data")))return!1;for(let c of o[a])if(r(b,c))return!0;return!1}function t(a,b,c,d,e){let f,h,i=(f=b.split(g().sep)[0],h=g().basename(b),l[a].has(f)||"history.jsonl"===f||h.endsWith(".jsonl")||"codex"===a&&/\.sqlite3?(?:-(?:shm|wal))?$/.test(h));return d.isSymbolicLink()?n[a].has(b)?{path:b,classification:"owned",history:!1}:i?{path:b,classification:"history",history:!0}:{path:b,classification:"unknown",history:!1}:d.isDirectory()?function(a,b){for(let c of l[a])if(r(b,c))return!0;return!1}(a,b)||s(a,b)||"codex"===a&&"plugins"===b?{path:b,classification:"owned",history:!1}:{path:b,classification:"unknown",history:!1}:d.isFile()&&e.has(g().resolve(c))?{path:b,classification:"owned",history:!0}:i?{path:b,classification:"history",history:!0}:d.isFile()&&(m[a].has(b)||s(a,b))?{path:b,classification:"owned",history:!1}:{path:b,classification:"unknown",history:!1}}function u(a){return a instanceof Error?a.message:"filesystem inventory failed"}function v(){if("linux"!==process.platform)return new Set;let a=new Set;for(let b of e().readFileSync("/proc/self/mountinfo","utf8").split("\n")){if(!b)continue;let c=b.split(" ")[4];if(!c)throw Error("filesystem mount inventory is malformed");a.add(g().resolve(c.replace(/\\([0-7]{3})/g,(a,b)=>String.fromCharCode(Number.parseInt(b,8)))))}return a}function w(a,b,c){let d=g().resolve(c),f=[],h=".";try{let c=e().lstatSync(d);if(!c.isDirectory()||c.isSymbolicLink())throw Error("managed account home is not a safe directory");let i=process.getuid?.()??c.uid;if(c.uid!==i||(18&c.mode)!=0)throw Error("managed account home has unsafe ownership or permissions");let j=v();if(j.has(d))throw Error("managed account home is an external mount");let k=q(a,b),l=(b,d)=>{for(let m of(h=d||".",e().readdirSync(b,{withFileTypes:!0}))){let n=g().join(b,m.name),o=d?g().join(d,m.name):m.name;h=o;let p=e().lstatSync(n);if(j.has(g().resolve(n)))throw Error(`history inventory reached an external mount at ${o}`);if(p.dev!==c.dev)throw Error(`history inventory crossed a filesystem boundary at ${o}`);if(p.uid!==i||!p.isSymbolicLink()&&(18&p.mode)!=0)throw Error(`history inventory found unsafe ownership or permissions at ${o}`);if(f.push(t(a,o,n,p,k)),!p.isSymbolicLink()&&p.isDirectory()){l(n,o);continue}}};l(d,"")}catch(a){throw new k({home:d,artifacts:f,error:{path:h,message:u(a)}})}let i={home:d,artifacts:f.sort((a,b)=>a.path.localeCompare(b.path))};if(i.artifacts.some(a=>"owned"!==a.classification))throw new k(i);return i}function x(a,b,c){return new k({...a,error:{path:b,message:c}})}function y(a,b,c){let d=g().resolve(c),f=e().lstatSync(d),h=process.getuid?.()??f.uid;if(!f.isDirectory()||f.isSymbolicLink()||f.uid!==h||(18&f.mode)!=0)throw Error("managed account home is not a safe directory");let i=v();if(i.has(d))throw Error("managed account home is an external mount");return{root:d,stat:f,uid:h,mounts:i,ownedPaths:q(a,b)}}function z(a,b,c){return!a.mounts.has(g().resolve(c))&&b.dev===a.stat.dev&&b.uid===a.uid&&(b.isSymbolicLink()||(18&b.mode)==0)}function A(a,b,c,d,f,h,i,j){let k;if("linux"!==process.platform)return{complete:!1,changed:!1};try{k=e().openSync(f,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW)}catch(d){throw x(w(a,b,c),h||".",u(d))}try{let f=e().fstatSync(k),l=h?g().join(d.root,h):d.root;if(f.dev!==i.dev||f.ino!==i.ino||!z(d,f,l)){let d=w(a,b,c);throw x(d,h||".","account-home directory identity changed during removal")}let m=`/proc/self/fd/${k}`,n=!0,o=!1;for(let f of e().readdirSync(m,{withFileTypes:!0})){let i;if(!h&&j===f.name)continue;let k=g().join(m,f.name),l=h?g().join(h,f.name):f.name;try{i=e().lstatSync(k)}catch(e){let d=w(a,b,c);throw x(d,l,u(e))}if(!z(d,i,g().join(d.root,l))){let d=w(a,b,c);throw x(d,l,"account-home entry failed removal safety checks")}let p=t(a,l,g().join(d.root,l),i,d.ownedPaths);if("owned"!==p.classification||p.history){let d=w(a,b,c);throw x(d,l,"account-home entry is outside deletion ownership")}if(i.isSymbolicLink()){try{e().rmSync(k,{force:!0}),o=!0}catch{n=!1}continue}if(i.isDirectory()){let f=A(a,b,c,d,k,l,i,j);f.complete||(n=!1),f.changed&&(o=!0);try{e().rmdirSync(k),o=!0}catch(e){let d=w(a,b,c);if(d.artifacts.some(a=>a.history&&(a.path===l||a.path.startsWith(`${l}${g().sep}`))))throw x(d,l,"history appeared during account-home removal");"ENOENT"!==e.code&&(n=!1)}continue}try{e().rmSync(k,{force:!0}),o=!0}catch{n=!1}}return{complete:n,changed:o}}finally{e().closeSync(k)}}function B(a,b,c){let d,f=w(a,b,c);if(f.artifacts.some(a=>a.history))throw new k(f);if("linux"!==process.platform)return!1;try{d=y(a,b,c)}catch(a){throw x(f,".",u(a))}let h=A(a,b,c,d,d.root,"",d.stat,null);try{e().rmdirSync(d.root)}catch(d){if("ENOENT"!==d.code){let d=w(a,b,c);if(d.artifacts.some(a=>a.history))throw x(d,".","history appeared during account-home removal");return!1}}try{return h.complete&&!function(a){let b=g().resolve(a);try{return e().lstatSync(b),!0}catch(a){if("ENOENT"===a.code)return!1;throw new k({home:b,artifacts:[],error:{path:".",message:u(a)}})}}(d.root)}catch{return!1}}function C(a,b,c,d){let e,f=w(a,b,c);try{e=y(a,b,c)}catch(a){throw x(f,".",u(a))}let g=A(a,b,c,e,e.root,"",e.stat,d),h=w(a,b,c),i=f.artifacts.filter(a=>a.history).map(a=>`${a.path}:${a.classification}`).sort(),j=h.artifacts.filter(a=>a.history).map(a=>`${a.path}:${a.classification}`).sort();if(i.length!==j.length||i.some((a,b)=>a!==j[b]))throw x(h,d,"history changed during account-home cleanup");return g}function D(a,b,c){let d,f,h,i=[],j=[];if(!p.test(b))return{removed:i,unresolved:c.map(a=>`${b}${a}`)};let k=g().resolve(a);try{d=e().lstatSync(k);let a=process.getuid?.()??d.uid;if(!d.isDirectory()||d.isSymbolicLink()||d.uid!==a||(18&d.mode)!=0)throw Error("unsafe account root")}catch(a){if("ENOENT"===a.code)return{removed:i,unresolved:j};return{removed:i,unresolved:c.map(a=>`${b}${a}`)}}let l=process.getuid?.()??d.uid;try{f=v()}catch{return{removed:i,unresolved:c.map(a=>`${b}${a}`)}}if("linux"!==process.platform){for(let a of c){let c=`${b}${a}`;try{e().lstatSync(g().join(k,c)),j.push(c)}catch(a){"ENOENT"!==a.code&&j.push(c)}}return{removed:i,unresolved:j.sort()}}try{h=e().openSync(k,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW);let a=e().fstatSync(h);if(a.dev!==d.dev||a.ino!==d.ino)throw Error("account root identity changed")}catch{return{removed:i,unresolved:c.map(a=>`${b}${a}`)}}try{let a=`/proc/self/fd/${h}`;for(let h of c){let c=`${b}${h}`,m=g().join(a,c),n=g().join(k,c);try{if(e().lstatSync(m),!function a(b,c,d,f,h){let i,j=e().lstatSync(b);if(h.has(g().resolve(c))||j.isSymbolicLink()||j.dev!==d.dev||j.uid!==f||(18&j.mode)!=0)return!1;if(!j.isDirectory())return j.isFile();if("linux"!==process.platform)return!1;try{i=e().openSync(b,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW)}catch{return!1}try{let b=e().fstatSync(i);if(b.dev!==j.dev||b.ino!==j.ino)return!1;let k=`/proc/self/fd/${i}`;for(let b of e().readdirSync(k,{withFileTypes:!0}))if(!a(g().join(k,b.name),g().join(c,b.name),d,f,h))return!1}finally{e().closeSync(i)}return!0}(m,n,d,l,f)){j.push(c);continue}e().rmSync(m,{recursive:!0,force:!1});try{e().lstatSync(m),j.push(c)}catch(a){"ENOENT"===a.code?i.push(c):j.push(c)}}catch(a){if("ENOENT"===a.code){try{e().lstatSync(m),j.push(c)}catch(a){"ENOENT"!==a.code&&j.push(c)}continue}j.push(c)}}}finally{e().closeSync(h)}return{removed:i.sort(),unresolved:j.sort()}}function E(a,b,c={}){let d=(0,j.agentRegistry)().readOnlySnapshot(),e=(0,i.Q$)(d,a,b,c);return[...e?[e]:[],...(0,i.Vm)(d,a,b,c).length>0?["current_conversations"]:[]]}class F extends Error{constructor(a,b){super(b),this.archive=a,this.name="AccountArchiveUnavailableError"}}class G extends Error{constructor(a){super("account has active sessions or conversations"),this.blockers=a,this.name="AccountRemovalBlockedError"}}let H={claude:[".credentials.json"],codex:["auth.json"]},I={claude:[...n.claude,"projects"],codex:[...n.codex]};function J(a){}let K=globalThis.__llvAccountRemovalsInFlight??=new Set;function L(a,b){return K.has(`${a}:${b}`)}function M(a,b){return g().join(g().dirname((0,h.Pn)()),"shared",a,"retired",b)}function N(a){try{return e().lstatSync(a)}catch(a){if("ENOENT"===a.code)return null;throw a}}function O(a){let b=e().openSync(a,e().constants.O_RDONLY|e().constants.O_DIRECTORY|e().constants.O_NOFOLLOW);if(!e().fstatSync(b).isDirectory())throw e().closeSync(b),Error("not a directory");return b}function P(a,b,c){let d=b.split(g().sep),f=[];try{for(let b of(f.push(O(a)),d.slice(0,-1))){let a=g().join(`/proc/self/fd/${f.at(-1)}`,b);try{f.push(O(a))}catch(b){let a=b.code;return"ENOENT"===a||"ENOTDIR"===a||"ELOOP"===a}}let b=g().join(`/proc/self/fd/${f.at(-1)}`,d.at(-1)),h=N(b);if(!h||!c(h))return!0;try{e().unlinkSync(b)}catch{return!1}return null===N(b)}catch{return!1}finally{for(let a of f.reverse())e().closeSync(a)}}function Q(a,b){let c,d,f,h=function(a,b){if(!N(b))return!0;if("linux"!==process.platform)return!1;let c=!0;for(let d of H[a])P(b,d,a=>a.isFile()||a.isSymbolicLink())||(c=!1);for(let d of I[a])P(b,d,a=>a.isSymbolicLink())||(c=!1);return c}(a,b),i=(c=0,d=0,f=a=>{let b;try{b=e().readdirSync(a,{withFileTypes:!0})}catch{return}for(let e of b){let b=g().join(a,e.name),h=N(b);h&&(h.isDirectory()?f(b):h.isFile()&&(c+=1,d+=h.size))}},N(b)?.isDirectory()&&f(b),{files:c,bytes:d});return!function a(b){let c;try{c=e().readdirSync(b,{withFileTypes:!0})}catch{return}for(let d of c){let c=g().join(b,d.name);N(c)?.isDirectory()&&a(c)}try{e().rmdirSync(b)}catch{}}(b),{complete:h,...i}}function R(a){let b,{engine:c,accountId:d}=a,f=g().resolve(a.home),h=M(c,d),i=E(c,d);if(i.length>0)throw new G(i);try{b=N(f)}catch{throw a.unsafeHome()}if(b){let c;if(!a.homeIsSafe())throw a.unsafeHome();try{c=v()}catch{throw a.unsafeHome()}if(c.has(f))throw a.unsafeHome();if(N(h))throw new F(h,"archive destination already exists");if(e().statSync(function(a){let b=g().resolve(a);for(;;){if(N(b))return b;let a=g().dirname(b);if(a===b)return b;b=a}}(g().dirname(h))).dev!==b.dev)throw new F(h,"archive is on another filesystem than the account home")}let k=b?a.rewrites(f,h):[],l=`${c}:${d}`;K.add(l);try{let i;a.registry.journal("archiving");let l=()=>{b&&e().renameSync(h,f)};if(b)try{e().mkdirSync(g().dirname(h),{recursive:!0,mode:448}),e().renameSync(f,h)}catch(b){if(a.registry.journal(null),"EXDEV"===b.code)throw new F(h,"archive is on another filesystem than the account home");throw b}try{a.registry.journal("retiring",k)}catch(b){l();try{a.registry.journal(null)}catch{}throw b}let m=(0,j.agentRegistry)(),n=m.readOnlySnapshot();try{i=m.retireAccount(c,d,"default",{},{rewrite:k})}catch(b){if(l(),a.registry.journal(null),b instanceof Error&&"account has live sessions"===b.message)throw new G(["live_sessions"]);if(b instanceof Error&&"account has current conversations"===b.message)throw new G(["current_conversations"]);throw b}let o=m.readOnlySnapshot();try{a.registry.commitRetired()}catch(b){m.restoreSnapshot(o,n),l();try{a.registry.restore()}catch{}throw b}let p=b?Q(c,h):{complete:!0,files:0,bytes:0},q=!p.complete;if(!q)try{a.registry.journal(null)}catch{q=!0}return{archive:b?h:null,files:p.files,bytes:p.bytes,...i,cleanupPending:q}}finally{K.delete(l)}}function S(a){let b=g().resolve(a.home),c=M(a.engine,a.accountId),d=()=>Q(a.engine,c).complete?(a.clearJournal(),"retired"):null;if("scrubbing"===a.entry.phase)return d();let f=null!==N(b),h=null!==N(c);if(f&&h)return null;if("retiring"===a.entry.phase){if(f)return a.clearJournal(),"restored";if(!a.listed)return d();try{(0,j.agentRegistry)().retireAccount(a.engine,a.accountId,"default",{},{rewrite:a.entry.rewrites??[]})}catch{return null}return J("registry-retired"),a.commitRetired(),J("accounts-committed"),d()}if(!f&&h){if(!a.listed)return null;e().renameSync(c,b),(0,j.agentRegistry)().rewriteAccountPaths(a.engine,[{from:c,to:b}])}return a.clearJournal(),"restored"}function T(a,b){if(void 0===a)return[];if(!Array.isArray(a))return null;let c=[];for(let d of a){let a,e=d;if(!e||"string"!=typeof e.id||!b(e.id)||"archiving"!==e.phase&&"retiring"!==e.phase&&"scrubbing"!==e.phase||"number"!=typeof e.startedAt||c.some(a=>a.id===e.id))return null;if(void 0!==e.rewrites){if(!Array.isArray(e.rewrites))return null;for(let b of(a=[],e.rewrites)){let{from:c,to:d}=b??{};if("string"!=typeof c||"string"!=typeof d||!g().isAbsolute(c)||!g().isAbsolute(d))return null;a.push({from:c,to:d})}}c.push({id:e.id,phase:e.phase,startedAt:e.startedAt,...a?{rewrites:a}:{}})}return c}function U(a,b,c,d){let e=a.filter(a=>a.id!==b);if(!c)return e;let f=a.find(a=>a.id===b)?.startedAt??Date.now();return[...e,{id:b,phase:c,startedAt:f,...d?{rewrites:d.map(({from:a,to:b})=>({from:a,to:b}))}:{}}]}function V(a,b){return{removed:{id:a},cleanupPending:b.cleanupPending,moved:{archive:b.archive,files:b.files,bytes:b.bytes},conversationsRewritten:b.conversationsRewritten,pinsCleared:b.pinsCleared,deliveriesDropped:b.deliveriesDropped,migrationsSettled:b.migrationsSettled}}function W(a){let b=a?.code;return"string"==typeof b?{errno:b}:{}}},92806:(a,b,c)=>{c.d(b,{Cy:()=>d,Fd:()=>e});let d="WAKATIME_API_KEY";function e(a){let b={};for(let c of Object.keys(a))c!==d&&(b[c]=a[c]);return b}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=9611,exports.ids=[9611],exports.modules={69611:(a,b,c)=>{c.r(b),c.d(b,{UNRESOLVED_PROJECT:()=>l,UNRESOLVED_PROJECT_NAME:()=>m,directoryProjectId:()=>q,displayNameFromProjectIdentity:()=>r,isCanonicalProjectId:()=>n,isRepositoryProjectId:()=>o,localRepositoryProjectId:()=>y,projectIdentityFromDirectory:()=>p,projectIdentityFromRemote:()=>x,projectIdentityFromRepositoryRoot:()=>A,repositoryRootForPath:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){return/^repo-[0-9a-f]{32}$/.test(a)}function p(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c;return{project:q(b),displayName:d}}function q(a){return`dir-${e().createHash("sha256").update(`dir:${a}`).digest("hex").slice(0,32)}`}function r(a){return a===l?m:a}function s(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function t(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return s(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return s(f)?f:null}catch{return null}}function u(a){let b=k().resolve(a);for(;;){if(t(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function v(a,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}`}}function w(a){let b=a.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!b)return null;let c=e().createHash("sha256").update(a).digest("hex").slice(0,32);return{project:`repo-${c}`,displayName:b,canonicalRemote:a}}function x(a,b){let c=a.trim();if(!c)return null;let d=v(c,b);return d?w(d):null}function y(a){return w(`local:${z(a)}`)?.project??null}function z(a){try{return g().realpathSync.native(a)}catch{return k().resolve(a)}}function A(a){let b,c=t(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),e=d?v(d,a):`local:${z(a)}`;return e?w(e):null}}};
@@ -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. ${i}`,safetyFences:["Viewer control uses the Viewer MCP tools 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.c7,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. A fixable defect is a fail verdict however partial your confidence in the call is, and needs_decision is for a choice only a human can make: a PR that calls a premise unverified, assumed or synthetic is one, never a pass. No copy-paste code unless absolutely necessary. ${g} ${h} ${f} ${i}`,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.c7,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. ${h} ${i}`,safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.c7,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. ${g} ${h} ${i}`,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. ${g} ${h} ${f} ${i}`,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. ${i}`,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.c7,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. ${i}`,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. ${i}`,safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]},58152:(a,b,c)=>{c.d(b,{BL:()=>k,ck:()=>g,ve:()=>j});let d=["low","medium","high","xhigh","max"],e=["low","medium","high","xhigh"],f=["minimal","low","medium","high","xhigh","max","ultra"];function g(a){return f.includes(a)}let h=[[/^gpt-6-astra\b/,["low","medium","high","xhigh","max","ultra"]],[/^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;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 e}function k(a,b){let c="string"==typeof b.effort?b.effort.trim():"",d=j(a,"string"==typeof b.model?b.model:null);return c&&!d.includes(c)?{effort:null,fast:null,error:`effort for ${a} must be one of: ${d.join(", ")}`}:{effort:c||null,fast:"codex"===a&&"boolean"==typeof b.fast?b.fast:null}}},89822:(a,b,c)=>{c.d(b,{le:()=>l,gP:()=>k,pQ:()=>p,e3:()=>q});var d=c(73024),e=c.n(d);c(76760);var f=c(91724),g=c(58152),h=c(4837),i=c(18797);let j=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],k=1,l=12e3;class m extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let n=()=>(0,f.BQ)("role-presets.json");function o(a){return i.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold}})}function p(){return o(function(){let a,b;try{a=e().readFileSync(n(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:k,overrides:{}};throw new m(`could not read role override registry: ${n()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new m("role override registry contains malformed JSON",{cause:a})}if(b.schemaVersion!==k)throw new m(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new m("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>l))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};if(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-"))return!1;let d=(0,g.ve)(c.engine,c.model);if(!d.includes(c.effort))throw new m(`invalid role override: ${a}; effort for ${c.engine}/${c.model} must be one of: ${d.join(", ")}`);return!0}(a,d))throw new m(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:k,overrides:c}}().overrides)}function q(){try{return p()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),o({})}}}};
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. ${i}`,safetyFences:["Viewer control uses the Viewer MCP tools 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.c7,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. A fixable defect is a fail verdict however partial your confidence in the call is, and needs_decision is for a choice only a human can make: a PR that calls a premise unverified, assumed or synthetic is one, never a pass. No copy-paste code unless absolutely necessary. ${g} ${h} ${f} ${i}`,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.c7,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. ${h} ${i}`,safetyFences:e,capabilities:["read-only"]},{id:"builder",name:"Builder",description:"Writes product code for a scoped directive.",config:{engine:"codex",model:d.c7,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. ${g} ${h} ${i}`,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. ${g} ${h} ${f} ${i}`,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. ${i}`,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.c7,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. ${i}`,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. ${i}`,safetyFences:["Every mutating production step waits for explicit operator approval.","Rebuild or restart only the inactive color after its validation."],capabilities:["production-write"]}]},37664:(a,b,c)=>{c.d(b,{C:()=>d,i:()=>e});let d={engine:"claude",model:"opus",effort:"high"},e={engine:"codex",model:"gpt-5.6-terra",effort:"low"}},58152:(a,b,c)=>{c.d(b,{BL:()=>k,ck:()=>g,ve:()=>j});let d=["low","medium","high","xhigh","max"],e=["low","medium","high","xhigh"],f=["minimal","low","medium","high","xhigh","max","ultra"];function g(a){return f.includes(a)}let h=[[/^gpt-6-astra\b/,["low","medium","high","xhigh","max","ultra"]],[/^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;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 e}function k(a,b){let c="string"==typeof b.effort?b.effort.trim():"",d=j(a,"string"==typeof b.model?b.model:null);return c&&!d.includes(c)?{effort:null,fast:null,error:`effort for ${a} must be one of: ${d.join(", ")}`}:{effort:c||null,fast:"codex"===a&&"boolean"==typeof b.fast?b.fast:null}}},89822:(a,b,c)=>{c.d(b,{Nu:()=>q,le:()=>r,gP:()=>o,kZ:()=>s,pQ:()=>H,e3:()=>I,_M:()=>E,_L:()=>F});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(58152),j=c(4837),k=c(18797),l=c(37664);let m=["orchestrator","reviewer","verifier","builder","architect","cleaner","prod-auditor","deployer"],n=["frontend","apply-fixes"],o=2,p=[1,2],q={frontend:l.C,"apply-fixes":l.i},r=12e3;class s extends Error{constructor(a,b){super(a,b),this.name="RoleStoreError"}}let t=()=>(0,h.BQ)("role-presets.json");function u(a){return"string"==typeof a&&m.includes(a)}function v(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"engine"!==a&&"model"!==a&&"effort"!==a))return!1;let{engine:b,model:c,effort:d}=a;return(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))}function w(a){return n.includes(a)}function x(a){if(!a||"object"!=typeof a||Array.isArray(a)||Object.keys(a).some(a=>"config"!==a&&"promptScaffold"!==a&&"variants"!==a)||void 0!==a.promptScaffold&&("string"!=typeof a.promptScaffold||a.promptScaffold.length>r)||void 0!==a.config&&!v(a.config))return!1;if(void 0!==a.variants){if(!a.variants||"object"!=typeof a.variants||Array.isArray(a.variants))return!1;for(let[b,c]of Object.entries(a.variants))if(!w(b)||!v(c))return!1}return!0}function y(a,b){if(b.model.length>128||/[\u0000-\u001f\u007f]/.test(b.model)||"claude"===b.engine&&!(0,j.OV)(b.model)||"codex"===b.engine&&!b.model.startsWith("gpt-"))return!1;let c=(0,i.ve)(b.engine,b.model);if(!c.includes(b.effort))throw new s(`invalid role override: ${a}; effort for ${b.engine}/${b.model} must be one of: ${c.join(", ")}`);return!0}function z(a,b){let c=k.W.find(b=>b.id===a);return!!y(a,{...c.config,...b.config})&&(void 0===b.variants||"builder"===a&&Object.entries(b.variants).every(([b,c])=>y(`${a}.${b}`,{...q[b],...c})))}function A(){let a,b;try{a=e().readFileSync(t(),"utf8")}catch(a){if("ENOENT"===a.code)return{schemaVersion:1,overrides:{}};throw new s(`could not read role override registry: ${t()}`,{cause:a})}try{b=JSON.parse(a)}catch(a){throw new s("role override registry contains malformed JSON",{cause:a})}if(!p.includes(b.schemaVersion))throw new s(`unsupported role override schema: ${String(b.schemaVersion)}`);if(!b.overrides||"object"!=typeof b.overrides||Array.isArray(b.overrides))throw new s("role override registry must contain an overrides object");let c={};for(let[a,d]of Object.entries(b.overrides)){if(!u(a)||!x(d)||!z(a,d))throw new s(`invalid role override: ${a}`);c[a]=d}return{schemaVersion:B(c),overrides:c}}function B(a){return Object.values(a).some(a=>a?.variants!==void 0)?2:1}function C(a,b){return a.engine===b.engine&&a.model===b.model&&a.effort===b.effort}function D(a){return!!v(a)&&"string"==typeof a.engine&&"string"==typeof a.model&&"string"==typeof a.effort}function E(a){if(!a||"object"!=typeof a||Array.isArray(a))return"overrides must be an object keyed by role id";let b={};for(let[c,d]of Object.entries(a)){if(!u(c))return`unknown role: ${c}`;if(!d||"object"!=typeof d||Array.isArray(d))return`overrides.${c} must be an object`;if(Object.keys(d).some(a=>"config"!==a&&"variants"!==a))return`overrides.${c} carries config and variants only`;let a={};if(void 0!==d.config){if(null!==d.config&&!D(d.config))return`overrides.${c}.config must be { engine, model, effort } or null`;a.config=d.config}if(void 0!==d.variants){if("builder"!==c)return`overrides.${c}.variants: only builder has variants`;if(!d.variants||"object"!=typeof d.variants||Array.isArray(d.variants))return"overrides.builder.variants must be an object";for(let[b,c]of(a.variants={},Object.entries(d.variants))){if(!w(b))return`unknown builder variant: ${b}`;if(null!==c&&!D(c))return`overrides.builder.variants.${b} must be { engine, model, effort } or null`;a.variants[b]=c}}b[c]=a}return b}function F(a){var b,c;let d,f=function(a,b){let c=structuredClone(a);for(let[a,d]of Object.entries(b)){let b=k.W.find(b=>b.id===a).config,e={...c[a]};if(void 0!==d.config&&(null===d.config||C(d.config,b)?delete e.config:e.config={engine:d.config.engine,model:d.config.model,effort:d.config.effort}),void 0!==d.variants){let a={...e.variants};for(let[b,c]of Object.entries(d.variants))null===c||C(c,q[b])?delete a[b]:a[b]={engine:c.engine,model:c.model,effort:c.effort};Object.keys(a).length?e.variants=a:delete e.variants}Object.keys(e).length?c[a]=e:delete c[a]}return c}(A().overrides,a);for(let[a,b]of Object.entries(f))if(!u(a)||!x(b)||!z(a,b))throw new s(`invalid role override: ${a}`);return b=t(),c={schemaVersion:B(f),overrides:f},e().mkdirSync(g().dirname(b),{recursive:!0}),d=g().join(g().dirname(b),`.${g().basename(b)}.${process.pid}.tmp`),e().writeFileSync(d,JSON.stringify(c,null,2)+"\n","utf8"),e().renameSync(d,b),G(f)}function G(a){return k.W.map(b=>{let c=a[b.id];return{...b,config:{...b.config,...c?.config},promptScaffold:c?.promptScaffold??b.promptScaffold,..."builder"===b.id?{variants:{frontend:{...q.frontend,...c?.variants?.frontend},"apply-fixes":{...q["apply-fixes"],...c?.variants?.["apply-fixes"]}}}:{}}})}function H(){return G(A().overrides)}function I(){try{return H()}catch(a){return console.warn("[roles] override registry unreadable; falling back to built-in defaults",a),G({})}}}};
@@ -0,0 +1,5 @@
1
+ "use strict";exports.id=9839,exports.ids=[9839],exports.modules={9839:(a,b,c)=>{c.d(b,{checkStateDatabasesAtActivation:()=>y,startStateDurability:()=>B});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(34402),i=c(44405);let j=g().join("backups","sqlite"),k="storage-incidents.json";function l(a){let b=b=>g().join(a,b);return[{name:"state.sqlite",filename:b("state.sqlite"),check:"integrity_check",backup:{intervalMs:6e5,retention:{kind:"tiered"}},revisionSql:"SELECT (SELECT COUNT(*) FROM state_collections) || ':' || (SELECT COALESCE(SUM(revision), 0) FROM state_collections) AS revision"},{name:"agent-registry.sqlite",filename:b("agent-registry.sqlite"),check:"integrity_check",backup:{intervalMs:6e5,retention:{kind:"tiered"}},revisionSql:"SELECT value AS revision FROM registry_meta WHERE key = 'revision'"},{name:"mcp-receipts.sqlite",filename:b("mcp-receipts.sqlite"),check:"quick_check",backup:{intervalMs:864e5,retention:{kind:"newest",count:3}},revisionSql:null},{name:"handoff-queue.sqlite",filename:b("handoff-queue.sqlite"),check:"quick_check",backup:null,revisionSql:null}]}function m(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("state database durability requires the Bun runtime");return a.Database}function n(a){if(!(a instanceof Error))return String(a);let b=a.code;return"string"==typeof b&&b?`${b}: ${a.message}`:a.message}function o(a){let b=a instanceof Error?a.code:void 0;if("string"==typeof b&&/^SQLITE_(CORRUPT|NOTADB)/.test(b))return!0;let c=a instanceof Error?a.message:String(a);return/database disk image is malformed|file is not a database/i.test(c)}function p(a,b,c){let d=null;try{let e=m();(d=c?new e(a,{readonly:!0}):new e(a,{readwrite:!0})).exec("PRAGMA busy_timeout = 5000");let f=d.query(`PRAGMA ${b}`).all().map(a=>String(Object.values(a)[0]));if(1===f.length&&"ok"===f[0])return{verdict:"ok"};return{verdict:"corrupt",detail:`${b}: ${f.slice(0,5).join("; ")||"no result"}`}}catch(a){return o(a)?{verdict:"corrupt",detail:n(a)}:{verdict:"unknown",detail:n(a)}}finally{d?.close()}}function q(a){for(let b of["","-wal","-shm","-journal"])e().rmSync(`${a}${b}`,{force:!0})}function r(a){try{return e().lstatSync(a),!0}catch{return!1}}function s(a){return a.toISOString().replace(/[:.]/g,"-")}let t=/^(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z$/;function u(a,b){let c;try{c=e().readdirSync(a)}catch{return[]}let d=`${b.replace(/\.sqlite$/,"")}-`,f=[];for(let b of c){if(!b.startsWith(d)||!b.endsWith(".sqlite"))continue;let c=function(a){let b=t.exec(a);if(!b)return null;let c=Date.parse(`${b[1]}T${b[2]}:${b[3]}:${b[4]}.${b[5]}Z`);return Number.isFinite(c)?c:null}(b.slice(d.length,-7));if(null===c)continue;let h=g().join(a,b),i=0;try{i=e().statSync(h).size}catch{continue}f.push({name:b,file:h,at:c,bytes:i})}return f.sort((a,b)=>b.at-a.at)}function v(a){return g().join(a,k)}function w(a,b){let c=[...function(a){let b,c,d=v(a);try{b=e().readFileSync(d,"utf8")}catch{return[]}try{c=JSON.parse(b)}catch(b){let a=`${d}.unreadable-${s(new Date)}`;try{e().renameSync(d,a),console.error(`[state durability] ${k} did not parse (${n(b)}); kept as ${g().basename(a)}`)}catch{}return[]}return c&&"object"==typeof c&&Array.isArray(c.incidents)?c.incidents.filter(a=>!!a&&"object"==typeof a&&"string"==typeof a.kind&&"string"==typeof a.database&&"string"==typeof a.at):[]}(a),b].slice(-50);try{(0,i.fZ)(v(a),{version:1,incidents:c})}catch(a){console.error(`[state durability] could not record the incident: ${n(a)}`)}console.error(`[state durability] ${b.kind} ${b.database}: ${b.message}`)}function x(a){return`${a}.restoring`}function y(a,b={}){let c=[];for(let d of l(a))try{let f=function(a,b){if(e().rmSync((0,h.h2)(a.filename),{force:!0}),!r(a.filename))return{state:"absent"};let c=p(a.filename,a.check,!0);if("ok"===c.verdict)return{state:"ok"};if("unknown"===c.verdict)return console.error(`[state durability] ${a.name} could not be checked, left as it is: ${c.detail}`),{state:"unchecked",detail:c.detail};let d=b.now??new Date,f=b.backupDirectory??g().join(b.stateDirectory,j),k={database:a.name,at:d.toISOString(),detail:c.detail},l=function(a,b){let c=x(a.filename);for(let d of u(b,a.name)){q(c);try{e().copyFileSync(d.file,c);let a=p(c,"integrity_check",!1);if("ok"!==a.verdict||r(`${c}-wal`))throw Error("ok"===a.verdict?"it left a WAL behind":a.detail);return e().rmSync(`${c}-shm`,{force:!0}),e().chmodSync(c,384),(0,i.Hr)(c),d}catch(a){console.error(`[state durability] backup ${d.name} refused: ${n(a)}`)}}return q(c),null}(a,f),t=function(a,b,c,d){let f=`${a}.corrupt-${s(b)}`,j=[],k=(0,h.h2)(a),l=null,p=null;try{e().writeFileSync(k,`${process.pid}
2
+ `,{mode:384}),l=function(a){let b=null;try{return(b=new(m())(a,{readwrite:!0})).exec("PRAGMA busy_timeout = 5000"),b.exec("BEGIN IMMEDIATE"),b}catch(c){try{b?.close()}catch{}return o(c)||console.error(`[state durability] ${g().basename(a)} write lock not taken: ${n(c)}`),null}}(a);let b=!1;if(c){d?.("set-aside-main");try{e().linkSync(a,f)}catch{e().renameSync(a,f)}b=!0,j.push(g().basename(f))}for(let b of["-wal","-shm"])r(`${a}${b}`)&&(d?.("-wal"===b?"set-aside-wal":"set-aside-shm"),e().renameSync(`${a}${b}`,`${f}${b}`),j.push(g().basename(`${f}${b}`)));c?(d?.("restore"),e().renameSync(c,a)):b||(d?.("set-aside-main"),e().renameSync(a,f),j.unshift(g().basename(f)))}catch(b){p=n(b);try{r(a)&&(0,h.mm)(a)===(0,h.mm)(f)?e().unlinkSync(a):r(a)&&!r(f)&&j.length&&(e().renameSync(a,f),j.unshift(g().basename(f)))}catch(a){p=`${p}; setting the damaged file aside also failed: ${n(a)}`}}finally{if(l){try{l.exec("ROLLBACK")}catch{}try{l.close()}catch{}}e().rmSync(k,{force:!0});try{(0,i.Hr)(g().dirname(a))}catch(a){console.error(`[state durability] the state directory could not be synced after the swap: ${n(a)}`)}}return{corruptFiles:j,error:p}}(a.filename,d,l?x(a.filename):null,b.beforeSwapStep);if(null!==t.error){q(x(a.filename));let d=r(a.filename),e={...k,kind:"database-fallback-failed",corruptFiles:t.corruptFiles,backup:null,backupAt:null,backupAgeMs:null,message:`${a.name} was damaged (${c.detail}) and the fallback failed (${t.error}). `+(d?"The damaged database is still in place and may keep failing.":"It starts empty.")+(t.corruptFiles.length?` The damaged files are kept as ${t.corruptFiles.join(", ")}.`:"")};return w(b.stateDirectory,e),{state:"failed",incident:e}}let v=t.corruptFiles;if(l){let e=new Date(l.at).toISOString(),f={...k,corruptFiles:v,kind:"database-restored",backup:l.name,backupAt:e,backupAgeMs:d.getTime()-l.at,message:`${a.name} was damaged (${c.detail}) and was restored from the backup taken at ${e}. Changes written after ${e} are lost. The damaged files are kept as ${v.join(", ")}.`};return w(b.stateDirectory,f),{state:"restored",incident:f}}let y={...k,corruptFiles:v,kind:"database-fresh",backup:null,backupAt:null,backupAgeMs:null,message:`${a.name} was damaged (${c.detail}) and no backup passed its check, so it starts empty. The damaged files are kept as ${v.join(", ")}.`};return w(b.stateDirectory,y),{state:"fresh",incident:y}}(d,{stateDirectory:a,...b});"incident"in f&&c.push(f.incident)}catch(a){console.error(`[state durability] ${d.name} check failed: ${n(a)}`)}return c}function z(a){try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}}async function A(a,b,d={}){let f=d.launch??function(a=process.cwd()){let b=g().join(a,"src/lib/stateBackup.worker.ts"),c=g().join(a,".next/server/state-backup-worker.js"),d="/usr/local/bin/bun-container";return e().existsSync(b)&&e().existsSync(d)?{executable:d,workerPath:b}:e().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:{executable:process.execPath,workerPath:b}}(),{spawn:h}=await Promise.resolve().then(c.t.bind(c,31421,23)),i=e().existsSync("/usr/bin/nice"),j=h(i?"/usr/bin/nice":f.executable,[...i?["-n","10",f.executable]:[],f.workerPath],{cwd:process.cwd(),stdio:["pipe","pipe","inherit"],env:process.env}),k={stateDirectory:a,lastRevisions:[...b]},l=new Map((await new Promise((a,b)=>{let c="",d=setTimeout(()=>{j.kill("SIGKILL"),b(Error("the backup worker ran past 900000 ms and was stopped"))},9e5);d.unref?.(),j.stdout.setEncoding("utf8"),j.stdout.on("data",a=>{c+=a}),j.stdin.on("error",()=>{}),j.once("error",a=>{clearTimeout(d),b(a)}),j.once("close",(e,f)=>{clearTimeout(d);try{if(0!==e)throw Error(`the backup worker exited with ${e??f}`);a(JSON.parse(c.trim().split("\n").at(-1)??""))}catch(a){b(a)}}),j.stdin.end(JSON.stringify(k))})).outcomes);for(let[a,c]of l)("taken"===c.state||"unchanged"===c.state)&&b.set(a,c.revision);return l}function B(a){let b=globalThis;b.__llvStateDurabilityTimer&&clearInterval(b.__llvStateDurabilityTimer);try{!function(a,b={}){let c,d=b.now??Date.now(),f=b.pidAlive??z,h=b.minAgeMs??36e5;try{c=e().readdirSync(a,{withFileTypes:!0})}catch{return[]}let i=[];for(let b of c){if(!b.isFile()||!b.name.endsWith(".tmp"))continue;let c=function(a){for(let b of a.slice(0,-4).split(".")){let a=/^(\d{1,7})(?:-\d+)?$/.exec(b);if(!a)continue;let c=Number(a[1]);if(c>0&&c<=4194304)return c}return null}(b.name);if(null===c)continue;let j=g().join(a,b.name);try{if(d-e().statSync(j).mtimeMs<h||f(c))continue;e().unlinkSync(j),i.push(b.name)}catch{}}}(a.stateDirectory),function(a){let b=[];for(let{name:c,onlyEmpty:d}of[{name:"orchestrator.json",onlyEmpty:!1},{name:"pipelines.sqlite",onlyEmpty:!0},{name:"registry.sqlite",onlyEmpty:!0}]){let f=g().join(a,c);try{let a=e().lstatSync(f);if(!a.isFile()||d&&0!==a.size)continue;e().unlinkSync(f),b.push(c)}catch{}}}(a.stateDirectory)}catch(a){console.error(`[state durability] cleanup failed: ${n(a)}`)}let c=a.raiseBoardCard??(b=>D(a.stateDirectory,b));for(let b of a.incidents)c(b).catch(a=>console.error(`[state durability] board card for ${b.database} failed: ${n(a)}`));let d=new Map,f=a.runPass??A,h=!1,i=setInterval(()=>{let c;if(!a.ownsTraffic()){clearInterval(i),b.__llvStateDurabilityTimer===i&&delete b.__llvStateDurabilityTimer;return}if(!h){try{c=function(a,b,c=new Date){let d=g().join(a,j);return l(a).filter(a=>{if(!a.backup||!r(a.filename))return!1;let f=u(d,a.name)[0];if(f&&c.getTime()-f.at<a.backup.intervalMs)return!1;let g=b.get(a.name);return!g||g!==function(a){if(a.revisionSql){let b=null;try{(b=new(m())(a.filename,{readonly:!0})).exec("PRAGMA busy_timeout = 5000");let c=b.query(a.revisionSql).get();if(c&&null!==c.revision&&void 0!==c.revision)return`rev:${String(c.revision)}`}catch{}finally{b?.close()}}return`sig:${function(a){let b=[];for(let c of[a,`${a}-wal`])try{let a=e().statSync(c,{bigint:!0});b.push(`${a.size}@${a.mtimeNs}`)}catch{b.push("missing")}return b.join("|")}(a.filename)}`}(a)}).map(a=>a.name)}(a.stateDirectory,d)}catch(a){console.error(`[state durability] backup schedule failed: ${n(a)}`);return}c.length&&(h=!0,f(a.stateDirectory,d).catch(a=>console.error(`[state durability] backup pass failed: ${n(a)}`)).finally(()=>{h=!1}))}},a.tickMs??6e4);return i.unref?.(),b.__llvStateDurabilityTimer=i,{stop(){clearInterval(i),b.__llvStateDurabilityTimer===i&&delete b.__llvStateDurabilityTimer}}}async function C(){let[{default:a},{projectIdentityFromRemote:b},{canonicalOrchestratorProject:d}]=await Promise.all([c.e(53).then(c.t.bind(c,90053,19)),c.e(6211).then(c.bind(c,46211)),Promise.all([c.e(9307),c.e(9867)]).then(c.bind(c,29307))]),e=process.env.LLV_VIEWER_CANONICAL_REMOTE?.trim()||a.repository.url.trim(),f=b(e,process.cwd())?.project??null;return f?d(f):null}async function D(a,b,d){let e=void 0===d?await C():d;if(!e)return void console.error(`[state durability] no Viewer project to put the ${b.database} incident card on`);let[{mutateTasksFile:f},{createTask:h}]=await Promise.all([c.e(3696).then(c.bind(c,13696)),Promise.all([c.e(3696),c.e(261),c.e(3509)]).then(c.bind(c,23509))]);f(a=>{let c,d=h(a.tasks,{project:e,text:(c="database-restored"===b.kind?`State database ${b.database} was restored from a backup`:"database-fallback-failed"===b.kind?`State database ${b.database} was damaged and could not be restored`:`State database ${b.database} was damaged and started empty`,`${c}
3
+
4
+ ${b.message}`),placement:"unplaced",clientRequestId:`storage-incident:${b.database}:${b.at}`},a.recentCreates);return!d.ok||d.replay?{state:void 0,result:void 0}:{state:{...a,tasks:d.tasks,recentCreates:d.recentCreates},result:void 0}},g().join(a,"tasks.json"))}},44405:(a,b,c)=>{c.d(b,{Hr:()=>k,dt:()=>l,fZ:()=>j});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h);function j(a,b,c={}){let d=c.space??2;var f=a,h=`${d>0?JSON.stringify(b,null,d):JSON.stringify(b)}
5
+ `;g().mkdirSync(i().dirname(f),{recursive:!0});let l=i().join(i().dirname(f),`.${i().basename(f)}.${process.pid}.${e().randomUUID()}.tmp`),m=null;try{m=g().openSync(l,"wx",384),g().writeFileSync(m,h,"utf8"),g().fsyncSync(m),g().closeSync(m),m=null,g().renameSync(l,f),k(i().dirname(f))}finally{null!==m&&g().closeSync(m),g().rmSync(l,{force:!0})}}function k(a){let b=g().openSync(a,"r");try{g().fsyncSync(b)}finally{g().closeSync(b)}}function l(a){let b,c,d;try{b=g().openSync(a,"r")}catch{return}try{c=g().fstatSync(b),d=g().readFileSync(b,"utf8")}catch{return}finally{g().closeSync(b)}try{return JSON.parse(d)}catch{!function(a,b){try{let c=g().lstatSync(a);if(c.ino!==b.ino||c.dev!==b.dev)return;g().unlinkSync(a),console.error(`[state cache] discarded unreadable ${i().basename(a)}; it is rebuilt on the next write`)}catch{}}(a,c);return}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=9867,exports.ids=[6211,9867],exports.modules={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","tasks"].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.repositoryRootForPath)(e)??a.get(e),f=b?(0,l.projectIdentityFromRepositoryRoot)(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","tasks"].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.r(b),c.d(b,{UNRESOLVED_PROJECT:()=>l,UNRESOLVED_PROJECT_NAME:()=>m,directoryProjectId:()=>q,displayNameFromProjectIdentity:()=>r,isCanonicalProjectId:()=>n,isRepositoryProjectId:()=>o,localRepositoryProjectId:()=>y,projectIdentityFromDirectory:()=>p,projectIdentityFromRemote:()=>x,projectIdentityFromRepositoryRoot:()=>A,repositoryRootForPath:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){return/^repo-[0-9a-f]{32}$/.test(a)}function p(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c;return{project:q(b),displayName:d}}function q(a){return`dir-${e().createHash("sha256").update(`dir:${a}`).digest("hex").slice(0,32)}`}function r(a){return a===l?m:a}function s(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function t(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return s(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return s(f)?f:null}catch{return null}}function u(a){let b=k().resolve(a);for(;;){if(t(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function v(a,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}`}}function w(a){let b=a.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!b)return null;let c=e().createHash("sha256").update(a).digest("hex").slice(0,32);return{project:`repo-${c}`,displayName:b,canonicalRemote:a}}function x(a,b){let c=a.trim();if(!c)return null;let d=v(c,b);return d?w(d):null}function y(a){return w(`local:${z(a)}`)?.project??null}function z(a){try{return g().realpathSync.native(a)}catch{return k().resolve(a)}}function A(a){let b,c=t(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),e=d?v(d,a):`local:${z(a)}`;return e?w(e):null}},63685:(a,b,c)=>{c.d(b,{Cu:()=>E,gB:()=>p,oV:()=>D});var d=c(16698),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(27146),l=c(55686);let m=globalThis.__llvAccountMutationRuntime??={transactionContext:new d.AsyncLocalStorage,localWaiters:[],localHeld:!1},n=m.transactionContext,o=m.localWaiters;class p extends Error{constructor(a="account mutation is busy; retry shortly"){super(a),this.name="AccountMutationBusyError"}}function q(){let a=o.shift();a?a():m.localHeld=!1}async function r(){return m.localHeld?await new Promise(a=>o.push(a)):m.localHeld=!0,q}let s=function(){try{return h().readlinkSync("/proc/self/ns/pid")}catch{return null}}();function t(a,b){try{return Date.now()-h().statSync(a).mtimeMs>b}catch{return!1}}function u(a,b=null){if(null!==b&&t(a,b))return!0;try{let b=JSON.parse(h().readFileSync(a,"utf8"));if("number"==typeof b.pid&&Number.isInteger(b.pid)&&b.pid>0){if(("string"==typeof b.ns?b.ns:null)!==s)return t(a,3e4);if(!l.B.pidAlive(b.pid))return!0;if("string"!=typeof b.startIdentity)return!1;let c=l.B.processIdentity(b.pid);return null!==c&&c!==b.startIdentity}return t(a,3e4)}catch{return t(a,3e4)}}function v(a,b){try{JSON.parse(h().readFileSync(a,"utf8")).token===b&&h().rmSync(a,{force:!0})}catch{}}function w(){try{let a=JSON.parse(h().readFileSync((0,k.BQ)("account-mutation-revision.json"),"utf8"));return 1===a.version&&Number.isSafeInteger(a.revision)&&a.revision>=0?a.revision:0}catch{return 0}}function x(){let a=(0,k.BQ)("account-selection.lock"),b=`${a}.queue`;h().mkdirSync(b,{recursive:!0,mode:448});let c={pid:process.pid,startIdentity:l.B.processIdentity(process.pid),ns:s,token:f().randomUUID()},d=j().join(b,`${String(Date.now()).padStart(16,"0")}-${process.pid}-${f().randomUUID()}.json`);return h().writeFileSync(d,JSON.stringify(c),{encoding:"utf8",flag:"wx",mode:384}),{lock:a,queue:b,owner:c,ticket:d}}function y(a){let b=new Date;try{return h().utimesSync(a,b,b),!0}catch{return!1}}function z(a){let b,c=[];for(let b of h().readdirSync(a.queue).filter(a=>a.endsWith(".json")).sort()){let d=j().join(a.queue,b);if(d!==a.ticket&&u(d,6e5)){h().rmSync(d,{force:!0});continue}h().existsSync(d)&&c.push(d)}if(c[0]!==a.ticket)return null;try{b=h().openSync(a.lock,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;return u(a.lock)&&h().rmSync(a.lock,{force:!0}),null}try{h().writeFileSync(b,JSON.stringify(a.owner),"utf8"),h().fsyncSync(b)}catch(c){throw h().closeSync(b),h().rmSync(a.lock,{force:!0}),c}let d={active:!0,revision:w()},e=setInterval(()=>y(a.lock),1e4);return e.unref?.(),{context:d,release(){clearInterval(e),d.active=!1,h().closeSync(b),v(a.lock,a.owner.token),v(a.ticket,a.owner.token)}}}function A(a,b){return{context:a.context,release(){try{a.release()}finally{b()}}}}async function B(){let a=await r(),b=null;try{b=x();let d=Date.now();for(let e=0;e<2e3;e+=1){let e=z(b);if(e)return A(e,a);if(Date.now()-d>=1e4){d=Date.now();var c=b;if(!y(c.ticket))try{h().writeFileSync(c.ticket,JSON.stringify(c.owner),{encoding:"utf8",mode:384})}catch{}}await new Promise(a=>setTimeout(a,5))}throw Error("account mutation is busy; retry shortly")}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}function C(a){!function(a){let b=(0,k.BQ)("account-mutation-revision.json");if(w()!==a)throw Error("account mutation revision fence changed while locked");let c=`${b}.${process.pid}.${f().randomUUID()}.tmp`;h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});try{h().writeFileSync(c,JSON.stringify({version:1,revision:a+1})+"\n",{mode:384});let d=h().openSync(c,"r");try{h().fsyncSync(d)}finally{h().closeSync(d)}h().renameSync(c,b)}finally{h().rmSync(c,{force:!0})}}(a.revision),a.revision+=1}function D(a){let b=n.getStore();if(b?.active)return a();let c=function(){let a=function(){if(m.localHeld)throw new p("account mutation is busy in this process; retry shortly");return m.localHeld=!0,q}(),b=null;try{b=x();for(let c=0;c<2;c+=1){let c=z(b);if(c)return A(c,a)}throw new p}catch(c){throw b&&v(b.ticket,b.owner.token),a(),c}}();try{return C(c.context),n.run(c.context,a)}finally{c.release()}}async function E(a){let b=n.getStore();if(b?.active)return a();let c=await B();try{return C(c.context),await n.run(c.context,a)}finally{c.release()}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9940,exports.ids=[9940],exports.modules={9302:(a,b,c)=>{let d;c.d(b,{$k:()=>m,O1:()=>o,Ue:()=>l,gI:()=>n,h_:()=>i,y6:()=>k});var e=c(31421),f=c(73024),g=c.n(f),h=c(63657);function i(){if(void 0!==d)return d;if("linux"===process.platform){try{let a=g().readFileSync("/proc/sys/kernel/random/boot_id","utf8").trim(),b=g().readlinkSync("/proc/self/ns/pid");d=a&&b?`linux:${a}:pidns:${b}`:null}catch{d=null}return d}if("darwin"===process.platform){let a=(0,e.spawnSync)("sysctl",["-n","kern.boottime"],{encoding:"utf8",timeout:2e3}),b="string"==typeof a.stdout?/sec\s*=\s*(\d+)\s*,\s*usec\s*=\s*(\d+)/.exec(a.stdout):null;return d=b?`darwin:${b[1]}:${b[2]}`:null}return d="win32"===process.platform?"windows:absolute-process-creation-filetime":null}let j={pidAlive:a=>h.B.pidAlive(a),processIdentity:a=>h.B.processIdentity(a),bootEpoch:i};function k(a,b=j,c){return{pid:a,startIdentity:void 0===c?b.processIdentity(a):c,bootEpoch:b.bootEpoch()}}function l(a,b=j){if(!Number.isSafeInteger(a.pid)||a.pid<=0||!b.pidAlive(a.pid))return"dead";let c=b.processIdentity(a.pid);if(null===a.startIdentity||null===c)return"unverified";if(c!==a.startIdentity)return"dead";let d=b.bootEpoch();return"string"==typeof a.bootEpoch&&a.bootEpoch&&null!==d?d===a.bootEpoch?"alive":"dead":"unverified"}function m(a,b=j){return"dead"!==l(a,b)}function n(a,b=j){return"dead"===l(a,b)}function o(a,b){return a.pid===b.pid&&a.startIdentity===b.startIdentity&&(void 0===b.bootEpoch||a.bootEpoch===b.bootEpoch)}},13117:(a,b,c)=>{c.d(b,{Gw:()=>G,M:()=>E,UY:()=>H,Vx:()=>D,bG:()=>r,jY:()=>F,t0:()=>B});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(63657),k=c(2033),l=c(43734);let m=new Int32Array(new SharedArrayBuffer(4)),n=new Set,o=0;function p(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("SQLite state stores require the Bun runtime");return a.Database}function q(a,b){let c=a.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?");return b.every(a=>{let b=c.get(a.collection);return b?.schema_version===a.schemaVersion&&b.migration_id===a.migrationId})}function r(a,b){if(!g().existsSync(a))return!1;let c=null;try{return c=v(a),q(c,b)}catch{return!1}finally{c?.close()}}function s(a){if(!(0,l.Ny)(i().dirname(a)))throw new k.Qm("hot state writes are fenced during release handoff")}function t(a,b=!1){if((0,l.Ny)(i().dirname(a))||n.has(i().resolve(a))&&(0,l.T2)(i().dirname(a)))return;let c=(0,l.jU)(i().dirname(a)),d=(0,l.a5)(i().dirname(a));if(!b||null===c||d?.mode!=="fencing"||d.releaseRevision!==c)throw new k.Qm("hot state migration is waiting for release promotion")}function u(a){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(p())(a,{create:!0,strict:!0});try{for(let a=0;a<6e3;a+=1)try{return b.exec("PRAGMA busy_timeout = 0; PRAGMA synchronous = FULL; PRAGMA foreign_keys = ON;"),b}catch(a){if(!z(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm("state database connection is busy")}catch(a){throw b.close(),a}}function v(a){o+=1;let b=new(p())(a,{readonly:!0,strict:!0});return b.exec("PRAGMA busy_timeout = 0; PRAGMA foreign_keys = ON;"),b}function w(a){let b=u(a);try{for(let c=0;c<6e3;c+=1)try{return b.exec("PRAGMA journal_mode = WAL; PRAGMA auto_vacuum = INCREMENTAL;"),b.exec("BEGIN IMMEDIATE"),b.exec(`
1
+ "use strict";exports.id=9940,exports.ids=[9940],exports.modules={9302:(a,b,c)=>{let d;c.d(b,{$k:()=>m,O1:()=>o,Ue:()=>l,gI:()=>n,h_:()=>i,y6:()=>k});var e=c(31421),f=c(73024),g=c.n(f),h=c(63657);function i(){if(void 0!==d)return d;if("linux"===process.platform){try{let a=g().readFileSync("/proc/sys/kernel/random/boot_id","utf8").trim(),b=g().readlinkSync("/proc/self/ns/pid");d=a&&b?`linux:${a}:pidns:${b}`:null}catch{d=null}return d}if("darwin"===process.platform){let a=(0,e.spawnSync)("sysctl",["-n","kern.boottime"],{encoding:"utf8",timeout:2e3}),b="string"==typeof a.stdout?/sec\s*=\s*(\d+)\s*,\s*usec\s*=\s*(\d+)/.exec(a.stdout):null;return d=b?`darwin:${b[1]}:${b[2]}`:null}return d="win32"===process.platform?"windows:absolute-process-creation-filetime":null}let j={pidAlive:a=>h.B.pidAlive(a),processIdentity:a=>h.B.processIdentity(a),bootEpoch:i};function k(a,b=j,c){return{pid:a,startIdentity:void 0===c?b.processIdentity(a):c,bootEpoch:b.bootEpoch()}}function l(a,b=j){if(!Number.isSafeInteger(a.pid)||a.pid<=0||!b.pidAlive(a.pid))return"dead";let c=b.processIdentity(a.pid);if(null===a.startIdentity||null===c)return"unverified";if(c!==a.startIdentity)return"dead";let d=b.bootEpoch();return"string"==typeof a.bootEpoch&&a.bootEpoch&&null!==d?d===a.bootEpoch?"alive":"dead":"unverified"}function m(a,b=j){return"dead"!==l(a,b)}function n(a,b=j){return"dead"===l(a,b)}function o(a,b){return a.pid===b.pid&&a.startIdentity===b.startIdentity&&(void 0===b.bootEpoch||a.bootEpoch===b.bootEpoch)}},13117:(a,b,c)=>{c.d(b,{Gw:()=>O,M:()=>M,N$:()=>J,UY:()=>P,Vx:()=>L,bG:()=>s,jY:()=>N,nF:()=>I,t0:()=>D,tD:()=>H});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(63657),k=c(25087),l=c(2033),m=c(43734);let n=new Int32Array(new SharedArrayBuffer(4)),o=new Set,p=0;function q(){let a=process.getBuiltinModule?.("bun:sqlite");if(!a)throw Error("SQLite state stores require the Bun runtime");return a.Database}function r(a,b){let c=a.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?");return b.every(a=>{let b=c.get(a.collection);return b?.schema_version===a.schemaVersion&&b.migration_id===a.migrationId})}function s(a,b){if(!g().existsSync(a))return!1;let c=null;try{return c=x(a),r(c,b)}catch{return!1}finally{c?.close()}}function t(a){if(!(0,m.Ny)(i().dirname(a)))throw new l.Qm("hot state writes are fenced during release handoff")}function u(a,b=!1){if((0,m.Ny)(i().dirname(a))||o.has(i().resolve(a))&&(0,m.T2)(i().dirname(a)))return;let c=(0,m.jU)(i().dirname(a)),d=(0,m.a5)(i().dirname(a));if(!b||null===c||d?.mode!=="fencing"||d.releaseRevision!==c)throw new l.Qm("hot state migration is waiting for release promotion")}function v(a){return(0,k.PK)(a,()=>w(a))}function w(a){g().mkdirSync(i().dirname(a),{recursive:!0,mode:448});let b=new(q())(a,{create:!0,strict:!0});try{for(let a=0;a<6e3;a+=1)try{return b.exec("PRAGMA busy_timeout = 0; PRAGMA synchronous = FULL; PRAGMA journal_size_limit = 67108864; PRAGMA foreign_keys = ON;"),b}catch(a){if(!B(a))throw a;Atomics.wait(n,0,0,5)}throw new l.Qm("state database connection is busy")}catch(a){throw b.close(),a}}function x(a){return p+=1,(0,k.PK)(a,()=>{var b;let c;return b=a,(c=new(q())(b,{readonly:!0,strict:!0})).exec("PRAGMA busy_timeout = 0; PRAGMA foreign_keys = ON;"),c})}function y(a){return(0,k.PK)(a,()=>(function(a){let b=w(a);try{for(let c=0;c<6e3;c+=1)try{return b.exec("PRAGMA journal_mode = WAL; PRAGMA auto_vacuum = INCREMENTAL;"),b.exec("BEGIN IMMEDIATE"),b.exec(`
2
2
  CREATE TABLE IF NOT EXISTS state_collections (
3
3
  collection TEXT PRIMARY KEY,
4
4
  schema_version INTEGER NOT NULL,
@@ -38,34 +38,56 @@
38
38
  owner_start_identity TEXT,
39
39
  acquired_at INTEGER NOT NULL
40
40
  );
41
- `),b.query("PRAGMA table_info(state_collections)").all().some(a=>"change_floor"===a.name)||b.exec("ALTER TABLE state_collections ADD COLUMN change_floor INTEGER NOT NULL DEFAULT 0"),b.exec("COMMIT"),x(a),b}catch(a){if(y(b),!z(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm("state database initialization is busy")}catch(a){throw b.close(),a}}function x(a){for(let b of[a,`${a}-wal`,`${a}-shm`])try{g().chmodSync(b,384)}catch(a){if("ENOENT"!==a.code)throw a}}function y(a){try{a.exec("ROLLBACK")}catch{}}function z(a){let b=a instanceof Error?a.message:String(a);return/database is (?:locked|busy)|SQLITE_BUSY/i.test(b)}function A(a,b,c){for(let b=0;b<6e3;b+=1)try{a.exec("BEGIN IMMEDIATE");let b=c();return a.exec("COMMIT"),b}catch(b){if(y(a),!z(b))throw b;Atomics.wait(m,0,0,5)}throw new k.Qm(b)}function B(a,b,c={}){!function(a,b){let c=i().resolve(a);if(n.has(c)||r(a,b))return;let d=i().dirname(a);if(null===(0,l.X4)(d))return n.add(c);if(!(0,l.Ny)(d))throw new k.Qm("hot state migration is waiting for release promotion");n.add(c)}(a,b);let d=!c.reimportExisting&&r(a,b),e=w(a);try{for(let f=0;f<6e3;f+=1)try{if(e.exec("BEGIN IMMEDIATE"),t(a,d),c.reimportExisting&&!q(e,b)){let a=e.query("DELETE FROM state_leases WHERE collection = ?"),c=e.query("DELETE FROM state_collections WHERE collection = ?");for(let d of b)a.run(d.collection),c.run(d.collection)}for(let a of b){let b=e.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?").get(a.collection);if(b){if(b.schema_version!==a.schemaVersion)throw Error(`unsupported ${a.collection} SQLite schema: ${b.schema_version}`);if(b.migration_id!==a.migrationId)throw Error(`unsupported ${a.collection} SQLite migration: ${b.migration_id}`);continue}!function(a,b){let c=b.loadRecords(),d=+(c.length>0);a.query(`
41
+ CREATE TABLE IF NOT EXISTS state_imports (
42
+ collection TEXT PRIMARY KEY REFERENCES state_collections(collection) ON DELETE CASCADE,
43
+ source_name TEXT NOT NULL,
44
+ source_sha256 TEXT,
45
+ source_bytes INTEGER NOT NULL,
46
+ row_count INTEGER NOT NULL,
47
+ row_digest TEXT NOT NULL,
48
+ gap TEXT,
49
+ release TEXT,
50
+ imported_at TEXT NOT NULL,
51
+ mirror_sha256 TEXT,
52
+ mirror_revision INTEGER
53
+ );
54
+ `),b.query("PRAGMA table_info(state_collections)").all().some(a=>"change_floor"===a.name)||b.exec("ALTER TABLE state_collections ADD COLUMN change_floor INTEGER NOT NULL DEFAULT 0"),b.exec("COMMIT"),z(a),b}catch(a){if(A(b),!B(a))throw a;Atomics.wait(n,0,0,5)}throw new l.Qm("state database initialization is busy")}catch(a){throw b.close(),a}})(a))}function z(a){for(let b of[a,`${a}-wal`,`${a}-shm`])try{g().chmodSync(b,384)}catch(a){if("ENOENT"!==a.code)throw a}}function A(a){try{a.exec("ROLLBACK")}catch{}}function B(a){let b=a instanceof Error?a.message:String(a);return/database is (?:locked|busy)|SQLITE_BUSY/i.test(b)}function C(a,b,c){for(let b=0;b<6e3;b+=1)try{a.exec("BEGIN IMMEDIATE");let b=c();return a.exec("COMMIT"),b}catch(b){if(A(a),!B(b))throw b;Atomics.wait(n,0,0,5)}throw new l.Qm(b)}function D(a,b,c={}){!function(a,b){let c=i().resolve(a);if(o.has(c)||s(a,b))return;let d=i().dirname(a);if(null===(0,m.X4)(d))return o.add(c);if(!(0,m.Ny)(d))throw new l.Qm("hot state migration is waiting for release promotion");o.add(c)}(a,b);let d=!c.reimportExisting&&s(a,b),e=y(a);try{for(let f=0;f<6e3;f+=1)try{if(e.exec("BEGIN IMMEDIATE"),u(a,d),c.reimportExisting&&!r(e,b)){let a=e.query("DELETE FROM state_leases WHERE collection = ?"),c=e.query("DELETE FROM state_collections WHERE collection = ?");for(let d of b)a.run(d.collection),c.run(d.collection)}for(let a of b){let b=e.query("SELECT schema_version, migration_id FROM state_collections WHERE collection = ?").get(a.collection);if(b){if(b.schema_version!==a.schemaVersion)throw Error(`unsupported ${a.collection} SQLite schema: ${b.schema_version}`);if(b.migration_id!==a.migrationId)throw Error(`unsupported ${a.collection} SQLite migration: ${b.migration_id}`);continue}!function(a,b){let c=b.loadRecords(),d=+(c.length>0);a.query(`
42
55
  INSERT INTO state_collections(collection, schema_version, revision, migration_id, imported_at)
43
56
  VALUES (?, ?, ?, ?, ?)
44
57
  `).run(b.collection,b.schemaVersion,d,b.migrationId,new Date().toISOString());let e=a.query(`
45
58
  INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
46
59
  VALUES (?, ?, ?, ?, ?, ?)
47
- `),f=new Set;c.forEach((a,c)=>{let g=b.key(a);if(!g||f.has(g))throw Error(`duplicate or empty ${b.collection} migration key: ${g}`);f.add(g),e.run(b.collection,g,JSON.stringify(a),c,d,+(b.controllerActive?.(a)!==!1))})}(e,a),c.afterCollectionImport?.(a.collection)}t(a,d),e.exec("COMMIT"),x(a);return}catch(a){if(y(e),!z(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm("state migration is busy")}finally{e.close()}}function C(a){let b=[a];for(let c of[a,`${a}-wal`])try{let a=g().statSync(c,{bigint:!0});b.push(`${i().basename(c)}:${a.mtimeNs}:${a.size}`)}catch{b.push(`${i().basename(c)}:missing`)}return b.join("|")}function D(a,b){return E(a,[b]).get(b)??null}function E(a,b){let c=new Map(b.map(a=>[a,null]));if(!g().existsSync(a)||0===b.length)return c;let d=v(a);try{let a=b.map(()=>"?").join(", ");for(let e of d.query(`
60
+ `),f=new Set;c.forEach((a,c)=>{let g=b.key(a);if(!g||f.has(g))throw Error(`duplicate or empty ${b.collection} migration key: ${g}`);f.add(g),e.run(b.collection,g,JSON.stringify(a),c,d,+(b.controllerActive?.(a)!==!1))})}(e,a),c.afterCollectionImport?.(a.collection)}u(a,d),e.exec("COMMIT"),z(a);return}catch(a){if(A(e),!B(a))throw a;Atomics.wait(n,0,0,5)}throw new l.Qm("state migration is busy")}finally{e.close()}}class E extends Error{constructor(a){super(a),this.name="StateImportVerificationError"}}function F(a){let b=e().createHash("sha256");for(let c of a)b.update(c).update("\n");return b.digest("hex")}function G(a,b){let c=a.query("SELECT * FROM state_imports WHERE collection = ?").get(b);return c?{collection:c.collection,sourceName:c.source_name,sourceSha256:c.source_sha256,sourceBytes:c.source_bytes,rowCount:c.row_count,rowDigest:c.row_digest,gap:c.gap,release:c.release,importedAt:c.imported_at,mirrorSha256:c.mirror_sha256,mirrorRevision:c.mirror_revision}:null}function H(a,b){if(!g().existsSync(a))return null;let c=x(a);try{return G(c,b)}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return null;throw a}finally{c.close()}}function I(a,b){let c=b.rows.map(a=>({...a,valueJson:JSON.stringify(a.value)})),d=new Set;for(let a of c){if(!a.key||d.has(a.key))throw Error(`duplicate or empty ${b.collection} import key: ${a.key}`);d.add(a.key)}let e=F(c.map(a=>a.valueJson)),f=y(a);try{let d=C(f,`${b.collection} import is busy`,()=>{t(a);let d=G(f,b.collection);if(d)return{imported:!1,record:d};if(f.query("SELECT 1 FROM state_collections WHERE collection = ?").get(b.collection))throw new E(`${b.collection} collection exists without import evidence`);let g=+(c.length>0),h=new Date().toISOString();f.query(`
61
+ INSERT INTO state_collections(collection, schema_version, revision, migration_id, imported_at)
62
+ VALUES (?, ?, ?, ?, ?)
63
+ `).run(b.collection,b.schemaVersion,g,b.migrationId,h);let i=f.query(`
64
+ INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
65
+ VALUES (?, ?, ?, ?, ?, ?)
66
+ `);c.forEach((a,c)=>{i.run(b.collection,a.key,a.valueJson,c,g,+!!a.controllerActive)}),b.beforeVerify?.((a,...b)=>{f.query(a).run(...b)});let j=f.query("SELECT value_json FROM state_rows WHERE collection = ? ORDER BY row_order, row_key").all(b.collection).map(a=>a.value_json),k=F(j);if(j.length!==c.length||k!==e)throw new E(`${b.collection} import verification failed: ${j.length}/${c.length} rows, digest mismatch=${k!==e}`);return f.query(`
67
+ INSERT INTO state_imports(collection, source_name, source_sha256, source_bytes, row_count, row_digest, gap, release, imported_at)
68
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
69
+ `).run(b.collection,b.sourceName,b.sourceSha256,b.sourceBytes,c.length,k,b.gap,b.release,h),t(a),{imported:!0,record:G(f,b.collection)}});return z(a),d}finally{f.close()}}function J(a,b,c,d){let e=v(a);try{C(e,`${b} import is busy`,()=>{e.query("UPDATE state_imports SET mirror_sha256 = ?, mirror_revision = ? WHERE collection = ?").run(c,d,b)})}finally{e.close()}}function K(a){let b=[a];for(let c of[a,`${a}-wal`])try{let a=g().statSync(c,{bigint:!0});b.push(`${i().basename(c)}:${a.mtimeNs}:${a.size}`)}catch{b.push(`${i().basename(c)}:missing`)}return b.join("|")}function L(a,b){return M(a,[b]).get(b)??null}function M(a,b){let c=new Map(b.map(a=>[a,null]));if(!g().existsSync(a)||0===b.length)return c;let d=x(a);try{let a=b.map(()=>"?").join(", ");for(let e of d.query(`
48
70
  SELECT collections.collection, rows.row_key, rows.value_json
49
71
  FROM state_collections AS collections
50
72
  LEFT JOIN state_rows AS rows ON rows.collection = collections.collection
51
73
  WHERE collections.collection IN (${a})
52
74
  ORDER BY collections.collection, rows.row_order, rows.row_key
53
- `).all(...b)){let a=c.get(e.collection)??[];if(c.set(e.collection,a),null!==e.row_key&&null!==e.value_json)try{a.push(JSON.parse(e.value_json))}catch(a){throw Error(`corrupt ${e.collection} SQLite row: ${e.row_key}`,{cause:a})}}return c}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return c;throw a}finally{d.close()}}function F(a,b){return G(a,[b]).get(b)??null}function G(a,b){let c=new Map(b.map(a=>[a,null]));if(!g().existsSync(a))return c;let d=v(a);try{if(0===b.length)return c;let a=b.map(()=>"?").join(", ");for(let e of d.query(`
75
+ `).all(...b)){let a=c.get(e.collection)??[];if(c.set(e.collection,a),null!==e.row_key&&null!==e.value_json)try{a.push(JSON.parse(e.value_json))}catch(a){throw Error(`corrupt ${e.collection} SQLite row: ${e.row_key}`,{cause:a})}}return c}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return c;throw a}finally{d.close()}}function N(a,b){return O(a,[b]).get(b)??null}function O(a,b){let c=new Map(b.map(a=>[a,null]));if(!g().existsSync(a))return c;let d=x(a);try{if(0===b.length)return c;let a=b.map(()=>"?").join(", ");for(let e of d.query(`
54
76
  SELECT collection, revision FROM state_collections
55
77
  WHERE collection IN (${a})
56
- `).all(...b))c.set(e.collection,e.revision);return c}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return c;throw a}finally{d.close()}}class H{constructor(a,b){this.filename=a,this.options=b,this.cache=null,this.revisionCache=null,this.readDb=w(a);const c=this.collectionMeta();if(!c)throw Error(`SQLite state collection is not initialized: ${b.collection}`);if(c.schema_version!==b.schemaVersion)throw Error(`unsupported ${b.collection} SQLite schema: ${c.schema_version}`)}revision(){let a=C(this.filename);if(this.revisionCache?.signature===a)return this.revisionCache.revision;let b=this.collectionMeta()?.revision??0,c=C(this.filename);return c===a&&(this.revisionCache={signature:c,revision:b}),b}signature(){return`${this.filename}:${this.options.collection}:${this.revision()}`}snapshot(){return this.loadReadonly().map(a=>this.options.clone(a))}snapshotForController(){return this.loadControllerReadonly().map(a=>this.options.clone(a))}get(a){let b=this.readDb.query("SELECT value_json FROM state_rows WHERE collection = ? AND row_key = ?").get(this.options.collection,a);if(!b)return null;let c=this.decodeRow(b.value_json);return null===c?null:this.options.clone(c)}keyRange(a,b,c){if(!Number.isSafeInteger(c)||c<1||c>512)throw Error("invalid state page limit");return this.readDb.query(`
78
+ `).all(...b))c.set(e.collection,e.revision);return c}catch(a){if(/no such table/i.test(a instanceof Error?a.message:String(a)))return c;throw a}finally{d.close()}}class P{constructor(a,b){this.filename=a,this.options=b,this.cache=null,this.revisionCache=null,this.readDb=y(a);const c=this.collectionMeta();if(!c)throw Error(`SQLite state collection is not initialized: ${b.collection}`);if(c.schema_version!==b.schemaVersion)throw Error(`unsupported ${b.collection} SQLite schema: ${c.schema_version}`)}revision(){let a=K(this.filename);if(this.revisionCache?.signature===a)return this.revisionCache.revision;let b=this.collectionMeta()?.revision??0,c=K(this.filename);return c===a&&(this.revisionCache={signature:c,revision:b}),b}signature(){return`${this.filename}:${this.options.collection}:${this.revision()}`}snapshot(){return this.loadReadonly().map(a=>this.options.clone(a))}snapshotForController(){return this.loadControllerReadonly().map(a=>this.options.clone(a))}get(a){let b=this.readDb.query("SELECT value_json FROM state_rows WHERE collection = ? AND row_key = ?").get(this.options.collection,a);if(!b)return null;let c=this.decodeRow(b.value_json);return null===c?null:this.options.clone(c)}keyRange(a,b,c){if(!Number.isSafeInteger(c)||c<1||c>512)throw Error("invalid state page limit");return this.readDb.query(`
57
79
  SELECT value_json FROM state_rows
58
80
  WHERE collection = ? AND row_key > ? AND row_key <= ? ORDER BY row_key LIMIT ?
59
- `).all(this.options.collection,a,b,c).map(a=>{let b=this.decodeRow(a.value_json);if(null===b)throw Error("invalid bounded state row");return this.options.clone(b)})}boundedPatch(a,b){if(!Number.isSafeInteger(a)||a<1||a>4096)throw Error("invalid state patch limit");s(this.filename);let c=this.acquireLeaseSync();try{let d=u(this.filename);try{let e=A(d,this.options.busyMessage,()=>{s(this.filename),this.assertLease(d,c);let e=this.collectionMeta(d).revision+1,f=a,g=()=>{if(--f<0)throw Error("state patch row budget exceeded")},h=new Map,i=b({get:a=>{g();let b=d.query("SELECT value_json FROM state_rows WHERE collection = ? AND row_key = ?").get(this.options.collection,a);if(!b)return null;let c=this.decodeRow(b.value_json);if(null===c)throw Error("invalid bounded state row");return this.options.clone(c)},put:a=>{g(),this.validate(a);let b=this.options.key(a);d.query(`INSERT INTO state_rows(collection,row_key,value_json,row_order,row_revision,controller_active)
81
+ `).all(this.options.collection,a,b,c).map(a=>{let b=this.decodeRow(a.value_json);if(null===b)throw Error("invalid bounded state row");return this.options.clone(b)})}boundedPatch(a,b){if(!Number.isSafeInteger(a)||a<1||a>4096)throw Error("invalid state patch limit");t(this.filename);let c=this.acquireLeaseSync();try{let d=v(this.filename);try{let e=C(d,this.options.busyMessage,()=>{t(this.filename),this.assertLease(d,c);let e=this.collectionMeta(d).revision+1,f=a,g=()=>{if(--f<0)throw Error("state patch row budget exceeded")},h=new Map,i=b({get:a=>{g();let b=d.query("SELECT value_json FROM state_rows WHERE collection = ? AND row_key = ?").get(this.options.collection,a);if(!b)return null;let c=this.decodeRow(b.value_json);if(null===c)throw Error("invalid bounded state row");return this.options.clone(c)},put:a=>{g(),this.validate(a);let b=this.options.key(a);d.query(`INSERT INTO state_rows(collection,row_key,value_json,row_order,row_revision,controller_active)
60
82
  VALUES (?,?,?,0,?,?) ON CONFLICT(collection,row_key) DO UPDATE SET
61
- value_json=excluded.value_json,row_revision=excluded.row_revision,controller_active=excluded.controller_active`).run(this.options.collection,b,JSON.stringify(a),e,+(this.options.controllerActive?.(a)!==!1)),h.set(b,"upsert")},delete:a=>{g(),d.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?").run(this.options.collection,a),h.set(a,"delete")}});if(i instanceof Promise)throw Error("bounded state patches must be synchronous");if(s(this.filename),h.size){for(let[a,b]of h)d.query("INSERT INTO state_changes(collection,revision,row_key,operation) VALUES (?,?,?,?)").run(this.options.collection,e,a,b);d.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(e,this.options.collection),this.pruneChanges(d,e)}return i});return x(this.filename),this.invalidateAfterCommit(),e}finally{d.close()}}finally{this.releaseLeaseSync(c)}}loadReadonly(){this.readDb.exec("BEGIN");try{let a=this.collectionMeta();if(!a)throw Error(`SQLite state collection disappeared: ${this.options.collection}`);let b=a.revision;if(this.cache?.revision===b)return this.readDb.exec("COMMIT"),this.cache.ordered;if(!this.cache||this.cache.revision>b||this.cache.revision<a.change_floor){let a=this.loadFull(b);return this.readDb.exec("COMMIT"),a}let c=this.readDb.query(`
83
+ value_json=excluded.value_json,row_revision=excluded.row_revision,controller_active=excluded.controller_active`).run(this.options.collection,b,JSON.stringify(a),e,+(this.options.controllerActive?.(a)!==!1)),h.set(b,"upsert")},delete:a=>{g(),d.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?").run(this.options.collection,a),h.set(a,"delete")}});if(i instanceof Promise)throw Error("bounded state patches must be synchronous");if(t(this.filename),h.size){for(let[a,b]of h)d.query("INSERT INTO state_changes(collection,revision,row_key,operation) VALUES (?,?,?,?)").run(this.options.collection,e,a,b);d.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(e,this.options.collection),this.pruneChanges(d,e)}return i});return z(this.filename),this.invalidateAfterCommit(),e}finally{d.close()}}finally{this.releaseLeaseSync(c)}}loadReadonly(){this.readDb.exec("BEGIN");try{let a=this.collectionMeta();if(!a)throw Error(`SQLite state collection disappeared: ${this.options.collection}`);let b=a.revision;if(this.cache?.revision===b)return this.readDb.exec("COMMIT"),this.cache.ordered;if(!this.cache||this.cache.revision>b||this.cache.revision<a.change_floor){let a=this.loadFull(b);return this.readDb.exec("COMMIT"),a}let c=this.readDb.query(`
62
84
  SELECT DISTINCT row_key FROM state_changes
63
85
  WHERE collection = ? AND revision > ? AND revision <= ?
64
86
  ORDER BY revision, row_key
65
87
  `).all(this.options.collection,this.cache.revision,b);if(0===c.length){let a=this.loadFull(b);return this.readDb.exec("COMMIT"),a}this.options.onIncrementalReadSnapshot?.(b);let d=[...new Set(c.map(a=>a.row_key))],e=new Map;for(let a=0;a<d.length;a+=400){let b=d.slice(a,a+400),c=b.map(()=>"?").join(", "),f=[this.options.collection,...b];for(let a of this.readDb.query(`
66
88
  SELECT row_key, value_json, row_order, row_revision, controller_active
67
89
  FROM state_rows WHERE collection = ? AND row_key IN (${c})
68
- `).all(...f))e.set(a.row_key,a)}let f=new Map(this.cache.records),g=!1;for(let a of d){let b=e.get(a);if(!b){f.has(a)&&(g=!0),f.delete(a);continue}let c=f.get(a);if(c&&c.order===b.row_order||(g=!0),c?.valueJson===b.value_json){f.set(a,{...c,order:b.row_order,rowRevision:b.row_revision});continue}let d=this.decodeRow(b.value_json);null===d?f.delete(a):f.set(a,{valueJson:b.value_json,value:d,order:b.row_order,rowRevision:b.row_revision})}let h=g?this.rememberCache(b,f):this.rememberCacheWithOrder(b,f,this.cache.orderedKeys);return this.readDb.exec("COMMIT"),h}catch(a){throw y(this.readDb),a}}async moveMatchingTo(a,b,c={}){if(a===this||a.filename!==this.filename)throw Error("atomic state moves require two collections in one database");s(this.filename);let d=[this,a].sort((a,b)=>a.options.collection.localeCompare(b.options.collection)),e=new Map;try{for(let a of d)e.set(a,await a.acquireLease());let f=u(this.filename);try{let d=A(f,this.options.busyMessage,()=>{s(this.filename),this.assertLease(f,e.get(this)),a.assertLease(f,e.get(a));let d=f.query(`
90
+ `).all(...f))e.set(a.row_key,a)}let f=new Map(this.cache.records),g=!1;for(let a of d){let b=e.get(a);if(!b){f.has(a)&&(g=!0),f.delete(a);continue}let c=f.get(a);if(c&&c.order===b.row_order||(g=!0),c?.valueJson===b.value_json){f.set(a,{...c,order:b.row_order,rowRevision:b.row_revision});continue}let d=this.decodeRow(b.value_json);null===d?f.delete(a):f.set(a,{valueJson:b.value_json,value:d,order:b.row_order,rowRevision:b.row_revision})}let h=g?this.rememberCache(b,f):this.rememberCacheWithOrder(b,f,this.cache.orderedKeys);return this.readDb.exec("COMMIT"),h}catch(a){throw A(this.readDb),a}}async moveMatchingTo(a,b,c={}){if(a===this||a.filename!==this.filename)throw Error("atomic state moves require two collections in one database");t(this.filename);let d=[this,a].sort((a,b)=>a.options.collection.localeCompare(b.options.collection)),e=new Map;try{for(let a of d)e.set(a,await a.acquireLease());let f=v(this.filename);try{let d=C(f,this.options.busyMessage,()=>{t(this.filename),this.assertLease(f,e.get(this)),a.assertLease(f,e.get(a));let d=f.query(`
69
91
  SELECT row_key, value_json, row_order, row_revision, controller_active
70
92
  FROM state_rows WHERE collection = ? ORDER BY row_order, row_key
71
93
  `).all(this.options.collection).flatMap(a=>{let c=this.decodeRow(a.value_json);return null!==c&&b(c)?[{row:a,record:c}]:[]});if(0===d.length)return 0;for(let b of d)a.validate(b.record);let g=this.collectionMeta(f).revision+1,h=a.collectionMeta(f),i=new Map(f.query(`
@@ -81,14 +103,14 @@
81
103
  `),n=f.query(`
82
104
  INSERT INTO state_changes(collection, revision, row_key, operation)
83
105
  VALUES (?, ?, ?, ?)
84
- `);for(let b of k)m.run(a.options.collection,b.key,b.valueJson,b.order,l,b.controllerActive),n.run(a.options.collection,l,b.key,"upsert");let o=f.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?");for(let{row:a}of d)o.run(this.options.collection,a.row_key),n.run(this.options.collection,g,a.row_key,"delete");return f.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(g,this.options.collection),k.length>0&&f.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(l,a.options.collection),this.pruneChanges(f,g),k.length>0&&a.pruneChanges(f,l),c.beforeCommit?.(),d.length});return d>0&&(x(this.filename),this.invalidateAfterCommit(),a.invalidateAfterCommit()),d}finally{f.close()}}finally{for(let a of[...d].reverse()){let b=e.get(a);b&&await a.releaseLease(b)}}}replaceSync(a,b={}){s(this.filename);let c=this.acquireLeaseSync();try{b.beforePersist?.(a),this.persistReplacement(c,a,!0===b.mergeOmitted,b.deleteKeys??[])}finally{this.releaseLeaseSync(c)}}patchSync(a){s(this.filename);let b=this.acquireLeaseSync();try{let c=a();this.persistReplacement(b,c.records,!0,c.deleteKeys??[])}finally{this.releaseLeaseSync(b)}}withSnapshotSync(a){let b=this.acquireLeaseSync();try{return a(this.snapshot())}finally{this.releaseLeaseSync(b)}}async mutate(a,b,c=!1,d){s(this.filename);let e=await this.acquireLease(d);try{let d=c?this.loadControllerReadonly():this.loadReadonly(),f=this.track(d);return await a(f.records,a=>{this.persistSession(e,f,b,a)})}finally{await this.releaseLease(e)}}checkpointMirror(a){let b=this.acquireLeaseSync();try{let b=this.snapshot();a(b,this.revision())}finally{this.releaseLeaseSync(b)}}checkpointMirrorForDemotion(a,b=2){for(let c=0;c<b;c+=1){let b=-1;if(this.checkpointMirror((c,d)=>{b=d,a(c,d)}),this.revision()===b)return b}throw Error(`${this.options.collection} rollback checkpoint did not converge`)}async checkpointMirrorForDemotionAsync(a,b=2){for(let c=0;c<b;c+=1){let b,c=await this.acquireLease();try{let c=this.snapshot();b=this.revision(),a(c,b)}finally{await this.releaseLease(c)}if(this.revision()===b)return b}throw Error(`${this.options.collection} rollback checkpoint did not converge`)}collectionMeta(a=this.readDb){return a.query("SELECT revision, schema_version, change_floor FROM state_collections WHERE collection = ?").get(this.options.collection)??null}decodeRow(a){try{let b=this.options.decode(JSON.parse(a));if(null===b&&this.options.strictDecode)throw Error(`${this.options.collection} SQLite row is malformed`);return b}catch(a){if(this.options.strictDecode)throw this.options.decodeError?.(a)??a;return this.options.onDecodeError?.(a),null}}loadControllerReadonly(){return this.readDb.query(`
106
+ `);for(let b of k)m.run(a.options.collection,b.key,b.valueJson,b.order,l,b.controllerActive),n.run(a.options.collection,l,b.key,"upsert");let o=f.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?");for(let{row:a}of d)o.run(this.options.collection,a.row_key),n.run(this.options.collection,g,a.row_key,"delete");return f.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(g,this.options.collection),k.length>0&&f.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(l,a.options.collection),this.pruneChanges(f,g),k.length>0&&a.pruneChanges(f,l),c.beforeCommit?.(),d.length});return d>0&&(z(this.filename),this.invalidateAfterCommit(),a.invalidateAfterCommit()),d}finally{f.close()}}finally{for(let a of[...d].reverse()){let b=e.get(a);b&&await a.releaseLease(b)}}}replaceSync(a,b={}){t(this.filename);let c=this.acquireLeaseSync();try{b.beforePersist?.(a),this.persistReplacement(c,a,!0===b.mergeOmitted,b.deleteKeys??[])}finally{this.releaseLeaseSync(c)}}patchSync(a,b={}){let c=b.fenceOwner?()=>u(this.filename,!0):()=>t(this.filename);c();let d=this.acquireLeaseSync();try{let b=a();this.persistReplacement(d,b.records,!0,b.deleteKeys??[],c,new Set(b.appendKeys??[]))}finally{this.releaseLeaseSync(d)}}rowRevisions(){return new Map(this.readDb.query("SELECT row_key, row_revision FROM state_rows WHERE collection = ?").all(this.options.collection).map(a=>[a.row_key,a.row_revision]))}withSnapshotSync(a){let b=this.acquireLeaseSync();try{return a(this.snapshot())}finally{this.releaseLeaseSync(b)}}async mutate(a,b,c=!1,d){t(this.filename);let e=await this.acquireLease(d);try{let d=c?this.loadControllerReadonly():this.loadReadonly(),f=this.track(d);return await a(f.records,a=>{this.persistSession(e,f,b,a)})}finally{await this.releaseLease(e)}}checkpointMirror(a){let b=this.acquireLeaseSync();try{let b=this.snapshot();a(b,this.revision())}finally{this.releaseLeaseSync(b)}}checkpointMirrorForDemotion(a,b=2){for(let c=0;c<b;c+=1){let b=-1;if(this.checkpointMirror((c,d)=>{b=d,a(c,d)}),this.revision()===b)return b}throw Error(`${this.options.collection} rollback checkpoint did not converge`)}async checkpointMirrorForDemotionAsync(a,b=2){for(let c=0;c<b;c+=1){let b,c=await this.acquireLease();try{let c=this.snapshot();b=this.revision(),a(c,b)}finally{await this.releaseLease(c)}if(this.revision()===b)return b}throw Error(`${this.options.collection} rollback checkpoint did not converge`)}collectionMeta(a=this.readDb){return a.query("SELECT revision, schema_version, change_floor FROM state_collections WHERE collection = ?").get(this.options.collection)??null}decodeRow(a){try{let b=this.options.decode(JSON.parse(a));if(null===b&&this.options.strictDecode)throw Error(`${this.options.collection} SQLite row is malformed`);return b}catch(a){if(this.options.strictDecode)throw this.options.decodeError?.(a)??a;return this.options.onDecodeError?.(a),null}}loadControllerReadonly(){return this.readDb.query(`
85
107
  SELECT value_json FROM state_rows
86
108
  WHERE collection = ? AND controller_active = 1
87
109
  ORDER BY row_order, row_key
88
110
  `).all(this.options.collection).flatMap(a=>{let b=this.decodeRow(a.value_json);return null===b?[]:[b]})}loadFull(a){let b=new Map;for(let a of this.readDb.query(`
89
111
  SELECT row_key, value_json, row_order, row_revision
90
112
  FROM state_rows WHERE collection = ? ORDER BY row_order, row_key
91
- `).all(this.options.collection)){let c=this.decodeRow(a.value_json);null!==c&&b.set(a.row_key,{valueJson:a.value_json,value:c,order:a.row_order,rowRevision:a.row_revision})}return this.rememberCache(a,b)}rememberCache(a,b){let c=[...b.entries()].sort((a,b)=>a[1].order-b[1].order||a[0].localeCompare(b[0])),d=c.map(a=>a[0]),e=c.map(a=>a[1].value);return this.cache={revision:a,records:b,orderedKeys:d,ordered:e},this.revisionCache=null,e}rememberCacheWithOrder(a,b,c){let d=c.flatMap(a=>{let c=b.get(a);return c?[c.value]:[]});return this.cache={revision:a,records:b,orderedKeys:c,ordered:d},this.revisionCache=null,d}invalidateAfterCommit(){this.revisionCache=null}track(a){let b=new Map,c=[...a],d={records:[],rawRecords:c,materialized:b,structural:!1},e=a=>{if("string"!=typeof a||!/^(?:0|[1-9][0-9]*)$/.test(a))return null;let b=Number(a);return Number.isSafeInteger(b)?b:null};return d.records=new Proxy(c,{get:(a,c,d)=>{let f=e(c);if(null===f||f>=a.length)return Reflect.get(a,c,d);if(!b.has(f)){let c=this.options.clone(a[f]);a[f]=c,b.set(f,{originalKey:this.options.key(c),persistedJson:JSON.stringify(c),value:c})}return a[f]},set:(a,c,f)=>{d.structural=!0;let g=e(c);return null!==g&&b.delete(g),Reflect.set(a,c,f)},deleteProperty:(a,c)=>{d.structural=!0;let f=e(c);return null!==f&&b.delete(f),Reflect.deleteProperty(a,c)},defineProperty:(a,c,f)=>{d.structural=!0;let g=e(c);return null!==g&&b.delete(g),Reflect.defineProperty(a,c,f)}}),d}persistSession(a,b,c,d){if(d){if(0===d.length)return;c?.({records:b.records,dirtyRecords:d,structural:!1}),this.persistChangedRows(a,d);let e=new Set(d.map(a=>this.options.key(a)));for(let a of b.materialized.values()){let b=this.options.key(a.value);e.has(b)&&(a.originalKey=b,a.persistedJson=JSON.stringify(a.value))}return}let e=[];if(b.structural){for(let a of b.records)e.push(a);c?.({records:b.records,dirtyRecords:e,structural:!0}),this.persistReplacement(a,e,!1),b.structural=!1,b.materialized.clear(),b.rawRecords.forEach((a,c)=>b.materialized.set(c,{originalKey:this.options.key(a),persistedJson:JSON.stringify(a),value:a}));return}for(let d of b.materialized.values()){if(this.options.key(d.value)!==d.originalKey)return b.structural=!0,this.persistSession(a,b,c);JSON.stringify(d.value)!==d.persistedJson&&e.push(d.value)}if(0!==e.length)for(let d of(c?.({records:b.records,dirtyRecords:e,structural:!1}),this.persistChangedRows(a,e),b.materialized.values()))d.originalKey=this.options.key(d.value),d.persistedJson=JSON.stringify(d.value)}validate(a){if(!this.options.key(a))throw Error(`refusing to persist an empty ${this.options.collection} row key`);this.options.validate?.(a)}persistChangedRows(a,b){for(let a of b)this.validate(a);let c=u(this.filename);try{let d=A(c,this.options.busyMessage,()=>{s(this.filename),this.assertLease(c,a);let d=this.collectionMeta(c),e=c.query(`
113
+ `).all(this.options.collection)){let c=this.decodeRow(a.value_json);null!==c&&b.set(a.row_key,{valueJson:a.value_json,value:c,order:a.row_order,rowRevision:a.row_revision})}return this.rememberCache(a,b)}rememberCache(a,b){let c=[...b.entries()].sort((a,b)=>a[1].order-b[1].order||a[0].localeCompare(b[0])),d=c.map(a=>a[0]),e=c.map(a=>a[1].value);return this.cache={revision:a,records:b,orderedKeys:d,ordered:e},this.revisionCache=null,e}rememberCacheWithOrder(a,b,c){let d=c.flatMap(a=>{let c=b.get(a);return c?[c.value]:[]});return this.cache={revision:a,records:b,orderedKeys:c,ordered:d},this.revisionCache=null,d}invalidateAfterCommit(){this.revisionCache=null}track(a){let b=new Map,c=[...a],d={records:[],rawRecords:c,materialized:b,structural:!1},e=a=>{if("string"!=typeof a||!/^(?:0|[1-9][0-9]*)$/.test(a))return null;let b=Number(a);return Number.isSafeInteger(b)?b:null};return d.records=new Proxy(c,{get:(a,c,d)=>{let f=e(c);if(null===f||f>=a.length)return Reflect.get(a,c,d);if(!b.has(f)){let c=this.options.clone(a[f]);a[f]=c,b.set(f,{originalKey:this.options.key(c),persistedJson:JSON.stringify(c),value:c})}return a[f]},set:(a,c,f)=>{d.structural=!0;let g=e(c);return null!==g&&b.delete(g),Reflect.set(a,c,f)},deleteProperty:(a,c)=>{d.structural=!0;let f=e(c);return null!==f&&b.delete(f),Reflect.deleteProperty(a,c)},defineProperty:(a,c,f)=>{d.structural=!0;let g=e(c);return null!==g&&b.delete(g),Reflect.defineProperty(a,c,f)}}),d}persistSession(a,b,c,d){if(d){if(0===d.length)return;c?.({records:b.records,dirtyRecords:d,structural:!1}),this.persistChangedRows(a,d);let e=new Set(d.map(a=>this.options.key(a)));for(let a of b.materialized.values()){let b=this.options.key(a.value);e.has(b)&&(a.originalKey=b,a.persistedJson=JSON.stringify(a.value))}return}let e=[];if(b.structural){for(let a of b.records)e.push(a);c?.({records:b.records,dirtyRecords:e,structural:!0}),this.persistReplacement(a,e,!1),b.structural=!1,b.materialized.clear(),b.rawRecords.forEach((a,c)=>b.materialized.set(c,{originalKey:this.options.key(a),persistedJson:JSON.stringify(a),value:a}));return}for(let d of b.materialized.values()){if(this.options.key(d.value)!==d.originalKey)return b.structural=!0,this.persistSession(a,b,c);JSON.stringify(d.value)!==d.persistedJson&&e.push(d.value)}if(0!==e.length)for(let d of(c?.({records:b.records,dirtyRecords:e,structural:!1}),this.persistChangedRows(a,e),b.materialized.values()))d.originalKey=this.options.key(d.value),d.persistedJson=JSON.stringify(d.value)}validate(a){if(!this.options.key(a))throw Error(`refusing to persist an empty ${this.options.collection} row key`);this.options.validate?.(a)}persistChangedRows(a,b){for(let a of b)this.validate(a);let c=v(this.filename);try{let d=C(c,this.options.busyMessage,()=>{t(this.filename),this.assertLease(c,a);let d=this.collectionMeta(c),e=c.query(`
92
114
  SELECT row_key, value_json, row_order, row_revision, controller_active
93
115
  FROM state_rows WHERE collection = ? AND row_key = ?
94
116
  `),f=b.map(a=>{let b=this.options.key(a),c=JSON.stringify(a),d=+(this.options.controllerActive?.(a)!==!1);return{key:b,valueJson:c,controllerActive:d,row:e.get(this.options.collection,b)}}).filter(a=>a.row?.value_json!==a.valueJson||a.row.controller_active!==a.controllerActive);if(0===f.length)return null;let g=d.revision+1,h=(c.query("SELECT COALESCE(MAX(row_order), -1) AS value FROM state_rows WHERE collection = ?").get(this.options.collection)?.value??-1)+1,i=c.query(`
@@ -101,10 +123,10 @@
101
123
  `),j=c.query(`
102
124
  INSERT INTO state_changes(collection, revision, row_key, operation)
103
125
  VALUES (?, ?, ?, 'upsert')
104
- `);for(let a of f){let b=a.row?.row_order??h++;i.run(this.options.collection,a.key,a.valueJson,b,g,a.controllerActive),j.run(this.options.collection,g,a.key)}return c.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(g,this.options.collection),this.pruneChanges(c,g),g});null!==d&&(x(this.filename),this.invalidateAfterCommit())}finally{c.close()}}persistReplacement(a,b,c,d=[]){for(let a of b)this.validate(a);let e=new Set;for(let a of b){let b=this.options.key(a);if(e.has(b))throw Error(`duplicate ${this.options.collection} row key: ${b}`);e.add(b)}let f=new Set(d);if(f.size!==d.length||[...f].some(a=>!a||e.has(a)))throw Error(`invalid ${this.options.collection} row deletion`);let g=u(this.filename);try{let d=A(g,this.options.busyMessage,()=>{s(this.filename),this.assertLease(g,a);let d=this.collectionMeta(g),h=new Map(g.query(`
126
+ `);for(let a of f){let b=a.row?.row_order??h++;i.run(this.options.collection,a.key,a.valueJson,b,g,a.controllerActive),j.run(this.options.collection,g,a.key)}return c.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(g,this.options.collection),this.pruneChanges(c,g),g});null!==d&&(z(this.filename),this.invalidateAfterCommit())}finally{c.close()}}persistReplacement(a,b,c,d=[],e=()=>t(this.filename),f=new Set){for(let a of b)this.validate(a);let g=new Set;for(let a of b){let b=this.options.key(a);if(g.has(b))throw Error(`duplicate ${this.options.collection} row key: ${b}`);g.add(b)}let h=new Set(d);if(h.size!==d.length||[...h].some(a=>!a||g.has(a)))throw Error(`invalid ${this.options.collection} row deletion`);let i=v(this.filename);try{let d=C(i,this.options.busyMessage,()=>{e(),this.assertLease(i,a);let d=this.collectionMeta(i),j=new Map(i.query(`
105
127
  SELECT row_key, value_json, row_order, row_revision, controller_active
106
128
  FROM state_rows WHERE collection = ?
107
- `).all(this.options.collection).map(a=>[a.row_key,a])),i=b.map((a,b)=>({key:this.options.key(a),valueJson:JSON.stringify(a),order:b,controllerActive:+(this.options.controllerActive?.(a)!==!1)})).filter(a=>{let b=h.get(a.key);return!b||b.value_json!==a.valueJson||b.controller_active!==a.controllerActive||!c&&b.row_order!==a.order}),j=c?[...f].filter(a=>h.has(a)):[...h.keys()].filter(a=>!e.has(a));if(0===i.length&&0===j.length)return null;let k=d.revision+1,l=c?Math.max(-1,...[...h.values()].map(a=>a.row_order))+1:0,m=g.query(`
129
+ `).all(this.options.collection).map(a=>[a.row_key,a])),k=b.map((a,b)=>({key:this.options.key(a),valueJson:JSON.stringify(a),order:b,controllerActive:+(this.options.controllerActive?.(a)!==!1)})).filter(a=>{let b=j.get(a.key);return!b||b.value_json!==a.valueJson||b.controller_active!==a.controllerActive||!c&&b.row_order!==a.order}),l=c?[...h].filter(a=>j.has(a)):[...j.keys()].filter(a=>!g.has(a));if(0===k.length&&0===l.length)return null;let m=d.revision+1,n=c?Math.max(-1,...[...j.values()].map(a=>a.row_order))+1:0,o=i.query(`
108
130
  INSERT INTO state_rows(collection, row_key, value_json, row_order, row_revision, controller_active)
109
131
  VALUES (?, ?, ?, ?, ?, ?)
110
132
  ON CONFLICT(collection, row_key) DO UPDATE SET
@@ -112,10 +134,10 @@
112
134
  row_order = excluded.row_order,
113
135
  row_revision = excluded.row_revision,
114
136
  controller_active = excluded.controller_active
115
- `),n=g.query(`
137
+ `),p=i.query(`
116
138
  INSERT INTO state_changes(collection, revision, row_key, operation)
117
139
  VALUES (?, ?, ?, ?)
118
- `);for(let a of i){let b=h.get(a.key),d=c?b?.row_order??l++:a.order;m.run(this.options.collection,a.key,a.valueJson,d,k,a.controllerActive),n.run(this.options.collection,k,a.key,"upsert")}let o=g.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?");for(let a of j)o.run(this.options.collection,a),n.run(this.options.collection,k,a,"delete");return g.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(k,this.options.collection),this.pruneChanges(g,k),k});null!==d&&(x(this.filename),this.invalidateAfterCommit())}finally{g.close()}}assertLease(a,b){let c=a.query("SELECT owner_token FROM state_leases WHERE collection = ?").get(this.options.collection);if(c?.owner_token!==b)throw new k.Qm(this.options.busyMessage)}pruneChanges(a,b){let c=b-1024;c<=0||(a.query(`
140
+ `);for(let a of k){let b=j.get(a.key),d=c?(f.has(a.key)?void 0:b?.row_order)??n++:a.order;o.run(this.options.collection,a.key,a.valueJson,d,m,a.controllerActive),p.run(this.options.collection,m,a.key,"upsert")}let q=i.query("DELETE FROM state_rows WHERE collection = ? AND row_key = ?");for(let a of l)q.run(this.options.collection,a),p.run(this.options.collection,m,a,"delete");return i.query("UPDATE state_collections SET revision = ? WHERE collection = ?").run(m,this.options.collection),this.pruneChanges(i,m),m});null!==d&&(z(this.filename),this.invalidateAfterCommit())}finally{i.close()}}assertLease(a,b){let c=a.query("SELECT owner_token FROM state_leases WHERE collection = ?").get(this.options.collection);if(c?.owner_token!==b)throw new l.Qm(this.options.busyMessage)}pruneChanges(a,b){let c=b-1024;c<=0||(a.query(`
119
141
  DELETE FROM state_changes WHERE rowid IN (
120
142
  SELECT rowid FROM state_changes
121
143
  WHERE collection = ? AND revision <= ?
@@ -130,4 +152,4 @@
130
152
  `).get(this.options.collection);if(d&&Number.isInteger((c={pid:d.owner_pid,startIdentity:d.owner_start_identity}).pid)&&c.pid>0&&function(a,b){if(!j.B.pidAlive(a))return!1;if(null===b)return!0;let c=j.B.processIdentity(a);return null===c||c===b}(c.pid,c.startIdentity))return a.exec("ROLLBACK"),!1;return d&&a.query("DELETE FROM state_leases WHERE collection = ?").run(this.options.collection),a.query(`
131
153
  INSERT INTO state_leases(collection, owner_token, owner_pid, owner_start_identity, acquired_at)
132
154
  VALUES (?, ?, ?, ?, ?)
133
- `).run(this.options.collection,b,process.pid,j.B.processIdentity(process.pid),Date.now()),a.exec("COMMIT"),!0}catch(b){if(y(a),z(b))return!1;throw b}}acquireLeaseSync(){let a=u(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;Atomics.wait(m,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{a.close()}}async acquireLease(a){let b=u(this.filename),c=e().randomUUID(),d=void 0===a?null:Date.now()+Math.max(0,a);try{for(let a=0;a<6e3;a+=1){if(this.tryAcquireLease(b,c))return c;if(null!==d&&Date.now()>=d)break;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}releaseLeaseSync(a){let b=u(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(y(b),!z(a))throw a;Atomics.wait(m,0,0,5)}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}async releaseLease(a){let b=u(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(y(b),!z(a))throw a;await new Promise(a=>setTimeout(a,5))}throw new k.Qm(this.options.busyMessage)}finally{b.close()}}}},27832:(a,b,c)=>{c.d(b,{MO:()=>m,Mv:()=>l,NP:()=>p,V5:()=>u,Xe:()=>o,im:()=>v,qe:()=>q,rj:()=>r,z:()=>n});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){return/^repo-[0-9a-f]{32}$/.test(a)}function p(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c;return{project:q(b),displayName:d}}function q(a){return`dir-${e().createHash("sha256").update(`dir:${a}`).digest("hex").slice(0,32)}`}function r(a){return a===l?m:a}function s(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function t(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return s(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return s(f)?f:null}catch{return null}}function u(a){let b=k().resolve(a);for(;;){if(t(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function v(a){let b,c=t(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),f=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),h=d?function(a,b){let c=/^[a-z][a-z0-9+.-]*:\/\//i.test(a)?null:/^(?:[^@\s]+@)?([^:/\s]+):(.+)$/.exec(a);if(c){let a=c[1].toLowerCase(),b=c[2].replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return b?`${a}/${b}`:null}try{let b=new URL(a);if("file:"===b.protocol){let a=k().resolve(b.pathname).replace(/\.git$/i,"");return`file:${a}`}let c=b.hostname.toLowerCase(),d=b.port?`:${b.port}`:"",e=b.pathname.replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return c&&e?`${c}${d}/${e}`:null}catch{let c=k().resolve(b,a).replace(/\.git$/i,"");return`file:${c}`}}(d,a):`local:${f}`;return h?function(a){let b=a.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!b)return null;let c=e().createHash("sha256").update(a).digest("hex").slice(0,32);return{project:`repo-${c}`,displayName:b,canonicalRemote:a}}(h):null}},43734:(a,b,c)=>{c.d(b,{Ne:()=>h,Ny:()=>n,T2:()=>o,X4:()=>l,a5:()=>k,jU:()=>m}),c(77598);var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);c(2033),c(9302);let h="sqlite-v1",i="LLV_HOT_STATE_RELEASE_REVISION";function j(a){return"string"==typeof a&&/^[0-9a-f]{40}$/.test(a)}function k(a){try{var b;let c=!(b=JSON.parse(e().readFileSync(g().join(a,"hot-state-authority.json"),"utf8")))||"object"!=typeof b||Array.isArray(b)?null:1===b.schemaVersion&&Number.isInteger(b.epoch)&&!(b.epoch<1)&&["legacy","preparing","sqlite","fencing"].includes(String(b.mode))&&(null===b.releaseRevision||j(b.releaseRevision))&&"string"==typeof b.updatedAt&&(void 0===b.activationReadyAt||"string"==typeof b.activationReadyAt)&&(void 0===b.releaseReadyAt||"string"==typeof b.releaseReadyAt)&&(void 0===b.releaseReadyAt||void 0!==b.activationReadyAt)&&(void 0===b.activationOwner||b.activationOwner&&Number.isSafeInteger(b.activationOwner.pid)&&!(b.activationOwner.pid<=0)&&(null===b.activationOwner.startIdentity||"string"==typeof b.activationOwner.startIdentity)&&(void 0===b.activationOwner.bootEpoch||null===b.activationOwner.bootEpoch||"string"==typeof b.activationOwner.bootEpoch))&&(void 0===b.checkpoint||function(a){if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.revisions,c=b?[b.flows,b.pipelines,b.pipelinesArchive,b.workflows]:[];return"string"==typeof a.acknowledgedAt&&4===c.length&&c.every(a=>Number.isInteger(a)&&a>=0)}(b.checkpoint))?b:null;if(!c)throw Error("hot-state authority is invalid");return c}catch(a){if("ENOENT"===a.code)return null;throw a}}function l(a,b=process.env){let c=b.LLV_VIEWER_DEPLOY_TARGET?.trim()||g().join(a,"viewer-release.json");try{var d;let a=!(d=JSON.parse(e().readFileSync(c,"utf8")))||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.endpoint&&j(d.revision)&&(void 0===d.hotStateBackend||d.hotStateBackend===h)?d:null;if(!a)throw Error("Viewer release target cannot authorize hot state");return a}catch(a){if("ENOENT"===a.code)return null;throw a}}function m(a,b=process.env){let c=l(a,b);if(!c)return null;let d=b[i]?.trim();if(d)return j(d)&&d===c.revision?d:null;let e=b.PORT?.trim();if(!e)return null;try{return new URL(c.endpoint).port===e?c.revision:null}catch{return null}}function n(a,b=process.env){let c=l(a,b);if(!c)return!0;let d=k(a),e=m(a,b);return e?d?.mode==="sqlite"&&d.releaseRevision===e&&c.revision===e:!(b[i]?.trim()||b.PORT?.trim())&&d?.mode==="sqlite"&&d.releaseRevision===c.revision&&"string"==typeof d.activationReadyAt}function o(a,b=process.env){let c=l(a,b);if(!c)return!0;let d=m(a,b);if(!d)return!1;let e=k(a);return e?.mode==="preparing"&&e.releaseRevision===d&&c.revision===d}},89940:(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(91724),k=c(13117),l=c(27832);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}}}};
155
+ `).run(this.options.collection,b,process.pid,j.B.processIdentity(process.pid),Date.now()),a.exec("COMMIT"),!0}catch(b){if(A(a),B(b))return!1;throw b}}acquireLeaseSync(){let a=v(this.filename),b=e().randomUUID();try{for(let c=0;c<6e3;c+=1){if(this.tryAcquireLease(a,b))return b;Atomics.wait(n,0,0,5)}throw new l.Qm(this.options.busyMessage)}finally{a.close()}}async acquireLease(a){let b=v(this.filename),c=e().randomUUID(),d=void 0===a?null:Date.now()+Math.max(0,a);try{for(let a=0;a<6e3;a+=1){if(this.tryAcquireLease(b,c))return c;if(null!==d&&Date.now()>=d)break;await new Promise(a=>setTimeout(a,5))}throw new l.Qm(this.options.busyMessage)}finally{b.close()}}releaseLeaseSync(a){let b=v(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(A(b),!B(a))throw a;Atomics.wait(n,0,0,5)}throw new l.Qm(this.options.busyMessage)}finally{b.close()}}async releaseLease(a){let b=v(this.filename);try{for(let c=0;c<6e3;c+=1)try{b.exec("BEGIN IMMEDIATE"),b.query("DELETE FROM state_leases WHERE collection = ? AND owner_token = ?").run(this.options.collection,a),b.exec("COMMIT");return}catch(a){if(A(b),!B(a))throw a;await new Promise(a=>setTimeout(a,5))}throw new l.Qm(this.options.busyMessage)}finally{b.close()}}}},25087:(a,b,c)=>{c.d(b,{PK:()=>k,h2:()=>h,mm:()=>g});var d=c(73024),e=c.n(d);class f extends Error{constructor(a){super(a),this.code="LLV_DATABASE_REPLACED",this.name="DatabaseReplacedError"}}function g(a){try{let b=e().statSync(a,{bigint:!0});return`${b.dev}:${b.ino}`}catch{return null}}function h(a){return`${a}.swapping`}function i(a,b=Date.now()){try{return b-e().statSync(h(a)).mtimeMs<6e5}catch{return!1}}let j=new Set(["exec","run","query","prepare","transaction","serialize","loadExtension","fileControl"]);function k(a,b,c={}){let d,e=()=>{for(let c=0;c<3;c+=1){if(i(a))throw new f(`${a} is being restored from a backup; try again`);let c=g(a),d=b(),e=g(a);if((null===c||c===e)&&!i(a))return{db:d,identity:e};d.close()}throw new f(`${a} kept changing while it was opened`)},h=e(),l=()=>!i(a)&&g(a)===h.identity;return d=new Proxy(h.db,{get(b,g){j.has(g)&&(b=>{let g=h.db;if(g.inTransaction){if(!b||l())return;try{g.exec("ROLLBACK")}catch{}throw new f(`${a} was replaced while this transaction was open; it was rolled back`)}if(l())return;let i=e();try{g.close()}catch{}h=i,c.reopened?.(d)})("exec"===g);let i=Reflect.get(h.db,g,h.db);return"function"==typeof i?i.bind(h.db):i},set:(a,b,c)=>Reflect.set(h.db,b,c,h.db)})}},27832:(a,b,c)=>{c.r(b),c.d(b,{UNRESOLVED_PROJECT:()=>l,UNRESOLVED_PROJECT_NAME:()=>m,directoryProjectId:()=>q,displayNameFromProjectIdentity:()=>r,isCanonicalProjectId:()=>n,isRepositoryProjectId:()=>o,localRepositoryProjectId:()=>y,projectIdentityFromDirectory:()=>p,projectIdentityFromRemote:()=>x,projectIdentityFromRepositoryRoot:()=>A,repositoryRootForPath:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){return/^repo-[0-9a-f]{32}$/.test(a)}function p(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c;return{project:q(b),displayName:d}}function q(a){return`dir-${e().createHash("sha256").update(`dir:${a}`).digest("hex").slice(0,32)}`}function r(a){return a===l?m:a}function s(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function t(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return s(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return s(f)?f:null}catch{return null}}function u(a){let b=k().resolve(a);for(;;){if(t(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function v(a,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}`}}function w(a){let b=a.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!b)return null;let c=e().createHash("sha256").update(a).digest("hex").slice(0,32);return{project:`repo-${c}`,displayName:b,canonicalRemote:a}}function x(a,b){let c=a.trim();if(!c)return null;let d=v(c,b);return d?w(d):null}function y(a){return w(`local:${z(a)}`)?.project??null}function z(a){try{return g().realpathSync.native(a)}catch{return k().resolve(a)}}function A(a){let b,c=t(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),e=d?v(d,a):`local:${z(a)}`;return e?w(e):null}},43734:(a,b,c)=>{c.d(b,{Ne:()=>h,Ny:()=>n,T2:()=>o,X4:()=>l,a5:()=>k,jU:()=>m}),c(77598);var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);c(2033),c(9302);let h="sqlite-v1",i="LLV_HOT_STATE_RELEASE_REVISION";function j(a){return"string"==typeof a&&/^[0-9a-f]{40}$/.test(a)}function k(a){try{var b;let c=!(b=JSON.parse(e().readFileSync(g().join(a,"hot-state-authority.json"),"utf8")))||"object"!=typeof b||Array.isArray(b)?null:1===b.schemaVersion&&Number.isInteger(b.epoch)&&!(b.epoch<1)&&["legacy","preparing","sqlite","fencing"].includes(String(b.mode))&&(null===b.releaseRevision||j(b.releaseRevision))&&"string"==typeof b.updatedAt&&(void 0===b.activationReadyAt||"string"==typeof b.activationReadyAt)&&(void 0===b.releaseReadyAt||"string"==typeof b.releaseReadyAt)&&(void 0===b.releaseReadyAt||void 0!==b.activationReadyAt)&&(void 0===b.activationOwner||b.activationOwner&&Number.isSafeInteger(b.activationOwner.pid)&&!(b.activationOwner.pid<=0)&&(null===b.activationOwner.startIdentity||"string"==typeof b.activationOwner.startIdentity)&&(void 0===b.activationOwner.bootEpoch||null===b.activationOwner.bootEpoch||"string"==typeof b.activationOwner.bootEpoch))&&(void 0===b.checkpoint||function(a){if(!a||"object"!=typeof a||Array.isArray(a))return!1;let b=a.revisions,c=b?[b.flows,b.pipelines,b.pipelinesArchive,b.workflows]:[];return"string"==typeof a.acknowledgedAt&&4===c.length&&c.every(a=>Number.isInteger(a)&&a>=0)}(b.checkpoint))?b:null;if(!c)throw Error("hot-state authority is invalid");return c}catch(a){if("ENOENT"===a.code)return null;throw a}}function l(a,b=process.env){let c=b.LLV_VIEWER_DEPLOY_TARGET?.trim()||g().join(a,"viewer-release.json");try{var d;let a=!(d=JSON.parse(e().readFileSync(c,"utf8")))||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.endpoint&&j(d.revision)&&(void 0===d.hotStateBackend||d.hotStateBackend===h)?d:null;if(!a)throw Error("Viewer release target cannot authorize hot state");return a}catch(a){if("ENOENT"===a.code)return null;throw a}}function m(a,b=process.env){let c=l(a,b);if(!c)return null;let d=b[i]?.trim();if(d)return j(d)&&d===c.revision?d:null;let e=b.PORT?.trim();if(!e)return null;try{return new URL(c.endpoint).port===e?c.revision:null}catch{return null}}function n(a,b=process.env){let c=l(a,b);if(!c)return!0;let d=k(a),e=m(a,b);return e?d?.mode==="sqlite"&&d.releaseRevision===e&&c.revision===e:!(b[i]?.trim()||b.PORT?.trim())&&d?.mode==="sqlite"&&d.releaseRevision===c.revision&&"string"==typeof d.activationReadyAt}function o(a,b=process.env){let c=l(a,b);if(!c)return!0;let d=m(a,b);if(!d)return!1;let e=k(a);return e?.mode==="preparing"&&e.releaseRevision===d&&c.revision===d}},89940:(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(91724),k=c(13117),l=c(27832);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","tasks"].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.repositoryRootForPath)(e)??a.get(e),f=b?(0,l.projectIdentityFromRepositoryRoot)(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","tasks"].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}}}};