vibepulse 0.1.12 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +8 -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 +56 -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/app-paths-manifest.json +3 -0
  32. package/.next/server/app/api/node/events/route/build-manifest.json +11 -0
  33. package/.next/server/app/api/node/events/route/server-reference-manifest.json +4 -0
  34. package/.next/server/app/api/node/events/route.js +7 -0
  35. package/.next/server/app/api/node/events/route.js.map +5 -0
  36. package/.next/server/app/api/node/events/route.js.nft.json +1 -0
  37. package/.next/server/app/api/node/events/route_client-reference-manifest.js +2 -0
  38. package/.next/server/app/api/node/health/route/app-paths-manifest.json +3 -0
  39. package/.next/server/app/api/node/health/route/build-manifest.json +11 -0
  40. package/.next/server/app/api/node/health/route/server-reference-manifest.json +4 -0
  41. package/.next/server/app/api/node/health/route.js +6 -0
  42. package/.next/server/app/api/node/health/route.js.map +5 -0
  43. package/.next/server/app/api/node/health/route.js.nft.json +1 -0
  44. package/.next/server/app/api/node/health/route_client-reference-manifest.js +2 -0
  45. package/.next/server/app/api/node/sessions/[id]/archive/route/app-paths-manifest.json +3 -0
  46. package/.next/server/app/api/node/sessions/[id]/archive/route/build-manifest.json +11 -0
  47. package/.next/server/app/api/node/sessions/[id]/archive/route/server-reference-manifest.json +4 -0
  48. package/.next/server/app/api/node/sessions/[id]/archive/route.js +6 -0
  49. package/.next/server/app/api/node/sessions/[id]/archive/route.js.map +5 -0
  50. package/.next/server/app/api/node/sessions/[id]/archive/route.js.nft.json +1 -0
  51. package/.next/server/app/api/node/sessions/[id]/archive/route_client-reference-manifest.js +2 -0
  52. package/.next/server/app/api/node/sessions/[id]/delete/route/app-paths-manifest.json +3 -0
  53. package/.next/server/app/api/node/sessions/[id]/delete/route/build-manifest.json +11 -0
  54. package/.next/server/app/api/node/sessions/[id]/delete/route/server-reference-manifest.json +4 -0
  55. package/.next/server/app/api/node/sessions/[id]/delete/route.js +7 -0
  56. package/.next/server/app/api/node/sessions/[id]/delete/route.js.map +5 -0
  57. package/.next/server/app/api/node/sessions/[id]/delete/route.js.nft.json +1 -0
  58. package/.next/server/app/api/node/sessions/[id]/delete/route_client-reference-manifest.js +2 -0
  59. package/.next/server/app/api/node/sessions/[id]/open-editor/route/app-paths-manifest.json +3 -0
  60. package/.next/server/app/api/node/sessions/[id]/open-editor/route/build-manifest.json +11 -0
  61. package/.next/server/app/api/node/sessions/[id]/open-editor/route/server-reference-manifest.json +4 -0
  62. package/.next/server/app/api/node/sessions/[id]/open-editor/route.js +7 -0
  63. package/.next/server/app/api/node/sessions/[id]/open-editor/route.js.map +5 -0
  64. package/.next/server/app/api/node/sessions/[id]/open-editor/route.js.nft.json +1 -0
  65. package/.next/server/app/api/node/sessions/[id]/open-editor/route_client-reference-manifest.js +2 -0
  66. package/.next/server/app/api/node/sessions/route/app-paths-manifest.json +3 -0
  67. package/.next/server/app/api/node/sessions/route/build-manifest.json +11 -0
  68. package/.next/server/app/api/node/sessions/route/server-reference-manifest.json +4 -0
  69. package/.next/server/app/api/node/sessions/route.js +9 -0
  70. package/.next/server/app/api/node/sessions/route.js.map +5 -0
  71. package/.next/server/app/api/node/sessions/route.js.nft.json +1 -0
  72. package/.next/server/app/api/node/sessions/route_client-reference-manifest.js +2 -0
  73. package/.next/server/app/api/nodes/route/app-paths-manifest.json +3 -0
  74. package/.next/server/app/api/nodes/route/build-manifest.json +11 -0
  75. package/.next/server/app/api/nodes/route/server-reference-manifest.json +4 -0
  76. package/.next/server/app/api/nodes/route.js +8 -0
  77. package/.next/server/app/api/nodes/route.js.map +5 -0
  78. package/.next/server/app/api/nodes/route.js.nft.json +1 -0
  79. package/.next/server/app/api/nodes/route_client-reference-manifest.js +2 -0
  80. package/.next/server/app/api/opencode-config/route.js +1 -1
  81. package/.next/server/app/api/opencode-config/route.js.nft.json +1 -1
  82. package/.next/server/app/api/opencode-config/status/route.js +1 -1
  83. package/.next/server/app/api/opencode-config/status/route.js.nft.json +1 -1
  84. package/.next/server/app/api/opencode-events/route.js +4 -2
  85. package/.next/server/app/api/opencode-events/route.js.nft.json +1 -1
  86. package/.next/server/app/api/profiles/[id]/apply/route.js +1 -1
  87. package/.next/server/app/api/profiles/[id]/apply/route.js.nft.json +1 -1
  88. package/.next/server/app/api/profiles/[id]/export/route.js +2 -2
  89. package/.next/server/app/api/profiles/[id]/export/route.js.nft.json +1 -1
  90. package/.next/server/app/api/profiles/[id]/route.js +2 -2
  91. package/.next/server/app/api/profiles/[id]/route.js.nft.json +1 -1
  92. package/.next/server/app/api/profiles/import/route.js +2 -2
  93. package/.next/server/app/api/profiles/import/route.js.nft.json +1 -1
  94. package/.next/server/app/api/profiles/route.js +2 -2
  95. package/.next/server/app/api/profiles/route.js.nft.json +1 -1
  96. package/.next/server/app/api/sessions/[id]/archive/route.js +2 -1
  97. package/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
  98. package/.next/server/app/api/sessions/[id]/delete/route.js +3 -2
  99. package/.next/server/app/api/sessions/[id]/delete/route.js.nft.json +1 -1
  100. package/.next/server/app/api/sessions/[id]/open-editor/route/app-paths-manifest.json +3 -0
  101. package/.next/server/app/api/sessions/[id]/open-editor/route/build-manifest.json +11 -0
  102. package/.next/server/app/api/sessions/[id]/open-editor/route/server-reference-manifest.json +4 -0
  103. package/.next/server/app/api/sessions/[id]/open-editor/route.js +7 -0
  104. package/.next/server/app/api/sessions/[id]/open-editor/route.js.map +5 -0
  105. package/.next/server/app/api/sessions/[id]/open-editor/route.js.nft.json +1 -0
  106. package/.next/server/app/api/sessions/[id]/open-editor/route_client-reference-manifest.js +2 -0
  107. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  108. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  109. package/.next/server/app/api/sessions/route.js +3 -3
  110. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  111. package/.next/server/app/favicon.ico/route.js +1 -1
  112. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  113. package/.next/server/app/index.html +1 -1
  114. package/.next/server/app/index.rsc +3 -3
  115. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  116. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  117. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  119. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  120. package/.next/server/app/page.js +1 -1
  121. package/.next/server/app/page.js.nft.json +1 -1
  122. package/.next/server/app/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app-paths-manifest.json +8 -0
  124. package/.next/server/chunks/{[root-of-the-server]__172a07b6._.js → [externals]_next_dist_84e7390b._.js} +2 -2
  125. package/.next/server/chunks/[root-of-the-server]__1211da38._.js +3 -0
  126. package/.next/server/chunks/[root-of-the-server]__1211da38._.js.map +1 -0
  127. package/.next/server/chunks/[root-of-the-server]__192ed2f4._.js +3 -0
  128. package/.next/server/chunks/[root-of-the-server]__192ed2f4._.js.map +1 -0
  129. package/.next/server/chunks/[root-of-the-server]__1b87ec42._.js +3 -0
  130. package/.next/server/chunks/[root-of-the-server]__1b87ec42._.js.map +1 -0
  131. package/.next/server/chunks/[root-of-the-server]__2b526e7a._.js +3 -0
  132. package/.next/server/chunks/[root-of-the-server]__2b526e7a._.js.map +1 -0
  133. package/.next/server/chunks/[root-of-the-server]__2f981540._.js +3 -0
  134. package/.next/server/chunks/[root-of-the-server]__2f981540._.js.map +1 -0
  135. package/.next/server/chunks/[root-of-the-server]__3745b314._.js +3 -0
  136. package/.next/server/chunks/[root-of-the-server]__3745b314._.js.map +1 -0
  137. package/.next/server/chunks/[root-of-the-server]__56690af0._.js +3 -0
  138. package/.next/server/chunks/[root-of-the-server]__56690af0._.js.map +1 -0
  139. package/.next/server/chunks/[root-of-the-server]__56f5f249._.js +3 -0
  140. package/.next/server/chunks/[root-of-the-server]__56f5f249._.js.map +1 -0
  141. package/.next/server/chunks/[root-of-the-server]__59175de4._.js +3 -0
  142. package/.next/server/chunks/[root-of-the-server]__59175de4._.js.map +1 -0
  143. package/.next/server/chunks/[root-of-the-server]__64fffc02._.js +3 -0
  144. package/.next/server/chunks/[root-of-the-server]__64fffc02._.js.map +1 -0
  145. package/.next/server/chunks/[root-of-the-server]__6c428a24._.js +3 -0
  146. package/.next/server/chunks/[root-of-the-server]__6c428a24._.js.map +1 -0
  147. package/.next/server/chunks/[root-of-the-server]__73a00b88._.js +3 -0
  148. package/.next/server/chunks/[root-of-the-server]__73a00b88._.js.map +1 -0
  149. package/.next/server/chunks/[root-of-the-server]__7e757f50._.js +3 -0
  150. package/.next/server/chunks/[root-of-the-server]__7e757f50._.js.map +1 -0
  151. package/.next/server/chunks/[root-of-the-server]__89c5eeab._.js +3 -0
  152. package/.next/server/chunks/[root-of-the-server]__89c5eeab._.js.map +1 -0
  153. package/.next/server/chunks/[root-of-the-server]__8da6c5a8._.js +3 -0
  154. package/.next/server/chunks/[root-of-the-server]__8da6c5a8._.js.map +1 -0
  155. package/.next/server/chunks/[root-of-the-server]__b796d06c._.js +3 -0
  156. package/.next/server/chunks/[root-of-the-server]__b796d06c._.js.map +1 -0
  157. package/.next/server/chunks/[root-of-the-server]__c2ce5c0f._.js +3 -0
  158. package/.next/server/chunks/[root-of-the-server]__c2ce5c0f._.js.map +1 -0
  159. package/.next/server/chunks/[root-of-the-server]__d8e61048._.js +3 -0
  160. package/.next/server/chunks/[root-of-the-server]__d8e61048._.js.map +1 -0
  161. package/.next/server/chunks/[root-of-the-server]__db285678._.js +3 -0
  162. package/.next/server/chunks/[root-of-the-server]__db285678._.js.map +1 -0
  163. package/.next/server/chunks/[root-of-the-server]__e00a9200._.js +5 -0
  164. package/.next/server/chunks/[root-of-the-server]__e00a9200._.js.map +1 -0
  165. package/.next/server/chunks/[root-of-the-server]__e5df5e5f._.js +3 -0
  166. package/.next/server/chunks/[root-of-the-server]__e5df5e5f._.js.map +1 -0
  167. package/.next/server/chunks/_next-internal_server_app_api_node_events_route_actions_f1abd32d.js +3 -0
  168. package/.next/server/chunks/_next-internal_server_app_api_node_events_route_actions_f1abd32d.js.map +1 -0
  169. package/.next/server/chunks/_next-internal_server_app_api_node_health_route_actions_c4c4c077.js +3 -0
  170. package/.next/server/chunks/_next-internal_server_app_api_node_health_route_actions_c4c4c077.js.map +1 -0
  171. package/.next/server/chunks/_next-internal_server_app_api_node_sessions_[id]_archive_route_actions_237255a5.js +3 -0
  172. package/.next/server/chunks/_next-internal_server_app_api_node_sessions_[id]_archive_route_actions_237255a5.js.map +1 -0
  173. package/.next/server/chunks/_next-internal_server_app_api_node_sessions_[id]_delete_route_actions_e5d426f6.js +3 -0
  174. package/.next/server/chunks/_next-internal_server_app_api_node_sessions_[id]_delete_route_actions_e5d426f6.js.map +1 -0
  175. package/.next/server/chunks/_next-internal_server_app_api_node_sessions_route_actions_6b564c5a.js +3 -0
  176. package/.next/server/chunks/_next-internal_server_app_api_node_sessions_route_actions_6b564c5a.js.map +1 -0
  177. package/.next/server/chunks/_next-internal_server_app_api_nodes_route_actions_3e496ee8.js +3 -0
  178. package/.next/server/chunks/_next-internal_server_app_api_nodes_route_actions_3e496ee8.js.map +1 -0
  179. package/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_open-editor_route_actions_eaebf476.js +3 -0
  180. package/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_open-editor_route_actions_eaebf476.js.map +1 -0
  181. package/.next/server/chunks/ce889_server_app_api_node_sessions_[id]_open-editor_route_actions_791cdf5b.js +3 -0
  182. package/.next/server/chunks/ce889_server_app_api_node_sessions_[id]_open-editor_route_actions_791cdf5b.js.map +1 -0
  183. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7e181e75.js +1 -1
  184. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7e181e75.js.map +1 -1
  185. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_aca45402.js +3 -0
  186. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_aca45402.js.map +1 -0
  187. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b054aff3.js +1 -1
  188. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b054aff3.js.map +1 -1
  189. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js +5 -0
  190. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js.map +1 -0
  191. package/.next/{standalone/.next/server/chunks/ssr/[root-of-the-server]__39eef6a5._.js → server/chunks/ssr/[root-of-the-server]__631e12d0._.js} +2 -2
  192. package/.next/{standalone/.next/server/chunks/ssr/[root-of-the-server]__535a2208._.js → server/chunks/ssr/[root-of-the-server]__a8cd3911._.js} +2 -2
  193. package/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js +3 -3
  194. package/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js.map +1 -1
  195. package/.next/server/pages/404.html +1 -1
  196. package/.next/server/pages/500.html +2 -2
  197. package/.next/server/server-reference-manifest.js +1 -1
  198. package/.next/server/server-reference-manifest.json +1 -1
  199. package/.next/standalone/.next/BUILD_ID +1 -1
  200. package/.next/standalone/.next/app-path-routes-manifest.json +8 -0
  201. package/.next/standalone/.next/build-manifest.json +2 -2
  202. package/.next/standalone/.next/prerender-manifest.json +3 -3
  203. package/.next/standalone/.next/routes-manifest.json +56 -0
  204. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  205. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  206. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  207. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  208. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  209. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  210. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  211. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  212. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  213. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  214. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  215. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  216. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  217. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  218. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  219. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  220. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  221. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  222. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  223. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  224. package/.next/standalone/.next/server/app/api/node/events/route/app-paths-manifest.json +3 -0
  225. package/.next/standalone/.next/server/app/api/node/events/route/build-manifest.json +11 -0
  226. package/.next/standalone/.next/server/app/api/node/events/route/server-reference-manifest.json +4 -0
  227. package/.next/standalone/.next/server/app/api/node/events/route.js +7 -0
  228. package/.next/standalone/.next/server/app/api/node/events/route.js.map +5 -0
  229. package/.next/standalone/.next/server/app/api/node/events/route.js.nft.json +1 -0
  230. package/.next/standalone/.next/server/app/api/node/events/route_client-reference-manifest.js +2 -0
  231. package/.next/standalone/.next/server/app/api/node/health/route/app-paths-manifest.json +3 -0
  232. package/.next/standalone/.next/server/app/api/node/health/route/build-manifest.json +11 -0
  233. package/.next/standalone/.next/server/app/api/node/health/route/server-reference-manifest.json +4 -0
  234. package/.next/standalone/.next/server/app/api/node/health/route.js +6 -0
  235. package/.next/standalone/.next/server/app/api/node/health/route.js.map +5 -0
  236. package/.next/standalone/.next/server/app/api/node/health/route.js.nft.json +1 -0
  237. package/.next/standalone/.next/server/app/api/node/health/route_client-reference-manifest.js +2 -0
  238. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route/app-paths-manifest.json +3 -0
  239. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route/build-manifest.json +11 -0
  240. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route/server-reference-manifest.json +4 -0
  241. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route.js +6 -0
  242. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route.js.map +5 -0
  243. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route.js.nft.json +1 -0
  244. package/.next/standalone/.next/server/app/api/node/sessions/[id]/archive/route_client-reference-manifest.js +2 -0
  245. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route/app-paths-manifest.json +3 -0
  246. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route/build-manifest.json +11 -0
  247. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route/server-reference-manifest.json +4 -0
  248. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route.js +7 -0
  249. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route.js.map +5 -0
  250. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route.js.nft.json +1 -0
  251. package/.next/standalone/.next/server/app/api/node/sessions/[id]/delete/route_client-reference-manifest.js +2 -0
  252. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route/app-paths-manifest.json +3 -0
  253. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route/build-manifest.json +11 -0
  254. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route/server-reference-manifest.json +4 -0
  255. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route.js +7 -0
  256. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route.js.map +5 -0
  257. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route.js.nft.json +1 -0
  258. package/.next/standalone/.next/server/app/api/node/sessions/[id]/open-editor/route_client-reference-manifest.js +2 -0
  259. package/.next/standalone/.next/server/app/api/node/sessions/route/app-paths-manifest.json +3 -0
  260. package/.next/standalone/.next/server/app/api/node/sessions/route/build-manifest.json +11 -0
  261. package/.next/standalone/.next/server/app/api/node/sessions/route/server-reference-manifest.json +4 -0
  262. package/.next/standalone/.next/server/app/api/node/sessions/route.js +9 -0
  263. package/.next/standalone/.next/server/app/api/node/sessions/route.js.map +5 -0
  264. package/.next/standalone/.next/server/app/api/node/sessions/route.js.nft.json +1 -0
  265. package/.next/standalone/.next/server/app/api/node/sessions/route_client-reference-manifest.js +2 -0
  266. package/.next/standalone/.next/server/app/api/nodes/route/app-paths-manifest.json +3 -0
  267. package/.next/standalone/.next/server/app/api/nodes/route/build-manifest.json +11 -0
  268. package/.next/standalone/.next/server/app/api/nodes/route/server-reference-manifest.json +4 -0
  269. package/.next/standalone/.next/server/app/api/nodes/route.js +8 -0
  270. package/.next/standalone/.next/server/app/api/nodes/route.js.map +5 -0
  271. package/.next/standalone/.next/server/app/api/nodes/route.js.nft.json +1 -0
  272. package/.next/standalone/.next/server/app/api/nodes/route_client-reference-manifest.js +2 -0
  273. package/.next/standalone/.next/server/app/api/opencode-config/route.js +1 -1
  274. package/.next/standalone/.next/server/app/api/opencode-config/route.js.nft.json +1 -1
  275. package/.next/standalone/.next/server/app/api/opencode-config/status/route.js +1 -1
  276. package/.next/standalone/.next/server/app/api/opencode-config/status/route.js.nft.json +1 -1
  277. package/.next/standalone/.next/server/app/api/opencode-events/route.js +4 -2
  278. package/.next/standalone/.next/server/app/api/opencode-events/route.js.nft.json +1 -1
  279. package/.next/standalone/.next/server/app/api/profiles/[id]/apply/route.js +1 -1
  280. package/.next/standalone/.next/server/app/api/profiles/[id]/apply/route.js.nft.json +1 -1
  281. package/.next/standalone/.next/server/app/api/profiles/[id]/export/route.js +2 -2
  282. package/.next/standalone/.next/server/app/api/profiles/[id]/export/route.js.nft.json +1 -1
  283. package/.next/standalone/.next/server/app/api/profiles/[id]/route.js +2 -2
  284. package/.next/standalone/.next/server/app/api/profiles/[id]/route.js.nft.json +1 -1
  285. package/.next/standalone/.next/server/app/api/profiles/import/route.js +2 -2
  286. package/.next/standalone/.next/server/app/api/profiles/import/route.js.nft.json +1 -1
  287. package/.next/standalone/.next/server/app/api/profiles/route.js +2 -2
  288. package/.next/standalone/.next/server/app/api/profiles/route.js.nft.json +1 -1
  289. package/.next/standalone/.next/server/app/api/sessions/[id]/archive/route.js +2 -1
  290. package/.next/standalone/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
  291. package/.next/standalone/.next/server/app/api/sessions/[id]/delete/route.js +3 -2
  292. package/.next/standalone/.next/server/app/api/sessions/[id]/delete/route.js.nft.json +1 -1
  293. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route/app-paths-manifest.json +3 -0
  294. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route/build-manifest.json +11 -0
  295. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route/server-reference-manifest.json +4 -0
  296. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route.js +7 -0
  297. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route.js.map +5 -0
  298. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route.js.nft.json +1 -0
  299. package/.next/standalone/.next/server/app/api/sessions/[id]/open-editor/route_client-reference-manifest.js +2 -0
  300. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js +1 -1
  301. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  302. package/.next/standalone/.next/server/app/api/sessions/route.js +3 -3
  303. package/.next/standalone/.next/server/app/api/sessions/route.js.nft.json +1 -1
  304. package/.next/standalone/.next/server/app/favicon.ico/route.js +1 -1
  305. package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  306. package/.next/standalone/.next/server/app/index.html +1 -1
  307. package/.next/standalone/.next/server/app/index.rsc +3 -3
  308. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  309. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  310. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  311. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  312. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  313. package/.next/standalone/.next/server/app/page.js +1 -1
  314. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  315. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  316. package/.next/standalone/.next/server/app-paths-manifest.json +8 -0
  317. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__172a07b6._.js → [externals]_next_dist_84e7390b._.js} +2 -2
  318. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1211da38._.js +3 -0
  319. package/.next/standalone/.next/server/chunks/[root-of-the-server]__192ed2f4._.js +3 -0
  320. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1b87ec42._.js +3 -0
  321. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2b526e7a._.js +3 -0
  322. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2f981540._.js +3 -0
  323. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3745b314._.js +3 -0
  324. package/.next/standalone/.next/server/chunks/[root-of-the-server]__56690af0._.js +3 -0
  325. package/.next/standalone/.next/server/chunks/[root-of-the-server]__56f5f249._.js +3 -0
  326. package/.next/standalone/.next/server/chunks/[root-of-the-server]__59175de4._.js +3 -0
  327. package/.next/standalone/.next/server/chunks/[root-of-the-server]__64fffc02._.js +3 -0
  328. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6c428a24._.js +3 -0
  329. package/.next/standalone/.next/server/chunks/[root-of-the-server]__73a00b88._.js +3 -0
  330. package/.next/standalone/.next/server/chunks/[root-of-the-server]__7e757f50._.js +3 -0
  331. package/.next/standalone/.next/server/chunks/[root-of-the-server]__89c5eeab._.js +3 -0
  332. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8da6c5a8._.js +3 -0
  333. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b796d06c._.js +3 -0
  334. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c2ce5c0f._.js +3 -0
  335. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8e61048._.js +3 -0
  336. package/.next/standalone/.next/server/chunks/[root-of-the-server]__db285678._.js +3 -0
  337. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e00a9200._.js +5 -0
  338. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e5df5e5f._.js +3 -0
  339. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_node_events_route_actions_f1abd32d.js +3 -0
  340. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_node_health_route_actions_c4c4c077.js +3 -0
  341. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_node_sessions_[id]_archive_route_actions_237255a5.js +3 -0
  342. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_node_sessions_[id]_delete_route_actions_e5d426f6.js +3 -0
  343. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_node_sessions_route_actions_6b564c5a.js +3 -0
  344. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_nodes_route_actions_3e496ee8.js +3 -0
  345. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_open-editor_route_actions_eaebf476.js +3 -0
  346. package/.next/standalone/.next/server/chunks/ce889_server_app_api_node_sessions_[id]_open-editor_route_actions_791cdf5b.js +3 -0
  347. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7e181e75.js +1 -1
  348. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_aca45402.js +3 -0
  349. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b054aff3.js +1 -1
  350. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_fa835ac3.js +5 -0
  351. package/.next/{server/chunks/ssr/[root-of-the-server]__39eef6a5._.js → standalone/.next/server/chunks/ssr/[root-of-the-server]__631e12d0._.js} +2 -2
  352. package/.next/{server/chunks/ssr/[root-of-the-server]__535a2208._.js → standalone/.next/server/chunks/ssr/[root-of-the-server]__a8cd3911._.js} +2 -2
  353. package/.next/standalone/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js +3 -3
  354. package/.next/standalone/.next/server/pages/404.html +1 -1
  355. package/.next/standalone/.next/server/pages/500.html +2 -2
  356. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  357. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  358. package/.next/standalone/.next/static/chunks/7ac19aaef01f4a03.js +13 -0
  359. package/.next/standalone/.next/static/chunks/f42202943f6742e5.css +3 -0
  360. package/.next/standalone/AGENTS.md +85 -0
  361. package/.next/standalone/README.md +76 -0
  362. package/.next/standalone/__mocks__/child_process.ts +4 -0
  363. package/.next/standalone/bin/dev-runtime.js +58 -0
  364. package/.next/standalone/bin/vibepulse.js +87 -0
  365. package/.next/standalone/check-hsql.mjs +71 -0
  366. package/.next/standalone/docs/session-status-detection.md +258 -0
  367. package/.next/standalone/eslint.config.mjs +31 -0
  368. package/.next/standalone/next.config.ts +8 -0
  369. package/.next/standalone/package-lock.json +10312 -0
  370. package/.next/standalone/package.json +4 -2
  371. package/.next/standalone/postcss.config.mjs +7 -0
  372. package/.next/standalone/public/readme-cover.png +0 -0
  373. package/.next/standalone/src/AGENTS.md +41 -0
  374. package/.next/standalone/src/app/api/AGENTS.md +40 -0
  375. package/.next/standalone/src/app/api/node/events/route.test.ts +196 -0
  376. package/.next/standalone/src/app/api/node/events/route.ts +259 -0
  377. package/.next/standalone/src/app/api/node/health/route.test.ts +190 -0
  378. package/.next/standalone/src/app/api/node/health/route.ts +48 -0
  379. package/.next/standalone/src/app/api/node/sessions/[id]/archive/route.test.ts +128 -0
  380. package/.next/standalone/src/app/api/node/sessions/[id]/archive/route.ts +97 -0
  381. package/.next/standalone/src/app/api/node/sessions/[id]/delete/route.test.ts +113 -0
  382. package/.next/standalone/src/app/api/node/sessions/[id]/delete/route.ts +81 -0
  383. package/.next/standalone/src/app/api/node/sessions/[id]/open-editor/route.test.ts +206 -0
  384. package/.next/standalone/src/app/api/node/sessions/[id]/open-editor/route.ts +123 -0
  385. package/.next/standalone/src/app/api/node/sessions/route.test.ts +408 -0
  386. package/.next/standalone/src/app/api/node/sessions/route.ts +1094 -0
  387. package/.next/standalone/src/app/api/nodes/route.test.ts +237 -0
  388. package/.next/standalone/src/app/api/nodes/route.ts +176 -0
  389. package/.next/standalone/src/app/api/opencode-config/route.test.ts +86 -0
  390. package/.next/standalone/src/app/api/opencode-config/route.ts +376 -0
  391. package/.next/standalone/src/app/api/opencode-config/status/route.ts +31 -0
  392. package/.next/standalone/src/app/api/opencode-events/route.test.ts +624 -0
  393. package/.next/standalone/src/app/api/opencode-events/route.ts +508 -0
  394. package/.next/standalone/src/app/api/opencode-models/route.test.ts +167 -0
  395. package/.next/standalone/src/app/api/opencode-models/route.ts +76 -0
  396. package/.next/standalone/src/app/api/profiles/[id]/apply/route.ts +49 -0
  397. package/.next/standalone/src/app/api/profiles/[id]/export/route.ts +31 -0
  398. package/.next/standalone/src/app/api/profiles/[id]/route.ts +160 -0
  399. package/.next/standalone/src/app/api/profiles/import/route.test.js +107 -0
  400. package/.next/standalone/src/app/api/profiles/import/route.ts +65 -0
  401. package/.next/standalone/src/app/api/profiles/route.ts +107 -0
  402. package/.next/standalone/src/app/api/sessions/[id]/archive/route.test.ts +136 -0
  403. package/.next/standalone/src/app/api/sessions/[id]/archive/route.ts +170 -0
  404. package/.next/standalone/src/app/api/sessions/[id]/delete/route.test.ts +113 -0
  405. package/.next/standalone/src/app/api/sessions/[id]/delete/route.ts +137 -0
  406. package/.next/standalone/src/app/api/sessions/[id]/open-editor/route.test.ts +218 -0
  407. package/.next/standalone/src/app/api/sessions/[id]/open-editor/route.ts +85 -0
  408. package/.next/standalone/src/app/api/sessions/[id]/route.test.ts +531 -0
  409. package/.next/standalone/src/app/api/sessions/[id]/route.ts +75 -0
  410. package/.next/standalone/src/app/api/sessions/route.test.ts +1298 -0
  411. package/.next/standalone/src/app/api/sessions/route.ts +1695 -0
  412. package/.next/standalone/src/app/favicon.ico +0 -0
  413. package/.next/standalone/src/app/globals.css +66 -0
  414. package/.next/standalone/src/app/layout.tsx +37 -0
  415. package/.next/standalone/src/app/page.test.tsx +134 -0
  416. package/.next/standalone/src/app/page.tsx +358 -0
  417. package/.next/standalone/src/components/AGENTS.md +42 -0
  418. package/.next/standalone/src/components/ErrorBoundary.tsx +72 -0
  419. package/.next/standalone/src/components/KanbanBoard.test.tsx +704 -0
  420. package/.next/standalone/src/components/KanbanBoard.tsx +852 -0
  421. package/.next/standalone/src/components/LoadingState.tsx +37 -0
  422. package/.next/standalone/src/components/ProjectCard.test.tsx +773 -0
  423. package/.next/standalone/src/components/ProjectCard.tsx +595 -0
  424. package/.next/standalone/src/components/QueryProvider.tsx +25 -0
  425. package/.next/standalone/src/components/SessionCard.test.tsx +566 -0
  426. package/.next/standalone/src/components/SessionCard.tsx +434 -0
  427. package/.next/standalone/src/components/SessionList.tsx +60 -0
  428. package/.next/standalone/src/components/host-config/HostManagerDialog.test.tsx +252 -0
  429. package/.next/standalone/src/components/host-config/HostManagerDialog.tsx +476 -0
  430. package/.next/standalone/src/components/opencode-config/AgentConfigForm.test.tsx +72 -0
  431. package/.next/standalone/src/components/opencode-config/AgentConfigForm.tsx +483 -0
  432. package/.next/standalone/src/components/opencode-config/AgentModelSelector.tsx +284 -0
  433. package/.next/standalone/src/components/opencode-config/AgentsConfigPanel.tsx +162 -0
  434. package/.next/standalone/src/components/opencode-config/ConfigButton.tsx +43 -0
  435. package/.next/standalone/src/components/opencode-config/ConfigPanel.tsx +91 -0
  436. package/.next/standalone/src/components/opencode-config/FullscreenConfigPanel.tsx +435 -0
  437. package/.next/standalone/src/components/opencode-config/GeneralSettingsForm.test.tsx +91 -0
  438. package/.next/standalone/src/components/opencode-config/GeneralSettingsForm.tsx +288 -0
  439. package/.next/standalone/src/components/opencode-config/categories/CategoriesList.tsx +382 -0
  440. package/.next/standalone/src/components/opencode-config/categories/CategoriesManager.test.tsx +111 -0
  441. package/.next/standalone/src/components/opencode-config/categories/CategoriesManager.tsx +174 -0
  442. package/.next/standalone/src/components/opencode-config/categories/CategoryConfigForm.tsx +453 -0
  443. package/.next/standalone/src/components/opencode-config/profiles/ProfileCard.tsx +140 -0
  444. package/.next/standalone/src/components/opencode-config/profiles/ProfileEditor.tsx +446 -0
  445. package/.next/standalone/src/components/opencode-config/profiles/ProfileList.tsx +446 -0
  446. package/.next/standalone/src/components/opencode-config/profiles/ProfileManager.test.tsx +225 -0
  447. package/.next/standalone/src/components/opencode-config/profiles/ProfileManager.tsx +405 -0
  448. package/.next/standalone/src/components/ui/Tabs.tsx +59 -0
  449. package/.next/standalone/src/hooks/useHostSources.test.ts +509 -0
  450. package/.next/standalone/src/hooks/useHostSources.ts +299 -0
  451. package/.next/standalone/src/hooks/useOpencodeSync.test.ts +387 -0
  452. package/.next/standalone/src/hooks/useOpencodeSync.ts +571 -0
  453. package/.next/standalone/src/index.ts +2 -0
  454. package/.next/standalone/src/lib/editorLauncher.server.ts +36 -0
  455. package/.next/standalone/src/lib/editorLauncher.test.ts +35 -0
  456. package/.next/standalone/src/lib/editorLauncher.ts +25 -0
  457. package/.next/standalone/src/lib/hostAccent.test.ts +58 -0
  458. package/.next/standalone/src/lib/hostAccent.ts +46 -0
  459. package/.next/standalone/src/lib/hostIdentity.test.ts +187 -0
  460. package/.next/standalone/src/lib/hostIdentity.ts +122 -0
  461. package/.next/standalone/src/lib/hostSourcesStorage.test.ts +141 -0
  462. package/.next/standalone/src/lib/hostSourcesStorage.ts +72 -0
  463. package/.next/standalone/src/lib/nodeProtocol.test.ts +159 -0
  464. package/.next/standalone/src/lib/nodeProtocol.ts +142 -0
  465. package/.next/standalone/src/lib/nodeRegistry.test.ts +173 -0
  466. package/.next/standalone/src/lib/nodeRegistry.ts +398 -0
  467. package/.next/standalone/src/lib/notificationSound.ts +292 -0
  468. package/.next/standalone/src/lib/opencodeConfig.test.ts +100 -0
  469. package/.next/standalone/src/lib/opencodeConfig.ts +76 -0
  470. package/.next/standalone/src/lib/opencodeDiscovery.ts +275 -0
  471. package/.next/standalone/src/lib/profiles/share.test.ts +91 -0
  472. package/.next/standalone/src/lib/profiles/share.ts +93 -0
  473. package/.next/standalone/src/lib/profiles/storage.test.ts +108 -0
  474. package/.next/standalone/src/lib/profiles/storage.ts +370 -0
  475. package/.next/standalone/src/lib/runtimeMode.test.ts +29 -0
  476. package/.next/standalone/src/lib/runtimeMode.ts +29 -0
  477. package/.next/standalone/src/lib/sessionActionErrors.ts +37 -0
  478. package/.next/standalone/src/lib/sessionArchiveOverrides.test.ts +43 -0
  479. package/.next/standalone/src/lib/sessionArchiveOverrides.ts +116 -0
  480. package/.next/standalone/src/lib/transform.test.ts +121 -0
  481. package/.next/standalone/src/lib/transform.ts +193 -0
  482. package/.next/standalone/src/test/setup.ts +8 -0
  483. package/.next/standalone/src/types/index.ts +152 -0
  484. package/.next/standalone/src/types/opencodeConfig.ts +149 -0
  485. package/.next/standalone/tsconfig.json +34 -0
  486. package/.next/standalone/tsconfig.lib.json +17 -0
  487. package/.next/standalone/vitest.config.ts +16 -0
  488. package/.next/static/chunks/7ac19aaef01f4a03.js +13 -0
  489. package/.next/static/chunks/f42202943f6742e5.css +3 -0
  490. package/.next/trace +1 -1
  491. package/.next/trace-build +1 -1
  492. package/.next/types/routes.d.ts +9 -1
  493. package/.next/types/validator.ts +72 -0
  494. package/README.md +28 -11
  495. package/bin/dev-runtime.js +58 -0
  496. package/bin/vibepulse.js +72 -39
  497. package/package.json +4 -2
  498. package/public/readme-cover.png +0 -0
  499. package/.next/server/chunks/[externals]_next_dist_16542d6b._.js +0 -3
  500. package/.next/server/chunks/[root-of-the-server]__07488412._.js +0 -3
  501. package/.next/server/chunks/[root-of-the-server]__07488412._.js.map +0 -1
  502. package/.next/server/chunks/[root-of-the-server]__07649a30._.js +0 -3
  503. package/.next/server/chunks/[root-of-the-server]__07649a30._.js.map +0 -1
  504. package/.next/server/chunks/[root-of-the-server]__172a07b6._.js.map +0 -1
  505. package/.next/server/chunks/[root-of-the-server]__1bf88ae0._.js +0 -3
  506. package/.next/server/chunks/[root-of-the-server]__1bf88ae0._.js.map +0 -1
  507. package/.next/server/chunks/[root-of-the-server]__2c3e3de2._.js +0 -3
  508. package/.next/server/chunks/[root-of-the-server]__2c3e3de2._.js.map +0 -1
  509. package/.next/server/chunks/[root-of-the-server]__560e7c61._.js +0 -3
  510. package/.next/server/chunks/[root-of-the-server]__560e7c61._.js.map +0 -1
  511. package/.next/server/chunks/[root-of-the-server]__9f034d03._.js +0 -5
  512. package/.next/server/chunks/[root-of-the-server]__9f034d03._.js.map +0 -1
  513. package/.next/server/chunks/[root-of-the-server]__a84faf4b._.js +0 -3
  514. package/.next/server/chunks/[root-of-the-server]__a84faf4b._.js.map +0 -1
  515. package/.next/server/chunks/[root-of-the-server]__b92251ea._.js +0 -3
  516. package/.next/server/chunks/[root-of-the-server]__b92251ea._.js.map +0 -1
  517. package/.next/server/chunks/[root-of-the-server]__e7a766a0._.js +0 -3
  518. package/.next/server/chunks/[root-of-the-server]__e7a766a0._.js.map +0 -1
  519. package/.next/server/chunks/[root-of-the-server]__f234882e._.js +0 -3
  520. package/.next/server/chunks/[root-of-the-server]__f234882e._.js.map +0 -1
  521. package/.next/server/chunks/[root-of-the-server]__f85221b8._.js +0 -3
  522. package/.next/server/chunks/[root-of-the-server]__f85221b8._.js.map +0 -1
  523. package/.next/standalone/.next/server/chunks/[externals]_next_dist_16542d6b._.js +0 -3
  524. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07488412._.js +0 -3
  525. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07649a30._.js +0 -3
  526. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bf88ae0._.js +0 -3
  527. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2c3e3de2._.js +0 -3
  528. package/.next/standalone/.next/server/chunks/[root-of-the-server]__560e7c61._.js +0 -3
  529. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9f034d03._.js +0 -5
  530. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a84faf4b._.js +0 -3
  531. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b92251ea._.js +0 -3
  532. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e7a766a0._.js +0 -3
  533. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f234882e._.js +0 -3
  534. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f85221b8._.js +0 -3
  535. package/.next/standalone/.next/static/chunks/ca49cb2092c277d2.js +0 -13
  536. package/.next/standalone/.next/static/chunks/dc07499869593595.css +0 -3
  537. package/.next/static/chunks/ca49cb2092c277d2.js +0 -13
  538. package/.next/static/chunks/dc07499869593595.css +0 -3
  539. /package/.next/server/chunks/{[externals]_next_dist_16542d6b._.js.map → [externals]_next_dist_84e7390b._.js.map} +0 -0
  540. /package/.next/server/chunks/ssr/{[root-of-the-server]__39eef6a5._.js.map → [root-of-the-server]__631e12d0._.js.map} +0 -0
  541. /package/.next/server/chunks/ssr/{[root-of-the-server]__535a2208._.js.map → [root-of-the-server]__a8cd3911._.js.map} +0 -0
  542. /package/.next/standalone/.next/static/{78EwnRx2m70qyfCL0X4sH → Fw2R3y-fHX4B2SWxNy_4X}/_buildManifest.js +0 -0
  543. /package/.next/standalone/.next/static/{78EwnRx2m70qyfCL0X4sH → Fw2R3y-fHX4B2SWxNy_4X}/_clientMiddlewareManifest.json +0 -0
  544. /package/.next/standalone/.next/static/{78EwnRx2m70qyfCL0X4sH → Fw2R3y-fHX4B2SWxNy_4X}/_ssgManifest.js +0 -0
  545. /package/.next/static/{78EwnRx2m70qyfCL0X4sH → Fw2R3y-fHX4B2SWxNy_4X}/_buildManifest.js +0 -0
  546. /package/.next/static/{78EwnRx2m70qyfCL0X4sH → Fw2R3y-fHX4B2SWxNy_4X}/_clientMiddlewareManifest.json +0 -0
  547. /package/.next/static/{78EwnRx2m70qyfCL0X4sH → Fw2R3y-fHX4B2SWxNy_4X}/_ssgManifest.js +0 -0
