@mrpatronz/nexusflow 2.9.0 → 2.10.0

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 (732) hide show
  1. package/README.md +172 -113
  2. package/dist/agent/AcpCliAdapter.d.ts +2 -0
  3. package/dist/agent/AcpCliAdapter.d.ts.map +1 -1
  4. package/dist/agent/AcpCliAdapter.js +50 -4
  5. package/dist/agent/AcpCliAdapter.js.map +1 -1
  6. package/dist/agent/AntigravityCliAdapter.d.ts +44 -2
  7. package/dist/agent/AntigravityCliAdapter.d.ts.map +1 -1
  8. package/dist/agent/AntigravityCliAdapter.js +363 -16
  9. package/dist/agent/AntigravityCliAdapter.js.map +1 -1
  10. package/dist/agent/ClaudeCliAdapter.d.ts +3 -0
  11. package/dist/agent/ClaudeCliAdapter.d.ts.map +1 -1
  12. package/dist/agent/ClaudeCliAdapter.js +37 -10
  13. package/dist/agent/ClaudeCliAdapter.js.map +1 -1
  14. package/dist/agent/ClaudeSdkAdapter.d.ts +1 -0
  15. package/dist/agent/ClaudeSdkAdapter.d.ts.map +1 -1
  16. package/dist/agent/ClaudeSdkAdapter.js +38 -11
  17. package/dist/agent/ClaudeSdkAdapter.js.map +1 -1
  18. package/dist/agent/CliAdapterBase.d.ts +2 -0
  19. package/dist/agent/CliAdapterBase.d.ts.map +1 -1
  20. package/dist/agent/CliAdapterBase.js +5 -1
  21. package/dist/agent/CliAdapterBase.js.map +1 -1
  22. package/dist/agent/CodexCliAdapter.d.ts +1 -1
  23. package/dist/agent/CodexCliAdapter.d.ts.map +1 -1
  24. package/dist/agent/CodexCliAdapter.js +5 -4
  25. package/dist/agent/CodexCliAdapter.js.map +1 -1
  26. package/dist/agent/CodexSdkAdapter.d.ts.map +1 -1
  27. package/dist/agent/CodexSdkAdapter.js +4 -1
  28. package/dist/agent/CodexSdkAdapter.js.map +1 -1
  29. package/dist/agent/CopilotAcpAdapter.d.ts.map +1 -1
  30. package/dist/agent/CopilotAcpAdapter.js +2 -2
  31. package/dist/agent/CopilotAcpAdapter.js.map +1 -1
  32. package/dist/agent/ProviderRegistry.d.ts +8 -1
  33. package/dist/agent/ProviderRegistry.d.ts.map +1 -1
  34. package/dist/agent/ProviderRegistry.js.map +1 -1
  35. package/dist/agent/TurnSessionManager.d.ts +65 -0
  36. package/dist/agent/TurnSessionManager.d.ts.map +1 -0
  37. package/dist/agent/TurnSessionManager.js +330 -0
  38. package/dist/agent/TurnSessionManager.js.map +1 -0
  39. package/dist/agent/adapters.d.ts.map +1 -1
  40. package/dist/agent/adapters.js +23 -6
  41. package/dist/agent/adapters.js.map +1 -1
  42. package/dist/agent/cliAvailability.d.ts.map +1 -1
  43. package/dist/agent/cliAvailability.js +12 -0
  44. package/dist/agent/cliAvailability.js.map +1 -1
  45. package/dist/agent/mcp-config.d.ts +0 -5
  46. package/dist/agent/mcp-config.d.ts.map +1 -1
  47. package/dist/agent/mcp-config.js +2 -1
  48. package/dist/agent/mcp-config.js.map +1 -1
  49. package/dist/agent/models.d.ts +13 -0
  50. package/dist/agent/models.d.ts.map +1 -1
  51. package/dist/agent/models.js +262 -8
  52. package/dist/agent/models.js.map +1 -1
  53. package/dist/agent/nativeTools.d.ts.map +1 -1
  54. package/dist/agent/nativeTools.js +1 -0
  55. package/dist/agent/nativeTools.js.map +1 -1
  56. package/dist/agent/orchestrator.d.ts.map +1 -1
  57. package/dist/agent/orchestrator.js +3 -2
  58. package/dist/agent/orchestrator.js.map +1 -1
  59. package/dist/agent/session.d.ts +1 -0
  60. package/dist/agent/session.d.ts.map +1 -1
  61. package/dist/agent/session.js.map +1 -1
  62. package/dist/analyzers/detect-deps.js +16 -1
  63. package/dist/analyzers/detect-deps.js.map +1 -1
  64. package/dist/analyzers/run-analyzer.d.ts.map +1 -1
  65. package/dist/analyzers/run-analyzer.js.map +1 -1
  66. package/dist/commands/adapter.d.ts.map +1 -1
  67. package/dist/commands/adapter.js +15 -14
  68. package/dist/commands/adapter.js.map +1 -1
  69. package/dist/commands/add-repo.d.ts.map +1 -1
  70. package/dist/commands/add-repo.js +6 -5
  71. package/dist/commands/add-repo.js.map +1 -1
  72. package/dist/commands/commit.js +6 -8
  73. package/dist/commands/commit.js.map +1 -1
  74. package/dist/commands/config.d.ts.map +1 -1
  75. package/dist/commands/config.js +2 -1
  76. package/dist/commands/config.js.map +1 -1
  77. package/dist/commands/create.d.ts +4 -4
  78. package/dist/commands/create.d.ts.map +1 -1
  79. package/dist/commands/create.js +8 -7
  80. package/dist/commands/create.js.map +1 -1
  81. package/dist/commands/desktop.d.ts +44 -3
  82. package/dist/commands/desktop.d.ts.map +1 -1
  83. package/dist/commands/desktop.js +246 -7
  84. package/dist/commands/desktop.js.map +1 -1
  85. package/dist/commands/diff.d.ts.map +1 -1
  86. package/dist/commands/diff.js +3 -2
  87. package/dist/commands/diff.js.map +1 -1
  88. package/dist/commands/doctor.d.ts.map +1 -1
  89. package/dist/commands/doctor.js +3 -2
  90. package/dist/commands/doctor.js.map +1 -1
  91. package/dist/commands/finish.js +2 -1
  92. package/dist/commands/finish.js.map +1 -1
  93. package/dist/commands/handoff.d.ts.map +1 -1
  94. package/dist/commands/handoff.js +12 -12
  95. package/dist/commands/handoff.js.map +1 -1
  96. package/dist/commands/init.d.ts +2 -2
  97. package/dist/commands/init.d.ts.map +1 -1
  98. package/dist/commands/init.js +8 -7
  99. package/dist/commands/init.js.map +1 -1
  100. package/dist/commands/isolate.d.ts.map +1 -1
  101. package/dist/commands/isolate.js +2 -1
  102. package/dist/commands/isolate.js.map +1 -1
  103. package/dist/commands/knowledge.d.ts.map +1 -1
  104. package/dist/commands/knowledge.js +3 -2
  105. package/dist/commands/knowledge.js.map +1 -1
  106. package/dist/commands/list.d.ts.map +1 -1
  107. package/dist/commands/list.js +3 -2
  108. package/dist/commands/list.js.map +1 -1
  109. package/dist/commands/logs.js +3 -3
  110. package/dist/commands/logs.js.map +1 -1
  111. package/dist/commands/mcp.d.ts +1 -2
  112. package/dist/commands/mcp.d.ts.map +1 -1
  113. package/dist/commands/mcp.js +19 -12
  114. package/dist/commands/mcp.js.map +1 -1
  115. package/dist/commands/migrate.d.ts +12 -0
  116. package/dist/commands/migrate.d.ts.map +1 -0
  117. package/dist/commands/migrate.js +128 -0
  118. package/dist/commands/migrate.js.map +1 -0
  119. package/dist/commands/open.d.ts.map +1 -1
  120. package/dist/commands/open.js +2 -1
  121. package/dist/commands/open.js.map +1 -1
  122. package/dist/commands/progress.d.ts.map +1 -1
  123. package/dist/commands/progress.js +2 -1
  124. package/dist/commands/progress.js.map +1 -1
  125. package/dist/commands/project.d.ts.map +1 -1
  126. package/dist/commands/project.js +7 -6
  127. package/dist/commands/project.js.map +1 -1
  128. package/dist/commands/refresh.d.ts.map +1 -1
  129. package/dist/commands/refresh.js +8 -11
  130. package/dist/commands/refresh.js.map +1 -1
  131. package/dist/commands/remove.d.ts.map +1 -1
  132. package/dist/commands/remove.js +2 -1
  133. package/dist/commands/remove.js.map +1 -1
  134. package/dist/commands/schedule.js +16 -18
  135. package/dist/commands/schedule.js.map +1 -1
  136. package/dist/commands/start.d.ts.map +1 -1
  137. package/dist/commands/start.js +9 -8
  138. package/dist/commands/start.js.map +1 -1
  139. package/dist/commands/status.d.ts.map +1 -1
  140. package/dist/commands/status.js +2 -1
  141. package/dist/commands/status.js.map +1 -1
  142. package/dist/commands/stop.d.ts.map +1 -1
  143. package/dist/commands/stop.js +2 -1
  144. package/dist/commands/stop.js.map +1 -1
  145. package/dist/commands/strategy.d.ts.map +1 -1
  146. package/dist/commands/strategy.js +6 -5
  147. package/dist/commands/strategy.js.map +1 -1
  148. package/dist/commands/sync.js +8 -10
  149. package/dist/commands/sync.js.map +1 -1
  150. package/dist/commands/tui.d.ts.map +1 -1
  151. package/dist/commands/tui.js +11 -10
  152. package/dist/commands/tui.js.map +1 -1
  153. package/dist/commands/ui.d.ts.map +1 -1
  154. package/dist/commands/ui.js +4 -3
  155. package/dist/commands/ui.js.map +1 -1
  156. package/dist/core/adapters/local-storage.d.ts +3 -1
  157. package/dist/core/adapters/local-storage.d.ts.map +1 -1
  158. package/dist/core/adapters/local-storage.js +62 -4
  159. package/dist/core/adapters/local-storage.js.map +1 -1
  160. package/dist/core/analysis-cache.d.ts.map +1 -1
  161. package/dist/core/analysis-cache.js +8 -7
  162. package/dist/core/analysis-cache.js.map +1 -1
  163. package/dist/core/brand-config.d.ts +261 -0
  164. package/dist/core/brand-config.d.ts.map +1 -0
  165. package/dist/core/brand-config.js +514 -0
  166. package/dist/core/brand-config.js.map +1 -0
  167. package/dist/core/config.d.ts +1 -1
  168. package/dist/core/config.d.ts.map +1 -1
  169. package/dist/core/config.js +18 -8
  170. package/dist/core/config.js.map +1 -1
  171. package/dist/core/constants.d.ts +88 -0
  172. package/dist/core/constants.d.ts.map +1 -0
  173. package/dist/core/constants.js +103 -0
  174. package/dist/core/constants.js.map +1 -0
  175. package/dist/core/doctor.d.ts.map +1 -1
  176. package/dist/core/doctor.js +11 -3
  177. package/dist/core/doctor.js.map +1 -1
  178. package/dist/core/generation-lock.d.ts +2 -2
  179. package/dist/core/generation-lock.d.ts.map +1 -1
  180. package/dist/core/generation-lock.js +49 -22
  181. package/dist/core/generation-lock.js.map +1 -1
  182. package/dist/core/knowledge.d.ts +19 -0
  183. package/dist/core/knowledge.d.ts.map +1 -1
  184. package/dist/core/knowledge.js +150 -24
  185. package/dist/core/knowledge.js.map +1 -1
  186. package/dist/core/migrate.d.ts +53 -0
  187. package/dist/core/migrate.d.ts.map +1 -0
  188. package/dist/core/migrate.js +607 -0
  189. package/dist/core/migrate.js.map +1 -0
  190. package/dist/core/new-repo.js +1 -1
  191. package/dist/core/new-repo.js.map +1 -1
  192. package/dist/core/projects.d.ts.map +1 -1
  193. package/dist/core/projects.js +13 -4
  194. package/dist/core/projects.js.map +1 -1
  195. package/dist/core/refresh.d.ts.map +1 -1
  196. package/dist/core/refresh.js +6 -4
  197. package/dist/core/refresh.js.map +1 -1
  198. package/dist/core/scheduler.d.ts +1 -1
  199. package/dist/core/scheduler.d.ts.map +1 -1
  200. package/dist/core/scheduler.js +11 -9
  201. package/dist/core/scheduler.js.map +1 -1
  202. package/dist/core/sync.js +1 -1
  203. package/dist/core/sync.js.map +1 -1
  204. package/dist/core/workspace-git.d.ts.map +1 -1
  205. package/dist/core/workspace-git.js +34 -10
  206. package/dist/core/workspace-git.js.map +1 -1
  207. package/dist/core/workspace-state.d.ts +4 -0
  208. package/dist/core/workspace-state.d.ts.map +1 -1
  209. package/dist/core/workspace-state.js +8 -8
  210. package/dist/core/workspace-state.js.map +1 -1
  211. package/dist/core/workspace.d.ts +3 -4
  212. package/dist/core/workspace.d.ts.map +1 -1
  213. package/dist/core/workspace.js +62 -30
  214. package/dist/core/workspace.js.map +1 -1
  215. package/dist/desktop-server.js +6 -3
  216. package/dist/desktop-server.js.map +1 -1
  217. package/dist/generators/base.d.ts.map +1 -1
  218. package/dist/generators/base.js +7 -5
  219. package/dist/generators/base.js.map +1 -1
  220. package/dist/generators/claude.d.ts.map +1 -1
  221. package/dist/generators/claude.js +2 -1
  222. package/dist/generators/claude.js.map +1 -1
  223. package/dist/generators/cursor.d.ts +1 -1
  224. package/dist/generators/cursor.d.ts.map +1 -1
  225. package/dist/generators/cursor.js +9 -4
  226. package/dist/generators/cursor.js.map +1 -1
  227. package/dist/generators/index.d.ts +4 -8
  228. package/dist/generators/index.d.ts.map +1 -1
  229. package/dist/generators/index.js +34 -69
  230. package/dist/generators/index.js.map +1 -1
  231. package/dist/generators/plan-generator.d.ts.map +1 -1
  232. package/dist/generators/plan-generator.js +20 -11
  233. package/dist/generators/plan-generator.js.map +1 -1
  234. package/dist/generators/skills-generator.d.ts.map +1 -1
  235. package/dist/generators/skills-generator.js +26 -11
  236. package/dist/generators/skills-generator.js.map +1 -1
  237. package/dist/gui/app_logo.png +0 -0
  238. package/dist/gui/assets/AgentsPage-CnXzZFo1.js +3 -0
  239. package/dist/gui/assets/DashboardPage-rm3hKgsw.js +1 -0
  240. package/dist/gui/assets/GettingStartedPage-BKeuSHZQ.js +1 -0
  241. package/dist/gui/assets/NullStore-DuSDhGOe.js +1 -0
  242. package/dist/gui/assets/ProjectsPage-CioaA4uf.js +1 -0
  243. package/dist/gui/assets/ScaffoldRepoInline-DKZ1rPmE.js +1 -0
  244. package/dist/gui/assets/Separator-BgWyHDtg.js +1 -0
  245. package/dist/gui/assets/SettingsPage-BevO8oge.js +1 -0
  246. package/dist/gui/assets/SkillsPage-D2stJRWy.js +6 -0
  247. package/dist/gui/assets/StartWorkPage-C8a6eN90.js +1 -0
  248. package/dist/gui/assets/{StrategiesPage-C36TZgDX.js → StrategiesPage-BRQMly_d.js} +2 -2
  249. package/dist/gui/assets/WorkroomsPage-KqBkRD-x.js +4 -0
  250. package/dist/gui/assets/WorkspacesPage-DcA2i5HN.js +2 -0
  251. package/dist/gui/assets/alert-QnMXzwpU.js +1 -0
  252. package/dist/gui/assets/alert-dialog-BHEUQVyS.js +1 -0
  253. package/dist/gui/assets/badge-DTBzXOWn.js +1 -0
  254. package/dist/gui/assets/brand-hHByyyzq.js +1 -0
  255. package/dist/gui/assets/button-CREn1mup.js +1 -0
  256. package/dist/gui/assets/card-yrg6ov8B.js +1 -0
  257. package/dist/gui/assets/chevron-down-B_Mwbim8.js +1 -0
  258. package/dist/gui/assets/{circle-plus-lmU1yNJd.js → circle-plus--zM3-3r3.js} +1 -1
  259. package/dist/gui/assets/{code-xml-jFAa3-TT.js → code-xml-DH-38Tt7.js} +1 -1
  260. package/dist/gui/assets/{git-branch-Cfj9D8yW.js → git-branch-Ce0I2663.js} +1 -1
  261. package/dist/gui/assets/index-BB4BuHBQ.css +2 -0
  262. package/dist/gui/assets/index-BTe-_1Mu.js +57 -0
  263. package/dist/gui/assets/isElementDisabled-BrwmCB1d.js +1 -0
  264. package/dist/gui/assets/label-DC730X8s.js +1 -0
  265. package/dist/gui/assets/layers-j_brOuoa.js +1 -0
  266. package/dist/gui/assets/menu-d_G9km1-.js +1 -0
  267. package/dist/gui/assets/shield-check-Dd1Yv3l2.js +1 -0
  268. package/dist/gui/assets/square-check-big-BSIiYXPI.js +1 -0
  269. package/dist/gui/assets/tabs-BHwTt4t1.js +1 -0
  270. package/dist/gui/assets/{trash-2-CtR35_eF.js → trash-2-CMdv3eD3.js} +1 -1
  271. package/dist/gui/assets/useAriaLabelledBy-BmJErI5a.js +1 -0
  272. package/dist/gui/assets/useValueChanged-WS99hTmm.js +1 -0
  273. package/dist/gui/assets/{vsc-DFh0-53h.js → vsc-eMRaEwN3.js} +1 -1
  274. package/dist/gui/favicon-aurora.svg +8 -0
  275. package/dist/gui/favicon.ico +0 -0
  276. package/dist/gui/favicon.svg +8 -1
  277. package/dist/gui/index.html +21 -12
  278. package/dist/harness/claude.d.ts.map +1 -1
  279. package/dist/harness/claude.js +97 -7
  280. package/dist/harness/claude.js.map +1 -1
  281. package/dist/harness/codex.d.ts +1 -0
  282. package/dist/harness/codex.d.ts.map +1 -1
  283. package/dist/harness/codex.js +51 -34
  284. package/dist/harness/codex.js.map +1 -1
  285. package/dist/index.js +57 -27
  286. package/dist/index.js.map +1 -1
  287. package/dist/mcp/server.d.ts +12 -1
  288. package/dist/mcp/server.d.ts.map +1 -1
  289. package/dist/mcp/server.js +24 -6
  290. package/dist/mcp/server.js.map +1 -1
  291. package/dist/mcp/tools.d.ts +4 -2
  292. package/dist/mcp/tools.d.ts.map +1 -1
  293. package/dist/mcp/tools.js +372 -17
  294. package/dist/mcp/tools.js.map +1 -1
  295. package/dist/orchestration/detect.d.ts.map +1 -1
  296. package/dist/orchestration/detect.js +12 -5
  297. package/dist/orchestration/detect.js.map +1 -1
  298. package/dist/orchestration/log-tail.js +17 -17
  299. package/dist/orchestration/log-tail.js.map +1 -1
  300. package/dist/orchestration/runner.d.ts +1 -1
  301. package/dist/orchestration/runner.d.ts.map +1 -1
  302. package/dist/orchestration/runner.js +13 -8
  303. package/dist/orchestration/runner.js.map +1 -1
  304. package/dist/resources/agents-catalog.d.ts +3 -1
  305. package/dist/resources/agents-catalog.d.ts.map +1 -1
  306. package/dist/resources/agents-catalog.js +12 -6
  307. package/dist/resources/agents-catalog.js.map +1 -1
  308. package/dist/resources/contracts.d.ts +7 -0
  309. package/dist/resources/contracts.d.ts.map +1 -1
  310. package/dist/resources/contracts.js +8 -1
  311. package/dist/resources/contracts.js.map +1 -1
  312. package/dist/resources/fs-safety.d.ts +7 -1
  313. package/dist/resources/fs-safety.d.ts.map +1 -1
  314. package/dist/resources/fs-safety.js +44 -1
  315. package/dist/resources/fs-safety.js.map +1 -1
  316. package/dist/resources/materializer.d.ts +1 -0
  317. package/dist/resources/materializer.d.ts.map +1 -1
  318. package/dist/resources/materializer.js +48 -17
  319. package/dist/resources/materializer.js.map +1 -1
  320. package/dist/resources/service.d.ts.map +1 -1
  321. package/dist/resources/service.js +3 -2
  322. package/dist/resources/service.js.map +1 -1
  323. package/dist/server.d.ts +2 -19
  324. package/dist/server.d.ts.map +1 -1
  325. package/dist/server.js +1158 -318
  326. package/dist/server.js.map +1 -1
  327. package/dist/static-resources/workflows/cost-aware-sol-luna.md +95 -0
  328. package/dist/storage/db.d.ts +94 -0
  329. package/dist/storage/db.d.ts.map +1 -0
  330. package/dist/storage/db.js +609 -0
  331. package/dist/storage/db.js.map +1 -0
  332. package/dist/types.d.ts +19 -0
  333. package/dist/types.d.ts.map +1 -1
  334. package/dist/utils/detect-ai.d.ts.map +1 -1
  335. package/dist/utils/detect-ai.js +1 -3
  336. package/dist/utils/detect-ai.js.map +1 -1
  337. package/dist/utils/multi-git.d.ts +0 -8
  338. package/dist/utils/multi-git.d.ts.map +1 -1
  339. package/dist/utils/multi-git.js +12 -4
  340. package/dist/utils/multi-git.js.map +1 -1
  341. package/dist/utils/pr.d.ts.map +1 -1
  342. package/dist/utils/pr.js +10 -5
  343. package/dist/utils/pr.js.map +1 -1
  344. package/dist/utils/resolve-workspace.d.ts +1 -1
  345. package/dist/utils/resolve-workspace.d.ts.map +1 -1
  346. package/dist/utils/resolve-workspace.js +10 -3
  347. package/dist/utils/resolve-workspace.js.map +1 -1
  348. package/dist/utils/session-finder.d.ts +12 -1
  349. package/dist/utils/session-finder.d.ts.map +1 -1
  350. package/dist/utils/session-finder.js +183 -0
  351. package/dist/utils/session-finder.js.map +1 -1
  352. package/dist/utils/skills-catalog.d.ts +5 -1
  353. package/dist/utils/skills-catalog.d.ts.map +1 -1
  354. package/dist/utils/skills-catalog.js +131 -75
  355. package/dist/utils/skills-catalog.js.map +1 -1
  356. package/dist/utils/terminal-launch.d.ts +4 -0
  357. package/dist/utils/terminal-launch.d.ts.map +1 -1
  358. package/dist/utils/terminal-launch.js +71 -12
  359. package/dist/utils/terminal-launch.js.map +1 -1
  360. package/dist/utils/update-check.d.ts +4 -1
  361. package/dist/utils/update-check.d.ts.map +1 -1
  362. package/dist/utils/update-check.js +66 -19
  363. package/dist/utils/update-check.js.map +1 -1
  364. package/dist/utils/workflows.d.ts +4 -1
  365. package/dist/utils/workflows.d.ts.map +1 -1
  366. package/dist/utils/workflows.js +51 -21
  367. package/dist/utils/workflows.js.map +1 -1
  368. package/dist/workrooms/client.d.ts +54 -0
  369. package/dist/workrooms/client.d.ts.map +1 -0
  370. package/dist/workrooms/client.js +191 -0
  371. package/dist/workrooms/client.js.map +1 -0
  372. package/dist/workrooms/contracts.d.ts +579 -0
  373. package/dist/workrooms/contracts.d.ts.map +1 -0
  374. package/dist/workrooms/contracts.js +231 -0
  375. package/dist/workrooms/contracts.js.map +1 -0
  376. package/dist/workrooms/crypto.d.ts +30 -0
  377. package/dist/workrooms/crypto.d.ts.map +1 -0
  378. package/dist/workrooms/crypto.js +72 -0
  379. package/dist/workrooms/crypto.js.map +1 -0
  380. package/dist/workrooms/host.d.ts +61 -0
  381. package/dist/workrooms/host.d.ts.map +1 -0
  382. package/dist/workrooms/host.js +747 -0
  383. package/dist/workrooms/host.js.map +1 -0
  384. package/dist/workrooms/local-resources.d.ts +26 -0
  385. package/dist/workrooms/local-resources.d.ts.map +1 -0
  386. package/dist/workrooms/local-resources.js +367 -0
  387. package/dist/workrooms/local-resources.js.map +1 -0
  388. package/dist/workrooms/manager.d.ts +228 -0
  389. package/dist/workrooms/manager.d.ts.map +1 -0
  390. package/dist/workrooms/manager.js +768 -0
  391. package/dist/workrooms/manager.js.map +1 -0
  392. package/dist/workrooms/milestones.d.ts +42 -0
  393. package/dist/workrooms/milestones.d.ts.map +1 -0
  394. package/dist/workrooms/milestones.js +94 -0
  395. package/dist/workrooms/milestones.js.map +1 -0
  396. package/dist/workrooms/portable.d.ts +21 -0
  397. package/dist/workrooms/portable.d.ts.map +1 -0
  398. package/dist/workrooms/portable.js +201 -0
  399. package/dist/workrooms/portable.js.map +1 -0
  400. package/dist/workrooms/resource-package.d.ts +7 -0
  401. package/dist/workrooms/resource-package.d.ts.map +1 -0
  402. package/dist/workrooms/resource-package.js +260 -0
  403. package/dist/workrooms/resource-package.js.map +1 -0
  404. package/dist/workrooms/service.d.ts +92 -0
  405. package/dist/workrooms/service.d.ts.map +1 -0
  406. package/dist/workrooms/service.js +788 -0
  407. package/dist/workrooms/service.js.map +1 -0
  408. package/dist/workrooms/sqlite-store.d.ts +31 -0
  409. package/dist/workrooms/sqlite-store.d.ts.map +1 -0
  410. package/dist/workrooms/sqlite-store.js +511 -0
  411. package/dist/workrooms/sqlite-store.js.map +1 -0
  412. package/dist/workrooms/store.d.ts +542 -0
  413. package/dist/workrooms/store.d.ts.map +1 -0
  414. package/dist/workrooms/store.js +71 -0
  415. package/dist/workrooms/store.js.map +1 -0
  416. package/package.json +16 -10
  417. package/resources/workflows/cost-aware-sol-luna.md +95 -0
  418. package/dist/agent/AcpCliAdapter.test.d.ts +0 -2
  419. package/dist/agent/AcpCliAdapter.test.d.ts.map +0 -1
  420. package/dist/agent/AcpCliAdapter.test.js +0 -235
  421. package/dist/agent/AcpCliAdapter.test.js.map +0 -1
  422. package/dist/agent/AntigravityCliAdapter.test.d.ts +0 -2
  423. package/dist/agent/AntigravityCliAdapter.test.d.ts.map +0 -1
  424. package/dist/agent/AntigravityCliAdapter.test.js +0 -222
  425. package/dist/agent/AntigravityCliAdapter.test.js.map +0 -1
  426. package/dist/agent/ClaudeCliAdapter.test.d.ts +0 -2
  427. package/dist/agent/ClaudeCliAdapter.test.d.ts.map +0 -1
  428. package/dist/agent/ClaudeCliAdapter.test.js +0 -320
  429. package/dist/agent/ClaudeCliAdapter.test.js.map +0 -1
  430. package/dist/agent/ClaudeSdkAdapter.test.d.ts +0 -2
  431. package/dist/agent/ClaudeSdkAdapter.test.d.ts.map +0 -1
  432. package/dist/agent/ClaudeSdkAdapter.test.js +0 -155
  433. package/dist/agent/ClaudeSdkAdapter.test.js.map +0 -1
  434. package/dist/agent/CliAdapterBase.test.d.ts +0 -2
  435. package/dist/agent/CliAdapterBase.test.d.ts.map +0 -1
  436. package/dist/agent/CliAdapterBase.test.js +0 -240
  437. package/dist/agent/CliAdapterBase.test.js.map +0 -1
  438. package/dist/agent/CodexCliAdapter.test.d.ts +0 -2
  439. package/dist/agent/CodexCliAdapter.test.d.ts.map +0 -1
  440. package/dist/agent/CodexCliAdapter.test.js +0 -331
  441. package/dist/agent/CodexCliAdapter.test.js.map +0 -1
  442. package/dist/agent/CodexSdkAdapter.test.d.ts +0 -2
  443. package/dist/agent/CodexSdkAdapter.test.d.ts.map +0 -1
  444. package/dist/agent/CodexSdkAdapter.test.js +0 -76
  445. package/dist/agent/CodexSdkAdapter.test.js.map +0 -1
  446. package/dist/agent/ProviderRegistry.test.d.ts +0 -2
  447. package/dist/agent/ProviderRegistry.test.d.ts.map +0 -1
  448. package/dist/agent/ProviderRegistry.test.js +0 -129
  449. package/dist/agent/ProviderRegistry.test.js.map +0 -1
  450. package/dist/agent/adapters.test.d.ts +0 -2
  451. package/dist/agent/adapters.test.d.ts.map +0 -1
  452. package/dist/agent/adapters.test.js +0 -71
  453. package/dist/agent/adapters.test.js.map +0 -1
  454. package/dist/agent/cliAvailability.test.d.ts +0 -2
  455. package/dist/agent/cliAvailability.test.d.ts.map +0 -1
  456. package/dist/agent/cliAvailability.test.js +0 -217
  457. package/dist/agent/cliAvailability.test.js.map +0 -1
  458. package/dist/agent/mcp-config.test.d.ts +0 -2
  459. package/dist/agent/mcp-config.test.d.ts.map +0 -1
  460. package/dist/agent/mcp-config.test.js +0 -22
  461. package/dist/agent/mcp-config.test.js.map +0 -1
  462. package/dist/agent/models.test.d.ts +0 -2
  463. package/dist/agent/models.test.d.ts.map +0 -1
  464. package/dist/agent/models.test.js +0 -40
  465. package/dist/agent/models.test.js.map +0 -1
  466. package/dist/agent/nativeAgent.test.d.ts +0 -2
  467. package/dist/agent/nativeAgent.test.d.ts.map +0 -1
  468. package/dist/agent/nativeAgent.test.js +0 -35
  469. package/dist/agent/nativeAgent.test.js.map +0 -1
  470. package/dist/agent/nativeTools.test.d.ts +0 -2
  471. package/dist/agent/nativeTools.test.d.ts.map +0 -1
  472. package/dist/agent/nativeTools.test.js +0 -67
  473. package/dist/agent/nativeTools.test.js.map +0 -1
  474. package/dist/agent/orchestrator.test.d.ts +0 -2
  475. package/dist/agent/orchestrator.test.d.ts.map +0 -1
  476. package/dist/agent/orchestrator.test.js +0 -284
  477. package/dist/agent/orchestrator.test.js.map +0 -1
  478. package/dist/agent/session.test.d.ts +0 -2
  479. package/dist/agent/session.test.d.ts.map +0 -1
  480. package/dist/agent/session.test.js +0 -74
  481. package/dist/agent/session.test.js.map +0 -1
  482. package/dist/agent/smoke-chat.test.d.ts +0 -2
  483. package/dist/agent/smoke-chat.test.d.ts.map +0 -1
  484. package/dist/agent/smoke-chat.test.js +0 -166
  485. package/dist/agent/smoke-chat.test.js.map +0 -1
  486. package/dist/commands/add-repo.test.d.ts +0 -2
  487. package/dist/commands/add-repo.test.d.ts.map +0 -1
  488. package/dist/commands/add-repo.test.js +0 -30
  489. package/dist/commands/add-repo.test.js.map +0 -1
  490. package/dist/commands/commands.test.d.ts +0 -2
  491. package/dist/commands/commands.test.d.ts.map +0 -1
  492. package/dist/commands/commands.test.js +0 -156
  493. package/dist/commands/commands.test.js.map +0 -1
  494. package/dist/commands/commit.test.d.ts +0 -2
  495. package/dist/commands/commit.test.d.ts.map +0 -1
  496. package/dist/commands/commit.test.js +0 -54
  497. package/dist/commands/commit.test.js.map +0 -1
  498. package/dist/commands/isolate.test.d.ts +0 -2
  499. package/dist/commands/isolate.test.d.ts.map +0 -1
  500. package/dist/commands/isolate.test.js +0 -59
  501. package/dist/commands/isolate.test.js.map +0 -1
  502. package/dist/commands/knowledge.test.d.ts +0 -2
  503. package/dist/commands/knowledge.test.d.ts.map +0 -1
  504. package/dist/commands/knowledge.test.js +0 -90
  505. package/dist/commands/knowledge.test.js.map +0 -1
  506. package/dist/commands/status.test.d.ts +0 -2
  507. package/dist/commands/status.test.d.ts.map +0 -1
  508. package/dist/commands/status.test.js +0 -31
  509. package/dist/commands/status.test.js.map +0 -1
  510. package/dist/commands/ui.test.d.ts +0 -2
  511. package/dist/commands/ui.test.d.ts.map +0 -1
  512. package/dist/commands/ui.test.js +0 -58
  513. package/dist/commands/ui.test.js.map +0 -1
  514. package/dist/core/adapters/storage.test.d.ts +0 -2
  515. package/dist/core/adapters/storage.test.d.ts.map +0 -1
  516. package/dist/core/adapters/storage.test.js +0 -65
  517. package/dist/core/adapters/storage.test.js.map +0 -1
  518. package/dist/core/analysis-cache.test.d.ts +0 -2
  519. package/dist/core/analysis-cache.test.d.ts.map +0 -1
  520. package/dist/core/analysis-cache.test.js +0 -163
  521. package/dist/core/analysis-cache.test.js.map +0 -1
  522. package/dist/core/config.test.d.ts +0 -2
  523. package/dist/core/config.test.d.ts.map +0 -1
  524. package/dist/core/config.test.js +0 -90
  525. package/dist/core/config.test.js.map +0 -1
  526. package/dist/core/finish.test.d.ts +0 -2
  527. package/dist/core/finish.test.d.ts.map +0 -1
  528. package/dist/core/finish.test.js +0 -110
  529. package/dist/core/finish.test.js.map +0 -1
  530. package/dist/core/generation-lock.test.d.ts +0 -2
  531. package/dist/core/generation-lock.test.d.ts.map +0 -1
  532. package/dist/core/generation-lock.test.js +0 -134
  533. package/dist/core/generation-lock.test.js.map +0 -1
  534. package/dist/core/isolate.test.d.ts +0 -2
  535. package/dist/core/isolate.test.d.ts.map +0 -1
  536. package/dist/core/isolate.test.js +0 -320
  537. package/dist/core/isolate.test.js.map +0 -1
  538. package/dist/core/knowledge.test.d.ts +0 -2
  539. package/dist/core/knowledge.test.d.ts.map +0 -1
  540. package/dist/core/knowledge.test.js +0 -287
  541. package/dist/core/knowledge.test.js.map +0 -1
  542. package/dist/core/locks.test.d.ts +0 -2
  543. package/dist/core/locks.test.d.ts.map +0 -1
  544. package/dist/core/locks.test.js +0 -143
  545. package/dist/core/locks.test.js.map +0 -1
  546. package/dist/core/new-repo.test.d.ts +0 -2
  547. package/dist/core/new-repo.test.d.ts.map +0 -1
  548. package/dist/core/new-repo.test.js +0 -78
  549. package/dist/core/new-repo.test.js.map +0 -1
  550. package/dist/core/progress.test.d.ts +0 -2
  551. package/dist/core/progress.test.d.ts.map +0 -1
  552. package/dist/core/progress.test.js +0 -52
  553. package/dist/core/progress.test.js.map +0 -1
  554. package/dist/core/projects.test.d.ts +0 -2
  555. package/dist/core/projects.test.d.ts.map +0 -1
  556. package/dist/core/projects.test.js +0 -165
  557. package/dist/core/projects.test.js.map +0 -1
  558. package/dist/core/refresh.test.d.ts +0 -2
  559. package/dist/core/refresh.test.d.ts.map +0 -1
  560. package/dist/core/refresh.test.js +0 -93
  561. package/dist/core/refresh.test.js.map +0 -1
  562. package/dist/core/scanner.test.d.ts +0 -2
  563. package/dist/core/scanner.test.d.ts.map +0 -1
  564. package/dist/core/scanner.test.js +0 -53
  565. package/dist/core/scanner.test.js.map +0 -1
  566. package/dist/core/scheduler.test.d.ts +0 -2
  567. package/dist/core/scheduler.test.d.ts.map +0 -1
  568. package/dist/core/scheduler.test.js +0 -169
  569. package/dist/core/scheduler.test.js.map +0 -1
  570. package/dist/core/sync.test.d.ts +0 -2
  571. package/dist/core/sync.test.d.ts.map +0 -1
  572. package/dist/core/sync.test.js +0 -128
  573. package/dist/core/sync.test.js.map +0 -1
  574. package/dist/core/workspace-git.test.d.ts +0 -2
  575. package/dist/core/workspace-git.test.d.ts.map +0 -1
  576. package/dist/core/workspace-git.test.js +0 -52
  577. package/dist/core/workspace-git.test.js.map +0 -1
  578. package/dist/core/workspace-skills-workflow.integration.test.d.ts +0 -2
  579. package/dist/core/workspace-skills-workflow.integration.test.d.ts.map +0 -1
  580. package/dist/core/workspace-skills-workflow.integration.test.js +0 -177
  581. package/dist/core/workspace-skills-workflow.integration.test.js.map +0 -1
  582. package/dist/core/workspace-state.test.d.ts +0 -2
  583. package/dist/core/workspace-state.test.d.ts.map +0 -1
  584. package/dist/core/workspace-state.test.js +0 -84
  585. package/dist/core/workspace-state.test.js.map +0 -1
  586. package/dist/core/workspace.create.test.d.ts +0 -2
  587. package/dist/core/workspace.create.test.d.ts.map +0 -1
  588. package/dist/core/workspace.create.test.js +0 -224
  589. package/dist/core/workspace.create.test.js.map +0 -1
  590. package/dist/core/workspace.test.d.ts +0 -2
  591. package/dist/core/workspace.test.d.ts.map +0 -1
  592. package/dist/core/workspace.test.js +0 -53
  593. package/dist/core/workspace.test.js.map +0 -1
  594. package/dist/core/worktree.test.d.ts +0 -2
  595. package/dist/core/worktree.test.d.ts.map +0 -1
  596. package/dist/core/worktree.test.js +0 -153
  597. package/dist/core/worktree.test.js.map +0 -1
  598. package/dist/generators/base.test.d.ts +0 -2
  599. package/dist/generators/base.test.d.ts.map +0 -1
  600. package/dist/generators/base.test.js +0 -287
  601. package/dist/generators/base.test.js.map +0 -1
  602. package/dist/generators/knowledge-migration.test.d.ts +0 -2
  603. package/dist/generators/knowledge-migration.test.d.ts.map +0 -1
  604. package/dist/generators/knowledge-migration.test.js +0 -22
  605. package/dist/generators/knowledge-migration.test.js.map +0 -1
  606. package/dist/generators/plan-generator.test.d.ts +0 -2
  607. package/dist/generators/plan-generator.test.d.ts.map +0 -1
  608. package/dist/generators/plan-generator.test.js +0 -220
  609. package/dist/generators/plan-generator.test.js.map +0 -1
  610. package/dist/generators/skills-generator.test.d.ts +0 -2
  611. package/dist/generators/skills-generator.test.d.ts.map +0 -1
  612. package/dist/generators/skills-generator.test.js +0 -79
  613. package/dist/generators/skills-generator.test.js.map +0 -1
  614. package/dist/gui/assets/AgentsPage-B4fx43rd.js +0 -3
  615. package/dist/gui/assets/CSPContext-DBUu9tE0.js +0 -1
  616. package/dist/gui/assets/DashboardPage-DH52G8IG.js +0 -1
  617. package/dist/gui/assets/GettingStartedPage-BlTrQhvi.js +0 -1
  618. package/dist/gui/assets/ProjectsPage-BPVSLPXv.js +0 -1
  619. package/dist/gui/assets/ScaffoldRepoInline-ywcpq9PX.js +0 -1
  620. package/dist/gui/assets/SettingsPage-RQr8SalV.js +0 -1
  621. package/dist/gui/assets/SkillsPage-CYoSRrwx.js +0 -6
  622. package/dist/gui/assets/StartWorkPage-DBKK4lFi.js +0 -1
  623. package/dist/gui/assets/WorkspacesPage-DxEONvSq.js +0 -6
  624. package/dist/gui/assets/alert-dialog-CQAX2yRx.js +0 -1
  625. package/dist/gui/assets/badge-CAohJGj6.js +0 -1
  626. package/dist/gui/assets/bot-C2HWrAft.js +0 -1
  627. package/dist/gui/assets/button-BDDZnIHx.js +0 -1
  628. package/dist/gui/assets/card-BKXzd_5L.js +0 -1
  629. package/dist/gui/assets/chevron-down-qTL8HPug.js +0 -1
  630. package/dist/gui/assets/cpu-Cdwd84Jz.js +0 -1
  631. package/dist/gui/assets/empty-BdlgbifD.js +0 -1
  632. package/dist/gui/assets/index-BF6pre6G.css +0 -2
  633. package/dist/gui/assets/index-C_rwnBzF.js +0 -52
  634. package/dist/gui/assets/isElementDisabled-uy_EOitH.js +0 -1
  635. package/dist/gui/assets/label-CG5exjag.js +0 -1
  636. package/dist/gui/assets/square-DlIYnlSq.js +0 -1
  637. package/dist/gui/assets/textarea-ByfoCb54.js +0 -1
  638. package/dist/gui/assets/useAriaLabelledBy-ClesgjMe.js +0 -1
  639. package/dist/gui/assets/useValueChanged-DeYvGnKs.js +0 -1
  640. package/dist/gui/assets/zap-CWG_Lvki.js +0 -1
  641. package/dist/harness/contract.test.d.ts +0 -2
  642. package/dist/harness/contract.test.d.ts.map +0 -1
  643. package/dist/harness/contract.test.js +0 -426
  644. package/dist/harness/contract.test.js.map +0 -1
  645. package/dist/harness/harness.test.d.ts +0 -2
  646. package/dist/harness/harness.test.d.ts.map +0 -1
  647. package/dist/harness/harness.test.js +0 -215
  648. package/dist/harness/harness.test.js.map +0 -1
  649. package/dist/mcp/tools.test.d.ts +0 -2
  650. package/dist/mcp/tools.test.d.ts.map +0 -1
  651. package/dist/mcp/tools.test.js +0 -194
  652. package/dist/mcp/tools.test.js.map +0 -1
  653. package/dist/orchestration/log-tail.test.d.ts +0 -2
  654. package/dist/orchestration/log-tail.test.d.ts.map +0 -1
  655. package/dist/orchestration/log-tail.test.js +0 -72
  656. package/dist/orchestration/log-tail.test.js.map +0 -1
  657. package/dist/orchestration/orchestrator.test.d.ts +0 -2
  658. package/dist/orchestration/orchestrator.test.d.ts.map +0 -1
  659. package/dist/orchestration/orchestrator.test.js +0 -85
  660. package/dist/orchestration/orchestrator.test.js.map +0 -1
  661. package/dist/orchestration/runner.test.d.ts +0 -2
  662. package/dist/orchestration/runner.test.d.ts.map +0 -1
  663. package/dist/orchestration/runner.test.js +0 -233
  664. package/dist/orchestration/runner.test.js.map +0 -1
  665. package/dist/resources/agents-catalog.test.d.ts +0 -2
  666. package/dist/resources/agents-catalog.test.d.ts.map +0 -1
  667. package/dist/resources/agents-catalog.test.js +0 -50
  668. package/dist/resources/agents-catalog.test.js.map +0 -1
  669. package/dist/resources/codex-agent.test.d.ts +0 -2
  670. package/dist/resources/codex-agent.test.d.ts.map +0 -1
  671. package/dist/resources/codex-agent.test.js +0 -27
  672. package/dist/resources/codex-agent.test.js.map +0 -1
  673. package/dist/resources/materializer.test.d.ts +0 -2
  674. package/dist/resources/materializer.test.d.ts.map +0 -1
  675. package/dist/resources/materializer.test.js +0 -149
  676. package/dist/resources/materializer.test.js.map +0 -1
  677. package/dist/resources/service.test.d.ts +0 -2
  678. package/dist/resources/service.test.d.ts.map +0 -1
  679. package/dist/resources/service.test.js +0 -58
  680. package/dist/resources/service.test.js.map +0 -1
  681. package/dist/server.test.d.ts +0 -2
  682. package/dist/server.test.d.ts.map +0 -1
  683. package/dist/server.test.js +0 -1697
  684. package/dist/server.test.js.map +0 -1
  685. package/dist/utils/detect-ai.test.d.ts +0 -2
  686. package/dist/utils/detect-ai.test.d.ts.map +0 -1
  687. package/dist/utils/detect-ai.test.js +0 -70
  688. package/dist/utils/detect-ai.test.js.map +0 -1
  689. package/dist/utils/detect-editors.test.d.ts +0 -2
  690. package/dist/utils/detect-editors.test.d.ts.map +0 -1
  691. package/dist/utils/detect-editors.test.js +0 -85
  692. package/dist/utils/detect-editors.test.js.map +0 -1
  693. package/dist/utils/git.test.d.ts +0 -2
  694. package/dist/utils/git.test.d.ts.map +0 -1
  695. package/dist/utils/git.test.js +0 -125
  696. package/dist/utils/git.test.js.map +0 -1
  697. package/dist/utils/multi-git.test.d.ts +0 -2
  698. package/dist/utils/multi-git.test.d.ts.map +0 -1
  699. package/dist/utils/multi-git.test.js +0 -330
  700. package/dist/utils/multi-git.test.js.map +0 -1
  701. package/dist/utils/pr.test.d.ts +0 -2
  702. package/dist/utils/pr.test.d.ts.map +0 -1
  703. package/dist/utils/pr.test.js +0 -47
  704. package/dist/utils/pr.test.js.map +0 -1
  705. package/dist/utils/session-finder.test.d.ts +0 -2
  706. package/dist/utils/session-finder.test.d.ts.map +0 -1
  707. package/dist/utils/session-finder.test.js +0 -304
  708. package/dist/utils/session-finder.test.js.map +0 -1
  709. package/dist/utils/skills-catalog.test.d.ts +0 -2
  710. package/dist/utils/skills-catalog.test.d.ts.map +0 -1
  711. package/dist/utils/skills-catalog.test.js +0 -281
  712. package/dist/utils/skills-catalog.test.js.map +0 -1
  713. package/dist/utils/system-scanner.test.d.ts +0 -2
  714. package/dist/utils/system-scanner.test.d.ts.map +0 -1
  715. package/dist/utils/system-scanner.test.js +0 -73
  716. package/dist/utils/system-scanner.test.js.map +0 -1
  717. package/dist/utils/terminal-launch.test.d.ts +0 -2
  718. package/dist/utils/terminal-launch.test.d.ts.map +0 -1
  719. package/dist/utils/terminal-launch.test.js +0 -117
  720. package/dist/utils/terminal-launch.test.js.map +0 -1
  721. package/dist/utils/update-check.test.d.ts +0 -2
  722. package/dist/utils/update-check.test.d.ts.map +0 -1
  723. package/dist/utils/update-check.test.js +0 -30
  724. package/dist/utils/update-check.test.js.map +0 -1
  725. package/dist/utils/workflows.test.d.ts +0 -2
  726. package/dist/utils/workflows.test.d.ts.map +0 -1
  727. package/dist/utils/workflows.test.js +0 -86
  728. package/dist/utils/workflows.test.js.map +0 -1
  729. package/dist/utils/workspace-launch.test.d.ts +0 -2
  730. package/dist/utils/workspace-launch.test.d.ts.map +0 -1
  731. package/dist/utils/workspace-launch.test.js +0 -128
  732. package/dist/utils/workspace-launch.test.js.map +0 -1
