@lovelybunch/api 1.0.71-alpha.2 → 1.0.71-alpha.4

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 (235) hide show
  1. package/dist/lib/file-validation.d.ts +65 -0
  2. package/dist/lib/file-validation.js +125 -0
  3. package/dist/middleware/auth.d.ts +1 -0
  4. package/dist/middleware/auth.js +13 -3
  5. package/dist/routes/api/v1/resources/route.js +10 -7
  6. package/package.json +5 -4
  7. package/static/assets/{AgentDetailPage-DwWIjGx1.js → AgentDetailPage-BkWRFbPj.js} +1 -1
  8. package/static/assets/{AgentEditPage-BvVPfYR3.js → AgentEditPage-DN0TouUG.js} +1 -1
  9. package/static/assets/{AgentsPage-D-Uy87Gh.js → AgentsPage-DW6eV7oU.js} +2 -2
  10. package/static/assets/{AgentsSettingsPage-CDuAvFxu.js → AgentsSettingsPage-BJKnn0R0.js} +1 -1
  11. package/static/assets/{ApiKeysSettingsPage-Jug0kB7Z.js → ApiKeysSettingsPage-ChFu9Eo6.js} +1 -1
  12. package/static/assets/{ArchitectureEditPage-BmAgJAMV.js → ArchitectureEditPage-DWrvSS5U.js} +1 -1
  13. package/static/assets/{ArchitecturePage-ZjbdnDA7.js → ArchitecturePage-BdQG779E.js} +1 -1
  14. package/static/assets/{AuthSettingsPage-_pXoewOB.js → AuthSettingsPage-BXMn4xXd.js} +1 -1
  15. package/static/assets/{CallbackPage-CaAOpz4z.js → CallbackPage-AxQqTxCV.js} +1 -1
  16. package/static/assets/{CodePage-DEbgr8C1.js → CodePage-CfKZ52Zo.js} +1 -1
  17. package/static/assets/{CollapsibleSection-msxUBh1L.js → CollapsibleSection-ZFq6LSXW.js} +1 -1
  18. package/static/assets/{DashboardPage-BXu-fikP.js → DashboardPage-Df-d3-fG.js} +1 -1
  19. package/static/assets/{GitPage-B7qFcP-K.js → GitPage-DAWR8rrg.js} +1 -1
  20. package/static/assets/{GitSettingsPage-D7GjdOnE.js → GitSettingsPage-CzGuiY9j.js} +1 -1
  21. package/static/assets/{IdentityPage-BR48gNhN.js → IdentityPage-DbsNwWtP.js} +1 -1
  22. package/static/assets/{ImplementationStepsEditor-BdHMNVVd.js → ImplementationStepsEditor-DZq7KcDP.js} +1 -1
  23. package/static/assets/{IntegrationsSettingsPage-B1OHGlDC.js → IntegrationsSettingsPage-qvvsp1_G.js} +1 -1
  24. package/static/assets/{KnowledgeDetailPage-DBOQQs3R.js → KnowledgeDetailPage-BMnj1qiH.js} +1 -1
  25. package/static/assets/{KnowledgeEditPage-DHJxLPwi.js → KnowledgeEditPage-BZa4E2M9.js} +1 -1
  26. package/static/assets/{KnowledgePage-CuuDTMa_.js → KnowledgePage-Dtq9BKZi.js} +2 -2
  27. package/static/assets/{LoginPage-IIU6NAG9.js → LoginPage-BnlCd8Cm.js} +1 -1
  28. package/static/assets/McpSettingsPage-COPMqimV.js +1 -0
  29. package/static/assets/{NewAgentPage-DolltGy5.js → NewAgentPage-Dtvey1oU.js} +1 -1
  30. package/static/assets/{NewKnowledgePage-_jbUZqBU.js → NewKnowledgePage-CbiRD2V3.js} +1 -1
  31. package/static/assets/{NewProposalPage-bFnfuuoA.js → NewProposalPage-B1tUJIZz.js} +1 -1
  32. package/static/assets/{ProjectEditPage-DTTjPnGj.js → ProjectEditPage-CwM8LXHy.js} +1 -1
  33. package/static/assets/{ProjectPage-DhwrnEq2.js → ProjectPage-BHa8M3vI.js} +1 -1
  34. package/static/assets/{PromptsSettingsPage-DLOVysbE.js → PromptsSettingsPage-CwGmsIAW.js} +1 -1
  35. package/static/assets/{ProposalDetailPage-KvjXUaaf.js → ProposalDetailPage-DC7NMuFi.js} +1 -1
  36. package/static/assets/{ProposalEditPage-BmzkHL9a.js → ProposalEditPage-CfUidv6D.js} +1 -1
  37. package/static/assets/{ProposalsPage-DwQr1ycd.js → ProposalsPage-V8ut_TsU.js} +1 -1
  38. package/static/assets/ResourcesPage-Cofgbx3H.js +66 -0
  39. package/static/assets/{RulesSettingsPage-CsGXFTFY.js → RulesSettingsPage-BJ72X2Y3.js} +1 -1
  40. package/static/assets/{SchedulePage-CY8GdQlp.js → SchedulePage-DBYxTZMb.js} +1 -1
  41. package/static/assets/{TagInput-CbH9zq5n.js → TagInput-Cqju3cXZ.js} +1 -1
  42. package/static/assets/{TerminalPage-DsjOLnyY.js → TerminalPage-Iow1ciWG.js} +1 -1
  43. package/static/assets/{TerminalSessionPage-DQ065WYU.js → TerminalSessionPage-CZdzhFhY.js} +1 -1
  44. package/static/assets/{UserPreferencesPage-55VTrzfQ.js → UserPreferencesPage-CAuJ7yO4.js} +1 -1
  45. package/static/assets/{UserSettingsPage-BZwb93B4.js → UserSettingsPage-0j7ha-RI.js} +1 -1
  46. package/static/assets/{UtilitiesPage-BmEW7eJ_.js → UtilitiesPage-OgkcmaOS.js} +1 -1
  47. package/static/assets/{alert-CNSGDe1U.js → alert-D2VTq6m-.js} +1 -1
  48. package/static/assets/{arrow-down-D1dapxzl.js → arrow-down-vmWOjyjO.js} +1 -1
  49. package/static/assets/{arrow-left-CEZFPQje.js → arrow-left-Do2jUSS9.js} +1 -1
  50. package/static/assets/{arrow-up-D-lB4Ah6.js → arrow-up-hMM1cdZm.js} +1 -1
  51. package/static/assets/{badge-DO6e5hC1.js → badge-D7ZZbMEG.js} +1 -1
  52. package/static/assets/browser-modal-CWDhylx7.js +6 -0
  53. package/static/assets/{calendar-DWaFMSXH.js → calendar-C5JtKp_F.js} +1 -1
  54. package/static/assets/{card-Cnz8b7Ou.js → card-D_zGBKua.js} +1 -1
  55. package/static/assets/{chevron-left-CNgc28Tc.js → chevron-left-JjvWea8A.js} +1 -1
  56. package/static/assets/{circle-alert-Dick-jNf.js → circle-alert-DQD0CPB3.js} +1 -1
  57. package/static/assets/{circle-check-big-B70gdce7.js → circle-check-big-KfJvKA9H.js} +1 -1
  58. package/static/assets/{circle-check-DDk43rYV.js → circle-check-xj41FKuF.js} +1 -1
  59. package/static/assets/{circle-play-TJEfmKde.js → circle-play-BlGnYWUU.js} +1 -1
  60. package/static/assets/{circle-x-BfR2YcXx.js → circle-x-Ds97aY1x.js} +1 -1
  61. package/static/assets/{clipboard-BTZru8wn.js → clipboard-D3NA8gb4.js} +1 -1
  62. package/static/assets/{clock-DQXbrDkQ.js → clock-9dU_D6sL.js} +1 -1
  63. package/static/assets/{download-CW_rWwud.js → download-CNckZYWh.js} +1 -1
  64. package/static/assets/{eye-Bv6mO2ld.js → eye-Dp6wEoME.js} +1 -1
  65. package/static/assets/{folder-git-2-Cv5NbBZZ.js → folder-git-2-B9ILjFN2.js} +1 -1
  66. package/static/assets/{index-BSBM4i_g.js → index-Bbxvuj4b.js} +3 -3
  67. package/static/assets/index-Ca98xZVe.css +2 -0
  68. package/static/assets/{label-vEgNxdb2.js → label-CZGCmBD7.js} +1 -1
  69. package/static/assets/{markdown-editor-O6tGYa1a.js → markdown-editor-BiM9h5iI.js} +1 -1
  70. package/static/assets/{pause-6aQLhmG9.js → pause-BNL49HvB.js} +1 -1
  71. package/static/assets/{play-DsDsjO2V.js → play-8b83f5X0.js} +1 -1
  72. package/static/assets/{plus-BfBtnncn.js → plus-Be79gWKj.js} +1 -1
  73. package/static/assets/{radio-group-D_RD_9vY.js → radio-group-DpxssBzw.js} +1 -1
  74. package/static/assets/{refresh-cw-DvFNtws1.js → refresh-cw-C0_Ot2Zc.js} +1 -1
  75. package/static/assets/registry-ANRa5WBi.js +1 -0
  76. package/static/assets/{search-kcgmZUqQ.js → search-CrIdR7ah.js} +1 -1
  77. package/static/assets/{switch-Bjq8cgQn.js → switch-BYPAX9oF.js} +1 -1
  78. package/static/assets/{tabs-DDbBXbPg.js → tabs-Ug7Ug5Ha.js} +1 -1
  79. package/static/assets/{tag-Czz-3rNY.js → tag-BgO5mxYK.js} +1 -1
  80. package/static/assets/{terminal-preview-B7iP2vUT.js → terminal-preview-CDrLQbSE.js} +1 -1
  81. package/static/assets/{use-terminal-CN3pheMp.js → use-terminal-CNk4WtA6.js} +1 -1
  82. package/static/assets/{zap-BMkP_c9R.js → zap-cD8GAJPg.js} +1 -1
  83. package/static/index.html +2 -2
  84. package/dist/lib/auth/auth-manager.d.ts.map +0 -1
  85. package/dist/lib/auth/auth-manager.js.map +0 -1
  86. package/dist/lib/gait-path.d.ts.map +0 -1
  87. package/dist/lib/gait-path.js.map +0 -1
  88. package/dist/lib/git-settings.d.ts.map +0 -1
  89. package/dist/lib/git-settings.js.map +0 -1
  90. package/dist/lib/git.d.ts.map +0 -1
  91. package/dist/lib/git.js.map +0 -1
  92. package/dist/lib/jobs/global-job-scheduler.d.ts.map +0 -1
  93. package/dist/lib/jobs/global-job-scheduler.js.map +0 -1
  94. package/dist/lib/jobs/job-runner.d.ts.map +0 -1
  95. package/dist/lib/jobs/job-runner.js.map +0 -1
  96. package/dist/lib/jobs/job-scheduler.d.ts.map +0 -1
  97. package/dist/lib/jobs/job-scheduler.js.map +0 -1
  98. package/dist/lib/jobs/job-store.d.ts.map +0 -1
  99. package/dist/lib/jobs/job-store.js.map +0 -1
  100. package/dist/lib/project-paths.d.ts.map +0 -1
  101. package/dist/lib/project-paths.js.map +0 -1
  102. package/dist/lib/storage/file-storage.d.ts.map +0 -1
  103. package/dist/lib/storage/file-storage.js.map +0 -1
  104. package/dist/lib/symlinks/symlink-manager.d.ts.map +0 -1
  105. package/dist/lib/symlinks/symlink-manager.js.map +0 -1
  106. package/dist/lib/symlinks/types.d.ts.map +0 -1
  107. package/dist/lib/symlinks/types.js.map +0 -1
  108. package/dist/lib/terminal/context-helper.d.ts.map +0 -1
  109. package/dist/lib/terminal/context-helper.js.map +0 -1
  110. package/dist/lib/terminal/global-manager.d.ts.map +0 -1
  111. package/dist/lib/terminal/global-manager.js.map +0 -1
  112. package/dist/lib/terminal/shell-utils.d.ts.map +0 -1
  113. package/dist/lib/terminal/shell-utils.js.map +0 -1
  114. package/dist/lib/terminal/terminal-manager.d.ts.map +0 -1
  115. package/dist/lib/terminal/terminal-manager.js.map +0 -1
  116. package/dist/lib/user-preferences.d.ts.map +0 -1
  117. package/dist/lib/user-preferences.js.map +0 -1
  118. package/dist/middleware/auth.d.ts.map +0 -1
  119. package/dist/middleware/auth.js.map +0 -1
  120. package/dist/routes/api/v1/agents/[id]/index.d.ts.map +0 -1
  121. package/dist/routes/api/v1/agents/[id]/index.js.map +0 -1
  122. package/dist/routes/api/v1/agents/[id]/route.d.ts.map +0 -1
  123. package/dist/routes/api/v1/agents/[id]/route.js.map +0 -1
  124. package/dist/routes/api/v1/agents/index.d.ts.map +0 -1
  125. package/dist/routes/api/v1/agents/index.js.map +0 -1
  126. package/dist/routes/api/v1/agents/route.d.ts.map +0 -1
  127. package/dist/routes/api/v1/agents/route.js.map +0 -1
  128. package/dist/routes/api/v1/ai/index.d.ts.map +0 -1
  129. package/dist/routes/api/v1/ai/index.js.map +0 -1
  130. package/dist/routes/api/v1/ai/route.d.ts.map +0 -1
  131. package/dist/routes/api/v1/ai/route.js.map +0 -1
  132. package/dist/routes/api/v1/api-keys/index.d.ts.map +0 -1
  133. package/dist/routes/api/v1/api-keys/index.js.map +0 -1
  134. package/dist/routes/api/v1/api-keys/route.d.ts.map +0 -1
  135. package/dist/routes/api/v1/api-keys/route.js.map +0 -1
  136. package/dist/routes/api/v1/auth/index.d.ts.map +0 -1
  137. package/dist/routes/api/v1/auth/index.js.map +0 -1
  138. package/dist/routes/api/v1/auth/route.d.ts.map +0 -1
  139. package/dist/routes/api/v1/auth/route.js.map +0 -1
  140. package/dist/routes/api/v1/auth-settings/index.d.ts.map +0 -1
  141. package/dist/routes/api/v1/auth-settings/index.js.map +0 -1
  142. package/dist/routes/api/v1/auth-settings/route.d.ts.map +0 -1
  143. package/dist/routes/api/v1/auth-settings/route.js.map +0 -1
  144. package/dist/routes/api/v1/chats/[id]/index.d.ts.map +0 -1
  145. package/dist/routes/api/v1/chats/[id]/index.js.map +0 -1
  146. package/dist/routes/api/v1/chats/[id]/route.d.ts.map +0 -1
  147. package/dist/routes/api/v1/chats/[id]/route.js.map +0 -1
  148. package/dist/routes/api/v1/chats/index.d.ts.map +0 -1
  149. package/dist/routes/api/v1/chats/index.js.map +0 -1
  150. package/dist/routes/api/v1/chats/route.d.ts.map +0 -1
  151. package/dist/routes/api/v1/chats/route.js.map +0 -1
  152. package/dist/routes/api/v1/config/index.d.ts.map +0 -1
  153. package/dist/routes/api/v1/config/index.js.map +0 -1
  154. package/dist/routes/api/v1/config/route.d.ts.map +0 -1
  155. package/dist/routes/api/v1/config/route.js.map +0 -1
  156. package/dist/routes/api/v1/context/architecture/route.d.ts.map +0 -1
  157. package/dist/routes/api/v1/context/architecture/route.js.map +0 -1
  158. package/dist/routes/api/v1/context/index.d.ts.map +0 -1
  159. package/dist/routes/api/v1/context/index.js.map +0 -1
  160. package/dist/routes/api/v1/context/knowledge/[filename]/index.d.ts.map +0 -1
  161. package/dist/routes/api/v1/context/knowledge/[filename]/index.js.map +0 -1
  162. package/dist/routes/api/v1/context/knowledge/[filename]/route.d.ts.map +0 -1
  163. package/dist/routes/api/v1/context/knowledge/[filename]/route.js.map +0 -1
  164. package/dist/routes/api/v1/context/knowledge/index.d.ts.map +0 -1
  165. package/dist/routes/api/v1/context/knowledge/index.js.map +0 -1
  166. package/dist/routes/api/v1/context/knowledge/route.d.ts.map +0 -1
  167. package/dist/routes/api/v1/context/knowledge/route.js.map +0 -1
  168. package/dist/routes/api/v1/context/project/route.d.ts.map +0 -1
  169. package/dist/routes/api/v1/context/project/route.js.map +0 -1
  170. package/dist/routes/api/v1/git/index.d.ts.map +0 -1
  171. package/dist/routes/api/v1/git/index.js.map +0 -1
  172. package/dist/routes/api/v1/jobs/[id]/route.d.ts.map +0 -1
  173. package/dist/routes/api/v1/jobs/[id]/route.js.map +0 -1
  174. package/dist/routes/api/v1/jobs/[id]/run/route.d.ts.map +0 -1
  175. package/dist/routes/api/v1/jobs/[id]/run/route.js.map +0 -1
  176. package/dist/routes/api/v1/jobs/index.d.ts.map +0 -1
  177. package/dist/routes/api/v1/jobs/index.js.map +0 -1
  178. package/dist/routes/api/v1/jobs/route.d.ts.map +0 -1
  179. package/dist/routes/api/v1/jobs/route.js.map +0 -1
  180. package/dist/routes/api/v1/jobs/status/route.d.ts.map +0 -1
  181. package/dist/routes/api/v1/jobs/status/route.js.map +0 -1
  182. package/dist/routes/api/v1/mcp/index.d.ts.map +0 -1
  183. package/dist/routes/api/v1/mcp/index.js.map +0 -1
  184. package/dist/routes/api/v1/mcp/route.d.ts.map +0 -1
  185. package/dist/routes/api/v1/mcp/route.js.map +0 -1
  186. package/dist/routes/api/v1/proposals/[id]/route.d.ts.map +0 -1
  187. package/dist/routes/api/v1/proposals/[id]/route.js.map +0 -1
  188. package/dist/routes/api/v1/proposals/index.d.ts.map +0 -1
  189. package/dist/routes/api/v1/proposals/index.js.map +0 -1
  190. package/dist/routes/api/v1/proposals/route.d.ts.map +0 -1
  191. package/dist/routes/api/v1/proposals/route.js.map +0 -1
  192. package/dist/routes/api/v1/resources/[id]/index.d.ts.map +0 -1
  193. package/dist/routes/api/v1/resources/[id]/index.js.map +0 -1
  194. package/dist/routes/api/v1/resources/[id]/route.js.map +0 -1
  195. package/dist/routes/api/v1/resources/[id]/thumbnail/index.d.ts.map +0 -1
  196. package/dist/routes/api/v1/resources/[id]/thumbnail/index.js.map +0 -1
  197. package/dist/routes/api/v1/resources/[id]/thumbnail/route.js.map +0 -1
  198. package/dist/routes/api/v1/resources/index.d.ts.map +0 -1
  199. package/dist/routes/api/v1/resources/index.js.map +0 -1
  200. package/dist/routes/api/v1/resources/route.d.ts.map +0 -1
  201. package/dist/routes/api/v1/resources/route.js.map +0 -1
  202. package/dist/routes/api/v1/symlinks/index.d.ts.map +0 -1
  203. package/dist/routes/api/v1/symlinks/index.js.map +0 -1
  204. package/dist/routes/api/v1/symlinks/route.d.ts.map +0 -1
  205. package/dist/routes/api/v1/symlinks/route.js.map +0 -1
  206. package/dist/routes/api/v1/terminal/[proposalId]/create/index.d.ts.map +0 -1
  207. package/dist/routes/api/v1/terminal/[proposalId]/create/index.js.map +0 -1
  208. package/dist/routes/api/v1/terminal/[proposalId]/create/route.d.ts.map +0 -1
  209. package/dist/routes/api/v1/terminal/[proposalId]/create/route.js.map +0 -1
  210. package/dist/routes/api/v1/terminal/[proposalId]/destroy/index.d.ts.map +0 -1
  211. package/dist/routes/api/v1/terminal/[proposalId]/destroy/index.js.map +0 -1
  212. package/dist/routes/api/v1/terminal/[proposalId]/destroy/route.d.ts.map +0 -1
  213. package/dist/routes/api/v1/terminal/[proposalId]/destroy/route.js.map +0 -1
  214. package/dist/routes/api/v1/terminal/[proposalId]/resize/index.d.ts.map +0 -1
  215. package/dist/routes/api/v1/terminal/[proposalId]/resize/index.js.map +0 -1
  216. package/dist/routes/api/v1/terminal/[proposalId]/resize/route.d.ts.map +0 -1
  217. package/dist/routes/api/v1/terminal/[proposalId]/resize/route.js.map +0 -1
  218. package/dist/routes/api/v1/terminal/sessions/index.d.ts.map +0 -1
  219. package/dist/routes/api/v1/terminal/sessions/index.js.map +0 -1
  220. package/dist/routes/api/v1/terminal/sessions/route.d.ts.map +0 -1
  221. package/dist/routes/api/v1/terminal/sessions/route.js.map +0 -1
  222. package/dist/routes/api/v1/user/index.d.ts.map +0 -1
  223. package/dist/routes/api/v1/user/index.js.map +0 -1
  224. package/dist/routes/api/v1/user/settings/index.d.ts.map +0 -1
  225. package/dist/routes/api/v1/user/settings/index.js.map +0 -1
  226. package/dist/routes/api/v1/user/settings/route.d.ts.map +0 -1
  227. package/dist/routes/api/v1/user/settings/route.js.map +0 -1
  228. package/dist/server-with-static.d.ts.map +0 -1
  229. package/dist/server-with-static.js.map +0 -1
  230. package/dist/server.d.ts.map +0 -1
  231. package/dist/server.js.map +0 -1
  232. package/static/assets/McpSettingsPage-iz5gLGWt.js +0 -1
  233. package/static/assets/ResourcesPage-B8Hm_j47.js +0 -66
  234. package/static/assets/browser-modal-BTxVvZIA.js +0 -6
  235. package/static/assets/index-CKwmN6yL.css +0 -2
