nextclaw 0.48.2 → 0.48.3

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 (199) hide show
  1. package/dist/cli/app/index.js +1 -1
  2. package/dist/{nextclaw-cli-app-C1L77sjJ.js → nextclaw-cli-app-BJSCnCIN.js} +1 -2
  3. package/dist/{nextclaw-cli-app-C1L77sjJ.js.map → nextclaw-cli-app-BJSCnCIN.js.map} +1 -1
  4. package/package.json +13 -13
  5. package/resources/USAGE.md +1 -5
  6. package/ui-dist/.vite/manifest.json +517 -517
  7. package/ui-dist/.vite/manifest.json.gz +0 -0
  8. package/ui-dist/assets/{account-panel-BxMlLXYH.js → account-panel-BRTSwNvA.js} +1 -1
  9. package/ui-dist/assets/account-panel-BRTSwNvA.js.gz +0 -0
  10. package/ui-dist/assets/{api-Utt-xzrT.js → api-BnUzdltV.js} +5 -5
  11. package/ui-dist/assets/api-BnUzdltV.js.gz +0 -0
  12. package/ui-dist/assets/{app-data-DYXDL6X2.js → app-data-Bjh_zM45.js} +1 -1
  13. package/ui-dist/assets/app-data-Bjh_zM45.js.gz +0 -0
  14. package/ui-dist/assets/app-presenter-provider-CBt-lyr_.js +109 -0
  15. package/ui-dist/assets/app-presenter-provider-CBt-lyr_.js.gz +0 -0
  16. package/ui-dist/assets/{appearance-settings-page-BfYznAK5.js → appearance-settings-page-BrOYSgG0.js} +1 -1
  17. package/ui-dist/assets/appearance-settings-page-BrOYSgG0.js.gz +0 -0
  18. package/ui-dist/assets/{book-open-DDW_3XpM.js → book-open-xqEj1OLE.js} +1 -1
  19. package/ui-dist/assets/{boxes-DwJeuK_h.js → boxes-D6uPnkGo.js} +1 -1
  20. package/ui-dist/assets/{card-IevY2nm-.js → card-CS8su2Zh.js} +1 -1
  21. package/ui-dist/assets/card-CS8su2Zh.js.gz +0 -0
  22. package/ui-dist/assets/{channels-list-page-DitnqbMR.js → channels-list-page-BE0TxB3B.js} +1 -1
  23. package/ui-dist/assets/channels-list-page-BE0TxB3B.js.gz +0 -0
  24. package/ui-dist/assets/{chevron-down-An7Km-t4.js → chevron-down-BL-yMYcX.js} +1 -1
  25. package/ui-dist/assets/{circle-alert-CDXqELuo.js → circle-alert-lSa3LRvS.js} +1 -1
  26. package/ui-dist/assets/{circle-dashed-CapXEpiV.js → circle-dashed-CU3yApvP.js} +1 -1
  27. package/ui-dist/assets/{client-B0krol7A.js → client-BtGBwLTs.js} +1 -1
  28. package/ui-dist/assets/{config-split-page-BtnkqWVp.js → config-split-page-BxDwwAGa.js} +1 -1
  29. package/ui-dist/assets/config-split-page-BxDwwAGa.js.gz +0 -0
  30. package/ui-dist/assets/{confirm-dialog-DFt4jpN7.js → confirm-dialog-S5JxZcS1.js} +1 -1
  31. package/ui-dist/assets/confirm-dialog-S5JxZcS1.js.gz +0 -0
  32. package/ui-dist/assets/{createLucideIcon-BTHK0Ot9.js → createLucideIcon-BNKf0_kc.js} +1 -1
  33. package/ui-dist/assets/{desktop-capabilities-page-CCf14WId.js → desktop-capabilities-page-BwHxJpbl.js} +1 -1
  34. package/ui-dist/assets/desktop-capabilities-page-BwHxJpbl.js.gz +0 -0
  35. package/ui-dist/assets/{desktop-update-config-DVoVgfFi.js → desktop-update-config-Bfg7OdJ2.js} +1 -1
  36. package/ui-dist/assets/desktop-update-config-Bfg7OdJ2.js.gz +0 -0
  37. package/ui-dist/assets/{dialog-BFN_1DBH.js → dialog-Xe73hpQz.js} +1 -1
  38. package/ui-dist/assets/dialog-Xe73hpQz.js.gz +0 -0
  39. package/ui-dist/assets/{dist-Bc9hOVNN.js → dist-BiIcnf9j.js} +1 -1
  40. package/ui-dist/assets/dist-BiIcnf9j.js.gz +0 -0
  41. package/ui-dist/assets/{dist-CEhIDAnr.js → dist-C5I0v8Qn.js} +1 -1
  42. package/ui-dist/assets/dist-C5I0v8Qn.js.gz +0 -0
  43. package/ui-dist/assets/{dist-hkVPP1th.js → dist-czPa8xFO.js} +1 -1
  44. package/ui-dist/assets/dist-czPa8xFO.js.gz +0 -0
  45. package/ui-dist/assets/doc-browser-BgRP0Wni.js +1 -0
  46. package/ui-dist/assets/{doc-browser-BNUxmwD6.js → doc-browser-C8eqJLi_.js} +1 -1
  47. package/ui-dist/assets/doc-browser-C8eqJLi_.js.gz +0 -0
  48. package/ui-dist/assets/{doc-browser-context-C4yQrKrH.js → doc-browser-context-BPCDFcC-.js} +1 -1
  49. package/ui-dist/assets/doc-browser-context-BPCDFcC-.js.gz +0 -0
  50. package/ui-dist/assets/{ellipsis-BRI6ROeu.js → ellipsis-C5YXdOUx.js} +1 -1
  51. package/ui-dist/assets/{es2015-MOCbM0Eu.js → es2015-cuwbYI-l.js} +1 -1
  52. package/ui-dist/assets/es2015-cuwbYI-l.js.gz +0 -0
  53. package/ui-dist/assets/{extensions-DxUBMtHW.js → extensions-DgKQRebe.js} +1 -1
  54. package/ui-dist/assets/extensions-DgKQRebe.js.gz +0 -0
  55. package/ui-dist/assets/{eye-cnynUDGt.js → eye-C84inPcV.js} +1 -1
  56. package/ui-dist/assets/{form-actions-gQ0JEUwB.js → form-actions-AIdXOoCL.js} +1 -1
  57. package/ui-dist/assets/{i18n-B9yXA8KO.js → i18n-CKvm9zyk.js} +2 -2
  58. package/ui-dist/assets/i18n-CKvm9zyk.js.gz +0 -0
  59. package/ui-dist/assets/{i18n-provider-BYBJua91.js → i18n-provider-CPV43pMX.js} +1 -1
  60. package/ui-dist/assets/loader-circle-K1BDdHR5.js +1 -0
  61. package/ui-dist/assets/login-page-ClcrvN04.js +1 -0
  62. package/ui-dist/assets/{login-page-CqrHhzaN.js → login-page-DeDQjVxv.js} +1 -1
  63. package/ui-dist/assets/login-page-DeDQjVxv.js.gz +0 -0
  64. package/ui-dist/assets/{logo-badge-Cr03YceJ.js → logo-badge-C-5-zim6.js} +1 -1
  65. package/ui-dist/assets/logo-badge-C-5-zim6.js.gz +0 -0
  66. package/ui-dist/assets/main-DGqlaAaI.css +1 -0
  67. package/ui-dist/assets/main-DGqlaAaI.css.gz +0 -0
  68. package/ui-dist/assets/main-i18n-catalog.config-CpNF5aVc.js +1 -0
  69. package/ui-dist/assets/main-i18n-catalog.config-CpNF5aVc.js.gz +0 -0
  70. package/ui-dist/assets/main-nMVfHb5K.js +2 -0
  71. package/ui-dist/assets/main-nMVfHb5K.js.gz +0 -0
  72. package/ui-dist/assets/{mcp-marketplace-page-CifiVgFD.js → mcp-marketplace-page-CWjJGp_D.js} +1 -1
  73. package/ui-dist/assets/mcp-marketplace-page-CWjJGp_D.js.gz +0 -0
  74. package/ui-dist/assets/mcp-marketplace-page-fvu2NcXT.js +1 -0
  75. package/ui-dist/assets/{model-config-page-C6jVNbSj.js → model-config-page-Dv_zE7HN.js} +1 -1
  76. package/ui-dist/assets/model-config-page-Dv_zE7HN.js.gz +0 -0
  77. package/ui-dist/assets/{navigation-link-kbCLRSr_.js → navigation-link-BAQjgx2F.js} +1 -1
  78. package/ui-dist/assets/navigation-link-BAQjgx2F.js.gz +0 -0
  79. package/ui-dist/assets/panel-app-i18n-catalog.config-BzxE3tZb.js +1 -0
  80. package/ui-dist/assets/{panelStandalone-DMBnYyTw.js → panelStandalone-CFRBHV94.js} +2 -2
  81. package/ui-dist/assets/panelStandalone-CFRBHV94.js.gz +0 -0
  82. package/ui-dist/assets/plus-LA8-jpxP.js +1 -0
  83. package/ui-dist/assets/{popover-XVDgjxcl.js → popover-NkrFlWHp.js} +1 -1
  84. package/ui-dist/assets/popover-NkrFlWHp.js.gz +0 -0
  85. package/ui-dist/assets/{privacy-settings-page-BN27MBVA.js → privacy-settings-page-D6uc9f-A.js} +1 -1
  86. package/ui-dist/assets/privacy-settings-page-D6uc9f-A.js.gz +0 -0
  87. package/ui-dist/assets/projects-BD1rG75R.js +1 -0
  88. package/ui-dist/assets/projects-BD1rG75R.js.gz +0 -0
  89. package/ui-dist/assets/{provider-scoped-model-input-BGZMCThn.js → provider-scoped-model-input-DUa_9uwg.js} +1 -1
  90. package/ui-dist/assets/provider-scoped-model-input-DUa_9uwg.js.gz +0 -0
  91. package/ui-dist/assets/{providers-config-page-D5aBwbOD.js → providers-config-page-DAiqxlF_.js} +1 -1
  92. package/ui-dist/assets/providers-config-page-DAiqxlF_.js.gz +0 -0
  93. package/ui-dist/assets/{puzzle-D5Dhacmb.js → puzzle-D6gulz7u.js} +1 -1
  94. package/ui-dist/assets/{pwa-ClQK56Qe.js → pwa-C_Zte1xe.js} +1 -1
  95. package/ui-dist/assets/pwa-C_Zte1xe.js.gz +0 -0
  96. package/ui-dist/assets/{refresh-cw-Bw5BY7vp.js → refresh-cw-h9Xq3LY3.js} +1 -1
  97. package/ui-dist/assets/remote-BO0QP7ua.js +1 -0
  98. package/ui-dist/assets/{rotate-cw-BksCLAeE.js → rotate-cw-B6xm41Wn.js} +1 -1
  99. package/ui-dist/assets/runtime-config-page-w1UAkGF_.js +1 -0
  100. package/ui-dist/assets/runtime-config-page-w1UAkGF_.js.gz +0 -0
  101. package/ui-dist/assets/{save-CVi8VWzb.js → save-fff_WpY2.js} +1 -1
  102. package/ui-dist/assets/{search-DN-f7IIC.js → search-CUe41wjm.js} +1 -1
  103. package/ui-dist/assets/{search-config-page-BmuZTVxs.js → search-config-page-3xbhRlW2.js} +1 -1
  104. package/ui-dist/assets/search-config-page-3xbhRlW2.js.gz +0 -0
  105. package/ui-dist/assets/{secrets-config-page-NPHpg9sb.js → secrets-config-page-Dn8_rdOj.js} +1 -1
  106. package/ui-dist/assets/secrets-config-page-Dn8_rdOj.js.gz +0 -0
  107. package/ui-dist/assets/security-config-Y1nEGM3A.js +1 -0
  108. package/ui-dist/assets/{select-CmDTqk2C.js → select-CG5YWnwe.js} +1 -1
  109. package/ui-dist/assets/select-CG5YWnwe.js.gz +0 -0
  110. package/ui-dist/assets/{service-apps-panel-BYGJ9_pO.js → service-apps-panel-CGc04aMn.js} +1 -1
  111. package/ui-dist/assets/service-apps-panel-CGc04aMn.js.gz +0 -0
  112. package/ui-dist/assets/{settings-2-B62YtZon.js → settings-2-CE3ELQyk.js} +1 -1
  113. package/ui-dist/assets/skeleton-BL9h32W7.js +1 -0
  114. package/ui-dist/assets/{tabs-Bk_mG7ql.js → tabs-BuE0qKMh.js} +1 -1
  115. package/ui-dist/assets/tabs-BuE0qKMh.js.gz +0 -0
  116. package/ui-dist/assets/{tag-chip-DgqKlI5D.js → tag-chip-BDzpHEli.js} +1 -1
  117. package/ui-dist/assets/{theme-provider-CeBY2pyu.js → theme-provider-B6FinATQ.js} +1 -1
  118. package/ui-dist/assets/theme-provider-B6FinATQ.js.gz +0 -0
  119. package/ui-dist/assets/{tooltip-CgGbBdYf.js → tooltip-DYcuWhuP.js} +1 -1
  120. package/ui-dist/assets/tooltip-DYcuWhuP.js.gz +0 -0
  121. package/ui-dist/assets/{trash-2-CVOev8yc.js → trash-2-BPPYt2NV.js} +1 -1
  122. package/ui-dist/assets/{use-config-b2DN67gs.js → use-config-BPUM2lbo.js} +1 -1
  123. package/ui-dist/assets/use-config-BPUM2lbo.js.gz +0 -0
  124. package/ui-dist/assets/{use-desktop-capabilities-B3tLU1yl.js → use-desktop-capabilities-BDjArQP3.js} +1 -1
  125. package/ui-dist/assets/use-desktop-capabilities-BDjArQP3.js.gz +0 -0
  126. package/ui-dist/assets/{use-panel-app-scroll-restoration-BekzoX6z.js → use-panel-app-scroll-restoration-DsV1IJx-.js} +1 -1
  127. package/ui-dist/assets/use-panel-app-scroll-restoration-DsV1IJx-.js.gz +0 -0
  128. package/ui-dist/assets/{use-viewport-layout-CUA3jQsA.js → use-viewport-layout-BS18drMT.js} +1 -1
  129. package/ui-dist/assets/use-viewport-layout-BS18drMT.js.gz +0 -0
  130. package/ui-dist/assets/{utils-UBHTdG5Q.js → utils-CBZPzC_b.js} +1 -1
  131. package/ui-dist/assets/{utils-UBHTdG5Q.js.gz → utils-CBZPzC_b.js.gz} +0 -0
  132. package/ui-dist/assets/x-DdXOqLnX.js +1 -0
  133. package/ui-dist/index.html +50 -50
  134. package/ui-dist/index.html.gz +0 -0
  135. package/ui-dist/panel-standalone.html +15 -15
  136. package/ui-dist/panel-standalone.html.gz +0 -0
  137. package/ui-dist/assets/account-panel-BxMlLXYH.js.gz +0 -0
  138. package/ui-dist/assets/api-Utt-xzrT.js.gz +0 -0
  139. package/ui-dist/assets/app-data-DYXDL6X2.js.gz +0 -0
  140. package/ui-dist/assets/app-presenter-provider-CLsFiXvV.js +0 -109
  141. package/ui-dist/assets/app-presenter-provider-CLsFiXvV.js.gz +0 -0
  142. package/ui-dist/assets/appearance-settings-page-BfYznAK5.js.gz +0 -0
  143. package/ui-dist/assets/card-IevY2nm-.js.gz +0 -0
  144. package/ui-dist/assets/channels-list-page-DitnqbMR.js.gz +0 -0
  145. package/ui-dist/assets/config-split-page-BtnkqWVp.js.gz +0 -0
  146. package/ui-dist/assets/confirm-dialog-DFt4jpN7.js.gz +0 -0
  147. package/ui-dist/assets/desktop-capabilities-page-CCf14WId.js.gz +0 -0
  148. package/ui-dist/assets/desktop-update-config-DVoVgfFi.js.gz +0 -0
  149. package/ui-dist/assets/dialog-BFN_1DBH.js.gz +0 -0
  150. package/ui-dist/assets/dist-Bc9hOVNN.js.gz +0 -0
  151. package/ui-dist/assets/dist-CEhIDAnr.js.gz +0 -0
  152. package/ui-dist/assets/dist-hkVPP1th.js.gz +0 -0
  153. package/ui-dist/assets/doc-browser-BNUxmwD6.js.gz +0 -0
  154. package/ui-dist/assets/doc-browser-context-C4yQrKrH.js.gz +0 -0
  155. package/ui-dist/assets/doc-browser-w4eGZXLu.js +0 -1
  156. package/ui-dist/assets/es2015-MOCbM0Eu.js.gz +0 -0
  157. package/ui-dist/assets/extensions-DxUBMtHW.js.gz +0 -0
  158. package/ui-dist/assets/i18n-B9yXA8KO.js.gz +0 -0
  159. package/ui-dist/assets/loader-circle-rWr5Yo0E.js +0 -1
  160. package/ui-dist/assets/login-page-CfMSkOsg.js +0 -1
  161. package/ui-dist/assets/login-page-CqrHhzaN.js.gz +0 -0
  162. package/ui-dist/assets/logo-badge-Cr03YceJ.js.gz +0 -0
  163. package/ui-dist/assets/main-8cVkMfgE.css +0 -1
  164. package/ui-dist/assets/main-8cVkMfgE.css.gz +0 -0
  165. package/ui-dist/assets/main-Bys58GxY.js +0 -2
  166. package/ui-dist/assets/main-Bys58GxY.js.gz +0 -0
  167. package/ui-dist/assets/main-i18n-catalog.config-BSq9yiUQ.js +0 -1
  168. package/ui-dist/assets/main-i18n-catalog.config-BSq9yiUQ.js.gz +0 -0
  169. package/ui-dist/assets/mcp-marketplace-page-CifiVgFD.js.gz +0 -0
  170. package/ui-dist/assets/mcp-marketplace-page-DX5VE3mU.js +0 -1
  171. package/ui-dist/assets/model-config-page-C6jVNbSj.js.gz +0 -0
  172. package/ui-dist/assets/navigation-link-kbCLRSr_.js.gz +0 -0
  173. package/ui-dist/assets/panel-app-i18n-catalog.config-C2St67SP.js +0 -1
  174. package/ui-dist/assets/panelStandalone-DMBnYyTw.js.gz +0 -0
  175. package/ui-dist/assets/plus-BHnKwuPq.js +0 -1
  176. package/ui-dist/assets/popover-XVDgjxcl.js.gz +0 -0
  177. package/ui-dist/assets/privacy-settings-page-BN27MBVA.js.gz +0 -0
  178. package/ui-dist/assets/projects-DV3UuJMS.js +0 -1
  179. package/ui-dist/assets/projects-DV3UuJMS.js.gz +0 -0
  180. package/ui-dist/assets/provider-scoped-model-input-BGZMCThn.js.gz +0 -0
  181. package/ui-dist/assets/providers-config-page-D5aBwbOD.js.gz +0 -0
  182. package/ui-dist/assets/pwa-ClQK56Qe.js.gz +0 -0
  183. package/ui-dist/assets/remote-Bl005fzu.js +0 -1
  184. package/ui-dist/assets/runtime-config-page-CmktQcMW.js +0 -1
  185. package/ui-dist/assets/runtime-config-page-CmktQcMW.js.gz +0 -0
  186. package/ui-dist/assets/search-config-page-BmuZTVxs.js.gz +0 -0
  187. package/ui-dist/assets/secrets-config-page-NPHpg9sb.js.gz +0 -0
  188. package/ui-dist/assets/security-config-Djptuyf2.js +0 -1
  189. package/ui-dist/assets/select-CmDTqk2C.js.gz +0 -0
  190. package/ui-dist/assets/service-apps-panel-BYGJ9_pO.js.gz +0 -0
  191. package/ui-dist/assets/skeleton-Eh64l4T2.js +0 -1
  192. package/ui-dist/assets/tabs-Bk_mG7ql.js.gz +0 -0
  193. package/ui-dist/assets/theme-provider-CeBY2pyu.js.gz +0 -0
  194. package/ui-dist/assets/tooltip-CgGbBdYf.js.gz +0 -0
  195. package/ui-dist/assets/use-config-b2DN67gs.js.gz +0 -0
  196. package/ui-dist/assets/use-desktop-capabilities-B3tLU1yl.js.gz +0 -0
  197. package/ui-dist/assets/use-panel-app-scroll-restoration-BekzoX6z.js.gz +0 -0
  198. package/ui-dist/assets/use-viewport-layout-CUA3jQsA.js.gz +0 -0
  199. package/ui-dist/assets/x-C0iaOsRW.js +0 -1
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DF37yw5_.js";import{A as t,M as n,O as r}from"./utils-UBHTdG5Q.js";import{d as i,f as a,i as o,n as s}from"./navigation-link-kbCLRSr_.js";import{Gt as c,Lt as l,Xt as u,Yt as d,bn as f,jn as p,vn as m,yn as h}from"./api-Utt-xzrT.js";import{C as g,a as _,b as v,c as y,i as b,n as x,o as S,r as C,s as w}from"./mcp-marketplace-page-CifiVgFD.js";import{A as T,H as E,N as ee,P as D,S as O,ct as te,st as ne}from"./app-presenter-provider-CLsFiXvV.js";import{n as k,r as A,s as j,t as M}from"./i18n-B9yXA8KO.js";import{t as N}from"./createLucideIcon-BTHK0Ot9.js";import{h as re}from"./app-data-DYXDL6X2.js";import{t as ie}from"./chevron-down-An7Km-t4.js";import{n as ae}from"./ellipsis-BRI6ROeu.js";import{S as oe,a as P,i as F,n as I,r as L,t as R}from"./select-CmDTqk2C.js";import{t as se}from"./circle-dashed-CapXEpiV.js";import{i as ce,n as z,r as le,t as ue}from"./tabs-Bk_mG7ql.js";import{t as de}from"./use-viewport-layout-CUA3jQsA.js";import{t as fe}from"./plus-BHnKwuPq.js";import{t as pe}from"./settings-2-B62YtZon.js";import{t as me}from"./confirm-dialog-DFt4jpN7.js";import{t as he}from"./trash-2-CVOev8yc.js";import{a as ge,i as _e,n as ve,o as ye,r as be,t as xe}from"./dialog-BFN_1DBH.js";import{a as Se,i as Ce,n as we,t as Te}from"./card-IevY2nm-.js";var Ee=N(`CircleX`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),De=N(`Circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Oe=N(`List`,[[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 18h.01`,key:`1tta3j`}],[`path`,{d:`M3 6h.01`,key:`1rqtza`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 18h13`,key:`1lx6n3`}],[`path`,{d:`M8 6h13`,key:`ik3vkj`}]]),ke=N(`Unlink`,[[`path`,{d:`m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71`,key:`yqzxt4`}],[`path`,{d:`m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71`,key:`4qinb0`}],[`line`,{x1:`8`,x2:`8`,y1:`2`,y2:`5`,key:`1041cp`}],[`line`,{x1:`2`,x2:`5`,y1:`8`,y2:`8`,key:`14m1p5`}],[`line`,{x1:`16`,x2:`16`,y1:`19`,y2:`22`,key:`rzdirn`}],[`line`,{x1:`19`,x2:`22`,y1:`16`,y2:`16`,key:`ox905f`}]]),B=e(n(),1),V=t();function H({title:e,children:t,className:n=``}){return(0,V.jsxs)(Te,{hover:!1,surface:`flat`,className:n,children:[(0,V.jsx)(Ce,{className:`p-4 pb-3`,children:(0,V.jsx)(Se,{children:e})}),(0,V.jsx)(we,{className:`p-4 pt-0`,children:t})]})}function U({children:e}){return(0,V.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:e})}function W({available:e,children:t,className:n,label:r,onOpen:i,path:a}){return e?(0,V.jsx)(`button`,{type:`button`,className:n,title:a,onClick:()=>i(a,r),children:t}):(0,V.jsx)(`div`,{className:n,children:t})}function Ae({snapshot:e,onOpenFile:t}){return(0,V.jsxs)(`div`,{className:`grid min-w-0 gap-4 lg:grid-cols-2`,children:[(0,V.jsxs)(H,{title:j(`projectsVisionAndContext`),children:[e.project.summary?(0,V.jsx)(`p`,{className:`mb-4 text-sm`,children:e.project.summary}):null,e.project.context.length?(0,V.jsx)(`div`,{className:`divide-y divide-border/60`,children:e.project.context.map(e=>(0,V.jsx)(je,{context:e,onOpenFile:t},e.id))}):(0,V.jsx)(U,{children:j(`projectsNoContext`)})]}),(0,V.jsxs)(H,{title:j(`projectsSourceHealth`),children:[(0,V.jsx)(`div`,{className:`space-y-2`,children:e.sources.map(e=>(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl bg-muted/45 p-3 text-sm`,children:[(0,V.jsx)(`span`,{children:e.label}),(0,V.jsxs)(`span`,{className:`text-muted-foreground`,children:[j(`projectsSource_${e.status}`),` · `,e.itemCount]})]},e.id))}),e.diagnostics.length?(0,V.jsx)(`div`,{className:`mt-4 space-y-2 border-t border-border/60 pt-4`,children:e.diagnostics.map(e=>(0,V.jsxs)(`div`,{className:`rounded-xl bg-muted/35 p-3 text-sm`,children:[(0,V.jsx)(`p`,{className:`font-medium`,children:e.code}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:e.message})]},e.id))}):null]})]})}function je({context:e,onOpenFile:t}){let{accessible:n,role:r,source:i}=e;return(0,V.jsxs)(W,{available:n,path:i,label:r,onOpen:t,className:`block w-full py-3 text-left first:pt-0 enabled:hover:text-foreground enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,V.jsx)(`span`,{className:`block text-sm font-medium`,children:r}),(0,V.jsxs)(`span`,{className:`mt-1 block truncate text-xs text-muted-foreground`,children:[i,n?``:` · ${j(`projectsUnavailable`)}`]})]})}var Me=`updated-desc`;function Ne(e,t){return`${e}${e.endsWith(`/`)||e.endsWith(`\\`)?``:`/`}${t}`}function Pe(e){if(!e)return-1/0;let t=new Date(e).getTime();return Number.isNaN(t)?-1/0:t}function Fe(e,t){return e.path.localeCompare(t.path)}function Ie(e,t=Me){return[...e].sort((e,n)=>{if(t===`name`)return Fe(e,n);let r=Pe(t===`created-desc`?e.fileCreatedAt??e.fileUpdatedAt:e.fileUpdatedAt??e.fileCreatedAt),i=Pe(t===`created-desc`?n.fileCreatedAt??n.fileUpdatedAt:n.fileUpdatedAt??n.fileCreatedAt);return(t===`updated-asc`?r-i:i-r)||Fe(e,n)})}function Le(e,t=new Date){if(!e)return`-`;let n=new Date(e),r=t.getTime()-n.getTime();if(Number.isNaN(n.getTime()))return e;if(r<6e4)return j(`projectsTimeJustNow`);let i=Math.floor(r/6e4);if(i<60)return j(`projectsTimeMinutesAgo`).replace(`{count}`,String(i));let a=Math.floor(i/60);if(a<24)return j(`projectsTimeHoursAgo`).replace(`{count}`,String(a));let o=Math.floor(a/24);return o===1?j(`projectsTimeYesterday`):o<7?j(`projectsTimeDaysAgo`).replace(`{count}`,String(o)):M(e)}var G=10;function Re(e,t,n){let r=t.trim().toLocaleLowerCase(),i=Ie(r?e.artifacts.filter(e=>e.path.toLocaleLowerCase().includes(r)):e.artifacts,n),a=new Map;for(let e of i){let t=a.get(e.categoryId)??[];t.push(e),a.set(e.categoryId,t)}let o=e.artifactCategories??[],s=new Set(o.map(e=>e.id)),c=o.flatMap(e=>{let t=a.get(e.id)??[];return t.length?[{...e,artifacts:t}]:[]}),l=[...a.entries()].filter(([e])=>!s.has(e)).map(([e,t])=>({id:e,label:t[0]?.categoryLabel??e,artifacts:t})).sort((e,t)=>e.label.localeCompare(t.label));return[...c,...l]}function ze({snapshot:e,onOpenFile:t}){let[n,r]=(0,B.useState)(``),[i,a]=(0,B.useState)(Me),[o,s]=(0,B.useState)(()=>new Set),[c,l]=(0,B.useState)({}),u=(0,B.useMemo)(()=>Re(e,n,i),[n,e,i]),d=e.artifacts.some(e=>e.fileCreatedAt);return e.artifacts.length?(0,V.jsxs)(`section`,{className:`min-w-0`,"aria-label":j(`projectsArtifacts`),children:[(0,V.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[A(e.artifacts.length),` `,j(`projectsArtifactsCountSuffix`)]}),(0,V.jsxs)(`div`,{className:`flex w-full flex-wrap items-center gap-2 sm:w-auto`,children:[(0,V.jsxs)(R,{value:i,onValueChange:e=>a(e),children:[(0,V.jsx)(F,{"aria-label":j(`projectsArtifactsSort`),className:`h-8 w-32 rounded-lg`,children:(0,V.jsx)(P,{})}),(0,V.jsxs)(I,{children:[(0,V.jsx)(L,{value:`updated-desc`,children:j(`projectsArtifactsSortUpdatedDesc`)}),(0,V.jsx)(L,{value:`updated-asc`,children:j(`projectsArtifactsSortUpdatedAsc`)}),d?(0,V.jsx)(L,{value:`created-desc`,children:j(`projectsArtifactsSortCreatedDesc`)}):null,(0,V.jsx)(L,{value:`name`,children:j(`projectsArtifactsSortName`)})]})]}),(0,V.jsx)(`input`,{type:`search`,value:n,className:`h-8 min-w-0 flex-1 rounded-lg border border-border/60 bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-border sm:w-60`,placeholder:j(`projectsArtifactsSearchPlaceholder`),onChange:e=>{r(e.target.value),l({})}})]})]}),u.length?(0,V.jsx)(`div`,{className:`space-y-2`,children:u.map(e=>{let n=o.has(e.id),r=c[e.id]??G,i=e.artifacts.slice(0,r);return(0,V.jsxs)(`section`,{className:`overflow-hidden rounded-xl border border-border/60`,children:[(0,V.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-3 bg-muted/30 px-3 py-2.5 text-left text-sm transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-label":`${e.label} ${A(e.artifacts.length)}`,"aria-expanded":!n,onClick:()=>s(t=>{let n=new Set(t);return n.has(e.id)?n.delete(e.id):n.add(e.id),n}),children:[(0,V.jsx)(`span`,{className:`min-w-0 truncate font-medium`,children:e.label}),(0,V.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[A(e.artifacts.length),` `,n?`▸`:`▾`]})]}),n?null:(0,V.jsxs)(`div`,{className:`divide-y divide-border/60`,children:[i.map(e=>(0,V.jsxs)(W,{available:e.exists,path:e.path,label:e.path,onOpen:t,className:`flex w-full min-w-0 items-center gap-3 px-3 py-2.5 text-left text-sm transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.path}),e.fileUpdatedAt?(0,V.jsx)(`time`,{className:`shrink-0 text-xs text-muted-foreground`,dateTime:e.fileUpdatedAt,title:k(e.fileUpdatedAt),children:Le(e.fileUpdatedAt)}):null,e.exists?null:(0,V.jsx)(`span`,{className:`shrink-0 text-xs text-destructive`,children:j(`projectsUnavailable`)})]},e.id)),e.artifacts.length>i.length?(0,V.jsxs)(`button`,{type:`button`,className:`w-full px-3 py-2.5 text-left text-sm text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>l(t=>({...t,[e.id]:r+G})),children:[j(`projectsArtifactsShowMore`),` (`,A(Math.min(G,e.artifacts.length-i.length)),`)`]}):null]})]},e.id)})}):(0,V.jsx)(U,{children:j(`projectsArtifactsNoMatches`)})]}):(0,V.jsx)(U,{children:j(`projectsNoArtifacts`)})}var K=e=>[`project-work`,e],q=e=>[`project-work-summary`,e],J=e=>[`project-work-states`,e],Y=e=>[`project-work-artifacts`,e],X=(e,t)=>[`project-work-item`,e,t],Z=(e,t)=>[`project-work-activity`,e,t];function Be(e,t={}){return g({queryKey:[...K(e??``),t],enabled:!!e,initialPageParam:null,queryFn:async({pageParam:n})=>await l.projects.listWork(e,{...t,...n?{cursor:n}:{}}),getNextPageParam:e=>e.nextCursor})}function Ve(e){return f({queryKey:q(e??``),enabled:!!e,queryFn:async()=>await l.projects.getWorkSummary(e)})}function He(e){return f({queryKey:J(e??``),enabled:!!e,queryFn:async()=>await l.projects.listWorkStates(e)})}function Ue(e,t=5){return f({queryKey:[...Y(e??``),t],enabled:!!e,queryFn:async()=>await l.projects.listRecentWorkArtifacts(e,{limit:t})})}function We(e,t){return f({queryKey:X(e??``,t??``),enabled:!!(e&&t),queryFn:async()=>await l.projects.getWorkItem(e,t)})}function Ge(e,t){return f({queryKey:Z(e??``,t??``),enabled:!!(e&&t),queryFn:async()=>await l.projects.listWorkItemActivities(e,t,{limit:100})})}function Q(e){let t=p(),n=async n=>{await Promise.all([t.invalidateQueries({queryKey:K(e)}),t.invalidateQueries({queryKey:q(e)}),t.invalidateQueries({queryKey:J(e)}),t.invalidateQueries({queryKey:Y(e)}),...n?[t.invalidateQueries({queryKey:X(e,n)}),t.invalidateQueries({queryKey:Z(e,n)})]:[]])};return{createItem:h({mutationFn:async t=>await l.projects.createWorkItem(e,t),onSuccess:async e=>await n(e.id)}),updateItem:h({mutationFn:async t=>await l.projects.updateWorkItem(e,t.workItemId,t.patch),onSuccess:async e=>await n(e.id)}),deleteItem:h({mutationFn:async t=>await l.projects.deleteWorkItem(e,t),onSuccess:async e=>await n(e.id)}),restoreItem:h({mutationFn:async t=>await l.projects.restoreWorkItem(e,t),onSuccess:async e=>await n(e.id)}),linkArtifact:h({mutationFn:async t=>await l.projects.linkWorkItemArtifact(e,t.workItemId,{path:t.path,...t.label?{label:t.label}:{}}),onSuccess:async(e,t)=>await n(t.workItemId)}),unlinkArtifact:h({mutationFn:async t=>await l.projects.unlinkWorkItemArtifact(e,t.workItemId,t.artifactLinkId),onSuccess:async(e,t)=>await n(t.workItemId)}),createState:h({mutationFn:async t=>await l.projects.createWorkState(e,t),onSuccess:async()=>await n()}),updateState:h({mutationFn:async t=>await l.projects.updateWorkState(e,t.stateId,t.patch),onSuccess:async()=>await n()}),deleteState:h({mutationFn:async t=>await l.projects.deleteWorkState(e,t.stateId,t.migrateToStateId),onSuccess:async()=>await n()})}}function Ke(e){let t=p();(0,B.useEffect)(()=>{if(e)return l.eventBus.on(r.projectWorkChanged,n=>{n.projectId===e&&(t.invalidateQueries({queryKey:K(e)}),t.invalidateQueries({queryKey:q(e)}),t.invalidateQueries({queryKey:J(e)}),t.invalidateQueries({queryKey:Y(e)}),n.workItemId&&(t.invalidateQueries({queryKey:X(e,n.workItemId)}),t.invalidateQueries({queryKey:Z(e,n.workItemId)})))})},[e,t])}function qe(e){return[...e].sort((e,t)=>e.position-t.position||e.name.localeCompare(t.name))}var Je={started:0,unstarted:1,backlog:2,completed:3,canceled:4};function Ye(e){return[...e].sort((e,t)=>{let n=Je[e.category]-Je[t.category];return n===0?e.category===`completed`||e.category===`canceled`?e.position-t.position||e.name.localeCompare(t.name):t.position-e.position||e.name.localeCompare(t.name):n})}var Xe={Backlog:`projectsWorkState_backlog`,Planned:`projectsWorkState_planned`,"In Progress":`projectsWorkState_inProgress`,"In Review":`projectsWorkState_inReview`,"Awaiting Acceptance":`projectsWorkState_awaitingAcceptance`,Completed:`projectsWorkState_completed`,Canceled:`projectsWorkState_canceled`};function $(e,t){let n=Xe[e];return n?t?j(n,t):j(n):e}function Ze({projectId:e,onOpenArtifact:t,onOpenWorkItem:n}){Ke(e);let r=Ve(e),i=Be(e,{limit:5}),a=Ue(e,5),o=i.data?.pages.flatMap(e=>e.items).slice(0,5)??[];return(0,V.jsxs)(`div`,{className:`space-y-5`,children:[(0,V.jsx)(`section`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,"aria-label":j(`projectsWorkSummary`),children:r.data?[[`projectsWorkTotal`,r.data.total],[`projectsWorkActive`,r.data.active],[`projectsWorkNeedsAttention`,r.data.attention],[`projectsWorkCompleted`,r.data.completed]].map(([e,t])=>(0,V.jsxs)(`div`,{className:`rounded-xl border border-border/60 bg-card p-4`,children:[(0,V.jsx)(`div`,{className:`text-2xl font-semibold`,children:t}),(0,V.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:j(e)})]},e)):(0,V.jsx)(`div`,{className:`col-span-full rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:r.isError?j(`projectsLoadFailed`):j(`projectsLoading`)})}),(0,V.jsxs)(`div`,{className:`grid min-w-0 gap-4 lg:grid-cols-2`,children:[(0,V.jsx)(H,{title:j(`projectsWorkRecentlyUpdated`),children:i.isLoading?(0,V.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:j(`projectsLoading`)}):i.isError?(0,V.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:j(`projectsLoadFailed`)}):o.length?(0,V.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,V.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-3 rounded-xl bg-muted/45 px-3 py-3 text-left transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>n(e.id),children:[(0,V.jsx)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:e.title}),(0,V.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:$(e.state.name)})]},e.id))}):(0,V.jsx)(U,{children:j(`projectsWorkEmpty`)})}),(0,V.jsx)(H,{title:j(`projectsRecentArtifacts`),children:a.isLoading?(0,V.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:j(`projectsLoading`)}):a.isError?(0,V.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:j(`projectsLoadFailed`)}):a.data?.artifacts.length?(0,V.jsx)(`div`,{className:`space-y-2`,children:a.data.artifacts.map(e=>(0,V.jsxs)(W,{available:e.exists,path:e.path,label:e.label??e.path,onOpen:t,className:`block w-full rounded-xl bg-muted/45 p-3 text-left text-sm transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,V.jsx)(`span`,{className:`block truncate font-medium`,children:e.label??e.path}),(0,V.jsxs)(`span`,{className:`mt-1 block truncate text-xs text-muted-foreground`,children:[e.workItemTitle,(0,V.jsx)(`time`,{dateTime:e.createdAt,title:k(e.createdAt),children:` · ${Le(e.createdAt)}`}),e.exists?``:` · ${j(`projectsUnavailable`)}`]})]},e.id))}):(0,V.jsx)(U,{children:j(`projectsNoRecentArtifacts`)})})]})]})}function Qe(e){return e===`overview`||e===`work`||e===`artifacts`||e===`skills`||e===`agreement`}function $e(e){return e.status===`open`&&e.response===`confirm-reject`&&!!e.reference.sessionId&&!e.reply}function et(e){return e.requests.filter(e=>e.status===`open`)}function tt({requests:e,pendingRequestId:t,onReply:n}){return e.length===0?null:(0,V.jsx)(H,{title:j(`projectsRequests`),children:(0,V.jsx)(`div`,{className:`space-y-2`,children:e.map(e=>{let{id:r,prompt:i,reference:{label:a,sessionId:s},reply:c}=e,l=t===r;return(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded-xl bg-muted/45 p-3`,children:[(0,V.jsxs)(`div`,{className:`min-w-48 flex-1`,children:[(0,V.jsx)(`p`,{className:`text-sm font-medium`,children:i}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:c?j(`projectsResponseWaiting`):a})]}),$e(e)?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(d,{size:`sm`,disabled:l,onClick:()=>n(e,`confirmed`),children:j(`projectsConfirm`)}),(0,V.jsx)(d,{size:`sm`,variant:`outline`,disabled:l,onClick:()=>n(e,`rejected`),children:j(`projectsReject`)})]}):null,s?(0,V.jsx)(o,{className:u({size:`sm`,variant:`ghost`}),to:`/chat/${encodeURIComponent(s)}`,children:j(`projectsOpenSession`)}):null]},r)})})})}function nt({snapshot:e,onOpen:t}){return(0,V.jsxs)(`section`,{className:`min-w-0`,"aria-label":j(`projectsSkills`),children:[(0,V.jsxs)(`p`,{className:`mb-3 text-sm text-muted-foreground`,children:[A(e.skills.length),` `,j(`projectsSkillsCountSuffix`)]}),e.skills.length?(0,V.jsx)(`div`,{className:`grid min-w-0 gap-3 md:grid-cols-2`,children:e.skills.map(e=>(0,V.jsxs)(`button`,{type:`button`,className:`min-w-0 rounded-xl border border-border/60 p-3 text-left transition-colors enabled:hover:border-border enabled:hover:bg-muted/30 disabled:cursor-not-allowed`,disabled:!e.readable,onClick:()=>t(e),children:[(0,V.jsx)(`h3`,{className:`text-sm font-medium`,children:e.name}),(0,V.jsx)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground`,title:e.path,children:e.path}),(0,V.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs text-muted-foreground`,title:e.description??e.ref,children:e.description??e.ref}),e.readable?null:(0,V.jsx)(`p`,{className:`mt-2 text-xs text-destructive`,children:j(`projectsUnavailable`)})]},e.ref))}):(0,V.jsx)(U,{children:j(`projectsNoSkills`)})]})}function rt({onOpenArtifact:e,onOpenChange:t,projectId:n,projectRoot:r,workItemId:i}){let a=We(n,i),o=Ge(n,i);Ke(n);let s=He(n);return(0,V.jsx)(C,{open:!!i,onOpenChange:t,children:(0,V.jsxs)(b,{side:`right`,closeLabel:j(`projectsCloseDetails`),className:`flex h-full w-full flex-col overflow-hidden p-0 sm:max-w-[680px]`,children:[a.isLoading?(0,V.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:j(`projectsLoading`)}):null,a.isError?(0,V.jsx)(`div`,{className:`p-6 text-sm text-destructive`,children:j(`projectsWorkItemLoadFailed`)}):null,a.data?(0,V.jsx)(it,{item:a.data,states:s.data??[],activities:o.data?.activities??[],onOpenArtifact:(t,n)=>e(Ne(r,t),n),onClose:()=>t(!1)},`${a.data.id}:${a.data.version}`):null]})})}function it({activities:e,item:t,onClose:n,onOpenArtifact:r,states:i}){let a=Q(t.projectId),[o,l]=(0,B.useState)(t.title),[u,f]=(0,B.useState)(t.description),[p,h]=(0,B.useState)(t.stateId),[g,v]=(0,B.useState)(t.attention),[b,C]=(0,B.useState)(``),[T,E]=(0,B.useState)(``),[ee,D]=(0,B.useState)(!1),O=async(e,t)=>{try{await e(),t?.()}catch(e){m.error(e instanceof Error?e.message:j(`projectsWorkActionFailed`))}},te=async()=>{try{await a.updateItem.mutateAsync({workItemId:t.id,patch:{title:o,description:u,stateId:p,attention:g,expectedVersion:t.version}}),m.success(j(`projectsWorkItemSaved`))}catch(e){m.error(e instanceof Error?e.message:j(`projectsWorkItemSaveFailed`))}},k=async()=>{if(b.trim())try{await a.linkArtifact.mutateAsync({workItemId:t.id,path:b.trim(),...T.trim()?{label:T.trim()}:{}}),C(``),E(``)}catch(e){m.error(e instanceof Error?e.message:j(`projectsWorkArtifactLinkFailed`))}};return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(w,{className:`shrink-0 border-b border-border/60 px-5 pb-5 pt-6 pr-14 sm:px-7 sm:pt-7`,children:[(0,V.jsx)(y,{children:j(`projectsWorkDetails`)}),(0,V.jsxs)(_,{children:[t.id,` · `,j(`projectsWorkVersion`),` `,t.version]})]}),(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-6 overflow-y-auto px-5 py-6 sm:px-7`,children:[(0,V.jsxs)(`section`,{className:`space-y-3`,children:[(0,V.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground`,children:j(`projectsWorkTitle`)}),(0,V.jsx)(c,{value:o,onChange:e=>l(e.target.value)}),(0,V.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground`,children:j(`projectsWorkDescription`)}),(0,V.jsx)(x,{className:`min-h-28`,value:u,onChange:e=>f(e.target.value)}),(0,V.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`mb-1 block text-xs font-medium text-muted-foreground`,children:j(`projectsStatus`)}),(0,V.jsxs)(R,{value:p,onValueChange:h,children:[(0,V.jsx)(F,{children:(0,V.jsx)(P,{})}),(0,V.jsx)(I,{children:i.map(e=>(0,V.jsx)(L,{value:e.id,children:$(e.name)},e.id))})]})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`mb-1 block text-xs font-medium text-muted-foreground`,children:j(`projectsWorkAttention`)}),(0,V.jsxs)(R,{value:g,onValueChange:e=>v(e),children:[(0,V.jsx)(F,{children:(0,V.jsx)(P,{})}),(0,V.jsxs)(I,{children:[(0,V.jsx)(L,{value:`none`,children:j(`projectsWorkAttention_none`)}),(0,V.jsx)(L,{value:`blocked`,children:j(`projectsWorkAttention_blocked`)}),(0,V.jsx)(L,{value:`awaiting-user`,children:j(`projectsWorkAttention_awaiting-user`)})]})]})]})]})]}),(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`mb-3 text-sm font-semibold`,children:j(`projectsWorkArtifacts`)}),(0,V.jsxs)(`div`,{className:`space-y-2`,children:[t.artifacts.map(e=>(0,V.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl border border-border/60 p-2`,children:[(0,V.jsxs)(`button`,{type:`button`,className:`min-w-0 flex-1 rounded-lg px-2 py-1 text-left hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>r(e.path,e.label??e.path),children:[(0,V.jsxs)(`span`,{className:`flex items-center gap-2 truncate text-sm font-medium`,children:[(0,V.jsx)(s,{className:`h-3.5 w-3.5 shrink-0`}),e.label??e.path]}),(0,V.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.path})]}),(0,V.jsx)(d,{size:`icon`,variant:`ghost`,"aria-label":j(`projectsWorkUnlinkArtifact`),onClick:()=>void O(()=>a.unlinkArtifact.mutateAsync({workItemId:t.id,artifactLinkId:e.id})),children:(0,V.jsx)(ke,{className:`h-4 w-4`})})]},e.id)),t.artifacts.length?null:(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:j(`projectsWorkNoArtifacts`)})]}),(0,V.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-[1fr_12rem_auto]`,children:[(0,V.jsx)(c,{value:b,onChange:e=>C(e.target.value),placeholder:j(`projectsWorkArtifactPath`)}),(0,V.jsx)(c,{value:T,onChange:e=>E(e.target.value),placeholder:j(`projectsWorkArtifactLabel`)}),(0,V.jsxs)(d,{variant:`outline`,onClick:()=>void k(),disabled:!b.trim()||a.linkArtifact.isPending,children:[(0,V.jsx)(ne,{className:`mr-2 h-4 w-4`}),j(`projectsWorkLinkArtifact`)]})]})]}),(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`mb-3 text-sm font-semibold`,children:j(`projectsActivity`)}),(0,V.jsx)(`ol`,{className:`space-y-2`,children:e.map(e=>(0,V.jsxs)(`li`,{className:`rounded-xl bg-muted/35 px-3 py-2 text-sm`,children:[(0,V.jsx)(`span`,{className:`font-medium`,children:j(`projectsWorkActivity_${e.type}`)}),(0,V.jsxs)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[e.actor.kind,` ·`,` `,new Date(e.createdAt).toLocaleString()]})]},e.id))})]})]}),(0,V.jsxs)(S,{className:`shrink-0 border-t border-border/60 bg-background px-5 py-4 sm:px-7`,children:[t.deletedAt?(0,V.jsx)(d,{variant:`outline`,onClick:()=>void O(()=>a.restoreItem.mutateAsync(t.id)),children:j(`projectsRestore`)}):(0,V.jsxs)(d,{variant:`destructive`,onClick:()=>D(!0),children:[(0,V.jsx)(he,{className:`mr-2 h-4 w-4`}),j(`projectsDelete`)]}),(0,V.jsx)(d,{onClick:()=>void te(),disabled:!o.trim()||a.updateItem.isPending,children:j(`save`)})]}),(0,V.jsx)(me,{open:ee,onOpenChange:D,title:j(`projectsDeleteWorkItem`),description:j(`projectsDeleteWorkItemDescription`),confirmLabel:j(`projectsDelete`),variant:`destructive`,onCancel:()=>D(!1),onConfirm:()=>void O(()=>a.deleteItem.mutateAsync(t.id),n)})]})}var at=[`backlog`,`unstarted`,`started`,`completed`,`canceled`];function ot({open:e,onOpenChange:t,projectId:n,states:r}){let i=Q(n),a=qe(r),[o,s]=(0,B.useState)(``),[l,u]=(0,B.useState)(`unstarted`),[f,p]=(0,B.useState)(null),[h,g]=(0,B.useState)(``),_=async e=>{try{await e()}catch(e){m.error(e instanceof Error?e.message:j(`projectsWorkActionFailed`))}},v=async()=>{o.trim()&&await _(async()=>{await i.createState.mutateAsync({name:o.trim(),category:l}),s(``)})},y=async(e,t)=>{let n=a[e],r=a[e+t];!n||!r||await _(async()=>{await i.updateState.mutateAsync({stateId:n.id,patch:{position:r.position}}),await i.updateState.mutateAsync({stateId:r.id,patch:{position:n.position}})})};return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(xe,{open:e,onOpenChange:t,children:(0,V.jsxs)(ve,{className:`max-h-[85vh] overflow-y-auto sm:max-w-2xl`,children:[(0,V.jsxs)(ge,{children:[(0,V.jsx)(ye,{children:j(`projectsWorkStateSettings`)}),(0,V.jsx)(be,{children:j(`projectsWorkStateSettingsDescription`)})]}),(0,V.jsx)(`div`,{className:`space-y-2`,children:a.map((e,t)=>(0,V.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/60 p-3 sm:grid-cols-[1fr_11rem_auto]`,children:[(0,V.jsx)(c,{"aria-label":j(`projectsWorkStateName`),defaultValue:$(e.name),onBlur:t=>{let n=t.currentTarget.value.trim();n&&n!==$(e.name)&&_(()=>i.updateState.mutateAsync({stateId:e.id,patch:{name:n}}))}}),(0,V.jsxs)(R,{value:e.category,onValueChange:t=>void _(()=>i.updateState.mutateAsync({stateId:e.id,patch:{category:t}})),children:[(0,V.jsx)(F,{"aria-label":j(`projectsWorkStateCategory`),children:(0,V.jsx)(P,{})}),(0,V.jsx)(I,{children:at.map(e=>(0,V.jsx)(L,{value:e,children:j(`projectsWorkCategory_${e}`)},e))})]}),(0,V.jsxs)(`div`,{className:`flex items-center justify-end gap-1`,children:[(0,V.jsx)(d,{size:`icon`,variant:`ghost`,"aria-label":j(`projectsMoveUp`),disabled:t===0,onClick:()=>void y(t,-1),children:(0,V.jsx)(oe,{className:`h-4 w-4`})}),(0,V.jsx)(d,{size:`icon`,variant:`ghost`,"aria-label":j(`projectsMoveDown`),disabled:t===a.length-1,onClick:()=>void y(t,1),children:(0,V.jsx)(ie,{className:`h-4 w-4`})}),(0,V.jsx)(d,{size:`icon`,variant:`ghost`,"aria-label":j(`projectsDeleteState`),disabled:a.length<=1,onClick:()=>{p(e),g(``)},children:(0,V.jsx)(he,{className:`h-4 w-4`})})]}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground sm:col-span-3`,children:[(0,V.jsx)(`input`,{type:`radio`,name:`default-state`,checked:e.isDefault,onChange:()=>void _(()=>i.updateState.mutateAsync({stateId:e.id,patch:{isDefault:!0}}))}),j(`projectsWorkDefaultState`)]})]},e.id))}),(0,V.jsxs)(`div`,{className:`grid gap-2 border-t border-border/60 pt-4 sm:grid-cols-[1fr_11rem_auto]`,children:[(0,V.jsx)(c,{value:o,onChange:e=>s(e.target.value),placeholder:j(`projectsWorkNewState`)}),(0,V.jsxs)(R,{value:l,onValueChange:e=>u(e),children:[(0,V.jsx)(F,{children:(0,V.jsx)(P,{})}),(0,V.jsx)(I,{children:at.map(e=>(0,V.jsx)(L,{value:e,children:j(`projectsWorkCategory_${e}`)},e))})]}),(0,V.jsxs)(d,{onClick:()=>void v(),disabled:!o.trim()||i.createState.isPending,children:[(0,V.jsx)(fe,{className:`mr-2 h-4 w-4`}),j(`projectsAdd`)]})]})]})}),(0,V.jsx)(xe,{open:!!f,onOpenChange:e=>{e||p(null)},children:(0,V.jsxs)(ve,{children:[(0,V.jsxs)(ge,{children:[(0,V.jsx)(ye,{children:j(`projectsDeleteState`)}),(0,V.jsx)(be,{children:j(`projectsDeleteStateDescription`)})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:j(`projectsWorkStateMigration`)}),(0,V.jsxs)(R,{value:h,onValueChange:g,children:[(0,V.jsx)(F,{children:(0,V.jsx)(P,{placeholder:j(`projectsWorkStateMigrationOptional`)})}),(0,V.jsx)(I,{children:a.filter(e=>e.id!==f?.id).map(e=>(0,V.jsx)(L,{value:e.id,children:$(e.name)},e.id))})]})]}),(0,V.jsxs)(_e,{children:[(0,V.jsx)(d,{variant:`outline`,onClick:()=>p(null),children:j(`cancel`)}),(0,V.jsx)(d,{variant:`destructive`,onClick:()=>{f&&_(async()=>{await i.deleteState.mutateAsync({stateId:f.id,migrateToStateId:h||null}),p(null)})},children:j(`projectsDelete`)})]})]})})]})}function st({startedProgress:e,state:t}){if(t.category===`backlog`)return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`backlog`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground/65`,children:(0,V.jsx)(se,{className:`h-4 w-4`})});if(t.category===`unstarted`)return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`unstarted`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground`,children:(0,V.jsx)(De,{className:`h-4 w-4`,strokeWidth:2})});if(t.category===`completed`)return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`completed`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-emerald-600 dark:text-emerald-400`,children:(0,V.jsx)(re,{className:`h-4 w-4`,strokeWidth:2.25})});if(t.category===`canceled`)return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`canceled`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground/65`,children:(0,V.jsx)(Ee,{className:`h-4 w-4`})});let n=Math.round((e??.5)*100),r=n>=67?`text-emerald-600 dark:text-emerald-400`:n>=40?`text-orange-500 dark:text-orange-400`:`text-amber-500 dark:text-amber-400`;return(0,V.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`started`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center ${r}`,children:(0,V.jsxs)(`svg`,{className:`h-4 w-4`,viewBox:`0 0 16 16`,fill:`none`,children:[(0,V.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`,stroke:`currentColor`,strokeWidth:`1.75`,opacity:`0.22`}),(0,V.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`,pathLength:`100`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeDasharray:`${n} ${100-n}`,transform:`rotate(-90 8 8)`})]})})}function ct({item:e,onOpen:t}){return(0,V.jsxs)(`button`,{type:`button`,className:`w-full rounded-xl border border-border/50 bg-card p-3 text-left text-sm shadow-sm transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:t,children:[(0,V.jsx)(`span`,{className:`block font-medium`,children:e.title}),(0,V.jsxs)(`span`,{className:`mt-1 flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,V.jsx)(`span`,{children:$(e.state.name)}),e.attention===`none`?null:(0,V.jsx)(`span`,{className:`rounded-full bg-amber-500/15 px-2 py-0.5 text-amber-700 dark:text-amber-300`,children:j(`projectsWorkAttention_${e.attention}`)}),e.deletedAt?(0,V.jsx)(`span`,{children:j(`projectsDeleted`)}):null]})]})}function lt({hasNextPage:e,isError:t,isFetchingNextPage:n,isLoading:r,items:i,onLoadMore:a,onOpenWorkItem:o}){return r?(0,V.jsx)(`p`,{className:`py-3 text-xs text-muted-foreground`,children:j(`projectsLoading`)}):t?(0,V.jsx)(`p`,{className:`py-3 text-xs text-destructive`,children:j(`projectsLoadFailed`)}):(0,V.jsxs)(V.Fragment,{children:[i.length?i.map(e=>(0,V.jsx)(ct,{item:e,onOpen:()=>o(e.id)},e.id)):(0,V.jsx)(`p`,{className:`py-3 text-xs text-muted-foreground`,children:j(`projectsNoData`)}),e?(0,V.jsx)(d,{type:`button`,variant:`ghost`,size:`sm`,className:`w-full`,disabled:n,onClick:a,children:j(n?`projectsLoading`:`projectsWorkLoadMore`)}):null]})}function ut({includeDeleted:e,onOpenWorkItem:t,state:n,startedProgress:r,view:i}){let[a,o]=(0,B.useState)(!1),s=Be(n.projectId,{stateId:n.id,includeDeleted:e,limit:20}),c=s.data?.pages.flatMap(e=>e.items)??[],l=s.data?.pages[0]?.total;return(0,V.jsxs)(`section`,{className:i===`board`?`flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-xl bg-muted/25`:`min-w-0 overflow-hidden rounded-xl border border-border/60`,"aria-label":$(n.name),children:[(0,V.jsxs)(`button`,{type:`button`,className:`flex w-full shrink-0 items-center gap-2 bg-muted/30 px-3 py-2.5 text-left transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-expanded":!a,onClick:()=>o(e=>!e),children:[a?(0,V.jsx)(ae,{className:`h-4 w-4 shrink-0`}):(0,V.jsx)(ie,{className:`h-4 w-4 shrink-0`}),(0,V.jsx)(st,{state:n,startedProgress:r}),(0,V.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold`,children:$(n.name)}),(0,V.jsx)(`span`,{className:`inline-flex min-w-6 shrink-0 items-center justify-center rounded-full bg-background/85 px-1.5 py-0.5 text-xs font-semibold tabular-nums text-foreground ring-1 ring-border/60`,children:l??`…`})]}),a?null:(0,V.jsx)(`div`,{className:i===`board`?`min-h-0 flex-1 space-y-2 overflow-y-auto overscroll-contain p-3`:`space-y-2 p-3`,children:(0,V.jsx)(lt,{hasNextPage:s.hasNextPage,isError:s.isError,isFetchingNextPage:s.isFetchingNextPage,isLoading:s.isLoading,items:c,onLoadMore:()=>void s.fetchNextPage(),onOpenWorkItem:t})})]})}function dt({onOpenWorkItem:e,projectId:t}){let[n,r]=(0,B.useState)(`list`),[i,a]=(0,B.useState)(!1),[o,s]=(0,B.useState)(``),[l,u]=(0,B.useState)(!1);Ke(t);let f=He(t),p=Q(t),h=async()=>{if(o.trim())try{let t=await p.createItem.mutateAsync({title:o.trim()});s(``),e(t.id)}catch(e){m.error(e instanceof Error?e.message:j(`projectsWorkItemCreateFailed`))}};if(f.isLoading)return(0,V.jsx)(`div`,{className:`rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:j(`projectsLoading`)});if(f.isError)return(0,V.jsx)(`div`,{className:`rounded-xl border border-destructive/40 p-5 text-sm text-destructive`,children:j(`projectsLoadFailed`)});let g=qe(f.data??[]),_=Ye(f.data??[]),v=g.filter(e=>e.category===`started`),y=new Map(v.map((e,t)=>[e.id,(t+1)/(v.length+1)]));return(0,V.jsxs)(`section`,{"aria-label":j(`projectsWork`),className:`min-w-0 space-y-4`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,V.jsxs)(`div`,{className:`flex min-w-[16rem] flex-1 gap-2`,children:[(0,V.jsx)(c,{value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&h()},placeholder:j(`projectsWorkNewItem`)}),(0,V.jsxs)(d,{onClick:()=>void h(),disabled:!o.trim()||p.createItem.isPending,children:[(0,V.jsx)(fe,{className:`mr-2 h-4 w-4`}),j(`projectsCreate`)]})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1 rounded-xl bg-muted/40 p-1`,role:`group`,"aria-label":j(`projectsWorkViews`),children:[(0,V.jsxs)(d,{size:`sm`,variant:n===`list`?`secondary`:`ghost`,"aria-pressed":n===`list`,onClick:()=>r(`list`),children:[(0,V.jsx)(Oe,{className:`mr-2 h-4 w-4`}),j(`projectsWorkList`)]}),(0,V.jsxs)(d,{size:`sm`,variant:n===`board`?`secondary`:`ghost`,"aria-pressed":n===`board`,onClick:()=>r(`board`),children:[(0,V.jsx)(te,{className:`mr-2 h-4 w-4`}),j(`projectsWorkBoard`)]})]}),(0,V.jsxs)(d,{variant:`outline`,size:`sm`,onClick:()=>u(!0),children:[(0,V.jsx)(pe,{className:`mr-2 h-4 w-4`}),j(`projectsWorkStateSettings`)]})]}),(0,V.jsxs)(`label`,{className:`flex w-fit items-center gap-2 text-xs text-muted-foreground`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked)}),j(`projectsWorkShowDeleted`)]}),n===`list`?(0,V.jsx)(`div`,{className:`space-y-2`,children:_.map(t=>(0,V.jsx)(ut,{state:t,startedProgress:y.get(t.id)??null,view:n,includeDeleted:i,onOpenWorkItem:e},t.id))}):null,n===`board`?(0,V.jsx)(`div`,{className:`grid h-[calc(100dvh-17rem)] min-h-[28rem] max-h-[52rem] min-w-0 auto-cols-[minmax(18rem,1fr)] grid-flow-col items-stretch gap-3 overflow-x-auto overflow-y-hidden pb-2`,children:g.map(t=>(0,V.jsx)(ut,{state:t,startedProgress:y.get(t.id)??null,view:n,includeDeleted:i,onOpenWorkItem:e},t.id))}):null,(0,V.jsx)(ot,{open:l,onOpenChange:u,projectId:t,states:g})]})}var ft=e=>[`project-observation`,e],pt=new Set([T.MessageTextEnd,T.MessageTextDelta,T.MessageCompleted,T.MessageFailed,T.MessageAbort,T.RunStarted,T.RunFinished,T.RunError]),mt=e=>{if(!(`payload`in e)||!e.payload||typeof e.payload!=`object`||!(`sessionId`in e.payload))return null;let{sessionId:t}=e.payload;return typeof t==`string`&&t.trim()?t.trim():null},ht=e=>{let t=e?.project_root??e?.projectRoot;return typeof t==`string`&&t.trim()?t.trim():null};function gt(e,t,n=!0){let i=p();return(0,B.useEffect)(()=>{if(!n||!e||!t)return;let a=ft(e),o=null,s=()=>{o||=setTimeout(()=>{o=null,i.invalidateQueries({queryKey:a,exact:!0})},100)},c=e=>{let t=i.getQueryData(a);return!!(t?.runs?.some(t=>t.sessionId===e)||t?.workItems.some(t=>t.reference.sessionId===e)||t?.activity.some(t=>t.reference.sessionId===e))},u=[l.eventBus.on(r.ncpEvent,e=>{if(!pt.has(e.type))return;let t=mt(e);t&&c(t)&&s()}),l.eventBus.on(r.sessionRunStatus,({sessionKey:e})=>{c(e)&&s()}),l.eventBus.on(r.sessionSummaryUpsert,({summary:e})=>{ht(e.metadata)===t&&s()}),l.eventBus.on(r.sessionSummaryDelete,({sessionKey:e})=>{c(e)&&s()})];return()=>{o&&clearTimeout(o);for(let e of u)e()}},[n,e,t,i]),f({queryKey:ft(e??``),enabled:n&&!!e,staleTime:5e3,queryFn:async()=>await l.projects.getObservation(e)})}async function _t(e){let t=`project-response-${e.requestId}-${e.decision}`;return await l.agentRuns.send({sessionId:e.sessionId,idempotencyKey:t,delivery:`prefer-steer`,message:{id:t,sessionId:e.sessionId,role:`user`,status:`final`,timestamp:new Date().toISOString(),parts:[{type:`text`,text:`${e.decision===`confirmed`?`确认`:`拒绝`}:${e.prompt}`}],metadata:{project_observation_response:{protocol:`nextclaw.project/v1`,requestId:e.requestId,decision:e.decision}}}})}var vt=[`overview`,`work`,`artifacts`,`skills`,`agreement`];function yt(){let{projectId:e,tab:t}=a(),n=i(),r=E(),o=p(),{isMobile:s}=de(),c=ee(),l=D(),{confirm:u,ConfirmDialog:f}=v(),[g,_]=(0,B.useState)(null),[y,b]=(0,B.useState)(null),x=c.data?.projects??[],S=x.find(t=>t.id===e)??null,C=Qe(t)?t:null,w=C===`artifacts`||C===`skills`||C===`agreement`,T=gt(S?.id??null,S?.rootPath??null,w),te=h({mutationFn:_t,onMutate:e=>b(e.requestId),onSuccess:async()=>{S&&await o.invalidateQueries({queryKey:ft(S.id)}),m.success(j(`projectsResponseSent`))},onError:e=>m.error(`${j(`projectsResponseFailed`)}: ${e instanceof Error?e.message:String(e)}`),onSettled:()=>b(null)}),ne=(e,t)=>{e.reference.sessionId&&te.mutate({requestId:e.id,sessionId:e.reference.sessionId,decision:t,prompt:e.prompt})},k=async()=>{if(S&&await u({title:`${j(`projectsRemoveConfirmTitle`)} “${S.name}”`,description:j(`projectsRemoveConfirmDescription`),confirmLabel:j(`projectsRemoveConfirmAction`),variant:`destructive`}))try{await l.mutateAsync(S.id),n(`/projects`)}catch{}};if(c.isLoading)return(0,V.jsx)(`main`,{className:`flex h-full items-center justify-center p-6 text-sm text-muted-foreground`,children:j(`projectsLoading`)});if(c.isError)return(0,V.jsxs)(`main`,{className:`p-6 text-sm text-destructive`,children:[j(`projectsLoadFailed`),`: `,c.error.message]});if(!x.length)return(0,V.jsx)(`main`,{className:`p-6 text-sm text-muted-foreground`,children:j(`projectsEmpty`)});if(!S||!C)return(0,V.jsx)(`main`,{className:`p-6 text-sm text-muted-foreground`,children:j(`projectsChoose`)});let A=(e,t)=>r.chatThreadManager.openFilePreview({path:e,label:t,viewMode:`preview`,previewViewer:`rendered`}),M=T.data;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`main`,{className:`h-full min-w-0 flex-1 overflow-y-auto p-3 sm:p-4 md:p-6`,children:(0,V.jsxs)(`div`,{className:`mx-auto max-w-6xl space-y-4`,children:[(0,V.jsxs)(`header`,{className:`flex flex-col gap-3 rounded-2xl border border-border/60 bg-card p-3 sm:flex-row sm:items-start sm:justify-between sm:p-4`,children:[(0,V.jsxs)(`div`,{className:`min-w-0`,children:[(0,V.jsx)(`h1`,{className:`text-lg font-semibold`,children:S.name}),(0,V.jsx)(`p`,{className:`mt-1 break-all text-xs text-muted-foreground`,children:S.rootPath})]}),(0,V.jsx)(d,{type:`button`,variant:`destructive`,size:`sm`,disabled:l.isPending,onClick:()=>void k(),children:j(`projectsRemoveFromList`)})]}),M?(0,V.jsx)(tt,{requests:et(M),pendingRequestId:y,onReply:ne}):null,(0,V.jsxs)(ue,{value:C,onValueChange:e=>n(`/projects/${encodeURIComponent(S.id)}/${e}`),children:[(0,V.jsx)(`div`,{className:`min-w-0 overflow-x-auto pb-1`,children:(0,V.jsx)(le,{className:`w-max`,children:vt.map(e=>(0,V.jsx)(ce,{value:e,children:j(`projects${e[0].toUpperCase()}${e.slice(1)}`)},e))})}),(0,V.jsx)(z,{value:`overview`,className:`mt-4`,children:(0,V.jsx)(Ze,{projectId:S.id,onOpenArtifact:(e,t)=>A(Ne(S.rootPath,e),t),onOpenWorkItem:_})}),(0,V.jsx)(z,{value:`work`,className:`mt-4`,children:(0,V.jsx)(dt,{projectId:S.id,onOpenWorkItem:_})}),w&&T.isLoading?(0,V.jsx)(`div`,{className:`mt-4 rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:j(`projectsLoading`)}):null,w&&T.isError?(0,V.jsxs)(`div`,{className:`mt-4 rounded-xl border border-destructive/40 p-5 text-sm text-destructive`,children:[j(`projectsLoadFailed`),`: `,T.error.message]}):null,M?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(z,{value:`artifacts`,className:`mt-4`,children:(0,V.jsx)(ze,{snapshot:M,onOpenFile:A})}),(0,V.jsx)(z,{value:`skills`,className:`mt-4`,children:(0,V.jsx)(nt,{snapshot:M,onOpen:e=>A(e.path,e.name)})}),(0,V.jsx)(z,{value:`agreement`,className:`mt-4`,children:(0,V.jsx)(Ae,{snapshot:M,onOpenFile:A})})]}):null]})]})}),(0,V.jsx)(rt,{projectId:S.id,projectRoot:S.rootPath,workItemId:g,onOpenChange:e=>{e||_(null)},onOpenArtifact:A}),(0,V.jsx)(O,{layoutMode:s?`mobile`:`desktop`,sessionKey:null,projectRoot:S.rootPath}),(0,V.jsx)(f,{})]})}export{yt as ProjectsPage};
Binary file
@@ -1 +0,0 @@
1
- import{et as e}from"./app-presenter-provider-CLsFiXvV.js";export{e as RemoteAccessPage};
@@ -1 +0,0 @@
1
- import{i as e}from"./chunk-DF37yw5_.js";import{A as t,M as n}from"./utils-UBHTdG5Q.js";import{Gt as r,Jt as i,Kt as a,Qt as o,Ut as s,Yt as c,cn as l,fn as u,pn as d,qt as f,un as p,vn as m}from"./api-Utt-xzrT.js";import{S as h}from"./mcp-marketplace-page-CifiVgFD.js";import{_ as g,rt as _,tt as v,v as y}from"./app-presenter-provider-CLsFiXvV.js";import{s as b}from"./i18n-B9yXA8KO.js";import{a as x,i as S,n as C,r as w,t as T}from"./select-CmDTqk2C.js";import{t as E}from"./loader-circle-rWr5Yo0E.js";import{t as D}from"./plus-BHnKwuPq.js";import{t as O}from"./rotate-cw-BksCLAeE.js";import{t as k}from"./save-CVi8VWzb.js";import{i as A}from"./pwa-ClQK56Qe.js";import{t as j}from"./trash-2-CVOev8yc.js";import{b as M,t as ee}from"./use-config-b2DN67gs.js";import{t as N}from"./form-actions-gQ0JEUwB.js";var P=e(n(),1),F=t(),I={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},L={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},R={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function z(e){return b(I[e]??`runtimeControlUnavailable`)}function B(e){return b(L[e]??`runtimeControlServiceUnknown`)}function V(e){return b(R[e.environment])}function H(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function U(e){return e?[{action:`start-service`,capability:e.canStartService,label:b(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:b(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:b(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:b(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function W(e){let{busy:t,icon:n}=e;return t?(0,F.jsx)(E,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,F.jsx)(_,{className:`mr-2 h-4 w-4`}):n===`square`?(0,F.jsx)(v,{className:`mr-2 h-4 w-4`}):(0,F.jsx)(O,{className:`mr-2 h-4 w-4`})}function G(){let{busy:e,busyAction:t,controlView:n,errorMessage:r,pendingRestart:a,visibleLifecycle:o,visibleMessage:s,visibleServiceState:p}=l(),h=U(n??void 0),g=async e=>{let t=H(n,e);if(!t?.available){m.error(d(t?.reasonIfUnavailable)??b(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&t.requiresConfirmation&&!window.confirm(b(`runtimeControlStopServiceConfirm`))))try{let t=await u.runRuntimeControlAction(e);m.success(d(t.message)??t.message)}catch(e){let t=e instanceof Error?e.message:b(`runtimeControlActionFailed`);m.error(`${b(`runtimeControlActionFailed`)}: ${t}`)}},_=async()=>{if(!n?.canRestartApp.available){m.error(d(n?.canRestartApp.reasonIfUnavailable)??b(`runtimeRestartAppUnavailable`));return}if(window.confirm(b(`runtimeControlRestartAppConfirm`)))try{let e=await u.runRuntimeControlAction(`restart-app`);m.success(d(e.message)??e.message)}catch(e){let t=e instanceof Error?e.message:b(`runtimeControlActionFailed`);m.error(`${b(`runtimeControlActionFailed`)}: ${t}`)}};return(0,F.jsx)(i,{title:b(`runtimeControlTitle`),description:b(`runtimeControlDescription`),children:(0,F.jsxs)(f,{children:[(0,F.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,F.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:B(p)}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:n?V(n):b(`runtimeControlLoading`)})]}),(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:z(o)}),n?.managementHint?(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(n.managementHint)}):null,r&&!e?(0,F.jsx)(`p`,{className:`text-sm text-amber-700`,children:r}):null]}),a?(0,F.jsxs)(`div`,{className:`space-y-3 bg-amber-50/75 p-4 dark:bg-amber-950/20`,children:[(0,F.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:b(`runtimeControlPendingRestartTitle`)}),(0,F.jsx)(`p`,{className:`text-sm text-amber-800`,children:b(`runtimeControlPendingRestartDescription`)}),a.changedPaths.length>0?(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:b(`runtimeControlPendingRestartPaths`)}),(0,F.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a.changedPaths.map(e=>(0,F.jsx)(`span`,{className:`rounded-full bg-background/80 px-2.5 py-1 text-xs text-amber-800 dark:text-amber-300`,children:e},e))})]}):null]}):null,(0,F.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,F.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:h.map(n=>(0,F.jsxs)(c,{type:`button`,variant:n.variant??`default`,onClick:()=>{if(n.action===`restart-app`){_();return}g(n.action)},disabled:!n.capability.available||e,children:[(0,F.jsx)(W,{icon:n.icon,busy:t===n.action}),n.label]},n.action))}),h.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(e.capability.reasonIfUnavailable)},`${e.action}-reason`))]})]})})}function K(e){let{description:t,title:n}=e;return(0,F.jsx)(h,{tone:`neutral`,title:n,description:t})}function q(e){let{children:t}=e;return(0,F.jsx)(i,{title:b(`runtimePresenceTitle`),description:b(`runtimePresenceDescription`),children:(0,F.jsx)(f,{children:t})})}function J(){let e=p().runtimeControlView?.environment,t=y(e=>e.supported),n=y(e=>e.initialized),r=y(e=>e.busyAction),i=y(e=>e.snapshot);return(0,P.useEffect)(()=>{if(e===`desktop-embedded`){g.start();return}g.markUnsupported()},[e]),e===`desktop-embedded`?(0,F.jsxs)(q,{children:[(0,F.jsx)(`div`,{className:`p-4`,children:(0,F.jsx)(h,{tone:`neutral`,title:b(`runtimePresenceBehaviorLabel`),description:i?.closeToBackground?b(`runtimePresenceBehaviorBackground`):b(`runtimePresenceBehaviorQuit`),className:`rounded-xl`})}),!n||t&&!i?(0,F.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:b(`runtimePresenceLoading`)}):null,i?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(a,{title:b(`runtimePresenceCloseToBackground`),description:b(`runtimePresenceCloseToBackgroundHelp`),control:(0,F.jsx)(s,{id:`runtime-presence-close-background`,"aria-label":b(`runtimePresenceCloseToBackground`),checked:i.closeToBackground,disabled:r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({closeToBackground:e})}})}),(0,F.jsx)(a,{title:b(`runtimePresenceLaunchAtLogin`),description:i.supportsLaunchAtLogin?b(`runtimePresenceLaunchAtLoginHelp`):i.launchAtLoginReason??b(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,F.jsx)(s,{id:`runtime-presence-launch-login`,"aria-label":b(`runtimePresenceLaunchAtLogin`),checked:i.launchAtLogin,disabled:!i.supportsLaunchAtLogin||r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({launchAtLogin:e})}})})]}):null]}):e===`managed-local-service`?(0,F.jsx)(q,{children:(0,F.jsx)(`div`,{className:`p-4`,children:(0,F.jsx)(K,{title:b(`runtimePresenceManagedLocalTitle`),description:b(`runtimePresenceManagedLocalDescription`)})})}):e===`self-hosted-web`?(0,F.jsx)(q,{children:(0,F.jsx)(`div`,{className:`p-4`,children:(0,F.jsx)(K,{title:b(`runtimePresenceSelfHostedTitle`),description:b(`runtimePresenceSelfHostedDescription`)})})}):e===`shared-web`?(0,F.jsx)(q,{children:(0,F.jsx)(`div`,{className:`p-4`,children:(0,F.jsx)(K,{title:b(`runtimePresenceSharedTitle`),description:b(`runtimePresenceSharedDescription`)})})}):(0,F.jsx)(q,{children:(0,F.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:b(`runtimePresenceLoading`)})})}function te(){return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(G,{}),(0,F.jsx)(J,{}),(0,F.jsx)(A,{})]})}var Y={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function X(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0}}function Z(){return{agentId:``,match:{channel:``,accountId:``}}}function Q(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Y,configText:JSON.stringify(Y,null,2)}}function ne(e){return{id:e.id??``,default:!!e.default,displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,workspace:e.workspace??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:e.contextTokens}}function re(e){return{agentId:e.agentId??``,match:{channel:e.match?.channel??``,accountId:e.match?.accountId??``,peer:e.match?.peer?{kind:e.match.peer.kind,id:e.match.peer.id}:void 0}}}function ie(e){let t=e.trim();if(!t)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ae(e){return{companionEnabled:e.companion?.enabled===!0,agents:(e.agents.list??[]).map(ne),bindings:(e.bindings??[]).map(re),runtimeEntries:Object.entries(e.agents.runtimes?.entries??{}).map(([e,t])=>({id:e,enabled:t.enabled!==!1,label:t.label??``,type:t.type,config:t.config??{},configText:JSON.stringify(t.config??{},null,2)})),dmScope:e.session?.dmScope??`per-channel-peer`,defaultContextTokens:e.agents.defaults.contextTokens??2e5,defaultEngine:e.agents.defaults.engine??`native`}}function oe(e){let t={id:e.id.trim()};e.default&&(t.default=!0),e.displayName?.trim()&&(t.displayName=e.displayName.trim()),e.description?.trim()&&(t.description=e.description.trim()),e.avatar?.trim()&&(t.avatar=e.avatar.trim()),e.workspace?.trim()&&(t.workspace=e.workspace.trim()),e.model?.trim()&&(t.model=e.model.trim());let n=e.runtime?.trim()??e.engine?.trim();return n&&(t.engine=n),typeof e.contextTokens==`number`&&(t.contextTokens=Math.max(1e3,e.contextTokens)),t}function $(e){let t=e.agents.map((e,t)=>{if(!e.id.trim())throw Error(b(`agentIdRequiredError`).replace(`{index}`,String(t)));return oe(e)}),n=t.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(n.length>0)throw Error(`${b(`duplicateAgentId`)}: ${n[0]}`);let r=e.bindings.map((t,n)=>{let r=t.agentId.trim(),i=t.match.channel.trim(),a=t.match.accountId?.trim()??``,o=t.match.peer?.kind,s=t.match.peer?.id?.trim()??``;if(!r)throw Error(b(`bindingAgentIdRequired`).replace(`{index}`,String(n)));if(!e.knownAgentIds.has(r))throw Error(`${b(`bindingAgentIdNotFound`).replace(`{index}`,String(n))}: ${r}`);if(!i)throw Error(b(`bindingChannelRequired`).replace(`{index}`,String(n)));let c={agentId:r,match:{channel:i}};if(a&&(c.match.accountId=a),o){if(!s)throw Error(b(`bindingPeerIdRequired`).replace(`{index}`,String(n)));c.match.peer={kind:o,id:s}}return c}),i=e.runtimeEntries.reduce((e,t,n)=>{let r=t.id.trim(),i=t.type.trim();if(!r)throw Error(b(`runtimeEntryIdRequired`).replace(`{index}`,String(n)));if(!i)throw Error(b(`runtimeEntryTypeRequired`).replace(`{id}`,r));if(e[r])throw Error(`${b(`runtimeEntryDuplicate`)}: ${r}`);let a=t.configText.trim()?JSON.parse(t.configText):{};if(a&&(typeof a!=`object`||Array.isArray(a)))throw Error(b(`runtimeEntryConfigObjectRequired`).replace(`{id}`,r));return e[r]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:i,config:a??{}},e},{});return{companion:{enabled:e.companionEnabled},agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:t,runtimes:{entries:i}},bindings:r,session:{dmScope:e.dmScope}}}function se({agents:e,onAddAgent:t,onRemoveAgent:n,onSetDefaultAgent:a,onUpdateAgent:o}){return(0,F.jsx)(i,{title:b(`agentList`),description:b(`agentListHelp`),actions:(0,F.jsxs)(c,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,F.jsx)(D,{className:`mr-2 h-4 w-4`}),b(`addAgent`)]}),children:(0,F.jsx)(f,{children:e.map((e,t)=>(0,F.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,F.jsx)(r,{value:e.id,onChange:e=>o(t,{id:e.target.value}),placeholder:b(`agentIdPlaceholder`)}),(0,F.jsx)(r,{value:e.workspace??``,onChange:e=>o(t,{workspace:e.target.value}),placeholder:b(`workspaceOverridePlaceholder`)}),(0,F.jsx)(r,{value:e.model??``,onChange:e=>o(t,{model:e.target.value}),placeholder:b(`modelOverridePlaceholder`)}),(0,F.jsx)(r,{value:e.runtime??e.engine??``,onChange:e=>o(t,{runtime:e.target.value}),placeholder:b(`engineOverridePlaceholder`)}),(0,F.jsx)(r,{type:`number`,min:1e3,step:1e3,value:e.contextTokens??``,onChange:e=>o(t,{contextTokens:ie(e.target.value)}),placeholder:b(`contextTokensPlaceholder`)})]}),(0,F.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,F.jsx)(s,{checked:!!e.default,onCheckedChange:e=>a(t,e)}),(0,F.jsx)(`span`,{children:b(`defaultAgent`)})]}),(0,F.jsxs)(c,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>n(t),children:[(0,F.jsx)(j,{className:`h-4 w-4 mr-1`}),b(`remove`)]})]})]},`${t}-${e.id}`))})})}function ce({bindings:e,onAddBinding:t,onRemoveBinding:n,onUpdateBinding:a}){return(0,F.jsx)(i,{title:b(`bindings`),description:b(`bindingsHelp`),actions:(0,F.jsxs)(c,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,F.jsx)(D,{className:`mr-2 h-4 w-4`}),b(`addBinding`)]}),children:(0,F.jsx)(f,{children:e.map((e,t)=>{let i=e.match.peer?.kind??``;return(0,F.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,F.jsx)(r,{value:e.agentId,onChange:n=>a(t,{...e,agentId:n.target.value}),placeholder:b(`targetAgentIdPlaceholder`)}),(0,F.jsx)(r,{value:e.match.channel,onChange:n=>a(t,{...e,match:{...e.match,channel:n.target.value}}),placeholder:b(`channelPlaceholder`)}),(0,F.jsx)(r,{value:e.match.accountId??``,onChange:n=>a(t,{...e,match:{...e.match,accountId:n.target.value}}),placeholder:b(`accountIdOptionalPlaceholder`)}),(0,F.jsxs)(T,{value:i||`__none__`,onValueChange:n=>{let r=n===`__none__`?``:n;a(t,r?{...e,match:{...e.match,peer:{kind:r,id:e.match.peer?.id??``}}}:{...e,match:{...e.match,peer:void 0}})},children:[(0,F.jsx)(S,{children:(0,F.jsx)(x,{})}),(0,F.jsxs)(C,{children:[(0,F.jsx)(w,{value:`__none__`,children:b(`peerKindOptional`)}),(0,F.jsx)(w,{value:`direct`,children:b(`peerKindDirect`)}),(0,F.jsx)(w,{value:`group`,children:b(`peerKindGroup`)}),(0,F.jsx)(w,{value:`channel`,children:b(`peerKindChannel`)})]})]}),(0,F.jsx)(r,{value:e.match.peer?.id??``,onChange:n=>a(t,{...e,match:{...e.match,peer:i?{kind:i,id:n.target.value}:void 0}}),placeholder:b(`peerIdPlaceholder`)})]}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsxs)(c,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>n(t),children:[(0,F.jsx)(j,{className:`h-4 w-4 mr-1`}),b(`remove`)]})})]},`${t}-${e.agentId}`)})})})}function le({entries:e,onAddEntry:t,onRemoveEntry:n,onUpdateEntry:a}){return(0,F.jsx)(i,{title:b(`runtimeEntries`),description:b(`runtimeEntriesHelp`),actions:(0,F.jsxs)(c,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,F.jsx)(D,{className:`mr-2 h-4 w-4`}),b(`addRuntimeEntry`)]}),children:(0,F.jsx)(f,{children:e.map((e,t)=>(0,F.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,F.jsx)(r,{value:e.id,onChange:e=>a(t,{id:e.target.value}),placeholder:b(`runtimeEntryIdPlaceholder`)}),(0,F.jsx)(r,{value:e.label??``,onChange:e=>a(t,{label:e.target.value}),placeholder:b(`runtimeEntryLabelPlaceholder`)}),(0,F.jsx)(r,{value:e.type,onChange:e=>a(t,{type:e.target.value}),placeholder:b(`runtimeEntryTypePlaceholder`)}),(0,F.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg bg-background/65 px-3 py-2`,children:[(0,F.jsx)(`span`,{className:`text-sm text-foreground`,children:b(`enabled`)}),(0,F.jsx)(s,{checked:e.enabled!==!1,onCheckedChange:e=>a(t,{enabled:e})})]})]}),(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`label`,{className:`text-sm font-medium text-foreground`,children:b(`runtimeEntryConfigJson`)}),(0,F.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-sm`,value:e.configText,onChange:e=>a(t,{configText:e.target.value}),spellCheck:!1})]}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsxs)(c,{type:`button`,variant:`outline`,onClick:()=>n(t),children:[(0,F.jsx)(j,{className:`mr-2 h-4 w-4`}),b(`delete`)]})})]},`${t}-${e.id||`runtime-entry`}`))})})}var ue=[{value:`main`,labelKey:`dmScopeMain`},{value:`per-peer`,labelKey:`dmScopePerPeer`},{value:`per-channel-peer`,labelKey:`dmScopePerChannelPeer`},{value:`per-account-channel-peer`,labelKey:`dmScopePerAccountChannelPeer`}];function de({companionEnabled:e,defaultContextTokens:t,defaultEngine:n,dmScope:o,onCompanionEnabledChange:c,onDefaultContextTokensChange:l,onDefaultEngineChange:u,onDmScopeChange:d}){return(0,F.jsx)(i,{title:b(`dmScope`),description:b(`dmScopeHelp`),children:(0,F.jsxs)(f,{children:[(0,F.jsx)(a,{title:b(`runtimeCompanionEnabled`),description:b(`runtimeCompanionEnabledHelp`),control:(0,F.jsx)(s,{checked:e,onCheckedChange:c})}),(0,F.jsx)(a,{title:b(`defaultContextTokens`),description:b(`defaultContextTokensHelp`),control:(0,F.jsx)(r,{type:`number`,min:1e3,step:1e3,value:t,onChange:e=>l(Math.max(1e3,Number.parseInt(e.target.value,10)||1e3)),className:`w-36`})}),(0,F.jsx)(a,{title:b(`defaultEngine`),description:b(`defaultEngineHelp`),control:(0,F.jsx)(r,{value:n,onChange:e=>u(e.target.value),placeholder:b(`defaultEnginePlaceholder`),className:`w-56`})}),(0,F.jsx)(a,{title:b(`dmScope`),control:(0,F.jsxs)(T,{value:o,onValueChange:e=>d(e),children:[(0,F.jsx)(S,{className:`w-56`,children:(0,F.jsx)(x,{})}),(0,F.jsx)(C,{children:ue.map(e=>(0,F.jsx)(w,{value:e.value,children:b(e.labelKey)},e.value))})]})})]})})}function fe({config:e,updateRuntime:t}){let n=(0,P.useMemo)(()=>ae(e),[e]),[r,i]=(0,P.useState)(n.agents),[a,s]=(0,P.useState)(n.bindings),[l,u]=(0,P.useState)(n.runtimeEntries),[d,f]=(0,P.useState)(n.dmScope),[p,h]=(0,P.useState)(n.companionEnabled),[g,_]=(0,P.useState)(n.defaultContextTokens),[v,y]=(0,P.useState)(n.defaultEngine),x=(0,P.useMemo)(()=>{let e=new Set([`main`]);return r.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[r]);return(0,F.jsxs)(o,{title:b(`runtimePageTitle`),description:b(`runtimePageDescription`),children:[(0,F.jsx)(te,{}),(0,F.jsx)(de,{companionEnabled:p,dmScope:d,defaultContextTokens:g,defaultEngine:v,onCompanionEnabledChange:h,onDmScopeChange:f,onDefaultContextTokensChange:_,onDefaultEngineChange:y}),(0,F.jsx)(le,{entries:l,onUpdateEntry:(e,t)=>u(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>u(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>u(e=>[...e,Q()])}),(0,F.jsx)(se,{agents:r,onUpdateAgent:(e,t)=>{i(n=>n.map((n,r)=>r===e?{...n,...t}:n))},onRemoveAgent:e=>i(t=>t.filter((t,n)=>n!==e)),onAddAgent:()=>i(e=>[...e,X()]),onSetDefaultAgent:(e,t)=>i(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t))}),(0,F.jsx)(ce,{bindings:a,onUpdateBinding:(e,t)=>{s(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>s(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>s(e=>[...e,Z()])}),(0,F.jsx)(N,{children:(0,F.jsxs)(c,{type:`button`,size:`sm`,onClick:()=>{try{let e=$({companionEnabled:p,agents:r,bindings:a,runtimeEntries:l,dmScope:d,defaultContextTokens:g,defaultEngine:v,knownAgentIds:x});t.mutate({data:e})}catch(e){m.error(e instanceof Error?e.message:String(e))}},disabled:t.isPending,children:[(0,F.jsx)(k,{className:`mr-1.5 h-3.5 w-3.5`}),t.isPending?b(`saving`):b(`saveRuntimeSettings`)]})})]})}function pe(){let{data:e,isLoading:t}=ee(),n=M();return t||!e?(0,F.jsx)(o,{title:b(`runtimePageTitle`),description:b(`runtimePageDescription`),children:(0,F.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:b(`runtimeLoading`)})}):(0,F.jsx)(fe,{config:e,updateRuntime:n})}export{pe as RuntimeConfig};
@@ -1 +0,0 @@
1
- import{zt as e}from"./api-Utt-xzrT.js";export{e as SecurityConfig};
@@ -1 +0,0 @@
1
- import{A as e,t}from"./utils-UBHTdG5Q.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`animate-pulse rounded-md bg-slate-200`,e),...r})}export{r as t};
Binary file
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-BTHK0Ot9.js";var t=e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};