@@ -1,79 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import * as fs from 'node:fs/promises';
3
- import * as path from 'node:path';
4
- import * as os from 'node:os';
5
- import fse from 'fs-extra';
6
- import { generateSkills } from './skills-generator.js';
7
- import { saveWorkspaceSkillsConfig } from '../utils/skills-catalog.js';
8
- describe('skills-generator', () => {
9
- let tempWorkspace;
10
- let tempHome;
11
- const originalEnv = process.env.NEXUSFLOW_HOME;
12
- beforeEach(async () => {
13
- tempWorkspace = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-gen-skills-ws-'));
14
- tempHome = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-gen-skills-home-'));
15
- process.env.NEXUSFLOW_HOME = tempHome;
16
- });
17
- afterEach(async () => {
18
- if (originalEnv !== undefined) {
19
- process.env.NEXUSFLOW_HOME = originalEnv;
20
- }
21
- else {
22
- delete process.env.NEXUSFLOW_HOME;
23
- }
24
- await fse.remove(tempWorkspace);
25
- await fse.remove(tempHome);
26
- });
27
- it('deploys enabled skills across claude, antigravity, cursor, copilot, and codex', async () => {
28
- // Enable 2 specific skills
29
- await saveWorkspaceSkillsConfig(tempWorkspace, {
30
- enabledSkills: ['pr-review-toolkit', 'verifier-workspace'],
31
- });
32
- const ctx = {
33
- feature: {
34
- id: 'test-feature',
35
- branchName: 'feature-test',
36
- description: 'Testing skills generation',
37
- repos: [],
38
- assistants: ['claude', 'antigravity', 'cursor', 'copilot', 'codex'],
39
- workspacePath: tempWorkspace,
40
- createdAt: new Date().toISOString(),
41
- },
42
- repos: [],
43
- };
44
- const assistants = ['claude', 'antigravity', 'cursor', 'copilot', 'codex'];
45
- await generateSkills(ctx, assistants, tempWorkspace);
46
- // 1. Claude: .claude/skills/<skillName>/SKILL.md
47
- expect(await fse.pathExists(path.join(tempWorkspace, '.claude', 'skills', 'pr-review-toolkit', 'SKILL.md'))).toBe(true);
48
- expect(await fse.pathExists(path.join(tempWorkspace, '.claude', 'skills', 'verifier-workspace', 'SKILL.md'))).toBe(true);
49
- // 2. Antigravity: .agents/skills/<skillName>/SKILL.md
50
- expect(await fse.pathExists(path.join(tempWorkspace, '.agents', 'skills', 'pr-review-toolkit', 'SKILL.md'))).toBe(true);
51
- // Cursor, Copilot, Codex, and Antigravity all discover the portable package
52
- // from the shared Agent Skills location. No lossy rules/instructions copies.
53
- expect(await fse.pathExists(path.join(tempWorkspace, '.cursor', 'rules', 'pr-review-toolkit.mdc'))).toBe(false);
54
- expect(await fse.pathExists(path.join(tempWorkspace, '.github', 'instructions', 'pr-review-toolkit.instructions.md'))).toBe(false);
55
- expect(await fse.pathExists(path.join(tempWorkspace, '.codex', 'skills', 'pr-review-toolkit'))).toBe(false);
56
- expect(await fse.pathExists(path.join(tempWorkspace, '.nexusflow', 'resources.lock.json'))).toBe(true);
57
- });
58
- it('respects empty enabledSkills array and deploys nothing when all are disabled', async () => {
59
- await saveWorkspaceSkillsConfig(tempWorkspace, {
60
- enabledSkills: [],
61
- });
62
- const ctx = {
63
- feature: {
64
- id: 'test-feature',
65
- branchName: 'feature-test',
66
- description: 'Testing empty skills generation',
67
- repos: [],
68
- assistants: ['claude', 'antigravity'],
69
- workspacePath: tempWorkspace,
70
- createdAt: new Date().toISOString(),
71
- },
72
- repos: [],
73
- };
74
- await generateSkills(ctx, ['claude', 'antigravity'], tempWorkspace);
75
- expect(await fse.pathExists(path.join(tempWorkspace, '.claude', 'skills', 'pr-review-toolkit'))).toBe(false);
76
- expect(await fse.pathExists(path.join(tempWorkspace, '.agents', 'skills', 'pr-review-toolkit'))).toBe(false);
77
- });
78
- });
79
- //# sourceMappingURL=skills-generator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-generator.test.js","sourceRoot":"","sources":["../../src/generators/skills-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAM,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,aAAqB,CAAC;IAC1B,IAAI,QAAgB,CAAC;IACrB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE/C,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;QACrF,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,WAAW,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACpC,CAAC;QACD,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAIH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,2BAA2B;QAC3B,MAAM,yBAAyB,CAAC,aAAa,EAAE;YAC7C,aAAa,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;SAC3D,CAAC,CAAC;QAEH,MAAM,GAAG,GAAqB;YAC5B,OAAO,EAAE;gBACP,EAAE,EAAE,cAAc;gBAClB,UAAU,EAAE,cAAc;gBAC1B,WAAW,EAAE,2BAA2B;gBACxC,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;gBACnE,aAAa,EAAE,aAAa;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;YACD,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,MAAM,UAAU,GAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1F,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAErD,iDAAiD;QACjD,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxH,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzH,sDAAsD;QACtD,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExH,4EAA4E;QAC5E,6EAA6E;QAC7E,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChH,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnI,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5G,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,yBAAyB,CAAC,aAAa,EAAE;YAC7C,aAAa,EAAE,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAqB;YAC5B,OAAO,EAAE;gBACP,EAAE,EAAE,cAAc;gBAClB,UAAU,EAAE,cAAc;gBAC1B,WAAW,EAAE,iCAAiC;gBAC9C,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;gBACrC,aAAa,EAAE,aAAa;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;YACD,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,MAAM,cAAc,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7G,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import{_ as e,b as t,g as n,h as r,m as i,t as a}from"./button-BDDZnIHx.js";import{o}from"./CSPContext-DBUu9tE0.js";import{t as s}from"./bot-C2HWrAft.js";import{a as ee,c as te,i as ne,n as c,o as l,r as re,s as ie,t as ae}from"./alert-dialog-CQAX2yRx.js";import{t as oe}from"./trash-2-CtR35_eF.js";import{H as se,Ht as ce,Kt as le,N as ue,Nt as de,R as fe,Wt as u,Xt as pe,Y as me,a as he,c as d,d as f,f as p,j as ge,l as m,o as h,ot as _e,s as g,st as ve}from"./index-C_rwnBzF.js";import{t as _}from"./badge-CAohJGj6.js";import{t as ye}from"./card-BKXzd_5L.js";import{a as v,i as be,n as y,r as b,t as x}from"./empty-BdlgbifD.js";import{t as S}from"./label-CG5exjag.js";import{t as C}from"./textarea-ByfoCb54.js";var xe=r(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),w=t(e(),1),T=n(),E={id:``,name:``,category:`general`,description:``,developerInstructions:``};function D(e){return e.toLowerCase().trim().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function O({showToast:e}){let[t,n]=(0,w.useState)(`global`),[r,O]=(0,w.useState)(``),[Se,k]=(0,w.useState)(!1),[A,j]=(0,w.useState)(!1),[M,N]=(0,w.useState)(null),[P,F]=(0,w.useState)(E),[I,L]=(0,w.useState)(``),[R,z]=(0,w.useState)(null),[B,V]=(0,w.useState)(null),{data:H=[],isLoading:Ce,isError:we}=ge(),{data:U=[]}=ve(),W=_e(t===`global`?``:t),G=me(),K=se(),q=fe(),J=ue(),Y=t!==`global`,Te=U.find(e=>e.id===t),X=!Y||Te?.assistants?.includes(`codex`),Z=Y&&X&&!W.isLoading&&!W.isError&&!!W.data;(0,w.useEffect)(()=>{if(!Y){z(null);return}W.data&&z([...W.data.enabledAgents??[]])},[Y,t,W.data]);let Q=(0,w.useMemo)(()=>{let e=r.trim().toLowerCase();return e?H.filter(t=>[t.name,t.description,t.category].some(t=>t.toLowerCase().includes(e))):H},[H,r]),Ee=new Set(R??W.data?.enabledAgents??[]);function $(){N(null),F(E),k(!0)}function De(e){N(e.id),F({id:e.id,name:e.name,category:e.category,description:e.description,developerInstructions:e.developerInstructions,model:e.model,modelReasoningEffort:e.modelReasoningEffort,sandboxMode:e.sandboxMode}),k(!0)}async function Oe(){try{let t=M??D(P.name);await G.mutateAsync({...P,id:t,name:t}),k(!1),e?.(`Codex agent saved`,`success`)}catch(t){e?.(t instanceof Error?t.message:`Failed to save agent`,`error`)}}async function ke(){try{await K.mutateAsync({toml:I,category:`general`}),j(!1),L(``),e?.(`Codex agent imported`,`success`)}catch(t){e?.(t instanceof Error?t.message:`Failed to import agent`,`error`)}}async function Ae(){if(B)try{await q.mutateAsync(B.id),V(null),e?.(`Agent deleted from the personal catalog`,`info`)}catch(t){e?.(t instanceof Error?t.message:`Failed to delete agent`,`error`)}}function je(e){if(!Z||R===null)return;let t=new Set(R);t.has(e)?t.delete(e):t.add(e),z([...t])}async function Me(){if(!(!W.data||R===null))try{await J.mutateAsync({workspaceId:t,expectedRevision:W.data.revision??0,enabledSkills:W.data.enabledSkills,enabledAgents:R,enabledCategories:W.data.enabledCategories??[]}),e?.(`Agent selection saved. Refresh the workspace to apply it.`,`success`)}catch(t){e?.(t instanceof Error?t.message:`Failed to save agent selection`,`error`)}}return(0,T.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,T.jsxs)(`header`,{className:`flex flex-wrap items-center justify-between gap-4 border-b border-border px-6 py-5`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsx)(`div`,{className:`rounded-lg bg-primary/10 p-2 text-primary`,children:(0,T.jsx)(s,{className:`h-5 w-5`})}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h1`,{className:`text-xl font-bold tracking-tight`,children:`Codex Agent Library`}),(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Create and reuse project-scoped Codex custom agents.`})]})]}),(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsx)(a,{render:(0,T.jsx)(de,{to:`/skills`}),variant:`outline`,size:`sm`,children:`Skills`}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border bg-muted/50 px-3 py-1.5`,children:[(0,T.jsx)(le,{className:`h-4 w-4 text-muted-foreground`}),(0,T.jsx)(S,{htmlFor:`agent-scope`,className:`text-xs text-muted-foreground`,children:`Scope`}),(0,T.jsxs)(`select`,{id:`agent-scope`,value:t,onChange:e=>n(e.target.value),className:`cursor-pointer bg-transparent text-xs font-semibold text-foreground focus:outline-none`,children:[(0,T.jsx)(`option`,{value:`global`,children:`Personal catalog`}),U.map(e=>(0,T.jsx)(`option`,{value:e.id,children:e.id},e.id))]})]}),Y?(0,T.jsx)(a,{size:`sm`,onClick:Me,disabled:!Z||J.isPending,children:J.isPending?`Saving…`:`Save selection`}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(a,{variant:`outline`,size:`sm`,onClick:()=>j(!0),children:[(0,T.jsx)(xe,{className:`mr-1.5 h-4 w-4`}),`Import TOML`]}),(0,T.jsxs)(a,{size:`sm`,onClick:$,children:[(0,T.jsx)(u,{className:`mr-1.5 h-4 w-4`}),`New agent`]})]})]})]}),(0,T.jsx)(`div`,{className:`border-b border-border/60 bg-muted/20 px-6 py-3`,children:(0,T.jsxs)(`div`,{className:`relative max-w-md`,children:[(0,T.jsx)(ce,{className:`absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,T.jsx)(o,{value:r,onChange:e=>O(e.target.value),placeholder:`Search agents…`,className:`pl-9`})]})}),(0,T.jsx)(`main`,{className:`min-h-0 flex-1 overflow-auto p-6`,children:Ce||Y&&W.isLoading?(0,T.jsx)(`div`,{className:`flex justify-center p-12`,children:(0,T.jsx)(he,{})}):we||Y&&W.isError?(0,T.jsx)(x,{className:`border border-dashed py-12`,children:(0,T.jsxs)(b,{children:[(0,T.jsx)(v,{children:`Resources could not be loaded`}),(0,T.jsx)(y,{children:`Assignment controls remain disabled to protect the saved selection.`})]})}):Y&&!X?(0,T.jsx)(x,{className:`border border-dashed py-12`,children:(0,T.jsxs)(b,{children:[(0,T.jsx)(v,{children:`Codex is not enabled for this workspace`}),(0,T.jsx)(y,{children:`Add Codex to the workspace before assigning Codex-native agents.`})]})}):Q.length===0?(0,T.jsxs)(x,{className:`border border-dashed py-12`,children:[(0,T.jsx)(be,{children:(0,T.jsx)(s,{className:`h-8 w-8 text-muted-foreground`})}),(0,T.jsxs)(b,{children:[(0,T.jsx)(v,{children:`No Codex agents found`}),(0,T.jsx)(y,{children:`Create an agent or import a native TOML definition.`})]}),!Y&&(0,T.jsxs)(a,{size:`sm`,onClick:$,children:[(0,T.jsx)(u,{className:`mr-1.5 h-4 w-4`}),`New agent`]})]}):(0,T.jsx)(`div`,{className:`mx-auto grid max-w-6xl grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3`,children:Q.map(e=>{let t=Ee.has(e.id);return(0,T.jsxs)(ye,{className:i(`flex flex-col gap-4 p-4`,Y&&!t&&`opacity-60`),children:[(0,T.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h2`,{className:`font-semibold`,children:e.name}),(0,T.jsx)(_,{variant:`outline`,children:`Codex`})]}),(0,T.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e.description})]}),Y?(0,T.jsxs)(a,{variant:t?`default`:`outline`,size:`sm`,onClick:()=>je(e.id),disabled:!Z,children:[(0,T.jsx)(pe,{className:i(`mr-1 h-3.5 w-3.5`,!t&&`opacity-0`)}),t?`Enabled`:`Disabled`]}):(0,T.jsxs)(`div`,{className:`flex gap-1`,children:[(0,T.jsx)(a,{variant:`ghost`,size:`icon`,"aria-label":`Edit ${e.name}`,onClick:()=>De(e),children:(0,T.jsx)(te,{className:`h-4 w-4`})}),(0,T.jsx)(a,{variant:`ghost`,size:`icon`,"aria-label":`Delete ${e.name}`,onClick:()=>V(e),children:(0,T.jsx)(oe,{className:`h-4 w-4`})})]})]}),(0,T.jsxs)(`div`,{className:`flex flex-wrap gap-2 text-xs text-muted-foreground`,children:[e.sandboxMode&&(0,T.jsx)(_,{variant:`secondary`,children:e.sandboxMode}),e.modelReasoningEffort&&(0,T.jsx)(_,{variant:`secondary`,children:e.modelReasoningEffort}),e.model&&(0,T.jsx)(_,{variant:`secondary`,children:e.model})]})]},e.id)})})}),(0,T.jsx)(h,{open:Se,onOpenChange:k,children:(0,T.jsxs)(f,{className:`max-w-2xl`,children:[(0,T.jsxs)(m,{children:[(0,T.jsx)(p,{children:M?`Edit Codex agent`:`Create Codex agent`}),(0,T.jsx)(g,{children:`Only the current stable native fields are managed. Omitted settings inherit from Codex.`})]}),(0,T.jsxs)(`div`,{className:`grid gap-4 py-2`,children:[(0,T.jsxs)(`div`,{className:`grid gap-2`,children:[(0,T.jsx)(S,{htmlFor:`agent-name`,children:`Name`}),(0,T.jsx)(o,{id:`agent-name`,value:P.name,disabled:!!M,onChange:e=>F({...P,name:D(e.target.value)}),placeholder:`code-reviewer`})]}),(0,T.jsxs)(`div`,{className:`grid gap-2`,children:[(0,T.jsx)(S,{htmlFor:`agent-description`,children:`Description`}),(0,T.jsx)(o,{id:`agent-description`,value:P.description,onChange:e=>F({...P,description:e.target.value}),placeholder:`Use when reviewing a fixed diff for correctness and security.`})]}),(0,T.jsxs)(`div`,{className:`grid gap-2`,children:[(0,T.jsx)(S,{htmlFor:`agent-instructions`,children:`Developer instructions`}),(0,T.jsx)(C,{id:`agent-instructions`,value:P.developerInstructions,onChange:e=>F({...P,developerInstructions:e.target.value}),className:`min-h-48 font-mono`})]}),(0,T.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-3`,children:[(0,T.jsxs)(`div`,{className:`grid gap-2`,children:[(0,T.jsx)(S,{htmlFor:`agent-model`,children:`Model override`}),(0,T.jsx)(o,{id:`agent-model`,value:P.model??``,onChange:e=>F({...P,model:e.target.value||void 0}),placeholder:`Inherit`})]}),(0,T.jsxs)(`div`,{className:`grid gap-2`,children:[(0,T.jsx)(S,{htmlFor:`agent-effort`,children:`Reasoning`}),(0,T.jsxs)(`select`,{id:`agent-effort`,value:P.modelReasoningEffort??``,onChange:e=>F({...P,modelReasoningEffort:e.target.value||void 0}),className:`h-9 rounded-md border border-input bg-background px-3 text-sm`,children:[(0,T.jsx)(`option`,{value:``,children:`Inherit`}),(0,T.jsx)(`option`,{value:`low`,children:`Low`}),(0,T.jsx)(`option`,{value:`medium`,children:`Medium`}),(0,T.jsx)(`option`,{value:`high`,children:`High`}),(0,T.jsx)(`option`,{value:`xhigh`,children:`XHigh`}),(0,T.jsx)(`option`,{value:`max`,children:`Max`}),(0,T.jsx)(`option`,{value:`ultra`,children:`Ultra`})]})]}),(0,T.jsxs)(`div`,{className:`grid gap-2`,children:[(0,T.jsx)(S,{htmlFor:`agent-sandbox`,children:`Sandbox`}),(0,T.jsxs)(`select`,{id:`agent-sandbox`,value:P.sandboxMode??``,onChange:e=>F({...P,sandboxMode:e.target.value||void 0}),className:`h-9 rounded-md border border-input bg-background px-3 text-sm`,children:[(0,T.jsx)(`option`,{value:``,children:`Inherit`}),(0,T.jsx)(`option`,{value:`read-only`,children:`Read only`}),(0,T.jsx)(`option`,{value:`workspace-write`,children:`Workspace write`})]})]})]})]}),(0,T.jsxs)(d,{children:[(0,T.jsx)(a,{variant:`outline`,onClick:()=>k(!1),children:`Cancel`}),(0,T.jsx)(a,{onClick:Oe,disabled:G.isPending||!P.name||!P.description||!P.developerInstructions,children:G.isPending?`Saving…`:`Save agent`})]})]})}),(0,T.jsx)(h,{open:A,onOpenChange:j,children:(0,T.jsxs)(f,{className:`max-w-2xl`,children:[(0,T.jsxs)(m,{children:[(0,T.jsx)(p,{children:`Import Codex agent TOML`}),(0,T.jsx)(g,{children:`The import accepts the required native fields and supported model, reasoning, and sandbox overrides.`})]}),(0,T.jsx)(C,{value:I,onChange:e=>L(e.target.value),className:`min-h-72 font-mono`,placeholder:`name = "reviewer"
2
- description = "Use for code review."
3
- developer_instructions = "Review the fixed diff."`}),(0,T.jsxs)(d,{children:[(0,T.jsx)(a,{variant:`outline`,onClick:()=>j(!1),children:`Cancel`}),(0,T.jsx)(a,{onClick:ke,disabled:K.isPending||!I.trim(),children:K.isPending?`Importing…`:`Import agent`})]})]})}),(0,T.jsx)(ae,{open:B!==null,onOpenChange:e=>!e&&V(null),children:(0,T.jsxs)(l,{children:[(0,T.jsxs)(ee,{children:[(0,T.jsxs)(ie,{children:[`Delete “`,B?.name,`”?`]}),(0,T.jsx)(re,{children:`This removes the agent from the personal catalog. Existing workspace copies remain until the workspace is refreshed.`})]}),(0,T.jsxs)(ne,{children:[(0,T.jsx)(c,{render:(0,T.jsx)(a,{variant:`outline`,children:`Cancel`})}),(0,T.jsx)(a,{variant:`destructive`,onClick:Ae,disabled:q.isPending,children:q.isPending?`Deleting…`:`Delete agent`})]})]})})]})}export{O as AgentsPage};
@@ -1 +0,0 @@
1
- import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,i as s,l as c,m as l,o as u,p as d,u as f,v as p}from"./button-BDDZnIHx.js";var m=p((t=>{var n=e();function r(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function i(){}var a={d:{f:i,r:function(){throw Error(r(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},o=Symbol.for(`react.portal`);function s(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var c=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function l(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=a,t.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(r(299));return s(e,t,null,n)},t.flushSync=function(e){var t=c.T,n=a.p;try{if(c.T=null,a.p=2,e)return e()}finally{c.T=t,a.p=n,a.d.f()}},t.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,a.d.C(e,t))},t.prefetchDNS=function(e){typeof e==`string`&&a.d.D(e)},t.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=l(n,t.crossOrigin),i=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?a.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:i,fetchPriority:o}):n===`script`&&a.d.X(e,{crossOrigin:r,integrity:i,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},t.preinitModule=function(e,t){if(typeof e==`string`)if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=l(t.as,t.crossOrigin);a.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??a.d.M(e)},t.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=l(n,t.crossOrigin);a.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},t.preloadModule=function(e,t){if(typeof e==`string`)if(t){var n=l(t.as,t.crossOrigin);a.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else a.d.m(e)},t.requestFormReset=function(e){a.d.r(e)},t.unstable_batchedUpdates=function(e,t){return e(t)},t.useFormState=function(e,t,n){return c.H.useFormState(e,t,n)},t.useFormStatus=function(){return c.H.useHostTransitionStatus()},t.version=`19.2.7`})),h=p(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=function(e){return e.startingStyle=`data-starting-style`,e.endingStyle=`data-ending-style`,e}({}),_={[g.startingStyle]:``},v={[g.endingStyle]:``},y={transitionStatus(e){return e===`starting`?_:e===`ending`?v:null}},b=function(e){return e.open=`data-open`,e.closed=`data-closed`,e[e.startingStyle=g.startingStyle]=`startingStyle`,e[e.endingStyle=g.endingStyle]=`endingStyle`,e.anchorHidden=`data-anchor-hidden`,e.side=`data-side`,e.align=`data-align`,e}({}),x=function(e){return e.popupOpen=`data-popup-open`,e.pressed=`data-pressed`,e}({}),S={[x.popupOpen]:``},C={[x.popupOpen]:``,[x.pressed]:``},w={[b.open]:``},T={[b.closed]:``},E={[b.anchorHidden]:``},D={open(e){return e?S:null}},O={open(e){return e?C:null}},k={open(e){return e?w:T},anchorHidden(e){return e?E:null}},A=`none`,j=`trigger-press`,M=`trigger-hover`,N=`trigger-focus`,ee=`outside-press`,P=`item-press`,F=`close-press`,te=`focus-out`,ne=`escape-key`,I=`list-navigation`,re=`cancel-open`,ie=`sibling-open`,ae=`disabled`,oe=`missing`,L=`initial`,se=`imperative-action`,R=`window-resize`,z=n(h(),1),B=o(),V=n(e(),1);function H({controlled:e,default:t,name:n,state:r=`value`}){let{current:i}=V.useRef(e!==void 0),[a,o]=V.useState(t);return[i?e:a,V.useCallback(e=>{i||o(e)},[])]}function ce(){return typeof window<`u`}function U(e){return ue(e)?(e.nodeName||``).toLowerCase():`#document`}function W(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function le(e){return((ue(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function ue(e){return ce()?e instanceof Node||e instanceof W(e).Node:!1}function G(e){return ce()?e instanceof Element||e instanceof W(e).Element:!1}function K(e){return ce()?e instanceof HTMLElement||e instanceof W(e).HTMLElement:!1}function de(e){return!ce()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof W(e).ShadowRoot}function fe(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Ce(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function pe(e){return/^(table|td|th)$/.test(U(e))}function me(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var he=/transform|translate|scale|rotate|perspective|filter/,ge=/paint|layout|strict|content/,_e=e=>!!e&&e!==`none`,ve;function ye(e){let t=G(e)?Ce(e):e;return _e(t.transform)||_e(t.translate)||_e(t.scale)||_e(t.rotate)||_e(t.perspective)||!xe()&&(_e(t.backdropFilter)||_e(t.filter))||he.test(t.willChange||``)||ge.test(t.contain||``)}function be(e){let t=Te(e);for(;K(t)&&!Se(t);){if(ye(t))return t;if(me(t))return null;t=Te(t)}return null}function xe(){return ve??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),ve}function Se(e){return/^(html|body|#document)$/.test(U(e))}function Ce(e){return W(e).getComputedStyle(e)}function we(e){return G(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Te(e){if(U(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||de(e)&&e.host||le(e);return de(t)?t.host:t}function Ee(e){let t=Te(e);return Se(t)?(e.ownerDocument||e).body:K(t)&&fe(t)?t:Ee(t)}function De(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Ee(e),i=r===e.ownerDocument?.body,a=W(r);if(i){let e=Oe(a);return t.concat(a,a.visualViewport||[],fe(r)?r:[],e&&n?De(e):[])}else return t.concat(r,De(r,[],n))}function Oe(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var ke={...V},Ae=ke.useInsertionEffect,je=Ae&&Ae!==ke.useLayoutEffect?Ae:e=>e();function q(e){let t=a(Me).current;return t.next=e,je(t.effect),t.trampoline}function Me(){let e={next:void 0,callback:Ne,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function Ne(){}var J=typeof document<`u`?V.useLayoutEffect:()=>{},Pe=V.createContext(void 0);function Fe(e=!1){let t=V.useContext(Pe);if(t===void 0&&!e)throw Error(d(16));return t}function Ie(e){let{focusableWhenDisabled:t,disabled:n,composite:r=!1,tabIndex:i=0,isNativeButton:a}=e,o=r&&t!==!1,s=r&&t===!1;return{props:V.useMemo(()=>{let e={onKeyDown(e){n&&t&&e.key!==`Tab`&&e.preventDefault()}};return r||(e.tabIndex=i,!a&&n&&(e.tabIndex=t?i:-1)),(a&&(t||o)||!a&&n)&&(e[`aria-disabled`]=n),a&&(!t||s)&&(e.disabled=n),e},[r,n,t,o,s,a,i])}}function Le(e={}){let{disabled:n=!1,focusableWhenDisabled:r,tabIndex:i=0,native:a=!0,composite:o}=e,s=V.useRef(null),c=Fe(!0),l=o??c!==void 0,{props:d}=Ie({focusableWhenDisabled:r,disabled:n,composite:l,tabIndex:i,isNativeButton:a}),f=V.useCallback(()=>{let e=s.current;Re(e)&&l&&n&&d.disabled===void 0&&e.disabled&&(e.disabled=!1)},[n,d.disabled,l]);return J(f,[f]),{getButtonProps:V.useCallback((e={})=>{let{onClick:r,onMouseDown:i,onKeyUp:o,onKeyDown:s,onPointerDown:c,...f}=e;return u({onClick(e){if(n){e.preventDefault();return}r?.(e)},onMouseDown(e){n||i?.(e)},onKeyDown(e){if(n||(t(e),s?.(e),e.baseUIHandlerPrevented))return;let i=e.target===e.currentTarget,o=e.currentTarget,c=Re(o),u=!a&&ze(o),d=i&&(a?c:!u),f=e.key===`Enter`,p=e.key===` `,m=o.getAttribute(`role`),h=m?.startsWith(`menuitem`)||m===`option`||m===`gridcell`;if(i&&l&&p){if(e.defaultPrevented&&h)return;e.preventDefault(),u||a&&c?(o.click(),e.preventBaseUIHandler()):d&&(r?.(e),e.preventBaseUIHandler());return}d&&(!a&&(p||f)&&e.preventDefault(),!a&&f&&r?.(e))},onKeyUp(e){if(!n){if(t(e),o?.(e),e.target===e.currentTarget&&a&&l&&Re(e.currentTarget)&&e.key===` `){e.preventDefault();return}e.baseUIHandlerPrevented||e.target===e.currentTarget&&!a&&!l&&e.key===` `&&r?.(e)}},onPointerDown(e){if(n){e.preventDefault();return}c?.(e)}},a?{type:`button`}:{role:`button`},d,f)},[n,d,l,a]),buttonRef:q(e=>{s.current=e,f()})}}function Re(e){return K(e)&&e.tagName===`BUTTON`}function ze(e){return!!(e?.tagName===`A`&&e?.href)}function Be(){return typeof navigator>`u`?{userAgent:``,platform:``,maxTouchPoints:0}:{userAgent:navigator.userAgent,platform:navigator.platform??``,maxTouchPoints:navigator.maxTouchPoints??0}}var{userAgent:Ve,platform:He,maxTouchPoints:Ue}=Be(),We=Ve.toLowerCase(),Ge=He.toLowerCase(),Ke=/^i(os$|p)/.test(Ge)||Ge===`macintel`&&Ue>1,qe=`android`,Je=Ge===qe||We.includes(qe),Ye=!Ke&&Ge.startsWith(`mac`);Ge.startsWith(`win`),!Je&&/^(linux|chrome os)/.test(Ge);var Xe=Ye||Ke,Ze=typeof CSS<`u`&&!!CSS.supports?.(`-webkit-backdrop-filter:none`);!Ze&&We.includes(`firefox`),!Ze&&We.includes(`chrom`);var Qe=Xe,$e=/jsdom|happydom/.test(We),et=0;function tt(e,t=`mui`){let[n,r]=V.useState(e),i=e||n;return V.useEffect(()=>{n??(et+=1,r(`${t}-${et}`))},[n,t]),i}var nt=ke.useId;function rt(e,t){if(nt!==void 0){let n=nt();return e??(t?`${t}-${n}`:n)}return tt(e,t)}function it(e){return rt(e,`base-ui`)}function at(e,t,n,i){let a=!1,o=!1,s=i??r;return{reason:e,event:t??new Event(`base-ui`),cancel(){a=!0},allowPropagation(){o=!0},get isCanceled(){return a},get isPropagationAllowed(){return o},trigger:n,...s}}var ot=[];function st(e){V.useEffect(e,ot)}var ct=null;globalThis.requestAnimationFrame;var lt=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;let t=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let n=0;n<t.length;n+=1)t[n]?.(e)};request(e){let t=this.nextId;return this.nextId+=1,this.callbacks.push(e),this.callbacksCount+=1,this.isScheduled||=(requestAnimationFrame(this.tick),!0),t}cancel(e){let t=e-this.startId;t<0||t>=this.callbacks.length||(this.callbacks[t]=null,--this.callbacksCount)}},ut=class e{static create(){return new e}static request(e){return lt.request(e)}static cancel(e){return lt.cancel(e)}currentId=ct;request(e){this.cancel(),this.currentId=lt.request(()=>{this.currentId=ct,e()})}cancel=()=>{this.currentId!==ct&&(lt.cancel(this.currentId),this.currentId=ct)};disposeEffect=()=>this.cancel};function dt(){let e=a(ut.create).current;return st(e.disposeEffect),e}function ft(e,t=!1,n=!1){let[r,i]=V.useState(e&&t?`idle`:void 0),[a,o]=V.useState(e);return e&&!a&&(o(!0),i(`starting`)),!e&&a&&r!==`ending`&&!n&&i(`ending`),!e&&!a&&r===`ending`&&i(void 0),J(()=>{if(!e&&a&&r!==`ending`&&n){let e=ut.request(()=>{i(`ending`)});return()=>{ut.cancel(e)}}},[e,a,r,n]),J(()=>{if(!e||t)return;let n=ut.request(()=>{i(void 0)});return()=>{ut.cancel(n)}},[t,e]),J(()=>{if(!e||!t)return;e&&a&&r!==`idle`&&i(`starting`);let n=ut.request(()=>{i(`idle`)});return()=>{ut.cancel(n)}},[t,e,a,r]),{mounted:a,setMounted:o,transitionStatus:r}}function Y(e){return e==null?e:`current`in e?e.current:e}function pt(e,t=!1,n=!0){let r=dt();return q((i,a=null)=>{r.cancel();let o=Y(e);if(o==null)return;let s=o,c=()=>{z.flushSync(i)};if(typeof s.getAnimations!=`function`||globalThis.BASE_UI_ANIMATIONS_DISABLED){i();return}function l(){Promise.all(s.getAnimations().map(e=>e.finished)).then(()=>{a?.aborted||c()}).catch(()=>{if(n){a?.aborted||c();return}let e=s.getAnimations();!a?.aborted&&e.length>0&&e.some(e=>e.pending||e.playState!==`finished`)&&l()})}if(t){let e=g.startingStyle;if(!s.hasAttribute(e)){r.request(l);return}let t=new MutationObserver(()=>{s.hasAttribute(e)||(t.disconnect(),l())});t.observe(s,{attributes:!0,attributeFilter:[e]}),a?.addEventListener(`abort`,()=>t.disconnect(),{once:!0});return}r.request(l)})}function mt(e){let{enabled:t=!0,open:n,ref:r,onComplete:i}=e,a=q(i),o=pt(r,n,!1);V.useEffect(()=>{if(!t)return;let e=new AbortController;return o(a,e.signal),()=>{e.abort()}},[t,n,a,o])}var ht=0,gt=class e{static create(){return new e}currentId=ht;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=ht,t()},e)}isStarted(){return this.currentId!==ht}clear=()=>{this.currentId!==ht&&(clearTimeout(this.currentId),this.currentId=ht)};disposeEffect=()=>this.clear};function _t(){let e=a(gt.create).current;return st(e.disposeEffect),e}function vt(e){e.preventDefault(),e.stopPropagation()}function yt(e){return`nativeEvent`in e}function bt(e){return e.pointerType===``&&e.isTrusted?!0:Je&&e.pointerType?e.type===`click`&&e.buttons===1:e.detail===0&&!e.pointerType}function xt(e){return $e?!1:!Je&&e.width===0&&e.height===0||Je&&e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType===`mouse`||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0&&e.pointerType===`touch`}function St(e,t){let n=[`mouse`,`pen`];return t||n.push(``,void 0),n.includes(e)}function Ct(e){let t=e.type;return t===`click`||t===`mousedown`||t===`keydown`||t===`keyup`}var wt=`data-base-ui-focusable`,Tt=`input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])`,Et=`ArrowLeft`,Dt=`ArrowRight`,Ot=`ArrowUp`,kt=`ArrowDown`;function X(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function Z(e,t){if(!e||!t)return!1;let n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&de(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function At(e){return`composedPath`in e?e.composedPath()[0]:e.target}function jt(e,t){if(!G(e))return!1;let n=e;if(t.hasElement(n))return!n.hasAttribute(`data-trigger-disabled`);for(let[,e]of t.entries())if(Z(e,n))return!e.hasAttribute(`data-trigger-disabled`);return!1}function Mt(e,t){if(t==null)return!1;if(`composedPath`in e)return e.composedPath().includes(t);let n=e;return n.target!=null&&t.contains(n.target)}function Nt(e){return e.matches(`html,body`)}function Pt(e){return K(e)&&e.matches(`input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])`)}function Ft(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${Tt}`)!=null}function It(e){return e?e.getAttribute(`role`)===`combobox`&&Pt(e):!1}function Lt(e){if(!e||$e)return!0;try{return e.matches(`:focus-visible`)}catch{return!0}}function Rt(e){return e?e.hasAttribute(`data-base-ui-focusable`)?e:e.querySelector(`[data-base-ui-focusable]`)||e:null}function Q(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function zt(...e){return()=>{for(let t=0;t<e.length;t+=1){let n=e[t];n&&n()}}}function Bt(e){let t=a(Vt,e).current;return t.next=e,J(t.effect),t}function Vt(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}function $(e){return e?.ownerDocument||document}var Ht={clipPath:`inset(50%)`,overflow:`hidden`,whiteSpace:`nowrap`,border:0,padding:0,width:1,height:1,margin:-1},Ut={...Ht,position:`fixed`,top:0,left:0},Wt={...Ht,position:`absolute`},Gt=V.forwardRef(function(e,t){let[n,r]=V.useState();J(()=>{Qe&&Ze&&r(`button`)},[]);let i={tabIndex:0,role:n};return(0,B.jsx)(`span`,{...e,ref:t,style:Ut,"aria-hidden":!n||void 0,...i,"data-base-ui-focus-guard":``})});function Kt(e,t){return t<0||t>=e.length}function qt(e,t){return Yt(e.current,{disabledIndices:t})}function Jt(e,t){return Yt(e.current,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function Yt(e,{startingIndex:t=-1,decrement:n=!1,disabledIndices:r,amount:i=1}={}){let a=t;do a+=n?-i:i;while(a>=0&&a<=e.length-1&&Xt(e,a,r));return a}function Xt(e,t,n){if(typeof n==`function`?n(t):n?.includes(t)??!1)return!0;let r=e[t];return r?!Qt(r)||!n&&(r.hasAttribute(`disabled`)||r.getAttribute(`aria-disabled`)===`true`):!1}function Zt(e){return e.visibility===`hidden`||e.visibility===`collapse`}function Qt(e,t=e?Ce(e):null){return!e||!e.isConnected||!t||Zt(t)?!1:typeof e.checkVisibility==`function`?e.checkVisibility():t.display!==`none`&&t.display!==`contents`}var $t=`a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]`;function en(e){let t=e.assignedSlot;if(t)return t;if(e.parentElement)return e.parentElement;let n=e.getRootNode();return de(n)?n.host:null}function tn(e){for(let t of Array.from(e.children))if(U(t)===`summary`)return t;return null}function nn(e,t){let n=tn(t);return!!n&&(e===n||Z(n,e))}function rn(e){let t=e?U(e):``;return e!=null&&e.matches($t)&&(t!==`summary`||e.parentElement!=null&&U(e.parentElement)===`details`&&tn(e.parentElement)===e)&&(t!==`details`||tn(e)==null)&&(t!==`input`||e.type!==`hidden`)}function an(e){if(!rn(e)||!e.isConnected||e.matches(`:disabled`))return!1;for(let t=e;t;t=en(t)){let n=t!==e,r=U(t)===`slot`;if(t.hasAttribute(`inert`)||n&&U(t)===`details`&&!t.open&&!nn(e,t)||t.hasAttribute(`hidden`)||!r&&!on(t,n))return!1}return!0}function on(e,t){let n=Ce(e);return t?n.display!==`none`:Qt(e,n)}function sn(e){let t=e.tabIndex;if(t<0){let t=U(e);if(t===`details`||t===`audio`||t===`video`||K(e)&&e.isContentEditable)return 0}return t}function cn(e){if(U(e)!==`input`)return null;let t=e;return t.type===`radio`&&t.name!==``?t:null}function ln(e,t){let n=cn(e);if(!n)return!0;let r=t.find(e=>{let t=cn(e);return t?.name===n.name&&t.form===n.form&&t.checked});return r?r===n:t.find(e=>{let t=cn(e);return t?.name===n.name&&t.form===n.form})===n}function un(e){if(K(e)&&U(e)===`slot`){let t=e.assignedElements({flatten:!0});if(t.length>0)return t}return K(e)&&e.shadowRoot?Array.from(e.shadowRoot.children):Array.from(e.children)}function dn(e,t){un(e).forEach(e=>{rn(e)&&t.push(e),dn(e,t)})}function fn(e,t,n){un(e).forEach(e=>{K(e)&&e.matches(t)&&n.push(e),fn(e,t,n)})}function pn(e){return an(e)&&sn(e)>=0}function mn(e){let t=[];return dn(e,t),t.filter(an)}function hn(e){let t=mn(e);return t.filter(e=>sn(e)>=0&&ln(e,t))}function gn(e,t){let n=hn(e),r=n.length;if(r===0)return;let i=X($(e)),a=n.indexOf(i);return n[a===-1?t===1?0:r-1:a+t]}function _n(e){return gn($(e).body,1)||e}function vn(e){return gn($(e).body,-1)||e}function yn(e,t){if(!e)return null;let n=hn($(e).body),r=n.length;if(r===0)return null;let i=n.indexOf(e);return i===-1?null:n[(i+t+r)%r]}function bn(e){return yn(e,1)}function xn(e){return yn(e,-1)}function Sn(e,t){let n=t||e.currentTarget,r=e.relatedTarget;return!r||!Z(n,r)}function Cn(e){hn(e).forEach(e=>{e.dataset.tabindex=e.getAttribute(`tabindex`)||``,e.setAttribute(`tabindex`,`-1`)})}function wn(e){let t=[];fn(e,`[data-tabindex]`,t),t.forEach(e=>{let t=e.dataset.tabindex;delete e.dataset.tabindex,t?e.setAttribute(`tabindex`,t):e.removeAttribute(`tabindex`)})}function Tn(e,t,n=!0){return e.filter(e=>e.parentId===t).flatMap(t=>[...!n||t.context?.open?[t]:[],...Tn(e,t.id,n)])}function En(e,t){let n=[],r=e.find(e=>e.id===t)?.parentId;for(;r;){let t=e.find(e=>e.id===r);r=t?.parentId,t&&(n=n.concat(t))}return n}function Dn(e){return`data-base-ui-${e}`}var On=0;function kn(e,t={}){let{preventScroll:n=!1,sync:r=!1,shouldFocus:i}=t;cancelAnimationFrame(On);function a(){i&&!i()||e?.focus({preventScroll:n})}if(r)return a(),c;let o=requestAnimationFrame(a);return On=o,()=>{On===o&&(cancelAnimationFrame(o),On=0)}}var An={inert:new WeakMap,"aria-hidden":new WeakMap},jn=`data-base-ui-inert`,Mn={inert:new WeakSet,"aria-hidden":new WeakSet},Nn=new WeakMap,Pn=0;function Fn(e){return Mn[e]}function In(e){return e?de(e)?e.host:In(e.parentNode):null}var Ln=(e,t)=>t.map(t=>{if(e.contains(t))return t;let n=In(t);return e.contains(n)?n:null}).filter(e=>e!=null),Rn=e=>{let t=new Set;return e.forEach(e=>{let n=e;for(;n&&!t.has(n);)t.add(n),n=n.parentNode}),t},zn=(e,t,n)=>{let r=[],i=e=>{!e||n.has(e)||Array.from(e.children).forEach(e=>{U(e)!==`script`&&(t.has(e)?i(e):r.push(e))})};return i(e),r};function Bn(e,t,n,r,{mark:i=!0}){let a=null;r?a=`inert`:n&&(a=`aria-hidden`);let o=null,s=null,c=Ln(t,e),l=i?zn(t,Rn(c),new Set(c)):[],u=[],d=[];if(a){let e=An[a],n=Fn(a);s=n,o=e;let r=Ln(t,Array.from(t.querySelectorAll(`[aria-live]`))),i=c.concat(r);zn(t,Rn(i),new Set(i)).forEach(t=>{let r=t.getAttribute(a),i=r!==null&&r!==`false`,o=(e.get(t)||0)+1;e.set(t,o),u.push(t),o===1&&i&&n.add(t),i||t.setAttribute(a,a===`inert`?``:`true`)})}return i&&l.forEach(e=>{let t=(Nn.get(e)||0)+1;Nn.set(e,t),d.push(e),t===1&&e.setAttribute(jn,``)}),Pn+=1,()=>{o&&u.forEach(e=>{let t=(o.get(e)||0)-1;o.set(e,t),t||(!s?.has(e)&&a&&e.removeAttribute(a),s?.delete(e))}),i&&d.forEach(e=>{let t=(Nn.get(e)||0)-1;Nn.set(e,t),t||e.removeAttribute(jn)}),--Pn,Pn||(An.inert=new WeakMap,An[`aria-hidden`]=new WeakMap,Mn.inert=new WeakSet,Mn[`aria-hidden`]=new WeakSet,Nn=new WeakMap)}}function Vn(e,t={}){let{ariaHidden:n=!1,inert:r=!1,mark:i=!0}=t,a=$(e[0]).body;return Bn(e,a,n,r,{mark:i})}var Hn={style:{transition:`none`}},Un=`data-base-ui-click-trigger`,Wn={fallbackAxisSide:`none`},Gn={fallbackAxisSide:`end`},Kn={clipPath:`inset(50%)`,position:`fixed`,top:0,left:0},qn=V.createContext(null),Jn=()=>V.useContext(qn),Yn=Dn(`portal`);function Xn(e={}){let{ref:t,container:n,componentProps:i=r,elementProps:a}=e,o=rt(),c=Jn()?.portalNode,[l,u]=V.useState(null),[d,f]=V.useState(null),p=q(e=>{e!==null&&f(e)}),m=V.useRef(null);J(()=>{if(n===null){m.current&&(m.current=null,f(null),u(null));return}if(o==null)return;let e=(n&&(ue(n)?n:n.current))??c??document.body;if(e==null){m.current&&(m.current=null,f(null),u(null));return}m.current!==e&&(m.current=e,f(null),u(e))},[n,c,o]);let h=s(`div`,i,{ref:[t,p],props:[{id:o,[Yn]:``},a]});return{portalNode:d,portalSubtree:l&&h?z.createPortal(h,l):null}}var Zn=V.forwardRef(function(e,t){let{render:n,className:r,style:i,children:a,container:o,renderGuards:s,...c}=e,{portalNode:l,portalSubtree:u}=Xn({container:o,ref:t,componentProps:e,elementProps:c}),d=V.useRef(null),f=V.useRef(null),p=V.useRef(null),m=V.useRef(null),[h,g]=V.useState(null),_=V.useRef(!1),v=h?.modal,y=h?.open,b=typeof s==`boolean`?s:!!h&&!h.modal&&h.open&&!!l;V.useEffect(()=>{if(!l||v)return;function e(e){l&&e.relatedTarget&&Sn(e)&&(e.type===`focusin`?_.current&&=(wn(l),!1):(Cn(l),_.current=!0))}return zt(Q(l,`focusin`,e,!0),Q(l,`focusout`,e,!0))},[l,v]),J(()=>{!l||y!==!0||!_.current||(wn(l),_.current=!1)},[y,l]);let x=V.useMemo(()=>({beforeOutsideRef:d,afterOutsideRef:f,beforeInsideRef:p,afterInsideRef:m,portalNode:l,setFocusManagerState:g}),[l]);return(0,B.jsxs)(V.Fragment,{children:[u,(0,B.jsxs)(qn.Provider,{value:x,children:[b&&l&&(0,B.jsx)(Gt,{"data-type":`outside`,ref:d,onFocus:e=>{Sn(e,l)?p.current?.focus():vn(h?h.domReference:null)?.focus()}}),b&&l&&(0,B.jsx)(`span`,{"aria-owns":l.id,style:Kn}),l&&z.createPortal(a,l),b&&l&&(0,B.jsx)(Gt,{"data-type":`outside`,ref:f,onFocus:e=>{Sn(e,l)?m.current?.focus():(_n(h?h.domReference:null)?.focus(),h?.closeOnFocusOut&&h?.onOpenChange(!1,at(`focus-out`,e.nativeEvent)))}})]})]})});function Qn(){let e=new Map;return{emit(t,n){e.get(t)?.forEach(e=>e(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}var $n=class{nodesRef={current:[]};events=Qn();addNode(e){this.nodesRef.current.push(e)}removeNode(e){let t=this.nodesRef.current.findIndex(t=>t===e);t!==-1&&this.nodesRef.current.splice(t,1)}},er=V.createContext(null),tr=V.createContext(null),nr=()=>V.useContext(er)?.id||null,rr=e=>{let t=V.useContext(tr);return e??t};function ir(e){let t=rt(),n=rr(e),r=nr();return J(()=>{if(!t)return;let e={id:t,parentId:r};return n?.addNode(e),()=>{n?.removeNode(e)}},[n,t,r]),t}function ar(e){let{children:t,id:n}=e,r=nr();return(0,B.jsx)(er.Provider,{value:V.useMemo(()=>({id:n,parentId:r}),[n,r]),children:t})}function or(e){let{children:t,externalTree:n}=e,r=a(()=>n??new $n).current;return(0,B.jsx)(tr.Provider,{value:r,children:t})}function sr(e,t){let n=W(At(e));return e instanceof n.KeyboardEvent?`keyboard`:e instanceof n.FocusEvent?t||`keyboard`:`pointerType`in e?e.pointerType||`keyboard`:`touches`in e?`touch`:e instanceof n.MouseEvent?t||(e.detail===0?`keyboard`:`mouse`):``}var cr=20,lr=[];function ur(){lr=lr.filter(e=>e.deref()?.isConnected)}function dr(e){ur(),e&&U(e)!==`body`&&(lr.push(new WeakRef(e)),lr.length>cr&&(lr=lr.slice(-20)))}function fr(){return ur(),lr[lr.length-1]?.deref()}function pr(e){return e?pn(e)?e:hn(e)[0]||e:null}function mr(e){if(e.hasAttribute(`tabindex`)&&!e.hasAttribute(`data-tabindex`)||!e.getAttribute(`role`)?.includes(`dialog`))return;let t=mn(e).filter(e=>{let t=e.getAttribute(`data-tabindex`)||``;return pn(e)||e.hasAttribute(`data-tabindex`)&&!t.startsWith(`-`)}),n=e.getAttribute(`tabindex`);t.length===0?n!==`0`&&(e.setAttribute(`tabindex`,`0`),e.setAttribute(`data-tabindex`,`0`)):(n!==`-1`||e.hasAttribute(`data-tabindex`)&&e.getAttribute(`data-tabindex`)!==`-1`)&&(e.setAttribute(`tabindex`,`-1`),e.setAttribute(`data-tabindex`,`-1`))}function hr(e){let{context:t,children:n,disabled:r=!1,initialFocus:a=!0,returnFocus:o=!0,restoreFocus:s=!1,modal:c=!0,closeOnFocusOut:l=!0,openInteractionType:u=``,nextFocusableElement:d,previousFocusableElement:f,beforeContentFocusGuardRef:p,externalTree:m,getInsideElements:h}=e,g=`rootStore`in t?t.rootStore:t,_=g.useState(`open`),v=g.useState(`domReferenceElement`),y=g.useState(`floatingElement`),{events:b,dataRef:x}=g.context,S=q(()=>x.current.floatingContext?.nodeId),C=a===!1,w=It(v)&&C,T=Bt(a),E=Bt(o),D=Bt(u),O=Bt(_),k=rr(m),A=Jn(),j=V.useRef(!1),M=V.useRef(!1),N=V.useRef(!1),ee=V.useRef(null),P=V.useRef(``),F=V.useRef(``),ne=V.useRef(null),I=V.useRef(null),re=i(ne,p,A?.beforeInsideRef),ie=i(I,A?.afterInsideRef),ae=_t(),oe=_t(),L=dt(),se=A!=null,R=Rt(y),z=q((e=R)=>e?hn(e):[]),H=q(()=>h?.().filter(e=>e!=null)??[]);V.useEffect(()=>{if(r||!c)return;function e(e){e.key===`Tab`&&Z(R,X($(R)))&&z().length===0&&!w&&vt(e)}return Q($(R),`keydown`,e)},[r,R,c,w,z]),V.useEffect(()=>{if(r||!_)return;let e=$(R);function t(){N.current=!1}function n(e){let t=At(e),n=H(),r=Z(y,t)||Z(v,t)||Z(A?.portalNode,t)||n.some(e=>e===t||Z(e,t));N.current=!r,F.current=e.pointerType||`keyboard`,t?.closest(`[data-base-ui-click-trigger]`)&&(M.current=!0,oe.start(0,()=>{M.current=!1}))}function i(){F.current=`keyboard`}return zt(Q(e,`pointerdown`,n,!0),Q(e,`pointerup`,t,!0),Q(e,`pointercancel`,t,!0),Q(e,`keydown`,i,!0),t)},[r,y,v,R,_,A,oe,H]),V.useEffect(()=>{if(r||!l)return;let e=$(R);function t(){M.current=!0,oe.start(0,()=>{M.current=!1})}function n(e){let t=At(e);pn(t)&&(ee.current=t)}function i(t){let n=t.relatedTarget,r=t.currentTarget,i=At(t);c&&n==null&&i!=null&&Z(y,i)&&dr(i),queueMicrotask(()=>{let a=S(),o=g.context.triggerElements,l=H(),u=n?.hasAttribute(Dn(`focus-guard`))&&[ne.current,I.current,A?.beforeInsideRef.current,A?.afterInsideRef.current,A?.beforeOutsideRef.current,A?.afterOutsideRef.current,Y(f),Y(d)].includes(n),p=!(Z(v,n)||Z(y,n)||Z(n,y)||Z(A?.portalNode,n)||l.some(e=>e===n||Z(e,n))||n!=null&&o.hasElement(n)||o.hasMatchingElement(e=>Z(e,n))||u||k&&(Tn(k.nodesRef.current,a).find(e=>Z(e.context?.elements.floating,n)||Z(e.context?.elements.domReference,n))||En(k.nodesRef.current,a).find(e=>[e.context?.elements.floating,Rt(e.context?.elements.floating)].includes(n)||e.context?.elements.domReference===n)));if(r===v&&R&&mr(R),s&&r!==v&&!Qt(i)&&X(e)===e.body){if(K(R)&&(R.focus(),s===`popup`)){L.request(()=>{R.focus()});return}let e=z(),t=ee.current,n=(t&&e.includes(t)?t:null)||e[e.length-1]||R;K(n)&&n.focus()}if(x.current.insideReactTree){x.current.insideReactTree=!1;return}(w||!c)&&n&&p&&!M.current&&(w||n!==fr())&&(j.current=!0,g.setOpen(!1,at(te,t)))})}function a(){N.current||(x.current.insideReactTree=!0,ae.start(0,()=>{x.current.insideReactTree=!1}))}let o=K(v)?v:null;if(!(!y&&!o))return zt(o&&Q(o,`focusout`,i),o&&Q(o,`pointerdown`,t),y&&Q(y,`focusin`,n),y&&Q(y,`focusout`,i),y&&A&&Q(y,`focusout`,a,!0))},[r,v,y,R,c,k,A,g,l,s,z,w,S,x,ae,oe,L,d,f,H]),V.useEffect(()=>{if(r||!y||!_)return;let e=Array.from(A?.portalNode?.querySelectorAll(`[${Dn(`portal`)}]`)||[]),t=(k?En(k.nodesRef.current,S()):[]).find(e=>It(e.context?.elements.domReference||null))?.context?.elements.domReference,n=Vn([y,...e,ne.current,I.current,A?.beforeOutsideRef.current,A?.afterOutsideRef.current,...H(),t,Y(f),Y(d),w?v:null].filter(e=>e!=null),{ariaHidden:c||w,mark:!1}),i=Vn([y,...e].filter(e=>e!=null));return()=>{i(),n()}},[_,r,v,y,c,A,w,k,S,d,f,H]),J(()=>{if(!_||r||!K(R))return;let e=$(R),t=X(e);queueMicrotask(()=>{let n=T.current,r=typeof n==`function`?n(D.current||``):n;if(r===void 0||r===!1||Z(R,t))return;let i=null,a=()=>(i??=z(R),i[0]||R),o;o=r===!0||r===null?a():Y(r),o||=a();let s=Z(R,X(e));kn(o,{preventScroll:o===R,shouldFocus(){if(!O.current)return!1;if(s)return!0;let t=X(e);return!(t!==o&&Z(R,t))}})})},[r,_,R,z,T,D,O]),J(()=>{if(r||!R)return;let e=$(R),t=X(e),n=D.current==null;dr(t);function i(e){if(e.open||(P.current=sr(e.nativeEvent,F.current)),e.reason===`trigger-hover`&&e.nativeEvent.type===`mouseleave`&&(j.current=!0),e.reason===`outside-press`)if(e.nested)j.current=!1;else if(bt(e.nativeEvent)||xt(e.nativeEvent))j.current=!1;else{let e=!1;$(R).createElement(`div`).focus({get preventScroll(){return e=!0,!1}}),e?j.current=!1:j.current=!0}}b.on(`openchange`,i);function a(){let e=E.current,r=typeof e==`function`?e(P.current):e;if(r===void 0||r===!1)return null;r===null&&(r=!0);let i=v?.isConnected?v:null,a=t?.isConnected&&U(t)!==`body`?t:null,o=n?a||i:i||a;return o||=fr()||null,typeof r==`boolean`?o:Y(r)||o||null}return()=>{b.off(`openchange`,i);let t=X(e),n=H(),r=Z(y,t)||n.some(e=>e===t||Z(e,t))||k&&Tn(k.nodesRef.current,S(),!1).some(e=>Z(e.context?.elements.floating,t)),o=E.current,s=a();queueMicrotask(()=>{let n=pr(s),i=typeof o!=`boolean`;o&&!j.current&&K(n)&&(!(!i&&n!==t&&t!==e.body)||r)&&n.focus({preventScroll:!0}),j.current=!1})}},[r,y,R,E,D,b,k,v,S,H]),J(()=>{if(!Ze||_||!y)return;let e=X($(y));!K(e)||!Pt(e)||Z(y,e)&&e.blur()},[_,y]),J(()=>{if(!(r||!A))return A.setFocusManagerState({modal:c,closeOnFocusOut:l,open:_,onOpenChange:g.setOpen,domReference:v}),()=>{A.setFocusManagerState(null)}},[r,A,c,_,g,l,v]),J(()=>{if(!(r||!R))return mr(R),()=>{queueMicrotask(ur)}},[r,R]);let ce=!r&&(!c||!w)&&(se||c);return(0,B.jsxs)(V.Fragment,{children:[ce&&(0,B.jsx)(Gt,{"data-type":`inside`,ref:re,onFocus:e=>{if(c){let e=z();kn(e[e.length-1])}else A?.portalNode&&(j.current=!1,Sn(e,A.portalNode)?_n(v)?.focus():Y(f??A.beforeOutsideRef)?.focus())}}),n,ce&&(0,B.jsx)(Gt,{"data-type":`inside`,ref:ie,onFocus:e=>{c?kn(z()[0]):A?.portalNode&&(l&&(j.current=!0),Sn(e,A.portalNode)?vn(v)?.focus():Y(d??A.afterOutsideRef)?.focus())}})]})}function gr(){return!1}function _r(e){return{escapeKey:typeof e==`boolean`?e:e?.escapeKey??!1,outsidePress:typeof e==`boolean`?e:e?.outsidePress??!0}}function vr(e,t={}){let{enabled:n=!0,escapeKey:r=!0,outsidePress:i=!0,outsidePressEvent:a=`sloppy`,referencePress:o=gr,bubbles:s,externalTree:c}=t,l=`rootStore`in e?e.rootStore:e,u=l.useState(`open`),d=l.useState(`floatingElement`),{dataRef:f}=l.context,p=rr(c),m=q(typeof i==`function`?i:()=>!1),h=typeof i==`function`?m:i,g=h!==!1,_=q(()=>a),{escapeKey:v,outsidePress:y}=_r(s),b=V.useRef(!1),x=V.useRef(!1),S=V.useRef(!1),C=V.useRef(!1),w=V.useRef(``),T=V.useRef(null),E=_t(),D=_t(),O=q(()=>{D.clear(),f.current.insideReactTree=!1}),k=q(e=>{let t=f.current.floatingContext?.nodeId;return(p?Tn(p.nodesRef.current,t):[]).some(t=>t.context?.open&&!t.context.dataRef.current[e])}),A=q(e=>Mt(e,l.select(`floatingElement`))||Mt(e,l.select(`domReferenceElement`))),M=q(e=>{o()&&l.setOpen(!1,at(j,e.nativeEvent))}),N=q(e=>{if(!u||!n||!r||e.key!==`Escape`||C.current||!v&&k(`__escapeKeyBubbles`))return;let t=at(ne,yt(e)?e.nativeEvent:e);l.setOpen(!1,t),t.isCanceled||e.preventDefault(),!v&&!t.isPropagationAllowed&&e.stopPropagation()}),P=q(()=>{f.current.insideReactTree=!0,D.start(0,O)}),F=q(e=>{if(!u||!n||e.button!==0)return;let t=At(e.nativeEvent);Z(l.select(`floatingElement`),t)&&(b.current||(b.current=!0,x.current=!1))}),te=q(e=>{!u||!n||(e.defaultPrevented||e.nativeEvent.defaultPrevented)&&b.current&&(x.current=!0)});V.useEffect(()=>{if(!u||!n)return;f.current.__escapeKeyBubbles=v,f.current.__outsidePressBubbles=y;let e=new gt,t=new gt;function i(){e.clear(),C.current=!0}function a(){e.start(Ze?5:0,()=>{C.current=!1})}function o(){S.current=!0,t.start(0,()=>{S.current=!1})}function s(){b.current=!1,x.current=!1}function c(){let e=w.current,t=e===`pen`||!e?`mouse`:e,n=_(),r=typeof n==`function`?n():n;return typeof r==`string`?r:r[t]}function m(e){let t=c();return t===`intentional`&&e.type!==`click`||t===`sloppy`&&e.type===`click`}function D(e){let t=f.current.floatingContext?.nodeId,n=p&&Tn(p.nodesRef.current,t).some(t=>Mt(e,t.context?.elements.floating));return A(e)||n}function j(e){if(m(e)){e.type!==`click`&&!A(e)&&(t.clear(),S.current=!1),O();return}if(f.current.insideReactTree){O();return}let n=At(e),r=`[${Dn(`inert`)}]`,i=G(n)?n.getRootNode():null,a=Array.from((de(i)?i:$(l.select(`floatingElement`))).querySelectorAll(r)),o=l.context.triggerElements;if(n&&(o.hasElement(n)||o.hasMatchingElement(e=>Z(e,n))))return;let s=G(n)?n:null;for(;s&&!Se(s);){let e=Te(s);if(Se(e)||!G(e))break;s=e}if(!(a.length&&G(n)&&!Nt(n)&&!Z(n,l.select(`floatingElement`))&&a.every(e=>!Z(s,e)))){if(K(n)&&!(`touches`in e)){let t=Se(n),r=Ce(n),i=/auto|scroll/,a=t||i.test(r.overflowX),o=t||i.test(r.overflowY),s=a&&n.clientWidth>0&&n.scrollWidth>n.clientWidth,c=o&&n.clientHeight>0&&n.scrollHeight>n.clientHeight,l=r.direction===`rtl`,u=c&&(l?e.offsetX<=n.offsetWidth-n.clientWidth:e.offsetX>n.clientWidth),d=s&&e.offsetY>n.clientHeight;if(u||d)return}if(!D(e)){if(c()===`intentional`&&S.current){t.clear(),S.current=!1;return}typeof h==`function`&&!h(e)||k(`__outsidePressBubbles`)||(l.setOpen(!1,at(ee,e)),O())}}}function M(e){c()!==`sloppy`||e.pointerType===`touch`||!l.select(`open`)||!n||A(e)||j(e)}function P(e){if(c()!==`sloppy`||!l.select(`open`)||!n||A(e))return;let t=e.touches[0];t&&(T.current={startTime:Date.now(),startX:t.clientX,startY:t.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},E.start(1e3,()=>{T.current&&(T.current.dismissOnTouchEnd=!1,T.current.dismissOnMouseDown=!1)}))}function F(e,t){let n=At(e);if(!n)return;let r=Q(n,e.type,()=>{t(e),r()})}function te(e){w.current=`touch`,F(e,P)}function ne(e){E.clear(),e.type===`pointerdown`&&(w.current=e.pointerType),!(e.type===`mousedown`&&T.current&&!T.current.dismissOnMouseDown)&&F(e,e=>{e.type===`pointerdown`?M(e):j(e)})}function I(e){if(!b.current)return;let n=x.current;if(s(),c()===`intentional`){if(e.type===`pointercancel`){n&&o();return}if(!D(e)){if(n){o();return}typeof h==`function`&&!h(e)||(t.clear(),S.current=!0,O())}}}function re(e){if(c()!==`sloppy`||!T.current||A(e))return;let t=e.touches[0];if(!t)return;let n=Math.abs(t.clientX-T.current.startX),r=Math.abs(t.clientY-T.current.startY),i=Math.sqrt(n*n+r*r);i>5&&(T.current.dismissOnTouchEnd=!0),i>10&&(j(e),E.clear(),T.current=null)}function ie(e){F(e,re)}function ae(e){c()!==`sloppy`||!T.current||A(e)||(T.current.dismissOnTouchEnd&&j(e),E.clear(),T.current=null)}function oe(e){F(e,ae)}let L=$(d),se=zt(r&&zt(Q(L,`keydown`,N),Q(L,`compositionstart`,i),Q(L,`compositionend`,a)),g&&zt(Q(L,`click`,ne,!0),Q(L,`pointerdown`,ne,!0),Q(L,`pointerup`,I,!0),Q(L,`pointercancel`,I,!0),Q(L,`mousedown`,ne,!0),Q(L,`mouseup`,I,!0),Q(L,`touchstart`,te,!0),Q(L,`touchmove`,ie,!0),Q(L,`touchend`,oe,!0)));return()=>{se(),e.clear(),t.clear(),s(),S.current=!1}},[f,d,r,g,h,u,n,v,y,N,O,_,k,A,p,l,E]),V.useEffect(O,[h,O]);let I=V.useMemo(()=>({onKeyDown:N,onPointerDown:M,onClick:M}),[N,M]),re=V.useMemo(()=>({onKeyDown:N,onPointerDown:te,onMouseDown:te,onClickCapture:P,onMouseDownCapture(e){P(),F(e)},onPointerDownCapture(e){P(),F(e)},onMouseUpCapture:P,onTouchEndCapture:P,onTouchMoveCapture:P}),[N,P,F,te]);return V.useMemo(()=>n?{reference:I,floating:re,trigger:I}:{},[n,I,re])}function yr(e){let t=V.useRef(!0);t.current&&(t.current=!1,e())}var br=(e,t,n,r,i,a,...o)=>{if(o.length>0)throw Error(d(1));let s;if(e&&t&&n&&r&&i&&a)s=(o,s,c,l)=>a(e(o,s,c,l),t(o,s,c,l),n(o,s,c,l),r(o,s,c,l),i(o,s,c,l),s,c,l);else if(e&&t&&n&&r&&i)s=(a,o,s,c)=>i(e(a,o,s,c),t(a,o,s,c),n(a,o,s,c),r(a,o,s,c),o,s,c);else if(e&&t&&n&&r)s=(i,a,o,s)=>r(e(i,a,o,s),t(i,a,o,s),n(i,a,o,s),a,o,s);else if(e&&t&&n)s=(r,i,a,o)=>n(e(r,i,a,o),t(r,i,a,o),i,a,o);else if(e&&t)s=(n,r,i,a)=>t(e(n,r,i,a),r,i,a);else if(e)s=e;else throw Error(`Missing arguments`);return s},xr=p((t=>{var n=e();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;t.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),Sr=p(((e,t)=>{t.exports=xr()})),Cr=p((t=>{var n=e(),r=Sr();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=r.useSyncExternalStore,s=n.useRef,c=n.useEffect,l=n.useMemo,u=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),wr=p(((e,t)=>{t.exports=Cr()})),Tr=Sr(),Er=wr(),Dr=[],Or=void 0;function kr(){return Or}function Ar(e){Dr.push(e)}function jr(e){let t=(t,n)=>{let r=a(Nr).current,i;try{Or=r;for(let e of Dr)e.before(r);i=e(t,n);for(let e of Dr)e.after(r);r.didInitialize=!0}finally{Or=void 0}return i};return t.displayName=e.displayName||e.name,t}function Mr(e){return V.forwardRef(jr(e))}function Nr(){return{didInitialize:!1}}var Pr=f(19)?Lr:Rr;function Fr(e,t,n,r,i){return Pr(e,t,n,r,i)}function Ir(e,t,n,r,i){let a=V.useCallback(()=>t(e.getSnapshot(),n,r,i),[e,t,n,r,i]);return(0,Tr.useSyncExternalStore)(e.subscribe,a,a)}Ar({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let n=0;n<e.syncHooks.length;n+=1){let r=e.syncHooks[n],i=r.selector(r.store.state,r.a1,r.a2,r.a3);Object.is(r.value,i)||(t=!0,r.value=i)}return t&&(e.syncTick+=1),e.syncTick})},after(e){e.syncHooks.length>0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{let n=new Set;for(let t of e.syncHooks)n.add(t.store);let r=[];for(let e of n)r.push(e.subscribe(t));return()=>{for(let e of r)e()}}),(0,Tr.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot))}});function Lr(e,t,n,r,i){let a=kr();if(!a)return Ir(e,t,n,r,i);let o=a.syncIndex;a.syncIndex+=1;let s;return a.didInitialize?(s=a.syncHooks[o],(s.store!==e||s.selector!==t||!Object.is(s.a1,n)||!Object.is(s.a2,r)||!Object.is(s.a3,i))&&(s.store!==e&&(a.didChangeStore=!0),s.store=e,s.selector=t,s.a1=n,s.a2=r,s.a3=i,s.value=t(e.getSnapshot(),n,r,i))):(s={store:e,selector:t,a1:n,a2:r,a3:i,value:t(e.getSnapshot(),n,r,i)},a.syncHooks.push(s)),s.value}function Rr(e,t,n,r,i){return(0,Er.useSyncExternalStoreWithSelector)(e.subscribe,e.getSnapshot,e.getSnapshot,e=>t(e,n,r,i))}var zr=class{constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){if(this.state===e)return;this.state=e,this.updateTick+=1;let t=this.updateTick;for(let n of this.listeners){if(t!==this.updateTick)return;n(e)}}update(e){for(let t in e)if(!Object.is(this.state[t],e[t])){this.setState({...this.state,...e});return}}set(e,t){Object.is(this.state[e],t)||this.setState({...this.state,[e]:t})}notifyAll(){let e={...this.state};this.setState(e)}use(e,t,n,r){return Fr(this,e,t,n,r)}},Br=class extends zr{constructor(e,t={},n){super(e),this.context=t,this.selectors=n}useSyncedValue(e,t){V.useDebugValue(e);let n=this;J(()=>{n.state[e]!==t&&n.set(e,t)},[n,e,t])}useSyncedValueWithCleanup(e,t){let n=this;J(()=>(n.state[e]!==t&&n.set(e,t),()=>{n.set(e,void 0)}),[n,e,t])}useSyncedValues(e){let t=this;J(()=>{t.update(e)},[t,...Object.values(e)])}useControlledProp(e,t){V.useDebugValue(e);let n=this,r=t!==void 0;J(()=>{r&&!Object.is(n.state[e],t)&&n.setState({...n.state,[e]:t})},[n,e,t,r])}select(e,t,n,r){let i=this.selectors[e];return i(this.state,t,n,r)}useState(e,t,n,r){return V.useDebugValue(e),Fr(this,this.selectors[e],t,n,r)}useContextCallback(e,t){V.useDebugValue(e);let n=q(t??c);this.context[e]=n}useStateSetter(e){let t=V.useRef(void 0);return t.current===void 0&&(t.current=t=>{this.set(e,t)}),t.current}observe(e,t){let n;n=typeof e==`function`?e:this.selectors[e];let r=n(this.state);return t(r,r,this),this.subscribe(e=>{let i=n(e);if(!Object.is(r,i)){let e=r;r=i,t(i,e,this)}})}},Vr={open:br(e=>e.open),transitionStatus:br(e=>e.transitionStatus),domReferenceElement:br(e=>e.domReferenceElement),referenceElement:br(e=>e.positionReference??e.referenceElement),floatingElement:br(e=>e.floatingElement),floatingId:br(e=>e.floatingId)},Hr=class extends Br{constructor(e){let{syncOnly:t,nested:n,onOpenChange:r,triggerElements:i,...a}=e;super({...a,positionReference:a.referenceElement,domReferenceElement:a.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:Qn(),nested:n,triggerElements:i},Vr),this.syncOnly=t}syncOpenEvent=(e,t)=>{(!e||!this.state.open||t!=null&&Ct(t))&&(this.context.dataRef.current.openEvent=e?t:void 0)};dispatchOpenChange=(e,t)=>{this.syncOpenEvent(e,t.event);let n={open:e,reason:t.reason,nativeEvent:t.event,nested:this.context.nested,triggerElement:t.trigger};this.context.events.emit(`openchange`,n)};setOpen=(e,t)=>{if(this.syncOnly){this.context.onOpenChange?.(e,t);return}this.dispatchOpenChange(e,t),this.context.onOpenChange?.(e,t)}};function Ur(e){let{popupStore:t,treatPopupAsFloatingElement:n=!1,floatingRootContext:r,floatingId:i,nested:a,onOpenChange:o}=e,s=t.useState(`open`),c=t.useState(`activeTriggerElement`),l=t.useState(n?`popupElement`:`positionerElement`),u=t.context.triggerElements,d=o,f=V.useRef(null);r===void 0&&f.current===null&&(f.current=new Hr({open:s,transitionStatus:void 0,referenceElement:c,floatingElement:l,triggerElements:u,onOpenChange:d,floatingId:i,syncOnly:!0,nested:a}));let p=r??f.current;return t.useSyncedValue(`floatingId`,i),J(()=>{let e={open:s,floatingId:i,referenceElement:c,floatingElement:l};G(c)&&(e.domReferenceElement=c),p.state.positionReference===p.state.referenceElement&&(e.positionReference=c),p.update(e)},[s,i,c,l,p]),p.context.onOpenChange=d,p.context.nested=a,p}var Wr={tabIndex:-1,[wt]:``};function Gr(e){return t=>t!==`touch`||e.current}function Kr(e,t,n=!1){let r=rt(),i=nr()!=null,a=V.useRef(null);e===void 0&&a.current===null&&(a.current=t(r,i));let o=e??a.current;return Ur({popupStore:o,treatPopupAsFloatingElement:n,floatingRootContext:o.state.floatingRootContext,floatingId:r,nested:i,onOpenChange:o.setOpen}),{store:o,internalStore:a.current}}function qr(e,t){let n=V.useRef(null),r=V.useRef(null);return V.useCallback(i=>{if(e===void 0)return;let a=!1;if(n.current!==null){let e=n.current,i=r.current,o=t.context.triggerElements.getById(e);i&&o===i&&(t.context.triggerElements.delete(e),a=!0),n.current=null,r.current=null}if(i!==null&&(n.current=e,r.current=i,t.context.triggerElements.add(e,i),a=!0),a){let e=t.context.triggerElements.size;t.select(`open`)&&t.state.triggerCount!==e&&t.set(`triggerCount`,e)}},[t,e])}function Jr(e,t,n,r=!1){t?e.preventUnmountingOnClose=!1:r&&(e.preventUnmountingOnClose=!0);let i=n?.id??null;(i||t)&&(e.activeTriggerId=i,e.activeTriggerElement=n??null)}function Yr(e){let t=!1;return e.preventUnmountOnClose=()=>{t=!0},()=>t}function Xr(e,t,n,r){yr(()=>{t===void 0&&e.state.open===!1&&n&&(e.state={...e.state,open:!0,activeTriggerId:r,preventUnmountingOnClose:!1})})}function Zr(e,t,n,r){let i=n.useState(`isMountedByTrigger`,e),a=qr(e,n),o=q(t=>{if(a(t),!t)return;let i=n.select(`open`),o=n.select(`activeTriggerId`);if(o===e){n.update({activeTriggerElement:t,...i?r:null});return}o==null&&i&&n.update({activeTriggerId:e,activeTriggerElement:t,...r})});return J(()=>{i&&n.update({activeTriggerElement:t.current,...r})},[i,n,t,...Object.values(r)]),{registerTrigger:o,isMountedByThisTrigger:i}}function Qr(e,t={}){let{closeOnActiveTriggerUnmount:n=!1}=t,r=e.useState(`open`);J(()=>{if(!r){e.state.triggerCount!==0&&e.set(`triggerCount`,0);return}let t=e.context.triggerElements.size,i={};e.state.triggerCount!==t&&(i.triggerCount=t);let a=e.select(`activeTriggerId`),o=null;if(a){let t=e.context.triggerElements.getById(a);t?t!==e.state.activeTriggerElement&&(i.activeTriggerElement=t):o=a}if(!o&&!a&&t===1){let t=e.context.triggerElements.entries().next();if(!t.done){let[e,n]=t.value;i.activeTriggerId=e,i.activeTriggerElement=n}}(i.triggerCount!==void 0||i.activeTriggerId!==void 0||i.activeTriggerElement!==void 0)&&e.update(i),o&&n&&queueMicrotask(()=>{if(e.select(`open`)&&e.select(`activeTriggerId`)===o&&!e.context.triggerElements.getById(o)){let t=at(A);e.setOpen(!1,t),t.isCanceled||e.update({activeTriggerId:null,activeTriggerElement:null})}})},[r,e,e.useState(`triggerCount`),n])}function $r(e,t,n){let{mounted:r,setMounted:i,transitionStatus:a}=ft(e),o=t.useState(`preventUnmountingOnClose`),s=!e&&o;t.useSyncedValues({mounted:r,transitionStatus:a,preventUnmountingOnClose:s});let c=q(()=>{i(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1,preventUnmountingOnClose:!1}),n?.(),t.context.onOpenChangeComplete?.(!1)});return mt({enabled:r&&!e&&!s,open:e,ref:t.context.popupRef,onComplete(){e||c()}}),{forceUnmount:c,transitionStatus:a}}function ei(e,t){e.useSyncedValues(t),J(()=>()=>{e.update({activeTriggerProps:r,inactiveTriggerProps:r,popupProps:r})},[e])}function ti(e,t){J(()=>{!t&&e.state.openMethod!==null&&e.set(`openMethod`,null)},[t,e]),J(()=>()=>{e.state.openMethod!==null&&e.set(`openMethod`,null)},[e])}var ni=class{constructor(){this.elementsSet=new Set,this.idMap=new Map}add(e,t){let n=this.idMap.get(e);n!==t&&(n!==void 0&&this.elementsSet.delete(n),this.elementsSet.add(t),this.idMap.set(e,t))}delete(e){let t=this.idMap.get(e);t&&(this.elementsSet.delete(t),this.idMap.delete(e))}hasElement(e){return this.elementsSet.has(e)}hasMatchingElement(e){for(let t of this.elementsSet)if(e(t))return!0;return!1}getById(e){return this.idMap.get(e)}entries(){return this.idMap.entries()}elements(){return this.elementsSet.values()}get size(){return this.idMap.size}},ri=`ArrowUp`,ii=`ArrowDown`,ai=`ArrowLeft`,oi=`ArrowRight`,si=`Home`,ci=new Set([ai,oi]),li=new Set([ai,oi,si,`End`]),ui=new Set([ri,ii]),di=new Set([ri,ii,si,`End`]),fi=new Set([...ci,...ui]),pi=new Set([...fi,si,`End`]),mi=new Set([`Shift`,`Control`,`Alt`,`Meta`]);function hi(e){return K(e)&&e.tagName===`INPUT`}function gi(e){return!!(hi(e)&&e.selectionStart!=null||K(e)&&e.tagName===`TEXTAREA`)}function _i(e,t,n,r){if(!e||!t||!t.scrollTo)return;let i=e.scrollLeft,a=e.scrollTop,o=e.clientWidth<e.scrollWidth,s=e.clientHeight<e.scrollHeight;if(o&&r!==`vertical`){let r=vi(e,t,`left`),a=yi(e),o=yi(t);n===`ltr`&&(r+t.offsetWidth+o.scrollMarginRight>e.scrollLeft+e.clientWidth-a.scrollPaddingRight?i=r+t.offsetWidth+o.scrollMarginRight-e.clientWidth+a.scrollPaddingRight:r-o.scrollMarginLeft<e.scrollLeft+a.scrollPaddingLeft&&(i=r-o.scrollMarginLeft-a.scrollPaddingLeft)),n===`rtl`&&(r-o.scrollMarginRight<e.scrollLeft+a.scrollPaddingLeft?i=r-o.scrollMarginLeft-a.scrollPaddingLeft:r+t.offsetWidth+o.scrollMarginRight>e.scrollLeft+e.clientWidth-a.scrollPaddingRight&&(i=r+t.offsetWidth+o.scrollMarginRight-e.clientWidth+a.scrollPaddingRight))}if(s&&r!==`horizontal`){let n=vi(e,t,`top`),r=yi(e),i=yi(t);n-i.scrollMarginTop<e.scrollTop+r.scrollPaddingTop?a=n-i.scrollMarginTop-r.scrollPaddingTop:n+t.offsetHeight+i.scrollMarginBottom>e.scrollTop+e.clientHeight-r.scrollPaddingBottom&&(a=n+t.offsetHeight+i.scrollMarginBottom-e.clientHeight+r.scrollPaddingBottom)}e.scrollTo({left:i,top:a,behavior:`auto`})}function vi(e,t,n){let r=n===`left`?`offsetLeft`:`offsetTop`,i=0;for(;t.offsetParent&&(i+=t[r],t.offsetParent!==e);)t=t.offsetParent;return i}function yi(e){let t=getComputedStyle(e);return{scrollMarginTop:parseFloat(t.scrollMarginTop)||0,scrollMarginRight:parseFloat(t.scrollMarginRight)||0,scrollMarginBottom:parseFloat(t.scrollMarginBottom)||0,scrollMarginLeft:parseFloat(t.scrollMarginLeft)||0,scrollPaddingTop:parseFloat(t.scrollPaddingTop)||0,scrollPaddingRight:parseFloat(t.scrollPaddingRight)||0,scrollPaddingBottom:parseFloat(t.scrollPaddingBottom)||0,scrollPaddingLeft:parseFloat(t.scrollPaddingLeft)||0}}function bi(e){return f(19)?e:e?`true`:void 0}var xi=V.createContext(void 0);function Si(){return V.useContext(xi)?.direction??`ltr`}var Ci=V.forwardRef(function(e,t){let{cutout:n,...r}=e,i;if(n){let e=n.getBoundingClientRect();i=`polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${e.left}px ${e.top}px,${e.left}px ${e.bottom}px,${e.right}px ${e.bottom}px,${e.right}px ${e.top}px,${e.left}px ${e.top}px)`}return(0,B.jsx)(`div`,{ref:t,role:`presentation`,"data-base-ui-inert":``,...r,style:{position:`fixed`,inset:0,userSelect:`none`,WebkitUserSelect:`none`,clipPath:i}})}),wi={},Ti={},Ei=``;function Di(e){if(typeof document>`u`)return!1;let t=$(e);return W(t).innerWidth-t.documentElement.clientWidth>0}function Oi(e){if(!(typeof CSS<`u`&&CSS.supports&&CSS.supports(`scrollbar-gutter`,`stable`))||typeof document>`u`)return!1;let t=$(e),n=t.documentElement,r=t.body,i=fe(n)?n:r,a=i.style.overflowY,o=n.style.scrollbarGutter;n.style.scrollbarGutter=`stable`,i.style.overflowY=`scroll`;let s=i.offsetWidth;i.style.overflowY=`hidden`;let c=i.offsetWidth;return i.style.overflowY=a,n.style.scrollbarGutter=o,s===c}function ki(e){let t=$(e),n=t.documentElement,r=t.body,i=fe(n)?n:r,a={overflowY:i.style.overflowY,overflowX:i.style.overflowX};return Object.assign(i.style,{overflowY:`hidden`,overflowX:`hidden`}),()=>{Object.assign(i.style,a)}}function Ai(e){let t=$(e),n=t.documentElement,r=t.body,i=W(n),a=0,o=0,s=!1,c=ut.create();if(Ze&&(i.visualViewport?.scale??1)!==1)return()=>{};function l(){let t=i.getComputedStyle(n),c=i.getComputedStyle(r),l=(t.scrollbarGutter||``).includes(`both-edges`)?`stable both-edges`:`stable`;a=n.scrollTop,o=n.scrollLeft,wi={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},Ei=n.style.scrollBehavior,Ti={position:r.style.position,height:r.style.height,width:r.style.width,boxSizing:r.style.boxSizing,overflowY:r.style.overflowY,overflowX:r.style.overflowX,scrollBehavior:r.style.scrollBehavior};let u=n.scrollHeight>n.clientHeight,d=n.scrollWidth>n.clientWidth,f=t.overflowY===`scroll`||c.overflowY===`scroll`,p=t.overflowX===`scroll`||c.overflowX===`scroll`,m=Math.max(0,i.innerWidth-r.clientWidth),h=Math.max(0,i.innerHeight-r.clientHeight),g=parseFloat(c.marginTop)+parseFloat(c.marginBottom),_=parseFloat(c.marginLeft)+parseFloat(c.marginRight),v=fe(n)?n:r;if(s=Oi(e),s){n.style.scrollbarGutter=l,v.style.overflowY=`hidden`,v.style.overflowX=`hidden`;return}Object.assign(n.style,{scrollbarGutter:l,overflowY:`hidden`,overflowX:`hidden`}),(u||f)&&(n.style.overflowY=`scroll`),(d||p)&&(n.style.overflowX=`scroll`),Object.assign(r.style,{position:`relative`,height:g||h?`calc(100dvh - ${g+h}px)`:`100dvh`,width:_||m?`calc(100vw - ${_+m}px)`:`100vw`,boxSizing:`border-box`,overflow:`hidden`,scrollBehavior:`unset`}),r.scrollTop=a,r.scrollLeft=o,n.setAttribute(`data-base-ui-scroll-locked`,``),n.style.scrollBehavior=`unset`}function u(){Object.assign(n.style,wi),Object.assign(r.style,Ti),s||(n.scrollTop=a,n.scrollLeft=o,n.removeAttribute(`data-base-ui-scroll-locked`),n.style.scrollBehavior=Ei)}function d(){u(),c.request(l)}l();let f=Q(i,`resize`,d);return()=>{c.cancel(),u(),typeof i.removeEventListener==`function`&&f()}}var ji=new class{lockCount=0;restore=null;timeoutLock=gt.create();timeoutUnlock=gt.create();acquire(e){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(e)),this.release}release=()=>{--this.lockCount,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{this.lockCount===0&&this.restore&&(this.restore?.(),this.restore=null)};lock(e){if(this.lockCount===0||this.restore!==null)return;let t=$(e).documentElement,n=W(t).getComputedStyle(t).overflowY;if(n===`hidden`||n===`clip`){this.restore=c;return}let r=Ke||!Di(e);this.restore=r?ki(e):Ai(e)}};function Mi(e=!0,t=null){J(()=>{if(e)return ji.acquire(t)},[e,t])}var Ni=function(e){return e.disabled=`data-disabled`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),Pi={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},Fi={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},Ii={disabled:!1,...Fi},Li={valid(e){return e===null?null:e?{[Ni.valid]:``}:{[Ni.invalid]:``}}},Ri={invalid:void 0,name:void 0,validityData:{state:Pi,errors:[],error:``,value:``,initialValue:null},setValidityData:c,disabled:void 0,touched:Fi.touched,setTouched:c,dirty:Fi.dirty,setDirty:c,filled:Fi.filled,setFilled:c,focused:Fi.focused,setFocused:c,validate:()=>null,validationMode:`onSubmit`,validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:Ii,markedDirtyRef:{current:!1},registerFieldControl:c,validation:{getValidationProps:(e,t=r)=>t,inputRef:{current:null},registerInput:c,commit:async()=>{},change:c}},zi=V.createContext(Ri);function Bi(e=!0){let t=V.useContext(zi);if(t.setValidityData===c&&!e)throw Error(d(28));return t}var Vi=V.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:c,validationMode:`onSubmit`,submitAttemptedRef:{current:!1}});function Hi(){return V.useContext(Vi)}var Ui=V.createContext({controlId:void 0,registerControlId:c,labelId:void 0,setLabelId:c,messageIds:[],setMessageIds:c,getDescriptionProps:e=>e});function Wi(){return V.useContext(Ui)}function Gi(e={}){let{id:t,implicit:n=!1,controlRef:r}=e,{controlId:i,registerControlId:o}=Wi(),s=it(t),l=n?i:void 0,u=a(()=>Symbol(`labelable-control`)),d=V.useRef(!1),f=V.useRef(t!=null),p=q(()=>{!d.current||o===c||(d.current=!1,o(u.current,void 0))});return J(()=>{if(o===c)return;let e;if(n){let n=r?.current;e=G(n)&&n.closest(`label`)!=null?t??null:l??s}else if(t!=null)f.current=!0,e=t;else if(f.current)e=s;else{p();return}if(e===void 0){p();return}d.current=!0,o(u.current,e)},[t,r,l,o,n,s,u,p]),V.useEffect(()=>p,[p]),i??s}function Ki(e,t,n,r,i=!0,a){let{registerFieldControl:o}=Bi(),s=V.useRef(null);s.current||=Symbol(),J(()=>{let c=s.current;if(!(!c||!i))return o(c,{controlRef:e,getValue:r,id:t,name:a,value:n}),()=>{o(c,void 0)}},[e,i,r,t,a,o,n])}var qi=V.forwardRef(function(e,t){let{render:n,className:r,id:i,name:a,value:o,disabled:c=!1,onValueChange:l,defaultValue:u,autoFocus:d=!1,style:f,...p}=e,{state:m,name:h,disabled:g,setTouched:_,setDirty:v,validityData:y,setFocused:b,setFilled:x,validationMode:S,validation:C}=Bi(),{clearErrors:w}=Hi(),T=g||c,E=h??a,D={...m,disabled:T},{labelId:O}=Wi(),k=Gi({id:i});J(()=>{let e=o!=null;C.inputRef.current?.value||e&&o!==``?x(!0):e&&o===``&&x(!1)},[C.inputRef,x,o]);let j=V.useRef(null);J(()=>{d&&j.current===X($(j.current))&&b(!0)},[d,b]);let[M]=H({controlled:o,default:u,name:`FieldControl`,state:`value`}),N=o!==void 0,ee=N?M:void 0,P=q(()=>C.inputRef.current?.value);return Ki(C.inputRef,k,ee,P,!T,a),s(`input`,e,{ref:[t,j],state:D,props:[{id:k,disabled:T,name:E,ref:C.inputRef,"aria-labelledby":O,autoFocus:d,...N?{value:ee}:{defaultValue:u},onChange(e){let t=e.currentTarget.value;l?.(t,at(A,e.nativeEvent)),v(t!==y.initialValue),x(t!==``),e.nativeEvent.defaultPrevented||(w(E),C.change(t))},onFocus(){b(!0)},onBlur(e){_(!0),b(!1),S===`onBlur`&&C.commit(e.currentTarget.value)},onKeyDown(e){e.currentTarget.tagName===`INPUT`&&e.key===`Enter`&&(_(!0),C.commit(e.currentTarget.value))}},p,e=>C.getValidationProps(T,e)],stateAttributesMapping:Li})}),Ji=V.forwardRef(function(e,t){return(0,B.jsx)(qi,{ref:t,...e})});function Yi({className:e,size:t=`default`,unstyled:n=!1,nativeInput:r=!1,...i}){let a=l(`h-8.5 w-full min-w-0 rounded-[inherit] px-[calc(--spacing(3)-1px)] leading-8.5 outline-none placeholder:text-muted-foreground/72 sm:h-7.5 sm:leading-7.5 [transition:background-color_5000000s_ease-in-out_0s]`,t===`sm`&&`h-7.5 px-[calc(--spacing(2.5)-1px)] leading-7.5 sm:h-6.5 sm:leading-6.5`,t===`lg`&&`h-9.5 leading-9.5 sm:h-8.5 sm:leading-8.5`,i.type===`search`&&`[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none [&::-webkit-search-results-button]:appearance-none [&::-webkit-search-results-decoration]:appearance-none`,i.type===`file`&&`text-muted-foreground file:me-3 file:bg-transparent file:font-medium file:text-foreground file:text-sm`),o;if(r){let{style:e,onValueChange:n,...r}=i;o=(0,B.jsx)(`input`,{className:a,"data-slot":`input`,size:typeof t==`number`?t:void 0,style:typeof e==`function`?void 0:e,...r})}else o=(0,B.jsx)(Ji,{className:a,"data-slot":`input`,size:typeof t==`number`?t:void 0,...i});return(0,B.jsx)(`span`,{className:l(!n&&`relative inline-flex w-full rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-disabled:not-has-focus-visible:not-has-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] has-focus-visible:has-aria-invalid:border-destructive/64 has-focus-visible:has-aria-invalid:ring-destructive/16 has-aria-invalid:border-destructive/36 has-focus-visible:border-ring has-autofill:bg-foreground/4 has-disabled:opacity-64 has-[:disabled,:focus-visible,[aria-invalid]]:shadow-none has-focus-visible:ring-[3px] sm:text-sm dark:bg-input/32 dark:has-autofill:bg-foreground/8 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:not-has-focus-visible:not-has-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]`,e)||void 0,"data-size":t,"data-slot":`input-control`,children:o})}function Xi(e,t=-(2**53-1),n=2**53-1){return Math.max(t,Math.min(e,n))}function Zi(e,t){return Math.max(0,e-t)}function Qi(e,t){if(t<=0)return 0;let n=Xi(e,0,t),r=n,i=t-n,a=r<=1,o=i<=1;return a&&o?r<=i?0:t:a?0:o?t:n}var $i=`base-ui-disable-scrollbar`,ea={className:$i,getElement(e){return(0,B.jsx)(`style`,{nonce:e,href:$i,precedence:`base-ui:low`,children:`.${$i}{scrollbar-width:none}.${$i}::-webkit-scrollbar{display:none}`})}},ta=V.createContext(void 0),na={disableStyleElements:!1};function ra(){return V.useContext(ta)??na}export{yr as $,D as $n,pt as $t,gi as A,me as An,Bt as At,ei as B,P as Bn,Z as Bt,pi as C,W as Cn,Qt as Ct,mi as D,Se as Dn,Ut as Dt,li as E,K as En,Gt as Et,Gr as F,ae as Fn,jt as Ft,Hr as G,ie as Gn,Ot as Gt,Kr as H,oe as Hn,kt as Ht,Jr as I,ne as In,It,Fr as J,j as Jn,xt as Jt,Br as K,N as Kn,St as Kt,Qr as L,te as Ln,Pt as Lt,ni as M,H as Mn,Q as Mt,Wr as N,re as Nn,Rt as Nt,ui as O,fe as On,Wt as Ot,Yr as P,F as Pn,Ft as Pt,br as Q,O as Qn,mt as Qt,Xr as R,se as Rn,Lt as Rt,ri as S,Te as Sn,qt as St,ci as T,G as Tn,Xt as Tt,Zr as U,A as Un,Et as Ut,ti as V,I as Vn,At as Vt,Ur as W,ee as Wn,Dt as Wt,Mr as X,b as Xn,gt as Xt,jr as Y,R as Yn,vt as Yt,Sr as Z,k as Zn,_t as Zt,bi as _,le as _n,bn as _t,Xi as a,rt as an,nr as at,ai as b,we as bn,Yt as bt,Ki as c,Ke as cn,Zn as ct,Hi as d,Pe as dn,Wn as dt,ft as en,g as er,vr as et,Bi as f,Fe as fn,Gn as ft,Si as g,be as gn,_n as gt,Ci as h,Ce as hn,Tn as ht,Qi as i,it as in,ir as it,_i as j,xe as jn,zt as jt,di as k,pe as kn,$ as kt,Gi as l,Ye as ln,Un as lt,Mi as m,q as mn,Dn as mt,ea as n,st as nn,h as nr,ar as nt,Yi as o,$e as on,rr as ot,Li as p,J as pn,kn as pt,zr as q,M as qn,bt as qt,Zi as r,at as rn,or as rt,qi as s,Ze as sn,$n as st,ra as t,dt as tn,y as tr,hr as tt,Wi as u,Le as un,Hn as ut,ii as v,Oe as vn,xn as vt,si as w,ye as wn,Kt as wt,oi as x,De as xn,Jt as xt,fi as y,U as yn,Sn as yt,$r as z,L as zn,X as zt};
@@ -1 +0,0 @@
1
- import{_ as e,b as t,g as n,m as r,t as i}from"./button-BDDZnIHx.js";import{t as a}from"./code-xml-jFAa3-TT.js";import{t as o}from"./git-branch-Cfj9D8yW.js";import{Bt as s,Gt as c,Kt as l,M as u,St as d,U as f,Wt as p,Zt as m,a as h,ct as g,en as _,i as v,jt as y,n as b,qt as x,r as S,rt as C,wt as w,xt as T,zt as E}from"./index-C_rwnBzF.js";import{t as D}from"./card-BKXzd_5L.js";import{a as O,i as k,n as A,r as j,t as M}from"./empty-BdlgbifD.js";var N=t(e(),1),P=n(),F=[{id:`antigravity`,name:`Google Antigravity`,shortName:`Antigravity`,cliCommand:`agy`,icon:(0,P.jsx)(T,{className:`size-4`}),getOptions:({aiDetected:e,launchTargets:t})=>[{id:`antigravity-cli`,label:`CLI in Terminal`,shortLabel:`CLI`,type:`cli`,command:`agy`,isAvailable:e.antigravity??!0,unavailableReason:`CLI "agy" not found on PATH`,icon:(0,P.jsx)(E,{size:12})},{id:`antigravity-ide`,label:`Antigravity IDE Workspace`,shortLabel:`IDE`,type:`editor`,targetId:`antigravity`,isAvailable:t.find(e=>e.id===`antigravity`)?.available??!1,unavailableReason:`Antigravity IDE not installed`,icon:(0,P.jsx)(a,{size:12})}]},{id:`claude`,name:`Claude Code`,shortName:`Claude`,cliCommand:`claude`,icon:(0,P.jsx)(`span`,{className:`grid size-5 place-items-center rounded bg-[#D97757] text-white shadow-2xs`,children:(0,P.jsx)(d,{className:`size-3`})}),getOptions:({aiDetected:e,launchTargets:t})=>[{id:`claude-cli`,label:`CLI in Terminal`,shortLabel:`CLI`,type:`cli`,command:`claude`,isAvailable:e.claude??!1,unavailableReason:`CLI "claude" not found on PATH`,icon:(0,P.jsx)(E,{size:12})},{id:`claude-desktop`,label:`Claude Desktop App`,shortLabel:`App`,type:`app`,targetId:`claude-desktop`,isAvailable:t.find(e=>e.id===`claude-desktop`)?.available??!1,unavailableReason:`Claude Desktop not detected`,icon:(0,P.jsx)(x,{size:12})}]},{id:`codex`,name:`OpenAI Codex`,shortName:`Codex`,cliCommand:`codex`,icon:(0,P.jsx)(`span`,{className:`grid size-5 place-items-center rounded bg-foreground text-background shadow-2xs`,children:(0,P.jsx)(y,{className:`size-3`})}),getOptions:({aiDetected:e,launchTargets:t})=>[{id:`codex-cli`,label:`CLI in Terminal`,shortLabel:`CLI`,type:`cli`,command:`codex`,isAvailable:e.codex??!1,unavailableReason:`CLI "codex" not found on PATH`,icon:(0,P.jsx)(E,{size:12})},{id:`codex-desktop`,label:`Codex Desktop App`,shortLabel:`App`,type:`app`,targetId:`codex-desktop`,isAvailable:t.find(e=>e.id===`codex-desktop`)?.available??!1,unavailableReason:`Codex Desktop not detected`,icon:(0,P.jsx)(x,{size:12})}]},{id:`copilot`,name:`GitHub Copilot`,shortName:`Copilot`,cliCommand:`copilot`,icon:(0,P.jsx)(`span`,{className:`grid size-5 place-items-center rounded bg-gradient-to-tr from-purple-600 via-indigo-500 to-blue-600 text-white shadow-2xs`,children:(0,P.jsx)(w,{className:`size-3`})}),getOptions:({aiDetected:e,launchTargets:t})=>[{id:`copilot-cli`,label:`Copilot CLI in Terminal`,shortLabel:`CLI`,type:`cli`,command:`copilot`,isAvailable:e.copilot??!0,icon:(0,P.jsx)(E,{size:12})},{id:`copilot-vscode`,label:`VS Code with Copilot`,shortLabel:`VS Code`,type:`editor`,targetId:`vscode`,isAvailable:t.find(e=>e.id===`vscode`)?.available??!1,unavailableReason:`VS Code not detected`,icon:(0,P.jsx)(a,{size:12})}]}];function I({workspaces:e,workspaceStatuses:t,workspacesLoading:n=!1,onOpenWorkspace:a,onNewWorkspace:x,showToast:E}){let I=u(),L=C(),R=f(),[z,B]=(0,N.useState)(null),V=Object.values(t),H=V.reduce((e,t)=>e+(t.changedFiles||0),0),U=V.filter(e=>e.changedFiles>0).length,W=V.reduce((e,t)=>e+(t.runningServices||0),0),G=V.filter(e=>e.runningServices>0).length,K=e.filter(e=>(e.mode??`worktree`)===`worktree`).length,q=e.filter(e=>e.mode===`in-place`).length,J=(0,N.useMemo)(()=>{let t=new Map;return e.forEach(e=>{(e.repos||[]).forEach(e=>{let n=b(e),r=t.get(n);r?r.count+=1:t.set(n,{name:n,path:e,count:1})})}),Array.from(t.values())},[e]),Y=(0,N.useMemo)(()=>{let e={};return(I.data??[]).forEach(t=>{e[t.name]=t.detected}),e},[I.data]),X=(0,N.useMemo)(()=>L.data??[],[L.data]),Z=(0,N.useMemo)(()=>F.map(e=>{let t=e.getOptions({aiDetected:Y,launchTargets:X}),n=t.filter(e=>e.isAvailable),r=n[0]||t[0],i=n.length>0,a=`Not found`,o=`neutral`;return n.length>1?(a=`${n.map(e=>e.shortLabel).join(` & `)} Ready`,o=`success`):n.length===1&&(a=`${n[0].shortLabel} Ready`,o=`success`),{harness:e,allOptions:t,availableOptions:n,primaryOption:r,isAnyAvailable:i,statusLabel:a,statusTone:o}}),[Y,X]),Q=async(t,n)=>{if(z)return;let r=e[0];if(!r){E?.(`No active workspace available to launch harness in.`,`error`);return}let i=`${t.id}:${n.id}`;B(i);try{n.type===`cli`?(await R.mutateAsync({workspaceId:r.branchName,assistant:t.id,command:n.command}),E?.(`Launched ${t.name} (${n.label}) for ${r.branchName}`,`success`)):n.targetId&&(await g(`/api/workspace/${encodeURIComponent(r.branchName)}/launch`,{method:`POST`,body:JSON.stringify({targetId:n.targetId})}),E?.(`Opened ${r.branchName} in ${t.name} (${n.label})`,`success`))}catch(e){E?.(`Failed to launch ${t.name}: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{B(null)}};return(0,P.jsxs)(`div`,{className:`mx-auto max-w-6xl animate-fade-in space-y-5 pb-10`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between border-b border-border/70 pb-4`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`h1`,{className:`text-lg sm:text-xl font-bold tracking-tight text-foreground`,children:`Environment Overview`}),(0,P.jsx)(v,{tone:`running`,dot:!0,children:`Live Telemetry`})]}),(0,P.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Multi-repo health, background services, and AI coding activity across your workspaces.`})]}),(0,P.jsx)(`div`,{className:`flex items-center gap-2 shrink-0`,children:(0,P.jsxs)(i,{size:`sm`,variant:`default`,onClick:x,children:[(0,P.jsx)(p,{size:14}),` Start work`]})})]}),(0,P.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 lg:grid-cols-4`,children:[(0,P.jsxs)(D,{className:`p-4 surface-card flex flex-col justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:`Workspaces`}),(0,P.jsx)(`span`,{className:`grid size-7 place-items-center rounded bg-primary/10 text-primary`,children:(0,P.jsx)(l,{size:15})})]}),(0,P.jsxs)(`div`,{className:`mt-2`,children:[(0,P.jsx)(`div`,{className:`font-mono text-2xl font-bold text-foreground`,children:e.length}),(0,P.jsxs)(`div`,{className:`mt-1 flex items-center gap-1.5 font-mono text-[11px] text-muted-foreground`,children:[(0,P.jsxs)(`span`,{children:[K,` worktrees`]}),(0,P.jsx)(`span`,{children:`•`}),(0,P.jsxs)(`span`,{children:[q,` in-place`]})]})]})]}),(0,P.jsxs)(D,{className:`p-4 surface-card flex flex-col justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:`Git Activity`}),(0,P.jsx)(`span`,{className:r(`grid size-7 place-items-center rounded`,H>0?`bg-amber-500/15 text-amber-600 dark:text-amber-400`:`bg-emerald-500/15 text-emerald-600 dark:text-emerald-400`),children:(0,P.jsx)(o,{size:15})})]}),(0,P.jsxs)(`div`,{className:`mt-2`,children:[(0,P.jsxs)(`div`,{className:r(`font-mono text-2xl font-bold`,H>0?`text-amber-600 dark:text-amber-400`:`text-emerald-600 dark:text-emerald-400`),children:[H,` `,(0,P.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:`files`})]}),(0,P.jsx)(`div`,{className:`mt-1 font-mono text-[11px] text-muted-foreground`,children:U>0?`${U} workspace${U===1?``:`s`} with changes`:`All workspaces clean`})]})]}),(0,P.jsxs)(D,{className:`p-4 surface-card flex flex-col justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:`Live Services`}),(0,P.jsx)(`span`,{className:r(`grid size-7 place-items-center rounded`,W>0?`bg-emerald-500/15 text-emerald-400`:`bg-muted/60 text-muted-foreground`),children:(0,P.jsx)(c,{size:15})})]}),(0,P.jsxs)(`div`,{className:`mt-2`,children:[(0,P.jsxs)(`div`,{className:r(`font-mono text-2xl font-bold`,W>0?`text-emerald-400`:`text-muted-foreground`),children:[W,` `,(0,P.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:`active`})]}),(0,P.jsx)(`div`,{className:`mt-1 font-mono text-[11px] text-muted-foreground`,children:G>0?`In ${G} workspace${G===1?``:`s`}`:`No services running`})]})]}),(0,P.jsxs)(D,{className:`p-4 surface-card flex flex-col justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:`AI Harnesses`}),(0,P.jsx)(`span`,{className:`grid size-7 place-items-center rounded bg-primary/10 text-primary`,children:(0,P.jsx)(s,{size:15})})]}),(0,P.jsxs)(`div`,{className:`mt-2`,children:[(0,P.jsxs)(`div`,{className:`font-mono text-2xl font-bold text-foreground`,children:[Z.filter(e=>e.isAnyAvailable).length,` / `,Z.length]}),(0,P.jsxs)(`div`,{className:`mt-1 flex items-center gap-1.5 text-[11px] text-muted-foreground font-mono`,children:[(0,P.jsx)(`span`,{children:`Antigravity`}),(0,P.jsx)(`span`,{children:`•`}),(0,P.jsx)(`span`,{children:`Claude`}),(0,P.jsx)(`span`,{children:`•`}),(0,P.jsx)(`span`,{children:`Codex`})]})]})]})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`mb-2.5 flex items-center justify-between`,children:[(0,P.jsx)(`h2`,{className:`text-xs font-bold uppercase tracking-wider text-muted-foreground`,children:`AI Coding Assistant Hub`}),(0,P.jsx)(`span`,{className:`text-[11px] text-muted-foreground font-mono`,children:`Direct CLI & Desktop launcher with dynamic environment detection`})]}),(0,P.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:Z.map(({harness:e,availableOptions:t,isAnyAvailable:n,statusTone:r})=>{let a=!!(z&&z.startsWith(`${e.id}:`));return(0,P.jsxs)(D,{className:`p-4 surface-card flex flex-col justify-between gap-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[e.icon,(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsx)(`span`,{className:`text-sm font-bold text-foreground block`,children:e.name}),(0,P.jsxs)(`span`,{className:`font-mono text-[10.5px] text-muted-foreground`,children:[`CLI command: `,e.cliCommand]})]})]}),(0,P.jsx)(v,{tone:r,dot:n,children:n?`Ready`:`Not installed`})]}),(0,P.jsx)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1 border-t border-border/50`,children:n?t.map(t=>{let n=z===`${e.id}:${t.id}`;return(0,P.jsxs)(i,{size:`xs`,variant:`outline`,disabled:a,onClick:()=>void Q(e,t),className:`gap-1.5 font-medium`,title:`Launch ${e.name} (${t.label}) in active workspace`,children:[n?(0,P.jsx)(h,{className:`size-3`}):t.icon,(0,P.jsx)(`span`,{children:t.label})]},t.id)}):(0,P.jsx)(i,{size:`xs`,variant:`outline`,disabled:!0,className:`opacity-50 text-muted-foreground cursor-not-allowed`,children:`Not Installed`})})]},e.id)})})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`mb-2.5 flex items-center justify-between`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`h2`,{className:`text-xs font-bold uppercase tracking-wider text-muted-foreground`,children:`Workspace Divergence & Health Matrix`}),(0,P.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.2 font-mono text-[10px] text-foreground`,children:e.length})]})}),n?(0,P.jsx)(D,{className:`p-8 surface-card flex items-center justify-center`,children:(0,P.jsx)(h,{className:`size-5 text-primary`})}):e.length===0?(0,P.jsx)(D,{className:`border-dashed surface-card`,children:(0,P.jsxs)(M,{children:[(0,P.jsxs)(j,{children:[(0,P.jsx)(k,{variant:`icon`,children:(0,P.jsx)(l,{})}),(0,P.jsx)(O,{children:`No active workspaces`}),(0,P.jsx)(A,{children:`Start your first multi-repo workspace to automatically branch worktrees and prepare AI contexts.`})]}),(0,P.jsxs)(i,{onClick:x,children:[(0,P.jsx)(p,{size:15}),` Start work`]})]})}):(0,P.jsxs)(D,{className:`divide-y divide-border/60 overflow-hidden surface-card`,children:[(0,P.jsxs)(`div`,{className:`hidden sm:grid grid-cols-12 gap-3 px-4 py-2 bg-muted/30 text-[10px] font-bold uppercase tracking-wider text-muted-foreground font-mono`,children:[(0,P.jsx)(`span`,{className:`col-span-4`,children:`Workspace / Branch`}),(0,P.jsx)(`span`,{className:`col-span-2`,children:`AI Harness`}),(0,P.jsx)(`span`,{className:`col-span-2`,children:`Git Status`}),(0,P.jsx)(`span`,{className:`col-span-2`,children:`Services`}),(0,P.jsx)(`span`,{className:`col-span-2 text-right`,children:`Action`})]}),e.map(e=>{let n=t[e.branchName],o=!!(n&&n.changedFiles>0),s=!!(n&&n.runningServices>0),c=(e.mode??`worktree`)===`in-place`?null:n?S(n.syncStatus):null;return(0,P.jsxs)(`div`,{onClick:()=>a(e.branchName),className:`grid grid-cols-1 sm:grid-cols-12 gap-2 sm:gap-3 px-4 py-3 items-center hover:bg-accent/40 transition-colors cursor-pointer text-xs`,children:[(0,P.jsxs)(`div`,{className:`sm:col-span-4 min-w-0 flex items-center gap-2`,children:[(0,P.jsx)(`span`,{className:r(`size-2 rounded-full shrink-0`,o?`bg-amber-400`:`bg-emerald-500`)}),(0,P.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,P.jsx)(`span`,{className:`truncate font-mono font-bold text-foreground`,title:e.branchName,children:e.branchName}),(0,P.jsx)(`span`,{className:`text-[9px] font-mono uppercase tracking-wider text-muted-foreground bg-muted px-1 rounded shrink-0`,children:e.mode===`in-place`?`In-place`:`Worktree`})]}),(0,P.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono truncate mt-0.5`,children:[e.repos.length,` `,e.repos.length===1?`repo`:`repos`,` • `,new Date(e.createdAt).toLocaleDateString()]})]})]}),(0,P.jsx)(`div`,{className:`sm:col-span-2 flex items-center gap-1.5 min-w-0`,children:e.assistants&&e.assistants.length>0?e.assistants.map(e=>(0,P.jsx)(`span`,{className:`inline-flex items-center`,title:`Configured AI: ${e}`,children:e===`antigravity`?(0,P.jsx)(T,{className:`size-3.5`}):e===`claude`?(0,P.jsx)(`span`,{className:`grid size-3.5 place-items-center rounded bg-[#D97757] text-white shadow-2xs`,children:(0,P.jsx)(d,{className:`size-2`})}):e===`codex`?(0,P.jsx)(`span`,{className:`grid size-3.5 place-items-center rounded bg-foreground text-background shadow-2xs`,children:(0,P.jsx)(y,{className:`size-2`})}):(0,P.jsx)(`span`,{className:`grid size-3.5 place-items-center rounded bg-blue-600 text-white shadow-2xs`,children:(0,P.jsx)(w,{className:`size-2`})})},e)):(0,P.jsx)(`span`,{className:`text-[11px] text-muted-foreground font-mono`,children:`—`})}),(0,P.jsx)(`div`,{className:`sm:col-span-2 font-mono text-[11px]`,children:o?(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-amber-600 dark:text-amber-400 font-semibold`,children:[(0,P.jsx)(`span`,{className:`size-1.5 rounded-full bg-amber-500`}),n.changedFiles,` modified`,c&&c.tone!==`idle`&&(0,P.jsxs)(`span`,{className:`text-[10px] text-muted-foreground ml-0.5 font-normal`,children:[`(`,c.label,`)`]})]}):(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-emerald-600 dark:text-emerald-400`,children:[(0,P.jsx)(`span`,{className:`size-1.5 rounded-full bg-emerald-500`}),`Clean`]})}),(0,P.jsx)(`div`,{className:`sm:col-span-2 font-mono text-[11px]`,children:s?(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-emerald-600 dark:text-emerald-400`,children:[(0,P.jsx)(`span`,{className:`size-1.5 rounded-full bg-emerald-500 animate-pulse`}),n.runningServices,` active`]}):(0,P.jsx)(`span`,{className:`text-muted-foreground/70`,children:`Offline`})}),(0,P.jsx)(`div`,{className:`sm:col-span-2 flex items-center justify-end gap-1`,onClick:e=>e.stopPropagation(),children:(0,P.jsxs)(i,{size:`xs`,variant:`ghost`,onClick:()=>a(e.branchName),className:`gap-1 text-primary hover:text-primary`,children:[(0,P.jsx)(`span`,{children:`Inspect`}),(0,P.jsx)(_,{size:12})]})})]},e.id)})]})]}),J.length>0&&(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`div`,{className:`mb-2.5 flex items-center justify-between`,children:[(0,P.jsxs)(`h2`,{className:`text-xs font-bold uppercase tracking-wider text-muted-foreground`,children:[`Repository Worktree Allocations (`,J.length,`)`]}),(0,P.jsx)(`span`,{className:`text-[11px] text-muted-foreground font-mono`,children:`Underlying git repos mapped across features`})]}),(0,P.jsx)(D,{className:`divide-y divide-border/60 overflow-hidden surface-card`,children:J.map(e=>(0,P.jsxs)(`div`,{className:`flex items-center justify-between p-3 text-xs`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0 font-mono`,children:[(0,P.jsx)(`span`,{className:`grid size-6 place-items-center rounded bg-muted/60 text-muted-foreground`,children:(0,P.jsx)(m,{size:13})}),(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsx)(`span`,{className:`font-bold text-foreground block truncate`,children:e.name}),(0,P.jsx)(`span`,{className:`text-[10px] text-muted-foreground truncate block`,children:e.path})]})]}),(0,P.jsx)(`div`,{className:`flex items-center gap-2 shrink-0 font-mono text-[11px] text-muted-foreground`,children:(0,P.jsxs)(`span`,{className:`rounded bg-muted px-2 py-0.5 text-foreground font-semibold`,children:[e.count,` `,e.count===1?`workspace worktree`:`workspace worktrees`]})})]},e.name))})]})]})}export{I as DashboardPage};
@@ -1 +0,0 @@
1
- import{g as e,t}from"./button-BDDZnIHx.js";import{t as n}from"./circle-plus-lmU1yNJd.js";import{Vt as r}from"./index-C_rwnBzF.js";var i=e();function a({config:e,onCreateWorkspace:a,onModifySettings:o}){return(0,i.jsxs)(`div`,{className:`max-w-4xl mx-auto animate-fade-in`,children:[(0,i.jsxs)(`header`,{className:`mb-10`,children:[(0,i.jsx)(`div`,{className:`inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-primary/10 text-primary border border-primary/20 text-xs font-semibold uppercase tracking-wider mb-4`,children:`Getting Started Guide`}),(0,i.jsx)(`h1`,{className:`text-3xl font-bold tracking-tight text-foreground mb-2`,children:`Welcome to NexusFlow`}),(0,i.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`NexusFlow orchestrates multi-repository developer environments. It combines isolated Git worktrees, automatic code analyzer sweeps, and background process running into a single dashboard.`})]}),(0,i.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-8 mb-10`,children:[(0,i.jsxs)(`div`,{className:`bg-card border border-border rounded-xl p-6 shadow-sm space-y-6`,children:[(0,i.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-4`,children:`NexusFlow Workflows`}),(0,i.jsxs)(`div`,{className:`flex gap-4`,children:[(0,i.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-primary/10 border border-primary/20 text-primary font-bold text-sm`,children:`1`}),(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:`Configure Folders`}),(0,i.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`Specify your Development folder (where repositories live) and Workspaces folder. These are currently set to:`,(0,i.jsx)(`code`,{className:`block mt-1 text-[10px] text-primary break-all`,children:e.devDir||`Not Configured`})]})]})]}),(0,i.jsxs)(`div`,{className:`flex gap-4`,children:[(0,i.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-primary/10 border border-primary/20 text-primary font-bold text-sm`,children:`2`}),(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:`Build Workspaces`}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:`Choose repositories and feature branch. NexusFlow checks out dependencies under a unified workspace directory using Git Worktrees, keeping original projects clean.`})]})]}),(0,i.jsxs)(`div`,{className:`flex gap-4`,children:[(0,i.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-primary/10 border border-primary/20 text-primary font-bold text-sm`,children:`3`}),(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:`Align AI Context`}),(0,i.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`NexusFlow writes files like `,(0,i.jsx)(`code`,{children:`CLAUDE.md`}),`, `,(0,i.jsx)(`code`,{children:`.cursorrules`}),`, `,(0,i.jsx)(`code`,{children:`AGENTS.md`}),` prompting the LLM to inspect project relations and list key assumptions and questions before coding.`]})]})]})]}),(0,i.jsxs)(`div`,{className:`bg-card border border-border rounded-xl p-6 shadow-sm flex flex-col justify-between`,children:[(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-4`,children:`Current Configuration`}),(0,i.jsxs)(`div`,{className:`space-y-3 text-xs`,children:[(0,i.jsxs)(`div`,{className:`flex justify-between py-1.5 border-b border-border`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Dev Folder:`}),(0,i.jsx)(`span`,{className:`text-foreground font-mono text-[10px] truncate max-w-[200px]`,children:e.devDir})]}),(0,i.jsxs)(`div`,{className:`flex justify-between py-1.5 border-b border-border`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Workspaces Folder:`}),(0,i.jsx)(`span`,{className:`text-foreground font-mono text-[10px] truncate max-w-[200px]`,children:e.workspacesDir})]}),(0,i.jsxs)(`div`,{className:`flex justify-between py-1.5 border-b border-border`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Preferred AI:`}),(0,i.jsx)(`span`,{className:`text-primary font-semibold uppercase`,children:e.defaultAssistant||`None`})]}),(0,i.jsxs)(`div`,{className:`flex justify-between py-1.5`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Scan Depth:`}),(0,i.jsxs)(`span`,{className:`text-foreground font-semibold`,children:[e.scanDepth,` levels`]})]})]})]}),(0,i.jsxs)(`div`,{className:`pt-6 border-t border-border flex flex-col gap-2`,children:[(0,i.jsxs)(t,{className:`w-full gap-2`,onClick:a,children:[(0,i.jsx)(n,{size:14}),` Create a Workspace`]}),(0,i.jsxs)(t,{variant:`outline`,className:`w-full gap-2`,onClick:o,children:[(0,i.jsx)(r,{size:14,className:`text-muted-foreground`}),` Modify Settings`]})]})]})]})]})}export{a as GettingStartedPage};
@@ -1 +0,0 @@
1
- import{_ as e,b as t,g as n,t as r}from"./button-BDDZnIHx.js";import{o as i}from"./CSPContext-DBUu9tE0.js";import{n as a,t as o}from"./ScaffoldRepoInline-ywcpq9PX.js";import{a as s,c,i as l,n as u,o as d,r as f,s as p,t as m}from"./alert-dialog-CQAX2yRx.js";import{t as h}from"./trash-2-CtR35_eF.js";import{F as g,Ft as _,G as v,Gt as ee,J as y,Kt as b,Wt as x,a as S,c as C,d as w,f as T,l as E,o as D,s as O,st as k,tt as A,u as j,z as M}from"./index-C_rwnBzF.js";import{t as N}from"./badge-CAohJGj6.js";import{a as P,i as F,n as I,r as L,t as te}from"./empty-BdlgbifD.js";var R=t(e(),1),z=n(),B={editingId:null,name:``,description:``,repoPaths:[]};function V(){let e=_(),t=v(),n=y(),V=k(),H=g(),U=A(),W=M(),[G,K]=(0,R.useState)(null),[q,J]=(0,R.useState)(null),[Y,X]=(0,R.useState)(null),Z=(0,R.useMemo)(()=>{let e={};for(let t of V.data??[])t.projectId&&(e[t.projectId]=(e[t.projectId]??0)+1);return e},[V.data]),Q=()=>{J(null),K(B)},ne=e=>{J(null),K({editingId:e.id,name:e.name,description:e.description??``,repoPaths:e.repos.map(e=>e.path)})},re=e=>{K(t=>t&&{...t,repoPaths:t.repoPaths.includes(e.path)?t.repoPaths.filter(t=>t!==e.path):[...t.repoPaths,e.path]})},ie=async()=>{if(G){J(null);try{G.editingId?await U.mutateAsync({id:G.editingId,name:G.name,description:G.description||null,repos:G.repoPaths}):await H.mutateAsync({name:G.name,description:G.description||void 0,repos:G.repoPaths}),K(null)}catch(e){J(e instanceof Error?e.message:String(e))}}},ae=async()=>{if(Y)try{await W.mutateAsync(Y.id)}finally{X(null)}},oe=!!(G&&G.name.trim()&&G.repoPaths.length>0),$=H.isPending||U.isPending;return(0,z.jsxs)(`div`,{className:`mx-auto max-w-4xl animate-fade-in`,children:[(0,z.jsxs)(`header`,{className:`mb-6 flex items-center justify-between gap-4`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Projects`}),(0,z.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Named groups of repositories you start work from. Registered once, reused for every feature.`})]}),(0,z.jsxs)(r,{onClick:Q,children:[(0,z.jsx)(x,{}),` New project`]})]}),t.isLoading?(0,z.jsx)(`div`,{className:`flex justify-center py-20`,children:(0,z.jsx)(S,{className:`size-6`})}):(t.data??[]).length===0?(0,z.jsxs)(te,{className:`border border-border border-dashed`,children:[(0,z.jsxs)(L,{children:[(0,z.jsx)(F,{variant:`icon`,children:(0,z.jsx)(b,{})}),(0,z.jsx)(P,{children:`No projects yet`}),(0,z.jsx)(I,{children:`Register your first project to start work without re-picking repositories every time.`})]}),(0,z.jsxs)(r,{onClick:Q,children:[(0,z.jsx)(x,{}),` New project`]})]}):(0,z.jsx)(`ul`,{className:`flex flex-col gap-3`,children:(t.data??[]).map(t=>(0,z.jsx)(`li`,{className:`rounded-xl border border-border bg-card p-4 transition-colors hover:border-foreground/15`,children:(0,z.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,z.jsxs)(`div`,{className:`min-w-0`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`h2`,{className:`truncate text-sm font-semibold`,children:t.name}),(Z[t.id]??0)>0&&(0,z.jsxs)(N,{variant:`secondary`,children:[Z[t.id],` workspace`,Z[t.id]===1?``:`s`]})]}),t.description&&(0,z.jsx)(`p`,{className:`mt-0.5 truncate text-sm text-muted-foreground`,children:t.description}),(0,z.jsx)(`ul`,{className:`mt-2 flex flex-col gap-0.5`,children:t.repos.map(e=>(0,z.jsxs)(`li`,{className:`truncate font-mono text-xs text-muted-foreground`,children:[e.path,(0,z.jsxs)(`span`,{className:`ml-2 text-muted-foreground/60`,children:[`[`,e.defaultBranch,`]`]})]},e.path))})]}),(0,z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,z.jsxs)(r,{size:`sm`,onClick:()=>e(`/new?project=${encodeURIComponent(t.id)}`),children:[(0,z.jsx)(ee,{}),` Start work`]}),(0,z.jsx)(r,{size:`icon-sm`,variant:`ghost`,"aria-label":`Edit ${t.name}`,onClick:()=>ne(t),children:(0,z.jsx)(c,{})}),(0,z.jsx)(r,{size:`icon-sm`,variant:`ghost`,"aria-label":`Remove ${t.name}`,onClick:()=>X(t),children:(0,z.jsx)(h,{})})]})]})},t.id))}),(0,z.jsx)(D,{open:G!==null,onOpenChange:e=>!e&&K(null),children:(0,z.jsxs)(w,{className:`max-w-lg`,children:[(0,z.jsxs)(E,{children:[(0,z.jsx)(T,{children:G?.editingId?`Edit project`:`New project`}),(0,z.jsx)(O,{children:`A project is a reusable group of source repositories. Removing one later never touches disk.`})]}),(0,z.jsxs)(j,{className:`space-y-4`,children:[(0,z.jsxs)(`label`,{className:`block`,children:[(0,z.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Name`}),(0,z.jsx)(i,{value:G?.name??``,onChange:e=>K(t=>t&&{...t,name:e.target.value}),placeholder:`e.g. Hogia Billing`,autoFocus:!0})]}),(0,z.jsxs)(`label`,{className:`block`,children:[(0,z.jsxs)(`span`,{className:`mb-1 block text-sm font-medium`,children:[`Description `,(0,z.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`(optional)`})]}),(0,z.jsx)(i,{value:G?.description??``,onChange:e=>K(t=>t&&{...t,description:e.target.value}),placeholder:`What this group of repos is for`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Repositories`}),(0,z.jsx)(a,{repos:n.data??[],selectedPaths:G?.repoPaths??[],onToggle:re,loading:n.isLoading,emptyHint:`No repositories found in your dev directory.`}),(0,z.jsx)(o,{onCreated:e=>K(t=>t&&{...t,repoPaths:[...t.repoPaths,e.path]})})]}),q&&(0,z.jsx)(`p`,{className:`text-sm text-destructive-foreground`,children:q})]}),(0,z.jsxs)(C,{children:[(0,z.jsx)(r,{variant:`outline`,onClick:()=>K(null),children:`Cancel`}),(0,z.jsxs)(r,{onClick:ie,disabled:!oe||$,children:[$?(0,z.jsx)(S,{}):null,G?.editingId?`Save changes`:`Create project`]})]})]})}),(0,z.jsx)(m,{open:Y!==null,onOpenChange:e=>!e&&X(null),children:(0,z.jsxs)(d,{children:[(0,z.jsxs)(s,{children:[(0,z.jsxs)(p,{children:[`Remove “`,Y?.name,`”?`]}),(0,z.jsx)(f,{children:`This only removes the project from the registry — repositories and workspaces on disk are not touched.`})]}),(0,z.jsxs)(l,{children:[(0,z.jsx)(u,{render:(0,z.jsx)(r,{variant:`outline`,children:`Cancel`})}),(0,z.jsxs)(r,{variant:`destructive`,onClick:ae,disabled:W.isPending,children:[W.isPending?(0,z.jsx)(S,{}):null,`Remove project`]})]})]})})]})}export{V as ProjectsPage};
@@ -1 +0,0 @@
1
- import{_ as e,b as t,c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,o as u,p as d,t as f}from"./button-BDDZnIHx.js";import{Cn as p,Dt as ee,Mn as te,Ot as m,Qt as h,Un as ne,c as re,d as ie,en as g,f as ae,in as oe,o as _,p as v,pn as y,rn as se,tr as b,u as ce,un as le}from"./CSPContext-DBUu9tE0.js";import{t as ue}from"./useValueChanged-DeYvGnKs.js";import{t as de}from"./useAriaLabelledBy-ClesgjMe.js";import{Ht as fe,I as x,a as S}from"./index-C_rwnBzF.js";var pe=o(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),C=t(e(),1),w=C.createContext({disabled:!1});function me(){return C.useContext(w)}var T=C.createContext(void 0);function he(e=!0){let t=C.useContext(T);if(t===void 0&&!e)throw Error(d(3));return t}function ge(e){if(!e)return null;for(let t of e.elements){let e=t.tagName;if(e===`BUTTON`||e===`INPUT`){let e=t;if(e.type===`submit`)return e}}return null}var E=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.indeterminate=`data-indeterminate`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({});function _e(e){return C.useMemo(()=>({checked(t){return e.indeterminate?{}:t?{[E.checked]:``}:{[E.unchecked]:``}},...v}),[e.indeterminate])}var ve=C.createContext(void 0);function D(){let e=C.useContext(ve);if(e===void 0)throw Error(d(14));return e}var O=a(),ye=`data-parent`,be=C.forwardRef(function(e,t){let{checked:a,className:o,defaultChecked:l=!1,"aria-labelledby":d,disabled:f=!1,form:h,id:g,indeterminate:_=!1,inputRef:v,name:b,onCheckedChange:fe,parent:x=!1,readOnly:S=!1,render:pe,required:w=!1,uncheckedValue:T,value:E,nativeButton:D=!1,style:be,...k}=e,{clearErrors:A}=ie(),{disabled:j,name:M,setDirty:xe,setFilled:N,setFocused:P,setTouched:Se,state:Ce,validationMode:we,validityData:Te,validation:Ee}=ae(),De=me(),{labelId:Oe,controlId:ke,registerControlId:F,getDescriptionProps:Ae}=ce(),I=he(),L=I?.parent,R=L&&I.allValues,z=j||De.disabled||I?.disabled||f,B=M??b,V=E??B,je=oe(),Me=oe(),H=ke;R?H=x?Me:`${L.id}-${V}`:g&&(H=g);let U={};R&&(x?U=I.parent.getParentProps():V&&(U=I.parent.getChildProps(V)));let{checked:Ne=a,indeterminate:Pe=_,onCheckedChange:Fe,...Ie}=U,W=I?.value,Le=I?.setValue,Re=I?.defaultValue,G=C.useRef(null),K=i(()=>Symbol(`checkbox-control`)),q=C.useRef(!1),{getButtonProps:ze,buttonRef:Be}=le({disabled:z,native:D}),J=I?.validation??Ee,[Y,Ve]=te({controlled:V&&W&&!x?W.includes(V):Ne,default:V&&Re&&!x?Re.includes(V):l,name:`Checkbox`,state:`checked`}),X=R?!!Ne:Y,Z=R&&Pe||_;y(()=>{F!==c&&(q.current=!0,F(K.current,H))},[H,F,K]),C.useEffect(()=>{let e=K.current;return()=>{!q.current||F===c||(q.current=!1,F(e,void 0))}},[F,K]),re(G,je,Y,void 0,!I&&!z,b);let Q=C.useRef(null),He=r(v,Q,J.inputRef,J.registerInput),Ue=de(d,Oe,Q,!D,H??void 0);y(()=>{Q.current&&(Q.current.indeterminate=Z,Y&&N(!0))},[Y,Z,N]),ue(Y,()=>{I||(A(B),N(Y),xe(Y!==Te.initialValue),J.change(Y))});let We=u({checked:Y,disabled:z,form:h,name:x?void 0:B,id:D?void 0:H??void 0,required:w,ref:He,style:B?m:ee,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(S){e.preventDefault();return}let t=e.currentTarget.checked,n=se(ne,e.nativeEvent);if(fe?.(t,n),!n.isCanceled&&(Fe?.(t,n),!n.isCanceled&&(Ve(t),V&&W&&Le&&!x&&!R))){let e=t?[...W,V]:W.filter(e=>e!==V);Le(e,n)}},onFocus(){G.current?.focus()}},E===void 0?n:{value:(I?Y&&E:E)||``},Ae,e=>J.getValidationProps(z,e));C.useEffect(()=>{if(!L||!V)return;let e=L.disabledStatesRef.current;return e.set(V,z),()=>{e.delete(V)}},[L,z,V]);let $=C.useMemo(()=>({...Ce,checked:X,disabled:z,readOnly:S,required:w,indeterminate:Z}),[Ce,X,z,S,w,Z]),Ge=_e($),Ke=s(`span`,e,{state:$,ref:[Be,G,t,I?.registerControlRef],props:[{id:D?H??void 0:je,role:`checkbox`,"aria-checked":Z?`mixed`:X,"aria-readonly":S||void 0,"aria-required":w||void 0,"aria-labelledby":Ue,[ye]:x?``:void 0,onFocus(){z||P(!0)},onBlur(){let e=Q.current;e&&(Se(!0),P(!1),we===`onBlur`&&J.commit(I?W:e.checked))},onKeyDown(e){if(e.key!==`Enter`||(e.preventBaseUIHandler(),e.defaultPrevented))return;let t=Q.current?.form??null,n=e.currentTarget,r=e.nativeEvent,i=e.preventDefault,a=r.preventDefault,o=!1;e.preventDefault=()=>{o=!0,i.call(e)},r.preventDefault=()=>{o=!0,a.call(r)},a.call(r),p(n).queueMicrotask(()=>{e.preventDefault=i,r.preventDefault=a,o||ge(t)?.click()})},onClick(e){if(S||z)return;e.preventDefault();let t=Q.current;t&&t.dispatchEvent(new(p(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},k,Ie,ze,Ae,e=>J.getValidationProps(z,e)],stateAttributesMapping:Ge});return(0,O.jsxs)(ve.Provider,{value:$,children:[Ke,!Y&&!I&&B&&!x&&T!==void 0&&(0,O.jsx)(`input`,{type:`hidden`,form:h,name:B,value:T,disabled:z}),(0,O.jsx)(`input`,{...We,suppressHydrationWarning:!0})]})}),k=C.forwardRef(function(e,t){let{render:n,className:r,style:i,keepMounted:a=!1,...o}=e,c=D(),l=c.checked||c.indeterminate,{mounted:u,transitionStatus:d,setMounted:f}=g(l),p=C.useRef(null),ee={...c,transitionStatus:d};h({open:l,ref:p,onComplete(){l||f(!1)}});let te={..._e(c),...b,...v},m=a||u,ne=s(`span`,e,{ref:[t,p],state:ee,stateAttributesMapping:te,props:o});return m?ne:null});function A({className:e,...t}){return(0,O.jsx)(be,{className:l(`relative inline-flex size-4.5 shrink-0 items-center justify-center rounded-[.25rem] border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none ring-ring transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[3px] not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:opacity-64 sm:size-4 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none`,e),"data-slot":`checkbox`,...t,children:(0,O.jsx)(k,{className:`-inset-px absolute flex items-center justify-center rounded-[.25rem] text-primary-foreground data-unchecked:hidden data-checked:bg-primary data-indeterminate:text-foreground`,"data-slot":`checkbox-indicator`,render:(e,t)=>(0,O.jsx)(`span`,{...e,children:t.indeterminate?(0,O.jsx)(`svg`,{className:`size-3.5 sm:size-3`,fill:`none`,height:`24`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`3`,viewBox:`0 0 24 24`,width:`24`,xmlns:`http://www.w3.org/2000/svg`,children:(0,O.jsx)(`path`,{d:`M5.252 12h13.496`})}):(0,O.jsx)(`svg`,{className:`size-3.5 sm:size-3`,fill:`none`,height:`24`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`3`,viewBox:`0 0 24 24`,width:`24`,xmlns:`http://www.w3.org/2000/svg`,children:(0,O.jsx)(`path`,{d:`M5.252 12.7 10.2 18.63 18.748 5.37`})})})})})}function j({repos:e,selectedPaths:t,onToggle:n,loading:r,emptyHint:i,className:a}){let[o,s]=(0,C.useState)(``),c=(0,C.useMemo)(()=>{let t=o.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)||e.path.toLowerCase().includes(t)):e},[e,o]);return(0,O.jsxs)(`div`,{className:l(`flex flex-col gap-2`,a),children:[(0,O.jsxs)(`div`,{className:`relative`,children:[(0,O.jsx)(fe,{className:`absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground`}),(0,O.jsx)(_,{value:o,onChange:e=>s(e.target.value),placeholder:`Filter repositories…`,className:`pl-8`,"aria-label":`Filter repositories`})]}),(0,O.jsx)(`div`,{className:`max-h-56 overflow-y-auto rounded-lg border border-border`,children:r?(0,O.jsx)(`p`,{className:`p-3 text-sm text-muted-foreground`,children:`Scanning for repositories…`}):c.length===0?(0,O.jsx)(`p`,{className:`p-3 text-sm text-muted-foreground`,children:i??`No repositories found.`}):(0,O.jsx)(`ul`,{className:`divide-y divide-border`,children:c.map(e=>(0,O.jsx)(`li`,{children:(0,O.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3 px-3 py-2 hover:bg-accent`,children:[(0,O.jsx)(A,{checked:t.includes(e.path),onCheckedChange:()=>n(e),"aria-label":e.name}),(0,O.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:e.name}),(0,O.jsx)(`span`,{className:`block truncate font-mono text-xs text-muted-foreground`,children:e.path})]}),(0,O.jsx)(`span`,{className:`shrink-0 font-mono text-xs text-muted-foreground`,children:e.defaultBranch})]})},e.path))})})]})}function M({onCreated:e}){let[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(``),[a,o]=(0,C.useState)(null),s=x(),c=async()=>{o(null);try{let{repo:t}=await s.mutateAsync(r.trim());i(``),n(!1),e(t)}catch(e){o(e instanceof Error?e.message:String(e))}};return t?(0,O.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-1.5`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(_,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>e.key===`Enter`&&r.trim()&&c(),placeholder:`new-repo-name`,className:`h-7 font-mono text-xs`,"aria-label":`New repository name`,autoFocus:!0}),(0,O.jsxs)(f,{size:`xs`,onClick:c,disabled:!r.trim()||s.isPending,children:[s.isPending?(0,O.jsx)(S,{}):null,`Create`]}),(0,O.jsx)(f,{size:`xs`,variant:`ghost`,onClick:()=>{n(!1),o(null)},children:`Cancel`})]}),a&&(0,O.jsx)(`p`,{className:`text-xs text-destructive-foreground`,children:a})]}):(0,O.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),className:`mt-1.5 inline-flex cursor-pointer items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground`,children:[(0,O.jsx)(pe,{className:`size-3.5`}),` Scaffold a brand-new repository`]})}export{j as n,A as r,M as t};
@@ -1 +0,0 @@
1
- import{_ as e,b as t,c as n,d as r,g as i,i as a,m as o,n as s,o as c,p as l,t as u}from"./button-BDDZnIHx.js";import{Cn as d,Dt as f,Mn as p,Ot as m,Un as ee,c as te,d as ne,f as re,in as ie,l as ae,o as h,p as g,pn as oe,rn as se,u as ce,un as le}from"./CSPContext-DBUu9tE0.js";import{t as ue}from"./useValueChanged-DeYvGnKs.js";import{t as de}from"./useAriaLabelledBy-ClesgjMe.js";import{D as _,E as v,O as y,Rt as b,T as x,Ut as S,Xt as C,a as w,k as T}from"./index-C_rwnBzF.js";import{t as E}from"./badge-CAohJGj6.js";import{t as D}from"./card-BKXzd_5L.js";import{t as O}from"./label-CG5exjag.js";var k=t(e(),1),A=k.forwardRef(function(e,t){let{className:n,render:r,orientation:i=`horizontal`,style:o,...s}=e;return a(`div`,e,{state:{orientation:i},ref:t,props:[{role:`separator`,"aria-orientation":i},s]})}),j=i(),M=s(`relative rounded-xl border px-3.5 py-3 text-card-foreground text-sm`,{defaultVariants:{variant:`default`},variants:{variant:{default:`bg-transparent dark:bg-input/32 [&_svg]:text-muted-foreground`,error:`border-destructive/32 bg-destructive/4 text-destructive-foreground [&_[data-slot=alert-description]]:text-destructive-foreground/80 [&_svg]:text-destructive`,info:`border-info/32 bg-info/4 [&_svg]:text-info`,success:`border-success/32 bg-success/4 [&_svg]:text-success`,warning:`border-warning/32 bg-warning/4 [&_svg]:text-warning`}}});function N(e){let t=e.props[`data-slot`];if(t)return t;let n=e.type;switch(n.displayName??n.name){case`AlertAction`:return`alert-action`;case`AlertTitle`:return`alert-title`;case`AlertDescription`:return`alert-description`;default:return}}function P({className:e,variant:t,children:n,...r}){let i=[],a=[],s=[];return k.Children.forEach(n,e=>{if(!(0,k.isValidElement)(e)){a.push(e);return}let t=N(e);t===`alert-action`?s.push(e):t===`alert-title`||t===`alert-description`?a.push(e):i.push(e)}),(0,j.jsx)(`div`,{className:o(M({variant:t}),e),"data-slot":`alert`,role:`alert`,...r,children:(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i.length>0&&(0,j.jsx)(`div`,{className:`flex size-4 shrink-0 items-center justify-center [&>svg]:size-full`,children:i}),a.length>0&&(0,j.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:a}),s.length>0&&(0,j.jsx)(`div`,{className:`flex shrink-0 items-center self-center`,children:s})]})})}function F({className:e,...t}){return(0,j.jsx)(`div`,{className:o(`font-medium`,e),"data-slot":`alert-title`,...t})}function I({className:e,...t}){return(0,j.jsx)(`div`,{className:o(`flex flex-col gap-2.5 text-muted-foreground`,e),"data-slot":`alert-description`,...t})}function L({className:e,...t}){return(0,j.jsx)(`div`,{className:o(`flex gap-1`,e),"data-slot":`alert-action`,...t})}F.displayName=`AlertTitle`,I.displayName=`AlertDescription`,L.displayName=`AlertAction`;function R({className:e,orientation:t=`horizontal`,...n}){return(0,j.jsx)(A,{className:o(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch`,e),"data-slot":`separator`,orientation:t,...n})}var z=k.createContext(void 0);function B(){let e=k.useContext(z);if(e===void 0)throw Error(l(63));return e}var V=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),H={...g,checked(e){return e?{[V.checked]:``}:{[V.unchecked]:``}}},U=k.forwardRef(function(e,t){let{checked:i,className:o,defaultChecked:s,"aria-labelledby":l,form:u,id:h,inputRef:g,name:_,nativeButton:v=!1,onCheckedChange:y,readOnly:b=!1,required:x=!1,disabled:S=!1,render:C,uncheckedValue:w,value:T,style:E,...D}=e,{clearErrors:O}=ne(),{state:A,setTouched:M,setDirty:N,validityData:P,setFilled:F,setFocused:I,validationMode:L,disabled:R,name:B,validation:V}=re(),{labelId:U}=ce(),W=R||S,G=B??_,K=k.useRef(null),fe=r(K,g,V.inputRef),q=k.useRef(null),J=ie(),Y=ae({id:h,implicit:!1,controlRef:q}),X=v?void 0:Y,[Z,pe]=p({controlled:i,default:!!s,name:`Switch`,state:`checked`});te(q,J,Z,void 0,!W,_),oe(()=>{K.current&&F(K.current.checked)},[K,F]),ue(Z,()=>{O(G),N(Z!==P.initialValue),F(Z),V.change(Z)});let{getButtonProps:me,buttonRef:Q}=le({disabled:W,native:v}),he=de(l,U,K,!v,X),ge={id:v?Y:J,role:`switch`,"aria-checked":Z,"aria-readonly":b||void 0,"aria-required":x||void 0,"aria-labelledby":he,onFocus(){W||I(!0)},onBlur(){let e=K.current;!e||W||(M(!0),I(!1),L===`onBlur`&&V.commit(e.checked))},onClick(e){if(b||W)return;e.preventDefault();let t=K.current;t&&t.dispatchEvent(new(d(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},_e=c({checked:Z,disabled:W,form:u,id:X,name:G,required:x,style:G?m:f,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:fe,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(b){e.preventDefault();return}let t=e.currentTarget.checked,n=se(ee,e.nativeEvent);y?.(t,n),!n.isCanceled&&pe(t)},onFocus(){q.current?.focus()}},e=>V.getValidationProps(W,e),T===void 0?n:{value:T}),$=k.useMemo(()=>({...A,checked:Z,disabled:W,readOnly:b,required:x}),[A,Z,W,b,x]),ve=a(`span`,e,{state:$,ref:[t,q,Q],props:[ge,D,me,e=>V.getValidationProps(W,e)],stateAttributesMapping:H});return(0,j.jsxs)(z.Provider,{value:$,children:[ve,!Z&&G&&w!==void 0&&(0,j.jsx)(`input`,{type:`hidden`,form:u,name:G,value:w,disabled:W}),(0,j.jsx)(`input`,{..._e,suppressHydrationWarning:!0})]})}),W=k.forwardRef(function(e,t){let{render:n,className:r,style:i,...o}=e;return a(`span`,e,{state:B(),ref:t,stateAttributesMapping:H,props:o})});function G({className:e,...t}){return(0,j.jsx)(U,{className:o(`inline-flex h-[calc(var(--thumb-size)+2px)] w-[calc(var(--thumb-size)*2-2px)] shrink-0 cursor-pointer items-center rounded-full p-px outline-none transition-[background-color,box-shadow] duration-200 [--thumb-size:--spacing(5)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-checked:bg-primary data-unchecked:bg-input data-disabled:cursor-not-allowed data-disabled:opacity-64 sm:[--thumb-size:--spacing(4)]`,e),"data-slot":`switch`,...t,children:(0,j.jsx)(W,{className:o(`pointer-events-none block aspect-square h-full origin-left in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:not-data-disabled:scale-x-110 in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)] rounded-(--thumb-size) bg-background shadow-sm/5 will-change-transform [transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s] data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-4px)]`),"data-slot":`switch-thumb`})})}function K({config:e,setConfig:t,saveStatus:n,editors:r,adapters:i,saveAppConfig:a,isSettingsFormValid:o,toolsStatus:s,toolsLoading:c,updatingToolId:l,fetchToolsStatus:d,handleUpdateTool:f}){if(!e)return null;let p=r.find(t=>t.command===e.defaultEditor),m=i.find(t=>t.name===(e.storageProvider||`local`));return(0,j.jsxs)(`div`,{className:`mx-auto max-w-4xl animate-fade-in`,children:[(0,j.jsxs)(`header`,{className:`mb-6`,children:[(0,j.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`Global Settings`}),(0,j.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Configure your local directories, search parameters, and editor defaults.`})]}),n===`success`&&(0,j.jsxs)(P,{variant:`success`,className:`mb-6`,children:[(0,j.jsx)(C,{size:18}),` Settings successfully saved and updated!`]}),n===`error`&&(0,j.jsxs)(P,{variant:`error`,className:`mb-6`,children:[(0,j.jsx)(b,{size:18}),` Error: Could not save configuration details to disk.`]}),(0,j.jsx)(D,{className:`mb-6 rounded-xl p-6 shadow-sm`,children:(0,j.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 md:grid-cols-2`,children:[(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(O,{className:`text-sm`,children:`Development Directory`}),(0,j.jsx)(h,{type:`text`,value:e.devDir,onChange:n=>t({...e,devDir:n.target.value})}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Directory where your git projects are scanned.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(O,{className:`text-sm`,children:`Workspaces Directory`}),(0,j.jsx)(h,{type:`text`,value:e.workspacesDir,onChange:n=>t({...e,workspacesDir:n.target.value})}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Directory where unified worktree environments are spun up.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(O,{className:`text-sm`,children:`Repo Search Depth`}),(0,j.jsx)(h,{type:`number`,min:1,max:5,value:e.scanDepth,onChange:n=>t({...e,scanDepth:parseInt(n.target.value,10)})}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Max directory levels deep the system will traverse for git repos.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(O,{className:`text-sm`,children:`Default Assistant`}),(0,j.jsxs)(x,{value:e.defaultAssistant||``,onValueChange:n=>typeof n==`string`&&t({...e,defaultAssistant:n||null}),children:[(0,j.jsx)(y,{"aria-label":`Default Assistant`,children:(0,j.jsx)(T,{children:e.defaultAssistant===`claude`?`Claude Code`:e.defaultAssistant===`antigravity`?`Antigravity`:e.defaultAssistant===`codex`?`Codex`:e.defaultAssistant===`copilot`?`GitHub Copilot`:e.defaultAssistant===`cursor`?`Cursor`:`None (Prompt me)`})}),(0,j.jsxs)(_,{alignItemWithTrigger:!1,children:[(0,j.jsx)(v,{value:``,children:`None (Prompt me)`}),(0,j.jsx)(v,{value:`claude`,children:`Claude Code`}),(0,j.jsx)(v,{value:`antigravity`,children:`Antigravity`}),(0,j.jsx)(v,{value:`codex`,children:`Codex`}),(0,j.jsx)(v,{value:`copilot`,children:`GitHub Copilot`}),(0,j.jsx)(v,{value:`cursor`,children:`Cursor`})]})]}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Your preferred workspace context manager.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(O,{className:`text-sm`,children:`Preferred Editor`}),(0,j.jsxs)(x,{value:e.defaultEditor||``,onValueChange:n=>typeof n==`string`&&t({...e,defaultEditor:n||null}),children:[(0,j.jsx)(y,{"aria-label":`Preferred Editor`,children:(0,j.jsx)(T,{children:p?`${p.name} ${p.detected?`(Detected)`:`(Not found)`}`:`No preference`})}),(0,j.jsxs)(_,{alignItemWithTrigger:!1,children:[(0,j.jsx)(v,{value:``,children:`No preference`}),r.map(e=>(0,j.jsxs)(v,{value:e.command,children:[e.name,` `,e.detected?`(Detected)`:`(Not found)`]},e.command))]})]}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Shown first in the “Open with…” workspace chooser.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-4 md:col-span-2`,children:[(0,j.jsx)(R,{className:`mt-1`}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:`Workspace Storage Settings`}),(0,j.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Choose where maps, plans, and knowledge files are stored.`})]}),(0,j.jsxs)(`div`,{className:`flex max-w-md flex-col gap-1.5`,children:[(0,j.jsx)(O,{htmlFor:`storageProvider`,className:`text-sm`,children:`Storage Provider`}),(0,j.jsxs)(x,{value:e.storageProvider||`local`,onValueChange:n=>{if(typeof n!=`string`)return;let r=n,a={...e,storageProvider:r},o=i.find(e=>e.name===r);o?.configFields?.length&&(a.adapterConfig||={},a.adapterConfig[r]||(a.adapterConfig[r]={}),o.configFields.forEach(e=>{a.adapterConfig[r][e.key]===void 0&&e.default!==void 0&&(a.adapterConfig[r][e.key]=e.default)})),t(a)},children:[(0,j.jsx)(y,{id:`storageProvider`,"aria-label":`Storage Provider`,children:(0,j.jsx)(T,{children:m?.displayName??`Local Workspace (Folders)`})}),(0,j.jsx)(_,{alignItemWithTrigger:!1,children:i.length>0?i.map(e=>(0,j.jsx)(v,{value:e.name,children:e.displayName},e.name)):(0,j.jsx)(v,{value:`local`,children:`Local Workspace (Folders)`})})]}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:m?.description||`Choose where to store maps, plans, and knowledge files. Centralized vault keeps repositories 100% clean and allows Obsidian integration.`})]}),(()=>{let n=e.storageProvider||`local`,r=i.find(e=>e.name===n);return r?.configFields?.length?(0,j.jsxs)(`div`,{className:`flex max-w-md flex-col gap-4 rounded-xl border border-border bg-muted/40 p-4`,children:[(0,j.jsxs)(`h4`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:[r.displayName,` Settings`]}),r.configFields.map(r=>{let i=e.adapterConfig?.[n]?.[r.key]??r.default??``,a=i=>{let a={...e.adapterConfig||{},[n]:{...e.adapterConfig?.[n]||{},[r.key]:i}};t({...e,adapterConfig:a})};return r.type===`boolean`?(0,j.jsxs)(O,{className:`flex cursor-pointer items-start gap-3 text-sm`,children:[(0,j.jsx)(G,{checked:!!i,onCheckedChange:e=>a(e)}),(0,j.jsxs)(`span`,{className:`flex flex-col`,children:[(0,j.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:r.label}),r.description&&(0,j.jsx)(`span`,{className:`mt-0.5 text-xs leading-normal text-muted-foreground`,children:r.description})]})]},r.key):(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(O,{className:`text-sm`,children:r.label}),(0,j.jsx)(h,{type:r.type===`number`?`number`:`text`,value:i,onChange:e=>{let t=r.type===`number`?Number(e.target.value):e.target.value;a(t)}}),r.description&&(0,j.jsx)(`span`,{className:`text-xs leading-normal text-muted-foreground`,children:r.description})]},r.key)})]}):null})()]})]})}),(0,j.jsxs)(D,{className:`mt-6 rounded-xl p-6 shadow-sm`,children:[(0,j.jsxs)(`div`,{className:`mb-6 flex items-start justify-between gap-4`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`text-lg font-semibold text-foreground`,children:`AI Toolchain Updates`}),(0,j.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Monitor and update the CLI packages and assistants in your workflow.`})]}),(0,j.jsxs)(u,{variant:`outline`,size:`sm`,onClick:()=>d(!0),disabled:c,children:[c?(0,j.jsx)(w,{className:`size-3`}):(0,j.jsx)(S,{size:13}),c?`Checking...`:`Check Now`]})]}),c&&s.length===0?(0,j.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-8 text-muted-foreground`,children:[(0,j.jsx)(w,{className:`size-6`}),(0,j.jsx)(`span`,{className:`text-xs`,children:`Fetching registry version details...`})]}):s.length===0?(0,j.jsx)(`p`,{className:`py-4 text-xs text-muted-foreground`,children:`No toolchain information available.`}):(0,j.jsx)(`div`,{className:`space-y-4`,children:s.map(e=>(0,j.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-xl border border-border bg-muted/30 p-4 sm:flex-row sm:items-center sm:justify-between`,children:[(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsxs)(`h4`,{className:`flex items-center gap-2 text-sm font-semibold text-foreground`,children:[e.name,(0,j.jsx)(E,{variant:e.installed?`success`:`secondary`,size:`sm`,children:e.installed?`Installed`:`Not Installed`})]}),(0,j.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,j.jsxs)(`span`,{children:[`Installed version: `,(0,j.jsx)(`code`,{className:`font-mono text-[10px] text-foreground`,children:e.currentVersion})]}),e.installed&&(0,j.jsxs)(`span`,{children:[`Latest: `,(0,j.jsx)(`code`,{className:`font-mono text-[10px] text-foreground`,children:e.latestVersion})]})]}),(0,j.jsx)(`p`,{className:`mt-1 font-mono text-[10px] text-muted-foreground`,children:e.updateCmd})]}),(0,j.jsx)(`div`,{className:`flex shrink-0 items-center gap-3`,children:e.updateAvailable?(0,j.jsx)(u,{size:`sm`,onClick:()=>f(e.id),disabled:l!==null,children:l===e.id?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(w,{className:`size-3`}),` Updating...`]}):`Update Tool`}):e.installed?(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsxs)(E,{variant:`success`,className:`gap-1.5`,children:[(0,j.jsx)(C,{size:12}),` Up to Date`]}),(0,j.jsx)(u,{variant:`outline`,size:`sm`,onClick:()=>f(e.id),disabled:l!==null,children:l===e.id?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(w,{className:`size-3`}),` Reinstalling...`]}):`Reinstall`})]}):(0,j.jsx)(u,{variant:`outline`,size:`sm`,onClick:()=>f(e.id),disabled:l!==null,children:l===e.id?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(w,{className:`size-3`}),` Installing...`]}):`Install CLI`})})]},e.id))})]}),(0,j.jsx)(`div`,{className:`mb-10 flex justify-end pt-4`,children:(0,j.jsxs)(u,{onClick:()=>a(e),disabled:!o,children:[(0,j.jsx)(C,{size:16}),` Save Configuration`]})})]})}export{K as SettingsPage};
@@ -1,6 +0,0 @@
1
- import{_ as e,b as t,g as n,h as r,m as i,t as a}from"./button-BDDZnIHx.js";import{o}from"./CSPContext-DBUu9tE0.js";import{t as ee}from"./chevron-down-qTL8HPug.js";import{a as s,c as te,i as ne,l as c,n as re,o as ie,r as l,s as u,t as ae,u as oe}from"./square-DlIYnlSq.js";import{t as d}from"./code-xml-jFAa3-TT.js";import{t as se}from"./cpu-Cdwd84Jz.js";import{t as f}from"./trash-2-CtR35_eF.js";import{t as p}from"./zap-CWG_Lvki.js";import{$ as ce,B as le,Bt as ue,Ht as de,Kt as fe,Lt as pe,N as me,Nt as he,V as ge,Wt as m,X as _e,Xt as ve,Z as ye,Zt as h,a as be,c as g,d as _,et as xe,f as v,l as y,o as b,ot as Se,p as x,s as S,st as Ce,zt as C}from"./index-C_rwnBzF.js";import{t as w}from"./badge-CAohJGj6.js";import{t as we}from"./card-BKXzd_5L.js";import{a as Te,i as Ee,n as De,r as Oe,t as ke}from"./empty-BdlgbifD.js";import{t as T}from"./label-CG5exjag.js";import{t as Ae}from"./textarea-ByfoCb54.js";var je=r(`arrow-right-left`,[[`path`,{d:`m16 3 4 4-4 4`,key:`1x1c3m`}],[`path`,{d:`M20 7H4`,key:`zbl0bi`}],[`path`,{d:`m8 21-4-4 4-4`,key:`h9nckh`}],[`path`,{d:`M4 17h16`,key:`g4d7ey`}]]),Me=r(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ne=r(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Pe=r(`pen`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),Fe=r(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),E=t(e(),1),D=n(),O={"git-pull-request":ie,"flask-conical":u,package:ne,database:c,"shield-check":l,terminal:C,zap:p,cpu:se,layers:s,boxes:h,code:d},Ie=[{label:`Blue`,value:`#3b82f6`},{label:`Green`,value:`#10b981`},{label:`Purple`,value:`#8b5cf6`},{label:`Amber`,value:`#f59e0b`},{label:`Red`,value:`#ef4444`},{label:`Cyan`,value:`#06b6d4`},{label:`Pink`,value:`#ec4899`},{label:`Emerald`,value:`#059669`}];function k({showToast:e}){let[t,n]=(0,E.useState)(`global`),[r,s]=(0,E.useState)(``),[ne,c]=(0,E.useState)({}),[ie,l]=(0,E.useState)(!1),[u,d]=(0,E.useState)(null),[se,p]=(0,E.useState)(!1),[C,k]=(0,E.useState)(null),[Le,A]=(0,E.useState)(!1),[j,M]=(0,E.useState)(`edit`),[Re,N]=(0,E.useState)(!1),[P,F]=(0,E.useState)(null),[ze,I]=(0,E.useState)(!1),[L,R]=(0,E.useState)(null),[z,Be]=(0,E.useState)(null),[Ve,B]=(0,E.useState)(null),{data:V=[],isLoading:He}=ce(),{data:H=[],isLoading:Ue}=xe(t===`global`?void 0:t),{data:We=[]}=Ce(),{data:U,isLoading:Ge,isError:Ke}=Se(t===`global`?``:t),[W,G]=(0,E.useState)(null),qe=ye(),Je=ge(),K=_e(),Ye=le(),q=me(),J=t!==`global`,Y=new Set(W??U?.enabledSkills??[]),X=!J||!Ge&&!Ke&&!!U;(0,E.useEffect)(()=>{if(!J){G(null);return}U&&G([...U.enabledSkills])},[J,t,U]);let Xe=e=>{c(t=>({...t,[e]:!t[e]}))},Z=H.filter(e=>{if(!r.trim())return!0;let t=r.toLowerCase();return e.title?.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.tags?.some(e=>e.toLowerCase().includes(t))}),Ze=V.reduce((e,t)=>(e[t.id]=Z.filter(e=>e.category===t.id),e),{}),Q=Z.filter(e=>!e.category||!V.some(t=>t.id===e.category)),Qe=e=>{d(e||{name:``,description:``,icon:`boxes`,color:`#3b82f6`,custom:!0}),l(!0)},$e=async()=>{if(!(!u||!u.name?.trim()))try{await qe.mutateAsync({id:u.id,name:u.name.trim(),description:u.description,icon:u.icon,color:u.color}),e?.(`Category saved successfully`,`success`),l(!1),d(null)}catch(t){e?.(`Failed to save category`,`error`),console.error(t)}},et=(e,t)=>{t.stopPropagation(),R({type:`category`,id:e.id,title:e.name}),I(!0)},$=(e,t)=>{k(e||{name:``,title:``,category:t||(V[0]?.id??`pull-requests`),description:``,tags:[],allowedTools:[],content:`# Skill Title
2
-
3
- Instructions and playbook for the AI assistant.
4
- `,custom:!0}),A(!!e),M(`edit`),p(!0)},tt=e=>{if(!C)return;let t={...C,title:e};!Le&&!C.id&&(t.name=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)),k(t)},nt=async()=>{if(!C||!C.name?.trim()||!C.description?.trim()||!C.content?.trim()){e?.(`Skill name, trigger description, and content are required`,`error`);return}try{await K.mutateAsync({id:C.id,name:C.name.trim(),title:C.title||C.name,category:C.category||`general`,description:C.description||``,tags:C.tags||[],allowedTools:C.allowedTools||[],content:C.content}),e?.(`Skill package saved successfully`,`success`),p(!1),k(null)}catch(t){e?.(`Failed to save skill`,`error`),console.error(t)}},rt=(e,t)=>{t.stopPropagation(),R({type:`skill`,id:e.id,title:e.title||e.name}),I(!0)},it=async()=>{if(L)try{L.type===`category`?(await Je.mutateAsync(L.id),e?.(`Category deleted`,`info`)):(await Ye.mutateAsync(L.id),e?.(`Skill package deleted`,`info`)),I(!1),R(null)}catch(t){e?.(`Failed to delete item`,`error`),console.error(t)}},at=e=>{if(!J||!X||W===null)return;let t=new Set(W);t.has(e)?t.delete(e):t.add(e),G(Array.from(t))},ot=()=>{if(!C||C.custom!==!1)return;let e=`${C.name}-copy`;k({...C,id:void 0,name:e,title:`${C.title||C.name} Copy`,allowedTools:[],custom:!0,sourcePath:void 0,references:void 0,scripts:void 0}),A(!0)},st=(e,t)=>{if(!J||!X||W===null)return;let n=Ze[e]||[],r=new Set(W);for(let e of n)t?r.add(e.id):r.delete(e.id);G(Array.from(r))},ct=async()=>{if(!(!U||W===null||!J))try{await q.mutateAsync({workspaceId:t,expectedRevision:U.revision??0,enabledSkills:W,enabledAgents:U.enabledAgents??[],enabledCategories:V.map(e=>e.id)}),e?.(`Skill selection saved. Refresh the workspace to apply it.`,`success`)}catch(t){e?.(t instanceof Error?t.message:`Failed to save skill selection`,`error`)}},lt=(e,t)=>{e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`move`,Be(t)},ut=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,Ve!==t&&B(t)},dt=()=>{B(null)},ft=async(t,n)=>{t.preventDefault(),B(null);let r=t.dataTransfer.getData(`text/plain`)||z;if(Be(null),!r)return;let i=H.find(e=>e.id===r);!i||!i.custom||J||i.category===n||(await K.mutateAsync({id:i.id,name:i.name,title:i.title,description:i.description,tags:i.tags,allowedTools:i.allowedTools,content:i.content,category:n}),e?.(`Skill re-categorized`,`success`))},pt=(e,t)=>{t.stopPropagation(),F(e),N(!0)},mt=async t=>{if(!P||P.category===t){N(!1),F(null);return}await K.mutateAsync({id:P.id,name:P.name,title:P.title,description:P.description,tags:P.tags,allowedTools:P.allowedTools,content:P.content,category:t}),e?.(`Skill moved to category`,`success`),N(!1),F(null)};return(0,D.jsxs)(`div`,{className:`flex-1 flex flex-col h-full overflow-hidden bg-background text-foreground`,children:[(0,D.jsxs)(`div`,{className:`p-6 border-b border-border flex flex-col sm:flex-row sm:items-center justify-between gap-4 bg-card/40 backdrop-blur-sm`,children:[(0,D.jsx)(`div`,{children:(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsx)(`div`,{className:`p-2 rounded-xl bg-primary/10 text-primary`,children:(0,D.jsx)(h,{className:`h-6 w-6`})}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h1`,{className:`text-xl font-bold tracking-tight`,children:`Skill Library`}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Create, organize, and assign reusable Agent Skill packages.`})]})]})}),(0,D.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,D.jsx)(a,{render:(0,D.jsx)(he,{to:`/agents`}),variant:`outline`,size:`sm`,children:`Codex Agents`}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 bg-muted/50 rounded-lg px-3 py-1.5 border border-border`,children:[(0,D.jsx)(fe,{className:`h-4 w-4 text-muted-foreground`}),(0,D.jsx)(T,{htmlFor:`skill-scope`,className:`text-xs font-medium text-muted-foreground`,children:`Scope:`}),(0,D.jsxs)(`select`,{id:`skill-scope`,value:t,onChange:e=>n(e.target.value),className:`bg-transparent text-xs font-semibold focus:outline-none cursor-pointer text-foreground`,children:[(0,D.jsx)(`option`,{value:`global`,className:`bg-popover text-popover-foreground`,children:`🌐 Global Skills Catalog`}),We.map(e=>(0,D.jsxs)(`option`,{value:e.id,className:`bg-popover text-popover-foreground`,children:[`📁 `,e.id,` (`,e.branchName,`)`]},e.id))]})]}),J&&(0,D.jsx)(a,{size:`sm`,onClick:ct,disabled:!X||q.isPending||W===null,children:q.isPending?`Saving…`:`Save selection`}),!J&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(a,{variant:`outline`,size:`sm`,onClick:()=>Qe(),className:`flex items-center gap-1.5`,children:[(0,D.jsx)(m,{className:`h-3.5 w-3.5`}),(0,D.jsx)(`span`,{children:`New Category`})]}),(0,D.jsxs)(a,{variant:`default`,size:`sm`,onClick:()=>$(),className:`flex items-center gap-1.5`,children:[(0,D.jsx)(ue,{className:`h-3.5 w-3.5`}),(0,D.jsx)(`span`,{children:`New Skill`})]})]})]})]}),(0,D.jsxs)(`div`,{className:`px-6 py-3 border-b border-border/60 bg-muted/20 flex items-center justify-between gap-4`,children:[(0,D.jsxs)(`div`,{className:`relative flex-1 max-w-md`,children:[(0,D.jsx)(de,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,D.jsx)(o,{value:r,onChange:e=>s(e.target.value),placeholder:`Search skills by keyword, tag, or tool...`,className:`pl-9 pr-8 h-9 text-xs`}),r&&(0,D.jsx)(`button`,{onClick:()=>s(``),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,children:(0,D.jsx)(pe,{className:`h-3.5 w-3.5`})})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,D.jsxs)(`span`,{children:[`Showing `,(0,D.jsx)(`strong`,{className:`text-foreground`,children:Z.length}),` of`,` `,(0,D.jsx)(`strong`,{className:`text-foreground`,children:H.length}),` skills`]}),J&&(0,D.jsxs)(w,{variant:`secondary`,className:`text-[10px] uppercase font-mono`,children:[`Workspace Mode (`,Y.size,` active)`]})]})]}),(0,D.jsx)(x,{className:`flex-1 p-6`,children:He||Ue||J&&Ge?(0,D.jsxs)(`div`,{className:`flex items-center justify-center p-12 gap-3 text-muted-foreground`,children:[(0,D.jsx)(be,{}),(0,D.jsx)(`span`,{className:`text-sm`,children:`Loading skills catalog...`})]}):J&&Ke?(0,D.jsx)(ke,{className:`py-12 border border-dashed rounded-xl`,children:(0,D.jsxs)(Oe,{children:[(0,D.jsx)(Te,{children:`Workspace resources could not be loaded`}),(0,D.jsx)(De,{children:`Assignment controls are disabled so an existing selection cannot be overwritten.`})]})}):Z.length===0&&r?(0,D.jsxs)(ke,{className:`py-12 border border-dashed rounded-xl`,children:[(0,D.jsx)(Ee,{children:(0,D.jsx)(de,{className:`h-8 w-8 text-muted-foreground/60`})}),(0,D.jsxs)(Oe,{children:[(0,D.jsx)(Te,{children:`No matching skills found`}),(0,D.jsxs)(De,{children:[`No skills matched your search query "`,r,`".`]})]}),(0,D.jsx)(a,{variant:`outline`,size:`sm`,onClick:()=>s(``),children:`Clear Search`})]}):(0,D.jsxs)(`div`,{className:`space-y-6 max-w-7xl mx-auto pb-12`,children:[V.map(e=>{let t=O[e.icon||`boxes`]||h,n=Ze[e.id]||[],r=!!ne[e.id],o=Ve===e.id,s=n.length>0&&n.every(e=>Y.has(e.id));return(0,D.jsxs)(`div`,{onDragOver:t=>ut(t,e.id),onDragLeave:dt,onDrop:t=>ft(t,e.id),className:i(`border rounded-xl transition-all duration-150 overflow-hidden bg-card/60`,o?`border-primary ring-2 ring-primary/20 bg-primary/5`:`border-border`),children:[(0,D.jsxs)(`div`,{role:`button`,tabIndex:0,"aria-expanded":!r,onClick:()=>Xe(e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),Xe(e.id))},className:`p-4 flex items-center justify-between cursor-pointer hover:bg-muted/40 transition-colors border-b border-border/40 select-none`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsx)(`div`,{className:`p-2 rounded-lg text-white shadow-sm flex items-center justify-center`,style:{backgroundColor:e.color||`#3b82f6`},children:(0,D.jsx)(t,{className:`h-4 w-4`})}),(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`h2`,{className:`font-semibold text-sm tracking-tight`,children:e.name}),(0,D.jsxs)(w,{variant:`outline`,className:`text-[10px] px-1.5 py-0`,children:[n.length,` `,n.length===1?`skill`:`skills`]}),e.isTemplate&&!e.custom&&(0,D.jsx)(w,{variant:`secondary`,className:`text-[9px] px-1 py-0 uppercase`,children:`Template`})]}),e.description&&(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:e.description})]})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,onClick:e=>e.stopPropagation(),children:[J&&n.length>0&&(0,D.jsxs)(a,{variant:`ghost`,size:`xs`,onClick:()=>st(e.id,!s),className:`h-7 text-xs mr-2 text-muted-foreground hover:text-foreground`,title:s?`Deselect all in category`:`Select all in category`,children:[s?(0,D.jsx)(re,{className:`h-3.5 w-3.5 mr-1 text-primary`}):(0,D.jsx)(ae,{className:`h-3.5 w-3.5 mr-1`}),(0,D.jsx)(`span`,{children:s?`Deselect All`:`Select All`})]}),!J&&(0,D.jsx)(a,{variant:`ghost`,size:`icon-xs`,onClick:()=>$(void 0,e.id),title:`Add skill to this category`,children:(0,D.jsx)(m,{className:`h-3.5 w-3.5`})}),!J&&(0,D.jsx)(a,{variant:`ghost`,size:`icon-xs`,onClick:()=>Qe(e),title:`Edit category`,children:(0,D.jsx)(Pe,{className:`h-3 w-3`})}),!J&&e.custom&&(0,D.jsx)(a,{variant:`ghost`,size:`icon-xs`,onClick:t=>et(e,t),title:`Delete category`,className:`text-destructive hover:text-destructive`,children:(0,D.jsx)(f,{className:`h-3 w-3`})}),(0,D.jsx)(`div`,{className:`p-1 text-muted-foreground`,children:r?(0,D.jsx)(oe,{className:`h-4 w-4`}):(0,D.jsx)(ee,{className:`h-4 w-4`})})]})]}),!r&&(0,D.jsx)(`div`,{className:`p-4 bg-background/50`,children:n.length===0?(0,D.jsxs)(`div`,{className:`border border-dashed border-border/80 rounded-lg p-6 text-center text-xs text-muted-foreground`,children:[`No skills in this category.`,!J&&(0,D.jsxs)(D.Fragment,{children:[` `,`Drag a custom skill here, or click`,` `,(0,D.jsx)(`button`,{onClick:()=>$(void 0,e.id),className:`text-primary underline font-medium`,children:`+ Add Skill`})]})]}):(0,D.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3.5`,children:n.map(e=>{let t=Y.has(e.id);return(0,D.jsxs)(we,{draggable:!J&&!!e.custom,onDragStart:t=>{!J&&e.custom&&lt(t,e.id)},onClick:()=>$(e),role:`button`,tabIndex:0,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),$(e))},className:i(`group relative cursor-pointer hover:border-primary/60 transition-all p-3.5 flex flex-col justify-between select-none shadow-sm`,J&&!t&&`opacity-60 bg-muted/20`,z===e.id&&`opacity-40 border-dashed`),children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground group-hover:text-foreground cursor-grab active:cursor-grabbing`,title:`Drag to reorder or re-categorize`,"aria-label":`Drag handle`,children:[(0,D.jsx)(Ne,{className:`h-3.5 w-3.5`}),(0,D.jsx)(`span`,{className:`font-mono text-xs font-bold text-foreground`,children:e.title||e.name})]}),J?(0,D.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),at(e.id)},disabled:!X||q.isPending,className:i(`h-5 px-2 rounded-md flex items-center gap-1 text-[10px] font-semibold transition-colors`,t?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-muted/80`),children:[(0,D.jsx)(ve,{className:i(`h-3 w-3`,!t&&`opacity-0`)}),(0,D.jsx)(`span`,{children:t?`Enabled`:`Disabled`})]}):(0,D.jsx)(w,{variant:`outline`,className:`text-[10px] font-mono`,children:e.custom?`Custom`:`Template`})]}),(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2 mb-3 leading-relaxed`,children:e.description||`No description provided.`})]}),(0,D.jsxs)(`div`,{className:`pt-2 border-t border-border/40 flex items-center justify-between gap-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap overflow-hidden`,children:[e.tags?.slice(0,2).map(e=>(0,D.jsxs)(`span`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded text-muted-foreground`,children:[`#`,e]},e)),e.allowedTools&&e.allowedTools.length>0&&(0,D.jsxs)(`span`,{className:`text-[10px] text-muted-foreground flex items-center gap-0.5 font-mono`,children:[(0,D.jsx)(Fe,{className:`h-2.5 w-2.5`}),e.allowedTools.length]})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,onClick:e=>e.stopPropagation(),children:[!J&&e.custom&&(0,D.jsx)(a,{variant:`ghost`,size:`icon-xs`,onClick:t=>pt(e,t),title:`Move to another category`,className:`h-6 w-6 text-muted-foreground hover:text-foreground`,children:(0,D.jsx)(je,{className:`h-3 w-3`})}),!J&&e.custom&&(0,D.jsx)(a,{variant:`ghost`,size:`icon-xs`,onClick:t=>rt(e,t),title:`Delete skill`,className:`h-6 w-6 text-destructive hover:text-destructive`,children:(0,D.jsx)(f,{className:`h-3 w-3`})})]})]})]},e.id)})})})]},e.id)}),Q.length>0&&(0,D.jsxs)(`div`,{className:`border border-border/80 rounded-xl overflow-hidden bg-card/60`,children:[(0,D.jsx)(`div`,{className:`p-4 bg-muted/30 border-b border-border/40 flex items-center justify-between`,children:(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(h,{className:`h-4 w-4 text-muted-foreground`}),(0,D.jsx)(`h2`,{className:`font-semibold text-sm`,children:`Uncategorized Skills`}),(0,D.jsx)(w,{variant:`outline`,className:`text-[10px]`,children:Q.length})]})}),(0,D.jsx)(`div`,{className:`p-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3.5`,children:Q.map(e=>(0,D.jsxs)(we,{onClick:()=>$(e),role:`button`,tabIndex:0,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),$(e))},className:`p-3.5 cursor-pointer hover:border-primary/60`,children:[(0,D.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,D.jsx)(`div`,{className:`font-mono text-xs font-bold`,children:e.title||e.name}),J&&(0,D.jsx)(a,{size:`xs`,variant:Y.has(e.id)?`default`:`outline`,disabled:!X||q.isPending,onClick:t=>{t.stopPropagation(),at(e.id)},children:Y.has(e.id)?`Enabled`:`Disabled`})]}),(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]},e.id))})]})]})}),(0,D.jsx)(b,{open:ie,onOpenChange:l,children:(0,D.jsxs)(_,{className:`sm:max-w-lg`,children:[(0,D.jsxs)(y,{children:[(0,D.jsx)(v,{children:u?.id?`Edit Skill Category`:`Create Skill Category`}),(0,D.jsx)(S,{children:`Categories group related procedural skills and agent tools into clean visual boxes.`})]}),(0,D.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`cat-name`,className:`text-xs font-medium`,children:`Category Name`}),(0,D.jsx)(o,{id:`cat-name`,value:u?.name||``,onChange:e=>d(t=>t?{...t,name:e.target.value}:null),placeholder:`e.g. Pull Requests & Review`,className:`mt-1 text-xs`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`cat-desc`,className:`text-xs font-medium`,children:`Description`}),(0,D.jsx)(o,{id:`cat-desc`,value:u?.description||``,onChange:e=>d(t=>t?{...t,description:e.target.value}:null),placeholder:`Brief summary of what skills belong in this box...`,className:`mt-1 text-xs`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{className:`text-xs font-medium`,children:`Icon`}),(0,D.jsx)(`div`,{className:`grid grid-cols-6 gap-2 mt-1.5`,children:Object.keys(O).map(e=>{let t=O[e];return(0,D.jsx)(`button`,{type:`button`,onClick:()=>d(t=>t?{...t,icon:e}:null),className:i(`p-2.5 rounded-lg border flex items-center justify-center transition-colors`,(u?.icon||`boxes`)===e?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-muted text-muted-foreground`),children:(0,D.jsx)(t,{className:`h-4 w-4`})},e)})})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{className:`text-xs font-medium`,children:`Color Accent`}),(0,D.jsx)(`div`,{className:`flex items-center gap-2 mt-1.5 flex-wrap`,children:Ie.map(e=>{let t=u?.color===e.value;return(0,D.jsx)(`button`,{type:`button`,"aria-label":`Select color ${e.label}`,onClick:()=>d(t=>t?{...t,color:e.value}:null),className:i(`w-7 h-7 rounded-full transition-transform flex items-center justify-center shadow-sm`,t?`scale-110 ring-2 ring-primary ring-offset-2`:`hover:scale-105`),style:{backgroundColor:e.value},children:t&&(0,D.jsx)(ve,{className:`h-3.5 w-3.5 text-white`})},e.value)})})]})]}),(0,D.jsxs)(g,{children:[(0,D.jsx)(a,{variant:`outline`,size:`sm`,onClick:()=>l(!1),children:`Cancel`}),(0,D.jsx)(a,{variant:`default`,size:`sm`,onClick:$e,disabled:!u?.name?.trim(),children:`Save Category`})]})]})}),(0,D.jsx)(b,{open:se,onOpenChange:p,children:(0,D.jsxs)(_,{className:`sm:max-w-3xl max-h-[90vh] flex flex-col`,children:[(0,D.jsx)(y,{children:(0,D.jsxs)(`div`,{className:`flex items-center justify-between pr-6`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(v,{children:C?.id?`Edit Skill Package`:`Create New Skill`}),(0,D.jsx)(S,{children:`Configure SKILL.md metadata triggers and markdown playbook instructions.`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted/60 p-1 rounded-lg border border-border text-xs`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:()=>M(`edit`),className:i(`px-2.5 py-1 rounded-md flex items-center gap-1 font-medium transition-colors`,j===`edit`?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:[(0,D.jsx)(te,{className:`h-3.5 w-3.5`}),(0,D.jsx)(`span`,{children:`Edit`})]}),(0,D.jsxs)(`button`,{type:`button`,onClick:()=>M(`preview`),className:i(`px-2.5 py-1 rounded-md flex items-center gap-1 font-medium transition-colors`,j===`preview`?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:[(0,D.jsx)(Me,{className:`h-3.5 w-3.5`}),(0,D.jsx)(`span`,{children:`Preview`})]})]})]})}),(0,D.jsx)(x,{className:`flex-1 pr-4 py-2`,children:j===`edit`?(0,D.jsxs)(`div`,{className:`space-y-4`,children:[(0,D.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`skill-title`,className:`text-xs font-medium`,children:`Display Title`}),(0,D.jsx)(o,{id:`skill-title`,value:C?.title||``,onChange:e=>tt(e.target.value),placeholder:`e.g. Pull Request Reviewer`,className:`mt-1 text-xs`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`skill-name`,className:`text-xs font-medium`,children:`Identifier (Slug)`}),(0,D.jsx)(o,{id:`skill-name`,value:C?.name||``,disabled:!!C?.id,onChange:e=>{A(!0),k(t=>t?{...t,name:e.target.value}:null)},placeholder:`e.g. pr-review-toolkit`,className:`mt-1 text-xs font-mono`})]})]}),(0,D.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`skill-cat`,className:`text-xs font-medium`,children:`Category Box`}),(0,D.jsx)(`select`,{id:`skill-cat`,value:C?.category||``,onChange:e=>k(t=>t?{...t,category:e.target.value}:null),className:`mt-1 w-full bg-background border border-border rounded-md px-3 py-2 text-xs focus:outline-none focus:ring-1 focus:ring-primary`,children:V.map(e=>(0,D.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`skill-tags`,className:`text-xs font-medium`,children:`Tags (comma separated)`}),(0,D.jsx)(o,{id:`skill-tags`,value:C?.tags?.join(`, `)||``,onChange:e=>k(t=>t?{...t,tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)}:null),placeholder:`e.g. git, pr, quality`,className:`mt-1 text-xs font-mono`})]})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`skill-desc`,className:`text-xs font-medium`,children:`Trigger Description (for AI Autonomous Discovery)`}),(0,D.jsx)(o,{id:`skill-desc`,value:C?.description||``,onChange:e=>k(t=>t?{...t,description:e.target.value}:null),placeholder:`e.g. Use when reviewing PR diffs or when user asks for a PR audit...`,className:`mt-1 text-xs`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(T,{htmlFor:`skill-content`,className:`text-xs font-medium`,children:`Playbook Instructions (Markdown)`}),(0,D.jsx)(Ae,{id:`skill-content`,value:C?.content||``,onChange:e=>k(t=>t?{...t,content:e.target.value}:null),rows:12,placeholder:`# Playbook Title
5
-
6
- Detailed instructions for the AI assistant...`,className:`mt-1 font-mono text-xs leading-relaxed`})]})]}):(0,D.jsxs)(`div`,{className:`p-4 border rounded-xl bg-card/40 prose prose-sm dark:prose-invert max-w-none`,children:[(0,D.jsxs)(`div`,{className:`mb-4 pb-3 border-b`,children:[(0,D.jsx)(`h2`,{className:`text-lg font-bold m-0`,children:C?.title||C?.name}),(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground m-0 mt-1`,children:C?.description})]}),(0,D.jsx)(`pre`,{className:`text-xs whitespace-pre-wrap font-sans bg-transparent p-0 border-0`,children:C?.content||`*(No playbook markdown provided)*`})]})}),(0,D.jsxs)(g,{className:`mt-4 pt-3 border-t`,children:[(0,D.jsx)(a,{variant:`outline`,size:`sm`,onClick:()=>p(!1),children:`Cancel`}),(0,D.jsx)(a,{variant:`default`,size:`sm`,onClick:C?.custom===!1?ot:nt,disabled:!C?.name?.trim()||!C?.description?.trim()||!C?.content?.trim(),children:C?.custom===!1?`Create editable copy`:`Save Skill`})]})]})}),(0,D.jsx)(b,{open:Re,onOpenChange:N,children:(0,D.jsxs)(_,{className:`sm:max-w-md`,children:[(0,D.jsxs)(y,{children:[(0,D.jsx)(v,{children:`Move Skill to Category`}),(0,D.jsxs)(S,{children:[`Select the destination category box for "`,P?.title||P?.name,`".`]})]}),(0,D.jsx)(`div`,{className:`space-y-2 py-2`,children:V.map(e=>{let t=O[e.icon||`boxes`]||h,n=P?.category===e.id;return(0,D.jsxs)(`button`,{type:`button`,onClick:()=>mt(e.id),className:i(`w-full p-3 rounded-lg border text-left flex items-center justify-between transition-colors`,n?`border-primary bg-primary/10`:`border-border hover:bg-muted/50 text-foreground`),children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsx)(`div`,{className:`p-1.5 rounded text-white flex items-center justify-center`,style:{backgroundColor:e.color||`#3b82f6`},children:(0,D.jsx)(t,{className:`h-4 w-4`})}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`font-semibold text-xs`,children:e.name}),e.description&&(0,D.jsx)(`div`,{className:`text-[11px] text-muted-foreground line-clamp-1`,children:e.description})]})]}),n&&(0,D.jsx)(w,{variant:`secondary`,className:`text-[10px]`,children:`Current`})]},e.id)})}),(0,D.jsx)(g,{children:(0,D.jsx)(a,{variant:`outline`,size:`sm`,onClick:()=>N(!1),children:`Cancel`})})]})}),(0,D.jsx)(b,{open:ze,onOpenChange:I,children:(0,D.jsxs)(_,{className:`sm:max-w-md`,children:[(0,D.jsxs)(y,{children:[(0,D.jsxs)(v,{className:`text-destructive`,children:[`Delete `,L?.type===`category`?`Category`:`Skill`]}),(0,D.jsxs)(S,{children:[`Are you sure you want to delete "`,L?.title,`"? This action cannot be undone.`]})]}),(0,D.jsxs)(g,{className:`mt-4`,children:[(0,D.jsx)(a,{variant:`outline`,size:`sm`,onClick:()=>I(!1),children:`Cancel`}),(0,D.jsx)(a,{variant:`destructive`,size:`sm`,onClick:it,children:`Delete Permanently`})]})]})})]})}export{k as SkillsPage};
@@ -1 +0,0 @@
1
- import{_ as e,b as t,g as n,h as r,m as i,t as a}from"./button-BDDZnIHx.js";import{o}from"./CSPContext-DBUu9tE0.js";import{t as s}from"./bot-C2HWrAft.js";import{t as c}from"./chevron-down-qTL8HPug.js";import{t as l}from"./code-xml-jFAa3-TT.js";import{n as u,r as d,t as f}from"./ScaffoldRepoInline-ywcpq9PX.js";import{t as p}from"./git-branch-Cfj9D8yW.js";import{t as m}from"./zap-CWG_Lvki.js";import{At as h,Bt as ee,Ct as g,D as _,Dt as v,E as y,Et as b,Ft as x,G as te,It as S,J as ne,Jt as C,Kt as re,L as w,M as ie,Nt as ae,O as oe,Ot as T,P as E,St as D,T as se,Tt as ce,Ut as O,Xt as k,Yt as A,Zt as le,a as j,ct as M,d as ue,et as de,f as N,it as fe,j as pe,jt as P,k as me,kt as he,l as F,n as ge,nt as _e,o as I,q as L,qt as ve,rt as R,s as z,t as B,tn as ye,u as V,zt as H}from"./index-C_rwnBzF.js";import{t as be}from"./badge-CAohJGj6.js";import{a as xe,i as Se,n as Ce,r as U,t as we}from"./empty-BdlgbifD.js";import{t as Te}from"./textarea-ByfoCb54.js";import{n as Ee,t as De}from"./vsc-DFh0-53h.js";var Oe=r(`app-window`,[[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}],[`path`,{d:`M10 4v4`,key:`pp8u80`}],[`path`,{d:`M2 8h20`,key:`d11cs7`}],[`path`,{d:`M6 4v4`,key:`1svtjw`}]]),W=r(`orbit`,[[`path`,{d:`M20.341 6.484A10 10 0 0 1 10.266 21.85`,key:`1enhxb`}],[`path`,{d:`M3.659 17.516A10 10 0 0 1 13.74 2.152`,key:`1crzgf`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`circle`,{cx:`19`,cy:`5`,r:`2`,key:`mhkx31`}],[`circle`,{cx:`5`,cy:`19`,r:`2`,key:`v8kfzx`}]]),ke=r(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),G=t(e(),1),Ae={status:`idle`,steps:[]};function je(){let[e,t]=(0,G.useState)(Ae),n=(0,G.useRef)(null),r=(0,G.useRef)(null),i=ye(),a=(0,G.useCallback)(()=>{n.current?.close(),n.current=null,r.current=null},[]);return(0,G.useEffect)(()=>a,[a]),{progress:e,start:(0,G.useCallback)(e=>{if(n.current&&r.current===e)return;a(),r.current=e,t({status:`running`,steps:[]});let o=new EventSource(`/api/workspace/create-stream/${encodeURIComponent(e)}`);n.current=o;let s=0;o.addEventListener(`progress`,r=>{if(n.current===o){s=0;try{let n=JSON.parse(r.data);t({status:n.status===`completed`||n.status===`failed`?n.status:`running`,steps:n.steps??[],error:n.error,workspacePath:n.workspacePath,workspaceId:n.feature?.id??e}),(n.status===`completed`||n.status===`failed`)&&(a(),i.invalidateQueries({queryKey:[`workspaces`]}),i.invalidateQueries({queryKey:[`workspaces-status`]}))}catch{}}}),o.onerror=()=>{n.current===o&&(s+=1,!(o.readyState!==EventSource.CLOSED&&s<5)&&(t(e=>e.status===`running`?{...e,status:`unavailable`,error:e.error??`Unable to reconnect to the creation stream. The workspace may still have been created.`}:e),a(),i.invalidateQueries({queryKey:[`workspaces`]}),i.invalidateQueries({queryKey:[`workspaces-status`]})))}},[a,i]),reset:(0,G.useCallback)(()=>{a(),t(Ae)},[a])}}var K=n(),Me=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,q={codex:P,claude:D,vscode:De,"vscode-insiders":Ee,cursor:g,antigravity:W,powershell:H,cmd:H,terminal:H,intellij:ce,webstorm:T,pycharm:b,sublime:v,zed:h,windsurf:he},J={codex:`bg-foreground text-background`,claude:`bg-[#D97757] text-white`,vscode:`bg-[#007ACC] text-white`,"vscode-insiders":`bg-[#24A148] text-white`,cursor:`bg-zinc-950 text-white dark:bg-white dark:text-zinc-950`,antigravity:`bg-violet-600 text-white`,powershell:`bg-sky-700 text-white`,cmd:`bg-zinc-800 text-amber-400`,terminal:`bg-zinc-800 text-emerald-400`,intellij:`bg-fuchsia-600 text-white`,webstorm:`bg-cyan-600 text-white`,pycharm:`bg-lime-600 text-zinc-950`,sublime:`bg-orange-500 text-white`,zed:`bg-red-600 text-white`,windsurf:`bg-teal-600 text-white`};function Y({icon:e}){let t=q[e]??l;return(0,K.jsx)(`span`,{className:i(`grid size-10 shrink-0 place-items-center rounded-xl shadow-sm`,J[e]),"aria-hidden":`true`,children:(0,K.jsx)(t,{className:`size-5`})})}function Ne({target:e,busy:t,launching:n,preferred:r,onLaunch:a}){return(0,K.jsxs)(`button`,{type:`button`,disabled:!e.available||t,onClick:()=>a(e),"aria-label":`Open workspace in ${e.name}`,className:i(`flex min-h-20 w-full items-center gap-3 rounded-xl border p-3 text-left outline-none transition-colors`,`focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,`cursor-pointer border-border bg-card hover:border-primary/40 hover:bg-accent/60`),children:[(0,K.jsx)(Y,{icon:e.icon}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),n?(0,K.jsx)(j,{className:`size-4`}):r?(0,K.jsx)(be,{size:`sm`,variant:`secondary`,children:`Preferred`}):null]}),(0,K.jsx)(`span`,{className:`mt-0.5 block text-xs leading-relaxed text-muted-foreground`,children:e.description})]})]})}function Pe({session:e,busy:t,launching:n,onResume:r}){let a=e.desktopHandoff.method===`direct`,o=a?`Codex Desktop`:`Claude Desktop`;return(0,K.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>r(e),"aria-label":a?`Resume ${e.title} in Codex Desktop`:`Move ${e.title} to Claude Desktop`,className:i(`flex min-h-20 w-full cursor-pointer items-center gap-3 rounded-xl border border-primary/25 bg-primary/5 p-3 text-left outline-none transition-colors`,`hover:border-primary/45 hover:bg-primary/10 focus-visible:ring-2 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-65`),children:[(0,K.jsx)(Y,{icon:a?`codex`:`claude`}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium text-foreground`,title:e.title,children:e.title}),n?(0,K.jsx)(j,{className:`size-4 shrink-0`}):a?(0,K.jsx)(ve,{className:`size-4 shrink-0 text-muted-foreground`}):(0,K.jsx)(C,{className:`size-4 shrink-0 text-muted-foreground`})]}),(0,K.jsxs)(`span`,{className:`mt-0.5 block text-xs leading-relaxed text-muted-foreground`,children:[a?`Open this existing task in ${o}`:`Resume in Claude Code, then type /desktop`,` · `,new Date(e.updatedAt).toLocaleString()]})]})]})}function Fe({workspaceId:e,workspacePath:t,isVsCode:n=!1,className:r}){let[i,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),[l,u]=(0,G.useState)(null),[d,f]=(0,G.useState)(null),p=(0,G.useRef)(!1),m=R(),h=fe(e,i),ee=E().data?.config,g=m.data?.filter(e=>e.available)??[],_=g.filter(e=>e.kind===`ai-app`),v=ee?.defaultEditor?{code:`vscode`,"code-insiders":`vscode-insiders`,cursor:`cursor`,antigravity:`antigravity`,idea:`intellij`,webstorm:`webstorm`,charm:`pycharm`,subl:`sublime`,zed:`zed`,windsurf:`windsurf`}[ee.defaultEditor]:void 0,y=g.filter(e=>e.kind===`editor`).toSorted((e,t)=>Number(t.id===v)-Number(e.id===v)),b=new Set(g.map(e=>e.id)),x=(h.data??[]).filter(e=>e.desktopHandoff&&b.has(e.desktopHandoff.targetId)),te=n||g.length>0,S=async t=>{if(!p.current){p.current=!0,u(null),f(null),c(t.id);try{await M(`/api/workspace/${encodeURIComponent(e)}/launch`,{method:`POST`,body:JSON.stringify({targetId:t.id})}),o(!1)}catch(e){u(e instanceof Error?e.message:String(e)),await m.refetch()}finally{c(null),p.current=!1}}},ne=async t=>{if(!(p.current||!t.desktopHandoff||!Me.test(t.id))){p.current=!0,u(null),f(null),c(`session:${t.id}`);try{if(t.desktopHandoff.method===`guided`){await B(`claude --resume ${t.id}`),f(`Claude resume command copied. With a Claude subscription login, run it in this workspace, then type /desktop in Claude to move the session into Claude Desktop.`);return}await M(`/api/workspace/${encodeURIComponent(e)}/launch`,{method:`POST`,body:JSON.stringify({targetId:t.desktopHandoff.targetId,action:`resume`,sessionId:t.id})}),o(!1)}catch(e){u(e instanceof Error?e.message:String(e)),await Promise.all([m.refetch(),h.refetch()])}finally{c(null),p.current=!1}}},C=()=>{window.parent.postMessage({type:`openWorkspaceFolder`,workspacePath:t},`*`),o(!1)},re=()=>Promise.all([m.refetch(),h.refetch()]),w=m.isFetching||h.isFetching;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(a,{variant:`outline`,className:r,onClick:()=>o(!0),children:[(0,K.jsx)(ke,{}),`Open with…`]}),(0,K.jsx)(I,{open:i,onOpenChange:e=>{o(e),e||(u(null),f(null))},children:(0,K.jsxs)(ue,{className:`max-w-2xl`,"aria-busy":s!==null,children:[(0,K.jsxs)(F,{children:[(0,K.jsx)(N,{children:`Open workspace with…`}),(0,K.jsx)(z,{children:`Continue recent AI work or start in an installed coding app or editor. AI apps may use their own online services.`})]}),(0,K.jsxs)(V,{className:`space-y-5`,children:[l&&(0,K.jsx)(`div`,{role:`alert`,className:`rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive-foreground`,children:l}),d&&(0,K.jsx)(`div`,{role:`status`,className:`rounded-lg border border-primary/25 bg-primary/5 px-3 py-2 text-sm text-foreground`,children:d}),h.isLoading?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,"aria-live":`polite`,children:[(0,K.jsx)(j,{className:`size-4`}),` Checking recent sessions…`]}):x.length>0?(0,K.jsxs)(`section`,{"aria-labelledby":`recent-sessions-heading`,children:[(0,K.jsx)(`h3`,{id:`recent-sessions-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`Continue recent work`}),(0,K.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:x.map(e=>(0,K.jsx)(Pe,{session:e,busy:s!==null,launching:s===`session:${e.id}`,onResume:ne},`${e.assistant}:${e.id}`))})]}):h.isError?(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Recent sessions could not be checked. Starting new work is still available.`}):null,n&&(0,K.jsxs)(`section`,{"aria-labelledby":`current-editor-heading`,children:[(0,K.jsx)(`h3`,{id:`current-editor-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`Current window`}),(0,K.jsxs)(`button`,{type:`button`,disabled:s!==null,onClick:C,className:`flex min-h-20 w-full cursor-pointer items-center gap-3 rounded-xl border border-primary/30 bg-primary/5 p-3 text-left outline-none transition-colors hover:bg-primary/10 focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-65`,children:[(0,K.jsx)(Y,{icon:`vscode`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`block font-medium`,children:`Current VS Code window`}),(0,K.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`,children:`Open through the installed NexusFlow extension.`})]})]})]}),m.isLoading?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-8 text-sm text-muted-foreground`,"aria-live":`polite`,children:[(0,K.jsx)(j,{}),` Checking apps on this computer…`]}):m.isError?(0,K.jsx)(`div`,{role:`alert`,className:`rounded-lg border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive-foreground`,children:m.error instanceof Error?m.error.message:`Could not check available apps.`}):(0,K.jsxs)(K.Fragment,{children:[_.length>0&&(0,K.jsxs)(`section`,{"aria-labelledby":`ai-apps-heading`,children:[(0,K.jsx)(`h3`,{id:`ai-apps-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`AI coding apps`}),(0,K.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:_.map(e=>(0,K.jsx)(Ne,{target:e,busy:s!==null,launching:s===e.id,onLaunch:S},e.id))})]}),y.length>0&&(0,K.jsxs)(`section`,{"aria-labelledby":`editors-heading`,children:[(0,K.jsx)(`h3`,{id:`editors-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`Code editors`}),(0,K.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:y.map(e=>(0,K.jsx)(Ne,{target:e,busy:s!==null,launching:s===e.id,preferred:e.id===v,onLaunch:S},e.id))})]}),!te&&(0,K.jsx)(we,{className:`rounded-xl border border-dashed py-8 md:p-8`,children:(0,K.jsxs)(U,{children:[(0,K.jsx)(Se,{variant:`icon`,children:(0,K.jsx)(Oe,{})}),(0,K.jsx)(xe,{className:`text-base`,children:`No compatible apps detected`}),(0,K.jsx)(Ce,{children:`Install a supported coding app or add its command to PATH, then recheck.`})]})})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-border pt-3`,children:[(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,"aria-live":`polite`,children:w?`Checking recent sessions and apps…`:`Can’t find your app or session? Recheck detection.`}),(0,K.jsxs)(a,{size:`sm`,variant:`ghost`,onClick:()=>void re(),disabled:w||s!==null,children:[(0,K.jsx)(O,{className:w?`animate-spin`:``}),`Recheck`]})]})]})]})})]})}var Ie=`__ad-hoc__`,Le=new URLSearchParams(window.location.search).get(`env`)===`vscode`,Re=[{value:`in-place`,icon:m,title:`In-place`,body:`Work directly in the source repos. No branches or worktrees — fastest start.`},{value:`worktree`,icon:p,title:`Isolated worktrees`,body:`A feature branch and worktree per repo. Your source checkouts stay untouched.`}];function ze({repo:e,value:t,onChange:n,enabled:r}){let i=L(e.path,r),a=(0,G.useMemo)(()=>[...new Set([...i.data?.local??[],...i.data?.remote??[]])],[i.data]),s=`branches-${e.path.replace(/[^a-zA-Z0-9]/g,`-`)}`;return(0,K.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`w-40 shrink-0 truncate text-xs`,children:e.name}),(0,K.jsx)(o,{list:s,value:t,onChange:e=>n(e.target.value),placeholder:`existing branch (must exist)`,className:`h-7 font-mono text-xs`}),(0,K.jsx)(`datalist`,{id:s,children:a.map(e=>(0,K.jsx)(`option`,{value:e},e))})]})}function Be({step:e}){return(0,K.jsxs)(`li`,{className:`flex items-center gap-3 py-2`,children:[(0,K.jsx)(`span`,{className:i(`grid size-5 shrink-0 place-items-center rounded-full border`,e.status===`completed`&&`border-success bg-success/15 text-success-foreground`,e.status===`running`&&`border-primary text-primary`,e.status===`failed`&&`border-destructive bg-destructive/15 text-destructive-foreground`,e.status===`pending`&&`border-border text-muted-foreground`),children:e.status===`completed`?(0,K.jsx)(k,{className:`size-3`}):e.status===`running`?(0,K.jsx)(j,{className:`size-3`}):e.status===`failed`?(0,K.jsx)(A,{className:`size-3`}):null}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium`,children:e.name}),(0,K.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:e.message})]})]})}function Ve(){let e=x(),[t,n]=S(),r=te(),l=ne(),p=ie(),m=_e(),h=de(),g=pe(),v=w(),{progress:b,start:C,reset:T}=je(),E=t.get(`job`),[D,ce]=(0,G.useState)(t.get(`project`)??Ie),[O,k]=(0,G.useState)(`in-place`),[A,ue]=(0,G.useState)(``),[N,fe]=(0,G.useState)(``),[P,he]=(0,G.useState)(``),[F,I]=(0,G.useState)([]),[L,ve]=(0,G.useState)(!1),[R,z]=(0,G.useState)([]),[B,ye]=(0,G.useState)([]),[V,H]=(0,G.useState)([]),[xe,Se]=(0,G.useState)(``),[Ce,U]=(0,G.useState)(``),[we,Ee]=(0,G.useState)(!1),[De,Oe]=(0,G.useState)(null),[W,ke]=(0,G.useState)({}),[Ae,Me]=(0,G.useState)(!1),[q,J]=(0,G.useState)(null);(0,G.useEffect)(()=>{E?C(E):T()},[E,T,C]);let Y=()=>{T(),n(e=>{let t=new URLSearchParams(e);return t.delete(`job`),t},{replace:!0})},Ne=()=>{let e=new URL(window.location.href);e.hash=`#/new`,window.location.replace(e.toString())},Pe=()=>{E&&C(E)},Ve=(0,G.useRef)(!1);(0,G.useEffect)(()=>{!Ve.current&&p.data&&(Ve.current=!0,z(p.data.filter(e=>e.detected).map(e=>e.name)))},[p.data]);let X=(0,G.useMemo)(()=>(r.data??[]).find(e=>e.id===D)??null,[r.data,D]),Z=(0,G.useMemo)(()=>X?X.repos.map(e=>({name:ge(e.path),path:e.path,defaultBranch:e.defaultBranch})):(l.data??[]).filter(e=>F.includes(e.path)),[X,l.data,F]),Q=O===`in-place`,He=(Q?N.trim().length>0:A.trim().length>0)&&Z.length>0&&P.trim().length>0,Ue=e=>{Se(e),Oe(null);let t=(m.data??[]).find(t=>t.id===e);U(t?.content??``)},We=async()=>{if(!P.trim()){J(`Describe what you are building first — the suggestion is based on it.`);return}J(null),Ee(!0);try{let e=await M(`/api/workspace/suggest-workflow`,{method:`POST`,body:JSON.stringify({description:P,repos:Z})});Se(e.suggestedWorkflowId),U(e.customInstructions),Oe(e.difficulty)}catch(e){J(e instanceof Error?e.message:String(e))}finally{Ee(!1)}},Ge=(0,G.useRef)(!1),Ke=async()=>{if(Ge.current||v.isPending||!He)return;Ge.current=!0,J(null);let e={mode:O,projectId:X?.id,...Q?{name:N.trim()}:{branchName:A.trim()},description:P.trim(),repos:Z.map(e=>({...e,existingBranch:!Q&&W[e.path]?.trim()?W[e.path].trim():void 0})),assistants:R,enabledSkills:B.length>0?B:void 0,enabledAgents:V.length>0?V:void 0,teamworkInstructions:Ce.trim()||void 0};try{let{jobId:t}=await v.mutateAsync(e);C(t),n(e=>{let n=new URLSearchParams(e);return n.set(`job`,t),n},{replace:!0})}catch(e){J(e instanceof Error?e.message:String(e))}finally{Ge.current=!1}},$=b.status===`idle`&&E?{status:`running`,steps:[]}:b;if($.status!==`idle`){let t=$.steps.find(e=>e.status===`failed`);return(0,K.jsxs)(`div`,{className:`mx-auto max-w-xl animate-fade-in`,children:[(0,K.jsx)(`h1`,{className:`text-xl font-semibold`,children:$.status===`running`?`Setting up your workspace…`:$.status===`completed`?`Workspace ready`:$.status===`failed`?`Workspace creation failed`:`Unable to reconnect to workspace setup`}),(0,K.jsx)(`ul`,{"aria-live":`polite`,"aria-relevant":`additions text`,className:`mt-6 divide-y divide-border rounded-xl border border-border bg-card px-4`,children:$.steps.length>0?$.steps.map(e=>(0,K.jsx)(Be,{step:e},e.id)):(0,K.jsxs)(`li`,{className:`flex items-center gap-3 py-3.5`,children:[(0,K.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary`,children:(0,K.jsx)(j,{className:`size-3`})}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium`,children:`Connecting to workspace setup…`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Waiting for creation progress…`})]})]})}),($.status===`failed`||$.status===`unavailable`)&&(0,K.jsx)(`p`,{className:`mt-4 text-sm text-destructive-foreground`,children:t?.message??$.error??`Something went wrong.`}),$.status===`completed`&&$.workspacePath&&(0,K.jsx)(`p`,{className:`mt-4 truncate font-mono text-xs text-muted-foreground`,children:$.workspacePath}),q&&(0,K.jsx)(`p`,{className:`mt-2 text-sm text-destructive-foreground`,children:q}),(0,K.jsxs)(`div`,{"data-testid":`workspace-ready-actions`,className:`mt-6 flex min-w-0 flex-col gap-2 sm:flex-row sm:flex-wrap`,children:[$.status===`completed`&&$.workspaceId&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(a,{className:`w-full min-w-0 whitespace-normal sm:w-auto`,onClick:()=>e(`/workspaces/${encodeURIComponent($.workspaceId)}`),children:`Open workspace`}),$.workspacePath&&(0,K.jsx)(Fe,{workspaceId:$.workspaceId,workspacePath:$.workspacePath,isVsCode:Le,className:`w-full min-w-0 whitespace-normal sm:w-auto`})]}),$.status===`failed`&&(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(a,{variant:`default`,onClick:Y,children:`Back to form (edit & retry)`}),(0,K.jsx)(a,{variant:`outline`,onClick:Ne,children:`Start over (clear form)`})]}),$.status===`unavailable`&&(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(a,{variant:`default`,onClick:Pe,children:`Try reconnecting`}),(0,K.jsx)(a,{variant:`outline`,onClick:Y,children:`Back to form`})]}),$.status===`running`&&(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This can take a moment for large repositories.`}),(0,K.jsx)(a,{variant:`outline`,size:`sm`,onClick:Y,children:`Return to form`})]})]})]})}return(0,K.jsxs)(`div`,{className:`mx-auto max-w-xl animate-fade-in`,children:[(0,K.jsxs)(`header`,{className:`mb-6`,children:[(0,K.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Start work`}),(0,K.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Pick where the work happens and how isolated it should be.`})]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`span`,{className:`mb-1.5 block text-sm font-medium`,children:`Project`}),(0,K.jsxs)(se,{value:D,onValueChange:e=>typeof e==`string`&&ce(e),children:[(0,K.jsx)(oe,{className:`w-full`,"aria-label":`Project`,children:(0,K.jsx)(me,{children:X?X.name:`Ad-hoc — pick repositories manually`})}),(0,K.jsxs)(_,{alignItemWithTrigger:!1,children:[(r.data??[]).map(e=>(0,K.jsx)(y,{value:e.id,children:e.name},e.id)),(0,K.jsx)(y,{value:Ie,children:`Ad-hoc — pick repositories manually`})]})]}),X?(0,K.jsx)(`ul`,{className:`mt-2 flex flex-col gap-0.5`,children:X.repos.map(e=>(0,K.jsx)(`li`,{className:`truncate font-mono text-xs text-muted-foreground`,children:e.path},e.path))}):(0,K.jsxs)(`div`,{className:`mt-2`,children:[(0,K.jsx)(u,{repos:l.data??[],selectedPaths:F,onToggle:e=>I(t=>t.includes(e.path)?t.filter(t=>t!==e.path):[...t,e.path]),loading:l.isLoading}),(0,K.jsx)(f,{onCreated:e=>I(t=>[...t,e.path])})]}),(r.data??[]).length===0&&!r.isLoading&&(0,K.jsxs)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:[`Tip: `,(0,K.jsx)(ae,{to:`/projects`,className:`text-primary hover:underline`,children:`register a project`}),` to skip repo picking next time.`]})]}),(0,K.jsxs)(`section`,{children:[(0,K.jsx)(`span`,{className:`mb-1.5 block text-sm font-medium`,children:`How do you want to work?`}),(0,K.jsx)(`div`,{role:`radiogroup`,"aria-label":`Work mode`,className:`grid gap-3 sm:grid-cols-2`,onKeyDown:e=>{if([`ArrowRight`,`ArrowDown`,`ArrowLeft`,`ArrowUp`].includes(e.key)){e.preventDefault();let t=O===`in-place`?`worktree`:`in-place`;k(t),document.getElementById(`mode-${t}`)?.focus()}},children:Re.map(e=>(0,K.jsxs)(`button`,{id:`mode-${e.value}`,type:`button`,role:`radio`,"aria-checked":O===e.value,tabIndex:O===e.value?0:-1,onClick:()=>k(e.value),className:i(`cursor-pointer rounded-xl border p-4 text-left outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring`,O===e.value?`border-primary bg-primary/5 ring-1 ring-primary`:`border-border bg-card hover:border-foreground/20`),children:[(0,K.jsx)(e.icon,{className:i(`size-4`,O===e.value?`text-primary`:`text-muted-foreground`)}),(0,K.jsx)(`p`,{className:`mt-2 text-sm font-semibold`,children:e.title}),(0,K.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:e.body})]},e.value))})]}),(0,K.jsx)(`section`,{children:Q?(0,K.jsxs)(`label`,{className:`block`,children:[(0,K.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Workspace name`}),(0,K.jsx)(o,{value:N,onChange:e=>fe(e.target.value),placeholder:`e.g. Fix invoice rounding`})]}):(0,K.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,K.jsxs)(`label`,{className:`block`,children:[(0,K.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Feature branch`}),(0,K.jsx)(o,{value:A,onChange:e=>ue(e.target.value),placeholder:`e.g. feature/invoice-rounding`,className:`font-mono`})]}),Z.length>0&&(0,K.jsxs)(`details`,{className:`rounded-lg border border-border px-3 py-2`,onToggle:e=>Me(e.target.open),children:[(0,K.jsx)(`summary`,{className:`cursor-pointer text-xs font-medium text-muted-foreground`,children:`Use an existing branch for specific repos (optional)`}),(0,K.jsx)(`div`,{className:`mt-2 flex flex-col gap-2`,children:Z.map(e=>(0,K.jsx)(ze,{repo:e,enabled:Ae,value:W[e.path]??``,onChange:t=>ke(n=>({...n,[e.path]:t}))},e.path))})]})]})}),(0,K.jsx)(`section`,{children:(0,K.jsxs)(`label`,{className:`block`,children:[(0,K.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`What are you building?`}),(0,K.jsx)(Te,{value:P,onChange:e=>he(e.target.value),placeholder:`A short description — your AI assistant reads this to plan the work.`,rows:3})]})}),(0,K.jsxs)(`section`,{className:`rounded-xl border border-border`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>ve(e=>!e),className:`flex w-full items-center justify-between px-4 py-3 text-sm font-medium hover:bg-accent`,"aria-expanded":L,children:[`Advanced`,(0,K.jsx)(c,{className:i(`size-4 text-muted-foreground transition-transform`,L&&`rotate-180`)})]}),L&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-4 border-t border-border p-4`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`mb-1.5 block text-sm font-medium`,children:`AI assistants`}),(0,K.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:(p.data??[]).map(e=>(0,K.jsxs)(`label`,{className:i(`flex cursor-pointer items-center gap-2 rounded-lg border border-border px-3 py-1.5 text-sm`,!e.detected&&`opacity-50`),children:[(0,K.jsx)(d,{checked:R.includes(e.name),onCheckedChange:()=>z(t=>t.includes(e.name)?t.filter(t=>t!==e.name):[...t,e.name])}),e.displayName]},e.name))})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Teamwork strategy`}),(0,K.jsxs)(a,{size:`xs`,variant:`outline`,onClick:We,disabled:we,children:[we?(0,K.jsx)(j,{}):(0,K.jsx)(ee,{}),`Suggest with AI`]})]}),(0,K.jsxs)(se,{value:xe,onValueChange:e=>typeof e==`string`&&Ue(e),children:[(0,K.jsx)(oe,{className:`w-full`,"aria-label":`Teamwork strategy`,children:(0,K.jsx)(me,{children:(m.data??[]).find(e=>e.id===xe)?.name??`None`})}),(0,K.jsxs)(_,{alignItemWithTrigger:!1,children:[(0,K.jsx)(y,{value:``,children:`None`}),(m.data??[]).map(e=>(0,K.jsx)(y,{value:e.id,children:e.name},e.id))]})]}),De&&(0,K.jsxs)(`p`,{className:`mt-1.5 text-xs text-muted-foreground`,children:[`AI classified this task as `,(0,K.jsx)(`span`,{className:`font-medium`,children:De}),` difficulty.`]}),(0,K.jsx)(Te,{value:Ce,onChange:e=>U(e.target.value),placeholder:`Cooperation instructions for the agent team (editable — prefilled by the strategy pick or AI suggestion).`,rows:4,className:`mt-2 font-mono text-xs`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,K.jsxs)(`span`,{className:`text-sm font-medium flex items-center gap-1.5`,children:[(0,K.jsx)(le,{className:`size-4 text-primary`}),`Agent Skills (`,B.length,` selected)`]}),(h.data??[]).length>0&&(0,K.jsx)(a,{type:`button`,size:`xs`,variant:`ghost`,onClick:()=>{let e=(h.data??[]).map(e=>e.id);ye(B.length===e.length?[]:e)},className:`text-xs text-muted-foreground hover:text-foreground h-6 px-2`,children:B.length===(h.data??[]).length&&(h.data??[]).length>0?`Deselect All`:`Select All`})]}),(0,K.jsx)(`div`,{className:`max-h-48 overflow-y-auto rounded-lg border border-border bg-card/50 p-2 space-y-1.5`,children:h.isLoading?(0,K.jsxs)(`div`,{className:`flex items-center justify-center p-4 gap-2 text-xs text-muted-foreground`,children:[(0,K.jsx)(j,{className:`size-3`}),`Loading skills...`]}):(h.data??[]).length===0?(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground p-2 text-center`,children:`No skills available in catalog.`}):(h.data??[]).map(e=>{let t=B.includes(e.id);return(0,K.jsxs)(`label`,{className:i(`flex items-center justify-between gap-2 rounded-md p-2 text-xs cursor-pointer border transition-colors`,t?`border-primary/50 bg-primary/5 text-foreground`:`border-transparent hover:bg-muted/50 text-muted-foreground`),children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,K.jsx)(d,{checked:t,onCheckedChange:()=>ye(t=>t.includes(e.id)?t.filter(t=>t!==e.id):[...t,e.id])}),(0,K.jsx)(`span`,{className:`font-mono font-medium truncate`,children:e.title||e.name})]}),(0,K.jsx)(be,{variant:`outline`,className:`text-[9px] px-1 py-0 shrink-0`,children:e.category})]},e.id)})})]}),(g.data??[]).length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:(0,K.jsxs)(`span`,{className:`text-sm font-medium flex items-center gap-1.5`,children:[(0,K.jsx)(s,{className:`size-4 text-purple-400`}),`Codex Native Agents (`,V.length,` selected)`]})}),(0,K.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(g.data??[]).map(e=>{let t=V.includes(e.id);return(0,K.jsxs)(`label`,{className:i(`flex cursor-pointer items-center gap-2 rounded-lg border border-border px-3 py-1.5 text-xs`,t?`border-purple-500/60 bg-purple-500/5 text-foreground`:`text-muted-foreground hover:bg-muted/50`),children:[(0,K.jsx)(d,{checked:t,onCheckedChange:()=>H(t=>t.includes(e.id)?t.filter(t=>t!==e.id):[...t,e.id])}),(0,K.jsx)(`span`,{className:`font-mono`,children:e.name})]},e.id)})})]})]})]}),q&&(0,K.jsx)(`p`,{className:`text-sm text-destructive-foreground`,children:q}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-t border-border pt-4`,children:[(0,K.jsxs)(`p`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,K.jsx)(re,{className:`size-3.5`}),Z.length,` repositor`,Z.length===1?`y`:`ies`,` selected`]}),(0,K.jsxs)(a,{onClick:Ke,disabled:!He||v.isPending,children:[v.isPending?(0,K.jsx)(j,{}):null,Q?`Start working`:`Create workspace`]})]})]})]})}export{Ve as StartWorkPage};