@@ -1 +1 @@
1
- import{u as U,H as J,r as i,j as e,B as r,a3 as S,q as K,s as L,X as q,n as H,a4 as G}from"./index-BSBM4i_g.js";import{C as f,a as W}from"./card-Cnz8b7Ou.js";import{u as X}from"./use-terminal-CN3pheMp.js";import{C as _,a as Q,T as V}from"./terminal-preview-B7iP2vUT.js";import{R as Y}from"./refresh-cw-DvFNtws1.js";import{P as M}from"./play-DsDsjO2V.js";import{C as Z}from"./circle-play-TJEfmKde.js";import"./xterm-DTxiCjtJ.js";function oe(){const m=U(),{sessions:p,loading:o,error:k,refreshSessions:h,createSession:j,destroySession:B}=X(),{toast:l}=J(),[x,u]=i.useState(""),[g,I]=i.useState(!1),[v,T]=i.useState(!1),[N,$]=i.useState([]),[,w]=i.useState(null),O=s=>{const t=Date.now(),a=new Date(s).getTime(),n=Math.max(0,Math.floor((t-a)/1e3));if(n<60)return`${n}s ago`;const b=Math.floor(n/60);if(b<60)return`${b}m ago`;const C=Math.floor(b/60);return C<24?`${C}h ago`:`${Math.floor(C/24)}d ago`};i.useEffect(()=>{h()},[h]),i.useEffect(()=>{y(s=>{const t={...s};return p.forEach(a=>{a.id in t||(t[a.id]=!0)}),t})},[p]),i.useEffect(()=>{try{const s=localStorage.getItem("terminal.commandHistory");s&&$(JSON.parse(s))}catch{}},[]);const D=s=>{s&&($(t=>{const a=[s,...t.filter(n=>n!==s)].slice(0,5);try{localStorage.setItem("terminal.commandHistory",JSON.stringify(a))}catch{}return a}),w(null))},c=p.filter(s=>!s.proposalId?.startsWith("cp-")).sort((s,t)=>new Date(t.lastActivity).getTime()-new Date(s.lastActivity).getTime()),[d,y]=i.useState(()=>{const s={};return p.forEach(t=>{s[t.id]=!0}),s}),R=async()=>{const s=`session-${Date.now()}`;await j(s,!1)&&(l({title:"New terminal started",description:`${s}`}),m(`/terminal/${s}`))},E=async()=>{const s=x.trim();if(!s)return;const t=`session-${Date.now()}`;I(!0);try{await j(t,!1,s)?(D(s),l({title:"Session started",description:`${t}`}),m(`/terminal/${t}`)):l({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{I(!1)}},A=async()=>{const s=x.trim();if(!s)return;const t=`session-${Date.now()}`;T(!0);try{await j(t,!1,s)?(D(s),setTimeout(()=>h(),150),u(""),l({title:"Started in background",description:`${t}`,action:e.jsx(G,{altText:"Open session",onClick:()=>m(`/terminal/${t}`),children:"Open"})})):l({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{T(!1)}},P=async s=>{await B(s)?(l({title:"Session closed",description:s}),setTimeout(()=>h(),100)):l({title:"Failed to close session",description:s,variant:"destructive"})},F=()=>{const s=c.every(a=>d[a.id]),t={};c.forEach(a=>{t[a.id]=!s}),y(t)},z=c.length>0&&c.every(s=>d[s.id]);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Terminal"}),e.jsx("p",{className:"text-muted-foreground hidden sm:block",children:"Manage terminal sessions"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(r,{variant:"outline",onClick:()=>h(),disabled:o,children:[e.jsx(Y,{className:`h-4 w-4 sm:mr-2 ${o?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"Refresh"})]}),c.length>0&&e.jsx(r,{variant:"outline",onClick:F,children:z?e.jsxs(e.Fragment,{children:[e.jsx(_,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Hide All"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Show All"})]})}),e.jsxs(r,{onClick:R,disabled:o,children:[e.jsx(S,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"New Terminal"})]})]})]}),k&&e.jsx("div",{className:"p-4 bg-red-50 border border-red-200 rounded-lg",children:e.jsx("div",{className:"text-red-600",children:k})}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Sessions"}),o?e.jsx("div",{className:"space-y-2",children:[...Array(2)].map((s,t)=>e.jsx(f,{className:"p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"h-4 w-4 rounded bg-muted animate-pulse"}),e.jsxs("div",{children:[e.jsx("div",{className:"h-4 w-40 bg-muted rounded animate-pulse mb-2"}),e.jsx("div",{className:"h-3 w-24 bg-muted rounded animate-pulse"})]})]}),e.jsx("div",{className:"h-6 w-20 bg-muted rounded animate-pulse"})]})},t))}):c.length===0?e.jsx(f,{className:"p-8",children:e.jsxs("div",{className:"flex flex-col items-center justify-center text-center space-y-3",children:[e.jsx(S,{className:"h-12 w-12 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:"No active sessions"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Get started by launching a new terminal session with the"," ",e.jsx("button",{onClick:R,className:"text-primary hover:underline font-medium",children:"New Terminal"})," ","button above."]})]})]})}):e.jsx("div",{className:"space-y-2",children:c.slice(0,10).map(s=>e.jsxs(f,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(S,{className:"h-4 w-4"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:s.proposalId}),e.jsxs("div",{className:"text-xs text-gray-500",children:["Session ",s.id.split("-").slice(-1)[0].substring(0,8)," • Last activity ",O(s.lastActivity)]})]})]}),e.jsxs("div",{className:"flex items-center gap-1 sm:gap-2",children:[e.jsx("div",{className:`flex items-center gap-1 ${s.connected?"text-green-600":"text-gray-400"}`,title:s.connected?"Connected":"Disconnected",children:e.jsx("div",{className:`w-2 h-2 rounded-full ${s.connected?"bg-green-500":"bg-gray-400"}`})}),e.jsx(r,{size:"sm",variant:"outline",onClick:()=>{y(t=>({...t,[s.id]:!t[s.id]}))},"aria-label":d[s.id]?"Hide preview":"Show preview",title:d[s.id]?"Hide preview":"Show preview",children:d[s.id]?e.jsx(K,{className:"h-4 w-4"}):e.jsx(L,{className:"h-4 w-4"})}),e.jsxs(r,{size:"sm",variant:"outline",onClick:()=>m(`/terminal/${s.proposalId}`),children:[e.jsx(M,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Open"})]}),e.jsx(r,{size:"icon",variant:"destructive",onClick:()=>P(s.id),title:"Close session","aria-label":"Close session",children:e.jsx(q,{className:"h-4 w-4"})})]})]}),d[s.id]&&e.jsx("div",{className:"mt-2 w-full p-2 cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>m(`/terminal/${s.proposalId}`),title:"Click to open full terminal session",children:e.jsx(V,{sessionId:s.id,heightPx:160,maxScrollback:200})})]},s.id))})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Run Custom Command"}),e.jsx(f,{children:e.jsxs(W,{className:"py-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{value:x,onChange:s=>u(s.target.value),onKeyDown:s=>{s.key==="Enter"?(s.preventDefault(),s.shiftKey?A():E()):s.key==="ArrowUp"?(s.preventDefault(),w(t=>{const a=t===null?0:Math.min((t??0)+1,N.length-1),n=N[a];return n&&u(n),a})):s.key==="ArrowDown"&&(s.preventDefault(),w(t=>{if(t===null)return null;const a=t-1;if(a<0)return u(""),null;const n=N[a];return n&&u(n),a}))},placeholder:"npm run dev",className:"flex-1 h-9 rounded-md border px-3 text-sm bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400"}),e.jsxs(r,{onClick:A,variant:"secondary",disabled:o||!x.trim()||v||g,children:[v?e.jsx(H,{className:"h-4 w-4 animate-spin sm:mr-1"}):e.jsx(Z,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Background"})]}),e.jsxs(r,{onClick:E,disabled:o||!x.trim()||g||v,children:[g?e.jsx(H,{className:"h-4 w-4 animate-spin sm:mr-2"}):e.jsx(M,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Run"})]})]}),e.jsx("div",{className:"text-xs text-muted-foreground mt-2",children:"Enter to Run • Shift+Enter to Run in background"})]})})]})]})}export{oe as default};
1
+ import{u as U,H as J,r as i,j as e,B as r,a3 as S,q as K,s as L,X as q,n as H,a4 as G}from"./index-Bbxvuj4b.js";import{C as f,a as W}from"./card-D_zGBKua.js";import{u as X}from"./use-terminal-CNk4WtA6.js";import{C as _,a as Q,T as V}from"./terminal-preview-CDrLQbSE.js";import{R as Y}from"./refresh-cw-C0_Ot2Zc.js";import{P as M}from"./play-8b83f5X0.js";import{C as Z}from"./circle-play-BlGnYWUU.js";import"./xterm-DTxiCjtJ.js";function oe(){const m=U(),{sessions:p,loading:o,error:k,refreshSessions:h,createSession:j,destroySession:B}=X(),{toast:l}=J(),[x,u]=i.useState(""),[g,I]=i.useState(!1),[v,T]=i.useState(!1),[N,$]=i.useState([]),[,w]=i.useState(null),O=s=>{const t=Date.now(),a=new Date(s).getTime(),n=Math.max(0,Math.floor((t-a)/1e3));if(n<60)return`${n}s ago`;const b=Math.floor(n/60);if(b<60)return`${b}m ago`;const C=Math.floor(b/60);return C<24?`${C}h ago`:`${Math.floor(C/24)}d ago`};i.useEffect(()=>{h()},[h]),i.useEffect(()=>{y(s=>{const t={...s};return p.forEach(a=>{a.id in t||(t[a.id]=!0)}),t})},[p]),i.useEffect(()=>{try{const s=localStorage.getItem("terminal.commandHistory");s&&$(JSON.parse(s))}catch{}},[]);const D=s=>{s&&($(t=>{const a=[s,...t.filter(n=>n!==s)].slice(0,5);try{localStorage.setItem("terminal.commandHistory",JSON.stringify(a))}catch{}return a}),w(null))},c=p.filter(s=>!s.proposalId?.startsWith("cp-")).sort((s,t)=>new Date(t.lastActivity).getTime()-new Date(s.lastActivity).getTime()),[d,y]=i.useState(()=>{const s={};return p.forEach(t=>{s[t.id]=!0}),s}),R=async()=>{const s=`session-${Date.now()}`;await j(s,!1)&&(l({title:"New terminal started",description:`${s}`}),m(`/terminal/${s}`))},E=async()=>{const s=x.trim();if(!s)return;const t=`session-${Date.now()}`;I(!0);try{await j(t,!1,s)?(D(s),l({title:"Session started",description:`${t}`}),m(`/terminal/${t}`)):l({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{I(!1)}},A=async()=>{const s=x.trim();if(!s)return;const t=`session-${Date.now()}`;T(!0);try{await j(t,!1,s)?(D(s),setTimeout(()=>h(),150),u(""),l({title:"Started in background",description:`${t}`,action:e.jsx(G,{altText:"Open session",onClick:()=>m(`/terminal/${t}`),children:"Open"})})):l({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{T(!1)}},P=async s=>{await B(s)?(l({title:"Session closed",description:s}),setTimeout(()=>h(),100)):l({title:"Failed to close session",description:s,variant:"destructive"})},F=()=>{const s=c.every(a=>d[a.id]),t={};c.forEach(a=>{t[a.id]=!s}),y(t)},z=c.length>0&&c.every(s=>d[s.id]);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Terminal"}),e.jsx("p",{className:"text-muted-foreground hidden sm:block",children:"Manage terminal sessions"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(r,{variant:"outline",onClick:()=>h(),disabled:o,children:[e.jsx(Y,{className:`h-4 w-4 sm:mr-2 ${o?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"Refresh"})]}),c.length>0&&e.jsx(r,{variant:"outline",onClick:F,children:z?e.jsxs(e.Fragment,{children:[e.jsx(_,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Hide All"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Show All"})]})}),e.jsxs(r,{onClick:R,disabled:o,children:[e.jsx(S,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"New Terminal"})]})]})]}),k&&e.jsx("div",{className:"p-4 bg-red-50 border border-red-200 rounded-lg",children:e.jsx("div",{className:"text-red-600",children:k})}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Sessions"}),o?e.jsx("div",{className:"space-y-2",children:[...Array(2)].map((s,t)=>e.jsx(f,{className:"p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"h-4 w-4 rounded bg-muted animate-pulse"}),e.jsxs("div",{children:[e.jsx("div",{className:"h-4 w-40 bg-muted rounded animate-pulse mb-2"}),e.jsx("div",{className:"h-3 w-24 bg-muted rounded animate-pulse"})]})]}),e.jsx("div",{className:"h-6 w-20 bg-muted rounded animate-pulse"})]})},t))}):c.length===0?e.jsx(f,{className:"p-8",children:e.jsxs("div",{className:"flex flex-col items-center justify-center text-center space-y-3",children:[e.jsx(S,{className:"h-12 w-12 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:"No active sessions"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Get started by launching a new terminal session with the"," ",e.jsx("button",{onClick:R,className:"text-primary hover:underline font-medium",children:"New Terminal"})," ","button above."]})]})]})}):e.jsx("div",{className:"space-y-2",children:c.slice(0,10).map(s=>e.jsxs(f,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(S,{className:"h-4 w-4"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:s.proposalId}),e.jsxs("div",{className:"text-xs text-gray-500",children:["Session ",s.id.split("-").slice(-1)[0].substring(0,8)," • Last activity ",O(s.lastActivity)]})]})]}),e.jsxs("div",{className:"flex items-center gap-1 sm:gap-2",children:[e.jsx("div",{className:`flex items-center gap-1 ${s.connected?"text-green-600":"text-gray-400"}`,title:s.connected?"Connected":"Disconnected",children:e.jsx("div",{className:`w-2 h-2 rounded-full ${s.connected?"bg-green-500":"bg-gray-400"}`})}),e.jsx(r,{size:"sm",variant:"outline",onClick:()=>{y(t=>({...t,[s.id]:!t[s.id]}))},"aria-label":d[s.id]?"Hide preview":"Show preview",title:d[s.id]?"Hide preview":"Show preview",children:d[s.id]?e.jsx(K,{className:"h-4 w-4"}):e.jsx(L,{className:"h-4 w-4"})}),e.jsxs(r,{size:"sm",variant:"outline",onClick:()=>m(`/terminal/${s.proposalId}`),children:[e.jsx(M,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Open"})]}),e.jsx(r,{size:"icon",variant:"destructive",onClick:()=>P(s.id),title:"Close session","aria-label":"Close session",children:e.jsx(q,{className:"h-4 w-4"})})]})]}),d[s.id]&&e.jsx("div",{className:"mt-2 w-full p-2 cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>m(`/terminal/${s.proposalId}`),title:"Click to open full terminal session",children:e.jsx(V,{sessionId:s.id,heightPx:160,maxScrollback:200})})]},s.id))})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Run Custom Command"}),e.jsx(f,{children:e.jsxs(W,{className:"py-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{value:x,onChange:s=>u(s.target.value),onKeyDown:s=>{s.key==="Enter"?(s.preventDefault(),s.shiftKey?A():E()):s.key==="ArrowUp"?(s.preventDefault(),w(t=>{const a=t===null?0:Math.min((t??0)+1,N.length-1),n=N[a];return n&&u(n),a})):s.key==="ArrowDown"&&(s.preventDefault(),w(t=>{if(t===null)return null;const a=t-1;if(a<0)return u(""),null;const n=N[a];return n&&u(n),a}))},placeholder:"npm run dev",className:"flex-1 h-9 rounded-md border px-3 text-sm bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400"}),e.jsxs(r,{onClick:A,variant:"secondary",disabled:o||!x.trim()||v||g,children:[v?e.jsx(H,{className:"h-4 w-4 animate-spin sm:mr-1"}):e.jsx(Z,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Background"})]}),e.jsxs(r,{onClick:E,disabled:o||!x.trim()||g||v,children:[g?e.jsx(H,{className:"h-4 w-4 animate-spin sm:mr-2"}):e.jsx(M,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Run"})]})]}),e.jsx("div",{className:"text-xs text-muted-foreground mt-2",children:"Enter to Run • Shift+Enter to Run in background"})]})})]})]})}export{oe as default};
@@ -1,4 +1,4 @@
1
- import{c as Ge,j as e,B as C,a5 as Ee,a6 as Le,a7 as Pe,a8 as We,a9 as Me,aa as Ze,p as oe,r as n,ab as Ye,E as Ke,l as Xe,u as Qe,H as et,k as ue,a3 as je,ac as Be,v as ye,w as ve,x as we,y as Ne,z as H,X as Oe,ad as tt,i as _e,h as Ie,s as ke,D as rt,a as st,b as nt,d as at,ae as ze,A as ce}from"./index-BSBM4i_g.js";import{C as it,a as ot}from"./card-Cnz8b7Ou.js";import{B as De}from"./badge-DO6e5hC1.js";import{R as ct,a as Ce}from"./radio-group-D_RD_9vY.js";import{C as lt}from"./CollapsibleSection-msxUBh1L.js";import{L as he}from"./label-vEgNxdb2.js";import{u as dt}from"./use-terminal-CN3pheMp.js";import{x as mt,a as ut}from"./xterm-DTxiCjtJ.js";import{A as ht}from"./arrow-down-D1dapxzl.js";import{b as Fe,a as xt,c as gt,d as ft}from"./droid-CmYuCN_q.js";import{R as pt}from"./refresh-cw-DvFNtws1.js";import{P as Se}from"./play-DsDsjO2V.js";import{P as Ae}from"./plus-BfBtnncn.js";import{Z as bt}from"./zap-BMkP_c9R.js";/**
1
+ import{c as Ge,j as e,B as C,a5 as Ee,a6 as Le,a7 as Pe,a8 as We,a9 as Me,aa as Ze,p as oe,r as n,ab as Ye,E as Ke,l as Xe,u as Qe,H as et,k as ue,a3 as je,ac as Be,v as ye,w as ve,x as we,y as Ne,z as H,X as Oe,ad as tt,i as _e,h as Ie,s as ke,D as rt,a as st,b as nt,d as at,ae as ze,A as ce}from"./index-Bbxvuj4b.js";import{C as it,a as ot}from"./card-D_zGBKua.js";import{B as De}from"./badge-D7ZZbMEG.js";import{R as ct,a as Ce}from"./radio-group-DpxssBzw.js";import{C as lt}from"./CollapsibleSection-ZFq6LSXW.js";import{L as he}from"./label-CZGCmBD7.js";import{u as dt}from"./use-terminal-CNk4WtA6.js";import{x as mt,a as ut}from"./xterm-DTxiCjtJ.js";import{A as ht}from"./arrow-down-vmWOjyjO.js";import{b as Fe,a as xt,c as gt,d as ft}from"./droid-CmYuCN_q.js";import{R as pt}from"./refresh-cw-C0_Ot2Zc.js";import{P as Se}from"./play-8b83f5X0.js";import{P as Ae}from"./plus-Be79gWKj.js";import{Z as bt}from"./zap-cD8GAJPg.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{r as n,H as k,aU as N,A as g,j as e,a1 as P,v as h,w as u,x as m,y as f,z as a,I as b,B as y}from"./index-BSBM4i_g.js";import{C as w,b as F,c as T,d as L,a as D}from"./card-Cnz8b7Ou.js";import{L as o}from"./label-vEgNxdb2.js";const r={theme:"coconut",defaultEditor:"cursor",terminalShell:"bash",autoSaveInterval:60,notifications:{email:!1,desktop:!1,slack:!1}};function U(s){return{theme:s?.theme??r.theme,defaultEditor:s?.defaultEditor??r.defaultEditor,terminalShell:s?.terminalShell??r.terminalShell,autoSaveInterval:s?.autoSaveInterval??r.autoSaveInterval,notifications:{email:s?.notifications?.email??r.notifications.email,desktop:s?.notifications?.desktop??r.notifications.desktop,slack:s?.notifications?.slack??r.notifications.slack}}}function B(){const[s,v]=n.useState(r),[C,E]=n.useState(!0),[c,x]=n.useState(!1),{toast:d}=k(),{theme:j,setTheme:p}=N();n.useEffect(()=>{S()},[]),n.useEffect(()=>{s.theme!==j&&p(s.theme)},[s.theme,j,p]);const S=async()=>{try{const l=await(await fetch(`${g}/api/v1/user/settings`)).json();l.success&&v(U(l.data.preferences))}catch(t){console.error("Failed to load preferences:",t),d({title:"Error",description:"Failed to load user preferences",variant:"destructive"})}finally{E(!1)}},I=async()=>{x(!0);try{const l=await(await fetch(`${g}/api/v1/user/settings`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({preferences:s})})).json();if(l.success)d({title:"Preferences saved",description:"Your personal preferences have been updated."});else throw new Error(l.error)}catch(t){console.error("Failed to save preferences:",t),d({title:"Error",description:"Failed to save preferences",variant:"destructive"})}finally{x(!1)}},i=t=>{v(l=>({...l,...t,notifications:{...l.notifications,...t.notifications}}))};return C?e.jsx("div",{children:"Loading..."}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:"User Preferences"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Configure defaults for editors, shells, themes, and notifications."})]}),e.jsx(P,{}),e.jsxs(w,{children:[e.jsxs(F,{children:[e.jsx(T,{children:"Workspace Defaults"}),e.jsx(L,{children:"Set the defaults Coconut uses when creating sessions and surfaces."})]}),e.jsxs(D,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"theme",children:"Theme"}),e.jsxs(h,{value:s.theme,onValueChange:t=>i({theme:t}),children:[e.jsx(u,{id:"theme",children:e.jsx(m,{placeholder:"Select theme"})}),e.jsxs(f,{children:[e.jsx(a,{value:"coconut",children:"Coconut"}),e.jsx(a,{value:"system",children:"System"}),e.jsx(a,{value:"light",children:"Light"}),e.jsx(a,{value:"dark",children:"Dark"})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"System follows your OS preference. Coconut is the default branded theme."})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"defaultEditor",children:"Default Editor"}),e.jsxs(h,{value:s.defaultEditor,onValueChange:t=>i({defaultEditor:t}),children:[e.jsx(u,{id:"defaultEditor",children:e.jsx(m,{placeholder:"Select editor"})}),e.jsxs(f,{children:[e.jsx(a,{value:"cursor",children:"Cursor"}),e.jsx(a,{value:"vscode",children:"VS Code"}),e.jsx(a,{value:"vim",children:"Vim"}),e.jsx(a,{value:"emacs",children:"Emacs"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"terminalShell",children:"Preferred Shell"}),e.jsxs(h,{value:s.terminalShell,onValueChange:t=>i({terminalShell:t}),children:[e.jsx(u,{id:"terminalShell",children:e.jsx(m,{placeholder:"Select shell"})}),e.jsxs(f,{children:[e.jsx(a,{value:"bash",children:"Bash"}),e.jsx(a,{value:"zsh",children:"Zsh"}),e.jsx(a,{value:"fish",children:"Fish"}),e.jsx(a,{value:"sh",children:"sh"}),e.jsx(a,{value:"system",children:"System Default"})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"autoSaveInterval",children:"Auto-save Interval (seconds)"}),e.jsx(b,{id:"autoSaveInterval",type:"number",min:10,max:600,value:s.autoSaveInterval,onChange:t=>i({autoSaveInterval:Number.parseInt(t.target.value,10)||r.autoSaveInterval})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Controls how often Coconut persists draft work to disk."})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(y,{variant:"outline",onClick:S,disabled:c,children:"Reset"}),e.jsx(y,{onClick:I,disabled:c,children:c?"Saving...":"Save Preferences"})]})]})}export{B as default};
1
+ import{r as n,H as k,aU as N,A as g,j as e,a1 as P,v as h,w as u,x as m,y as f,z as a,I as b,B as y}from"./index-Bbxvuj4b.js";import{C as w,b as F,c as T,d as L,a as D}from"./card-D_zGBKua.js";import{L as o}from"./label-CZGCmBD7.js";const r={theme:"coconut",defaultEditor:"cursor",terminalShell:"bash",autoSaveInterval:60,notifications:{email:!1,desktop:!1,slack:!1}};function U(s){return{theme:s?.theme??r.theme,defaultEditor:s?.defaultEditor??r.defaultEditor,terminalShell:s?.terminalShell??r.terminalShell,autoSaveInterval:s?.autoSaveInterval??r.autoSaveInterval,notifications:{email:s?.notifications?.email??r.notifications.email,desktop:s?.notifications?.desktop??r.notifications.desktop,slack:s?.notifications?.slack??r.notifications.slack}}}function B(){const[s,v]=n.useState(r),[C,E]=n.useState(!0),[c,x]=n.useState(!1),{toast:d}=k(),{theme:j,setTheme:p}=N();n.useEffect(()=>{S()},[]),n.useEffect(()=>{s.theme!==j&&p(s.theme)},[s.theme,j,p]);const S=async()=>{try{const l=await(await fetch(`${g}/api/v1/user/settings`)).json();l.success&&v(U(l.data.preferences))}catch(t){console.error("Failed to load preferences:",t),d({title:"Error",description:"Failed to load user preferences",variant:"destructive"})}finally{E(!1)}},I=async()=>{x(!0);try{const l=await(await fetch(`${g}/api/v1/user/settings`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({preferences:s})})).json();if(l.success)d({title:"Preferences saved",description:"Your personal preferences have been updated."});else throw new Error(l.error)}catch(t){console.error("Failed to save preferences:",t),d({title:"Error",description:"Failed to save preferences",variant:"destructive"})}finally{x(!1)}},i=t=>{v(l=>({...l,...t,notifications:{...l.notifications,...t.notifications}}))};return C?e.jsx("div",{children:"Loading..."}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:"User Preferences"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Configure defaults for editors, shells, themes, and notifications."})]}),e.jsx(P,{}),e.jsxs(w,{children:[e.jsxs(F,{children:[e.jsx(T,{children:"Workspace Defaults"}),e.jsx(L,{children:"Set the defaults Coconut uses when creating sessions and surfaces."})]}),e.jsxs(D,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"theme",children:"Theme"}),e.jsxs(h,{value:s.theme,onValueChange:t=>i({theme:t}),children:[e.jsx(u,{id:"theme",children:e.jsx(m,{placeholder:"Select theme"})}),e.jsxs(f,{children:[e.jsx(a,{value:"coconut",children:"Coconut"}),e.jsx(a,{value:"system",children:"System"}),e.jsx(a,{value:"light",children:"Light"}),e.jsx(a,{value:"dark",children:"Dark"})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"System follows your OS preference. Coconut is the default branded theme."})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"defaultEditor",children:"Default Editor"}),e.jsxs(h,{value:s.defaultEditor,onValueChange:t=>i({defaultEditor:t}),children:[e.jsx(u,{id:"defaultEditor",children:e.jsx(m,{placeholder:"Select editor"})}),e.jsxs(f,{children:[e.jsx(a,{value:"cursor",children:"Cursor"}),e.jsx(a,{value:"vscode",children:"VS Code"}),e.jsx(a,{value:"vim",children:"Vim"}),e.jsx(a,{value:"emacs",children:"Emacs"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"terminalShell",children:"Preferred Shell"}),e.jsxs(h,{value:s.terminalShell,onValueChange:t=>i({terminalShell:t}),children:[e.jsx(u,{id:"terminalShell",children:e.jsx(m,{placeholder:"Select shell"})}),e.jsxs(f,{children:[e.jsx(a,{value:"bash",children:"Bash"}),e.jsx(a,{value:"zsh",children:"Zsh"}),e.jsx(a,{value:"fish",children:"Fish"}),e.jsx(a,{value:"sh",children:"sh"}),e.jsx(a,{value:"system",children:"System Default"})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"autoSaveInterval",children:"Auto-save Interval (seconds)"}),e.jsx(b,{id:"autoSaveInterval",type:"number",min:10,max:600,value:s.autoSaveInterval,onChange:t=>i({autoSaveInterval:Number.parseInt(t.target.value,10)||r.autoSaveInterval})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Controls how often Coconut persists draft work to disk."})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(y,{variant:"outline",onClick:S,disabled:c,children:"Reset"}),e.jsx(y,{onClick:I,disabled:c,children:c?"Saving...":"Save Preferences"})]})]})}export{B as default};
@@ -1 +1 @@
1
- import{r as a,H as I,A as S,j as e,a1 as D,B as g,I as p,v as F,w as P,x as z,y as L,z as A,L as R}from"./index-BSBM4i_g.js";import{C as q,b as T,c as M,d as O,a as U}from"./card-Cnz8b7Ou.js";import{L as c}from"./label-vEgNxdb2.js";import{C as B,a as H}from"./clipboard-BTZru8wn.js";const m=[{id:"software-engineer",title:"Software Engineer",description:"Builds, refactors, and reviews high-quality code across stacks. Excellent at translating specs into implementation and optimizing system performance. Strong at debugging, architecture patterns, and accelerating development velocity."},{id:"product-strategist",title:"Product Strategist",description:"Defines product direction, clarifies requirements, and aligns work with user and business goals. Skilled in roadmap planning, prioritization, and transforming ambiguous ideas into actionable plans."},{id:"researcher",title:"Researcher",description:"Investigates topics deeply, synthesizes information, and produces evidence-based insights. Strong at literature review, competitive analysis, and generating clear summaries to inform decisions."},{id:"designer",title:"Designer",description:"Creates intuitive interfaces, user flows, and visual assets. Focused on usability, accessibility, and crafting polished experiences. Strong at wireframing and turning requirements into elegant solutions."},{id:"qa-engineer",title:"QA Engineer",description:"Identifies bugs, edge cases, and reliability gaps. Produces test plans, automated tests, and reproducible reports. Strong at ensuring product quality and preventing regressions."},{id:"devops-engineer",title:"DevOps Engineer",description:"Manages infrastructure, deployments, and operational reliability. Skilled with CI/CD, observability, automation, and environment provisioning. Ensures systems are scalable and fault-tolerant."},{id:"data-analyst",title:"Data Analyst",description:"Analyzes data, defines metrics, and generates actionable insights. Strong in SQL, visualization, experimentation, and turning raw data into strategic recommendations."},{id:"marketer",title:"Marketer",description:"Creates campaigns, messaging, and positioning to reach target audiences. Skilled in content, funnels, and brand strategy. Strong at synthesizing market needs and shaping demand."},{id:"sales-partnerships-agent",title:"Sales & Partnerships Agent",description:"Identifies prospects, crafts outreach, and develops strategic relationships. Strong at value articulation, objection handling, and mapping product capabilities to customer needs."},{id:"growth-operator",title:"Growth Operator",description:"Optimizes acquisition, activation, and retention through experimentation. Skilled in funnel analysis, rapid testing, and leveraging data for compounding growth."},{id:"customer-success-specialist",title:"Customer Success Specialist",description:"Ensures users succeed by providing onboarding, guidance, and proactive support. Strong at diagnosing user challenges and improving long-term satisfaction and retention."},{id:"orchestration-engineer",title:"Orchestration Engineer",description:"Coordinates multi-agent workflows, dependencies, and handoffs. Strong at breaking large tasks into sequenced steps and ensuring agents operate cohesively and efficiently."},{id:"context-curator",title:"Context Curator",description:"Maintains clean, accurate project context by organizing files, logs, and knowledge. Strong at eliminating ambiguity, ensuring agents have the right information at the right time."},{id:"documentation-writer",title:"Documentation Writer",description:"Produces clear technical docs, guides, READMEs, and CP summaries. Strong at structuring complex information and keeping knowledge bases up to date and accessible."}];function G(){const[n,h]=a.useState({}),[r,d]=a.useState(null),[f,x]=a.useState(!1),[b,N]=a.useState(!0),[u,v]=a.useState(!1),{toast:o}=I();a.useEffect(()=>{j()},[]);const j=async()=>{try{try{const t=await fetch(`${S}/api/v1/config`),s=await t.json();if(t.ok&&s?.success){const i=s.data?.coconut||{};d(i.id??null),(i.firstName||i.lastName||i.email||i.role||i.roleDescription)&&h({firstName:i.firstName,lastName:i.lastName,email:i.email,role:i.role,roleDescription:i.roleDescription})}else d(null)}catch(t){console.error("Failed to load coconut config:",t),d(null)}}catch(t){console.error("Failed to load settings:",t),o({title:"Error",description:"Failed to load user settings",variant:"destructive"})}finally{N(!1)}},w=async()=>{v(!0);try{const s=await(await fetch(`${S}/api/v1/config`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({coconut:{...n,id:r||void 0}})})).json();if(s.success)o({title:"Success",description:"Settings saved successfully"});else throw new Error(s.error||"Failed to save settings")}catch(t){console.error("Failed to save settings:",t),o({title:"Error",description:"Failed to save settings",variant:"destructive"})}finally{v(!1)}},l=t=>{h(s=>{const i={...s,...t};if(t.role!==void 0){const C=m.find(E=>E.id===t.role);C?.description&&(i.roleDescription=C.description)}return i})},y=a.useMemo(()=>n.role&&m.find(s=>s.id===n.role)?.description||null,[n.role]),k=async()=>{if(r)try{await navigator.clipboard.writeText(r),x(!0),o({title:"Copied",description:"Coconut ID copied to clipboard."}),setTimeout(()=>x(!1),1500)}catch(t){console.error("Failed to copy coconut ID:",t),o({title:"Copy failed",description:"Unable to copy the Coconut ID to the clipboard.",variant:"destructive"})}};return b?e.jsx("div",{children:"Loading..."}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:"Coconut Settings"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Manage the Coconut's profile information."})]}),e.jsx(D,{}),e.jsx("div",{className:"rounded-lg border border-dashed bg-muted/40 p-4",children:r?e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("h4",{className:"text-sm font-medium text-muted-foreground",children:"Coconut ID"}),e.jsx("p",{className:"mt-1 font-mono text-sm",children:r})]}),e.jsxs(g,{variant:"outline",size:"sm",onClick:k,children:[f?e.jsx(B,{className:"h-4 w-4"}):e.jsx(H,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2",children:f?"Copied":"Copy"})]})]}):e.jsxs("div",{className:"space-y-1",children:[e.jsx("h4",{className:"text-sm font-medium text-muted-foreground",children:"Coconut ID not configured"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Add an `id` under the `coconut` section in `.nut/config.json` to register this Coconut instance."})]})}),e.jsxs(q,{children:[e.jsxs(T,{children:[e.jsx(M,{children:"Coconut Profile"}),e.jsx(O,{children:"Update the Coconut's identifying details and role."})]}),e.jsxs(U,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(c,{htmlFor:"firstName",children:"First Name"}),e.jsx(p,{id:"firstName",value:n.firstName||"",onChange:t=>l({firstName:t.target.value}),placeholder:"Enter first name"})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"lastName",children:"Last Name"}),e.jsx(p,{id:"lastName",value:n.lastName||"",onChange:t=>l({lastName:t.target.value}),placeholder:"Enter last name"})]})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"email",children:"Email"}),e.jsx(p,{id:"email",type:"email",value:n.email||"",onChange:t=>l({email:t.target.value}),placeholder:"Enter email address"})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"role",children:"Role"}),e.jsxs(F,{value:n.role,onValueChange:t=>l({role:t}),children:[e.jsx(P,{children:e.jsx(z,{placeholder:"Select role"})}),e.jsx(L,{children:m.map(t=>e.jsx(A,{value:t.id,children:t.title},t.id))})]}),y&&e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:y})]})]})]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["You can also manage the Coconut's identity to other agents on the"," ",e.jsx(R,{to:"/identity",className:"underline underline-offset-4 hover:text-primary",children:"Identity page"}),"."]}),e.jsxs("div",{className:"flex justify-end space-x-2",children:[e.jsx(g,{variant:"outline",onClick:j,disabled:u,children:"Cancel"}),e.jsx(g,{onClick:w,disabled:u,children:u?"Saving...":"Save Changes"})]})]})}export{G as default};
1
+ import{r as a,H as I,A as S,j as e,a1 as D,B as g,I as p,v as F,w as P,x as z,y as L,z as A,L as R}from"./index-Bbxvuj4b.js";import{C as q,b as T,c as M,d as O,a as U}from"./card-D_zGBKua.js";import{L as c}from"./label-CZGCmBD7.js";import{C as B,a as H}from"./clipboard-D3NA8gb4.js";const m=[{id:"software-engineer",title:"Software Engineer",description:"Builds, refactors, and reviews high-quality code across stacks. Excellent at translating specs into implementation and optimizing system performance. Strong at debugging, architecture patterns, and accelerating development velocity."},{id:"product-strategist",title:"Product Strategist",description:"Defines product direction, clarifies requirements, and aligns work with user and business goals. Skilled in roadmap planning, prioritization, and transforming ambiguous ideas into actionable plans."},{id:"researcher",title:"Researcher",description:"Investigates topics deeply, synthesizes information, and produces evidence-based insights. Strong at literature review, competitive analysis, and generating clear summaries to inform decisions."},{id:"designer",title:"Designer",description:"Creates intuitive interfaces, user flows, and visual assets. Focused on usability, accessibility, and crafting polished experiences. Strong at wireframing and turning requirements into elegant solutions."},{id:"qa-engineer",title:"QA Engineer",description:"Identifies bugs, edge cases, and reliability gaps. Produces test plans, automated tests, and reproducible reports. Strong at ensuring product quality and preventing regressions."},{id:"devops-engineer",title:"DevOps Engineer",description:"Manages infrastructure, deployments, and operational reliability. Skilled with CI/CD, observability, automation, and environment provisioning. Ensures systems are scalable and fault-tolerant."},{id:"data-analyst",title:"Data Analyst",description:"Analyzes data, defines metrics, and generates actionable insights. Strong in SQL, visualization, experimentation, and turning raw data into strategic recommendations."},{id:"marketer",title:"Marketer",description:"Creates campaigns, messaging, and positioning to reach target audiences. Skilled in content, funnels, and brand strategy. Strong at synthesizing market needs and shaping demand."},{id:"sales-partnerships-agent",title:"Sales & Partnerships Agent",description:"Identifies prospects, crafts outreach, and develops strategic relationships. Strong at value articulation, objection handling, and mapping product capabilities to customer needs."},{id:"growth-operator",title:"Growth Operator",description:"Optimizes acquisition, activation, and retention through experimentation. Skilled in funnel analysis, rapid testing, and leveraging data for compounding growth."},{id:"customer-success-specialist",title:"Customer Success Specialist",description:"Ensures users succeed by providing onboarding, guidance, and proactive support. Strong at diagnosing user challenges and improving long-term satisfaction and retention."},{id:"orchestration-engineer",title:"Orchestration Engineer",description:"Coordinates multi-agent workflows, dependencies, and handoffs. Strong at breaking large tasks into sequenced steps and ensuring agents operate cohesively and efficiently."},{id:"context-curator",title:"Context Curator",description:"Maintains clean, accurate project context by organizing files, logs, and knowledge. Strong at eliminating ambiguity, ensuring agents have the right information at the right time."},{id:"documentation-writer",title:"Documentation Writer",description:"Produces clear technical docs, guides, READMEs, and CP summaries. Strong at structuring complex information and keeping knowledge bases up to date and accessible."}];function G(){const[n,h]=a.useState({}),[r,d]=a.useState(null),[f,x]=a.useState(!1),[b,N]=a.useState(!0),[u,v]=a.useState(!1),{toast:o}=I();a.useEffect(()=>{j()},[]);const j=async()=>{try{try{const t=await fetch(`${S}/api/v1/config`),s=await t.json();if(t.ok&&s?.success){const i=s.data?.coconut||{};d(i.id??null),(i.firstName||i.lastName||i.email||i.role||i.roleDescription)&&h({firstName:i.firstName,lastName:i.lastName,email:i.email,role:i.role,roleDescription:i.roleDescription})}else d(null)}catch(t){console.error("Failed to load coconut config:",t),d(null)}}catch(t){console.error("Failed to load settings:",t),o({title:"Error",description:"Failed to load user settings",variant:"destructive"})}finally{N(!1)}},w=async()=>{v(!0);try{const s=await(await fetch(`${S}/api/v1/config`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({coconut:{...n,id:r||void 0}})})).json();if(s.success)o({title:"Success",description:"Settings saved successfully"});else throw new Error(s.error||"Failed to save settings")}catch(t){console.error("Failed to save settings:",t),o({title:"Error",description:"Failed to save settings",variant:"destructive"})}finally{v(!1)}},l=t=>{h(s=>{const i={...s,...t};if(t.role!==void 0){const C=m.find(E=>E.id===t.role);C?.description&&(i.roleDescription=C.description)}return i})},y=a.useMemo(()=>n.role&&m.find(s=>s.id===n.role)?.description||null,[n.role]),k=async()=>{if(r)try{await navigator.clipboard.writeText(r),x(!0),o({title:"Copied",description:"Coconut ID copied to clipboard."}),setTimeout(()=>x(!1),1500)}catch(t){console.error("Failed to copy coconut ID:",t),o({title:"Copy failed",description:"Unable to copy the Coconut ID to the clipboard.",variant:"destructive"})}};return b?e.jsx("div",{children:"Loading..."}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:"Coconut Settings"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Manage the Coconut's profile information."})]}),e.jsx(D,{}),e.jsx("div",{className:"rounded-lg border border-dashed bg-muted/40 p-4",children:r?e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("h4",{className:"text-sm font-medium text-muted-foreground",children:"Coconut ID"}),e.jsx("p",{className:"mt-1 font-mono text-sm",children:r})]}),e.jsxs(g,{variant:"outline",size:"sm",onClick:k,children:[f?e.jsx(B,{className:"h-4 w-4"}):e.jsx(H,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2",children:f?"Copied":"Copy"})]})]}):e.jsxs("div",{className:"space-y-1",children:[e.jsx("h4",{className:"text-sm font-medium text-muted-foreground",children:"Coconut ID not configured"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Add an `id` under the `coconut` section in `.nut/config.json` to register this Coconut instance."})]})}),e.jsxs(q,{children:[e.jsxs(T,{children:[e.jsx(M,{children:"Coconut Profile"}),e.jsx(O,{children:"Update the Coconut's identifying details and role."})]}),e.jsxs(U,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(c,{htmlFor:"firstName",children:"First Name"}),e.jsx(p,{id:"firstName",value:n.firstName||"",onChange:t=>l({firstName:t.target.value}),placeholder:"Enter first name"})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"lastName",children:"Last Name"}),e.jsx(p,{id:"lastName",value:n.lastName||"",onChange:t=>l({lastName:t.target.value}),placeholder:"Enter last name"})]})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"email",children:"Email"}),e.jsx(p,{id:"email",type:"email",value:n.email||"",onChange:t=>l({email:t.target.value}),placeholder:"Enter email address"})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"role",children:"Role"}),e.jsxs(F,{value:n.role,onValueChange:t=>l({role:t}),children:[e.jsx(P,{children:e.jsx(z,{placeholder:"Select role"})}),e.jsx(L,{children:m.map(t=>e.jsx(A,{value:t.id,children:t.title},t.id))})]}),y&&e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:y})]})]})]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["You can also manage the Coconut's identity to other agents on the"," ",e.jsx(R,{to:"/identity",className:"underline underline-offset-4 hover:text-primary",children:"Identity page"}),"."]}),e.jsxs("div",{className:"flex justify-end space-x-2",children:[e.jsx(g,{variant:"outline",onClick:j,disabled:u,children:"Cancel"}),e.jsx(g,{onClick:w,disabled:u,children:u?"Saving...":"Save Changes"})]})]})}export{G as default};
@@ -1 +1 @@
1
- import{u as k,H as w,r as n,j as e,B as g,af as b,L as C,A as S,a4 as I}from"./index-BSBM4i_g.js";import{C as R,a as B}from"./card-Cnz8b7Ou.js";import{u as Q}from"./use-terminal-CN3pheMp.js";import{C as $}from"./circle-play-TJEfmKde.js";import{P as O}from"./play-DsDsjO2V.js";function L(){const o=k(),{loading:l,createSession:d,refreshSessions:j}=Q(),{toast:i}=w(),[m,u]=n.useState(!1),[x,h]=n.useState(!1),[,f]=n.useState([]),[c,y]=n.useState({});n.useEffect(()=>{try{const t=localStorage.getItem("terminal.commandHistory");t&&f(JSON.parse(t))}catch{}},[]),n.useEffect(()=>{(async()=>{try{const s=await fetch(`${S}/api/v1/context/architecture`);if(!s.ok)return;const a=await s.json();a?.success&&a?.document?.metadata?.commands&&y(a.document.metadata.commands)}catch{}})()},[]);const p=t=>{t&&f(s=>{const a=[t,...s.filter(r=>r!==t)].slice(0,5);try{localStorage.setItem("terminal.commandHistory",JSON.stringify(a))}catch{}return a})},N=async t=>{const s=(t||"").trim();if(!s)return;const a=`session-${Date.now()}`;u(!0);try{await d(a,!1,s)?(p(s),i({title:"Session started",description:`${a}`}),o(`/terminal/${a}`)):i({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{u(!1)}},v=async t=>{const s=(t||"").trim();if(!s)return;const a=`session-${Date.now()}`;h(!0);try{await d(a,!1,s)?(p(s),setTimeout(()=>j(),150),i({title:"Started in background",description:`${a}`,action:e.jsx(I,{altText:"Open session",onClick:()=>o(`/terminal/${a}`),children:"Open"})})):i({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{h(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Utilities"}),e.jsx("p",{className:"text-muted-foreground",children:"Quick commands and shortcuts"})]})}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Quick Commands"}),e.jsx(R,{children:e.jsx(B,{className:"pt-6",children:c&&Object.keys(c).length>0?e.jsx("div",{className:"space-y-2",children:e.jsx("div",{className:"rounded-md border divide-y",children:Object.entries(c).map(([t,s])=>e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 p-2",children:[e.jsxs("div",{className:"flex-1 min-w-0 flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2",children:[e.jsx("span",{className:"text-sm font-medium truncate",children:t}),e.jsx("span",{className:"text-muted-foreground hidden sm:inline",children:":"}),e.jsx("span",{className:"truncate max-w-full",children:e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded text-xs",children:s})})]}),e.jsxs("div",{className:"flex items-center gap-1 sm:gap-2 flex-shrink-0",children:[e.jsxs(g,{onClick:()=>v(s),variant:"secondary",size:"sm",disabled:l||x||m,title:"Run in background",children:[e.jsx($,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Background"})]}),e.jsxs(g,{onClick:()=>N(s),size:"sm",disabled:l||m||x,title:"Run",children:[e.jsx(O,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Run"})]})]})]},t))})}):e.jsxs("div",{className:"flex flex-col items-center justify-center text-center space-y-3 py-8",children:[e.jsx(b,{className:"h-12 w-12 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:"No quick commands configured"}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-md leading-relaxed",children:"Quick commands let you run common tasks with one click, like starting your development server or running build scripts."}),e.jsxs("p",{className:"text-sm text-muted-foreground max-w-md mt-2",children:["Set them up in the"," ",e.jsx(C,{to:"/context/architecture/edit",className:"text-primary hover:underline font-medium",children:"Quick Commands section"}),"."]})]})]})})})]})]})}export{L as default};
1
+ import{u as k,H as w,r as n,j as e,B as g,af as b,L as C,A as S,a4 as I}from"./index-Bbxvuj4b.js";import{C as R,a as B}from"./card-D_zGBKua.js";import{u as Q}from"./use-terminal-CNk4WtA6.js";import{C as $}from"./circle-play-BlGnYWUU.js";import{P as O}from"./play-8b83f5X0.js";function L(){const o=k(),{loading:l,createSession:d,refreshSessions:j}=Q(),{toast:i}=w(),[m,u]=n.useState(!1),[x,h]=n.useState(!1),[,f]=n.useState([]),[c,y]=n.useState({});n.useEffect(()=>{try{const t=localStorage.getItem("terminal.commandHistory");t&&f(JSON.parse(t))}catch{}},[]),n.useEffect(()=>{(async()=>{try{const s=await fetch(`${S}/api/v1/context/architecture`);if(!s.ok)return;const a=await s.json();a?.success&&a?.document?.metadata?.commands&&y(a.document.metadata.commands)}catch{}})()},[]);const p=t=>{t&&f(s=>{const a=[t,...s.filter(r=>r!==t)].slice(0,5);try{localStorage.setItem("terminal.commandHistory",JSON.stringify(a))}catch{}return a})},N=async t=>{const s=(t||"").trim();if(!s)return;const a=`session-${Date.now()}`;u(!0);try{await d(a,!1,s)?(p(s),i({title:"Session started",description:`${a}`}),o(`/terminal/${a}`)):i({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{u(!1)}},v=async t=>{const s=(t||"").trim();if(!s)return;const a=`session-${Date.now()}`;h(!0);try{await d(a,!1,s)?(p(s),setTimeout(()=>j(),150),i({title:"Started in background",description:`${a}`,action:e.jsx(I,{altText:"Open session",onClick:()=>o(`/terminal/${a}`),children:"Open"})})):i({title:"Failed to start",description:"See error above",variant:"destructive"})}finally{h(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Utilities"}),e.jsx("p",{className:"text-muted-foreground",children:"Quick commands and shortcuts"})]})}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Quick Commands"}),e.jsx(R,{children:e.jsx(B,{className:"pt-6",children:c&&Object.keys(c).length>0?e.jsx("div",{className:"space-y-2",children:e.jsx("div",{className:"rounded-md border divide-y",children:Object.entries(c).map(([t,s])=>e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 p-2",children:[e.jsxs("div",{className:"flex-1 min-w-0 flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2",children:[e.jsx("span",{className:"text-sm font-medium truncate",children:t}),e.jsx("span",{className:"text-muted-foreground hidden sm:inline",children:":"}),e.jsx("span",{className:"truncate max-w-full",children:e.jsx("code",{className:"bg-muted px-2 py-0.5 rounded text-xs",children:s})})]}),e.jsxs("div",{className:"flex items-center gap-1 sm:gap-2 flex-shrink-0",children:[e.jsxs(g,{onClick:()=>v(s),variant:"secondary",size:"sm",disabled:l||x||m,title:"Run in background",children:[e.jsx($,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Background"})]}),e.jsxs(g,{onClick:()=>N(s),size:"sm",disabled:l||m||x,title:"Run",children:[e.jsx(O,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"Run"})]})]})]},t))})}):e.jsxs("div",{className:"flex flex-col items-center justify-center text-center space-y-3 py-8",children:[e.jsx(b,{className:"h-12 w-12 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:"No quick commands configured"}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-md leading-relaxed",children:"Quick commands let you run common tasks with one click, like starting your development server or running build scripts."}),e.jsxs("p",{className:"text-sm text-muted-foreground max-w-md mt-2",children:["Set them up in the"," ",e.jsx(C,{to:"/context/architecture/edit",className:"text-primary hover:underline font-medium",children:"Quick Commands section"}),"."]})]})]})})})]})]})}export{L as default};
@@ -1 +1 @@
1
- import{r,j as a,f as o}from"./index-BSBM4i_g.js";const v=r.forwardRef(({className:e,variant:t="default",...s},d)=>{const l="relative w-full rounded-lg border px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",i=t==="destructive"?"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive":"bg-background text-foreground";return a.jsx("div",{ref:d,role:"alert",className:o(l,i,e),...s})});v.displayName="Alert";const c=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:o("text-sm [&_p]:leading-relaxed",e),...t}));c.displayName="AlertDescription";export{v as A,c as a};
1
+ import{r,j as a,f as o}from"./index-Bbxvuj4b.js";const v=r.forwardRef(({className:e,variant:t="default",...s},d)=>{const l="relative w-full rounded-lg border px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",i=t==="destructive"?"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive":"bg-background text-foreground";return a.jsx("div",{ref:d,role:"alert",className:o(l,i,e),...s})});v.displayName="Alert";const c=r.forwardRef(({className:e,...t},s)=>a.jsx("div",{ref:s,className:o("text-sm [&_p]:leading-relaxed",e),...t}));c.displayName="AlertDescription";export{v as A,c as a};
@@ -1,4 +1,4 @@
1
- import{c as o}from"./index-BSBM4i_g.js";/**
1
+ import{c as o}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as o}from"./index-BSBM4i_g.js";/**
1
+ import{c as o}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as o}from"./index-BSBM4i_g.js";/**
1
+ import{c as o}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{j as o,f as n,bb as a}from"./index-BSBM4i_g.js";const s=a("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i({className:r,variant:e,...t}){return o.jsx("div",{className:n(s({variant:e}),r),...t})}export{i as B};
1
+ import{j as o,f as n,bb as a}from"./index-Bbxvuj4b.js";const s=a("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i({className:r,variant:e,...t}){return o.jsx("div",{className:n(s({variant:e}),r),...t})}export{i as B};
@@ -0,0 +1,6 @@
1
+ import{c as z,r,j as e,D as G,a as J,b as K,d as Q,I as V,n as M,S as W,f as X,$ as Y,B}from"./index-Bbxvuj4b.js";import{B as v}from"./badge-D7ZZbMEG.js";import{a as Z}from"./registry-ANRa5WBi.js";import{S as O}from"./search-CrIdR7ah.js";/**
2
+ * @license lucide-react v0.542.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const ee=[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]],ne=z("library",ee),te="Browse Registry",se="Import";function oe({open:f,categoryId:n,onOpenChange:x,title:F=te,confirmLabel:A=se,filterTags:o,onConfirm:I,getDetail:R,renderPreview:_}){const[c,y]=r.useState([]),[P,N]=r.useState(!1),[w,S]=r.useState(null),[l,b]=r.useState(null),[h,L]=r.useState({}),[T,g]=r.useState(!1),[E,j]=r.useState(null),[d,C]=r.useState(""),[p,k]=r.useState(!1);r.useEffect(()=>{if(!f)return;N(!0),S(null),b(null),j(null),g(!1),L({}),C("");const t=Array.isArray(n)?n:[n];Promise.all(t.map(s=>Z(s))).then(s=>{const a=s.flatMap(u=>u.elements??[]);y(a)}).catch(s=>{console.error("Failed to load registry category",s),y([]),S("Failed to load registry entries")}).finally(()=>N(!1))},[f,n]);const D=r.useMemo(()=>{let t=c;if(o&&o.length>0&&(t=t.filter(a=>{const u=a.tags??[];return o.some(q=>u.some(H=>H.toLowerCase()===q.toLowerCase()))})),!d.trim())return t;const s=d.trim().toLowerCase();return t.filter(a=>[a.name,a.description,a.preview,...a.tags??[]].filter(Boolean).join(" ").toLowerCase().includes(s))},[c,d,o]),i=r.useMemo(()=>l?c.find(t=>t.id===l)??null:null,[c,l]),m=r.useMemo(()=>l?h[l]?.detail??null:null,[l,h]),U=async t=>{if(b(t.id),j(null),!h?.[t.id]?.detail){g(!0);try{const s=await R(t);L(a=>({...a??{},[t.id]:{detail:s,fetchedAt:Date.now()}}))}catch(s){console.error("Failed to load registry element detail",s),j("Unable to load detail for this entry")}finally{g(!1)}}},$=async()=>{if(!(!i||!m)){k(!0);try{await I(i,m),x(!1)}catch(t){console.error("Failed to import registry element",t)}finally{k(!1)}}};return e.jsx(G,{open:f,onOpenChange:x,children:e.jsxs(J,{className:"max-w-5xl h-[80vh] flex flex-col",children:[e.jsx(K,{children:e.jsx(Q,{children:F})}),e.jsx("div",{className:"flex flex-col gap-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(O,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(V,{value:d,onChange:t=>C(t.target.value),placeholder:"Search registry entries",className:"pl-9"})]})}),e.jsxs("div",{className:"flex-1 flex gap-4 min-h-0",children:[e.jsx("div",{className:"w-1/3 border-r pr-3",children:P?e.jsxs("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:[e.jsx(M,{className:"h-4 w-4 animate-spin mr-2"}),"Loading entries…"]}):w?e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:w}):D.length===0?e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"No entries found"}):e.jsx(W,{className:"h-full",children:e.jsx("div",{className:"space-y-1 pb-4",children:D.map(t=>e.jsxs("button",{onClick:()=>U(t),className:X("w-full rounded-md border border-transparent p-3 text-left transition-colors hover:border-border hover:bg-muted/40",l===t.id&&"border-primary bg-muted"),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium",children:t.name}),e.jsx("p",{className:"mt-1 line-clamp-2 text-xs text-muted-foreground",children:t.description||t.preview})]}),t.version&&e.jsxs(v,{variant:"outline",className:"text-[10px] font-medium uppercase",children:["v",t.version]})]}),t.tags&&t.tags.length>0&&e.jsxs("div",{className:"mt-2 flex flex-wrap gap-1",children:[t.tags.slice(0,4).map(s=>e.jsx(v,{variant:"secondary",className:"text-[10px] font-normal",children:s},s)),t.tags.length>4&&e.jsxs(v,{variant:"outline",className:"text-[10px] font-normal",children:["+",t.tags.length-4]})]})]},t.id))})})}),e.jsx("div",{className:"flex-1 min-w-0 overflow-hidden",children:T?e.jsxs("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:[e.jsx(M,{className:"h-5 w-5 animate-spin mr-2"}),"Loading detail…"]}):E?e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:E}):i?e.jsx("div",{className:"h-full overflow-hidden",children:_(i,m)}):e.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"Select an entry to preview"})})]}),e.jsxs(Y,{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:i?`Selected: ${i.name}`:"No entry selected"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(B,{variant:"outline",onClick:()=>x(!1),disabled:p,children:"Cancel"}),e.jsx(B,{onClick:$,disabled:!i||!m||p,children:p?"Importing…":A})]})]})]})})}export{ne as L,oe as R};
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-BSBM4i_g.js";/**
1
+ import{c as e}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{r,j as d,f as t}from"./index-BSBM4i_g.js";const o=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("rounded-xl border bg-card text-card-foreground shadow",a),...e}));o.displayName="Card";const c=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("flex flex-col space-y-1.5 p-6",a),...e}));c.displayName="CardHeader";const i=r.forwardRef(({className:a,...e},s)=>d.jsx("h3",{ref:s,className:t("font-semibold leading-none tracking-tight",a),...e}));i.displayName="CardTitle";const n=r.forwardRef(({className:a,...e},s)=>d.jsx("p",{ref:s,className:t("text-sm text-muted-foreground",a),...e}));n.displayName="CardDescription";const l=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("p-6 pt-0",a),...e}));l.displayName="CardContent";const f=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("flex items-center p-6 pt-0",a),...e}));f.displayName="CardFooter";export{o as C,l as a,c as b,i as c,n as d,f as e};
1
+ import{r,j as d,f as t}from"./index-Bbxvuj4b.js";const o=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("rounded-xl border bg-card text-card-foreground shadow",a),...e}));o.displayName="Card";const c=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("flex flex-col space-y-1.5 p-6",a),...e}));c.displayName="CardHeader";const i=r.forwardRef(({className:a,...e},s)=>d.jsx("h3",{ref:s,className:t("font-semibold leading-none tracking-tight",a),...e}));i.displayName="CardTitle";const n=r.forwardRef(({className:a,...e},s)=>d.jsx("p",{ref:s,className:t("text-sm text-muted-foreground",a),...e}));n.displayName="CardDescription";const l=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("p-6 pt-0",a),...e}));l.displayName="CardContent";const f=r.forwardRef(({className:a,...e},s)=>d.jsx("div",{ref:s,className:t("flex items-center p-6 pt-0",a),...e}));f.displayName="CardFooter";export{o as C,l as a,c as b,i as c,n as d,f as e};
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-BSBM4i_g.js";/**
1
+ import{c as e}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-BSBM4i_g.js";/**
1
+ import{c as e}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-BSBM4i_g.js";/**
1
+ import{c as a}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as o}from"./index-BSBM4i_g.js";/**
1
+ import{c as o}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-BSBM4i_g.js";/**
1
+ import{c}from"./index-Bbxvuj4b.js";/**
2
2
  * @license lucide-react v0.542.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.