vibepulse 0.2.2 → 0.3.1-beta

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 (424) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/cache/.previewinfo +1 -1
  5. package/.next/cache/.rscinfo +1 -1
  6. package/.next/cache/.tsbuildinfo +1 -1
  7. package/.next/cache/config.json +3 -3
  8. package/.next/fallback-build-manifest.json +2 -2
  9. package/.next/prerender-manifest.json +3 -3
  10. package/.next/routes-manifest.json +8 -0
  11. package/.next/server/app/_global-error/page.js +1 -1
  12. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  13. package/.next/server/app/_global-error.html +2 -2
  14. package/.next/server/app/_global-error.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/_not-found/page.js +1 -1
  21. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/_not-found.html +1 -1
  24. package/.next/server/app/_not-found.rsc +2 -2
  25. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  26. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  28. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  30. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  31. package/.next/server/app/api/node/events/route.js +2 -2
  32. package/.next/server/app/api/node/events/route.js.nft.json +1 -1
  33. package/.next/server/app/api/node/sessions/[id]/delete/route.js +2 -2
  34. package/.next/server/app/api/node/sessions/[id]/delete/route.js.nft.json +1 -1
  35. package/.next/server/app/api/node/sessions/[id]/open-editor/route.js +2 -2
  36. package/.next/server/app/api/node/sessions/[id]/open-editor/route.js.nft.json +1 -1
  37. package/.next/server/app/api/node/sessions/route.js +6 -4
  38. package/.next/server/app/api/node/sessions/route.js.nft.json +1 -1
  39. package/.next/server/app/api/nodes/route.js +2 -2
  40. package/.next/server/app/api/nodes/route.js.nft.json +1 -1
  41. package/.next/server/app/api/opencode-config/route.js +2 -2
  42. package/.next/server/app/api/opencode-config/route.js.nft.json +1 -1
  43. package/.next/server/app/api/opencode-config/status/route.js +2 -2
  44. package/.next/server/app/api/opencode-config/status/route.js.nft.json +1 -1
  45. package/.next/server/app/api/opencode-events/route.js +3 -3
  46. package/.next/server/app/api/opencode-events/route.js.nft.json +1 -1
  47. package/.next/server/app/api/profiles/[id]/apply/route.js +2 -2
  48. package/.next/server/app/api/profiles/[id]/apply/route.js.nft.json +1 -1
  49. package/.next/server/app/api/profiles/[id]/export/route.js +2 -2
  50. package/.next/server/app/api/profiles/[id]/export/route.js.nft.json +1 -1
  51. package/.next/server/app/api/profiles/[id]/route.js +2 -2
  52. package/.next/server/app/api/profiles/[id]/route.js.nft.json +1 -1
  53. package/.next/server/app/api/profiles/import/route.js +2 -2
  54. package/.next/server/app/api/profiles/import/route.js.nft.json +1 -1
  55. package/.next/server/app/api/profiles/route.js +2 -2
  56. package/.next/server/app/api/profiles/route.js.nft.json +1 -1
  57. package/.next/server/app/api/sessions/[id]/archive/route.js +3 -2
  58. package/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
  59. package/.next/server/app/api/sessions/[id]/delete/route.js +4 -3
  60. package/.next/server/app/api/sessions/[id]/delete/route.js.nft.json +1 -1
  61. package/.next/server/app/api/sessions/[id]/open-editor/route.js +2 -2
  62. package/.next/server/app/api/sessions/[id]/open-editor/route.js.nft.json +1 -1
  63. package/.next/server/app/api/sessions/[id]/restore/route/app-paths-manifest.json +3 -0
  64. package/.next/server/app/api/sessions/[id]/restore/route/build-manifest.json +11 -0
  65. package/.next/server/app/api/sessions/[id]/restore/route/server-reference-manifest.json +4 -0
  66. package/.next/server/app/api/sessions/[id]/restore/route.js +8 -0
  67. package/.next/server/app/api/sessions/[id]/restore/route.js.map +5 -0
  68. package/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -0
  69. package/.next/server/app/api/sessions/[id]/restore/route_client-reference-manifest.js +2 -0
  70. package/.next/server/app/api/sessions/[id]/route.js +2 -2
  71. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  72. package/.next/server/app/api/sessions/route.js +5 -3
  73. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  74. package/.next/server/app/index.html +1 -1
  75. package/.next/server/app/index.rsc +3 -3
  76. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  77. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  78. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  79. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  80. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  81. package/.next/server/app/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app-paths-manifest.json +1 -0
  83. package/.next/server/chunks/[root-of-the-server]__005eb0c5._.js +3 -0
  84. package/.next/server/chunks/[root-of-the-server]__005eb0c5._.js.map +1 -0
  85. package/.next/server/chunks/[root-of-the-server]__09e90d57._.js +3 -0
  86. package/.next/server/chunks/[root-of-the-server]__09e90d57._.js.map +1 -0
  87. package/.next/server/chunks/[root-of-the-server]__18dd0ce9._.js +3 -0
  88. package/.next/server/chunks/[root-of-the-server]__18dd0ce9._.js.map +1 -0
  89. package/.next/server/chunks/[root-of-the-server]__19468536._.js +3 -0
  90. package/.next/server/chunks/[root-of-the-server]__19468536._.js.map +1 -0
  91. package/.next/server/chunks/[root-of-the-server]__1b87ec42._.js +1 -1
  92. package/.next/server/chunks/[root-of-the-server]__1b87ec42._.js.map +1 -1
  93. package/.next/server/chunks/[root-of-the-server]__2b912935._.js +3 -0
  94. package/.next/server/chunks/[root-of-the-server]__2b912935._.js.map +1 -0
  95. package/.next/server/chunks/[root-of-the-server]__303d3bac._.js +3 -0
  96. package/.next/server/chunks/[root-of-the-server]__303d3bac._.js.map +1 -0
  97. package/.next/server/chunks/[root-of-the-server]__3fac2b91._.js +5 -0
  98. package/.next/server/chunks/[root-of-the-server]__3fac2b91._.js.map +1 -0
  99. package/.next/server/chunks/[root-of-the-server]__43440b8d._.js +3 -0
  100. package/.next/server/chunks/[root-of-the-server]__43440b8d._.js.map +1 -0
  101. package/.next/server/chunks/[root-of-the-server]__438f8bbe._.js +3 -0
  102. package/.next/server/chunks/[root-of-the-server]__438f8bbe._.js.map +1 -0
  103. package/.next/server/chunks/[root-of-the-server]__4a0bfb55._.js +3 -0
  104. package/.next/server/chunks/[root-of-the-server]__4a0bfb55._.js.map +1 -0
  105. package/.next/server/chunks/[root-of-the-server]__534c3949._.js +3 -0
  106. package/.next/server/chunks/[root-of-the-server]__534c3949._.js.map +1 -0
  107. package/.next/server/chunks/[root-of-the-server]__59160266._.js +1 -1
  108. package/.next/server/chunks/[root-of-the-server]__59160266._.js.map +1 -1
  109. package/.next/server/chunks/[root-of-the-server]__6f812da0._.js +3 -0
  110. package/.next/server/chunks/[root-of-the-server]__6f812da0._.js.map +1 -0
  111. package/.next/server/chunks/[root-of-the-server]__71aac504._.js +3 -0
  112. package/.next/server/chunks/[root-of-the-server]__71aac504._.js.map +1 -0
  113. package/.next/server/chunks/[root-of-the-server]__907a8bf2._.js +3 -0
  114. package/.next/server/chunks/[root-of-the-server]__907a8bf2._.js.map +1 -0
  115. package/.next/server/chunks/[root-of-the-server]__92089220._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__92089220._.js.map +1 -0
  117. package/.next/server/chunks/[root-of-the-server]__9b7bc2d0._.js +3 -0
  118. package/.next/server/chunks/[root-of-the-server]__9b7bc2d0._.js.map +1 -0
  119. package/.next/server/chunks/[root-of-the-server]__b2640944._.js +3 -0
  120. package/.next/server/chunks/[root-of-the-server]__b2640944._.js.map +1 -0
  121. package/.next/server/chunks/[root-of-the-server]__c2267cf1._.js +3 -0
  122. package/.next/server/chunks/[root-of-the-server]__c2267cf1._.js.map +1 -0
  123. package/.next/server/chunks/[root-of-the-server]__d7f7e6dd._.js +3 -0
  124. package/.next/server/chunks/{[root-of-the-server]__6924c09d._.js.map → [root-of-the-server]__d7f7e6dd._.js.map} +1 -1
  125. package/.next/server/chunks/[root-of-the-server]__d8e61048._.js +1 -1
  126. package/.next/server/chunks/[root-of-the-server]__d8e61048._.js.map +1 -1
  127. package/.next/server/chunks/[root-of-the-server]__f6d0d488._.js +3 -0
  128. package/.next/server/chunks/{[root-of-the-server]__192ed2f4._.js.map → [root-of-the-server]__f6d0d488._.js.map} +1 -1
  129. package/.next/server/chunks/[root-of-the-server]__fa559e1e._.js +3 -0
  130. package/.next/server/chunks/[root-of-the-server]__fa559e1e._.js.map +1 -0
  131. package/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_restore_route_actions_af7d6b6c.js +3 -0
  132. package/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_restore_route_actions_af7d6b6c.js.map +1 -0
  133. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7e181e75.js +1 -1
  134. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7e181e75.js.map +1 -1
  135. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_aca45402.js +1 -1
  136. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_aca45402.js.map +1 -1
  137. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b054aff3.js +1 -1
  138. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b054aff3.js.map +1 -1
  139. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js +2 -2
  140. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js.map +1 -1
  141. package/.next/server/chunks/src_lib_opencodeConfig_ts_8e209941._.js +3 -0
  142. package/.next/server/chunks/src_lib_opencodeConfig_ts_8e209941._.js.map +1 -0
  143. package/.next/server/chunks/src_lib_session-providers_claudeCode_ts_0f9590ed._.js +3 -0
  144. package/.next/server/chunks/src_lib_session-providers_claudeCode_ts_0f9590ed._.js.map +1 -0
  145. package/.next/server/chunks/ssr/{[root-of-the-server]__631e12d0._.js → [root-of-the-server]__c91a8380._.js} +2 -2
  146. package/.next/server/chunks/ssr/{[root-of-the-server]__631e12d0._.js.map → [root-of-the-server]__c91a8380._.js.map} +1 -1
  147. package/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js +3 -3
  148. package/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js.map +1 -1
  149. package/.next/server/pages/404.html +1 -1
  150. package/.next/server/pages/500.html +2 -2
  151. package/.next/server/server-reference-manifest.js +1 -1
  152. package/.next/server/server-reference-manifest.json +1 -1
  153. package/.next/standalone/.next/BUILD_ID +1 -1
  154. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  155. package/.next/standalone/.next/build-manifest.json +2 -2
  156. package/.next/standalone/.next/prerender-manifest.json +3 -3
  157. package/.next/standalone/.next/routes-manifest.json +8 -0
  158. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  159. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  161. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  162. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  163. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  164. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  165. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  166. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  167. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  168. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  171. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  172. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  173. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  174. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  175. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  176. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  177. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  178. package/.next/standalone/.next/server/app/api/node/events/route.js +2 -2
  179. package/.next/standalone/.next/server/app/api/node/events/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route.js +2 -2
  181. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route.js +2 -2
  183. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/node/sessions/route.js +6 -4
  185. package/.next/standalone/.next/server/app/api/node/sessions/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/nodes/route.js +2 -2
  187. package/.next/standalone/.next/server/app/api/nodes/route.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/app/api/opencode-config/route.js +2 -2
  189. package/.next/standalone/.next/server/app/api/opencode-config/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/opencode-config/status/route.js +2 -2
  191. package/.next/standalone/.next/server/app/api/opencode-config/status/route.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/app/api/opencode-events/route.js +3 -3
  193. package/.next/standalone/.next/server/app/api/opencode-events/route.js.nft.json +1 -1
  194. package/.next/standalone/.next/server/app/api/profiles/[id]/apply/route.js +2 -2
  195. package/.next/standalone/.next/server/app/api/profiles/[id]/apply/route.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/app/api/profiles/[id]/export/route.js +2 -2
  197. package/.next/standalone/.next/server/app/api/profiles/[id]/export/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/profiles/[id]/route.js +2 -2
  199. package/.next/standalone/.next/server/app/api/profiles/[id]/route.js.nft.json +1 -1
  200. package/.next/standalone/.next/server/app/api/profiles/import/route.js +2 -2
  201. package/.next/standalone/.next/server/app/api/profiles/import/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/profiles/route.js +2 -2
  203. package/.next/standalone/.next/server/app/api/profiles/route.js.nft.json +1 -1
  204. package/.next/standalone/.next/server/app/api/sessions/[id]/archive/route.js +3 -2
  205. package/.next/standalone/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
  206. package/.next/standalone/.next/server/app/api/sessions/[id]/delete/route.js +4 -3
  207. package/.next/standalone/.next/server/app/api/sessions/[id]/delete/route.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route.js +2 -2
  209. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route.js.nft.json +1 -1
  210. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route/app-paths-manifest.json +3 -0
  211. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route/build-manifest.json +11 -0
  212. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route/server-reference-manifest.json +4 -0
  213. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route.js +8 -0
  214. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route.js.map +5 -0
  215. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -0
  216. package/.next/standalone/.next/server/app/api/sessions/[id]/restore/route_client-reference-manifest.js +2 -0
  217. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js +2 -2
  218. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  219. package/.next/standalone/.next/server/app/api/sessions/route.js +5 -3
  220. package/.next/standalone/.next/server/app/api/sessions/route.js.nft.json +1 -1
  221. package/.next/standalone/.next/server/app/index.html +1 -1
  222. package/.next/standalone/.next/server/app/index.rsc +3 -3
  223. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  224. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  225. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  226. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  227. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  228. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  229. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  230. package/.next/standalone/.next/server/chunks/[root-of-the-server]__005eb0c5._.js +3 -0
  231. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09e90d57._.js +3 -0
  232. package/.next/standalone/.next/server/chunks/[root-of-the-server]__18dd0ce9._.js +3 -0
  233. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19468536._.js +3 -0
  234. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1b87ec42._.js +1 -1
  235. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2b912935._.js +3 -0
  236. package/.next/standalone/.next/server/chunks/[root-of-the-server]__303d3bac._.js +3 -0
  237. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3fac2b91._.js +5 -0
  238. package/.next/standalone/.next/server/chunks/[root-of-the-server]__43440b8d._.js +3 -0
  239. package/.next/standalone/.next/server/chunks/[root-of-the-server]__438f8bbe._.js +3 -0
  240. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a0bfb55._.js +3 -0
  241. package/.next/standalone/.next/server/chunks/[root-of-the-server]__534c3949._.js +3 -0
  242. package/.next/standalone/.next/server/chunks/[root-of-the-server]__59160266._.js +1 -1
  243. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6f812da0._.js +3 -0
  244. package/.next/standalone/.next/server/chunks/[root-of-the-server]__71aac504._.js +3 -0
  245. package/.next/standalone/.next/server/chunks/[root-of-the-server]__907a8bf2._.js +3 -0
  246. package/.next/standalone/.next/server/chunks/[root-of-the-server]__92089220._.js +3 -0
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9b7bc2d0._.js +3 -0
  248. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b2640944._.js +3 -0
  249. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c2267cf1._.js +3 -0
  250. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7f7e6dd._.js +3 -0
  251. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8e61048._.js +1 -1
  252. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f6d0d488._.js +3 -0
  253. package/.next/standalone/.next/server/chunks/[root-of-the-server]__fa559e1e._.js +3 -0
  254. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_restore_route_actions_af7d6b6c.js +3 -0
  255. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7e181e75.js +1 -1
  256. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_aca45402.js +1 -1
  257. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b054aff3.js +1 -1
  258. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js +2 -2
  259. package/.next/standalone/.next/server/chunks/src_lib_opencodeConfig_ts_8e209941._.js +3 -0
  260. package/.next/standalone/.next/server/chunks/src_lib_session-providers_claudeCode_ts_0f9590ed._.js +3 -0
  261. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__631e12d0._.js → [root-of-the-server]__c91a8380._.js} +2 -2
  262. package/.next/standalone/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js +3 -3
  263. package/.next/standalone/.next/server/pages/404.html +1 -1
  264. package/.next/standalone/.next/server/pages/500.html +2 -2
  265. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  267. package/.next/standalone/.next/static/chunks/9e790b67c80f853c.js +13 -0
  268. package/.next/standalone/.next/static/chunks/c3dc8cd80979c971.css +3 -0
  269. package/.next/standalone/AGENTS.md +4 -0
  270. package/.next/standalone/README.md +54 -5
  271. package/.next/standalone/check-hsql.mjs +1 -1
  272. package/.next/standalone/docs/session-status-detection.md +36 -0
  273. package/.next/standalone/docs/superpowers/specs/2026-04-09-claude-capability-alignment-design.md +39 -0
  274. package/.next/standalone/eslint.config.mjs +1 -0
  275. package/.next/standalone/package-lock.json +74 -13
  276. package/.next/standalone/package.json +2 -2
  277. package/.next/standalone/src/app/api/node/events/route.ts +3 -3
  278. package/.next/standalone/src/app/api/node/sessions/[id]/archive/route.test.ts +60 -1
  279. package/.next/standalone/src/app/api/node/sessions/[id]/archive/route.ts +77 -22
  280. package/.next/standalone/src/app/api/node/sessions/[id]/delete/route.ts +6 -5
  281. package/.next/standalone/src/app/api/node/sessions/[id]/open-editor/route.ts +6 -5
  282. package/.next/standalone/src/app/api/node/sessions/route.test.ts +282 -0
  283. package/.next/standalone/src/app/api/node/sessions/route.ts +156 -30
  284. package/.next/standalone/src/app/api/opencode-config/route.test.ts +613 -0
  285. package/.next/standalone/src/app/api/opencode-config/route.ts +336 -185
  286. package/.next/standalone/src/app/api/opencode-events/route.test.ts +77 -1
  287. package/.next/standalone/src/app/api/opencode-events/route.ts +3 -3
  288. package/.next/standalone/src/app/api/opencode-models/route.test.ts +19 -0
  289. package/.next/standalone/src/app/api/opencode-models/route.ts +4 -1
  290. package/.next/standalone/src/app/api/profiles/[id]/apply/route.test.ts +227 -0
  291. package/.next/standalone/src/app/api/profiles/[id]/apply/route.ts +13 -9
  292. package/.next/standalone/src/app/api/sessions/[id]/archive/route.test.ts +126 -0
  293. package/.next/standalone/src/app/api/sessions/[id]/archive/route.ts +47 -12
  294. package/.next/standalone/src/app/api/sessions/[id]/delete/route.test.ts +140 -0
  295. package/.next/standalone/src/app/api/sessions/[id]/delete/route.ts +51 -16
  296. package/.next/standalone/src/app/api/sessions/[id]/open-editor/route.test.ts +74 -0
  297. package/.next/standalone/src/app/api/sessions/[id]/open-editor/route.ts +22 -2
  298. package/.next/standalone/src/app/api/sessions/[id]/restore/route.test.ts +186 -0
  299. package/.next/standalone/src/app/api/sessions/[id]/restore/route.ts +184 -0
  300. package/.next/standalone/src/app/api/sessions/[id]/route.ts +3 -3
  301. package/.next/standalone/src/app/api/sessions/route.test.ts +1955 -100
  302. package/.next/standalone/src/app/api/sessions/route.ts +361 -986
  303. package/.next/standalone/src/components/KanbanBoard.test.tsx +307 -1
  304. package/.next/standalone/src/components/KanbanBoard.tsx +106 -19
  305. package/.next/standalone/src/components/ProjectCard.test.tsx +420 -6
  306. package/.next/standalone/src/components/ProjectCard.tsx +238 -86
  307. package/.next/standalone/src/components/SessionCard.test.tsx +259 -8
  308. package/.next/standalone/src/components/SessionCard.tsx +182 -76
  309. package/.next/standalone/src/components/opencode-config/AgentConfigForm.test.tsx +141 -1
  310. package/.next/standalone/src/components/opencode-config/AgentConfigForm.tsx +99 -7
  311. package/.next/standalone/src/components/opencode-config/GeneralSettingsForm.test.tsx +11 -0
  312. package/.next/standalone/src/components/opencode-config/GeneralSettingsForm.tsx +41 -2
  313. package/.next/standalone/src/components/opencode-config/categories/CategoriesManager.tsx +3 -1
  314. package/.next/standalone/src/components/opencode-config/categories/CategoryConfigForm.test.tsx +106 -8
  315. package/.next/standalone/src/components/opencode-config/categories/CategoryConfigForm.tsx +82 -5
  316. package/.next/standalone/src/hooks/useHostSources.test.ts +0 -41
  317. package/.next/standalone/src/hooks/useOpencodeSync.test.ts +321 -1
  318. package/.next/standalone/src/hooks/useOpencodeSync.ts +16 -12
  319. package/.next/standalone/src/lib/claudeSessionOverrides.test.ts +75 -0
  320. package/.next/standalone/src/lib/claudeSessionOverrides.ts +169 -0
  321. package/.next/standalone/src/lib/fixtures/opencode-config/oh-my-openagent.v4.jsonc +70 -0
  322. package/.next/standalone/src/lib/fixtures/opencode-config/oh-my-openagent.v4.secret-like.jsonc +21 -0
  323. package/.next/standalone/src/lib/fixtures/opencode-config/oh-my-opencode.v3.jsonc +17 -0
  324. package/.next/standalone/src/lib/opencodeConfig.test.ts +430 -3
  325. package/.next/standalone/src/lib/opencodeConfig.ts +157 -4
  326. package/.next/standalone/src/lib/opencodeDiscovery.test.ts +241 -0
  327. package/.next/standalone/src/lib/opencodeDiscovery.ts +164 -9
  328. package/.next/standalone/src/lib/profiles/share.test.ts +92 -0
  329. package/.next/standalone/src/lib/profiles/share.ts +1 -0
  330. package/.next/standalone/src/lib/profiles/storage.test.ts +77 -1
  331. package/.next/standalone/src/lib/profiles/storage.ts +10 -9
  332. package/.next/standalone/src/lib/session-providers/claudeCode.test.ts +2288 -0
  333. package/.next/standalone/src/lib/session-providers/claudeCode.ts +1083 -0
  334. package/.next/standalone/src/lib/session-providers/localAggregator.test.ts +322 -0
  335. package/.next/standalone/src/lib/session-providers/localAggregator.ts +302 -0
  336. package/.next/standalone/src/lib/session-providers/opencodeProvider.test.ts +170 -0
  337. package/.next/standalone/src/lib/session-providers/opencodeProvider.ts +721 -0
  338. package/.next/standalone/src/lib/session-providers/opencodeSdkCompat.ts +92 -0
  339. package/.next/standalone/src/lib/session-providers/providerIds.test.ts +337 -0
  340. package/.next/standalone/src/lib/session-providers/providerIds.ts +176 -0
  341. package/.next/standalone/src/lib/session-providers/types.ts +131 -0
  342. package/.next/standalone/src/lib/transform.test.ts +253 -0
  343. package/.next/standalone/src/lib/transform.ts +96 -37
  344. package/.next/standalone/src/types/index.ts +23 -17
  345. package/.next/standalone/src/types/opencodeConfig.ts +55 -0
  346. package/.next/static/chunks/9e790b67c80f853c.js +13 -0
  347. package/.next/static/chunks/c3dc8cd80979c971.css +3 -0
  348. package/.next/trace +1 -1
  349. package/.next/trace-build +1 -1
  350. package/.next/types/routes.d.ts +2 -1
  351. package/.next/types/validator.ts +9 -0
  352. package/README.md +54 -5
  353. package/package.json +2 -2
  354. package/.next/server/chunks/[root-of-the-server]__1211da38._.js +0 -3
  355. package/.next/server/chunks/[root-of-the-server]__1211da38._.js.map +0 -1
  356. package/.next/server/chunks/[root-of-the-server]__192ed2f4._.js +0 -3
  357. package/.next/server/chunks/[root-of-the-server]__2b526e7a._.js +0 -3
  358. package/.next/server/chunks/[root-of-the-server]__2b526e7a._.js.map +0 -1
  359. package/.next/server/chunks/[root-of-the-server]__2f981540._.js +0 -3
  360. package/.next/server/chunks/[root-of-the-server]__2f981540._.js.map +0 -1
  361. package/.next/server/chunks/[root-of-the-server]__3745b314._.js +0 -3
  362. package/.next/server/chunks/[root-of-the-server]__3745b314._.js.map +0 -1
  363. package/.next/server/chunks/[root-of-the-server]__56690af0._.js +0 -3
  364. package/.next/server/chunks/[root-of-the-server]__56690af0._.js.map +0 -1
  365. package/.next/server/chunks/[root-of-the-server]__56f5f249._.js +0 -3
  366. package/.next/server/chunks/[root-of-the-server]__56f5f249._.js.map +0 -1
  367. package/.next/server/chunks/[root-of-the-server]__59175de4._.js +0 -3
  368. package/.next/server/chunks/[root-of-the-server]__59175de4._.js.map +0 -1
  369. package/.next/server/chunks/[root-of-the-server]__64fffc02._.js +0 -3
  370. package/.next/server/chunks/[root-of-the-server]__64fffc02._.js.map +0 -1
  371. package/.next/server/chunks/[root-of-the-server]__6924c09d._.js +0 -3
  372. package/.next/server/chunks/[root-of-the-server]__6c428a24._.js +0 -3
  373. package/.next/server/chunks/[root-of-the-server]__6c428a24._.js.map +0 -1
  374. package/.next/server/chunks/[root-of-the-server]__73a00b88._.js +0 -3
  375. package/.next/server/chunks/[root-of-the-server]__73a00b88._.js.map +0 -1
  376. package/.next/server/chunks/[root-of-the-server]__7e757f50._.js +0 -3
  377. package/.next/server/chunks/[root-of-the-server]__7e757f50._.js.map +0 -1
  378. package/.next/server/chunks/[root-of-the-server]__89c5eeab._.js +0 -3
  379. package/.next/server/chunks/[root-of-the-server]__89c5eeab._.js.map +0 -1
  380. package/.next/server/chunks/[root-of-the-server]__8da6c5a8._.js +0 -3
  381. package/.next/server/chunks/[root-of-the-server]__8da6c5a8._.js.map +0 -1
  382. package/.next/server/chunks/[root-of-the-server]__b796d06c._.js +0 -3
  383. package/.next/server/chunks/[root-of-the-server]__b796d06c._.js.map +0 -1
  384. package/.next/server/chunks/[root-of-the-server]__c2ce5c0f._.js +0 -3
  385. package/.next/server/chunks/[root-of-the-server]__c2ce5c0f._.js.map +0 -1
  386. package/.next/server/chunks/[root-of-the-server]__db285678._.js +0 -3
  387. package/.next/server/chunks/[root-of-the-server]__db285678._.js.map +0 -1
  388. package/.next/server/chunks/[root-of-the-server]__e00a9200._.js +0 -5
  389. package/.next/server/chunks/[root-of-the-server]__e00a9200._.js.map +0 -1
  390. package/.next/server/chunks/[root-of-the-server]__e5df5e5f._.js +0 -3
  391. package/.next/server/chunks/[root-of-the-server]__e5df5e5f._.js.map +0 -1
  392. package/.next/server/chunks/[root-of-the-server]__edbc8d9e._.js +0 -3
  393. package/.next/server/chunks/[root-of-the-server]__edbc8d9e._.js.map +0 -1
  394. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1211da38._.js +0 -3
  395. package/.next/standalone/.next/server/chunks/[root-of-the-server]__192ed2f4._.js +0 -3
  396. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2b526e7a._.js +0 -3
  397. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2f981540._.js +0 -3
  398. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3745b314._.js +0 -3
  399. package/.next/standalone/.next/server/chunks/[root-of-the-server]__56690af0._.js +0 -3
  400. package/.next/standalone/.next/server/chunks/[root-of-the-server]__56f5f249._.js +0 -3
  401. package/.next/standalone/.next/server/chunks/[root-of-the-server]__59175de4._.js +0 -3
  402. package/.next/standalone/.next/server/chunks/[root-of-the-server]__64fffc02._.js +0 -3
  403. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6924c09d._.js +0 -3
  404. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6c428a24._.js +0 -3
  405. package/.next/standalone/.next/server/chunks/[root-of-the-server]__73a00b88._.js +0 -3
  406. package/.next/standalone/.next/server/chunks/[root-of-the-server]__7e757f50._.js +0 -3
  407. package/.next/standalone/.next/server/chunks/[root-of-the-server]__89c5eeab._.js +0 -3
  408. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8da6c5a8._.js +0 -3
  409. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b796d06c._.js +0 -3
  410. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c2ce5c0f._.js +0 -3
  411. package/.next/standalone/.next/server/chunks/[root-of-the-server]__db285678._.js +0 -3
  412. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e00a9200._.js +0 -5
  413. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e5df5e5f._.js +0 -3
  414. package/.next/standalone/.next/server/chunks/[root-of-the-server]__edbc8d9e._.js +0 -3
  415. package/.next/standalone/.next/static/chunks/65d5354ba0add961.js +0 -13
  416. package/.next/standalone/.next/static/chunks/f42202943f6742e5.css +0 -3
  417. package/.next/static/chunks/65d5354ba0add961.js +0 -13
  418. package/.next/static/chunks/f42202943f6742e5.css +0 -3
  419. /package/.next/standalone/.next/static/{5kq9DtuBFVxu4jsgmL5Q- → 0WaQ6UjiNBgvh531pJVh0}/_buildManifest.js +0 -0
  420. /package/.next/standalone/.next/static/{5kq9DtuBFVxu4jsgmL5Q- → 0WaQ6UjiNBgvh531pJVh0}/_clientMiddlewareManifest.json +0 -0
  421. /package/.next/standalone/.next/static/{5kq9DtuBFVxu4jsgmL5Q- → 0WaQ6UjiNBgvh531pJVh0}/_ssgManifest.js +0 -0
  422. /package/.next/static/{5kq9DtuBFVxu4jsgmL5Q- → 0WaQ6UjiNBgvh531pJVh0}/_buildManifest.js +0 -0
  423. /package/.next/static/{5kq9DtuBFVxu4jsgmL5Q- → 0WaQ6UjiNBgvh531pJVh0}/_clientMiddlewareManifest.json +0 -0
  424. /package/.next/static/{5kq9DtuBFVxu4jsgmL5Q- → 0WaQ6UjiNBgvh531pJVh0}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[59462,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),s=e.i(59756),o=e.i(61916),a=e.i(74677),i=e.i(69741),u=e.i(16795),l=e.i(87718),p=e.i(95169),d=e.i(47587),c=e.i(66012),f=e.i(70101),b=e.i(26937),g=e.i(10372),m=e.i(93695);e.i(52474);var R=e.i(220),h=e.i(89171),v=e.i(57181);let y=["model","temperature","top_p","variant","prompt_append"];function j(e){let t={};for(let r of y)void 0!==e[r]&&(t[r]=e[r]);return t}async function x(){try{let e=await (0,v.readConfig)(),t=e.agents||{},r={};for(let[e,n]of Object.entries(t))"object"==typeof n&&null!==n&&(r[e]=j(n));let n=e.categories||{},s={};for(let[e,t]of Object.entries(n))"object"!=typeof t||null===t||Array.isArray(t)||(s[e]=j(t));let o=(0,v.normalizeVibePulseConfig)(e.vibepulse);return h.NextResponse.json({agents:r,categories:s,vibepulse:o})}catch(e){return console.error("Error reading config:",e),h.NextResponse.json({error:"Internal server error"},{status:500})}}async function N(e){try{let t=await e.json();if(!t||"object"!=typeof t)return h.NextResponse.json({error:"Invalid request body"},{status:400});let{agents:r,categories:n,vibepulse:s}=t;if(void 0===r&&void 0===n&&void 0===s)return h.NextResponse.json({error:"Missing agents, categories, or vibepulse field"},{status:400});if(void 0!==r&&("object"!=typeof r||null===r||Array.isArray(r)))return h.NextResponse.json({error:"Agents must be an object"},{status:400});if(void 0!==n&&("object"!=typeof n||null===n||Array.isArray(n)))return h.NextResponse.json({error:"Categories must be an object"},{status:400});if(void 0!==s&&("object"!=typeof s||null===s||Array.isArray(s)))return h.NextResponse.json({error:"Vibepulse must be an object"},{status:400});let o=await (0,v.readConfig)(),a=o.agents||{},i={};for(let[e,t]of Object.entries(a))"object"!=typeof t||null===t||Array.isArray(t)||(i[e]=t);if(void 0!==r)for(let[e,t]of Object.entries(r)){if("object"!=typeof t||null===t||Array.isArray(t))return h.NextResponse.json({error:`Agent '${e}' config must be an object`},{status:400});let r=[];for(let e of Object.keys(t)){let t=e.toLowerCase();(t.includes("api")||t.includes("key")||t.includes("token")||t.includes("secret")||t.includes("password")||t.includes("auth")||t.includes("credential")||t.includes("private")||t.includes("cert"))&&r.push(e)}if(r.length>0)return h.NextResponse.json({error:`Agent '${e}' contains disallowed fields: ${r.join(", ")}`},{status:403});let n={};for(let[r,s]of Object.entries(t)){let t=r.toLowerCase();if("model"===t){if("string"!=typeof s||""===s.trim())return h.NextResponse.json({error:`Agent '${e}': model must be a non-empty string`},{status:400});n[r]=s}else if("temperature"===t){let t=Number(s);if(isNaN(t)||t<0||t>2)return h.NextResponse.json({error:`Agent '${e}': temperature must be a number between 0 and 2`},{status:400});n[r]=t}else if("top_p"===t){let t=Number(s);if(isNaN(t)||t<0||t>1)return h.NextResponse.json({error:`Agent '${e}': top_p must be a number between 0 and 1`},{status:400});n[r]=t}else if("variant"===t){if("string"!=typeof s)return h.NextResponse.json({error:`Agent '${e}': variant must be a string`},{status:400});n[r]=s}else{if("prompt_append"!==t)return h.NextResponse.json({error:`Agent '${e}': unknown field '${r}'. Allowed fields: model, temperature, top_p, variant, prompt_append`},{status:400});if("string"!=typeof s)return h.NextResponse.json({error:`Agent '${e}': prompt_append must be a string`},{status:400});n[r]=s}}i[e]={...a[e]||{},...n}}let u={},l=o.categories||{};for(let[e,t]of Object.entries(l))"object"!=typeof t||null===t||Array.isArray(t)||(u[e]=t);if(void 0!==n)for(let[e,t]of Object.entries(n)){if("object"!=typeof t||null===t||Array.isArray(t))return h.NextResponse.json({error:`Category '${e}' config must be an object`},{status:400});let r={};for(let[n,s]of Object.entries(t))if("model"===n||"variant"===n||"prompt_append"===n||"description"===n){if(void 0!==s&&"string"!=typeof s)return h.NextResponse.json({error:`Category '${e}': '${n}' must be a string`},{status:400});r[n]=s}else{if("temperature"!==n&&"top_p"!==n)return h.NextResponse.json({error:`Category '${e}': unknown field '${n}'`},{status:400});if(void 0!==s&&"number"!=typeof s)return h.NextResponse.json({error:`Category '${e}': '${n}' must be a number`},{status:400});let t="temperature"===n?Math.max(0,Math.min(2,s)):s,o="top_p"===n?Math.max(0,Math.min(1,s)):s;r[n]="temperature"===n?t:o}u[e]={...l[e]||{},...r}}let p={},d=(0,v.normalizeVibePulseConfig)(o.vibepulse);if(void 0!==s){for(let[e,t]of Object.entries(d))p[e]=t;for(let[e,t]of Object.entries(s))if("stickyBusyDelayMs"===e||"sessionsRefreshIntervalMs"===e){if(void 0!==t&&"number"!=typeof t)return h.NextResponse.json({error:`Vibepulse: '${e}' must be a number`},{status:400});if("number"==typeof t){if(!Number.isFinite(t))return h.NextResponse.json({error:`Vibepulse: '${e}' must be a finite number`},{status:400});if("stickyBusyDelayMs"===e&&t<0)return h.NextResponse.json({error:`Vibepulse: '${e}' must be a non-negative number`},{status:400});if("sessionsRefreshIntervalMs"===e&&t<=0)return h.NextResponse.json({error:`Vibepulse: '${e}' must be greater than 0`},{status:400});p[e]=t}}else{if("openEditorTargetMode"!==e)return h.NextResponse.json({error:`Vibepulse: unknown field '${e}'`},{status:400});if("remote"!==t&&"hub"!==t)return h.NextResponse.json({error:`Vibepulse: '${e}' must be either 'remote' or 'hub'`},{status:400});p[e]=t}}let c={...o};return void 0!==r&&(c.agents=i),void 0!==n&&(c.categories=u),void 0!==s&&(c.vibepulse=p),await (0,v.writeConfig)(c),h.NextResponse.json({success:!0,agents:i,categories:u,vibepulse:p},{status:200})}catch(e){return console.error("Error updating config:",e),h.NextResponse.json({error:"Internal server error"},{status:500})}}e.s(["GET",()=>x,"POST",()=>N],7526);var A=e.i(7526);let w=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/opencode-config/route",pathname:"/api/opencode-config",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/opencode-config/route.ts",nextConfigOutput:"standalone",userland:A}),{workAsyncStorage:C,workUnitAsyncStorage:E,serverHooks:O}=w;function $(){return(0,n.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:E})}async function _(e,t,n){w.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let h="/api/opencode-config/route";h=h.replace(/\/index$/,"")||"/";let v=await w.prepare(e,t,{srcPage:h,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:y,params:j,nextConfig:x,parsedUrl:N,isDraftMode:A,prerenderManifest:C,routerServerContext:E,isOnDemandRevalidate:O,revalidateOnlyGenerated:$,resolvedPathname:_,clientReferenceManifest:T,serverActionsManifest:P}=v,M=(0,i.normalizeAppPath)(h),k=!!(C.dynamicRoutes[M]||C.routes[_]),I=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,N,!1):t.end("This page could not be found"),null);if(k&&!A){let e=!!C.routes[_],t=C.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(x.experimental.adapterPath)return await I();throw new m.NoFallbackError}}let S=null;!k||w.isDev||A||(S="/index"===(S=_)?"/":S);let H=!0===w.isDev||!k,U=k&&!H;P&&T&&(0,a.setManifestsSingleton)({page:h,clientReferenceManifest:T,serverActionsManifest:P});let q=e.method||"GET",D=(0,o.getTracer)(),V=D.getActiveScopeSpan(),F={params:j,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:x.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,s)=>w.onRequestError(e,t,n,s,E)},sharedContext:{buildId:y}},K=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),L=l.NextRequestAdapter.fromNodeNextRequest(K,(0,l.signalFromNodeResponse)(t));try{let a=async e=>w.handle(L,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=D.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${q} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${h}`)}),i=!!(0,s.getRequestMeta)(e,"minimalMode"),u=async s=>{var o,u;let l=async({previousCacheEntry:r})=>{try{if(!i&&O&&$&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await a(s);e.fetchMetrics=F.renderOpts.fetchMetrics;let u=F.renderOpts.pendingWaitUntil;u&&n.waitUntil&&(n.waitUntil(u),u=void 0);let l=F.renderOpts.collectedTags;if(!k)return await (0,c.sendResponse)(K,B,o,F.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,n=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:h,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,E),t}},p=await w.handleResponse({req:e,nextConfig:x,cacheKey:S,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:$,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:i});if(!k)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(u=p.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",O?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,f.fromNodeOutgoingHttpHeaders)(p.value.headers);return i&&k||m.delete(g.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,b.getCacheControlHeader)(p.cacheControl)),await (0,c.sendResponse)(K,B,new Response(p.value.body,{headers:m,status:p.value.status||200})),null};V?await u(V):await D.withPropagatedContext(e.headers,()=>D.trace(p.BaseServerSpan.handleRequest,{spanName:`${q} ${h}`,kind:o.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},u))}catch(t){if(t instanceof m.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,E),k)throw t;return await (0,c.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>_,"patchFetch",()=>$,"routeModule",()=>w,"serverHooks",()=>O,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>E],59462)}];
1
+ module.exports=[59462,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),o=e.i(59756),a=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),c=e.i(95169),d=e.i(47587),p=e.i(66012),f=e.i(70101),b=e.i(26937),m=e.i(10372),g=e.i(93695);e.i(52474);var y=e.i(220),h=e.i(89171),R=e.i(57181);let v=["api","key","token","secret","password","auth","credential","private","cert"],j=new Set(["max_tokens","budget_tokens"]);function A(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function E(e){let t=e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase();return t.split(/[^a-z0-9]+/).some(e=>""!==e&&v.includes(e))?!j.has(t):!!["apikey","accesskey","accesstoken","authtoken","privatekey","secretkey","passwordhash","credential"].includes(t)}function w(e){return"agents"===e||"categories"===e}function x(e,t=""){if(Array.isArray(e))return e.map((e,r)=>x(e,`${t}[${r}]`));if(!A(e))return e;let r={};for(let[n,o]of Object.entries(e)){let e=t?`${t}.${n}`:n;(w(t)||!E(n))&&(r[n]=x(o,e))}return r}function _(e){return h.NextResponse.json({error:e},{status:400})}function C(e,t,r,n={}){return"string"!=typeof r||n.nonEmpty&&""===r.trim()?_(`${e}: ${t} must be ${n.nonEmpty?"a non-empty string":"a string"}`):null}function N(e,t,r){return"number"==typeof r&&Number.isFinite(r)?null:_(`${e}: ${t} must be a finite number`)}function O(e,t){return"string"==typeof t||A(t)?null:_(`${e}: fallback_models entries must be strings or objects`)}function $(e,t,r){switch(t){case"model":return C(e,t,r,{nonEmpty:!0});case"variant":case"prompt_append":case"description":case"category":case"system":return C(e,t,r);case"reasoningEffort":if(null===r)return null;return C(e,t,r);case"temperature":{let n=N(e,t,r);if(n)return n;if(r<0||r>2)return _(`${e}: temperature must be a number between 0 and 2`);return null}case"top_p":{let n=N(e,t,r);if(n)return n;if(r<0||r>1)return _(`${e}: top_p must be a number between 0 and 1`);return null}case"maxTokens":case"max_tokens":{let n=N(e,t,r);if(n)return n;if(r<=0)return _(`${e}: ${t} must be greater than 0`);return null}case"thinking":if("boolean"!=typeof r&&!A(r))return _(`${e}: thinking must be a boolean or object`);return null;case"fallback_models":if(null===r)return null;if(Array.isArray(r)){for(let t of r){let r=O(e,t);if(r)return r}return null}return O(e,r);default:return null}}async function k(){try{let e=await (0,R.readConfig)(),t=x(e),r=e.agents||{},n={};for(let[e,t]of Object.entries(r))A(t)&&(n[e]=x(t));let o=e.categories||{},a={};for(let[e,t]of Object.entries(o))A(t)&&(a[e]=x(t));let s=x((0,R.normalizeVibePulseConfig)(e.vibepulse)),i=A(e.team_mode)?x(e.team_mode):e.team_mode;return h.NextResponse.json({...t,agents:n,categories:a,team_mode:i,vibepulse:s})}catch(e){return console.error("Error reading config:",e),h.NextResponse.json({error:"Internal server error"},{status:500})}}async function T(e){try{let t=await e.json();if(!t||"object"!=typeof t||Array.isArray(t))return h.NextResponse.json({error:"Invalid request body"},{status:400});let r=function e(t,r=""){if(Array.isArray(t))return t.flatMap((t,n)=>e(t,`${r}[${n}]`));if(!A(t))return[];let n=[];for(let[o,a]of Object.entries(t)){let t=r?`${r}.${o}`:o;if(!w(r)&&E(o)){n.push(t);continue}n.push(...e(a,t))}return n}(t);if(r.length>0)return h.NextResponse.json({error:`Config contains disallowed fields: ${r.join(", ")}`},{status:403});let{agents:n,categories:o,vibepulse:a,team_mode:s}=t;if(0===Object.keys(t).length)return h.NextResponse.json({error:"Missing config fields to update"},{status:400});if(void 0!==n&&("object"!=typeof n||null===n||Array.isArray(n)))return h.NextResponse.json({error:"Agents must be an object"},{status:400});if(void 0!==o&&("object"!=typeof o||null===o||Array.isArray(o)))return h.NextResponse.json({error:"Categories must be an object"},{status:400});if(void 0!==a&&("object"!=typeof a||null===a||Array.isArray(a)))return h.NextResponse.json({error:"Vibepulse must be an object"},{status:400});if(void 0!==s&&("object"!=typeof s||null===s||Array.isArray(s)))return h.NextResponse.json({error:"team_mode must be an object"},{status:400});if(A(s)&&Object.prototype.hasOwnProperty.call(s,"enabled")&&"boolean"!=typeof s.enabled)return h.NextResponse.json({error:"team_mode.enabled must be a boolean"},{status:400});let i=await (0,R.readConfig)(),l=i.agents||{},u={};for(let[e,t]of Object.entries(l))"object"!=typeof t||null===t||Array.isArray(t)||(u[e]=t);if(void 0!==n)for(let[e,t]of Object.entries(n)){if(!A(t))return h.NextResponse.json({error:`Agent '${e}' config must be an object`},{status:400});let r={};for(let[n,o]of Object.entries(t)){let t=$(`Agent '${e}'`,n,o);if(t)return t;r[n]=o}u[e]={...l[e]||{},...r},null===r.reasoningEffort&&delete u[e].reasoningEffort,null===r.fallback_models&&delete u[e].fallback_models}let c={},d=i.categories||{};for(let[e,t]of Object.entries(d))"object"!=typeof t||null===t||Array.isArray(t)||(c[e]=t);if(void 0!==o)for(let[e,t]of Object.entries(o)){if(!A(t))return h.NextResponse.json({error:`Category '${e}' config must be an object`},{status:400});let r={};for(let[n,o]of Object.entries(t)){let t=$(`Category '${e}'`,n,o);if(t)return t;r[n]=o}c[e]={...d[e]||{},...r},null===r.reasoningEffort&&delete c[e].reasoningEffort,null===r.fallback_models&&delete c[e].fallback_models}let p={},f=(0,R.normalizeVibePulseConfig)(i.vibepulse);if(void 0!==a){for(let[e,t]of Object.entries(f))p[e]=t;for(let[e,t]of Object.entries(a)){let r=function(e,t){if("stickyBusyDelayMs"===e||"sessionsRefreshIntervalMs"===e){let r=N("Vibepulse",e,t);if(r)return r;if("stickyBusyDelayMs"===e&&t<0)return _(`Vibepulse: '${e}' must be a non-negative number`);if("sessionsRefreshIntervalMs"===e&&t<=0)return _(`Vibepulse: '${e}' must be greater than 0`)}return"openEditorTargetMode"===e&&"remote"!==t&&"hub"!==t?_(`Vibepulse: '${e}' must be either 'remote' or 'hub'`):null}(e,t);if(r)return r;p[e]=t}}let b={...i};for(let[e,r]of Object.entries(t))"agents"!==e&&"categories"!==e&&"vibepulse"!==e&&"team_mode"!==e&&(b[e]=function e(t,r){if(!A(t)||!A(r))return r;let n={...t};for(let[t,o]of Object.entries(r))n[t]=e(n[t],o);return n}(b[e],r));void 0!==n&&(b.agents=u),void 0!==o&&(b.categories=c),void 0!==a&&(b.vibepulse=p),void 0!==s&&(b.team_mode={...A(i.team_mode)?i.team_mode:{},...s}),await (0,R.writeConfig)(b);let m=x(b);return h.NextResponse.json({...m,success:!0,agents:m.agents,categories:m.categories,team_mode:m.team_mode,vibepulse:m.vibepulse},{status:200})}catch(e){return console.error("Error updating config:",e),h.NextResponse.json({error:"Internal server error"},{status:500})}}e.s(["GET",()=>k,"POST",()=>T],7526);var P=e.i(7526);let S=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/opencode-config/route",pathname:"/api/opencode-config",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/opencode-config/route.ts",nextConfigOutput:"standalone",userland:P}),{workAsyncStorage:I,workUnitAsyncStorage:M,serverHooks:H}=S;function U(){return(0,n.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:M})}async function q(e,t,n){S.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let h="/api/opencode-config/route";h=h.replace(/\/index$/,"")||"/";let R=await S.prepare(e,t,{srcPage:h,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:j,nextConfig:A,parsedUrl:E,isDraftMode:w,prerenderManifest:x,routerServerContext:_,isOnDemandRevalidate:C,revalidateOnlyGenerated:N,resolvedPathname:O,clientReferenceManifest:$,serverActionsManifest:k}=R,T=(0,i.normalizeAppPath)(h),P=!!(x.dynamicRoutes[T]||x.routes[O]),I=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,E,!1):t.end("This page could not be found"),null);if(P&&!w){let e=!!x.routes[O],t=x.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await I();throw new g.NoFallbackError}}let M=null;!P||S.isDev||w||(M="/index"===(M=O)?"/":M);let H=!0===S.isDev||!P,U=P&&!H;k&&$&&(0,s.setManifestsSingleton)({page:h,clientReferenceManifest:$,serverActionsManifest:k});let q=e.method||"GET",D=(0,a.getTracer)(),V=D.getActiveScopeSpan(),F={params:j,prerenderManifest:x,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,o)=>S.onRequestError(e,t,n,o,_)},sharedContext:{buildId:v}},K=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),L=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let s=async e=>S.handle(L,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=D.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${q} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${h}`)}),i=!!(0,o.getRequestMeta)(e,"minimalMode"),l=async o=>{var a,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&C&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=F.renderOpts.fetchMetrics;let l=F.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=F.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(K,B,a,F.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,n=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await S.onRequestError(e,t,{routerKind:"App Router",routePath:h,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:C})},!1,_),t}},c=await S.handleResponse({req:e,nextConfig:A,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:N,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!P)return null;if((null==c||null==(a=c.value)?void 0:a.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),w&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return i&&P||g.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,b.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(K,B,new Response(c.value.body,{headers:g,status:c.value.status||200})),null};V?await l(V):await D.withPropagatedContext(e.headers,()=>D.trace(c.BaseServerSpan.handleRequest,{spanName:`${q} ${h}`,kind:a.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:C})},!1,_),P)throw t;return await (0,p.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>U,"routeModule",()=>S,"serverHooks",()=>H,"workAsyncStorage",()=>I,"workUnitAsyncStorage",()=>M],59462)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_7e181e75.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[92777,e=>{"use strict";var t=e.i(47909),r=e.i(74017),i=e.i(96250),a=e.i(59756),n=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),f=e.i(26937),m=e.i(10372),g=e.i(93695);e.i(52474);var y=e.i(220);e.i(39354);var S=e.i(34959),v=e.i(33405),w=e.i(14747),b=e.i(99686),R=e.i(57181),I=e.i(586),E=e.i(68817),T=e.i(74579);let C=D("OPENCODE_SESSIONS_LIST_TIMEOUT_MS",6e3),_=D("OPENCODE_SESSIONS_STATUS_TIMEOUT_MS",4e3),O=D("OPENCODE_SESSIONS_MESSAGES_TIMEOUT_MS",2500),A={hostId:"local",hostLabel:"Local",hostKind:"local"},U=new Map,N=new Set(["awaiting-input","awaiting_input","input-required","input_required","requires-input","requires_input","blocked","paused"]);async function P(e){let t=(0,E.guardNodeRequest)(e);if(!t.ok)return(0,E.toNodeRequestGuardResponse)(t);let r=await B(),i=await z(r);if(!i.ok)return(0,E.createNodeFailureResponse)(i.reason,i.extras);let a=G(i.meta),n={ok:!0,role:"node",protocolVersion:E.NODE_PROTOCOL_VERSION,source:A,upstream:{kind:"opencode",reachable:!0},sessions:i.payload.sessions.map(e=>{var t;let r,i;return r=(t=e).rawSessionId??t.id,i=(0,I.composeSourceKey)(A.hostId,r),{...t,id:i,parentID:t.parentID?(0,I.composeSourceKey)(A.hostId,t.parentID):t.parentID,hostId:A.hostId,hostLabel:A.hostLabel,hostKind:A.hostKind,rawSessionId:r,sourceSessionKey:i,readOnly:!1,children:t.children.map(e=>{let t,r;return t=e.rawSessionId??e.id,r=(0,I.composeSourceKey)(A.hostId,t),{...e,id:r,parentID:e.parentID?(0,I.composeSourceKey)(A.hostId,e.parentID):e.parentID,hostId:A.hostId,hostLabel:A.hostLabel,hostKind:A.hostKind,rawSessionId:t,sourceSessionKey:r,readOnly:!1}})}}),processHints:i.payload.processHints,hosts:[a],hostStatuses:[a],...i.payload.failedPorts?{failedPorts:i.payload.failedPorts}:{},...i.payload.degraded?{degraded:!0}:{}};return Response.json(n)}function D(e,t){let r=Number(process.env[e]);return Number.isFinite(r)&&r>0?Math.floor(r):t}function F(e,t,r){let i,a=Error(`${r} timed out after ${t}ms`),n=new AbortController,s=new Promise((e,r)=>{i=setTimeout(()=>{n.abort(),r(a)},t)});return Promise.race([e(n.signal).catch(e=>{if(n.signal.aborted)throw a;throw e}),s]).finally(()=>{i&&clearTimeout(i)})}function x(e){return e.trim().toLowerCase()}function k(e){return N.has(x(e))}async function M(e,t,r){var i=(await F(r=>e.session.messages({path:{id:t},query:{limit:8},signal:r}),r,`session.messages(${t})`)).data||[];let a=[];for(let e of i)for(let t of e.parts||[]){let e=t?.state?.status;if("string"==typeof e){let t=x(e);t&&a.push(t)}}return a}function q(e){return e.time?.updated||e.time?.created||0}function H(e){return"busy"===e||"retry"===e?e:"idle"}function K(e){U.delete(e),U.delete(`child:${e}`)}function $(e,t,r,i){let a=U.get(e)??{lastBusyAt:0,lastSeenAt:r};if("busy"===t)return a.lastBusyAt=r,a.lastSeenAt=r,U.set(e,a),t;if("retry"===t)return a.lastSeenAt=r,U.set(e,a),t;let n=a.lastBusyAt>0&&r-a.lastBusyAt<=i;return a.lastSeenAt=r,U.set(e,a),n?"busy":"idle"}function L(e,t){let r;for(let[r,i]of U){let a=e-i.lastSeenAt,n=t.has(r);(a>864e5||!n&&a>18e5)&&U.delete(r)}let i=Number.isFinite(r=Number(process.env.OPENCODE_STATUS_STICKY_MAX_ENTRIES))&&r>0?Math.floor(r):5e3;if(U.size<=i)return;let a=U.size-i,n=Array.from(U.entries()).sort((e,t)=>e[1].lastSeenAt-t[1].lastSeenAt),s=0;for(let[e]of n){if(s>=a)break;!t.has(e)&&(U.delete(e),s++)}if(!(s>=a))for(let[e]of n){if(s>=a)break;U.has(e)&&(U.delete(e),s++)}}function W(e,t,r=!1){return{id:e.id,slug:e.slug,title:e.title,directory:e.directory,debugReason:e.debugReason,parentID:e.parentID,time:e.time,realTimeStatus:t,waitingForUser:r}}function j(e){return w.default.basename(e)}async function B(){let e=1e3;try{let t=await (0,R.readConfig)(),r=(t.vibepulse&&"object"==typeof t.vibepulse&&!Array.isArray(t.vibepulse)?t.vibepulse:{}).stickyBusyDelayMs;"number"==typeof r&&Number.isFinite(r)&&r>=0&&(e=r)}catch{}return e}function G(e){return{hostId:A.hostId,hostLabel:A.hostLabel,hostKind:A.hostKind,online:e.online,...e.degraded?{degraded:!0}:{},...e.reason?{reason:e.reason}:{}}}function V(e){return e.toLowerCase().includes("timed out")}function X(e,t,r={}){let i="upstream_timeout"===e?{statusReason:"OpenCode discovery timed out",reachable:!1}:{statusReason:"OpenCode server not found",reachable:!1},a=G({online:!1,degraded:!0,reason:i.statusReason});return{ok:!1,reason:e,extras:{role:"node",source:A,upstream:{kind:"opencode",reachable:i.reachable},processHints:t,hosts:[a],hostStatuses:[a],...r}}}async function z(e){let{processes:t,timedOut:r}=(0,b.discoverOpencodeProcessCwdsWithoutPortWithMeta)(),i=new Map;for(let e of t)!(!e.cwd||e.cwd.startsWith("/private/tmp/opencode"))&&(i.has(e.cwd)||i.set(e.cwd,{pid:e.pid,directory:e.cwd,projectName:j(e.cwd),reason:"process_without_api_port"}));let a=Array.from(i.values()),{ports:n,timedOut:s}=(0,b.discoverOpencodePortsWithMeta)();if(!n.length)return s||r?X("upstream_timeout",a):X("upstream_unreachable",a);try{var o;let t=await Promise.allSettled(n.map(async e=>{let t=(0,S.createOpencodeClient)({baseUrl:`http://localhost:${e}`}),r=await F(e=>t.session.list({signal:e}),C,`session.list(${e})`),i=await F(e=>t.session.status({signal:e}),_,`session.status(${e})`).catch(()=>({data:{}}));return{port:e,client:t,sessions:r.data||[],status:i.data||{}}})),r=[],i={},s={},l={},d=[];for(let e=0;e<t.length;e++){let a=t[e],o=n[e];if("fulfilled"!==a.status){d.push({port:o,reason:a.reason instanceof Error?a.reason.message:String(a.reason)});continue}for(let e of(r.push(...a.value.sessions),Object.assign(i,a.value.status),s[a.value.port]=a.value.client,a.value.sessions))e.id in l||(l[e.id]=a.value.port)}let u=[],c=new Set;for(let e of r)c.has(e.id)||(c.add(e.id),u.push(e));let p=u.filter(e=>!e.parentID),h=u.filter(e=>!!e.parentID),f=Date.now();for(let e of((0,T.pruneSessionForceUnarchived)(f),(0,T.pruneSessionStickyStatusBlocked)(f),p))e.time?.archived!==void 0&&(0,T.shouldForceSessionUnarchived)(e.id,f)&&(e.time={...e.time,archived:void 0});for(let e of h)e.time?.archived!==void 0&&(0,T.shouldForceSessionUnarchived)(e.id,f)&&(e.time={...e.time,archived:void 0});if(t.length>0&&d.length===t.length)return L(Date.now(),new Set),X((o=d.map(e=>e.reason)).length>0&&o.every(V)?"upstream_timeout":"upstream_unreachable",a,{failedPorts:d});let m=p.map(e=>({...e,projectName:j(e.directory),branch:function(e){if(!function(e){try{let t=(0,v.execSync)("git rev-parse --is-inside-work-tree",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200});return"true"===t.trim()}catch{return!1}}(e))return null;try{return(0,v.execSync)("git branch --show-current",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200}).trim()||null}catch{return null}}(e.directory),realTimeStatus:i[e.id]?.type||"idle",waitingForUser:!1,children:[]})),g=new Map(m.map(e=>[e.id,e])),y=Date.now(),w=[];for(let e of h){let t=e.parentID?g.get(e.parentID):void 0;if(!t){let r=m.filter(t=>t.directory===e.directory).sort((e,t)=>q(t)-q(e));t=r.find(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus)||r[0]}if(!t)continue;let r=i[e.id]?.type,a=q(e),n=a>0&&y-a<=18e5;!(e.time?.archived&&!r&&!n)&&(r&&"idle"!==r?t.children.push(W(e,r)):n&&w.length<50&&w.push({parentId:t.id,child:e,childUpdatedAt:a}))}if(w.length>0)for(let e of(await Promise.allSettled(w.map(async({parentId:e,child:t,childUpdatedAt:r})=>{let i=l[t.id]??l[e],a=i?s[i]:void 0,n=r>0&&y-r<=12e4;if(!a)return{parentId:e,child:t,childStatus:n?"busy":"idle"};try{let i=await M(a,t.id,O),s=i.some(e=>"running"===e),o=!s&&i.some(k);return{parentId:e,child:t,childWaitingForUser:o,childStatus:o||s||r>0&&y-r<=3e5||n?"busy":"idle"}}catch{return{parentId:e,child:t,childWaitingForUser:!1,childStatus:n?"busy":"idle"}}})))){if("fulfilled"!==e.status||"idle"===e.value.childStatus)continue;let t=g.get(e.value.parentId);t&&t.children.push(W(e.value.child,e.value.childStatus,e.value.childWaitingForUser))}let b=m.filter(e=>{if("idle"!==e.realTimeStatus)return!1;let t=q(e);return t>0&&y-t<=18e5||!!e.time?.archived}).sort((e,t)=>q(t)-q(e)).slice(0,50);if(b.length>0)for(let e of(await Promise.allSettled(b.map(async e=>{let t=q(e),r=t>0&&y-t<=12e4,i=l[e.id],a=i?s[i]:void 0;if(!a)return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1};try{let t,i=await M(a,e.id,O),n=i.some(e=>"running"===e),s=!n&&i.some(k),o=i.length>0&&i.every(e=>"completed"===e),l=!!(t=e.time?.updated)&&y-t<=3e4;return{sessionId:e.id,status:n||s?"busy":o&&!l?"idle":r||l?"busy":"idle",waitingForUser:s}}catch{return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1}}})))){if("fulfilled"!==e.status||"idle"===e.value.status)continue;let t=g.get(e.value.sessionId);t&&(t.realTimeStatus=e.value.status,e.value.waitingForUser&&(t.waitingForUser=!0))}for(let e of m)e.children.length>0&&e.children.sort((e,t)=>{let r="busy"===e.realTimeStatus||"retry"===e.realTimeStatus,i="busy"===t.realTimeStatus||"retry"===t.realTimeStatus;if(r&&!i)return -1;if(!r&&i)return 1;let a=e.time?.updated||e.time?.created||0;return(t.time?.updated||t.time?.created||0)-a});let R=m.filter(e=>"busy"===e.realTimeStatus||!!e.time?.archived||e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus));if(R.length>0)for(let e of(await Promise.allSettled(R.map(async e=>{let t=l[e.id],r=t?s[t]:void 0;if(!r)return{sessionId:e.id,parentWaiting:!1,running:!1,waitingChildIds:new Set};try{let t=await M(r,e.id,O),i=t.some(e=>"running"===e),a=!i&&t.some(k),n=await Promise.allSettled(e.children.filter(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus).map(async t=>{let r=l[t.id]??l[e.id],i=r?s[r]:void 0;if(!i)return{childId:t.id,waiting:!1};try{let e=await M(i,t.id,O),r=e.some(e=>"running"===e);return{childId:t.id,waiting:!r&&e.some(k)}}catch{return{childId:t.id,waiting:!1}}})),o=new Set(n.filter(e=>"fulfilled"===e.status).filter(e=>e.value.waiting).map(e=>e.value.childId));return{sessionId:e.id,parentWaiting:a,running:i,waitingChildIds:o}}catch{return{sessionId:e.id,parentWaiting:!1,running:!1,waitingChildIds:new Set}}})))){if("fulfilled"!==e.status)continue;let t=m.find(t=>t.id===e.value.sessionId);if(t){for(let r of t.children)e.value.waitingChildIds.has(r.id)&&(r.waitingForUser=!0);e.value.running&&(t.realTimeStatus="busy"),e.value.parentWaiting&&(t.waitingForUser=!0)}}let I=Date.now(),E=new Set;for(let e of m)for(let t of(E.add(e.id),e.children))E.add(`child:${t.id}`);for(let t of m)(!((0,T.takeSessionStickyStatusBlocked)(t.id,I)||t.time?.archived)||(function(e){for(let t of(K(e.id),(0,T.clearSessionForceUnarchived)(e.id),e.children))K(`child:${t.id}`),(0,T.clearSessionForceUnarchived)(t.id)}(t),0))&&function(e,t,r){for(let i of e.children){if(i.time?.archived){K(`child:${i.id}`),(0,T.clearSessionForceUnarchived)(i.id);continue}let e=H(i.realTimeStatus),a=i.waitingForUser&&"idle"===e?"retry":e;i.realTimeStatus=$(`child:${i.id}`,a,t,r),("busy"===i.realTimeStatus||"retry"===i.realTimeStatus||i.waitingForUser)&&(0,T.markSessionForceUnarchived)(i.id,t)}let i=H(e.realTimeStatus),a=e.waitingForUser&&"idle"===i?"retry":i;e.realTimeStatus=$(e.id,a,t,r);let n=e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser);("busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser||n)&&(0,T.markSessionForceUnarchived)(e.id,t)}(t,I,e);L(I,E);let A=new Set;for(let e of u)e.directory&&A.add(e.directory);let U=a.filter(e=>!A.has(e.directory));return{ok:!0,payload:{sessions:m,processHints:U,...d.length>0?{failedPorts:d,degraded:!0}:{}},meta:{online:!0,...d.length>0?{degraded:!0}:{}}}}catch(e){return console.error("Error fetching node-local sessions:",e),X(e instanceof Error&&V(e.message)?"upstream_timeout":"upstream_unreachable",a,{details:e instanceof Error?e.message:String(e)})}}e.s(["GET",()=>P,"dynamic",0,"force-dynamic"],87009);var Y=e.i(87009);let Z=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/node/sessions/route",pathname:"/api/node/sessions",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/node/sessions/route.ts",nextConfigOutput:"standalone",userland:Y}),{workAsyncStorage:J,workUnitAsyncStorage:Q,serverHooks:ee}=Z;function et(){return(0,i.patchFetch)({workAsyncStorage:J,workUnitAsyncStorage:Q})}async function er(e,t,i){Z.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let S="/api/node/sessions/route";S=S.replace(/\/index$/,"")||"/";let v=await Z.prepare(e,t,{srcPage:S,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:w,params:b,nextConfig:R,parsedUrl:I,isDraftMode:E,prerenderManifest:T,routerServerContext:C,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,resolvedPathname:A,clientReferenceManifest:U,serverActionsManifest:N}=v,P=(0,o.normalizeAppPath)(S),D=!!(T.dynamicRoutes[P]||T.routes[A]),F=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,I,!1):t.end("This page could not be found"),null);if(D&&!E){let e=!!T.routes[A],t=T.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(R.experimental.adapterPath)return await F();throw new g.NoFallbackError}}let x=null;!D||Z.isDev||E||(x="/index"===(x=A)?"/":x);let k=!0===Z.isDev||!D,M=D&&!k;N&&U&&(0,s.setManifestsSingleton)({page:S,clientReferenceManifest:U,serverActionsManifest:N});let q=e.method||"GET",H=(0,n.getTracer)(),K=H.getActiveScopeSpan(),$={params:b,prerenderManifest:T,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:k,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:R.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,a)=>Z.onRequestError(e,t,i,a,C)},sharedContext:{buildId:w}},L=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),j=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let s=async e=>Z.handle(j,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${q} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${S}`)}),o=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var n,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&_&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&i.waitUntil&&(i.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(L,W,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,i=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await Z.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:_})},!1,C),t}},u=await Z.handleResponse({req:e,nextConfig:R,cacheKey:x,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,responseGenerator:d,waitUntil:i.waitUntil,isMinimalMode:o});if(!D)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",_?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&D||g.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(L,W,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};K?await l(K):await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${S}`,kind:n.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await Z.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:_})},!1,C),D)throw t;return await (0,p.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>er,"patchFetch",()=>et,"routeModule",()=>Z,"serverHooks",()=>ee,"workAsyncStorage",()=>J,"workUnitAsyncStorage",()=>Q],92777)}];
1
+ module.exports=[92777,e=>{"use strict";var t=e.i(47909),r=e.i(74017),i=e.i(96250),a=e.i(59756),s=e.i(61916),n=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),f=e.i(26937),y=e.i(10372),m=e.i(93695);e.i(52474);var g=e.i(220),v=e.i(33405),S=e.i(14747),w=e.i(99686),b=e.i(57181),R=e.i(63127),I=e.i(39948),E=e.i(68817),T=e.i(74579),O=e.i(84044);let A=F("OPENCODE_SESSIONS_LIST_TIMEOUT_MS",6e3),C=F("OPENCODE_SESSIONS_STATUS_TIMEOUT_MS",4e3),_=F("OPENCODE_SESSIONS_MESSAGES_TIMEOUT_MS",2500),P={hostId:"local",hostLabel:"Local",hostKind:"local"},U=new Map,N=new Set(["awaiting-input","awaiting_input","input-required","input_required","requires-input","requires_input","blocked","paused"]);async function x(e){let t=(0,E.guardNodeRequest)(e);if(!t.ok)return(0,E.toNodeRequestGuardResponse)(t);let r=await G(),i=await Q(r);if(!i.ok)return(0,E.createNodeFailureResponse)(i.reason,i.extras);let a=z(i.meta),s={ok:!0,role:"node",protocolVersion:E.NODE_PROTOCOL_VERSION,source:P,upstream:{kind:"opencode",reachable:!0},sessions:i.payload.sessions.map(e=>{var t;let r,i,a,s,n;return r=(t=e).rawSessionId??(0,I.extractProviderRawId)(t.id),a=X(r,{provider:i=t.provider??(0,I.detectProviderFromRawId)(t.id),readOnly:t.readOnly,capabilities:t.capabilities,topology:t.topology}),n=(s=t.parentID?(0,I.extractProviderRawId)(t.parentID):void 0)?X(s,{provider:i}).sourceKey:t.parentID,{...t,id:a.sourceKey,parentID:n,hostId:P.hostId,hostLabel:P.hostLabel,hostKind:P.hostKind,rawSessionId:r,sourceSessionKey:a.sourceKey,provider:i,providerRawId:t.providerRawId??a.providerRawId,readOnly:t.readOnly??a.readOnly,capabilities:t.capabilities??a.capabilities,topology:t.topology??a.topology,children:t.children.map(e=>{var t;let r,s,n,o,l,d;return t=a.sourceKey,r=e.rawSessionId??(0,I.extractProviderRawId)(e.id),o=X(r,{provider:n="claude-code"===(s=e.provider??(0,I.detectProviderFromRawId)(e.id))?s:i??s,readOnly:e.readOnly,capabilities:e.capabilities,topology:e.topology}),l=e.parentID?(0,I.extractProviderRawId)(e.parentID):void 0,d=t??(l?X(l,{provider:n}).sourceKey:e.parentID),{...e,id:o.sourceKey,parentID:d,hostId:P.hostId,hostLabel:P.hostLabel,hostKind:P.hostKind,rawSessionId:r,sourceSessionKey:o.sourceKey,provider:n,providerRawId:e.providerRawId??o.providerRawId,readOnly:e.readOnly??o.readOnly,capabilities:e.capabilities??o.capabilities,topology:e.topology??o.topology}})}}),processHints:i.payload.processHints,hosts:[a],hostStatuses:[a],...i.payload.failedPorts?{failedPorts:i.payload.failedPorts}:{},...i.payload.degraded?{degraded:!0}:{}};return Response.json(s)}function F(e,t){let r=Number(process.env[e]);return Number.isFinite(r)&&r>0?Math.floor(r):t}function D(e,t,r){let i,a=Error(`${r} timed out after ${t}ms`),s=new AbortController,n=new Promise((e,r)=>{i=setTimeout(()=>{s.abort(),r(a)},t)});return Promise.race([e(s.signal).catch(e=>{if(s.signal.aborted)throw a;throw e}),n]).finally(()=>{i&&clearTimeout(i)})}function k(e){return e.trim().toLowerCase()}function H(e){return N.has(k(e))}async function M(e,t,r){var i=(await D(r=>(0,O.getOpencodeSessionMessages)(e,t,8,r),r,`session.messages(${t})`)).data||[];let a=[];for(let e of i)for(let t of e.parts||[]){let e=t?.state?.status;if("string"==typeof e){let t=k(e);t&&a.push(t)}}return a}function K(e){return e.time?.updated||e.time?.created||0}function q(e){return"busy"===e||"retry"===e?e:"idle"}function $(e){U.delete(e),U.delete(`child:${e}`)}function L(e,t,r,i){let a=U.get(e)??{lastBusyAt:0,lastSeenAt:r};if("busy"===t)return a.lastBusyAt=r,a.lastSeenAt=r,U.set(e,a),t;if("retry"===t)return a.lastSeenAt=r,U.set(e,a),t;let s=a.lastBusyAt>0&&r-a.lastBusyAt<=i;return a.lastSeenAt=r,U.set(e,a),s?"busy":"idle"}function j(e,t){let r;for(let[r,i]of U){let a=e-i.lastSeenAt,s=t.has(r);(a>864e5||!s&&a>18e5)&&U.delete(r)}let i=Number.isFinite(r=Number(process.env.OPENCODE_STATUS_STICKY_MAX_ENTRIES))&&r>0?Math.floor(r):5e3;if(U.size<=i)return;let a=U.size-i,s=Array.from(U.entries()).sort((e,t)=>e[1].lastSeenAt-t[1].lastSeenAt),n=0;for(let[e]of s){if(n>=a)break;!t.has(e)&&(U.delete(e),n++)}if(!(n>=a))for(let[e]of s){if(n>=a)break;U.has(e)&&(U.delete(e),n++)}}function W(e,t,r=!1){return{id:e.id,slug:e.slug,title:e.title,directory:e.directory,debugReason:e.debugReason,parentID:e.parentID,time:e.time,realTimeStatus:t,waitingForUser:r}}function B(e){return S.default.basename(e)}async function G(){let e=1e3;try{let t=await (0,b.readConfig)(),r=(t.vibepulse&&"object"==typeof t.vibepulse&&!Array.isArray(t.vibepulse)?t.vibepulse:{}).stickyBusyDelayMs;"number"==typeof r&&Number.isFinite(r)&&r>=0&&(e=r)}catch{}return e}async function V(e){try{var t;return!(t=(await R.claudeCodeLocalSessionProvider.getSessionsResult({stickyBusyDelayMs:e})).payload)||"object"!=typeof t||Array.isArray(t)?{sessions:[],processHints:[]}:{sessions:Array.isArray(t.sessions)?t.sessions:[],processHints:Array.isArray(t.processHints)?t.processHints:[]}}catch{return{sessions:[],processHints:[]}}}function X(e,t){return(0,I.composeProviderSourceKey)(P.hostId,e,{...t.provider?{provider:t.provider}:{},...void 0!==t.readOnly?{readOnly:t.readOnly}:{},...t.capabilities?{capabilities:t.capabilities}:{},...t.topology?{topology:t.topology}:{}})}function z(e){return{hostId:P.hostId,hostLabel:P.hostLabel,hostKind:P.hostKind,online:e.online,...e.degraded?{degraded:!0}:{},...e.reason?{reason:e.reason}:{}}}function Y(e){return e.toLowerCase().includes("timed out")}function Z(e,t,r={}){let i="upstream_timeout"===e?{statusReason:"OpenCode discovery timed out",reachable:!1}:{statusReason:"OpenCode server not found",reachable:!1},a=z({online:!1,degraded:!0,reason:i.statusReason});return{ok:!1,reason:e,extras:{role:"node",source:P,upstream:{kind:"opencode",reachable:i.reachable},processHints:t,hosts:[a],hostStatuses:[a],...r}}}function J(e){return e.length>0&&e.every(Y)?"upstream_timeout":"upstream_unreachable"}async function Q(e){let{processes:t,timedOut:r}=(0,w.discoverOpencodeProcessCwdsWithoutPortWithMeta)(),i=new Map;for(let e of t)!(!e.cwd||e.cwd.startsWith("/private/tmp/opencode"))&&(i.has(e.cwd)||i.set(e.cwd,{pid:e.pid,directory:e.cwd,projectName:B(e.cwd),reason:"process_without_api_port"}));let a=Array.from(i.values()),{ports:s,timedOut:n}=(0,w.discoverOpencodePortsWithMeta)();if(!s.length){if(n||r)return Z("upstream_timeout",a);let t=await V(e);return t.sessions.length>0||t.processHints.length>0?{ok:!0,payload:{sessions:t.sessions,processHints:[...a,...t.processHints]},meta:{online:!0}}:Z("upstream_unreachable",a)}try{let t=await Promise.allSettled(s.map(async e=>{let t=(0,O.createVibePulseOpencodeClient)(`http://localhost:${e}`),r=await D(e=>(0,O.listOpencodeSessions)(t,e),A,`session.list(${e})`),i=await D(e=>(0,O.getOpencodeSessionStatus)(t,e),C,`session.status(${e})`).catch(()=>({data:{}}));return{port:e,client:t,sessions:r.data||[],status:i.data||{}}})),r=[],i={},n={},o={},l=[];for(let e=0;e<t.length;e++){let a=t[e],d=s[e];if("fulfilled"!==a.status){l.push({port:d,reason:(0,O.formatOpencodeSdkError)(a.reason)});continue}for(let e of(r.push(...a.value.sessions),Object.assign(i,a.value.status),n[a.value.port]=a.value.client,a.value.sessions))e.id in o||(o[e.id]=a.value.port)}let d=[],u=new Set;for(let e of r)u.has(e.id)||(u.add(e.id),d.push(e));let c=d.filter(e=>!e.parentID),p=d.filter(e=>!!e.parentID),h=Date.now();for(let e of((0,T.pruneSessionForceUnarchived)(h),(0,T.pruneSessionStickyStatusBlocked)(h),c))e.time?.archived!==void 0&&(0,T.shouldForceSessionUnarchived)(e.id,h)&&(e.time={...e.time,archived:void 0});for(let e of p)e.time?.archived!==void 0&&(0,T.shouldForceSessionUnarchived)(e.id,h)&&(e.time={...e.time,archived:void 0});if(t.length>0&&l.length===t.length){let t=await V(e);if(t.sessions.length>0||t.processHints.length>0)return{ok:!0,payload:{sessions:t.sessions,processHints:[...a,...t.processHints],failedPorts:l,degraded:!0},meta:{online:!0,degraded:!0,reason:J(l.map(e=>e.reason))}};return j(Date.now(),new Set),Z(J(l.map(e=>e.reason)),a,{failedPorts:l})}let f=c.map(e=>({...e,projectName:B(e.directory),branch:function(e){if(!function(e){try{let t=(0,v.execSync)("git rev-parse --is-inside-work-tree",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200});return"true"===t.trim()}catch{return!1}}(e))return null;try{return(0,v.execSync)("git branch --show-current",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200}).trim()||null}catch{return null}}(e.directory),realTimeStatus:i[e.id]?.type||"idle",waitingForUser:!1,children:[]})),y=new Map(f.map(e=>[e.id,e])),m=Date.now(),g=[];for(let e of p){let t=e.parentID?y.get(e.parentID):void 0;if(!t){let r=f.filter(t=>t.directory===e.directory).sort((e,t)=>K(t)-K(e));t=r.find(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus)||r[0]}if(!t)continue;let r=i[e.id]?.type,a=K(e),s=a>0&&m-a<=18e5;!(e.time?.archived&&!r&&!s)&&(r&&"idle"!==r?t.children.push(W(e,r)):s&&g.length<50&&g.push({parentId:t.id,child:e,childUpdatedAt:a}))}if(g.length>0)for(let e of(await Promise.allSettled(g.map(async({parentId:e,child:t,childUpdatedAt:r})=>{let i=o[t.id]??o[e],a=i?n[i]:void 0,s=r>0&&m-r<=12e4;if(!a)return{parentId:e,child:t,childStatus:s?"busy":"idle"};try{let i=await M(a,t.id,_),n=i.some(e=>"running"===e),o=!n&&i.some(H);return{parentId:e,child:t,childWaitingForUser:o,childStatus:o||n||r>0&&m-r<=3e5||s?"busy":"idle"}}catch{return{parentId:e,child:t,childWaitingForUser:!1,childStatus:s?"busy":"idle"}}})))){if("fulfilled"!==e.status||"idle"===e.value.childStatus)continue;let t=y.get(e.value.parentId);t&&t.children.push(W(e.value.child,e.value.childStatus,e.value.childWaitingForUser))}let S=f.filter(e=>{if("idle"!==e.realTimeStatus)return!1;let t=K(e);return t>0&&m-t<=18e5||!!e.time?.archived}).sort((e,t)=>K(t)-K(e)).slice(0,50);if(S.length>0)for(let e of(await Promise.allSettled(S.map(async e=>{let t=K(e),r=t>0&&m-t<=12e4,i=o[e.id],a=i?n[i]:void 0;if(!a)return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1};try{let t,i=await M(a,e.id,_),s=i.some(e=>"running"===e),n=!s&&i.some(H),o=i.length>0&&i.every(e=>"completed"===e),l=!!(t=e.time?.updated)&&m-t<=3e4;return{sessionId:e.id,status:s||n?"busy":o&&!l?"idle":r||l?"busy":"idle",waitingForUser:n}}catch{return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1}}})))){if("fulfilled"!==e.status||"idle"===e.value.status)continue;let t=y.get(e.value.sessionId);t&&(t.realTimeStatus=e.value.status,e.value.waitingForUser&&(t.waitingForUser=!0))}for(let e of f)e.children.length>0&&e.children.sort((e,t)=>{let r="busy"===e.realTimeStatus||"retry"===e.realTimeStatus,i="busy"===t.realTimeStatus||"retry"===t.realTimeStatus;if(r&&!i)return -1;if(!r&&i)return 1;let a=e.time?.updated||e.time?.created||0;return(t.time?.updated||t.time?.created||0)-a});let w=f.filter(e=>"busy"===e.realTimeStatus||!!e.time?.archived||e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus));if(w.length>0)for(let e of(await Promise.allSettled(w.map(async e=>{let t=o[e.id],r=t?n[t]:void 0;if(!r)return{sessionId:e.id,parentWaiting:!1,running:!1,waitingChildIds:new Set};try{let t=await M(r,e.id,_),i=t.some(e=>"running"===e),a=!i&&t.some(H),s=await Promise.allSettled(e.children.filter(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus).map(async t=>{let r=o[t.id]??o[e.id],i=r?n[r]:void 0;if(!i)return{childId:t.id,waiting:!1};try{let e=await M(i,t.id,_),r=e.some(e=>"running"===e);return{childId:t.id,waiting:!r&&e.some(H)}}catch{return{childId:t.id,waiting:!1}}})),l=new Set(s.filter(e=>"fulfilled"===e.status).filter(e=>e.value.waiting).map(e=>e.value.childId));return{sessionId:e.id,parentWaiting:a,running:i,waitingChildIds:l}}catch{return{sessionId:e.id,parentWaiting:!1,running:!1,waitingChildIds:new Set}}})))){if("fulfilled"!==e.status)continue;let t=f.find(t=>t.id===e.value.sessionId);if(t){for(let r of t.children)e.value.waitingChildIds.has(r.id)&&(r.waitingForUser=!0);e.value.running&&(t.realTimeStatus="busy"),e.value.parentWaiting&&(t.waitingForUser=!0)}}let b=Date.now(),R=new Set;for(let e of f)for(let t of(R.add(e.id),e.children))R.add(`child:${t.id}`);for(let t of f)(!((0,T.takeSessionStickyStatusBlocked)(t.id,b)||t.time?.archived)||(function(e){for(let t of($(e.id),(0,T.clearSessionForceUnarchived)(e.id),e.children))$(`child:${t.id}`),(0,T.clearSessionForceUnarchived)(t.id)}(t),0))&&function(e,t,r){for(let i of e.children){if(i.time?.archived){$(`child:${i.id}`),(0,T.clearSessionForceUnarchived)(i.id);continue}let e=q(i.realTimeStatus),a=i.waitingForUser&&"idle"===e?"retry":e;i.realTimeStatus=L(`child:${i.id}`,a,t,r),("busy"===i.realTimeStatus||"retry"===i.realTimeStatus||i.waitingForUser)&&(0,T.markSessionForceUnarchived)(i.id,t)}let i=q(e.realTimeStatus),a=e.waitingForUser&&"idle"===i?"retry":i;e.realTimeStatus=L(e.id,a,t,r);let s=e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser);("busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser||s)&&(0,T.markSessionForceUnarchived)(e.id,t)}(t,b,e);j(b,R);let I=new Set;for(let e of d)e.directory&&I.add(e.directory);let E=a.filter(e=>!I.has(e.directory)),P=await V(e);return{ok:!0,payload:{sessions:[...f,...P.sessions],processHints:[...E,...P.processHints],...l.length>0?{failedPorts:l,degraded:!0}:{}},meta:{online:!0,...l.length>0?{degraded:!0}:{}}}}catch(e){return console.error("Error fetching node-local sessions:",e),Z(e instanceof Error&&Y(e.message)?"upstream_timeout":"upstream_unreachable",a,{details:e instanceof Error?e.message:String(e)})}}e.s(["GET",()=>x,"dynamic",0,"force-dynamic"],87009);var ee=e.i(87009);let et=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/node/sessions/route",pathname:"/api/node/sessions",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/node/sessions/route.ts",nextConfigOutput:"standalone",userland:ee}),{workAsyncStorage:er,workUnitAsyncStorage:ei,serverHooks:ea}=et;function es(){return(0,i.patchFetch)({workAsyncStorage:er,workUnitAsyncStorage:ei})}async function en(e,t,i){et.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/node/sessions/route";v=v.replace(/\/index$/,"")||"/";let S=await et.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:w,params:b,nextConfig:R,parsedUrl:I,isDraftMode:E,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:A,revalidateOnlyGenerated:C,resolvedPathname:_,clientReferenceManifest:P,serverActionsManifest:U}=S,N=(0,o.normalizeAppPath)(v),x=!!(T.dynamicRoutes[N]||T.routes[_]),F=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(x&&!E){let e=!!T.routes[_],t=T.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(R.experimental.adapterPath)return await F();throw new m.NoFallbackError}}let D=null;!x||et.isDev||E||(D="/index"===(D=_)?"/":D);let k=!0===et.isDev||!x,H=x&&!k;U&&P&&(0,n.setManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:U});let M=e.method||"GET",K=(0,s.getTracer)(),q=K.getActiveScopeSpan(),$={params:b,prerenderManifest:T,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:k,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:R.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,a)=>et.onRequestError(e,t,i,a,O)},sharedContext:{buildId:w}},L=new l.NodeNextRequest(e),j=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let n=async e=>et.handle(W,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${M} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${v}`)}),o=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&A&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await n(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&i.waitUntil&&(i.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!x)return await (0,p.sendResponse)(L,j,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[y.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,i=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await et.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,O),t}},u=await et.handleResponse({req:e,nextConfig:R,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:C,responseGenerator:d,waitUntil:i.waitUntil,isMinimalMode:o});if(!x)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&x||m.delete(y.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(L,j,new Response(u.value.body,{headers:m,status:u.value.status||200})),null};q?await l(q):await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof m.NoFallbackError||await et.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,O),x)throw t;return await (0,p.sendResponse)(L,j,new Response(null,{status:500})),null}}e.s(["handler",()=>en,"patchFetch",()=>es,"routeModule",()=>et,"serverHooks",()=>ea,"workAsyncStorage",()=>er,"workUnitAsyncStorage",()=>ei],92777)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_aca45402.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[86100,e=>{"use strict";var t=e.i(47909),r=e.i(74017),s=e.i(96250),i=e.i(59756),n=e.i(61916),a=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),y=e.i(10372),g=e.i(93695);e.i(52474);var m=e.i(220);e.i(39354);var S=e.i(34959),w=e.i(33405),v=e.i(14747),b=e.i(99686),I=e.i(57181),E=e.i(74579),T=e.i(586),R=e.i(68817),A=e.i(82414),O=e.i(81951);let _=H("OPENCODE_SESSIONS_LIST_TIMEOUT_MS",6e3),U=H("OPENCODE_SESSIONS_STATUS_TIMEOUT_MS",4e3),C=H("OPENCODE_SESSIONS_MESSAGES_TIMEOUT_MS",2500),P=H("VIBEPULSE_NODE_SESSIONS_TIMEOUT_MS",6e3),M=new Map;function N(e){M.delete(e),M.delete(`child:${e}`)}let D={hostId:"local",hostLabel:"Local",hostKind:"local"};async function F(){return ef()}async function x(e){return eh(e)}function H(e,t){let r=Number(process.env[e]);return Number.isFinite(r)&&r>0?Math.floor(r):t}function k(e,t,r){let s,i=Error(`${r} timed out after ${t}ms`),n=new AbortController,a=new Promise((e,r)=>{s=setTimeout(()=>{n.abort(),r(i)},t)});return Promise.race([e(n.signal).catch(e=>{if(n.signal.aborted)throw i;throw e}),a]).finally(()=>{s&&clearTimeout(s)})}let K=new Set(["awaiting-input","awaiting_input","input-required","input_required","requires-input","requires_input","blocked","paused"]);function L(e){return e.trim().toLowerCase()}function $(e){return K.has(L(e))}async function j(e,t,r){var s=(await k(r=>e.session.messages({path:{id:t},query:{limit:8},signal:r}),r,`session.messages(${t})`)).data||[];let i=[];for(let e of s)for(let t of e.parts||[]){let e=t?.state?.status;if("string"==typeof e){let t=L(e);t&&i.push(t)}}return i}function q(e){return e.time?.updated||e.time?.created||0}function B(e){return"busy"===e||"retry"===e?e:"idle"}function W(e,t,r,s){let i=M.get(e)??{lastBusyAt:0,lastSeenAt:r};if("busy"===t)return i.lastBusyAt=r,i.lastSeenAt=r,M.set(e,i),t;if("retry"===t)return i.lastSeenAt=r,M.set(e,i),t;let n=i.lastBusyAt>0&&r-i.lastBusyAt<=s;return i.lastSeenAt=r,M.set(e,i),n?"busy":"idle"}function V(e,t){let r;for(let[r,s]of M){let i=e-s.lastSeenAt,n=t.has(r);(i>864e5||!n&&i>18e5)&&M.delete(r)}let s=Number.isFinite(r=Number(process.env.OPENCODE_STATUS_STICKY_MAX_ENTRIES))&&r>0?Math.floor(r):5e3;if(M.size<=s)return;let i=M.size-s,n=Array.from(M.entries()).sort((e,t)=>e[1].lastSeenAt-t[1].lastSeenAt),a=0;for(let[e]of n){if(a>=i)break;!t.has(e)&&(M.delete(e),a++)}if(!(a>=i))for(let[e]of n){if(a>=i)break;M.has(e)&&(M.delete(e),a++)}}function z(e,t,r=!1){return{id:e.id,slug:e.slug,title:e.title,directory:e.directory,debugReason:e.debugReason,parentID:e.parentID,time:e.time,realTimeStatus:t,waitingForUser:r}}function G(e,t){return!!((0,E.takeSessionStickyStatusBlocked)(e.id,t)||e.time?.archived)&&(function(e){for(let t of(N(e.id),(0,E.clearSessionForceUnarchived)(e.id),e.children))N(`child:${t.id}`),(0,E.clearSessionForceUnarchived)(t.id)}(e),!0)}function X(e,t,r){for(let s of e.children){if(s.time?.archived){N(`child:${s.id}`),(0,E.clearSessionForceUnarchived)(s.id);continue}let e=B(s.realTimeStatus),i=s.waitingForUser&&"idle"===e?"retry":e;s.realTimeStatus=W(`child:${s.id}`,i,t,r),("busy"===s.realTimeStatus||"retry"===s.realTimeStatus||s.waitingForUser)&&(0,E.markSessionForceUnarchived)(s.id,t)}let s=B(e.realTimeStatus),i=e.waitingForUser&&"idle"===s?"retry":s;e.realTimeStatus=W(e.id,i,t,r);let n=e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser);("busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser||n)&&(0,E.markSessionForceUnarchived)(e.id,t)}function Y(e){return v.default.basename(e)}async function J(){let e=1e3;try{let t=await (0,I.readConfig)(),r=(t.vibepulse&&"object"==typeof t.vibepulse&&!Array.isArray(t.vibepulse)?t.vibepulse:{}).stickyBusyDelayMs;"number"==typeof r&&Number.isFinite(r)&&r>=0&&(e=r)}catch{}return e}function Z(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Q(e){return"remote"===e.hostKind}function ee(e){return"idle"===e||"busy"===e||"retry"===e}function et(e){if(!Z(e))return!1;let t=e.created,r=e.updated,s=e.archived;return"number"==typeof t&&"number"==typeof r&&(void 0===s||"number"==typeof s)}function er(e){if(!Z(e))return null;let t="string"==typeof e.hostId?e.hostId.trim():e.hostId,r="string"==typeof e.hostLabel?e.hostLabel.trim():e.hostLabel,s=e.hostKind;if(t===D.hostId&&r===D.hostLabel&&s===D.hostKind)return D;let i=e.baseUrl,n=e.enabled;if("string"!=typeof t||"string"!=typeof r||"remote"!==s||"string"!=typeof i||"boolean"!=typeof n)return null;let a=function(e){let t=e.trim();if(!t)return null;try{let e=new URL(t);if("http:"!==e.protocol&&"https:"!==e.protocol||e.username||e.password)return null;return e.hash="",e.toString().replace(/\/+$/,"")}catch{return null}}(i);return a?{hostId:t,hostLabel:r,hostKind:s,baseUrl:a,enabled:n}:null}function es(e){return e.status?Response.json(e.payload,{status:e.status}):Response.json(e.payload)}function ei(e,t){return{hostId:e.hostId,hostLabel:e.hostLabel,hostKind:e.hostKind,online:t.online,...t.degraded?{degraded:!0}:{},...t.reason?{reason:t.reason}:{},...Q(e)?{baseUrl:e.baseUrl}:{}}}function en(e,t){return{...e,hosts:t,hostStatuses:t}}function ea(e){if(!e.includes(":"))return e;try{return(0,T.parseSourceKey)(e).sessionId}catch{return e}}function eo(e,t){try{return(0,T.composeSourceKey)(e,t)}catch{return}}function el(e,t){let r=e.rawSessionId??ea(e.id),s=e.parentID?ea(e.parentID):e.parentID,i=eo(t.hostId,r);if(!i)return null;let n=s?eo(t.hostId,s)??void 0:void 0,a=[];for(let r of e.children){let e=function(e,t){let r=e.rawSessionId??ea(e.id),s=e.parentID?ea(e.parentID):e.parentID,i=eo(t.hostId,r);if(!i)return null;let n=s?eo(t.hostId,s)??void 0:void 0;return{...e,id:i,parentID:n,hostId:t.hostId,hostLabel:t.hostLabel,hostKind:t.hostKind,...Q(t)?{hostBaseUrl:t.baseUrl}:{},rawSessionId:r,sourceSessionKey:i,readOnly:!1}}(r,t);e&&a.push(e)}return{...e,id:i,parentID:n,hostId:t.hostId,hostLabel:t.hostLabel,hostKind:t.hostKind,...Q(t)?{hostBaseUrl:t.baseUrl}:{},rawSessionId:r,sourceSessionKey:i,readOnly:!1,children:a}}async function ed(e){try{return await e.json()}catch{return null}}async function eu(e,t){let r=`node.sessions(${e.hostId})`,s=new AbortController,i=!1,n=setTimeout(()=>{i=!0,s.abort()},P);try{return await fetch(`${t.baseUrl}/api/node/sessions`,{method:"GET",headers:(0,R.createNodeRequestHeaders)(t.token),signal:s.signal})}catch(e){if(i)throw Error(`${r} timed out after ${P}ms`);throw e}finally{clearTimeout(n)}}async function ec(e,t){if(!t)return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!1,degraded:!0,reason:"node_not_configured"}};if(!t.enabled)return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!1,degraded:!0,reason:"node_disabled"}};try{let r=await eu(e,t),s=await ed(r);if(!r.ok){let e=Z(s)&&"string"==typeof s.reason?s.reason:`node_request_failed_${r.status}`;return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!0,degraded:!0,reason:e}}}let i=function(e){if(!Z(e)||!0!==e.ok||"node"!==e.role||e.protocolVersion!==R.NODE_PROTOCOL_VERSION)return null;let t=e.source;if(!Z(t)||"local"!==t.hostId||"Local"!==t.hostLabel||"local"!==t.hostKind)return null;let r=e.upstream;if(!Z(r)||"opencode"!==r.kind||"boolean"!=typeof r.reachable)return null;let s=e.sessions,i=e.processHints;return!Array.isArray(s)||s.some(e=>!function(e){if(!Z(e)||"string"!=typeof e.id||"string"!=typeof e.directory||"string"!=typeof e.projectName)return!1;let t=e.branch;if(null!=t&&"string"!=typeof t||!ee(e.realTimeStatus)||"boolean"!=typeof e.waitingForUser)return!1;let r=e.children;if(!Array.isArray(r)||r.some(e=>!function(e){if(!Z(e)||"string"!=typeof e.id||!ee(e.realTimeStatus)||"boolean"!=typeof e.waitingForUser)return!1;let t=e.parentID,r=e.directory,s=e.time;return(void 0===t||"string"==typeof t)&&(void 0===r||"string"==typeof r)&&(void 0===s||!!et(s))}(e)))return!1;let s=e.time;return void 0===s||!!et(s)}(e))||!Array.isArray(i)||i.some(e=>!(Z(e)&&"number"==typeof e.pid&&"string"==typeof e.directory&&"string"==typeof e.projectName&&"process_without_api_port"===e.reason))?null:{sessions:s,processHints:i,degraded:!0===e.degraded}}(s);if(!i)return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!0,degraded:!0,reason:"node_payload_invalid"}};return{payload:{sessions:i.sessions,processHints:i.processHints,...i.degraded?{degraded:!0}:{}},sourceMeta:{online:!0,...i.degraded?{degraded:!0}:{}}}}catch(e){return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!1,degraded:!0,reason:e instanceof Error?e.message:String(e)}}}}async function ep(e){let{processes:t,timedOut:r}=(0,b.discoverOpencodeProcessCwdsWithoutPortWithMeta)(),s=new Map;for(let e of t)!(!e.cwd||e.cwd.startsWith("/private/tmp/opencode"))&&(s.has(e.cwd)||s.set(e.cwd,{pid:e.pid,directory:e.cwd,projectName:Y(e.cwd),reason:"process_without_api_port"}));let{ports:i,timedOut:n}=(0,b.discoverOpencodePortsWithMeta)();if(!i.length){let e=Array.from(s.values());return n||r?{payload:{error:"OpenCode discovery timed out",hint:"Host process discovery exceeded timeout. Retry shortly, or increase OPENCODE_DISCOVERY_TIMEOUT_MS.",...e.length>0?{processHints:e}:{}},status:503,sourceMeta:{online:!1,degraded:!0,reason:"OpenCode discovery timed out"}}:e.length>0?{payload:{sessions:[],processHints:e},sourceMeta:{online:!1,reason:"OpenCode server not found"}}:{payload:{error:"OpenCode server not found",hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},status:503,sourceMeta:{online:!1,reason:"OpenCode server not found"}}}try{let t=await Promise.allSettled(i.map(async e=>{let t=(0,S.createOpencodeClient)({baseUrl:`http://localhost:${e}`}),r=await k(e=>t.session.list({signal:e}),_,`session.list(${e})`),s=await k(e=>t.session.status({signal:e}),U,`session.status(${e})`).catch(()=>({data:{}}));return{port:e,client:t,sessions:r.data||[],status:s.data||{}}})),r=[],n={},a={},o={},l=[];for(let e=0;e<t.length;e++){let s=t[e],d=i[e];if("fulfilled"!==s.status){l.push({port:d,reason:s.reason instanceof Error?s.reason.message:String(s.reason)});continue}for(let e of(r.push(...s.value.sessions),Object.assign(n,s.value.status),a[s.value.port]=s.value.client,s.value.sessions))e.id in o||(o[e.id]=s.value.port)}let d=new Set,u=r.filter(e=>!d.has(e.id)&&(d.add(e.id),!0)),c=u.filter(e=>!e.parentID),p=u.filter(e=>!!e.parentID),f=Date.now();for(let e of((0,E.pruneSessionForceUnarchived)(f),(0,E.pruneSessionStickyStatusBlocked)(f),c))e.time?.archived!==void 0&&(0,E.shouldForceSessionUnarchived)(e.id,f)&&(e.time={...e.time,archived:void 0});for(let e of p)e.time?.archived!==void 0&&(0,E.shouldForceSessionUnarchived)(e.id,f)&&(e.time={...e.time,archived:void 0});if(t.length>0&&l.length===t.length)return V(Date.now(),new Set),{payload:{error:"Failed to fetch sessions from OpenCode ports",hint:"All discovered OpenCode API ports timed out or failed. Retry shortly or increase OPENCODE_SESSIONS_LIST_TIMEOUT_MS.",failedPorts:l},status:503,sourceMeta:{online:!1,degraded:!0,reason:"Failed to fetch sessions from OpenCode ports"}};if(l.length>0&&0===c.length&&0===p.length){V(Date.now(),new Set);let e=Array.from(s.values());return{payload:{sessions:[],processHints:e,failedPorts:l,degraded:!0},sourceMeta:{online:!0,degraded:!0}}}let h=c.map(e=>{let t=Y(e.directory),r=function(e){if(!function(e){try{let t=(0,w.execSync)("git rev-parse --is-inside-work-tree",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200});return"true"===t.trim()}catch{return!1}}(e))return null;try{return(0,w.execSync)("git branch --show-current",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200}).trim()||null}catch{return null}}(e.directory);return{...e,projectName:t,branch:r,realTimeStatus:n[e.id]?.type||"idle",waitingForUser:!1,children:[]}}),y=new Map(h.map(e=>[e.id,e])),g=Date.now(),m=[];for(let e of p){let t=e.parentID?h.find(t=>t.id===e.parentID):null;if(!t){let r=h.filter(t=>t.directory===e.directory).sort((e,t)=>q(t)-q(e));t=r.find(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus)||r[0]}if(!t)continue;let r=n[e.id]?.type,s=q(e),i=s>0&&g-s<=18e5;if(!(e.time?.archived&&!r&&!i))if(r&&"idle"!==r)t.children.push(z(e,r));else{if(!i)continue;m.length<50&&m.push({parentId:t.id,child:e,childUpdatedAt:s})}}if(m.length>0)for(let e of(await Promise.allSettled(m.map(async({parentId:e,child:t,childUpdatedAt:r})=>{let s=o[t.id]??o[e],i=s?a[s]:void 0,n=r>0&&g-r<=12e4;if(!i)return{parentId:e,child:t,childStatus:n?"busy":"idle"};try{let s=await j(i,t.id,C),a=s.some(e=>"running"===e),o=!a&&s.some($);return{parentId:e,child:t,childWaitingForUser:o,childStatus:o||a||r>0&&g-r<=3e5||n?"busy":"idle"}}catch{return{parentId:e,child:t,childWaitingForUser:!1,childStatus:n?"busy":"idle"}}})))){if("fulfilled"!==e.status||"idle"===e.value.childStatus)continue;let t=y.get(e.value.parentId);t&&t.children.push(z(e.value.child,e.value.childStatus,e.value.childWaitingForUser))}let v=h.filter(e=>{if("idle"!==e.realTimeStatus)return!1;let t=q(e);return t>0&&g-t<=18e5||!!e.time?.archived}).sort((e,t)=>q(t)-q(e)).slice(0,50);if(v.length>0)for(let e of(await Promise.allSettled(v.map(async e=>{let t=q(e),r=t>0&&g-t<=12e4,s=o[e.id],i=s?a[s]:void 0;if(!i)return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1};try{let t,s=await j(i,e.id,C),n=s.some(e=>"running"===e),a=!n&&s.some($),o=s.length>0&&s.every(e=>"completed"===e),l=!!(t=e.time?.updated)&&g-t<=3e4;return{sessionId:e.id,status:n||a?"busy":o&&!l?"idle":r||l?"busy":"idle",waitingForUser:a}}catch{return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1}}})))){if("fulfilled"!==e.status||"idle"===e.value.status)continue;let t=y.get(e.value.sessionId);t&&(t.realTimeStatus=e.value.status,e.value.waitingForUser&&(t.waitingForUser=!0))}for(let e of h)e.children.length>0&&e.children.sort((e,t)=>{let r="busy"===e.realTimeStatus||"retry"===e.realTimeStatus,s="busy"===t.realTimeStatus||"retry"===t.realTimeStatus;if(r&&!s)return -1;if(!r&&s)return 1;let i=e.time?.updated||e.time?.created||0;return(t.time?.updated||t.time?.created||0)-i});let b=h.filter(e=>"busy"===e.realTimeStatus||!!e.time?.archived||e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus));if(b.length>0){for(let e of(await Promise.allSettled(b.map(async e=>{let t=o[e.id],r=t?a[t]:void 0;if(!r)return{sessionId:e.id,parentWaiting:!1,waiting:!1,running:!1,waitingChildIds:new Set};try{let t=await j(r,e.id,C),s=t.some(e=>"running"===e),i=!s&&t.some($),n=await Promise.allSettled(e.children.filter(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus).map(async t=>{let r=o[t.id]??o[e.id],s=r?a[r]:void 0;if(!s)return{childId:t.id,waiting:!1};try{let e=await j(s,t.id,C),r=e.some(e=>"running"===e);return{childId:t.id,waiting:!r&&e.some($)}}catch{return{childId:t.id,waiting:!1}}})),l=new Set(n.filter(e=>"fulfilled"===e.status).filter(e=>e.value.waiting).map(e=>e.value.childId)),d=l.size>0||e.children.some(e=>e.waitingForUser||"retry"===e.realTimeStatus);return{sessionId:e.id,parentWaiting:i,waiting:i||d,running:s,waitingChildIds:l}}catch{return{sessionId:e.id,parentWaiting:!1,waiting:!1,running:!1,waitingChildIds:new Set}}}))))if("fulfilled"===e.status){let t=h.find(t=>t.id===e.value.sessionId);if(!t)continue;for(let r of t.children)e.value.waitingChildIds.has(r.id)&&(r.waitingForUser=!0);e.value.running&&(t.realTimeStatus="busy"),e.value.parentWaiting&&(t.waitingForUser=!0)}}let I=Date.now(),T=new Set;for(let e of h)for(let t of(T.add(e.id),e.children))T.add(`child:${t.id}`);for(let t of h)G(t,I)||X(t,I,e);V(I,T);let R=new Set;for(let e of u)e.directory&&R.add(e.directory);let A=Array.from(s.values()).filter(e=>!R.has(e.directory)),O={sessions:h,processHints:A};return l.length>0&&(O.failedPorts=l,O.degraded=!0),{payload:O,sourceMeta:{online:!0,...l.length>0?{degraded:!0}:{}}}}catch(e){return console.error("Error fetching sessions:",e),{payload:{error:"Failed to fetch sessions",details:e instanceof Error?e.message:String(e),hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},status:500,sourceMeta:{online:!1,degraded:!0,reason:"Failed to fetch sessions"}}}}async function ef(){let e=await J();return es(await ep(e))}async function eh(e){let t;try{let r=await e.json();t=function(e){if(!Z(e)||!Array.isArray(e.sources)||0===e.sources.length)throw Error("Invalid sources payload");let t=e.sources.map(er);if(t.some(e=>null===e))throw Error("Invalid sources payload");return t}(r)}catch{return Response.json({error:"Invalid sources payload",hint:"POST /api/sessions expects a JSON body with a non-empty sources array."},{status:400})}let r="node"===process.env[O.RUNTIME_ROLE_ENV_VAR]?[D]:t.filter(e=>"local"===e.hostKind||e.enabled);if(0===r.length)return Response.json({sessions:[],processHints:[],hosts:[],hostStatuses:[]});if(1===r.length&&"local"===r[0].hostKind){let e=await J(),t=await ep(e),r=t.sourceMeta??{online:!t.status,...t.status?{degraded:!0}:{}},s=r.online?r:{...r,degraded:!0},i=ei(D,s),n=!s.online&&Z(t.payload)?en({sessions:[],processHints:Array.isArray(t.payload.processHints)?t.payload.processHints:[],degraded:!0},[i]):null;if(n){let e=t.status??503;return Response.json(n,{status:e})}return es({...t,payload:Z(t.payload)?en(function(e,t){if(!Array.isArray(e.sessions))return e;let r=[],s=0;for(let i of e.sessions){let e=el(i,t);if(e){r.push(e);continue}s+=1}let i=!0===e.degraded;return{...e,sessions:r,...i||s>0?{degraded:!0}:{}}}(t.payload,D),[i]):t.payload})}let s=r.some(e=>"local"===e.hostKind)?await J():0,i=new Map((await (0,A.listNodeRecords)()).map(e=>[e.nodeId,e])),n=r.map(e=>{if(!Q(e))return e;let t=i.get(e.hostId);return t?{...e,baseUrl:t.baseUrl,enabled:t.enabled}:e}),a=await Promise.allSettled(n.map(async e=>({source:e,result:"local"===e.hostKind?await ep(s):await ec(e,i.get(e.hostId))}))),o=[],l=[],d=[],u=!1;for(let e of a){if("fulfilled"!==e.status){u=!0;continue}let{source:t,result:r}=e.value,s=r.sourceMeta??{online:!r.status,...r.status?{degraded:!0}:{}},i=function(e){if(!Z(e.payload))return{sessions:[],processHints:[]};let t=Array.isArray(e.payload.sessions)?e.payload.sessions:[],r=Array.isArray(e.payload.processHints)?e.payload.processHints:[],s=Array.isArray(e.payload.failedPorts)?e.payload.failedPorts:void 0,i=!0===e.payload.degraded;return{sessions:t,processHints:r,...s?{failedPorts:s}:{},...i?{degraded:!0}:{}}}(r),n=!1;for(let e of(d.push(...i.processHints),i.sessions)){let r=el(e,t);if(r){l.push(r);continue}n=!0}let a=n?{...s,degraded:!0,reason:s.reason??"node_payload_invalid_session_id"}:s;o.push(ei(t,a)),(!a.online||a.degraded||i.degraded)&&(u=!0)}return Response.json({sessions:l,processHints:d,hosts:o,hostStatuses:o,...u?{degraded:!0}:{}})}e.s(["GET",()=>F,"POST",()=>x,"applyStickyBusyStatus",()=>W,"applyStickyStatusStabilization",()=>X,"dynamic",0,"force-dynamic","shouldSkipSessionStatusStabilization",()=>G],72626);var ey=e.i(72626);let eg=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/sessions/route",pathname:"/api/sessions",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/sessions/route.ts",nextConfigOutput:"standalone",userland:ey}),{workAsyncStorage:em,workUnitAsyncStorage:eS,serverHooks:ew}=eg;function ev(){return(0,s.patchFetch)({workAsyncStorage:em,workUnitAsyncStorage:eS})}async function eb(e,t,s){eg.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let S="/api/sessions/route";S=S.replace(/\/index$/,"")||"/";let w=await eg.prepare(e,t,{srcPage:S,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:v,params:b,nextConfig:I,parsedUrl:E,isDraftMode:T,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:O,revalidateOnlyGenerated:_,resolvedPathname:U,clientReferenceManifest:C,serverActionsManifest:P}=w,M=(0,o.normalizeAppPath)(S),N=!!(R.dynamicRoutes[M]||R.routes[U]),D=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(N&&!T){let e=!!R.routes[U],t=R.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(I.experimental.adapterPath)return await D();throw new g.NoFallbackError}}let F=null;!N||eg.isDev||T||(F="/index"===(F=U)?"/":F);let x=!0===eg.isDev||!N,H=N&&!x;P&&C&&(0,a.setManifestsSingleton)({page:S,clientReferenceManifest:C,serverActionsManifest:P});let k=e.method||"GET",K=(0,n.getTracer)(),L=K.getActiveScopeSpan(),$={params:b,prerenderManifest:R,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:x,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:I.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,i)=>eg.onRequestError(e,t,s,i,A)},sharedContext:{buildId:v}},j=new l.NodeNextRequest(e),q=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(j,(0,d.signalFromNodeResponse)(t));try{let a=async e=>eg.handle(B,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${k} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t)}else e.updateName(`${k} ${S}`)}),o=!!(0,i.getRequestMeta)(e,"minimalMode"),l=async i=>{var n,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&O&&_&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await a(i);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&s.waitUntil&&(s.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!N)return await (0,p.sendResponse)(j,q,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);d&&(t[y.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,s=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await eg.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})},!1,A),t}},u=await eg.handleResponse({req:e,nextConfig:I,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:_,responseGenerator:d,waitUntil:s.waitUntil,isMinimalMode:o});if(!N)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&N||g.delete(y.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(j,q,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};L?await l(L):await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${k} ${S}`,kind:n.SpanKind.SERVER,attributes:{"http.method":k,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await eg.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})},!1,A),N)throw t;return await (0,p.sendResponse)(j,q,new Response(null,{status:500})),null}}e.s(["handler",()=>eb,"patchFetch",()=>ev,"routeModule",()=>eg,"serverHooks",()=>ew,"workAsyncStorage",()=>em,"workUnitAsyncStorage",()=>eS],86100)}];
1
+ module.exports=[86100,e=>{"use strict";let t;var r=e.i(47909),i=e.i(74017),s=e.i(96250),n=e.i(59756),a=e.i(61916),o=e.i(74677),d=e.i(69741),l=e.i(16795),u=e.i(87718),c=e.i(95169),p=e.i(47587),f=e.i(66012),h=e.i(70101),y=e.i(26937),g=e.i(10372),m=e.i(93695);e.i(52474);var v=e.i(220),S=e.i(57181),w=e.i(63127),b=e.i(74579);let I=new Map;function T(e){I.delete(e),I.delete(`child:${e}`)}async function E({stickyBusyDelayMs:e,providers:t}){let r;if(0===t.length)return{payload:{sessions:[],processHints:[]},sourceMeta:{online:!1,degraded:!0,reason:"No local session provider configured"}};let i=await Promise.allSettled(t.map(t=>t.getSessionsResult({stickyBusyDelayMs:e}))),s=[],n=[],a=[],o=null,d=!1,l=!1;for(let e of i){if("fulfilled"!==e.status){l=!0,r||(r=e.reason instanceof Error?e.reason.message:String(e.reason));continue}let t=e.value,i=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{sessions:[],processHints:[]};let t=Array.isArray(e.sessions)?e.sessions:[],r=Array.isArray(e.processHints)?e.processHints:[],i=Array.isArray(e.failedPorts)?e.failedPorts:void 0,s=!0===e.degraded;return{sessions:t,processHints:r,...i?{failedPorts:i}:{},...s?{degraded:!0}:{}}}(t.payload),u=t.sourceMeta??{online:i.sessions.length>0,...t.status?{degraded:!0}:{}};!o&&t.status&&0===i.sessions.length&&0===i.processHints.length&&(o=t),(i.sessions.length>0||i.processHints.length>0||(i.failedPorts?.length??0)>0)&&(s.push(...i.sessions),n.push(...i.processHints),i.failedPorts&&a.push(...i.failedPorts)),(u.online||i.sessions.length>0)&&(d=!0),d||r||!u.reason||(r=u.reason),(u.degraded||i.degraded)&&(l=!0)}if(0===s.length&&0===n.length&&o)return o;let u=d?{online:!0,...l?{degraded:!0}:{}}:{online:!1,...l?{degraded:!0}:{},...r?{reason:r}:{}};return{payload:{sessions:s,processHints:n,...a.length>0?{failedPorts:a}:{},...l?{degraded:!0}:{}},sourceMeta:u}}function R(e,t,r,i){let s=I.get(e)??{lastBusyAt:0,lastSeenAt:r};if("busy"===t)return s.lastBusyAt=r,s.lastSeenAt=r,I.set(e,s),t;if("retry"===t)return s.lastSeenAt=r,I.set(e,s),t;let n=s.lastBusyAt>0&&r-s.lastBusyAt<=i;return s.lastSeenAt=r,I.set(e,s),n?"busy":"idle"}function A(e,t){let r;for(let[r,i]of I){let s=e-i.lastSeenAt,n=t.has(r);(s>864e5||!n&&s>18e5)&&I.delete(r)}let i=Number.isFinite(r=Number(process.env.OPENCODE_STATUS_STICKY_MAX_ENTRIES))&&r>0?Math.floor(r):5e3;if(I.size<=i)return;let s=I.size-i,n=Array.from(I.entries()).sort((e,t)=>e[1].lastSeenAt-t[1].lastSeenAt),a=0;for(let[e]of n){if(a>=s)break;!t.has(e)&&(I.delete(e),a++)}if(!(a>=s))for(let[e]of n){if(a>=s)break;I.has(e)&&(I.delete(e),a++)}}function O(e){return"busy"===e||"retry"===e?e:"idle"}function _(e,t){return!!((0,b.takeSessionStickyStatusBlocked)(e.id,t)||e.time?.archived)&&(function(e){for(let t of(T(e.id),(0,b.clearSessionForceUnarchived)(e.id),e.children))T(`child:${t.id}`),(0,b.clearSessionForceUnarchived)(t.id)}(e),!0)}function P(e,t,r){for(let i of e.children){if(i.time?.archived){T(`child:${i.id}`),(0,b.clearSessionForceUnarchived)(i.id);continue}let e=O(i.realTimeStatus),s=i.waitingForUser&&"idle"===e?"retry":e;i.realTimeStatus=R(`child:${i.id}`,s,t,r),("busy"===i.realTimeStatus||"retry"===i.realTimeStatus||i.waitingForUser)&&(0,b.markSessionForceUnarchived)(i.id,t)}let i=O(e.realTimeStatus),s=e.waitingForUser&&"idle"===i?"retry":i;e.realTimeStatus=R(e.id,s,t,r);let n=e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser);("busy"===e.realTimeStatus||"retry"===e.realTimeStatus||e.waitingForUser||n)&&(0,b.markSessionForceUnarchived)(e.id,t)}var M=e.i(33405),U=e.i(14747),C=e.i(99686),N=e.i(84044);let D=k("OPENCODE_SESSIONS_LIST_TIMEOUT_MS",6e3),F=k("OPENCODE_SESSIONS_STATUS_TIMEOUT_MS",4e3),H=k("OPENCODE_SESSIONS_MESSAGES_TIMEOUT_MS",2500),x=new Set(["awaiting-input","awaiting_input","input-required","input_required","requires-input","requires_input","blocked","paused"]);function k(e,t){let r=Number(process.env[e]);return Number.isFinite(r)&&r>0?Math.floor(r):t}function K(e,t,r){let i,s=Error(`${r} timed out after ${t}ms`),n=new AbortController,a=new Promise((e,r)=>{i=setTimeout(()=>{n.abort(),r(s)},t)});return Promise.race([e(n.signal).catch(e=>{if(n.signal.aborted)throw s;throw e}),a]).finally(()=>{i&&clearTimeout(i)})}function j(e){return e.trim().toLowerCase()}function L(e){return x.has(j(e))}async function $(e,t,r){var i=(await K(r=>(0,N.getOpencodeSessionMessages)(e,t,8,r),r,`session.messages(${t})`)).data||[];let s=[];for(let e of i)for(let t of e.parts||[]){let e=t?.state?.status;if("string"==typeof e){let t=j(e);t&&s.push(t)}}return s}function q(e){return e.time?.updated||e.time?.created||0}function B(e,t,r=!1){return{id:e.id,slug:e.slug,title:e.title,directory:e.directory,debugReason:e.debugReason,parentID:e.parentID,time:e.time,realTimeStatus:t,waitingForUser:r}}function G(e){return U.default.basename(e)}var W=e.i(586),V=e.i(68817),z=e.i(39948),X=e.i(82414),Y=e.i(81951);let J=Number.isFinite(t=Number(process.env.VIBEPULSE_NODE_SESSIONS_TIMEOUT_MS))&&t>0?Math.floor(t):6e3,Z={hostId:"local",hostLabel:"Local",hostKind:"local"},Q=[{id:"opencode",async getSessionsResult({stickyBusyDelayMs:e}){let{processes:t,timedOut:r}=(0,C.discoverOpencodeProcessCwdsWithoutPortWithMeta)(),i=new Map;for(let e of t)!(!e.cwd||e.cwd.startsWith("/private/tmp/opencode"))&&(i.has(e.cwd)||i.set(e.cwd,{pid:e.pid,directory:e.cwd,projectName:G(e.cwd),reason:"process_without_api_port"}));let{ports:s,timedOut:n}=(0,C.discoverOpencodePortsWithMeta)();if(!s.length){let e=Array.from(i.values());return n||r?{payload:{error:"OpenCode discovery timed out",hint:"Host process discovery exceeded timeout. Retry shortly, or increase OPENCODE_DISCOVERY_TIMEOUT_MS.",...e.length>0?{processHints:e}:{}},status:503,sourceMeta:{online:!1,degraded:!0,reason:"OpenCode discovery timed out"}}:e.length>0?{payload:{sessions:[],processHints:e},sourceMeta:{online:!1,reason:"OpenCode server not found"}}:{payload:{error:"OpenCode server not found",hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},status:503,sourceMeta:{online:!1,reason:"OpenCode server not found"}}}try{let t=await Promise.allSettled(s.map(async e=>{let t=(0,N.createVibePulseOpencodeClient)(`http://localhost:${e}`),r=await K(e=>(0,N.listOpencodeSessions)(t,e),D,`session.list(${e})`),i=await K(e=>(0,N.getOpencodeSessionStatus)(t,e),F,`session.status(${e})`).catch(()=>({data:{}}));return{port:e,client:t,sessions:r.data||[],status:i.data||{}}})),r=[],n={},a={},o={},d=[];for(let e=0;e<t.length;e++){let i=t[e],l=s[e];if("fulfilled"!==i.status){d.push({port:l,reason:(0,N.formatOpencodeSdkError)(i.reason)});continue}for(let e of(r.push(...i.value.sessions),Object.assign(n,i.value.status),a[i.value.port]=i.value.client,i.value.sessions))e.id in o||(o[e.id]=i.value.port)}let l=[],u=new Set;for(let e of r)u.has(e.id)||(u.add(e.id),l.push(e));let c=l.filter(e=>!e.parentID),p=l.filter(e=>!!e.parentID),f=Date.now();for(let e of((0,b.pruneSessionForceUnarchived)(f),(0,b.pruneSessionStickyStatusBlocked)(f),c))e.time?.archived!==void 0&&(0,b.shouldForceSessionUnarchived)(e.id,f)&&(e.time={...e.time,archived:void 0});for(let e of p)e.time?.archived!==void 0&&(0,b.shouldForceSessionUnarchived)(e.id,f)&&(e.time={...e.time,archived:void 0});if(t.length>0&&d.length===t.length)return A(Date.now(),new Set),{payload:{error:"Failed to fetch sessions from OpenCode ports",hint:"All discovered OpenCode API ports timed out or failed. Retry shortly or increase OPENCODE_SESSIONS_LIST_TIMEOUT_MS.",failedPorts:d},status:503,sourceMeta:{online:!1,degraded:!0,reason:"Failed to fetch sessions from OpenCode ports"}};if(d.length>0&&0===c.length&&0===p.length)return A(Date.now(),new Set),{payload:{sessions:[],processHints:Array.from(i.values()),failedPorts:d,degraded:!0},sourceMeta:{online:!0,degraded:!0}};let h=c.map(e=>({...e,projectName:G(e.directory),branch:function(e){if(!function(e){try{let t=(0,M.execSync)("git rev-parse --is-inside-work-tree",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200});return"true"===t.trim()}catch{return!1}}(e))return null;try{return(0,M.execSync)("git branch --show-current",{cwd:e,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1200}).trim()||null}catch{return null}}(e.directory),realTimeStatus:n[e.id]?.type||"idle",waitingForUser:!1,children:[]})),y=new Map(h.map(e=>[e.id,e])),g=Date.now(),m=[];for(let e of p){let t=e.parentID?y.get(e.parentID):void 0;if(!t){let r=h.filter(t=>t.directory===e.directory).sort((e,t)=>q(t)-q(e));t=r.find(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus)||r[0]}if(!t)continue;let r=n[e.id]?.type,i=q(e),s=i>0&&g-i<=18e5;if(!(e.time?.archived&&!r&&!s))if(r&&"idle"!==r)t.children.push(B(e,r));else{if(!s)continue;m.length<50&&m.push({parentId:t.id,child:e,childUpdatedAt:i})}}if(m.length>0)for(let e of(await Promise.allSettled(m.map(async({parentId:e,child:t,childUpdatedAt:r})=>{let i=o[t.id]??o[e],s=i?a[i]:void 0,n=r>0&&g-r<=12e4;if(!s)return{parentId:e,child:t,childStatus:n?"busy":"idle"};try{let i=await $(s,t.id,H),a=i.some(e=>"running"===e),o=!a&&i.some(L);return{parentId:e,child:t,childWaitingForUser:o,childStatus:o||a||r>0&&g-r<=3e5||n?"busy":"idle"}}catch{return{parentId:e,child:t,childWaitingForUser:!1,childStatus:n?"busy":"idle"}}})))){if("fulfilled"!==e.status||"idle"===e.value.childStatus)continue;let t=y.get(e.value.parentId);t&&t.children.push(B(e.value.child,e.value.childStatus,e.value.childWaitingForUser))}let v=h.filter(e=>{if("idle"!==e.realTimeStatus)return!1;let t=q(e);return t>0&&g-t<=18e5||!!e.time?.archived}).sort((e,t)=>q(t)-q(e)).slice(0,50);if(v.length>0)for(let e of(await Promise.allSettled(v.map(async e=>{let t=q(e),r=t>0&&g-t<=12e4,i=o[e.id],s=i?a[i]:void 0;if(!s)return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1};try{let t,i=await $(s,e.id,H),n=i.some(e=>"running"===e),a=!n&&i.some(L),o=i.length>0&&i.every(e=>"completed"===e),d=!!(t=e.time?.updated)&&g-t<=3e4;return{sessionId:e.id,status:n||a?"busy":o&&!d?"idle":r||d?"busy":"idle",waitingForUser:a}}catch{return{sessionId:e.id,status:r?"busy":"idle",waitingForUser:!1}}})))){if("fulfilled"!==e.status||"idle"===e.value.status)continue;let t=y.get(e.value.sessionId);t&&(t.realTimeStatus=e.value.status,e.value.waitingForUser&&(t.waitingForUser=!0))}for(let e of h)e.children.length>0&&e.children.sort((e,t)=>{let r="busy"===e.realTimeStatus||"retry"===e.realTimeStatus,i="busy"===t.realTimeStatus||"retry"===t.realTimeStatus;if(r&&!i)return -1;if(!r&&i)return 1;let s=e.time?.updated||e.time?.created||0;return(t.time?.updated||t.time?.created||0)-s});let S=h.filter(e=>"busy"===e.realTimeStatus||!!e.time?.archived||e.children.some(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus));if(S.length>0){for(let e of(await Promise.allSettled(S.map(async e=>{let t=o[e.id],r=t?a[t]:void 0;if(!r)return{sessionId:e.id,parentWaiting:!1,waiting:!1,running:!1,waitingChildIds:new Set};try{let t=await $(r,e.id,H),i=t.some(e=>"running"===e),s=!i&&t.some(L),n=await Promise.allSettled(e.children.filter(e=>"busy"===e.realTimeStatus||"retry"===e.realTimeStatus).map(async t=>{let r=o[t.id]??o[e.id],i=r?a[r]:void 0;if(!i)return{childId:t.id,waiting:!1};try{let e=await $(i,t.id,H),r=e.some(e=>"running"===e);return{childId:t.id,waiting:!r&&e.some(L)}}catch{return{childId:t.id,waiting:!1}}})),d=new Set(n.filter(e=>"fulfilled"===e.status).filter(e=>e.value.waiting).map(e=>e.value.childId)),l=d.size>0||e.children.some(e=>e.waitingForUser||"retry"===e.realTimeStatus);return{sessionId:e.id,parentWaiting:s,waiting:s||l,running:i,waitingChildIds:d}}catch{return{sessionId:e.id,parentWaiting:!1,waiting:!1,running:!1,waitingChildIds:new Set}}}))))if("fulfilled"===e.status){let t=h.find(t=>t.id===e.value.sessionId);if(!t)continue;for(let r of t.children)e.value.waitingChildIds.has(r.id)&&(r.waitingForUser=!0);e.value.running&&(t.realTimeStatus="busy"),e.value.parentWaiting&&(t.waitingForUser=!0)}}let w=Date.now(),I=new Set;for(let e of h)for(let t of(I.add(e.id),e.children))I.add(`child:${t.id}`);for(let t of h)_(t,w)||P(t,w,e);A(w,I);let T=new Set;for(let e of l)e.directory&&T.add(e.directory);let E=Array.from(i.values()).filter(e=>!T.has(e.directory)),R={sessions:h,processHints:E};return d.length>0&&(R.failedPorts=d,R.degraded=!0),{payload:R,sourceMeta:{online:!0,...d.length>0?{degraded:!0}:{}}}}catch(e){return console.error("Error fetching sessions:",e),{payload:{error:"Failed to fetch sessions",details:e instanceof Error?e.message:String(e),hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},status:500,sourceMeta:{online:!1,degraded:!0,reason:"Failed to fetch sessions"}}}}},w.claudeCodeLocalSessionProvider],ee="force-dynamic";async function et(){return eA()}async function er(e){return eO(e)}async function ei(){let e=1e3;try{let t=await (0,S.readConfig)(),r=(t.vibepulse&&"object"==typeof t.vibepulse&&!Array.isArray(t.vibepulse)?t.vibepulse:{}).stickyBusyDelayMs;"number"==typeof r&&Number.isFinite(r)&&r>=0&&(e=r)}catch{}return e}function es(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function en(e){return"remote"===e.hostKind}function ea(e,t,r){return en(r)&&"claude-code"===t?{openProject:e?.openProject??!0,openEditor:!1,archive:!1,delete:!1}:e}function eo(e){return"idle"===e||"busy"===e||"retry"===e}function ed(e){if(!es(e))return!1;let t=e.created,r=e.updated,i=e.archived;return"number"==typeof t&&"number"==typeof r&&(null==i||"number"==typeof i)}function el(e){return e&&null===e.archived?{created:e.created,updated:e.updated}:e}function eu(e){if(!es(e))return null;let t="string"==typeof e.hostId?e.hostId.trim():e.hostId,r="string"==typeof e.hostLabel?e.hostLabel.trim():e.hostLabel,i=e.hostKind;if(t===Z.hostId&&r===Z.hostLabel&&i===Z.hostKind)return Z;let s=e.baseUrl,n=e.enabled;if("string"!=typeof t||"string"!=typeof r||"remote"!==i||"string"!=typeof s||"boolean"!=typeof n)return null;let a=function(e){let t=e.trim();if(!t)return null;try{let e=new URL(t);if("http:"!==e.protocol&&"https:"!==e.protocol||e.username||e.password)return null;return e.hash="",e.toString().replace(/\/+$/,"")}catch{return null}}(s);return a?{hostId:t,hostLabel:r,hostKind:i,baseUrl:a,enabled:n}:null}function ec(e){return e.status?Response.json(e.payload,{status:e.status}):Response.json(e.payload)}function ep(e,t){return{hostId:e.hostId,hostLabel:e.hostLabel,hostKind:e.hostKind,online:t.online,...t.degraded?{degraded:!0}:{},...t.reason?{reason:t.reason}:{},...en(e)?{baseUrl:e.baseUrl}:{}}}function ef(e,t){return{...e,hosts:t,hostStatuses:t}}function eh(e){return(0,z.extractProviderRawId)(function(e){if(!e.includes(":"))return e;try{return(0,W.parseSourceKey)(e).sessionId}catch{return e}}(e))}function ey(e,t,r,i){try{return(0,z.composeProviderSourceKey)(e,t,{readOnly:r,...i?{provider:i}:{}}).sourceKey}catch{return}}function eg(e,t){let r=e.rawSessionId??eh(e.id),i=e.parentID?eh(e.parentID):e.parentID,s=(0,z.detectProviderFromRawId)(e.id),n=ea(e.capabilities,s,t),a=ey(t.hostId,r,e.readOnly,s);if(!a)return null;let o=i?ey(t.hostId,i,void 0,s)??void 0:void 0,d=e.provider??("claude-code"===s?s:void 0),l="claude-code"===d?e.providerRawId??r:e.providerRawId,u=[];for(let r of e.children){let e=function(e,t,r){let i=e.rawSessionId??eh(e.id),s=e.parentID?eh(e.parentID):e.parentID,n=(0,z.detectProviderFromRawId)(e.id),a=r?(0,z.detectProviderFromRawId)(r):void 0,o="claude-code"===n?n:a??n,d=ea(e.capabilities,o,t),l=ey(t.hostId,i,e.readOnly,o);if(!l)return null;let u=r?eh(r):void 0,c="string"==typeof s&&"string"==typeof r&&u===s,p=s?c?r:ey(t.hostId,s,void 0,o)??void 0:void 0,f=e.provider??("claude-code"===o?o:void 0),h="claude-code"===f?e.providerRawId??i:e.providerRawId;return{...e,id:l,parentID:p,hostId:t.hostId,hostLabel:t.hostLabel,hostKind:t.hostKind,...en(t)?{hostBaseUrl:t.baseUrl}:{},time:el(e.time),rawSessionId:i,sourceSessionKey:l,readOnly:e.readOnly??!1,capabilities:d,...f?{provider:f}:{},...h?{providerRawId:h}:{}}}(r,t,a);e&&u.push(e)}return{...e,id:a,parentID:o,hostId:t.hostId,hostLabel:t.hostLabel,hostKind:t.hostKind,...en(t)?{hostBaseUrl:t.baseUrl}:{},time:el(e.time),rawSessionId:r,sourceSessionKey:a,readOnly:e.readOnly??!1,capabilities:n,...d?{provider:d}:{},...l?{providerRawId:l}:{},children:u}}function em(e){return"claude-code"===e.provider}function ev(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function eS(e){return ev(e.time?.created)}function ew(e){return ev(e.time?.updated)}function eb(e,t){return e.hostId===t.hostId&&e.hostKind===t.hostKind}function eI(e){let t=new Map(e.map(e=>[e.id,e])),r=new Set,i=(e,i)=>{let s=i,n=new Set([e.id]);for(;s&&!n.has(s.id);){if(n.add(s.id),!r.has(s.id))return s;if("string"!=typeof s.parentID)break;s=t.get(s.parentID)}};for(let s of[...e].sort((e,t)=>{let r=(eS(t)??0)-(eS(e)??0);return 0!==r?r:(ew(t)??0)-(ew(e)??0)})){let n;if(!em(s)||r.has(s.id))continue;if("string"==typeof s.parentID){let e=t.get(s.parentID);if(e){if(e===s||!em(e)||!eb(e,s))continue;let t=i(s,e);if(!t){r.has(e.id)&&(s.parentID=void 0);continue}n=t,s.parentID!==t.id&&(s.parentID=t.id)}}if(!n&&(n=function(e,t,r){if(e.topology?.childSessions==="authoritative")return;let i=eS(e);if(void 0===i)return;let s=ew(e)??i,n=[];for(let a of t){if(a.id===e.id||r.has(a.id)||!em(a)||!eb(a,e)||"string"==typeof a.parentID||a.directory!==e.directory||a.projectName!==e.projectName)continue;let t=eS(a);if(void 0===t||t>i)continue;let o=i-t;if(o>6e4||!("busy"===a.realTimeStatus||"retry"===a.realTimeStatus||a.waitingForUser))continue;let d=Math.abs(s-(ew(a)??t));n.push({parent:a,createdGapMs:o,updatedGapMs:d})}if(0===n.length)return;n.sort((e,t)=>e.createdGapMs!==t.createdGapMs?e.createdGapMs-t.createdGapMs:e.updatedGapMs-t.updatedGapMs);let a=n[0],o=n[1];if(!(o&&5e3>=Math.abs(o.createdGapMs-a.createdGapMs)))return a.parent}(s,e,r))&&(s.parentID=n.id),!n||s.children.length>0)continue;let a=function(e){let t={...e};return delete t.children,t}(s),o=n.children.findIndex(e=>e.id===a.id);o>=0?n.children[o]={...n.children[o],...a}:n.children.push(a),n.children.sort((e,t)=>{let r="busy"===e.realTimeStatus||"retry"===e.realTimeStatus,i="busy"===t.realTimeStatus||"retry"===t.realTimeStatus;if(r&&!i)return -1;if(!r&&i)return 1;let s=e.time?.updated||e.time?.created||0;return(t.time?.updated||t.time?.created||0)-s}),r.add(s.id)}return e.filter(e=>!r.has(e.id))}async function eT(e){try{return await e.json()}catch{return null}}async function eE(e,t){let r=`node.sessions(${e.hostId})`,i=new AbortController,s=!1,n=setTimeout(()=>{s=!0,i.abort()},J);try{return await fetch(`${t.baseUrl}/api/node/sessions`,{method:"GET",headers:(0,V.createNodeRequestHeaders)(t.token),signal:i.signal})}catch(e){if(s)throw Error(`${r} timed out after ${J}ms`);throw e}finally{clearTimeout(n)}}async function eR(e,t){if(!t)return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!1,degraded:!0,reason:"node_not_configured"}};if(!t.enabled)return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!1,degraded:!0,reason:"node_disabled"}};try{let r=await eE(e,t),i=await eT(r);if(!r.ok){let e=es(i)&&"string"==typeof i.reason?i.reason:`node_request_failed_${r.status}`;return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!0,degraded:!0,reason:e}}}let s=function(e){if(!es(e)||!0!==e.ok||"node"!==e.role||e.protocolVersion!==V.NODE_PROTOCOL_VERSION)return null;let t=e.source;if(!es(t)||"local"!==t.hostId||"Local"!==t.hostLabel||"local"!==t.hostKind)return null;let r=e.upstream;if(!es(r)||"opencode"!==r.kind||"boolean"!=typeof r.reachable)return null;let i=e.sessions,s=e.processHints;return!Array.isArray(i)||i.some(e=>!function(e){if(!es(e)||"string"!=typeof e.id||"string"!=typeof e.directory||"string"!=typeof e.projectName)return!1;let t=e.branch;if(null!=t&&"string"!=typeof t||!eo(e.realTimeStatus)||"boolean"!=typeof e.waitingForUser)return!1;let r=e.children;if(!Array.isArray(r)||r.some(e=>!function(e){if(!es(e)||"string"!=typeof e.id||!eo(e.realTimeStatus)||"boolean"!=typeof e.waitingForUser)return!1;let t=e.parentID,r=e.directory,i=e.time;return(void 0===t||"string"==typeof t)&&(void 0===r||"string"==typeof r)&&(void 0===i||!!ed(i))}(e)))return!1;let i=e.time;return void 0===i||!!ed(i)}(e))||!Array.isArray(s)||s.some(e=>!(es(e)&&"number"==typeof e.pid&&"string"==typeof e.directory&&"string"==typeof e.projectName&&"process_without_api_port"===e.reason))?null:{sessions:i,processHints:s,degraded:!0===e.degraded}}(i);if(!s)return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!0,degraded:!0,reason:"node_payload_invalid"}};return{payload:{sessions:s.sessions,processHints:s.processHints,...s.degraded?{degraded:!0}:{}},sourceMeta:{online:!0,...s.degraded?{degraded:!0}:{}}}}catch(e){return{payload:{sessions:[],processHints:[],degraded:!0},sourceMeta:{online:!1,degraded:!0,reason:e instanceof Error?e.message:String(e)}}}}async function eA(){let e=await ei();return ec(await E({stickyBusyDelayMs:e,providers:[...Q]}))}async function eO(e){let t;try{let r=await e.json();t=function(e){if(!es(e)||!Array.isArray(e.sources)||0===e.sources.length)throw Error("Invalid sources payload");let t=e.sources.map(eu);if(t.some(e=>null===e))throw Error("Invalid sources payload");return t}(r)}catch{return Response.json({error:"Invalid sources payload",hint:"POST /api/sessions expects a JSON body with a non-empty sources array."},{status:400})}let r="node"===process.env[Y.RUNTIME_ROLE_ENV_VAR]?[Z]:t.filter(e=>"local"===e.hostKind||e.enabled);if(0===r.length)return Response.json({sessions:[],processHints:[],hosts:[],hostStatuses:[]});if(1===r.length&&"local"===r[0].hostKind){let e=await ei(),t=await E({stickyBusyDelayMs:e,providers:[...Q]}),r=t.sourceMeta??{online:!t.status,...t.status?{degraded:!0}:{}},i=r.online?r:{...r,degraded:!0},s=ep(Z,i),n=!i.online&&es(t.payload)?ef({sessions:[],processHints:Array.isArray(t.payload.processHints)?t.payload.processHints:[],degraded:!0},[s]):null;if(n){let e=t.status??503;return Response.json(n,{status:e})}return ec({...t,payload:es(t.payload)?ef(function(e,t){if(!Array.isArray(e.sessions))return e;let r=[],i=0;for(let s of e.sessions){let e=eg(s,t);if(e){r.push(e);continue}i+=1}let s=!0===e.degraded;return{...e,sessions:eI(r),...s||i>0?{degraded:!0}:{}}}(t.payload,Z),[s]):t.payload})}let i=r.some(e=>"local"===e.hostKind)?await ei():0,s=new Map((await (0,X.listNodeRecords)()).map(e=>[e.nodeId,e])),n=r.map(e=>{if(!en(e))return e;let t=s.get(e.hostId);return t?{...e,baseUrl:t.baseUrl,enabled:t.enabled}:e}),a=await Promise.allSettled(n.map(async e=>({source:e,result:"local"===e.hostKind?await E({stickyBusyDelayMs:i,providers:[...Q]}):await eR(e,s.get(e.hostId))}))),o=[],d=[],l=[],u=!1;for(let e of a){if("fulfilled"!==e.status){u=!0;continue}let{source:t,result:r}=e.value,i=r.sourceMeta??{online:!r.status,...r.status?{degraded:!0}:{}},s=function(e){if(!es(e.payload))return{sessions:[],processHints:[]};let t=Array.isArray(e.payload.sessions)?e.payload.sessions:[],r=Array.isArray(e.payload.processHints)?e.payload.processHints:[],i=Array.isArray(e.payload.failedPorts)?e.payload.failedPorts:void 0,s=!0===e.payload.degraded;return{sessions:t,processHints:r,...i?{failedPorts:i}:{},...s?{degraded:!0}:{}}}(r),n=!1;for(let e of(l.push(...s.processHints),s.sessions)){let r=eg(e,t);if(r){d.push(r);continue}n=!0}let a=n?{...i,degraded:!0,reason:i.reason??"node_payload_invalid_session_id"}:i;o.push(ep(t,a)),(!a.online||a.degraded||s.degraded)&&(u=!0)}return Response.json({sessions:eI(d),processHints:l,hosts:o,hostStatuses:o,...u?{degraded:!0}:{}})}e.s(["GET",()=>et,"POST",()=>er,"dynamic",0,ee],27809),e.i(27809),e.s(["GET",()=>et,"POST",()=>er,"applyStickyBusyStatus",()=>R,"applyStickyStatusStabilization",()=>P,"dynamic",0,ee,"shouldSkipSessionStatusStabilization",()=>_],72626);var e_=e.i(72626);let eP=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/sessions/route",pathname:"/api/sessions",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/sessions/route.ts",nextConfigOutput:"standalone",userland:e_}),{workAsyncStorage:eM,workUnitAsyncStorage:eU,serverHooks:eC}=eP;function eN(){return(0,s.patchFetch)({workAsyncStorage:eM,workUnitAsyncStorage:eU})}async function eD(e,t,r){eP.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/sessions/route";s=s.replace(/\/index$/,"")||"/";let S=await eP.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:b,nextConfig:I,parsedUrl:T,isDraftMode:E,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:O,revalidateOnlyGenerated:_,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:U}=S,C=(0,d.normalizeAppPath)(s),N=!!(R.dynamicRoutes[C]||R.routes[P]),D=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,T,!1):t.end("This page could not be found"),null);if(N&&!E){let e=!!R.routes[P],t=R.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(I.experimental.adapterPath)return await D();throw new m.NoFallbackError}}let F=null;!N||eP.isDev||E||(F="/index"===(F=P)?"/":F);let H=!0===eP.isDev||!N,x=N&&!H;U&&M&&(0,o.setManifestsSingleton)({page:s,clientReferenceManifest:M,serverActionsManifest:U});let k=e.method||"GET",K=(0,a.getTracer)(),j=K.getActiveScopeSpan(),L={params:b,prerenderManifest:R,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:I.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,s)=>eP.onRequestError(e,t,i,s,A)},sharedContext:{buildId:w}},$=new l.NodeNextRequest(e),q=new l.NodeNextResponse(t),B=u.NextRequestAdapter.fromNodeNextRequest($,(0,u.signalFromNodeResponse)(t));try{let o=async e=>eP.handle(B,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${k} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${k} ${s}`)}),d=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var a,l;let u=async({previousCacheEntry:i})=>{try{if(!d&&O&&_&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let a=L.renderOpts.pendingWaitUntil;a&&r.waitUntil&&(r.waitUntil(a),a=void 0);let l=L.renderOpts.collectedTags;if(!N)return await (0,f.sendResponse)($,q,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,i=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await eP.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:x,isOnDemandRevalidate:O})},!1,A),t}},c=await eP.handleResponse({req:e,nextConfig:I,cacheKey:F,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:_,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:d});if(!N)return null;if((null==c||null==(a=c.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});d||t.setHeader("x-nextjs-cache",O?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return d&&N||m.delete(g.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,y.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)($,q,new Response(c.value.body,{headers:m,status:c.value.status||200})),null};j?await l(j):await K.withPropagatedContext(e.headers,()=>K.trace(c.BaseServerSpan.handleRequest,{spanName:`${k} ${s}`,kind:a.SpanKind.SERVER,attributes:{"http.method":k,"http.target":e.url}},l))}catch(t){if(t instanceof m.NoFallbackError||await eP.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:x,isOnDemandRevalidate:O})},!1,A),N)throw t;return await (0,f.sendResponse)($,q,new Response(null,{status:500})),null}}e.s(["handler",()=>eD,"patchFetch",()=>eN,"routeModule",()=>eP,"serverHooks",()=>eC,"workAsyncStorage",()=>eM,"workUnitAsyncStorage",()=>eU],86100)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_b054aff3.js.map
@@ -1,5 +1,5 @@
1
- module.exports=[46418,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),o=e.i(59756),a=e.i(61916),l=e.i(74677),s=e.i(69741),i=e.i(16795),d=e.i(87718),c=e.i(95169),u=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),m=e.i(10372),v=e.i(93695);e.i(52474);var y=e.i(220);e.i(39354);var E=e.i(34959),R=e.i(99686),g=e.i(68817),w=e.i(82414),b=e.i(81951);function C(e){return"object"==typeof e&&null!==e}function O(e){return e instanceof Error&&"AbortError"===e.name||!!C(e)&&("AbortError"===e.name||20===e.code)}function S(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}function T(e){if(!C(e)||"node"!==e.role||e.protocolVersion!==g.NODE_PROTOCOL_VERSION)return null;let t=e.source;return C(t)&&"local"===t.hostId&&"Local"===t.hostLabel&&"local"===t.hostKind&&"event"in e?{event:e.event}:null}async function x(e,t,r){let n=r??new AbortController,o=(0,E.createOpencodeClient)({baseUrl:`http://localhost:${e}`}),a=null,l=new Promise((r,o)=>{a=setTimeout(()=>{n.abort(),o(Error(`OpenCode event stream preflight timed out for port ${e} after ${t}ms`))},t)});try{let t=await Promise.race([o.global.event({signal:n.signal}),l]);return{key:`local:${e}`,label:`OpenCode port ${e}`,stream:t.stream,controller:n}}finally{a&&clearTimeout(a)}}async function P(e){try{let t=await e.json();if(C(t)&&"string"==typeof t.reason&&t.reason.trim())return t.reason}catch{}return`node_request_failed_${e.status}`}function A(e){return e.replace(/\r\n/g,"\n").replace(/\r/g,"\n")}function N(e){let t=A(e).split("\n").filter(e=>e.startsWith("data:")).map(e=>e.slice(5).trimStart());return t.length>0?t.join("\n"):null}async function*I(e,t,r){let n=e.getReader(),o=new TextDecoder,a="";try{for(;;){let{done:e,value:l}=await n.read();if(e)break;let s=(a+=A(o.decode(l,{stream:!0}))).indexOf("\n\n");for(;-1!==s;){let e=a.slice(0,s);a=a.slice(s+2);let n=N(e);if(n)try{let e=JSON.parse(n),o=T(e);o?yield{source:t,event:o.event}:console.warn("Ignoring malformed remote node SSE event from",r,e)}catch(e){console.warn("Failed to parse remote node SSE event from",r,e)}s=a.indexOf("\n\n")}}a+=A(o.decode());let e=N(a);if(e)try{let r=JSON.parse(e),n=T(r);n&&(yield{source:t,event:n.event})}catch(e){console.warn("Failed to parse trailing remote node SSE event from",r,e)}}finally{try{await n.cancel()}catch{}n.releaseLock()}}async function _(e,t,r){let n=r??new AbortController,o=`${e.baseUrl}/api/node/events`,a=`node ${e.nodeId}`,l=null,s=new Promise((r,o)=>{l=setTimeout(()=>{n.abort(),o(Error(`Remote node event stream preflight timed out for ${e.nodeId} after ${t}ms`))},t)});try{let t=await Promise.race([fetch(o,{method:"GET",headers:(0,g.createNodeRequestHeaders)(e.token),signal:n.signal}),s]);if(!t.ok)throw Error(`Remote node event stream request failed for ${e.nodeId}: ${await P(t)}`);if(!t.body)throw Error(`Remote node event stream missing response body for ${e.nodeId}`);return{key:`remote:${e.nodeId}`,label:a,stream:I(t.body,{hostId:e.nodeId,hostLabel:e.nodeLabel,hostKind:"remote",hostBaseUrl:e.baseUrl},a),controller:n}}finally{l&&clearTimeout(l)}}function k(e){return e?Response.json({error:"OpenCode discovery timed out",hint:"Host process discovery exceeded timeout. Retry shortly, or increase OPENCODE_DISCOVERY_TIMEOUT_MS."},{status:503}):Response.json({error:"OpenCode server not found",hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},{status:503})}async function $(e){let t,r=new TextEncoder,{ports:n,timedOut:o}=(0,R.discoverOpencodePortsWithMeta)(),a="node"===process.env[b.RUNTIME_ROLE_ENV_VAR]?[]:await (0,w.listNodeRecords)(),l=Number.isFinite(t=Number(process.env.OPENCODE_EVENTS_PREFLIGHT_TIMEOUT_MS))&&t>0?t:2500,s=[...n.map(e=>({key:`local:${e}`,label:`OpenCode port ${e}`,connect:t=>x(e,l,t)})),...a.filter(e=>e.enabled).map(e=>({key:`remote:${e.nodeId}`,label:`node ${e.nodeId}`,connect:t=>_(e,l,t)}))];if(0===s.length)return k(o);try{let t=new Map,l=s.map(e=>{let r=new AbortController;return t.set(e.key,r),e.connect(r)}),i=await Promise.any(l).catch(async()=>{for(let e of(await Promise.allSettled(l)))"rejected"===e.status&&console.warn("Failed to connect to event source during preflight:",S(e.reason));return null});if(!i){if(0===n.length&&0===a.filter(e=>e.enabled).length)return k(o);return Response.json({error:"Failed to connect to OpenCode event streams",hint:"Detected local and/or remote node event sources, but every streaming handshake failed. Ensure the hub can reach each source and retry."},{status:503})}for(let[e,r]of t.entries())e!==i.key&&r.abort();let d=null,c=new ReadableStream({async start(t){let n=!1,o=new Set([i.controller]),a=new Set,l=e=>{try{return t.enqueue(r.encode(`data: ${JSON.stringify(e)}
1
+ module.exports=[46418,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),o=e.i(59756),a=e.i(61916),s=e.i(74677),l=e.i(69741),i=e.i(16795),d=e.i(87718),c=e.i(95169),u=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),m=e.i(10372),v=e.i(93695);e.i(52474);var y=e.i(220),E=e.i(99686),R=e.i(68817),g=e.i(82414),w=e.i(81951),b=e.i(84044);function C(e){return"object"==typeof e&&null!==e}function O(e){return e instanceof Error&&"AbortError"===e.name||!!C(e)&&("AbortError"===e.name||20===e.code)}function S(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}function P(e){if(!C(e)||"node"!==e.role||e.protocolVersion!==R.NODE_PROTOCOL_VERSION)return null;let t=e.source;return C(t)&&"local"===t.hostId&&"Local"===t.hostLabel&&"local"===t.hostKind&&"event"in e?{event:e.event}:null}async function T(e,t,r){let n=r??new AbortController,o=(0,b.createVibePulseOpencodeClient)(`http://localhost:${e}`),a=null,s=new Promise((r,o)=>{a=setTimeout(()=>{n.abort(),o(Error(`OpenCode event stream preflight timed out for port ${e} after ${t}ms`))},t)});try{let t=await Promise.race([(0,b.streamOpencodeGlobalEvents)(o,n.signal),s]);return{key:`local:${e}`,label:`OpenCode port ${e}`,stream:t.stream,controller:n}}finally{a&&clearTimeout(a)}}async function x(e){try{let t=await e.json();if(C(t)&&"string"==typeof t.reason&&t.reason.trim())return t.reason}catch{}return`node_request_failed_${e.status}`}function A(e){return e.replace(/\r\n/g,"\n").replace(/\r/g,"\n")}function N(e){let t=A(e).split("\n").filter(e=>e.startsWith("data:")).map(e=>e.slice(5).trimStart());return t.length>0?t.join("\n"):null}async function*I(e,t,r){let n=e.getReader(),o=new TextDecoder,a="";try{for(;;){let{done:e,value:s}=await n.read();if(e)break;let l=(a+=A(o.decode(s,{stream:!0}))).indexOf("\n\n");for(;-1!==l;){let e=a.slice(0,l);a=a.slice(l+2);let n=N(e);if(n)try{let e=JSON.parse(n),o=P(e);o?yield{source:t,event:o.event}:console.warn("Ignoring malformed remote node SSE event from",r,e)}catch(e){console.warn("Failed to parse remote node SSE event from",r,e)}l=a.indexOf("\n\n")}}a+=A(o.decode());let e=N(a);if(e)try{let r=JSON.parse(e),n=P(r);n&&(yield{source:t,event:n.event})}catch(e){console.warn("Failed to parse trailing remote node SSE event from",r,e)}}finally{try{await n.cancel()}catch{}n.releaseLock()}}async function _(e,t,r){let n=r??new AbortController,o=`${e.baseUrl}/api/node/events`,a=`node ${e.nodeId}`,s=null,l=new Promise((r,o)=>{s=setTimeout(()=>{n.abort(),o(Error(`Remote node event stream preflight timed out for ${e.nodeId} after ${t}ms`))},t)});try{let t=await Promise.race([fetch(o,{method:"GET",headers:(0,R.createNodeRequestHeaders)(e.token),signal:n.signal}),l]);if(!t.ok)throw Error(`Remote node event stream request failed for ${e.nodeId}: ${await x(t)}`);if(!t.body)throw Error(`Remote node event stream missing response body for ${e.nodeId}`);return{key:`remote:${e.nodeId}`,label:a,stream:I(t.body,{hostId:e.nodeId,hostLabel:e.nodeLabel,hostKind:"remote",hostBaseUrl:e.baseUrl},a),controller:n}}finally{s&&clearTimeout(s)}}function k(e){return e?Response.json({error:"OpenCode discovery timed out",hint:"Host process discovery exceeded timeout. Retry shortly, or increase OPENCODE_DISCOVERY_TIMEOUT_MS."},{status:503}):Response.json({error:"OpenCode server not found",hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},{status:503})}async function $(e){let t,r=new TextEncoder,{ports:n,timedOut:o}=(0,E.discoverOpencodePortsWithMeta)(),a="node"===process.env[w.RUNTIME_ROLE_ENV_VAR]?[]:await (0,g.listNodeRecords)(),s=Number.isFinite(t=Number(process.env.OPENCODE_EVENTS_PREFLIGHT_TIMEOUT_MS))&&t>0?t:2500,l=[...n.map(e=>({key:`local:${e}`,label:`OpenCode port ${e}`,connect:t=>T(e,s,t)})),...a.filter(e=>e.enabled).map(e=>({key:`remote:${e.nodeId}`,label:`node ${e.nodeId}`,connect:t=>_(e,s,t)}))];if(0===l.length)return k(o);try{let t=new Map,s=l.map(e=>{let r=new AbortController;return t.set(e.key,r),e.connect(r)}),i=await Promise.any(s).catch(async()=>{for(let e of(await Promise.allSettled(s)))"rejected"===e.status&&console.warn("Failed to connect to event source during preflight:",S(e.reason));return null});if(!i){if(0===n.length&&0===a.filter(e=>e.enabled).length)return k(o);return Response.json({error:"Failed to connect to OpenCode event streams",hint:"Detected local and/or remote node event sources, but every streaming handshake failed. Ensure the hub can reach each source and retry."},{status:503})}for(let[e,r]of t.entries())e!==i.key&&r.abort();let d=null,c=new ReadableStream({async start(t){let n=!1,o=new Set([i.controller]),a=new Set,s=e=>{try{return t.enqueue(r.encode(`data: ${JSON.stringify(e)}
2
2
 
3
- `)),!0}catch{return!1}},c=()=>{try{t.close()}catch{}},u=()=>{d?d():(n=!0,c())};d=()=>{for(let e of(n=!0,o))e.abort();Promise.allSettled(Array.from(a).map(e=>e.return?.())),e.signal.removeEventListener("abort",u),c()},e.signal.addEventListener("abort",u);let p=async t=>{let r=t.stream[Symbol.asyncIterator]();a.add(r);try{for(;!n;){let e=await r.next();if(e.done||n||!l(e.value))break}}catch(r){n||e.signal.aborted||O(r)||console.warn("Event stream failed for source:",t.label,S(r))}finally{a.delete(r),o.delete(t.controller)}};try{let t=p(i),r=s.filter(e=>e.key!==i.key).map(async t=>{if(!n)try{let e=await t.connect();if(o.add(e.controller),n){e.controller.abort(),o.delete(e.controller);return}await p(e)}catch(r){n||e.signal.aborted||O(r)||console.warn("Failed to connect to secondary event source:",t.label,S(r))}});await Promise.allSettled([t,...r])}catch(e){console.error("Error in event stream:",e)}finally{n=!0,d=null,e.signal.removeEventListener("abort",u),c()}},cancel(){d&&d()}});return new Response(c,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}catch(e){return console.error("Error creating event stream:",e),Response.json({error:"Failed to create event stream",details:e instanceof Error?e.message:String(e),hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},{status:500})}}e.s(["GET",()=>$,"dynamic",0,"force-dynamic"],94866);var U=e.i(94866);let M=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/opencode-events/route",pathname:"/api/opencode-events",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/opencode-events/route.ts",nextConfigOutput:"standalone",userland:U}),{workAsyncStorage:H,workUnitAsyncStorage:D,serverHooks:q}=M;function F(){return(0,n.patchFetch)({workAsyncStorage:H,workUnitAsyncStorage:D})}async function L(e,t,n){M.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/opencode-events/route";E=E.replace(/\/index$/,"")||"/";let R=await M.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:g,params:w,nextConfig:b,parsedUrl:C,isDraftMode:O,prerenderManifest:S,routerServerContext:T,isOnDemandRevalidate:x,revalidateOnlyGenerated:P,resolvedPathname:A,clientReferenceManifest:N,serverActionsManifest:I}=R,_=(0,s.normalizeAppPath)(E),k=!!(S.dynamicRoutes[_]||S.routes[A]),$=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,C,!1):t.end("This page could not be found"),null);if(k&&!O){let e=!!S.routes[A],t=S.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(b.experimental.adapterPath)return await $();throw new v.NoFallbackError}}let U=null;!k||M.isDev||O||(U="/index"===(U=A)?"/":U);let H=!0===M.isDev||!k,D=k&&!H;I&&N&&(0,l.setManifestsSingleton)({page:E,clientReferenceManifest:N,serverActionsManifest:I});let q=e.method||"GET",F=(0,a.getTracer)(),L=F.getActiveScopeSpan(),j={params:w,prerenderManifest:S,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:b.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,o)=>M.onRequestError(e,t,n,o,T)},sharedContext:{buildId:g}},V=new i.NodeNextRequest(e),K=new i.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let l=async e=>M.handle(B,j).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${q} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${E}`)}),s=!!(0,o.getRequestMeta)(e,"minimalMode"),i=async o=>{var a,i;let d=async({previousCacheEntry:r})=>{try{if(!s&&x&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await l(o);e.fetchMetrics=j.renderOpts.fetchMetrics;let i=j.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let d=j.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(V,K,a,j.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==j.renderOpts.collectedRevalidate&&!(j.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&j.renderOpts.collectedRevalidate,n=void 0===j.renderOpts.collectedExpire||j.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:j.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await M.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,T),t}},c=await M.handleResponse({req:e,nextConfig:b,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:s});if(!k)return null;if((null==c||null==(a=c.value)?void 0:a.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(i=c.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),O&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let v=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return s&&k||v.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||v.get("Cache-Control")||v.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(V,K,new Response(c.value.body,{headers:v,status:c.value.status||200})),null};L?await i(L):await F.withPropagatedContext(e.headers,()=>F.trace(c.BaseServerSpan.handleRequest,{spanName:`${q} ${E}`,kind:a.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},i))}catch(t){if(t instanceof v.NoFallbackError||await M.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,T),k)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",()=>L,"patchFetch",()=>F,"routeModule",()=>M,"serverHooks",()=>q,"workAsyncStorage",()=>H,"workUnitAsyncStorage",()=>D],46418)}];
3
+ `)),!0}catch{return!1}},c=()=>{try{t.close()}catch{}},u=()=>{d?d():(n=!0,c())};d=()=>{for(let e of(n=!0,o))e.abort();Promise.allSettled(Array.from(a).map(e=>e.return?.())),e.signal.removeEventListener("abort",u),c()},e.signal.addEventListener("abort",u);let p=async t=>{let r=t.stream[Symbol.asyncIterator]();a.add(r);try{for(;!n;){let e=await r.next();if(e.done||n||!s(e.value))break}}catch(r){n||e.signal.aborted||O(r)||console.warn("Event stream failed for source:",t.label,S(r))}finally{a.delete(r),o.delete(t.controller)}};try{let t=p(i),r=l.filter(e=>e.key!==i.key).map(async t=>{if(!n)try{let e=await t.connect();if(o.add(e.controller),n){e.controller.abort(),o.delete(e.controller);return}await p(e)}catch(r){n||e.signal.aborted||O(r)||console.warn("Failed to connect to secondary event source:",t.label,S(r))}});await Promise.allSettled([t,...r])}catch(e){console.error("Error in event stream:",e)}finally{n=!0,d=null,e.signal.removeEventListener("abort",u),c()}},cancel(){d&&d()}});return new Response(c,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}catch(e){return console.error("Error creating event stream:",e),Response.json({error:"Failed to create event stream",details:e instanceof Error?e.message:String(e),hint:"Make sure OpenCode is running with an exposed API port. Example: opencode --port <PORT> (VibePulse auto-detects active ports)."},{status:500})}}e.s(["GET",()=>$,"dynamic",0,"force-dynamic"],94866);var U=e.i(94866);let M=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/opencode-events/route",pathname:"/api/opencode-events",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/opencode-events/route.ts",nextConfigOutput:"standalone",userland:U}),{workAsyncStorage:H,workUnitAsyncStorage:D,serverHooks:q}=M;function F(){return(0,n.patchFetch)({workAsyncStorage:H,workUnitAsyncStorage:D})}async function L(e,t,n){M.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/opencode-events/route";E=E.replace(/\/index$/,"")||"/";let R=await M.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:g,params:w,nextConfig:b,parsedUrl:C,isDraftMode:O,prerenderManifest:S,routerServerContext:P,isOnDemandRevalidate:T,revalidateOnlyGenerated:x,resolvedPathname:A,clientReferenceManifest:N,serverActionsManifest:I}=R,_=(0,l.normalizeAppPath)(E),k=!!(S.dynamicRoutes[_]||S.routes[A]),$=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if(k&&!O){let e=!!S.routes[A],t=S.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(b.experimental.adapterPath)return await $();throw new v.NoFallbackError}}let U=null;!k||M.isDev||O||(U="/index"===(U=A)?"/":U);let H=!0===M.isDev||!k,D=k&&!H;I&&N&&(0,s.setManifestsSingleton)({page:E,clientReferenceManifest:N,serverActionsManifest:I});let q=e.method||"GET",F=(0,a.getTracer)(),L=F.getActiveScopeSpan(),j={params:w,prerenderManifest:S,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:b.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,o)=>M.onRequestError(e,t,n,o,P)},sharedContext:{buildId:g}},V=new i.NodeNextRequest(e),K=new i.NodeNextResponse(t),G=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let s=async e=>M.handle(G,j).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${q} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${E}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),i=async o=>{var a,i;let d=async({previousCacheEntry:r})=>{try{if(!l&&T&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=j.renderOpts.fetchMetrics;let i=j.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let d=j.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(V,K,a,j.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==j.renderOpts.collectedRevalidate&&!(j.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&j.renderOpts.collectedRevalidate,n=void 0===j.renderOpts.collectedExpire||j.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:j.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await M.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:T})},!1,P),t}},c=await M.handleResponse({req:e,nextConfig:b,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(a=c.value)?void 0:a.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(i=c.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),O&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let v=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||v.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||v.get("Cache-Control")||v.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(V,K,new Response(c.value.body,{headers:v,status:c.value.status||200})),null};L?await i(L):await F.withPropagatedContext(e.headers,()=>F.trace(c.BaseServerSpan.handleRequest,{spanName:`${q} ${E}`,kind:a.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},i))}catch(t){if(t instanceof v.NoFallbackError||await M.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:T})},!1,P),k)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",()=>L,"patchFetch",()=>F,"routeModule",()=>M,"serverHooks",()=>q,"workAsyncStorage",()=>H,"workUnitAsyncStorage",()=>D],46418)}];
4
4
 
5
5
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[57181,e=>{"use strict";var t=e.i(24868),n=e.i(22734),r=e.i(14747),o=e.i(46786),i=e.i(89196);let c=(0,r.join)((0,o.homedir)(),".config","opencode"),s=(0,r.join)(c,"oh-my-openagent.jsonc"),a=(0,r.join)(c,"oh-my-opencode.jsonc"),u="https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/master/assets/oh-my-openagent.schema.json";function f(e){let t="object"!=typeof e||null===e||Array.isArray(e)?{}:{...e};return{...t,openEditorTargetMode:"hub"===t.openEditorTargetMode?"hub":"remote"}}function l(e=s){return e!==s?e:(0,n.existsSync)(s)?s:(0,n.existsSync)(a)?a:s}function y(e=s){try{return(0,n.existsSync)(l(e))}catch{return!1}}function g(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}async function h(e=s){try{let n=await (0,t.readFile)(l(e),"utf-8");return(0,i.parse)(n,null,!1)}catch{return{}}}async function m(e,o=s){try{let c=(0,r.dirname)(o);(0,n.existsSync)(c)||(0,n.mkdirSync)(c,{recursive:!0});let a=o===s?{...e,$schema:e.$schema||u}:e,f=(0,i.stringify)(a,null,2);await (0,t.writeFile)(o,f,"utf-8")}catch(e){throw Error(`Failed to write config: ${e}`)}}e.s(["OH_MY_OPENAGENT_CONFIG_SCHEMA",0,u,"detectConfig",()=>y,"mergeConfig",()=>function e(t,n){let r={...t};for(let[t,o]of Object.entries(n)){let n=r[t];if(g(n)&&g(o)){r[t]=e(n,o);continue}r[t]=o}return r},"normalizeVibePulseConfig",()=>f,"readConfig",()=>h,"resolveConfigPath",()=>l,"writeConfig",()=>m])}];
2
+
3
+ //# sourceMappingURL=src_lib_opencodeConfig_ts_8e209941._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[63127,t=>{"use strict";var e=t.i(22734),i=t.i(24868),n=t.i(46786),r=t.i(14747),s=t.i(17506),a=t.i(39948);let o=["command-message","local-command-caveat"],l=[/^\s*<ide_[a-z0-9_-]+(?=[\s>/]|$)/i,/^the\s+user\s+opened\s+(?:\.\.\/|\.\/|~\/|\/|[a-zA-Z]:[\\/])/i];function c(t){let e=(function(t){let e=t;for(let t of o){let i=RegExp(`<${t}(?=[\\s>/]|$)\\s*/?>?`,"ig"),n=RegExp(`</${t}(?=[\\s>]|$)\\s*>?`,"ig");e=e.replace(i," ").replace(n," ")}return e.trim()})(t).replace(/\s+/g," ").trim();return e.length<=72?e:`${e.slice(0,69)}...`}function u(t){var e,i;let n=c(t);return!n||(e=t,!(i=n)||l.some(t=>t.test(e)||t.test(i)))?null:n}function d(t){return(0,a.namespaceClaudeRawId)(t)}function f(t){var e;let i,n=d(t.sessionId),r="string"==typeof t.title?c(t.title):"",s=(e=t.topology,e?.childSessions==="authoritative"?e:a.READONLY_PROVIDER_CONTEXT.topology);return{id:n,slug:t.sessionId,title:r||((i=t.sessionId.trim())?i.slice(0,8):"Session"),directory:t.cwd,projectName:t.projectName,...t.gitBranch?{branch:t.gitBranch}:{},time:{created:t.createdAt,updated:t.updatedAt,..."number"==typeof t.archivedAt?{archived:t.archivedAt}:{}},rawSessionId:t.sessionId,providerRawId:t.sessionId,provider:"claude-code",readOnly:!0,capabilities:a.READONLY_PROVIDER_CONTEXT.capabilities,topology:s,realTimeStatus:t.waitingForUser?"idle":t.isRunning?"busy":"idle",waitingForUser:t.waitingForUser,children:[]}}function p(t){let e=0;return"number"==typeof t.runningPid&&(e+=2),"number"==typeof t.startedAt&&(e+=1),e}async function y(t){try{return await (0,i.access)(t,e.constants.F_OK),!0}catch{return!1}}async function g(t){try{return await (0,i.realpath)(t)}catch{return null}}async function m(t,e){let n;try{n=await (0,i.open)(t,"r");let r=Buffer.alloc(e),{bytesRead:s}=await n.read(r,0,e,0);return r.subarray(0,s).toString("utf8")}catch{return null}finally{await n?.close().catch(()=>void 0)}}async function h(t,e){try{let n=await (0,i.stat)(t);if(!n.isFile()||n.size>e)return null}catch{return null}let n=await m(t,e);if(!n)return null;try{return JSON.parse(n)}catch{return null}}async function w(t,e){let i=(0,r.join)(t,"sessions-index.json"),n=await h(i,e);if(!n?.originalPath||"string"!=typeof n.originalPath)return null;let s=await g(n.originalPath);return s||null}async function I(t,e){let i=await m(t,e);if(null===i)return null;let n={};for(let t of i.split("\n")){let e=t.trim();if(e){try{let t=JSON.parse(e);if("string"!=typeof t.cwd||n.cwd||(n.cwd=t.cwd),"string"!=typeof t.sessionId||n.sessionId||(n.sessionId=t.sessionId),"string"==typeof t.agentId&&!n.agentId){let e=t.agentId.trim();e&&(n.agentId=e)}if("boolean"==typeof t.isSidechain&&void 0===n.isSidechain&&(n.isSidechain=t.isSidechain),"string"!=typeof t.gitBranch||n.gitBranch||(n.gitBranch=t.gitBranch),!n.title){let e=function(t){let e=t.type,i=t.message,n=i&&"object"==typeof i?i.role:void 0;if("user"!==e&&"user"!==n)return null;let r=i&&"object"==typeof i?i.content:t.content;if("string"==typeof r)return u(r);if(Array.isArray(r))for(let t of r){if(!t||"object"!=typeof t||"string"==typeof t.type&&"text"!==t.type)continue;let e="string"==typeof t.text?t.text:"string"==typeof t.content?t.content:null;if(!e)continue;let i=u(e);if(i)return i}return null}(t);e&&(n.title=e)}if(!n.explicitParentSessionId){let e=function(t){let e=t.parentSessionId??t.parent_session_id??t.parentSessionID;return"string"!=typeof e?null:e.trim()||null}(t);e&&(n.explicitParentSessionId=e)}let i=function(t){if("number"==typeof t&&Number.isFinite(t))return t;if("string"==typeof t){let e=Date.parse(t);if(Number.isFinite(e))return e}}(t.timestamp);void 0!==i&&void 0===n.timestampMs&&(n.timestampMs=i)}catch{continue}if(n.cwd&&n.sessionId&&n.gitBranch&&void 0!==n.timestampMs&&n.title&&n.explicitParentSessionId)break}}return n}async function v(t){let e;try{e=await (0,i.readdir)(t,{withFileTypes:!0})}catch{return[]}let n=[];for(let s of e){let e,a=(0,r.join)(t,s.name);if(s.isFile()&&s.name.endsWith(".jsonl")){n.push(a);continue}if(!s.isDirectory())continue;let o=(0,r.join)(a,"subagents");try{e=await (0,i.readdir)(o,{withFileTypes:!0})}catch{continue}for(let t of e)t.isFile()&&t.name.endsWith(".jsonl")&&n.push((0,r.join)(o,t.name))}return n}async function b(t,e){let n;try{let r=await (0,i.stat)(t);if(!r.isFile())return null;n=await (0,i.open)(t,"r");let s=Math.min(e,r.size),a=Math.max(0,r.size-s),o=Buffer.alloc(s),{bytesRead:l}=await n.read(o,0,s,a);return o.subarray(0,l).toString("utf8")}catch{return null}finally{await n?.close().catch(()=>void 0)}}async function S(t,e){let i=Array.from(new Set([Math.max(1,e),Math.max(4*e,262144)])),n=null;for(let e of i){let i=await I(t,e);if(i&&(n=i).title)break}return n}async function A(t,e){if(Date.now()-e>6e5)return{waitingForUser:!1,trailingParseErrors:!1};let i=await b(t,65536);if(!i)return{waitingForUser:!1,trailingParseErrors:!1};let n=i.split("\n").map(t=>t.trim()).filter(Boolean),r=!1;for(let t=n.length-1;t>=0;t--)try{let e=JSON.parse(n[t]),i=e.type,o=e.message,l=o&&"object"==typeof o?o.role:void 0;if("user"===i||"user"===l)return{waitingForUser:!1,trailingParseErrors:r};if("assistant"===i&&o&&"object"==typeof o){var s,a;let t=o.stop_reason,e=(s=o.content,"string"==typeof s?s.trim()||null:Array.isArray(s)&&s.map(t=>t&&"object"==typeof t&&"string"==typeof t.text?t.text:null).filter(t=>!!t).join("\n").trim()||null);if("tool_use"===t||(a=o.content,Array.isArray(a)&&a.some(t=>t&&"object"==typeof t&&"tool_use"===t.type))||"end_turn"===t&&"string"==typeof e&&function(t){let e=t.trim();return e.endsWith("?")||e.endsWith("?")}(e))return{waitingForUser:!0,trailingParseErrors:r};break}}catch{r=!0;continue}return{waitingForUser:!1,trailingParseErrors:r}}async function F(t){try{return process.kill(t,0),!0}catch{return!1}}async function j(t,e,n){let s,a=(0,r.join)(t,"sessions");try{s=(await (0,i.readdir)(a,{withFileTypes:!0})).sort((t,e)=>t.name.localeCompare(e.name))}catch{return new Map}let o=new Map;for(let t of s){if(!t.isFile()||!t.name.endsWith(".json"))continue;let i=await h((0,r.join)(a,t.name),e);if(!i?.sessionId||"string"!=typeof i.sessionId||"string"!=typeof i.cwd)continue;let s=await g(i.cwd);if(!s)continue;let l={sessionId:i.sessionId,cwd:s,startedAt:"number"==typeof i.startedAt&&Number.isFinite(i.startedAt)?i.startedAt:void 0};if("number"==typeof i.pid&&Number.isInteger(i.pid)&&i.pid>0){let t=!1;try{t=await n(i.pid)}catch{t=!1}t&&void 0!==l.startedAt&&(l.runningPid=i.pid)}let c=o.get(i.sessionId);if(!c){o.set(i.sessionId,l);continue}o.set(i.sessionId,function(t,e){let i=p(t),n=p(e);if(n>i)return e;if(n<i)return t;let r=t.startedAt??-1/0;return(e.startedAt??-1/0)>r?e:t}(c,l))}return o}async function M(t={}){let e,a=function({claudeDir:t,homeDir:e}){return t||(0,r.join)(e??(0,n.homedir)(),".claude")}(t),o=(0,r.join)(a,"projects");if(!await y(o))return[];let l=t.smallFileLimitBytes??131072,c=t.jsonlHeadLimitBytes??65536,u=await j(a,l,t.isPidAlive??F);try{e=await (0,i.readdir)(o,{withFileTypes:!0})}catch{return[]}let d=new Map,f=new Map,p=new Map((await (0,s.listClaudeSessionOverrides)()).map(t=>[t.sessionId,t])),m=Date.now();for(let t of e){if(!t.isDirectory())continue;let e=(0,r.join)(o,t.name),n=await w(e,l);for(let t of(await v(e))){let e,s=(0,r.basename)(t).slice(0,-6);if(!s)continue;let a=u.get(s);try{if(!(e=await (0,i.stat)(t)).isFile())continue}catch{continue}let o=await S(t,c);if(null===o)continue;let l=n;if("string"==typeof o.cwd){let t=await g(o.cwd);if(!t||n&&t!==n)continue;l=t}if(!l)continue;let y=function(t,e){if(!(t.startsWith("agent-")&&t.length>6))return null;let i=t.slice(6),n="string"==typeof e.agentId?e.agentId.trim():"";if(n&&n!==i||!0!==e.isSidechain&&!n)return null;let r="string"==typeof e.sessionId?e.sessionId.trim():"";return r&&r!==t?r:null}(s,o),h="string"==typeof y,w=o.sessionId??s;if(!h&&w!==s)continue;let I=o.title,v=y?`${y}__${s}`:s,b=p.get(v),F=y?p.get(y):void 0,j="number"==typeof b?.deletedAt?b:F;if("number"==typeof j?.deletedAt)continue;let M=a?.cwd===l?a:void 0,P=Math.max(e.mtimeMs,o.timestampMs??0),x=m-P<=1e4,_="number"==typeof b?.restoredAt&&b.restoredAt>=P?{waitingForUser:!1,trailingParseErrors:!1}:await A(t,P),B="number"==typeof M?.runningPid||h,N=_.waitingForUser&&_.trailingParseErrors&&x&&B,O=!!B&&!N&&_.waitingForUser,R=!O&&x&&B,U=M?.runningPid!==void 0?M.startedAt??o.timestampMs??e.birthtimeMs??e.mtimeMs:o.timestampMs??e.birthtimeMs??e.mtimeMs;d.set(v,{sessionId:v,...I?{title:I}:{},cwd:l,projectPath:l,projectName:(0,r.basename)(l),artifactPath:t,gitBranch:o.gitBranch??null,createdAt:U,updatedAt:P,startedAt:M?.runningPid!==void 0?M.startedAt:void 0,pid:M?.runningPid,isRunning:R,waitingForUser:O,..."number"==typeof b?.archivedAt?{archivedAt:b.archivedAt}:{}}),o.explicitParentSessionId?f.set(v,o.explicitParentSessionId):y&&f.set(v,y)}}if(0===d.size)return[];for(let[t,e]of f){let i=d.get(t),n=d.get(e);i&&n&&t!==e&&(d.set(t,{...i,parentSessionId:e,topology:{childSessions:"authoritative"}}),d.set(e,{...n,topology:{childSessions:"authoritative"}}))}return Array.from(d.values()).sort((t,e)=>e.updatedAt-t.updatedAt)}t.s(["claudeCodeLocalSessionProvider",0,{id:"claude-code",async getSessionsResult(){try{let t=function(t){let e=t.map(f),i=new Map(e.map(t=>[t.id,t])),n=new Map,r=new Map,s=new Set,a=t=>{let e=new Set([t]),i=n.get(t);for(;i&&!e.has(i);){e.add(i);let t=n.get(i);if(!t)return i;i=t}};for(let e of t){if(e.topology?.childSessions!=="authoritative"||!e.parentSessionId)continue;let t=d(e.sessionId),r=d(e.parentSessionId),s=i.get(t),a=i.get(r);s&&a&&t!==r&&"authoritative"===a.topology.childSessions&&n.set(t,r)}for(let[t]of n){let e=i.get(t);if(!e)continue;let n=a(t);if(!n||n===t)continue;let o=i.get(n);if(!o||"authoritative"!==o.topology.childSessions)continue;let l=r.get(n)??[];l.push({id:e.id,slug:e.slug,title:e.title,directory:e.directory,parentID:n,time:e.time,realTimeStatus:e.realTimeStatus,waitingForUser:e.waitingForUser,readOnly:e.readOnly,capabilities:e.capabilities,rawSessionId:e.rawSessionId,provider:e.provider,providerRawId:e.providerRawId,topology:e.topology}),r.set(n,l),s.add(t)}return e.filter(t=>!s.has(t.id)).map(t=>({...t,children:r.get(t.id)??[]}))}(await M({repoPath:process.cwd()}));return{payload:{sessions:t,processHints:[]},sourceMeta:{online:t.length>0}}}catch{return{payload:{sessions:[],processHints:[]},sourceMeta:{online:!1,degraded:!0,reason:"Claude Code discovery failed"}}}}}])}];
2
+
3
+ //# sourceMappingURL=src_lib_session-providers_claudeCode_ts_0f9590ed._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},70406,(a,b,c)=>{b.exports=a.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},4276,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(11857);a.n(d("[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>"))},82509,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(11857);a.n(d("[project]/node_modules/next/dist/client/components/builtin/global-error.js"))},66114,a=>{"use strict";a.i(4276);var b=a.i(82509);a.n(b)},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},11857,(a,b,c)=>{"use strict";b.exports=a.r(24951).vendored["react-rsc"].ReactServerDOMTurbopackServer},24361,(a,b,c)=>{b.exports=a.x("util",()=>require("util"))},24951,(a,b,c)=>{"use strict";b.exports=a.r(18622)},7997,(a,b,c)=>{"use strict";b.exports=a.r(24951).vendored["react-rsc"].ReactJsxRuntime},717,(a,b,c)=>{"use strict";b.exports=a.r(24951).vendored["react-rsc"].React}];
1
+ module.exports=[32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},70406,(a,b,c)=>{b.exports=a.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},4276,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(11857);a.n(d("[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>"))},82509,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(11857);a.n(d("[project]/node_modules/next/dist/client/components/builtin/global-error.js"))},66114,a=>{"use strict";a.i(4276);var b=a.i(82509);a.n(b)},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},11857,(a,b,c)=>{"use strict";b.exports=a.r(24951).vendored["react-rsc"].ReactServerDOMTurbopackServer},24361,(a,b,c)=>{b.exports=a.x("util",()=>require("util"))},24951,(a,b,c)=>{"use strict";b.exports=a.r(18622)},7997,(a,b,c)=>{"use strict";b.exports=a.r(24951).vendored["react-rsc"].ReactJsxRuntime},717,(a,b,c)=>{"use strict";b.exports=a.r(24951).vendored["react-rsc"].React}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__631e12d0._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__c91a8380._.js.map