@@ -0,0 +1,434 @@
1
+ 'use client';
2
+
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { useQuery, useQueryClient } from '@tanstack/react-query';
5
+
6
+ import { KanbanCard } from '@/types';
7
+ import { buildEditorUri } from '@/lib/editorLauncher';
8
+ import { mapSessionActionError } from '@/lib/sessionActionErrors';
9
+
10
+ interface ConfigResponse {
11
+ vibepulse?: {
12
+ openEditorTargetMode?: 'remote' | 'hub';
13
+ };
14
+ }
15
+
16
+ interface SessionCardProps {
17
+ card: KanbanCard;
18
+ }
19
+
20
+ function formatRelativeTime(timestamp: number): string {
21
+ const diffMs = Date.now() - timestamp;
22
+ const diffMins = Math.floor(diffMs / (1000 * 60));
23
+ const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
24
+ const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
25
+
26
+ if (diffMins < 1) return '<1m ago';
27
+ if (diffHours < 1) return `${diffMins}m ago`;
28
+ if (diffDays < 1) return `${diffHours}h ago`;
29
+ return `${diffDays}d ago`;
30
+ }
31
+
32
+ // Status indicator component
33
+ function StatusIndicator({ status, waitingForUser }: { status: string; waitingForUser: boolean }) {
34
+ if (waitingForUser) {
35
+ return (
36
+ <div className="flex items-center gap-1.5 text-amber-600 dark:text-amber-400">
37
+ <span className="relative flex h-2.5 w-2.5">
38
+ <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75"></span>
39
+ <span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-amber-500"></span>
40
+ </span>
41
+ <span className="text-xs font-medium">Waiting</span>
42
+ </div>
43
+ );
44
+ }
45
+ switch (status) {
46
+ case 'busy':
47
+ return (
48
+ <div className="flex items-center gap-1.5 text-emerald-600 dark:text-emerald-400">
49
+ <span className="relative flex h-2.5 w-2.5">
50
+ <span className="animate-pulse absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75"></span>
51
+ <span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-emerald-500"></span>
52
+ </span>
53
+ <span className="text-xs font-medium">Running</span>
54
+ </div>
55
+ );
56
+ case 'retry':
57
+ return (
58
+ <div className="flex items-center gap-1.5 text-red-600 dark:text-red-400">
59
+ <span className="relative flex h-2.5 w-2.5">
60
+ <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75"></span>
61
+ <span className="relative inline-flex rounded-full h-2.5 w-2.5 bg-red-500"></span>
62
+ </span>
63
+ <span className="text-xs font-medium">Retrying</span>
64
+ </div>
65
+ );
66
+ case 'idle':
67
+ default:
68
+ return (
69
+ <div className="flex items-center gap-1.5 text-gray-500 dark:text-gray-400">
70
+ <span className="inline-flex rounded-full h-2.5 w-2.5 bg-gray-400"></span>
71
+ <span className="text-xs font-medium">Idle</span>
72
+ </div>
73
+ );
74
+ }
75
+ }
76
+
77
+ export function SessionCard({ card }: SessionCardProps) {
78
+ const queryClient = useQueryClient();
79
+ const [openTool, setOpenTool] = useState('vscode');
80
+ const [remoteSshHost, setRemoteSshHost] = useState('');
81
+ const [actionOpen, setActionOpen] = useState(false);
82
+ const [actionError, setActionError] = useState<string | null>(null);
83
+ const [pendingAction, setPendingAction] = useState<'open' | 'archive' | 'delete' | null>(null);
84
+ const actionMenuRef = useRef<HTMLDivElement>(null);
85
+ const { data: config, isLoading: isConfigLoading, isError: isConfigError } = useQuery<ConfigResponse>({
86
+ queryKey: ['opencode-config'],
87
+ queryFn: async () => {
88
+ const response = await fetch('/api/opencode-config');
89
+ if (!response.ok) {
90
+ throw new Error('Failed to load config');
91
+ }
92
+
93
+ return response.json();
94
+ },
95
+ staleTime: 30_000,
96
+ });
97
+ const lastActiveLabel = `Last active: ${formatRelativeTime(card.updatedAt)}`;
98
+ const startedLabel = `Started: ${formatRelativeTime(card.createdAt)}`;
99
+ const todoProgress = card.todosTotal > 0
100
+ ? Math.round((card.todosCompleted / card.todosTotal) * 100)
101
+ : 0;
102
+ const openEditorTargetMode = config?.vibepulse?.openEditorTargetMode;
103
+ const isRemoteCard = card.hostId !== undefined && card.hostId !== 'local';
104
+ const isConfigPendingForRemoteOpen = isRemoteCard && isConfigLoading && !config;
105
+ const isConfigUnavailableForRemoteOpen = isRemoteCard && !config && !isConfigLoading;
106
+ const isActionPending = pendingAction !== null;
107
+ const pendingActionLabel = pendingAction === 'open'
108
+ ? 'Opening…'
109
+ : pendingAction === 'archive'
110
+ ? 'Archiving…'
111
+ : pendingAction === 'delete'
112
+ ? 'Deleting…'
113
+ : null;
114
+
115
+ useEffect(() => {
116
+ const storedTool = window.localStorage.getItem('vibepulse:open-tool');
117
+ if (storedTool) {
118
+ setOpenTool(storedTool);
119
+ }
120
+
121
+ const storedHost = window.localStorage.getItem('vibepulse:ssh-host');
122
+ if (storedHost) {
123
+ setRemoteSshHost(storedHost);
124
+ return;
125
+ }
126
+
127
+ const hostFromBaseUrl = (() => {
128
+ if (!card.hostBaseUrl || !isRemoteCard) {
129
+ return '';
130
+ }
131
+
132
+ try {
133
+ return new URL(card.hostBaseUrl).hostname;
134
+ } catch {
135
+ return '';
136
+ }
137
+ })();
138
+
139
+ if (hostFromBaseUrl) {
140
+ setRemoteSshHost(hostFromBaseUrl);
141
+ return;
142
+ }
143
+
144
+ const hostname = window.location.hostname;
145
+ if (hostname && hostname !== 'localhost' && hostname !== '127.0.0.1') {
146
+ setRemoteSshHost(hostname);
147
+ window.localStorage.setItem('vibepulse:ssh-host', hostname);
148
+ }
149
+ }, [card.hostBaseUrl, isRemoteCard]);
150
+
151
+ // Close dropdown on outside click
152
+ useEffect(() => {
153
+ if (!actionOpen) return;
154
+ const handleClickOutside = (e: MouseEvent) => {
155
+ if (actionMenuRef.current && !actionMenuRef.current.contains(e.target as Node)) {
156
+ setActionOpen(false);
157
+ }
158
+ };
159
+ document.addEventListener('mousedown', handleClickOutside);
160
+ return () => document.removeEventListener('mousedown', handleClickOutside);
161
+ }, [actionOpen]);
162
+
163
+ const handleOpen = async () => {
164
+ if (isActionPending) {
165
+ return;
166
+ }
167
+
168
+ if (isConfigPendingForRemoteOpen) {
169
+ return;
170
+ }
171
+
172
+ if (isConfigUnavailableForRemoteOpen) {
173
+ setActionError('Failed to load open settings. Remote open is unavailable until configuration loads.');
174
+ return;
175
+ }
176
+
177
+ setActionError(null);
178
+
179
+ if (isRemoteCard && openEditorTargetMode === 'hub' && openTool === 'antigravity') {
180
+ setActionError('Antigravity does not support hub-mode remote opens. Use VS Code or switch target mode to Remote node.');
181
+ return;
182
+ }
183
+
184
+ const useRemoteSshTarget = isRemoteCard && openEditorTargetMode === 'hub' && openTool === 'vscode';
185
+ const target = buildEditorUri(openTool === 'antigravity' ? 'antigravity' : 'vscode', card.directory, {
186
+ remoteSshHost: useRemoteSshTarget ? remoteSshHost : null,
187
+ });
188
+
189
+ if (isRemoteCard && openEditorTargetMode === 'remote') {
190
+ setPendingAction('open');
191
+ try {
192
+ const response = await fetch(`/api/sessions/${card.id}/open-editor`, {
193
+ method: 'POST',
194
+ headers: { 'Content-Type': 'application/json' },
195
+ body: JSON.stringify({ tool: openTool }),
196
+ });
197
+
198
+ if (!response.ok) {
199
+ const errorBody = await response.json().catch(() => null);
200
+ setActionError(mapSessionActionError(errorBody, 'Failed to open remote editor'));
201
+ }
202
+ } catch {
203
+ setActionError('Remote node is offline or unreachable.');
204
+ } finally {
205
+ setPendingAction(null);
206
+ }
207
+
208
+ return;
209
+ }
210
+
211
+ window.location.assign(target);
212
+ };
213
+
214
+ const handleArchive = async () => {
215
+ if (isActionPending) {
216
+ return;
217
+ }
218
+
219
+ setActionError(null);
220
+ setPendingAction('archive');
221
+ try {
222
+ const response = await fetch(`/api/sessions/${card.id}/archive`, { method: 'POST' });
223
+ if (!response.ok) {
224
+ const errorBody = await response.json().catch(() => null);
225
+ setActionError(mapSessionActionError(errorBody, 'Failed to archive session'));
226
+ }
227
+ } catch {
228
+ setActionError('Remote node is offline or unreachable.');
229
+ } finally {
230
+ setPendingAction(null);
231
+ setActionOpen(false);
232
+ await queryClient.invalidateQueries({ queryKey: ['sessions'] });
233
+ }
234
+ };
235
+
236
+ const handleDelete = async () => {
237
+ if (isActionPending) {
238
+ return;
239
+ }
240
+
241
+ setActionError(null);
242
+ setPendingAction('delete');
243
+ try {
244
+ const response = await fetch(`/api/sessions/${card.id}/delete`, { method: 'POST' });
245
+ if (!response.ok) {
246
+ const errorBody = await response.json().catch(() => null);
247
+ setActionError(mapSessionActionError(errorBody, 'Failed to delete session'));
248
+ }
249
+ } catch {
250
+ setActionError('Remote node is offline or unreachable.');
251
+ } finally {
252
+ setPendingAction(null);
253
+ setActionOpen(false);
254
+ await queryClient.invalidateQueries({ queryKey: ['sessions'] });
255
+ }
256
+ };
257
+
258
+ return (
259
+ <article
260
+ className="relative w-full text-left p-4 bg-white dark:bg-zinc-800 rounded-xl shadow-sm border border-gray-200 dark:border-zinc-700 hover:shadow-lg hover:border-gray-300 dark:hover:border-zinc-600 transition-all duration-200"
261
+ >
262
+ <button
263
+ type="button"
264
+ className="w-full text-left pr-24"
265
+ onDoubleClick={handleOpen}
266
+ onClick={(event) => event.stopPropagation()}
267
+ aria-busy={isActionPending}
268
+ disabled={isConfigPendingForRemoteOpen || isConfigUnavailableForRemoteOpen}
269
+ >
270
+ {/* Top: Status indicator */}
271
+ <div className="flex items-center justify-between mb-2">
272
+ <StatusIndicator status={card.opencodeStatus} waitingForUser={card.waitingForUser} />
273
+ </div>
274
+ <h3
275
+ className="font-semibold text-gray-900 dark:text-gray-100 text-base line-clamp-2"
276
+ title={card.title || 'Untitled Session'}
277
+ >
278
+ {card.title || 'Untitled Session'}
279
+ </h3>
280
+
281
+ {card.agents.length > 0 && (
282
+ <div className="flex flex-wrap gap-1 mt-2">
283
+ {card.agents.map((agent) => (
284
+ <span
285
+ key={agent}
286
+ className="px-2 py-0.5 bg-indigo-50 text-indigo-700 text-sm rounded-full font-medium"
287
+ >
288
+ {agent}
289
+ </span>
290
+ ))}
291
+ </div>
292
+ )}
293
+ {card.projectName && (
294
+ <div className="mt-2 flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400">
295
+ <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" role="img" aria-hidden="true">
296
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z" />
297
+ </svg>
298
+ <span className="font-medium truncate">{card.projectName}</span>
299
+ {card.branch && (
300
+ <>
301
+ <span className="text-gray-400">/</span>
302
+ <span className="text-xs bg-gray-100 dark:bg-zinc-700 px-2 py-0.5 rounded">
303
+ {card.branch}
304
+ </span>
305
+ </>
306
+ )}
307
+ </div>
308
+ )}
309
+
310
+ <div className="mt-2 flex flex-col gap-1">
311
+ <span className="flex items-center gap-1 text-sm text-gray-600 dark:text-gray-400">
312
+ <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" role="img" aria-hidden="true">
313
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
314
+ </svg>
315
+ {lastActiveLabel}
316
+ </span>
317
+ <span className="flex items-center gap-1 text-xs text-gray-500 dark:text-gray-500">
318
+ <svg className="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" role="img" aria-hidden="true">
319
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
320
+ </svg>
321
+ {startedLabel}
322
+ </span>
323
+ </div>
324
+
325
+ {card.todosTotal > 0 && (
326
+ <div className="mt-3">
327
+ <div className="flex items-center justify-between text-sm mb-1">
328
+ <span className="text-gray-600 text-sm">Todos</span>
329
+ <span className="text-gray-600 font-medium">
330
+ {card.todosCompleted}/{card.todosTotal}
331
+ </span>
332
+ </div>
333
+ <div className="h-1.5 bg-gray-100 rounded-full overflow-hidden">
334
+ <div
335
+ className="h-full bg-emerald-500 rounded-full transition-all duration-300"
336
+ style={{ width: `${todoProgress}%` }}
337
+ />
338
+ </div>
339
+ </div>
340
+ )}
341
+ {isConfigPendingForRemoteOpen ? (
342
+ <div className="mt-3 rounded-md border border-blue-200 bg-blue-50 px-2 py-1 text-xs text-blue-700 dark:border-blue-900/40 dark:bg-blue-900/20 dark:text-blue-300">
343
+ Loading open settings…
344
+ </div>
345
+ ) : null}
346
+ {isConfigError && isConfigUnavailableForRemoteOpen ? (
347
+ <div className="mt-3 rounded-md border border-red-200 bg-red-50 px-2 py-1 text-xs text-red-700 dark:border-red-900/40 dark:bg-red-900/20 dark:text-red-300">
348
+ Failed to load open settings. Remote open is unavailable until configuration loads.
349
+ </div>
350
+ ) : null}
351
+ {pendingActionLabel ? (
352
+ <div className="mt-3 rounded-md border border-blue-200 bg-blue-50 px-2 py-1 text-xs text-blue-700 dark:border-blue-900/40 dark:bg-blue-900/20 dark:text-blue-300">
353
+ {pendingActionLabel}
354
+ </div>
355
+ ) : null}
356
+ {actionError ? (
357
+ <div className="mt-3 rounded-md border border-red-200 bg-red-50 px-2 py-1 text-xs text-red-700 dark:border-red-900/40 dark:bg-red-900/20 dark:text-red-300">
358
+ {actionError}
359
+ </div>
360
+ ) : null}
361
+ </button>
362
+ <div className="absolute top-4 right-4 flex items-center gap-2">
363
+ <select
364
+ className="text-xs rounded-md border border-gray-200 bg-white px-2 py-1 text-gray-600 shadow-sm hover:border-gray-300 disabled:cursor-not-allowed disabled:opacity-50 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-zinc-700 dark:bg-zinc-900 dark:text-gray-300"
365
+ value={openTool}
366
+ onClick={(e) => e.stopPropagation()}
367
+ onDoubleClick={(e) => e.stopPropagation()}
368
+ onChange={(e) => {
369
+ const value = e.target.value;
370
+ setOpenTool(value);
371
+ window.localStorage.setItem('vibepulse:open-tool', value);
372
+ }}
373
+ aria-label="Open tool"
374
+ title="Open tool"
375
+ disabled={isActionPending}
376
+ >
377
+ <option value="vscode">VSCode</option>
378
+ <option value="antigravity">Antigravity</option>
379
+ </select>
380
+ {openTool === 'vscode' && remoteSshHost && (
381
+ <span className="text-[10px] text-gray-500 dark:text-gray-400" title={`SSH host: ${remoteSshHost}`}>
382
+ SSH: {remoteSshHost}
383
+ </span>
384
+ )}
385
+ <div className="relative" ref={actionMenuRef}>
386
+ <button
387
+ type="button"
388
+ className="inline-flex items-center justify-center w-6 h-6 rounded-md text-gray-400 hover:text-gray-700 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-gray-500 dark:hover:text-gray-200 dark:hover:bg-zinc-700"
389
+ onClick={(e) => {
390
+ e.stopPropagation();
391
+ if (!isActionPending) {
392
+ setActionOpen((prev) => !prev);
393
+ }
394
+ }}
395
+ onDoubleClick={(e) => e.stopPropagation()}
396
+ aria-label="Actions"
397
+ title="Actions"
398
+ disabled={isActionPending}
399
+ >
400
+ <svg className="w-4 h-4" viewBox="0 0 24 24" fill="currentColor" role="img" aria-hidden="true">
401
+ <path d="M5 10a2 2 0 110 4 2 2 0 010-4zm7 0a2 2 0 110 4 2 2 0 010-4zm7 0a2 2 0 110 4 2 2 0 010-4z" />
402
+ </svg>
403
+ </button>
404
+ {actionOpen && (
405
+ <div className="absolute right-0 mt-1 w-36 rounded-md border border-gray-200 bg-white shadow-lg dark:border-zinc-700 dark:bg-zinc-900 z-10">
406
+ <button
407
+ type="button"
408
+ className="w-full text-left px-3 py-2 text-sm text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:text-gray-200 dark:hover:bg-zinc-800"
409
+ onClick={(e) => {
410
+ e.stopPropagation();
411
+ handleArchive();
412
+ }}
413
+ disabled={isActionPending}
414
+ >
415
+ Archive
416
+ </button>
417
+ <button
418
+ type="button"
419
+ className="w-full text-left px-3 py-2 text-sm text-red-600 hover:bg-red-50 disabled:cursor-not-allowed disabled:opacity-50 dark:text-red-400 dark:hover:bg-red-900/20"
420
+ onClick={(e) => {
421
+ e.stopPropagation();
422
+ handleDelete();
423
+ }}
424
+ disabled={isActionPending}
425
+ >
426
+ Delete
427
+ </button>
428
+ </div>
429
+ )}
430
+ </div>
431
+ </div>
432
+ </article>
433
+ );
434
+ }
@@ -0,0 +1,60 @@
1
+ 'use client';
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import { SessionCard } from './SessionCard';
5
+ import { transformSession } from '@/lib/transform';
6
+ import { OpencodeSession } from '@/types';
7
+
8
+ interface SessionListResponse {
9
+ sessions: OpencodeSession[];
10
+ }
11
+
12
+ export function SessionList() {
13
+ const { data, isLoading, error } = useQuery<SessionListResponse>({
14
+ queryKey: ['sessions'],
15
+ queryFn: async () => {
16
+ const res = await fetch('/api/sessions');
17
+ if (!res.ok) {
18
+ throw new Error('Failed to fetch sessions');
19
+ }
20
+ return res.json();
21
+ },
22
+ });
23
+
24
+ if (isLoading) {
25
+ return (
26
+ <div className="flex items-center justify-center h-32 text-gray-500">
27
+ Loading sessions...
28
+ </div>
29
+ );
30
+ }
31
+
32
+ if (error) {
33
+ return (
34
+ <div className="flex items-center justify-center h-32 text-red-500">
35
+ Error: {error.message}
36
+ </div>
37
+ );
38
+ }
39
+
40
+ const sessions = data?.sessions || [];
41
+
42
+ if (sessions.length === 0) {
43
+ return (
44
+ <div className="flex items-center justify-center h-32 text-gray-500">
45
+ No sessions found. Start a new OpenCode session to see it here.
46
+ </div>
47
+ );
48
+ }
49
+
50
+ return (
51
+ <div className="space-y-4">
52
+ {sessions.map((session) => (
53
+ <SessionCard
54
+ key={session.id}
55
+ card={transformSession(session)}
56
+ />
57
+ ))}
58
+ </div>
59
+ );
60
+ }