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 +1 @@
1
- {"version":3,"sources":["../../../src/app/api/opencode-config/route.ts","../../../node_modules/next/dist/esm/build/templates/app-route.js"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\nimport { normalizeVibePulseConfig, readConfig, writeConfig } from '@/lib/opencodeConfig';\n\n// Allowed fields to expose in the API\nconst ALLOWED_AGENT_FIELDS = ['model', 'temperature', 'top_p', 'variant', 'prompt_append'] as const;\n\n/**\n * Filters an agent config to only include allowed fields\n */\nfunction filterAgentConfig(agent: Record<string, unknown>): Record<string, unknown> {\n const filtered: Record<string, unknown> = {};\n \n for (const field of ALLOWED_AGENT_FIELDS) {\n if (agent[field] !== undefined) {\n filtered[field] = agent[field];\n }\n }\n \n return filtered;\n}\n\n/**\n * GET /api/opencode-config\n * Returns filtered agent configuration\n * Only exposes: model, temperature, top_p\n * Filters out sensitive fields (apiKey, token, password, etc.)\n */\nexport async function GET() {\n try {\n const config = await readConfig();\n const agents = config.agents || {};\n const filteredAgents: Record<string, Record<string, unknown>> = {};\n \n for (const [agentName, agentConfig] of Object.entries(agents)) {\n if (typeof agentConfig === 'object' && agentConfig !== null) {\n filteredAgents[agentName] = filterAgentConfig(agentConfig as Record<string, unknown>);\n }\n }\n\n const categories = config.categories || {};\n const filteredCategories: Record<string, Record<string, unknown>> = {};\n \n for (const [catName, catConfig] of Object.entries(categories)) {\n if (typeof catConfig === 'object' && catConfig !== null && !Array.isArray(catConfig)) {\n filteredCategories[catName] = filterAgentConfig(catConfig as Record<string, unknown>);\n }\n }\n\n const vibepulse = normalizeVibePulseConfig(config.vibepulse);\n\n return NextResponse.json({ \n agents: filteredAgents,\n categories: filteredCategories,\n vibepulse\n });\n } catch (error) {\n console.error('Error reading config:', error);\n return NextResponse.json(\n { error: 'Internal server error' },\n { status: 500 }\n );\n }\n}\n\n/**\n * POST /api/opencode-config\n * Updates agent configuration with validation\n * Only allows: model, temperature, top_p\n * Rejects sensitive fields (apiKey, token, password, secret, etc.)\n */\nexport async function POST(request: NextRequest) {\n try {\n const body = await request.json();\n\n // Validate request structure\n if (!body || typeof body !== 'object') {\n return NextResponse.json(\n { error: 'Invalid request body' },\n { status: 400 }\n );\n }\n\n const { agents, categories, vibepulse } = body;\n\n // If neither agents, categories, nor vibepulse provided, nothing to update\n if (agents === undefined && categories === undefined && vibepulse === undefined) {\n return NextResponse.json(\n { error: 'Missing agents, categories, or vibepulse field' },\n { status: 400 }\n );\n }\n\n // Validate agents is an object (if provided)\n if (agents !== undefined && (typeof agents !== 'object' || agents === null || Array.isArray(agents))) {\n return NextResponse.json(\n { error: 'Agents must be an object' },\n { status: 400 }\n );\n }\n \n // Validate categories is an object (if provided)\n if (categories !== undefined && (typeof categories !== 'object' || categories === null || Array.isArray(categories))) {\n return NextResponse.json(\n { error: 'Categories must be an object' },\n { status: 400 }\n );\n }\n\n // Validate vibepulse is an object (if provided)\n if (vibepulse !== undefined && (typeof vibepulse !== 'object' || vibepulse === null || Array.isArray(vibepulse))) {\n return NextResponse.json(\n { error: 'Vibepulse must be an object' },\n { status: 400 }\n );\n }\n\n // Read current config\n const currentConfig = await readConfig();\n const currentAgents = currentConfig.agents || {};\n\n // Validate and merge agent updates\n const updatedAgents: Record<string, Record<string, unknown>> = {};\n\n for (const [name, config] of Object.entries(currentAgents)) {\n if (typeof config === 'object' && config !== null && !Array.isArray(config)) {\n updatedAgents[name] = config as Record<string, unknown>;\n }\n }\n\n if (agents !== undefined) {\n for (const [agentName, agentConfig] of Object.entries(agents)) {\n if (typeof agentConfig !== 'object' || agentConfig === null || Array.isArray(agentConfig)) {\n return NextResponse.json(\n { error: `Agent '${agentName}' config must be an object` },\n { status: 400 }\n );\n }\n\n const config = agentConfig as Record<string, unknown>;\n const disallowedFields: string[] = [];\n\n for (const key of Object.keys(config)) {\n const lowerKey = key.toLowerCase();\n if (\n lowerKey.includes('api') ||\n lowerKey.includes('key') ||\n lowerKey.includes('token') ||\n lowerKey.includes('secret') ||\n lowerKey.includes('password') ||\n lowerKey.includes('auth') ||\n lowerKey.includes('credential') ||\n lowerKey.includes('private') ||\n lowerKey.includes('cert')\n ) {\n disallowedFields.push(key);\n }\n }\n\n if (disallowedFields.length > 0) {\n return NextResponse.json(\n {\n error: `Agent '${agentName}' contains disallowed fields: ${disallowedFields.join(', ')}`\n },\n { status: 403 }\n );\n }\n\n const validatedConfig: Record<string, unknown> = {};\n\n for (const [field, value] of Object.entries(config)) {\n const lowerField = field.toLowerCase();\n\n if (lowerField === 'model') {\n if (typeof value !== 'string' || value.trim() === '') {\n return NextResponse.json(\n { error: `Agent '${agentName}': model must be a non-empty string` },\n { status: 400 }\n );\n }\n validatedConfig[field] = value;\n } else if (lowerField === 'temperature') {\n const temp = Number(value);\n if (isNaN(temp) || temp < 0 || temp > 2) {\n return NextResponse.json(\n { error: `Agent '${agentName}': temperature must be a number between 0 and 2` },\n { status: 400 }\n );\n }\n validatedConfig[field] = temp;\n } else if (lowerField === 'top_p') {\n const topP = Number(value);\n if (isNaN(topP) || topP < 0 || topP > 1) {\n return NextResponse.json(\n { error: `Agent '${agentName}': top_p must be a number between 0 and 1` },\n { status: 400 }\n );\n }\n validatedConfig[field] = topP;\n } else if (lowerField === 'variant') {\n if (typeof value !== 'string') {\n return NextResponse.json(\n { error: `Agent '${agentName}': variant must be a string` },\n { status: 400 }\n );\n }\n validatedConfig[field] = value;\n } else if (lowerField === 'prompt_append') {\n if (typeof value !== 'string') {\n return NextResponse.json(\n { error: `Agent '${agentName}': prompt_append must be a string` },\n { status: 400 }\n );\n }\n validatedConfig[field] = value;\n } else {\n return NextResponse.json(\n {\n error: `Agent '${agentName}': unknown field '${field}'. Allowed fields: model, temperature, top_p, variant, prompt_append`\n },\n { status: 400 }\n );\n }\n }\n\n updatedAgents[agentName] = {\n ...(currentAgents[agentName] as Record<string, unknown> || {}),\n ...validatedConfig\n };\n }\n }\n\n // Process categories updates if provided\n const updatedCategories: Record<string, Record<string, unknown>> = {};\n const currentCategories = (currentConfig.categories || {}) as Record<string, Record<string, unknown>>;\n\n for (const [name, config] of Object.entries(currentCategories)) {\n if (typeof config === 'object' && config !== null && !Array.isArray(config)) {\n updatedCategories[name] = config as Record<string, unknown>;\n }\n }\n\n if (categories !== undefined) {\n for (const [categoryName, categoryConfig] of Object.entries(categories)) {\n if (typeof categoryConfig !== 'object' || categoryConfig === null || Array.isArray(categoryConfig)) {\n return NextResponse.json(\n { error: `Category '${categoryName}' config must be an object` },\n { status: 400 }\n );\n }\n\n const configObj = categoryConfig as Record<string, unknown>;\n const validatedCategoryConfig: Record<string, unknown> = {};\n\n for (const [field, value] of Object.entries(configObj)) {\n if (field === 'model' || field === 'variant' || field === 'prompt_append' || field === 'description') {\n if (value !== undefined && typeof value !== 'string') {\n return NextResponse.json(\n { error: `Category '${categoryName}': '${field}' must be a string` },\n { status: 400 }\n );\n }\n validatedCategoryConfig[field] = value;\n } else if (field === 'temperature' || field === 'top_p') {\n if (value !== undefined && typeof value !== 'number') {\n return NextResponse.json(\n { error: `Category '${categoryName}': '${field}' must be a number` },\n { status: 400 }\n );\n }\n \n const numValue = value as number;\n const temp = field === 'temperature' ? Math.max(0, Math.min(2, numValue)) : numValue;\n const topP = field === 'top_p' ? Math.max(0, Math.min(1, numValue)) : numValue;\n \n validatedCategoryConfig[field] = field === 'temperature' ? temp : topP;\n } else {\n return NextResponse.json(\n { error: `Category '${categoryName}': unknown field '${field}'` },\n { status: 400 }\n );\n }\n }\n \n updatedCategories[categoryName] = {\n ...((currentCategories[categoryName] as Record<string, unknown>) || {}),\n ...validatedCategoryConfig\n };\n }\n }\n\n // Process vibepulse updates if provided\n const updatedVibepulse: Record<string, unknown> = {};\n const currentVibepulse = normalizeVibePulseConfig(currentConfig.vibepulse);\n\n if (vibepulse !== undefined) {\n for (const [key, value] of Object.entries(currentVibepulse)) {\n updatedVibepulse[key] = value;\n }\n \n for (const [field, value] of Object.entries(vibepulse as Record<string, unknown>)) {\n if (field === 'stickyBusyDelayMs' || field === 'sessionsRefreshIntervalMs') {\n if (value !== undefined && typeof value !== 'number') {\n return NextResponse.json(\n { error: `Vibepulse: '${field}' must be a number` },\n { status: 400 }\n );\n }\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return NextResponse.json(\n { error: `Vibepulse: '${field}' must be a finite number` },\n { status: 400 }\n );\n }\n\n if (field === 'stickyBusyDelayMs' && value < 0) {\n return NextResponse.json(\n { error: `Vibepulse: '${field}' must be a non-negative number` },\n { status: 400 }\n );\n }\n\n if (field === 'sessionsRefreshIntervalMs' && value <= 0) {\n return NextResponse.json(\n { error: `Vibepulse: '${field}' must be greater than 0` },\n { status: 400 }\n );\n }\n\n updatedVibepulse[field] = value;\n }\n } else if (field === 'openEditorTargetMode') {\n if (value !== 'remote' && value !== 'hub') {\n return NextResponse.json(\n { error: `Vibepulse: '${field}' must be either 'remote' or 'hub'` },\n { status: 400 }\n );\n }\n\n updatedVibepulse[field] = value;\n } else {\n return NextResponse.json(\n { error: `Vibepulse: unknown field '${field}'` },\n { status: 400 }\n );\n }\n }\n }\n\n // Update config and save\n const newConfig = { ...currentConfig } as Record<string, unknown>;\n if (agents !== undefined) newConfig.agents = updatedAgents;\n if (categories !== undefined) newConfig.categories = updatedCategories;\n if (vibepulse !== undefined) newConfig.vibepulse = updatedVibepulse;\n \n // writeConfig type doesn't natively expose categories yet, safely bypassing\n await writeConfig(\n newConfig as { \n agents?: Record<string, Record<string, unknown>>; \n categories?: Record<string, Record<string, unknown>>; \n vibepulse?: Record<string, unknown>;\n }\n );\n\n return NextResponse.json(\n { success: true, agents: updatedAgents, categories: updatedCategories, vibepulse: updatedVibepulse },\n { status: 200 }\n );\n} catch (error) {\n console.error('Error updating config:', error);\n return NextResponse.json(\n { error: 'Internal server error' },\n { status: 500 }\n );\n}\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"standalone\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/opencode-config/route\",\n pathname: \"/api/opencode-config\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/app/api/opencode-config/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/opencode-config/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n"],"names":[],"mappings":"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","ignoreList":[1]}
1
+ {"version":3,"sources":["../../../src/app/api/opencode-config/route.ts","../../../node_modules/next/dist/esm/build/templates/app-route.js"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\nimport { normalizeVibePulseConfig, readConfig, writeConfig } from '@/lib/opencodeConfig';\n\nconst SECRET_FIELD_PATTERNS = [\n 'api',\n 'key',\n 'token',\n 'secret',\n 'password',\n 'auth',\n 'credential',\n 'private',\n 'cert',\n];\n\nconst SAFE_TOKEN_FIELD_NAMES = new Set(['max_tokens', 'budget_tokens']);\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isSecretLikeField(field: string): boolean {\n const normalizedField = field\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .toLowerCase();\n\n const parts = normalizedField.split(/[^a-z0-9]+/);\n\n // 1. Check for separated or camelCase fields (exact token matches)\n if (parts.some((p) => p !== '' && SECRET_FIELD_PATTERNS.includes(p))) {\n if (SAFE_TOKEN_FIELD_NAMES.has(normalizedField)) {\n return false;\n }\n\n return true;\n }\n\n // 2. Check for common concatenated sensitive fields (whole string matches)\n // This satisfies the Codex check for \"apikey\", \"accesstoken\", \"privatekey\"\n const concatenatedSecrets = [\n 'apikey',\n 'accesskey',\n 'accesstoken',\n 'authtoken',\n 'privatekey',\n 'secretkey',\n 'passwordhash',\n 'credential'\n ];\n if (concatenatedSecrets.includes(normalizedField)) {\n return true;\n }\n\n return false;\n}\n\nfunction isAgentOrCategoryIdentifierPath(path: string): boolean {\n return path === 'agents' || path === 'categories';\n}\n\nfunction collectSecretLikeFields(value: unknown, path = ''): string[] {\n if (Array.isArray(value)) {\n return value.flatMap((entry, index) => collectSecretLikeFields(entry, `${path}[${index}]`));\n }\n\n if (!isPlainObject(value)) {\n return [];\n }\n\n const disallowedFields: string[] = [];\n\n for (const [key, childValue] of Object.entries(value)) {\n const fieldPath = path ? `${path}.${key}` : key;\n const isMapIdentifier = isAgentOrCategoryIdentifierPath(path);\n\n if (!isMapIdentifier && isSecretLikeField(key)) {\n disallowedFields.push(fieldPath);\n continue;\n }\n\n disallowedFields.push(...collectSecretLikeFields(childValue, fieldPath));\n }\n\n return disallowedFields;\n}\n\nfunction stripSecretLikeFields(value: unknown, path = ''): unknown {\n if (Array.isArray(value)) {\n return value.map((entry, index) => stripSecretLikeFields(entry, `${path}[${index}]`));\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const safeValue: Record<string, unknown> = {};\n\n for (const [key, childValue] of Object.entries(value)) {\n const fieldPath = path ? `${path}.${key}` : key;\n const isMapIdentifier = isAgentOrCategoryIdentifierPath(path);\n\n if (isMapIdentifier || !isSecretLikeField(key)) {\n safeValue[key] = stripSecretLikeFields(childValue, fieldPath);\n }\n }\n\n return safeValue;\n}\n\nfunction mergeUnknownConfigValue(currentValue: unknown, submittedValue: unknown): unknown {\n if (!isPlainObject(currentValue) || !isPlainObject(submittedValue)) {\n return submittedValue;\n }\n\n const mergedValue: Record<string, unknown> = { ...currentValue };\n\n for (const [key, childValue] of Object.entries(submittedValue)) {\n mergedValue[key] = mergeUnknownConfigValue(mergedValue[key], childValue);\n }\n\n return mergedValue;\n}\n\nfunction badRequest(error: string) {\n return NextResponse.json({ error }, { status: 400 });\n}\n\nfunction forbidden(disallowedFields: string[]) {\n return NextResponse.json(\n { error: `Config contains disallowed fields: ${disallowedFields.join(', ')}` },\n { status: 403 }\n );\n}\n\nfunction validateStringField(section: string, field: string, value: unknown, options: { nonEmpty?: boolean } = {}) {\n if (typeof value !== 'string' || (options.nonEmpty && value.trim() === '')) {\n return badRequest(`${section}: ${field} must be ${options.nonEmpty ? 'a non-empty string' : 'a string'}`);\n }\n\n return null;\n}\n\nfunction validateFiniteNumber(section: string, field: string, value: unknown) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return badRequest(`${section}: ${field} must be a finite number`);\n }\n\n return null;\n}\n\nfunction validateFallbackModelEntry(section: string, value: unknown) {\n if (typeof value === 'string' || isPlainObject(value)) {\n return null;\n }\n\n return badRequest(`${section}: fallback_models entries must be strings or objects`);\n}\n\nfunction validateAgentOrCategoryField(section: string, field: string, value: unknown) {\n switch (field) {\n case 'model':\n return validateStringField(section, field, value, { nonEmpty: true });\n case 'variant':\n case 'prompt_append':\n case 'description':\n case 'category':\n case 'system':\n return validateStringField(section, field, value);\n case 'reasoningEffort':\n if (value === null) return null;\n return validateStringField(section, field, value);\n case 'temperature': {\n const error = validateFiniteNumber(section, field, value);\n if (error) return error;\n\n const temperature = value as number;\n if (temperature < 0 || temperature > 2) {\n return badRequest(`${section}: temperature must be a number between 0 and 2`);\n }\n\n return null;\n }\n case 'top_p': {\n const error = validateFiniteNumber(section, field, value);\n if (error) return error;\n\n const topP = value as number;\n if (topP < 0 || topP > 1) {\n return badRequest(`${section}: top_p must be a number between 0 and 1`);\n }\n\n return null;\n }\n case 'maxTokens':\n case 'max_tokens': {\n const error = validateFiniteNumber(section, field, value);\n if (error) return error;\n\n if ((value as number) <= 0) {\n return badRequest(`${section}: ${field} must be greater than 0`);\n }\n\n return null;\n }\n case 'thinking':\n if (typeof value !== 'boolean' && !isPlainObject(value)) {\n return badRequest(`${section}: thinking must be a boolean or object`);\n }\n\n return null;\n case 'fallback_models':\n if (value === null) return null;\n if (Array.isArray(value)) {\n for (const entry of value) {\n const error = validateFallbackModelEntry(section, entry);\n if (error) return error;\n }\n\n return null;\n }\n\n return validateFallbackModelEntry(section, value);\n default:\n return null;\n }\n}\n\nfunction validateVibePulseField(field: string, value: unknown) {\n if (field === 'stickyBusyDelayMs' || field === 'sessionsRefreshIntervalMs') {\n const error = validateFiniteNumber('Vibepulse', field, value);\n if (error) return error;\n\n if (field === 'stickyBusyDelayMs' && (value as number) < 0) {\n return badRequest(`Vibepulse: '${field}' must be a non-negative number`);\n }\n\n if (field === 'sessionsRefreshIntervalMs' && (value as number) <= 0) {\n return badRequest(`Vibepulse: '${field}' must be greater than 0`);\n }\n }\n\n if (field === 'openEditorTargetMode' && value !== 'remote' && value !== 'hub') {\n return badRequest(`Vibepulse: '${field}' must be either 'remote' or 'hub'`);\n }\n\n return null;\n}\n\n/**\n * GET /api/opencode-config\n * Returns safe v4-compatible configuration\n * Filters out sensitive fields (apiKey, token, password, etc.)\n */\nexport async function GET() {\n try {\n const config = await readConfig();\n const safeConfig = stripSecretLikeFields(config) as Record<string, unknown>;\n const agents = config.agents || {};\n const filteredAgents: Record<string, Record<string, unknown>> = {};\n \n for (const [agentName, agentConfig] of Object.entries(agents)) {\n if (isPlainObject(agentConfig)) {\n filteredAgents[agentName] = stripSecretLikeFields(agentConfig) as Record<string, unknown>;\n }\n }\n\n const categories = config.categories || {};\n const filteredCategories: Record<string, Record<string, unknown>> = {};\n \n for (const [catName, catConfig] of Object.entries(categories)) {\n if (isPlainObject(catConfig)) {\n filteredCategories[catName] = stripSecretLikeFields(catConfig) as Record<string, unknown>;\n }\n }\n\n const vibepulse = stripSecretLikeFields(normalizeVibePulseConfig(config.vibepulse));\n const teamMode = isPlainObject(config.team_mode)\n ? stripSecretLikeFields(config.team_mode)\n : config.team_mode;\n\n return NextResponse.json({\n ...safeConfig,\n agents: filteredAgents,\n categories: filteredCategories,\n team_mode: teamMode,\n vibepulse\n });\n } catch (error) {\n console.error('Error reading config:', error);\n return NextResponse.json(\n { error: 'Internal server error' },\n { status: 500 }\n );\n }\n}\n\n/**\n * POST /api/opencode-config\n * Updates agent configuration with validation\n * Rejects sensitive fields (apiKey, token, password, secret, etc.)\n */\nexport async function POST(request: NextRequest) {\n try {\n const body = await request.json();\n\n // Validate request structure\n if (!body || typeof body !== 'object' || Array.isArray(body)) {\n return NextResponse.json(\n { error: 'Invalid request body' },\n { status: 400 }\n );\n }\n\n const disallowedFields = collectSecretLikeFields(body);\n if (disallowedFields.length > 0) {\n return forbidden(disallowedFields);\n }\n\n const { agents, categories, vibepulse, team_mode: teamMode } = body;\n\n // If neither agents, categories, nor vibepulse provided, nothing to update\n if (Object.keys(body).length === 0) {\n return NextResponse.json(\n { error: 'Missing config fields to update' },\n { status: 400 }\n );\n }\n\n // Validate agents is an object (if provided)\n if (agents !== undefined && (typeof agents !== 'object' || agents === null || Array.isArray(agents))) {\n return NextResponse.json(\n { error: 'Agents must be an object' },\n { status: 400 }\n );\n }\n \n // Validate categories is an object (if provided)\n if (categories !== undefined && (typeof categories !== 'object' || categories === null || Array.isArray(categories))) {\n return NextResponse.json(\n { error: 'Categories must be an object' },\n { status: 400 }\n );\n }\n\n // Validate vibepulse is an object (if provided)\n if (vibepulse !== undefined && (typeof vibepulse !== 'object' || vibepulse === null || Array.isArray(vibepulse))) {\n return NextResponse.json(\n { error: 'Vibepulse must be an object' },\n { status: 400 }\n );\n }\n\n if (teamMode !== undefined && (typeof teamMode !== 'object' || teamMode === null || Array.isArray(teamMode))) {\n return NextResponse.json(\n { error: 'team_mode must be an object' },\n { status: 400 }\n );\n }\n\n if (\n isPlainObject(teamMode) &&\n Object.prototype.hasOwnProperty.call(teamMode, 'enabled') &&\n typeof teamMode.enabled !== 'boolean'\n ) {\n return NextResponse.json(\n { error: 'team_mode.enabled must be a boolean' },\n { status: 400 }\n );\n }\n\n // Read current config\n const currentConfig = await readConfig();\n const currentAgents = currentConfig.agents || {};\n\n // Validate and merge agent updates\n const updatedAgents: Record<string, Record<string, unknown>> = {};\n\n for (const [name, config] of Object.entries(currentAgents)) {\n if (typeof config === 'object' && config !== null && !Array.isArray(config)) {\n updatedAgents[name] = config as Record<string, unknown>;\n }\n }\n\n if (agents !== undefined) {\n for (const [agentName, agentConfig] of Object.entries(agents)) {\n if (!isPlainObject(agentConfig)) {\n return NextResponse.json(\n { error: `Agent '${agentName}' config must be an object` },\n { status: 400 }\n );\n }\n\n const config = agentConfig as Record<string, unknown>;\n\n const validatedConfig: Record<string, unknown> = {};\n\n for (const [field, value] of Object.entries(config)) {\n const error = validateAgentOrCategoryField(`Agent '${agentName}'`, field, value);\n if (error) return error;\n\n validatedConfig[field] = value;\n }\n\n updatedAgents[agentName] = {\n ...(currentAgents[agentName] as Record<string, unknown> || {}),\n ...validatedConfig\n };\n \n if (validatedConfig.reasoningEffort === null) {\n delete updatedAgents[agentName].reasoningEffort;\n }\n if (validatedConfig.fallback_models === null) {\n delete updatedAgents[agentName].fallback_models;\n }\n }\n }\n\n // Process categories updates if provided\n const updatedCategories: Record<string, Record<string, unknown>> = {};\n const currentCategories = (currentConfig.categories || {}) as Record<string, Record<string, unknown>>;\n\n for (const [name, config] of Object.entries(currentCategories)) {\n if (typeof config === 'object' && config !== null && !Array.isArray(config)) {\n updatedCategories[name] = config as Record<string, unknown>;\n }\n }\n\n if (categories !== undefined) {\n for (const [categoryName, categoryConfig] of Object.entries(categories)) {\n if (!isPlainObject(categoryConfig)) {\n return NextResponse.json(\n { error: `Category '${categoryName}' config must be an object` },\n { status: 400 }\n );\n }\n\n const configObj = categoryConfig as Record<string, unknown>;\n const validatedCategoryConfig: Record<string, unknown> = {};\n\n for (const [field, value] of Object.entries(configObj)) {\n const error = validateAgentOrCategoryField(`Category '${categoryName}'`, field, value);\n if (error) return error;\n\n validatedCategoryConfig[field] = value;\n }\n \n updatedCategories[categoryName] = {\n ...((currentCategories[categoryName] as Record<string, unknown>) || {}),\n ...validatedCategoryConfig\n };\n \n if (validatedCategoryConfig.reasoningEffort === null) {\n delete updatedCategories[categoryName].reasoningEffort;\n }\n if (validatedCategoryConfig.fallback_models === null) {\n delete updatedCategories[categoryName].fallback_models;\n }\n }\n }\n\n // Process vibepulse updates if provided\n const updatedVibepulse: Record<string, unknown> = {};\n const currentVibepulse = normalizeVibePulseConfig(currentConfig.vibepulse);\n\n if (vibepulse !== undefined) {\n for (const [key, value] of Object.entries(currentVibepulse)) {\n updatedVibepulse[key] = value;\n }\n \n for (const [field, value] of Object.entries(vibepulse as Record<string, unknown>)) {\n const error = validateVibePulseField(field, value);\n if (error) return error;\n\n updatedVibepulse[field] = value;\n }\n }\n\n // Update config and save\n const newConfig = { ...currentConfig } as Record<string, unknown>;\n\n for (const [field, value] of Object.entries(body)) {\n if (field !== 'agents' && field !== 'categories' && field !== 'vibepulse' && field !== 'team_mode') {\n newConfig[field] = mergeUnknownConfigValue(newConfig[field], value);\n }\n }\n\n if (agents !== undefined) newConfig.agents = updatedAgents;\n if (categories !== undefined) newConfig.categories = updatedCategories;\n if (vibepulse !== undefined) newConfig.vibepulse = updatedVibepulse;\n if (teamMode !== undefined) {\n newConfig.team_mode = {\n ...(isPlainObject(currentConfig.team_mode) ? currentConfig.team_mode : {}),\n ...(teamMode as Record<string, unknown>),\n };\n }\n \n // writeConfig type doesn't natively expose categories yet, safely bypassing\n await writeConfig(\n newConfig as { \n agents?: Record<string, Record<string, unknown>>; \n categories?: Record<string, Record<string, unknown>>; \n vibepulse?: Record<string, unknown>;\n team_mode?: Record<string, unknown>;\n }\n );\n\n const safeResponse = stripSecretLikeFields(newConfig) as Record<string, unknown>;\n\n return NextResponse.json(\n {\n ...safeResponse,\n success: true,\n agents: safeResponse.agents,\n categories: safeResponse.categories,\n team_mode: safeResponse.team_mode,\n vibepulse: safeResponse.vibepulse,\n },\n { status: 200 }\n );\n} catch (error) {\n console.error('Error updating config:', error);\n return NextResponse.json(\n { error: 'Internal server error' },\n { status: 500 }\n );\n}\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"standalone\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/opencode-config/route\",\n pathname: \"/api/opencode-config\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/app/api/opencode-config/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/opencode-config/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n"],"names":[],"mappings":"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","ignoreList":[1]}
@@ -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