conductor-oss 0.2.20 → 0.3.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 (538) hide show
  1. package/README.md +16 -0
  2. package/dist/commands/start.d.ts.map +1 -1
  3. package/dist/commands/start.js +28 -2
  4. package/dist/commands/start.js.map +1 -1
  5. package/dist/launcher.d.ts +3 -0
  6. package/dist/launcher.d.ts.map +1 -0
  7. package/dist/launcher.js +3 -0
  8. package/dist/launcher.js.map +1 -0
  9. package/node_modules/@conductor-oss/core/dist/config.d.ts.map +1 -1
  10. package/node_modules/@conductor-oss/core/dist/config.js +106 -1
  11. package/node_modules/@conductor-oss/core/dist/config.js.map +1 -1
  12. package/node_modules/@conductor-oss/core/dist/types.d.ts +4 -4
  13. package/node_modules/@conductor-oss/core/dist/types.d.ts.map +1 -1
  14. package/node_modules/@conductor-oss/core/dist/types.js +185 -8
  15. package/node_modules/@conductor-oss/core/dist/types.js.map +1 -1
  16. package/node_modules/@conductor-oss/plugin-agent-amp/package.json +1 -1
  17. package/node_modules/@conductor-oss/plugin-agent-ccr/package.json +1 -1
  18. package/node_modules/@conductor-oss/plugin-agent-claude-code/package.json +1 -1
  19. package/node_modules/@conductor-oss/plugin-agent-codex/package.json +1 -1
  20. package/node_modules/@conductor-oss/plugin-agent-cursor-cli/package.json +1 -1
  21. package/node_modules/@conductor-oss/plugin-agent-droid/package.json +1 -1
  22. package/node_modules/@conductor-oss/plugin-agent-gemini/package.json +1 -1
  23. package/node_modules/@conductor-oss/plugin-agent-github-copilot/package.json +1 -1
  24. package/node_modules/@conductor-oss/plugin-agent-opencode/package.json +1 -1
  25. package/node_modules/@conductor-oss/plugin-agent-qwen-code/package.json +1 -1
  26. package/node_modules/@conductor-oss/plugin-mcp-server/package.json +1 -1
  27. package/node_modules/@conductor-oss/plugin-notifier-desktop/package.json +1 -1
  28. package/node_modules/@conductor-oss/plugin-notifier-discord/package.json +1 -1
  29. package/node_modules/@conductor-oss/plugin-runtime-tmux/package.json +1 -1
  30. package/node_modules/@conductor-oss/plugin-scm-github/package.json +1 -1
  31. package/node_modules/@conductor-oss/plugin-terminal-web/package.json +1 -1
  32. package/node_modules/@conductor-oss/plugin-tracker-github/package.json +1 -1
  33. package/node_modules/@conductor-oss/plugin-workspace-worktree/package.json +1 -1
  34. package/package.json +29 -25
  35. package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
  36. package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +5 -0
  37. package/web/.next/standalone/packages/web/.next/build-manifest.json +2 -2
  38. package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
  39. package/web/.next/standalone/packages/web/.next/routes-manifest.json +34 -0
  40. package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
  41. package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  42. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  43. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  44. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  45. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  46. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  47. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  48. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  49. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
  51. package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +3 -3
  52. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  53. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  54. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  55. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  56. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  57. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  58. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js +3 -4
  59. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.nft.json +1 -1
  60. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/app-paths-manifest.json +3 -0
  61. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/build-manifest.json +11 -0
  62. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/server-reference-manifest.json +4 -0
  63. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +10 -0
  64. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.map +5 -0
  65. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +1 -0
  66. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route_client-reference-manifest.js +2 -0
  67. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js +2 -2
  68. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js.nft.json +1 -1
  69. package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js +3 -1
  70. package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js.nft.json +1 -1
  71. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js +3 -5
  72. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js.nft.json +1 -1
  73. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js +2 -2
  74. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js.nft.json +1 -1
  75. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js +2 -2
  76. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js.nft.json +1 -1
  77. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js +3 -3
  78. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js.nft.json +1 -1
  79. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route/app-paths-manifest.json +3 -0
  80. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route/build-manifest.json +11 -0
  81. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route/server-reference-manifest.json +4 -0
  82. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js +10 -0
  83. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.map +5 -0
  84. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.nft.json +1 -0
  85. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route_client-reference-manifest.js +2 -0
  86. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js +2 -2
  87. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js.nft.json +1 -1
  88. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route/app-paths-manifest.json +3 -0
  89. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route/build-manifest.json +11 -0
  90. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route/server-reference-manifest.json +4 -0
  91. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js +10 -0
  92. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.map +5 -0
  93. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.nft.json +1 -0
  94. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route_client-reference-manifest.js +2 -0
  95. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js +2 -2
  96. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js.nft.json +1 -1
  97. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js +2 -2
  98. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js.nft.json +1 -1
  99. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js +2 -2
  100. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js.nft.json +1 -1
  101. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js +2 -2
  102. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js.nft.json +1 -1
  103. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js +3 -4
  104. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js.nft.json +1 -1
  105. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route/app-paths-manifest.json +3 -0
  106. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route/build-manifest.json +11 -0
  107. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route/server-reference-manifest.json +4 -0
  108. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js +10 -0
  109. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.map +5 -0
  110. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -0
  111. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +2 -0
  112. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js +4 -6
  113. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js.nft.json +1 -1
  114. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js +2 -2
  115. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js.nft.json +1 -1
  116. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route/app-paths-manifest.json +3 -0
  117. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route/build-manifest.json +11 -0
  118. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route/server-reference-manifest.json +4 -0
  119. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js +10 -0
  120. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.map +5 -0
  121. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -0
  122. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route_client-reference-manifest.js +2 -0
  123. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js +2 -2
  124. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js.nft.json +1 -1
  125. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js +4 -5
  126. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js.nft.json +1 -1
  127. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js +2 -2
  128. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js.nft.json +1 -1
  129. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js +2 -2
  130. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js.nft.json +1 -1
  131. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js +2 -2
  132. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js.nft.json +1 -1
  133. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js +2 -2
  134. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js.nft.json +1 -1
  135. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js +2 -2
  136. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
  137. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js +2 -2
  138. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js.nft.json +1 -1
  139. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js +3 -3
  140. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js.nft.json +1 -1
  141. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js +2 -2
  142. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
  143. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js +2 -2
  144. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  145. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js +2 -2
  146. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
  147. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js +2 -2
  148. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  149. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js +3 -4
  150. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js.nft.json +1 -1
  151. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js +2 -2
  152. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js.nft.json +1 -1
  153. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js +4 -6
  154. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  155. package/web/.next/standalone/packages/web/.next/server/app/index.html +1 -1
  156. package/web/.next/standalone/packages/web/.next/server/app/index.rsc +4 -4
  157. package/web/.next/standalone/packages/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  158. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_full.segment.rsc +4 -4
  159. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  160. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
  161. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  162. package/web/.next/standalone/packages/web/.next/server/app/page/react-loadable-manifest.json +2 -2
  163. package/web/.next/standalone/packages/web/.next/server/app/page/server-reference-manifest.json +7 -7
  164. package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
  165. package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  166. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/server-reference-manifest.json +7 -7
  167. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  168. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  169. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/server-reference-manifest.json +7 -7
  170. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
  171. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
  172. package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +7 -7
  173. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
  174. package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
  175. package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +5 -0
  176. package/web/.next/standalone/packages/web/.next/server/chunks/29f24__next-internal_server_app_api_filesystem_pick-directory_route_actions_51e42977.js +3 -0
  177. package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_executor_health_route_actions_8e415531.js +3 -0
  178. package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_repositories_[id]_route_actions_4d42b4b5.js +3 -0
  179. package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_sessions_[id]_archive_route_actions_bdb25739.js +3 -0
  180. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0074ebac._.js +3 -0
  181. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__03a6b3e6._.js +3 -0
  182. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__049daed6._.js +3 -0
  183. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__6023a748._.js → [root-of-the-server]__095ffdaa._.js} +1 -1
  184. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__2a83553a._.js → [root-of-the-server]__0c7f79b1._.js} +1 -1
  185. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__137c9740._.js +3 -0
  186. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__1aa339ea._.js → [root-of-the-server]__144e8e60._.js} +1 -1
  187. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__1ed2e6c1._.js → [root-of-the-server]__14949257._.js} +17 -163
  188. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__15594e11._.js +3 -0
  189. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__159ecc1b._.js +3 -0
  190. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__29be362d._.js → [root-of-the-server]__16d4a78f._.js} +1 -1
  191. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__171dd44e._.js +3 -0
  192. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__177505ca._.js +3 -0
  193. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__18aa1fa3._.js +3 -0
  194. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c3521a3._.js +3 -0
  195. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c793b78._.js +3 -0
  196. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__22fbbc7b._.js +3 -0
  197. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__25bbe81a._.js +3 -0
  198. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2d10de49._.js +3 -0
  199. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30442998._.js +3 -0
  200. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31d22800._.js +3 -0
  201. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3d6b30a3._.js +1 -1
  202. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44892736._.js +3 -0
  203. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__495221b1._.js +3 -0
  204. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ff9e8b0._.js +3 -0
  205. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54eb1ef0._.js +3 -0
  206. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5c375e13._.js +3 -0
  207. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6362697f._.js +3 -0
  208. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__69b36e36._.js +3 -0
  209. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6badbf4e._.js +3 -0
  210. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c4cd852._.js +3 -0
  211. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6f7b329b._.js +3 -0
  212. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__70b7af90._.js +3 -0
  213. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__71077192._.js +3 -0
  214. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__758687ca._.js +3 -0
  215. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7604e43b._.js +3 -0
  216. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__77b23eae._.js +3 -0
  217. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78650ac9._.js +3 -0
  218. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__789107eb._.js +3 -0
  219. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78c062a8._.js +3 -0
  220. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78c4bb1e._.js +3 -0
  221. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__790d1d4b._.js +3 -0
  222. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8132442f._.js +3 -0
  223. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__833a2cd9._.js +3 -0
  224. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85d6ae4c._.js +3 -0
  225. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8d933120._.js +3 -0
  226. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__90ac5665._.js +3 -0
  227. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__92a4f9bf._.js +3 -0
  228. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__93d550e2._.js +3 -0
  229. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96e59c1f._.js +3 -0
  230. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9d98fee2._.js +3 -0
  231. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9fcf6265._.js +3 -0
  232. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a5b78741._.js +3 -0
  233. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8a4b101._.js +3 -0
  234. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8d11727._.js +3 -0
  235. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b2e0e81c._.js +3 -0
  236. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bf756716._.js +3 -0
  237. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c09452b3._.js +3 -0
  238. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c43dcff1._.js +3 -0
  239. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c923cbdc._.js +3 -0
  240. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ce993e7b._.js +3 -0
  241. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cfbdd2bf._.js +3 -0
  242. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d1d8bfb5._.js +3 -0
  243. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d4d1744d._.js +3 -0
  244. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d8852803._.js +3 -0
  245. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea1961bd._.js +3 -0
  246. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ee8a3221._.js +3 -0
  247. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef8c815b._.js +3 -0
  248. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef918d06._.js +3 -0
  249. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f3693403._.js +3 -0
  250. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f62cac3a._.js +3 -0
  251. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f73117e9._.js +3 -0
  252. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f7651519._.js +3 -0
  253. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fc6ffe6c._.js +3 -0
  254. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_agents_route_actions_29063d1a.js +3 -0
  255. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__6622b514._.js +1 -1
  256. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__869d9ac0._.js +1 -1
  257. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__b388693f._.js +1 -1
  258. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__48817f02._.js → [root-of-the-server]__c3eb4913._.js} +2 -2
  259. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_0e1412de._.js +1 -1
  260. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_20a4007d._.js → _3acfb388._.js} +2 -2
  261. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_668c9201._.js +3 -0
  262. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.js +1 -1
  263. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_80efe193._.js +1 -1
  264. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b6d31783._.js +1 -1
  265. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
  266. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_f36ddaa9._.js +1 -1
  267. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_129dde21._.js +3 -0
  268. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_1776df7f._.js +3 -0
  269. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_f2ebd7a9._.js +1 -1
  270. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_79316445._.js +1 -1
  271. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_a078c137._.js +1 -1
  272. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_page_tsx_cd282e82._.js +1 -1
  273. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_unlock_UnlockForm_tsx_ce3149a7._.js +1 -1
  274. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{packages_web_src_components_6cab1c8c._.js → packages_web_src_components_aad7de7c._.js} +1 -1
  275. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_board_WorkspaceKanban_tsx_735b7999._.js +1 -1
  276. package/web/.next/standalone/packages/web/.next/server/pages/404.html +1 -1
  277. package/web/.next/standalone/packages/web/.next/server/pages/500.html +2 -2
  278. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
  279. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +8 -8
  280. package/web/.next/standalone/packages/web/.next/static/chunks/{5c7e8425945ad682.js → 07a5ac7389686572.js} +1 -1
  281. package/web/.next/standalone/packages/web/.next/static/chunks/3603312f8407bd12.js +1 -0
  282. package/web/.next/standalone/packages/web/.next/static/chunks/382be8f0b30c5f08.js +1 -0
  283. package/web/.next/standalone/packages/web/.next/static/chunks/479b8cb58c95a8a0.js +1 -0
  284. package/web/.next/standalone/packages/web/.next/static/chunks/53e4f3b495e423c9.js +1 -0
  285. package/web/.next/{static/chunks/3b757dce050133c8.js → standalone/packages/web/.next/static/chunks/5c5637796e242130.js} +2 -2
  286. package/web/.next/standalone/packages/web/.next/static/chunks/{695b7cb206c6dadd.js → 5e05e67a26b7ecbc.js} +1 -1
  287. package/web/.next/standalone/packages/web/.next/static/chunks/6d083840413686dd.css +3 -0
  288. package/web/.next/standalone/packages/web/.next/static/chunks/870a993d28314a90.js +1 -0
  289. package/web/.next/standalone/packages/web/.next/static/chunks/c5caacf383990e7b.js +1 -0
  290. package/web/.next/standalone/packages/web/.next/static/chunks/c7c1bd729f17c8bf.js +1 -0
  291. package/web/.next/standalone/packages/web/.next/static/chunks/e8d146cc2723147b.js +1 -0
  292. package/web/.next/standalone/packages/web/package.json +1 -1
  293. package/web/.next/standalone/packages/web/src/app/api/access/route.ts +3 -211
  294. package/web/.next/standalone/packages/web/src/app/api/agents/route.ts +5 -0
  295. package/web/.next/standalone/packages/web/src/app/api/attachments/route.ts +2 -166
  296. package/web/.next/standalone/packages/web/src/app/api/auth/session/route.ts +4 -52
  297. package/web/.next/standalone/packages/web/src/app/api/boards/route.ts +3 -517
  298. package/web/.next/standalone/packages/web/src/app/api/config/route.ts +2 -78
  299. package/web/.next/standalone/packages/web/src/app/api/context-files/route.ts +2 -198
  300. package/web/.next/standalone/packages/web/src/app/api/events/route.ts +2 -122
  301. package/web/.next/standalone/packages/web/src/app/api/executor/health/route.ts +5 -0
  302. package/web/.next/standalone/packages/web/src/app/api/filesystem/directory/route.ts +2 -142
  303. package/web/.next/standalone/packages/web/src/app/api/filesystem/pick-directory/route.ts +5 -0
  304. package/web/.next/standalone/packages/web/src/app/api/github/repos/route.ts +2 -103
  305. package/web/.next/standalone/packages/web/src/app/api/health/boards/route.ts +2 -69
  306. package/web/.next/standalone/packages/web/src/app/api/health/sessions/route.ts +2 -74
  307. package/web/.next/standalone/packages/web/src/app/api/notifications/route.ts +3 -88
  308. package/web/.next/standalone/packages/web/src/app/api/preferences/route.ts +3 -191
  309. package/web/.next/standalone/packages/web/src/app/api/repositories/[id]/route.ts +8 -0
  310. package/web/.next/standalone/packages/web/src/app/api/repositories/route.ts +4 -416
  311. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/actions/route.ts +5 -77
  312. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/archive/route.ts +8 -0
  313. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/checks/route.ts +5 -172
  314. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/diff/route.ts +5 -423
  315. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feed/route.ts +5 -94
  316. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feedback/route.ts +5 -44
  317. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/files/route.ts +5 -194
  318. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/keys/route.ts +6 -138
  319. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/kill/route.ts +5 -42
  320. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/route.ts +5 -259
  321. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/stream/route.ts +5 -108
  322. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/restore/route.ts +5 -46
  323. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/route.ts +6 -204
  324. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/send/route.ts +5 -55
  325. package/web/.next/standalone/packages/web/src/app/api/sessions/route.ts +2 -102
  326. package/web/.next/standalone/packages/web/src/app/api/spawn/route.ts +3 -214
  327. package/web/.next/standalone/packages/web/src/app/api/workspaces/branches/route.ts +2 -230
  328. package/web/.next/standalone/packages/web/src/app/api/workspaces/route.ts +3 -589
  329. package/web/.next/standalone/packages/web/src/app/unlock/UnlockForm.tsx +25 -4
  330. package/web/.next/standalone/packages/web/src/components/board/WorkspaceKanban.tsx +8 -8
  331. package/web/.next/standalone/packages/web/src/components/layout/WorkspaceSidebarPanel.tsx +199 -84
  332. package/web/.next/standalone/packages/web/src/components/sessions/ChatPanel.tsx +36 -5
  333. package/web/.next/standalone/packages/web/src/features/dashboard/DashboardClient.tsx +86 -36
  334. package/web/.next/standalone/packages/web/src/features/dashboard/components/WorkspaceOverview.tsx +57 -9
  335. package/web/.next/standalone/packages/web/src/hooks/useSessionOutputStream.ts +11 -0
  336. package/web/.next/standalone/packages/web/src/lib/auth.ts +90 -14
  337. package/web/.next/standalone/packages/web/src/lib/guardedRustProxy.ts +25 -0
  338. package/web/.next/standalone/packages/web/src/lib/liveEvents.ts +64 -7
  339. package/web/.next/standalone/packages/web/src/lib/proxyRoutes.ts +46 -0
  340. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels.ts +1 -1
  341. package/web/.next/standalone/packages/web/src/lib/rustBackendProxy.ts +154 -0
  342. package/web/.next/standalone/packages/web/src/proxy.ts +3 -20
  343. package/web/.next/static/chunks/{5c7e8425945ad682.js → 07a5ac7389686572.js} +1 -1
  344. package/web/.next/static/chunks/3603312f8407bd12.js +1 -0
  345. package/web/.next/static/chunks/382be8f0b30c5f08.js +1 -0
  346. package/web/.next/static/chunks/479b8cb58c95a8a0.js +1 -0
  347. package/web/.next/static/chunks/53e4f3b495e423c9.js +1 -0
  348. package/web/.next/{standalone/packages/web/.next/static/chunks/3b757dce050133c8.js → static/chunks/5c5637796e242130.js} +2 -2
  349. package/web/.next/static/chunks/{695b7cb206c6dadd.js → 5e05e67a26b7ecbc.js} +1 -1
  350. package/web/.next/static/chunks/6d083840413686dd.css +3 -0
  351. package/web/.next/static/chunks/870a993d28314a90.js +1 -0
  352. package/web/.next/static/chunks/c5caacf383990e7b.js +1 -0
  353. package/web/.next/static/chunks/c7c1bd729f17c8bf.js +1 -0
  354. package/web/.next/static/chunks/e8d146cc2723147b.js +1 -0
  355. package/native/conductor +0 -0
  356. package/web/.next/standalone/packages/web/.next/server/chunks/[externals]__f25f12d4._.js +0 -3
  357. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__005aa909._.js +0 -3
  358. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__008d962e._.js +0 -3
  359. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__00cf28e7._.js +0 -3
  360. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__03ff76ee._.js +0 -3
  361. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__06365513._.js +0 -3
  362. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__075f8697._.js +0 -3
  363. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__097be5a7._.js +0 -3
  364. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0a0f0f01._.js +0 -3
  365. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1003246b._.js +0 -3
  366. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__11918223._.js +0 -3
  367. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__13ad088c._.js +0 -3
  368. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1458f8ec._.js +0 -3
  369. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__14b1d4a3._.js +0 -3
  370. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1741fb8a._.js +0 -3
  371. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1875f00e._.js +0 -3
  372. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1beced71._.js +0 -3
  373. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1f626a16._.js +0 -129
  374. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2062aaab._.js +0 -3
  375. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__206c3d8a._.js +0 -3
  376. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__22f8f0d6._.js +0 -129
  377. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__23bebaf9._.js +0 -3
  378. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2556a816._.js +0 -3
  379. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__25788ed3._.js +0 -54
  380. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2c3f6397._.js +0 -3
  381. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2c909fe3._.js +0 -3
  382. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30921756._.js +0 -3
  383. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31eea08c._.js +0 -3
  384. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__346d9484._.js +0 -3
  385. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3edd3509._.js +0 -3
  386. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3f8b49ba._.js +0 -3
  387. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3f8e82c2._.js +0 -3
  388. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44d59fd0._.js +0 -3
  389. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__48875cbb._.js +0 -7
  390. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__49c6a20e._.js +0 -3
  391. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ac9d639._.js +0 -3
  392. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4c3fb752._.js +0 -3
  393. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ca8b259._.js +0 -3
  394. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4dab6a6a._.js +0 -3
  395. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__53385c40._.js +0 -3
  396. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__544326ac._.js +0 -3
  397. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54a218f0._.js +0 -54
  398. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__55e337f7._.js +0 -3
  399. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5661ca72._.js +0 -3
  400. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5cd49624._.js +0 -3
  401. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5e0533de._.js +0 -3
  402. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5e161db4._.js +0 -3
  403. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5ebcb223._.js +0 -3
  404. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5fd609c9._.js +0 -3
  405. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__60cf7bf4._.js +0 -3
  406. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__60ee4897._.js +0 -3
  407. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6559c1a4._.js +0 -3
  408. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__659938b1._.js +0 -3
  409. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6712f45a._.js +0 -3
  410. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__69227de6._.js +0 -3
  411. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6ab08a39._.js +0 -129
  412. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c10c03b._.js +0 -3
  413. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6cd54de1._.js +0 -3
  414. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6ce2b5d7._.js +0 -3
  415. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6cfd00d2._.js +0 -3
  416. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6d62709d._.js +0 -129
  417. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6e08e4e4._.js +0 -3
  418. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__749331b0._.js +0 -54
  419. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__74a53184._.js +0 -3
  420. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__76c16426._.js +0 -3
  421. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__778e46a1._.js +0 -129
  422. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7a26e452._.js +0 -3
  423. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7ba96fa5._.js +0 -3
  424. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7e684560._.js +0 -3
  425. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__848eb266._.js +0 -3
  426. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8596d782._.js +0 -7
  427. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85d8966b._.js +0 -3
  428. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__86aff2b8._.js +0 -3
  429. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__879cf4d2._.js +0 -3
  430. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__881858fa._.js +0 -3
  431. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__885e3a00._.js +0 -54
  432. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__887ea436._.js +0 -3
  433. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__893f6b3b._.js +0 -3
  434. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__89dfcd05._.js +0 -3
  435. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8cc5826f._.js +0 -3
  436. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__913af875._.js +0 -3
  437. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__91b42119._.js +0 -3
  438. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__93ce1b75._.js +0 -3
  439. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96633022._.js +0 -3
  440. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96951362._.js +0 -3
  441. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__971fcc75._.js +0 -9
  442. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__99da6324._.js +0 -3
  443. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9f07930d._.js +0 -3
  444. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9f36b7ec._.js +0 -129
  445. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9fd08bbc._.js +0 -3
  446. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a05953cc._.js +0 -3
  447. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a0b6570d._.js +0 -3
  448. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a3766ac1._.js +0 -3
  449. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a3bfaabf._.js +0 -3
  450. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a420e374._.js +0 -3
  451. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a4a33247._.js +0 -54
  452. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ac544bb5._.js +0 -3
  453. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ad84d2e0._.js +0 -54
  454. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b3095e9d._.js +0 -3
  455. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b59abfbd._.js +0 -3
  456. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b9692a3c._.js +0 -3
  457. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bcc08c70._.js +0 -3
  458. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__be051d52._.js +0 -3
  459. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bea07e07._.js +0 -3
  460. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c1759514._.js +0 -3
  461. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c2ef2bfc._.js +0 -3
  462. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c8618cb1._.js +0 -3
  463. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ca8a18f8._.js +0 -3
  464. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cafd7bb3._.js +0 -3
  465. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb112606._.js +0 -3
  466. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cc74ea40._.js +0 -3
  467. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cd3692a0._.js +0 -3
  468. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cf3cdecd._.js +0 -3
  469. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d09e7a99._.js +0 -3
  470. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d40b50e7._.js +0 -3
  471. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d4721d30._.js +0 -3
  472. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d538c110._.js +0 -3
  473. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d73ea818._.js +0 -3
  474. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__db3d0133._.js +0 -3
  475. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__dd0cf085._.js +0 -3
  476. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__de0f2533._.js +0 -7
  477. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e113f6df._.js +0 -3
  478. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e1a418bc._.js +0 -3
  479. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e6c1d827._.js +0 -3
  480. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea69c4ce._.js +0 -3
  481. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eac16890._.js +0 -3
  482. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eb1dfcc6._.js +0 -3
  483. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ee75d43a._.js +0 -3
  484. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef773ea6._.js +0 -3
  485. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f0d15920._.js +0 -3
  486. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f15cbcfc._.js +0 -3
  487. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f48eb2d4._.js +0 -3
  488. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fb6ab669._.js +0 -3
  489. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fe8419b5._.js +0 -129
  490. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0e4dc4f7.js +0 -4
  491. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_dd27f857.js +0 -3
  492. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_e445b36c.js +0 -3
  493. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f375f3c4.js +0 -28
  494. package/web/.next/standalone/packages/web/.next/server/chunks/packages_core_dist_index_cdd30418.js +0 -3
  495. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-amp_dist_index_bf3d8239.js +0 -3
  496. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-ccr_dist_index_69cbf726.js +0 -3
  497. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-claude-code_dist_index_31314e43.js +0 -125
  498. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-cursor-cli_dist_index_8d5cc426.js +0 -3
  499. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-droid_dist_index_f731227a.js +0 -3
  500. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-gemini_dist_index_b2d219e8.js +0 -54
  501. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-github-copilot_dist_index_9f80cb45.js +0 -3
  502. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-opencode_dist_index_7c7015da.js +0 -3
  503. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-qwen-code_dist_index_46dd8653.js +0 -3
  504. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_notifier-desktop_dist_index_ef3473f0.js +0 -3
  505. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_notifier-discord_dist_index_34257226.js +0 -3
  506. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_scm-github_dist_index_3b5a621e.js +0 -3
  507. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_terminal-web_dist_index_1e0706d3.js +0 -3
  508. package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_tracker-github_dist_index_2d7af62f.js +0 -3
  509. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web_src_lib_13fee5eb._.js +0 -3
  510. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web_src_lib_d64596cc._.js +0 -3
  511. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b88bcf2c._.js +0 -3
  512. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_38e7b35d._.js +0 -3
  513. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_f665760b._.js +0 -3
  514. package/web/.next/standalone/packages/web/.next/static/chunks/062888342200567f.js +0 -1
  515. package/web/.next/standalone/packages/web/.next/static/chunks/6c9a11faed9daf4d.js +0 -1
  516. package/web/.next/standalone/packages/web/.next/static/chunks/8221b78965a50858.js +0 -1
  517. package/web/.next/standalone/packages/web/.next/static/chunks/8de84e208e201d72.css +0 -3
  518. package/web/.next/standalone/packages/web/.next/static/chunks/a8d4e0d75ca51921.js +0 -1
  519. package/web/.next/standalone/packages/web/.next/static/chunks/ac6a06c17a4f651f.js +0 -1
  520. package/web/.next/standalone/packages/web/.next/static/chunks/c4ea57fb949fb623.js +0 -1
  521. package/web/.next/standalone/packages/web/.next/static/chunks/d9d05e7b540400af.js +0 -1
  522. package/web/.next/standalone/packages/web/.next/static/chunks/f5d9ad0f62ede339.js +0 -1
  523. package/web/.next/standalone/packages/web/src/lib/services.ts +0 -319
  524. package/web/.next/static/chunks/062888342200567f.js +0 -1
  525. package/web/.next/static/chunks/6c9a11faed9daf4d.js +0 -1
  526. package/web/.next/static/chunks/8221b78965a50858.js +0 -1
  527. package/web/.next/static/chunks/8de84e208e201d72.css +0 -3
  528. package/web/.next/static/chunks/a8d4e0d75ca51921.js +0 -1
  529. package/web/.next/static/chunks/ac6a06c17a4f651f.js +0 -1
  530. package/web/.next/static/chunks/c4ea57fb949fb623.js +0 -1
  531. package/web/.next/static/chunks/d9d05e7b540400af.js +0 -1
  532. package/web/.next/static/chunks/f5d9ad0f62ede339.js +0 -1
  533. /package/web/.next/standalone/packages/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_buildManifest.js +0 -0
  534. /package/web/.next/standalone/packages/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_clientMiddlewareManifest.json +0 -0
  535. /package/web/.next/standalone/packages/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_ssgManifest.js +0 -0
  536. /package/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_buildManifest.js +0 -0
  537. /package/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_clientMiddlewareManifest.json +0 -0
  538. /package/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,81140,e=>{"use strict";function t(e,r,{checkForDefaultPrevented:n=!0}={}){return function(t){if(e?.(t),!1===n||!t.defaultPrevented)return r?.(t)}}"u">typeof window&&window.document&&window.document.createElement,e.s(["composeEventHandlers",()=>t])},20783,e=>{"use strict";var t=e.i(71645);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t=>{let n=!1,i=e.map(e=>{let i=r(e,t);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let t=0;t<i.length;t++){let n=i[t];"function"==typeof n?n():r(e[t],null)}}}}function i(...e){return t.useCallback(n(...e),e)}e.s(["composeRefs",()=>n,"useComposedRefs",()=>i])},30030,e=>{"use strict";var t=e.i(71645),r=e.i(18050);function n(e,i=[]){let o=[],s=()=>{let r=o.map(e=>t.createContext(e));return function(n){let i=n?.[e]||r;return t.useMemo(()=>({[`__scope${e}`]:{...n,[e]:i}}),[n,i])}};return s.scopeName=e,[function(n,i){let s=t.createContext(i),a=o.length;o=[...o,i];let l=n=>{let{scope:i,children:o,...l}=n,u=i?.[e]?.[a]||s,c=t.useMemo(()=>l,Object.values(l));return(0,r.jsx)(u.Provider,{value:c,children:o})};return l.displayName=n+"Provider",[l,function(r,o){let l=o?.[e]?.[a]||s,u=t.useContext(l);if(u)return u;if(void 0!==i)return i;throw Error(`\`${r}\` must be used within \`${n}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let i=n.reduce((t,{useScope:r,scopeName:n})=>{let i=r(e)[`__scope${n}`];return{...t,...i}},{});return t.useMemo(()=>({[`__scope${r.scopeName}`]:i}),[i])}};return n.scopeName=r.scopeName,n}(s,...i)]}e.s(["createContextScope",()=>n])},34620,e=>{"use strict";var t=e.i(71645),r=globalThis?.document?t.useLayoutEffect:()=>{};e.s(["useLayoutEffect",()=>r])},69340,e=>{"use strict";var t=e.i(71645),r=e.i(34620);t[" useEffectEvent ".trim().toString()],t[" useInsertionEffect ".trim().toString()];var n=t[" useInsertionEffect ".trim().toString()]||r.useLayoutEffect;function i({prop:e,defaultProp:r,onChange:i=()=>{},caller:o}){let[s,a,l]=function({defaultProp:e,onChange:r}){let[i,o]=t.useState(e),s=t.useRef(i),a=t.useRef(r);return n(()=>{a.current=r},[r]),t.useEffect(()=>{s.current!==i&&(a.current?.(i),s.current=i)},[i,s]),[i,o,a]}({defaultProp:r,onChange:i}),u=void 0!==e,c=u?e:s;{let r=t.useRef(void 0!==e);t.useEffect(()=>{let e=r.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=u},[u,o])}return[c,t.useCallback(t=>{if(u){let r="function"==typeof t?t(e):t;r!==e&&l.current?.(r)}else a(t)},[u,e,a,l])]}Symbol("RADIX:SYNC_STATE"),e.s(["useControllableState",()=>i],69340)},48425,e=>{"use strict";var t=e.i(71645),r=e.i(74080),n=e.i(20783),i=e.i(18050),o=Symbol("radix.slottable");function s(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===o}var a=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{var o,a;let l,u,c,d=(a=o=`Primitive.${r}`,(l=t.forwardRef((e,r)=>{let{children:i,...o}=e;if(t.isValidElement(i)){var s;let e,a,l=(s=i,(a=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(a=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...e)=>{let t=o(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...o}:"className"===n&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}(o,i.props);return i.type!==t.Fragment&&(u.ref=r?(0,n.composeRefs)(r,l):l),t.cloneElement(i,u)}return t.Children.count(i)>1?t.Children.only(null):null})).displayName=`${a}.SlotClone`,u=l,(c=t.forwardRef((e,r)=>{let{children:n,...o}=e,a=t.Children.toArray(n),l=a.find(s);if(l){let e=l.props.children,n=a.map(r=>r!==l?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,i.jsx)(u,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,i.jsx)(u,{...o,ref:r,children:n})})).displayName=`${o}.Slot`,c),f=t.forwardRef((e,t)=>{let{asChild:n,...o}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(n?d:r,{...o,ref:t})});return f.displayName=`Primitive.${r}`,{...e,[r]:f}},{});function l(e,t){e&&r.flushSync(()=>e.dispatchEvent(t))}e.s(["Primitive",()=>a,"dispatchDiscreteCustomEvent",()=>l],48425)},75830,e=>{"use strict";var t=e.i(71645),r=e.i(30030),n=e.i(20783),i=e.i(18050);function o(e){var r;let o,s=(r=e,(o=t.forwardRef((e,r)=>{let{children:i,...o}=e;if(t.isValidElement(i)){var s;let e,a,l=(s=i,(a=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(a=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...e)=>{let t=o(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...o}:"className"===n&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}(o,i.props);return i.type!==t.Fragment&&(u.ref=r?(0,n.composeRefs)(r,l):l),t.cloneElement(i,u)}return t.Children.count(i)>1?t.Children.only(null):null})).displayName=`${r}.SlotClone`,o),l=t.forwardRef((e,r)=>{let{children:n,...o}=e,l=t.Children.toArray(n),u=l.find(a);if(u){let e=u.props.children,n=l.map(r=>r!==u?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,i.jsx)(s,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,i.jsx)(s,{...o,ref:r,children:n})});return l.displayName=`${e}.Slot`,l}var s=Symbol("radix.slottable");function a(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}function l(e){let s=e+"CollectionProvider",[a,l]=(0,r.createContextScope)(s),[u,c]=a(s,{collectionRef:{current:null},itemMap:new Map}),d=e=>{let{scope:r,children:n}=e,o=t.default.useRef(null),s=t.default.useRef(new Map).current;return(0,i.jsx)(u,{scope:r,itemMap:s,collectionRef:o,children:n})};d.displayName=s;let f=e+"CollectionSlot",p=o(f),m=t.default.forwardRef((e,t)=>{let{scope:r,children:o}=e,s=c(f,r),a=(0,n.useComposedRefs)(t,s.collectionRef);return(0,i.jsx)(p,{ref:a,children:o})});m.displayName=f;let h=e+"CollectionItemSlot",g="data-radix-collection-item",y=o(h),v=t.default.forwardRef((e,r)=>{let{scope:o,children:s,...a}=e,l=t.default.useRef(null),u=(0,n.useComposedRefs)(r,l),d=c(h,o);return t.default.useEffect(()=>(d.itemMap.set(l,{ref:l,...a}),()=>void d.itemMap.delete(l))),(0,i.jsx)(y,{...{[g]:""},ref:u,children:s})});return v.displayName=h,[{Provider:d,Slot:m,ItemSlot:v},function(r){let n=c(e+"CollectionConsumer",r);return t.default.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${g}]`));return Array.from(n.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[n.collectionRef,n.itemMap])},l]}var u=new WeakMap;function c(e,t){var r,n;let i,o,s;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let a=(r=e,n=t,i=r.length,(s=(o=d(n))>=0?o:i+o)<0||s>=i?-1:s);return -1===a?void 0:e[a]}function d(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],u.set(this,!0)}set(e,t){return u.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,r){let n,i=this.has(t),o=this.#e.length,s=d(e),a=s>=0?s:o+s,l=a<0||a>=o?-1:a;if(l===this.size||i&&l===this.size-1||-1===l)return this.set(t,r),this;let u=this.size+ +!i;s<0&&a++;let c=[...this.#e],f=!1;for(let e=a;e<u;e++)if(a===e){let o=c[e];c[e]===t&&(o=c[e+1]),i&&this.delete(t),n=this.get(o),this.set(t,r)}else{f||c[e-1]!==t||(f=!0);let r=c[f?e:e-1],i=n;n=this.get(r),this.delete(r),this.set(r,i)}return this}with(t,r,n){let i=new e(this);return i.insert(t,r,n),i}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n,t,r)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n+1,t,r)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=c(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=c(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return c(this.#e,e)}from(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.at(n)}keyFrom(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.keyAt(n)}find(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return n;r++}}findIndex(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return r;r++}return -1}filter(t,r){let n=[],i=0;for(let e of this)Reflect.apply(t,r,[e,i,this])&&n.push(e),i++;return new e(n)}map(t,r){let n=[],i=0;for(let e of this)n.push([e[0],Reflect.apply(t,r,[e,i,this])]),i++;return new e(n)}reduce(...e){let[t,r]=e,n=0,i=r??this.at(0);for(let r of this)i=0===n&&1===e.length?r:Reflect.apply(t,this,[i,r,n,this]),n++;return i}reduceRight(...e){let[t,r]=e,n=r??this.at(-1);for(let r=this.size-1;r>=0;r--){let i=this.at(r);n=r===this.size-1&&1===e.length?i:Reflect.apply(t,this,[n,i,r,this])}return n}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let r=this.keyAt(e),n=this.get(r);t.set(r,n)}return t}toSpliced(...t){let r=[...this.entries()];return r.splice(...t),new e(r)}slice(t,r){let n=new e,i=this.size-1;if(void 0===t)return n;t<0&&(t+=this.size),void 0!==r&&r>0&&(i=r-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),r=this.get(t);n.set(t,r)}return n}every(e,t){let r=0;for(let n of this){if(!Reflect.apply(e,t,[n,r,this]))return!1;r++}return!0}some(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return!0;r++}return!1}}),e.s(["createCollection",()=>l],75830)},86318,e=>{"use strict";var t=e.i(71645);e.i(18050);var r=t.createContext(void 0);function n(e){let n=t.useContext(r);return e||n||"ltr"}e.s(["useDirection",()=>n])},30207,e=>{"use strict";var t=e.i(71645);function r(e){let r=t.useRef(e);return t.useEffect(()=>{r.current=e}),t.useMemo(()=>(...e)=>r.current?.(...e),[])}e.s(["useCallbackRef",()=>r])},10772,e=>{"use strict";var t=e.i(71645),r=e.i(34620),n=t[" useId ".trim().toString()]||(()=>void 0),i=0;function o(e){let[o,s]=t.useState(n());return(0,r.useLayoutEffect)(()=>{e||s(e=>e??String(i++))},[e]),e||(o?`radix-${o}`:"")}e.s(["useId",()=>o])},96626,e=>{"use strict";var t=e.i(71645),r=e.i(20783),n=e.i(34620),i=e=>{var i;let s,a,{present:l,children:u}=e,c=function(e){var r,i;let[s,a]=t.useState(),l=t.useRef(null),u=t.useRef(e),c=t.useRef("none"),[d,f]=(r=e?"mounted":"unmounted",i={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>i[e][t]??e,r));return t.useEffect(()=>{let e=o(l.current);c.current="mounted"===d?e:"none"},[d]),(0,n.useLayoutEffect)(()=>{let t=l.current,r=u.current;if(r!==e){let n=c.current,i=o(t);e?f("MOUNT"):"none"===i||t?.display==="none"?f("UNMOUNT"):r&&n!==i?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),(0,n.useLayoutEffect)(()=>{if(s){let e,t=s.ownerDocument.defaultView??window,r=r=>{let n=o(l.current).includes(CSS.escape(r.animationName));if(r.target===s&&n&&(f("ANIMATION_END"),!u.current)){let r=s.style.animationFillMode;s.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===s.style.animationFillMode&&(s.style.animationFillMode=r)})}},n=e=>{e.target===s&&(c.current=o(l.current))};return s.addEventListener("animationstart",n),s.addEventListener("animationcancel",r),s.addEventListener("animationend",r),()=>{t.clearTimeout(e),s.removeEventListener("animationstart",n),s.removeEventListener("animationcancel",r),s.removeEventListener("animationend",r)}}f("ANIMATION_END")},[s,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback(e=>{l.current=e?getComputedStyle(e):null,a(e)},[])}}(l),d="function"==typeof u?u({present:c.isPresent}):t.Children.only(u),f=(0,r.useComposedRefs)(c.ref,(i=d,(a=(s=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in s&&s.isReactWarning)?i.ref:(a=(s=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in s&&s.isReactWarning)?i.props.ref:i.props.ref||i.ref));return"function"==typeof u||c.isPresent?t.cloneElement(d,{ref:f}):null};function o(e){return e?.animationName||"none"}i.displayName="Presence",e.s(["Presence",()=>i])},42727,e=>{"use strict";var t=e.i(71645),r=e.i(81140),n=e.i(75830),i=e.i(20783),o=e.i(30030),s=e.i(10772),a=e.i(48425),l=e.i(30207),u=e.i(69340),c=e.i(86318),d=e.i(18050),f="rovingFocusGroup.onEntryFocus",p={bubbles:!1,cancelable:!0},m="RovingFocusGroup",[h,g,y]=(0,n.createCollection)(m),[v,x]=(0,o.createContextScope)(m,[y]),[w,C]=v(m),b=t.forwardRef((e,t)=>(0,d.jsx)(h.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,d.jsx)(h.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,d.jsx)(A,{...e,ref:t})})}));b.displayName=m;var A=t.forwardRef((e,n)=>{let{__scopeRovingFocusGroup:o,orientation:s,loop:h=!1,dir:y,currentTabStopId:v,defaultCurrentTabStopId:x,onCurrentTabStopIdChange:C,onEntryFocus:b,preventScrollOnEntryFocus:A=!1,...k}=e,R=t.useRef(null),S=(0,i.useComposedRefs)(n,R),P=(0,c.useDirection)(y),[M,O]=(0,u.useControllableState)({prop:v,defaultProp:x??null,onChange:C,caller:m}),[T,N]=t.useState(!1),I=(0,l.useCallbackRef)(b),G=g(o),j=t.useRef(!1),[D,F]=t.useState(0);return t.useEffect(()=>{let e=R.current;if(e)return e.addEventListener(f,I),()=>e.removeEventListener(f,I)},[I]),(0,d.jsx)(w,{scope:o,orientation:s,dir:P,loop:h,currentTabStopId:M,onItemFocus:t.useCallback(e=>O(e),[O]),onItemShiftTab:t.useCallback(()=>N(!0),[]),onFocusableItemAdd:t.useCallback(()=>F(e=>e+1),[]),onFocusableItemRemove:t.useCallback(()=>F(e=>e-1),[]),children:(0,d.jsx)(a.Primitive.div,{tabIndex:T||0===D?-1:0,"data-orientation":s,...k,ref:S,style:{outline:"none",...e.style},onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,()=>{j.current=!0}),onFocus:(0,r.composeEventHandlers)(e.onFocus,e=>{let t=!j.current;if(e.target===e.currentTarget&&t&&!T){let t=new CustomEvent(f,p);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=G().filter(e=>e.focusable);E([e.find(e=>e.active),e.find(e=>e.id===M),...e].filter(Boolean).map(e=>e.ref.current),A)}}j.current=!1}),onBlur:(0,r.composeEventHandlers)(e.onBlur,()=>N(!1))})})}),k="RovingFocusGroupItem",R=t.forwardRef((e,n)=>{let{__scopeRovingFocusGroup:i,focusable:o=!0,active:l=!1,tabStopId:u,children:c,...f}=e,p=(0,s.useId)(),m=u||p,y=C(k,i),v=y.currentTabStopId===m,x=g(i),{onFocusableItemAdd:w,onFocusableItemRemove:b,currentTabStopId:A}=y;return t.useEffect(()=>{if(o)return w(),()=>b()},[o,w,b]),(0,d.jsx)(h.ItemSlot,{scope:i,id:m,focusable:o,active:l,children:(0,d.jsx)(a.Primitive.span,{tabIndex:v?0:-1,"data-orientation":y.orientation,...f,ref:n,onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,e=>{o?y.onItemFocus(m):e.preventDefault()}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>y.onItemFocus(m)),onKeyDown:(0,r.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void y.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return S[i]}(e,y.orientation,y.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=x().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let o=i.indexOf(e.currentTarget);i=y.loop?(r=i,n=o+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(o+1)}setTimeout(()=>E(i))}}),children:"function"==typeof c?c({isCurrentTabStop:v,hasTabStop:null!=A}):c})})});R.displayName=k;var S={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function E(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}e.s(["Item",()=>R,"Root",()=>b,"createRovingFocusGroupScope",()=>x])},37766,e=>{"use strict";let t=["claude-code","codex","gemini","qwen-code"],r={claudeCode:"pro",codex:"chatgpt",gemini:"oauth",qwenCode:"oauth"},n={"claude-code":{agent:"claude-code",label:"Claude Code",accessKey:"claudeCode",defaultAccess:"pro",accessOptions:[{id:"pro",label:"Claude Pro",description:"Shows the current Sonnet models that Claude Code documents for Pro usage."},{id:"max",label:"Claude Max",description:"Unlocks both Sonnet and Opus model choices in Claude Code."},{id:"api",label:"Anthropic API",description:"Use direct Anthropic API credentials instead of a Claude subscription."}]},codex:{agent:"codex",label:"Codex",accessKey:"codex",defaultAccess:"chatgpt",accessOptions:[{id:"chatgpt",label:"ChatGPT Plan",description:"Use the ChatGPT-backed Codex login flow for paid ChatGPT workspaces."},{id:"api",label:"OpenAI API",description:"Use direct OpenAI API credentials when Codex is pointed at the API."}]},gemini:{agent:"gemini",label:"Gemini",accessKey:"gemini",defaultAccess:"oauth",accessOptions:[{id:"oauth",label:"Google Login",description:"Use the built-in Google account flow that Gemini CLI ships with."},{id:"api",label:"Gemini API",description:"Use a Gemini API key or Vertex AI project for broader model control."}]},"qwen-code":{agent:"qwen-code",label:"Qwen Code",accessKey:"qwenCode",defaultAccess:"oauth",accessOptions:[{id:"oauth",label:"Qwen OAuth",description:"Use Qwen Code's built-in browser login and bundled provider defaults."},{id:"api",label:"DashScope / Custom API",description:"Use DashScope or another OpenAI-compatible endpoint configured for Qwen Code."}]}},i=[{id:"low",label:"Low",description:"Fast responses with lighter reasoning."},{id:"medium",label:"Medium",description:"Balanced speed and reasoning depth for everyday tasks."},{id:"high",label:"High",description:"Deeper reasoning for more complex tasks."}],o=[...i,{id:"xhigh",label:"Extra High",description:"Maximum reasoning depth for the hardest tasks."}];function s(e,t,r,n=function(e){return e.trim().split(/[-_]+/g).filter(Boolean).map(e=>"gpt"===e.toLowerCase()?"GPT":e[0]?.toUpperCase()+e.slice(1)).join(" ")}(e)){return{id:e,label:n,description:t,access:r}}let a={"claude-code":{modelsByAccess:{pro:[s("claude-sonnet-4-6","Balanced Claude Code model for day-to-day coding tasks.",["pro","max","api"],"Claude Sonnet 4.6"),s("claude-haiku-4-5","Fast Claude model for lightweight tasks.",["pro","max","api"],"Claude Haiku 4.5")],max:[s("claude-sonnet-4-6","Balanced Claude Code model for day-to-day coding tasks.",["pro","max","api"],"Claude Sonnet 4.6"),s("claude-opus-4-6","Highest-capability Claude Code model for deeper reasoning.",["max","api"],"Claude Opus 4.6"),s("claude-haiku-4-5","Fast Claude model for lightweight tasks.",["pro","max","api"],"Claude Haiku 4.5")],api:[s("claude-sonnet-4-6","Balanced Claude Code model for day-to-day coding tasks.",["pro","max","api"],"Claude Sonnet 4.6"),s("claude-opus-4-6","Highest-capability Claude Code model for deeper reasoning.",["max","api"],"Claude Opus 4.6"),s("claude-haiku-4-5","Fast Claude model for lightweight tasks.",["pro","max","api"],"Claude Haiku 4.5")]},defaultModelByAccess:{pro:"claude-sonnet-4-6",max:"claude-opus-4-6",api:"claude-sonnet-4-6"},reasoningOptionsByAccess:{pro:i,max:i,api:i},defaultReasoningByAccess:{pro:"medium",max:"high",api:"medium"}},codex:{modelsByAccess:{chatgpt:[s("gpt-5.4","Latest frontier coding model exposed by Codex.",["chatgpt","api"],"GPT-5.4"),s("gpt-5.3-codex","Balanced Codex coding model.",["chatgpt","api"],"GPT-5.3-Codex"),s("gpt-5.3-codex-spark","Fast Codex model optimized for rapid iteration.",["chatgpt"],"GPT-5.3-Codex-Spark"),s("gpt-5.2-codex","Previous generation Codex coding model.",["chatgpt","api"],"GPT-5.2-Codex"),s("gpt-5.1-codex-max","High-capability legacy Codex model.",["chatgpt","api"],"GPT-5.1-Codex-Max"),s("gpt-5.1-codex-mini","Smaller Codex model for quick tasks.",["chatgpt","api"],"GPT-5.1-Codex-Mini")],api:[s("gpt-5.4","Latest frontier coding model exposed by Codex.",["chatgpt","api"],"GPT-5.4"),s("gpt-5.3-codex","Balanced Codex coding model.",["chatgpt","api"],"GPT-5.3-Codex"),s("gpt-5.2-codex","Previous generation Codex coding model.",["chatgpt","api"],"GPT-5.2-Codex"),s("gpt-5.1-codex-max","High-capability legacy Codex model.",["chatgpt","api"],"GPT-5.1-Codex-Max"),s("gpt-5.1-codex-mini","Smaller Codex model for quick tasks.",["chatgpt","api"],"GPT-5.1-Codex-Mini")]},defaultModelByAccess:{chatgpt:"gpt-5.4",api:"gpt-5.4"},reasoningOptionsByAccess:{chatgpt:o,api:o},defaultReasoningByAccess:{chatgpt:"high",api:"high"}},gemini:{modelsByAccess:{oauth:[s("gemini-3.1-pro-preview","High-capability Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3.1 Pro Preview"),s("gemini-3-flash-preview","Fast Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3 Flash Preview")],api:[s("gemini-3.1-pro-preview","High-capability Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3.1 Pro Preview"),s("gemini-3-flash-preview","Fast Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3 Flash Preview")]},defaultModelByAccess:{oauth:"gemini-3.1-pro-preview",api:"gemini-3.1-pro-preview"}},"qwen-code":{modelsByAccess:{oauth:[s("coder-model","Model discovered in the local Qwen Code installation.",["oauth","api"],"Coder Model")],api:[s("coder-model","Model discovered in the local Qwen Code installation.",["oauth","api"],"Coder Model")]},defaultModelByAccess:{oauth:"coder-model",api:"coder-model"}}};function l(e){let r=e.trim().toLowerCase().replace(/[_\s]+/g,"-");return t.includes(r)?r:null}function u(){return{...r}}function c(e){return null!==l(e)}function d(e){let t=l(e);return t?n[t]:null}function f(e,t){let r=d(e);if(!r)return null;let n=t?.[r.accessKey];return"string"==typeof n&&r.accessOptions.some(e=>e.id===n)?n:r.defaultAccess}function p(e,t){let r=l(e);if(!r)return[];let n=f(r,t);if(!n)return[];let i=a[r],o=i.modelsByAccess[n]??[];if(o.length>0)return[...o];let s=[],u=new Set;for(let e of Object.values(i.modelsByAccess))if(Array.isArray(e))for(let t of e)u.has(t.id)||(u.add(t.id),s.push(t));return s}function m(e,t){let r=l(e);if(!r)return null;let n=f(r,t);return n?a[r].defaultModelByAccess[n]??null:null}function h(e,t){let r=l(e);if(!r)return[];let n=f(r,t);return n?a[r].reasoningOptionsByAccess?.[n]??[]:[]}function g(e,t){let r=l(e);if(!r)return null;let n=f(r,t);return n?a[r].defaultReasoningByAccess?.[n]??null:null}e.s(["getAgentModelCatalog",()=>d,"getAvailableAgentModels",()=>p,"getAvailableAgentReasoningEfforts",()=>h,"getDefaultAgentModel",()=>m,"getDefaultAgentReasoningEffort",()=>g,"getDefaultModelAccessPreferences",()=>u,"resolveAgentModelAccess",()=>f,"supportsAgentModelSelection",()=>c])},43531,e=>{"use strict";let t=(0,e.i(75254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],43531)},64659,e=>{"use strict";let t=(0,e.i(75254).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>t],64659)},74886,e=>{"use strict";let t=(0,e.i(75254).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],74886)},75505,e=>{"use strict";let t=(0,e.i(75254).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",()=>t],75505)},90272,e=>{"use strict";let t=(0,e.i(75254).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);e.s(["FolderGit2",()=>t],90272)},37727,e=>{"use strict";let t=(0,e.i(75254).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>t],37727)},81633,e=>{"use strict";function t(e){return e.trim().toLowerCase().replace(/[_\s]+/g,"-")}e.s(["normalizeAgentName",()=>t])},97878,e=>{"use strict";let t=new Set,r=null,n=null;function i(e){return Array.isArray(e)?{type:"snapshot",sessions:e}:e&&"object"==typeof e&&"snapshot"===e.type&&Array.isArray(e.sessions)?e:null}function o(e){for(let r of t)r(e)}async function s(){if("function"!=typeof fetch)return;let e=(async()=>{try{let e=await fetch("/api/sessions");if(!e.ok)return;let t=await e.json().catch(()=>null),r=i(t);if(!r)return;o(r)}catch{}})();n=e.finally(()=>{n===e&&(n=null)}),await e}function a(e){return t.add(e),!r&&"u">typeof EventSource&&((r=new EventSource("/api/events")).onmessage=e=>{try{let t=i(JSON.parse(e.data));if(!t)return;o(t)}catch{}},r.addEventListener("refresh",()=>{n||s()}),r.onerror=()=>{0===t.size&&(r?.close(),r=null)}),()=>{t.delete(e),0===t.size&&r&&(r.close(),r=null)}}e.s(["subscribeToSnapshotEvents",()=>a])},78818,e=>{"use strict";var t=e.i(71645);let r=new Set,n=[],i=!0,o=0,s=null,a=null;function l(){for(let e of r)e()}function u(){return{agents:n,loading:i}}function c(){return n.length>0&&Date.now()-o<3e4}function d(){null===a&&(a=window.setTimeout(()=>{a=null,f(!0)},1e4))}async function f(e=!1){if(!e&&c()){i&&(i=!1,l());return}return s||(i=!0,l(),s=(async()=>{try{var e;let t=await fetch("/api/agents",{cache:"no-store"});if(!t.ok)throw Error(`Failed to fetch agents: ${t.status}`);let r=(e=await t.json(),Array.isArray(e)?e:e&&"object"==typeof e&&"agents"in e&&Array.isArray(e.agents)?e.agents:[]);r.length>0?(n=r,o=Date.now(),null!==a&&(window.clearTimeout(a),a=null)):d()}catch{d()}finally{i=!1,s=null,l()}})())}function p(){let[e,n]=(0,t.useState)(()=>u());return(0,t.useEffect)(()=>{let e=()=>n(u());r.add(e),e(),f();let t=()=>{c()||f(!0)},i=()=>{"visible"!==document.visibilityState||c()||f(!0)};return window.addEventListener("focus",t),document.addEventListener("visibilitychange",i),()=>{r.delete(e),window.removeEventListener("focus",t),document.removeEventListener("visibilitychange",i)}},[]),e}e.s(["useAgents",()=>p])},52808,e=>{"use strict";let t=new Set(["archived","done","killed","errored","terminated","merged","cleanup"]);function r(e){return"merged"===e.status||"archived"===e.status||"killed"===e.status||"errored"===e.status||"cleanup"===e.status||"done"===e.status||"terminated"===e.status||e.pr&&("merged"===e.pr.state||"closed"===e.pr.state)?"done":"mergeable"===e.status||"approved"===e.status||e.pr?.mergeability.mergeable?"merge":"waiting_input"===e.activity||"blocked"===e.activity||"needs_input"===e.status||"stuck"===e.status||"exited"===e.activity?"respond":"ci_failed"===e.status||"changes_requested"===e.status||e.pr&&("failing"===e.pr.ciStatus||"changes_requested"===e.pr.reviewDecision||!e.pr.mergeability.noConflicts)?"review":"review_pending"===e.status||e.pr&&!e.pr.isDraft&&("pending"===e.pr.reviewDecision||"none"===e.pr.reviewDecision)?"pending":"working"}e.s(["TERMINAL_STATUSES",0,t,"getAttentionLevel",()=>r])},55716,e=>{"use strict";let t=(0,e.i(75254).default)("git-branch",[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]);e.s(["GitBranch",()=>t],55716)},17442,e=>{"use strict";var t=e.i(18050),r=e.i(18620);let n={default:"border-[var(--vk-border)] bg-[var(--vk-bg-panel)] text-[var(--vk-text-muted)]",success:"border-transparent bg-transparent text-[var(--vk-green)]",warning:"border-transparent bg-transparent text-[var(--vk-orange)]",error:"border-transparent bg-transparent text-[var(--vk-red)]",info:"border-transparent bg-transparent text-[var(--vk-text-muted)]",outline:"border-[var(--vk-border)] bg-transparent text-[var(--vk-text-muted)]"};function i({variant:e="default",className:i,children:o}){return(0,t.jsx)("span",{className:(0,r.cn)("inline-flex items-center gap-1 rounded-[3px] border px-1.5 py-0.5 text-[11px] leading-none",n[e],i),children:o})}e.s(["Badge",()=>i])},90993,e=>{"use strict";var t=e.i(18050),r=e.i(18620);let n=(0,e.i(71645).forwardRef)(({className:e,...n},i)=>(0,t.jsx)("div",{ref:i,className:(0,r.cn)("surface-card rounded-[var(--radius-md)] border",e),...n}));function i({className:e,...n}){return(0,t.jsx)("div",{className:(0,r.cn)("flex items-center gap-2 border-b border-[var(--vk-border)] px-3 py-2",e),...n})}function o({className:e,...n}){return(0,t.jsx)("div",{className:(0,r.cn)("px-3 py-2",e),...n})}n.displayName="Card",e.s(["Card",0,n,"CardContent",()=>o,"CardHeader",()=>i])}]);
@@ -8,7 +8,7 @@
8
8
  "scripts": {
9
9
  "dev": "next dev -p ${PORT:-3000}",
10
10
  "build": "next build",
11
- "start": "PORT=${PORT:-3000} HOSTNAME=${HOSTNAME:-0.0.0.0} node .next/standalone/packages/web/server.js",
11
+ "start": "next start",
12
12
  "typecheck": "tsc --noEmit",
13
13
  "clean": "rm -rf .next"
14
14
  },
@@ -1,214 +1,6 @@
1
- import { type NextRequest, NextResponse } from "next/server";
2
- import { readFile, writeFile } from "node:fs/promises";
3
- import { parse, stringify } from "yaml";
4
- import type { DashboardAccessConfig, DashboardRoleBindings } from "@conductor-oss/core/types";
5
- import { getDashboardAccess, guardApiAccess, guardApiActionAccess } from "@/lib/auth";
6
- import { getServices, invalidateServicesCache } from "@/lib/services";
7
- import { normalizeRootProjectPaths } from "@/lib/projectConfigSync";
1
+ import { guardedProxyRoute } from "@/lib/proxyRoutes";
8
2
 
9
3
  export const dynamic = "force-dynamic";
10
4
 
11
- type MutableConfig = Record<string, unknown>;
12
-
13
- type AccessPatchBody = {
14
- requireAuth?: unknown;
15
- defaultRole?: unknown;
16
- trustedHeaders?: unknown;
17
- roles?: unknown;
18
- };
19
-
20
- function toObject(value: unknown): Record<string, unknown> {
21
- if (!value || typeof value !== "object" || Array.isArray(value)) return {};
22
- return { ...(value as Record<string, unknown>) };
23
- }
24
-
25
- function asOptionalRole(value: unknown): DashboardAccessConfig["defaultRole"] | undefined {
26
- if (value === "viewer" || value === "operator" || value === "admin") {
27
- return value;
28
- }
29
- return undefined;
30
- }
31
-
32
- function normalizeStringList(value: unknown): string[] {
33
- if (Array.isArray(value)) {
34
- return value
35
- .filter((item): item is string => typeof item === "string")
36
- .map((item) => item.trim())
37
- .filter(Boolean);
38
- }
39
- if (typeof value !== "string") return [];
40
- return value
41
- .split(/[\n,]+/g)
42
- .map((item) => item.trim())
43
- .filter(Boolean);
44
- }
45
-
46
- function normalizeRoles(value: unknown): DashboardRoleBindings | undefined {
47
- const root = toObject(value);
48
- const next: DashboardRoleBindings = {};
49
-
50
- const viewers = normalizeStringList(root["viewers"]);
51
- const operators = normalizeStringList(root["operators"]);
52
- const admins = normalizeStringList(root["admins"]);
53
- const viewerDomains = normalizeStringList(root["viewerDomains"]);
54
- const operatorDomains = normalizeStringList(root["operatorDomains"]);
55
- const adminDomains = normalizeStringList(root["adminDomains"]);
56
-
57
- if (viewers.length > 0) next.viewers = viewers;
58
- if (operators.length > 0) next.operators = operators;
59
- if (admins.length > 0) next.admins = admins;
60
- if (viewerDomains.length > 0) next.viewerDomains = viewerDomains;
61
- if (operatorDomains.length > 0) next.operatorDomains = operatorDomains;
62
- if (adminDomains.length > 0) next.adminDomains = adminDomains;
63
-
64
- return Object.keys(next).length > 0 ? next : undefined;
65
- }
66
-
67
- function normalizeAccessConfig(value: unknown): DashboardAccessConfig {
68
- const root = toObject(value);
69
- const trustedHeaders = toObject(root["trustedHeaders"]);
70
- const defaultRole = asOptionalRole(root["defaultRole"]);
71
-
72
- const next: DashboardAccessConfig = {
73
- requireAuth: root["requireAuth"] === true,
74
- trustedHeaders: {
75
- enabled: trustedHeaders["enabled"] === true,
76
- provider:
77
- trustedHeaders["provider"] === "generic"
78
- ? "generic"
79
- : "cloudflare-access",
80
- emailHeader:
81
- (typeof trustedHeaders["emailHeader"] === "string" && trustedHeaders["emailHeader"].trim().length > 0
82
- ? trustedHeaders["emailHeader"].trim()
83
- : "Cf-Access-Authenticated-User-Email"),
84
- jwtHeader:
85
- (typeof trustedHeaders["jwtHeader"] === "string" && trustedHeaders["jwtHeader"].trim().length > 0
86
- ? trustedHeaders["jwtHeader"].trim()
87
- : "Cf-Access-Jwt-Assertion"),
88
- },
89
- };
90
-
91
- if (typeof trustedHeaders["teamDomain"] === "string" && trustedHeaders["teamDomain"].trim().length > 0) {
92
- next.trustedHeaders!.teamDomain = trustedHeaders["teamDomain"].trim();
93
- }
94
-
95
- if (typeof trustedHeaders["audience"] === "string" && trustedHeaders["audience"].trim().length > 0) {
96
- next.trustedHeaders!.audience = trustedHeaders["audience"].trim();
97
- }
98
-
99
- if (defaultRole) {
100
- next.defaultRole = defaultRole;
101
- }
102
-
103
- const roles = normalizeRoles(root["roles"]);
104
- if (roles) {
105
- next.roles = roles;
106
- }
107
-
108
- return next;
109
- }
110
-
111
- export async function GET(request: NextRequest) {
112
- const denied = await guardApiAccess(request, "viewer");
113
- if (denied) return denied;
114
-
115
- try {
116
- const { config } = await getServices();
117
- const access = normalizeAccessConfig(config.access);
118
- const current = await getDashboardAccess(request);
119
-
120
- return NextResponse.json({
121
- access,
122
- current: {
123
- authenticated: current.authenticated,
124
- role: current.role ?? null,
125
- email: current.email ?? null,
126
- provider: current.provider ?? null,
127
- },
128
- });
129
- } catch (err) {
130
- const message = err instanceof Error ? err.message : "Failed to load access settings";
131
- return NextResponse.json({ error: message }, { status: 500 });
132
- }
133
- }
134
-
135
- export async function PUT(request: NextRequest) {
136
- const denied = await guardApiAccess(request, "admin");
137
- if (denied) return denied;
138
- const deniedAction = guardApiActionAccess(request);
139
- if (deniedAction) return deniedAction;
140
-
141
- const body = (await request.json().catch(() => null)) as AccessPatchBody | null;
142
- if (!body || typeof body !== "object") {
143
- return NextResponse.json({ error: "Invalid JSON body" }, { status: 400 });
144
- }
145
-
146
- try {
147
- const { config } = await getServices();
148
- const configPath = config.configPath;
149
- if (!configPath) {
150
- return NextResponse.json({ error: "Unable to resolve conductor config path" }, { status: 500 });
151
- }
152
-
153
- const originalConfigRaw = await readFile(configPath, "utf8");
154
- const parsed = (parse(originalConfigRaw) ?? {}) as MutableConfig;
155
- const nextRoot: MutableConfig =
156
- parsed && typeof parsed === "object" && !Array.isArray(parsed)
157
- ? { ...parsed }
158
- : {};
159
-
160
- const nextAccess = normalizeAccessConfig(nextRoot["access"]);
161
-
162
- if (typeof body.requireAuth === "boolean") {
163
- nextAccess.requireAuth = body.requireAuth;
164
- }
165
-
166
- if (body.defaultRole !== undefined) {
167
- nextAccess.defaultRole = asOptionalRole(body.defaultRole);
168
- }
169
-
170
- if (body.trustedHeaders !== undefined) {
171
- const nextTrusted = toObject(body.trustedHeaders);
172
- nextAccess.trustedHeaders = {
173
- enabled: nextTrusted["enabled"] === true,
174
- emailHeader:
175
- (typeof nextTrusted["emailHeader"] === "string" && nextTrusted["emailHeader"].trim().length > 0
176
- ? nextTrusted["emailHeader"].trim()
177
- : "Cf-Access-Authenticated-User-Email"),
178
- };
179
- }
180
-
181
- if (body.roles !== undefined) {
182
- nextAccess.roles = normalizeRoles(body.roles);
183
- }
184
-
185
- nextRoot["access"] = nextAccess;
186
- await normalizeRootProjectPaths(nextRoot);
187
-
188
- const updatedYaml = stringify(nextRoot, { lineWidth: 0 });
189
- await writeFile(configPath, updatedYaml, "utf8");
190
-
191
- try {
192
- invalidateServicesCache("access updated");
193
- await getServices();
194
- } catch (err) {
195
- await writeFile(configPath, originalConfigRaw, "utf8");
196
- invalidateServicesCache("access update rollback");
197
- throw err;
198
- }
199
-
200
- const current = await getDashboardAccess(request);
201
- return NextResponse.json({
202
- access: nextAccess,
203
- current: {
204
- authenticated: current.authenticated,
205
- role: current.role ?? null,
206
- email: current.email ?? null,
207
- provider: current.provider ?? null,
208
- },
209
- });
210
- } catch (err) {
211
- const message = err instanceof Error ? err.message : "Failed to update access settings";
212
- return NextResponse.json({ error: message }, { status: 500 });
213
- }
214
- }
5
+ export const GET = guardedProxyRoute("/api/access", { role: "viewer" });
6
+ export const PUT = guardedProxyRoute("/api/access", { role: "admin", requireActionGuard: true });
@@ -0,0 +1,5 @@
1
+ import { guardedProxyRoute } from "@/lib/proxyRoutes";
2
+
3
+ export const dynamic = "force-dynamic";
4
+
5
+ export const GET = guardedProxyRoute("/api/agents", { role: "viewer" });
@@ -1,169 +1,5 @@
1
- import { type NextRequest, NextResponse } from "next/server";
2
- import { randomBytes } from "node:crypto";
3
- import { mkdir, writeFile } from "node:fs/promises";
4
- import { homedir } from "node:os";
5
- import { dirname, relative, resolve, sep } from "node:path";
6
- import type { OrchestratorConfig } from "@conductor-oss/core";
7
- import { guardApiAccess, guardApiActionAccess } from "@/lib/auth";
8
- import { getServices } from "@/lib/services";
1
+ import { guardedProxyRoute } from "@/lib/proxyRoutes";
9
2
 
10
3
  export const dynamic = "force-dynamic";
11
4
 
12
- const MAX_UPLOAD_FILES = 20;
13
- const MAX_UPLOAD_BYTES = 25 * 1024 * 1024; // 25MB per file
14
-
15
- const IMAGE_EXTENSIONS = new Set([
16
- ".png", ".jpg", ".jpeg", ".gif", ".webp", ".svg", ".bmp", ".ico", ".tiff",
17
- ]);
18
-
19
- function asNonEmptyString(value: unknown): string | null {
20
- if (typeof value !== "string") return null;
21
- const trimmed = value.trim();
22
- return trimmed.length > 0 ? trimmed : null;
23
- }
24
-
25
- function expandHome(value: string): string {
26
- if (value.startsWith("~/")) {
27
- return resolve(homedir(), value.slice(2));
28
- }
29
- return resolve(value);
30
- }
31
-
32
- function resolveWorkspacePath(config: OrchestratorConfig): string {
33
- if (process.env["CONDUCTOR_WORKSPACE"]?.trim()) {
34
- return expandHome(process.env["CONDUCTOR_WORKSPACE"]);
35
- }
36
- if (config.configPath) {
37
- return dirname(config.configPath);
38
- }
39
- return resolve(process.cwd());
40
- }
41
-
42
- function normalizeToken(value: string): string {
43
- const input = value.trim().toLowerCase();
44
- let out = "";
45
- let prevDash = false;
46
- for (const ch of input) {
47
- const code = ch.charCodeAt(0);
48
- const isDigit = code >= 48 && code <= 57;
49
- const isLowerAlpha = code >= 97 && code <= 122;
50
- const isSafe = isDigit || isLowerAlpha || ch === "." || ch === "_";
51
- if (isSafe) {
52
- out += ch;
53
- prevDash = false;
54
- continue;
55
- }
56
- if (!prevDash && out.length > 0) {
57
- out += "-";
58
- prevDash = true;
59
- }
60
- }
61
- while (out.endsWith("-")) out = out.slice(0, -1);
62
- return out || "project";
63
- }
64
-
65
- function sanitizeFileName(value: string): string {
66
- const trimmed = value.trim();
67
- if (!trimmed) return "upload.bin";
68
- const normalized = trimmed
69
- .replaceAll("\\", "/")
70
- .split("/")
71
- .filter(Boolean)
72
- .pop() ?? "upload.bin";
73
- const safe = normalized
74
- .replace(/[^A-Za-z0-9._-]+/g, "-")
75
- .replace(/-+/g, "-")
76
- .replace(/^\.+/, "")
77
- .replace(/^-+/, "");
78
- return safe || "upload.bin";
79
- }
80
-
81
- function isImagePath(path: string): boolean {
82
- const lower = path.toLowerCase();
83
- for (const ext of IMAGE_EXTENSIONS) {
84
- if (lower.endsWith(ext)) return true;
85
- }
86
- return false;
87
- }
88
-
89
- export async function POST(request: NextRequest) {
90
- const denied = await guardApiAccess(request, "operator");
91
- if (denied) return denied;
92
- const deniedAction = guardApiActionAccess(request);
93
- if (deniedAction) return deniedAction;
94
-
95
- try {
96
- const form = await request.formData();
97
- const projectId = asNonEmptyString(form.get("projectId"));
98
- if (!projectId) {
99
- return NextResponse.json({ error: "projectId is required" }, { status: 400 });
100
- }
101
-
102
- const incoming = form.getAll("files").filter((item): item is File => item instanceof File);
103
- if (incoming.length === 0) {
104
- return NextResponse.json({ error: "No files uploaded" }, { status: 400 });
105
- }
106
- if (incoming.length > MAX_UPLOAD_FILES) {
107
- return NextResponse.json(
108
- { error: `Too many files. Max ${MAX_UPLOAD_FILES} files per request.` },
109
- { status: 400 },
110
- );
111
- }
112
-
113
- const { config } = await getServices();
114
- if (!config.projects[projectId]) {
115
- return NextResponse.json({ error: `Unknown project: ${projectId}` }, { status: 404 });
116
- }
117
-
118
- const workspaceRoot = resolveWorkspacePath(config);
119
- const projectSegment = normalizeToken(projectId);
120
- const targetDir = resolve(workspaceRoot, "attachments", projectSegment);
121
- const workspacePrefix = workspaceRoot.endsWith(sep) ? workspaceRoot : `${workspaceRoot}${sep}`;
122
- if (targetDir !== workspaceRoot && !targetDir.startsWith(workspacePrefix)) {
123
- return NextResponse.json({ error: "Upload path escapes workspace" }, { status: 400 });
124
- }
125
- await mkdir(targetDir, { recursive: true });
126
-
127
- const uploaded: Array<{
128
- path: string;
129
- name: string;
130
- size: number;
131
- mimeType: string | null;
132
- kind: "image" | "file";
133
- }> = [];
134
-
135
- for (const [index, file] of incoming.entries()) {
136
- if (file.size > MAX_UPLOAD_BYTES) {
137
- return NextResponse.json(
138
- { error: `File "${file.name}" exceeds 25MB limit.` },
139
- { status: 413 },
140
- );
141
- }
142
- const safeName = sanitizeFileName(file.name);
143
- const uniquePrefix = `${Date.now()}-${index}-${randomBytes(3).toString("hex")}`;
144
- const fileName = `${uniquePrefix}-${safeName}`;
145
- const absolutePath = resolve(targetDir, fileName);
146
- if (absolutePath !== workspaceRoot && !absolutePath.startsWith(workspacePrefix)) {
147
- return NextResponse.json({ error: "Resolved upload path escapes workspace" }, { status: 400 });
148
- }
149
-
150
- const bytes = Buffer.from(await file.arrayBuffer());
151
- await writeFile(absolutePath, bytes);
152
- const relPath = relative(workspaceRoot, absolutePath).replaceAll("\\", "/");
153
- uploaded.push({
154
- path: relPath,
155
- name: file.name || safeName,
156
- size: file.size,
157
- mimeType: file.type || null,
158
- kind: isImagePath(relPath) ? "image" : "file",
159
- });
160
- }
161
-
162
- return NextResponse.json({ files: uploaded }, { status: 201 });
163
- } catch (err) {
164
- return NextResponse.json(
165
- { error: err instanceof Error ? err.message : "Failed to upload files" },
166
- { status: 500 },
167
- );
168
- }
169
- }
5
+ export const POST = guardedProxyRoute("/api/attachments", { role: "operator", requireActionGuard: true });
@@ -1,54 +1,6 @@
1
- import { type NextRequest, NextResponse } from "next/server";
2
- import {
3
- BUILTIN_REMOTE_SESSION_COOKIE,
4
- createBuiltinRemoteSessionValue,
5
- getBuiltinRemoteSessionCookieOptions,
6
- isBuiltinRemoteAuthEnabled,
7
- isValidBuiltinAccessToken,
8
- } from "@/lib/remoteAuth";
1
+ import { openProxyRoute } from "@/lib/proxyRoutes";
9
2
 
10
- type SessionRequestBody = {
11
- token?: unknown;
12
- };
3
+ export const dynamic = "force-dynamic";
13
4
 
14
- function clearSession(response: NextResponse): void {
15
- response.cookies.set(BUILTIN_REMOTE_SESSION_COOKIE, "", {
16
- ...getBuiltinRemoteSessionCookieOptions(false),
17
- maxAge: 0,
18
- });
19
- }
20
-
21
- export async function POST(request: NextRequest): Promise<NextResponse> {
22
- if (!isBuiltinRemoteAuthEnabled()) {
23
- return NextResponse.json({ error: "Built-in remote auth is not enabled" }, { status: 404 });
24
- }
25
-
26
- const body = (await request.json().catch(() => null)) as SessionRequestBody | null;
27
- const token = typeof body?.token === "string" ? body.token.trim() : "";
28
- if (!isValidBuiltinAccessToken(token)) {
29
- return NextResponse.json({ error: "Invalid access token" }, { status: 403 });
30
- }
31
-
32
- const response = NextResponse.json({ ok: true });
33
- response.cookies.set(
34
- BUILTIN_REMOTE_SESSION_COOKIE,
35
- await createBuiltinRemoteSessionValue(),
36
- getBuiltinRemoteSessionCookieOptions(request.nextUrl.protocol === "https:"),
37
- );
38
- return response;
39
- }
40
-
41
- export async function DELETE(request: NextRequest): Promise<NextResponse> {
42
- const response = NextResponse.json({ ok: true });
43
- clearSession(response);
44
-
45
- if (!isBuiltinRemoteAuthEnabled()) {
46
- return response;
47
- }
48
-
49
- response.cookies.set(BUILTIN_REMOTE_SESSION_COOKIE, "", {
50
- ...getBuiltinRemoteSessionCookieOptions(request.nextUrl.protocol === "https:"),
51
- maxAge: 0,
52
- });
53
- return response;
54
- }
5
+ export const POST = openProxyRoute("/api/auth/session");
6
+ export const DELETE = openProxyRoute("/api/auth/session");