@nextclaw/ui 0.15.25 → 0.15.27

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 (334) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/assets/{abnfDiagram-VRR7QNED-DvTjgVMf.js → abnfDiagram-VRR7QNED-BcFJp_1X.js} +1 -1
  3. package/dist/assets/{aiden0z-pptx-renderer.es-C1nfBAXR.js → aiden0z-pptx-renderer.es-Dp2ezlQn.js} +1 -1
  4. package/dist/assets/{api-FK7tikI1.js → api-a_GaOFc7.js} +6 -6
  5. package/dist/assets/appearance-settings-page-DlGXLgff.js +1 -0
  6. package/dist/assets/{arc-BvhODBXv.js → arc-CkgyPMyW.js} +1 -1
  7. package/dist/assets/architecture-TIHT7OUA-DO2x53FK.js +1 -0
  8. package/dist/assets/{architectureDiagram-ZJ3FMSHR-BKO9RgNS.js → architectureDiagram-ZJ3FMSHR-CMd4cIjI.js} +1 -1
  9. package/dist/assets/{blockDiagram-677ZJIJ3-DHpDXy7D.js → blockDiagram-677ZJIJ3-Bz3tbhet.js} +1 -1
  10. package/dist/assets/{c4Diagram-LMCZKHZV-BG_iQnDr.js → c4Diagram-LMCZKHZV-D9hFNAGv.js} +1 -1
  11. package/dist/assets/channel-nBvMaVyP.js +1 -0
  12. package/dist/assets/{channels-list-page-CocdcIko.js → channels-list-page-BEEk4Uc9.js} +2 -2
  13. package/dist/assets/chat-page-DUQXXqQm.js +1 -0
  14. package/dist/assets/chunk-2Q5K7J3B-CJgqFDS4.js +1 -0
  15. package/dist/assets/{chunk-32BRIVSS-DR9M0LLx.js → chunk-32BRIVSS-7NrjEITq.js} +1 -1
  16. package/dist/assets/{chunk-52WLFC77-698iC3BB.js → chunk-52WLFC77-viIcqj9q.js} +1 -1
  17. package/dist/assets/{chunk-5FCAYU7R-DikTj9Ey.js → chunk-5FCAYU7R-Vsu4J-VM.js} +1 -1
  18. package/dist/assets/{chunk-5HE753X5-ko0o7_q0.js → chunk-5HE753X5-C-w6CQZK.js} +1 -1
  19. package/dist/assets/{chunk-5JV3BV7I-CEHufhgo.js → chunk-5JV3BV7I-CuKgJQ4W.js} +1 -1
  20. package/dist/assets/{chunk-5TONJI2A-CGgno1cu.js → chunk-5TONJI2A-CYeiWZKb.js} +1 -1
  21. package/dist/assets/{chunk-5VM5RSS4-DkiB4cUQ.js → chunk-5VM5RSS4-DRCbfwIn.js} +1 -1
  22. package/dist/assets/{chunk-7BUUIJ7U-DzptcytQ.js → chunk-7BUUIJ7U-BvydOcm3.js} +1 -1
  23. package/dist/assets/{chunk-BIQX33UG-DMRSQJvT.js → chunk-BIQX33UG-RlppOXKo.js} +1 -1
  24. package/dist/assets/{chunk-C7G6YPKG-Bw1BwwuY.js → chunk-C7G6YPKG-DAizzYwr.js} +1 -1
  25. package/dist/assets/{chunk-CQNSW5MT-C0z6eHBk.js → chunk-CQNSW5MT-5eChJHca.js} +1 -1
  26. package/dist/assets/{chunk-CYSBUYHQ-ByPyAouO.js → chunk-CYSBUYHQ-YHPr53fv.js} +1 -1
  27. package/dist/assets/{chunk-EMLP6XTP-CJlAXWZg.js → chunk-EMLP6XTP-CK4D7Hz5.js} +1 -1
  28. package/dist/assets/{chunk-EX3LRPZG-Dqq4zKJu.js → chunk-EX3LRPZG-BmlDFIRW.js} +1 -1
  29. package/dist/assets/{chunk-FWX5IMBZ-B0SNoCmi.js → chunk-FWX5IMBZ-D0ksHZZ9.js} +2 -2
  30. package/dist/assets/{chunk-HOUHSVGY-DG_GJih_.js → chunk-HOUHSVGY-DPkq8FCm.js} +1 -1
  31. package/dist/assets/{chunk-ICXQ74PX-Drxk_6bE.js → chunk-ICXQ74PX-FAatv5fC.js} +1 -1
  32. package/dist/assets/{chunk-JG7HCLWE-DdLFPpnd.js → chunk-JG7HCLWE-DLkIi4F7.js} +1 -1
  33. package/dist/assets/{chunk-JWPE2WC7-B8M4G76F.js → chunk-JWPE2WC7-DawOjNE3.js} +1 -1
  34. package/dist/assets/{chunk-MOJQB5TN-XP6FJHY_.js → chunk-MOJQB5TN-Di52TorW.js} +1 -1
  35. package/dist/assets/{chunk-MOZMSUNE-C_6x18Qw.js → chunk-MOZMSUNE-PfyK9w1-.js} +1 -1
  36. package/dist/assets/{chunk-OGEWGWER-N25BzCmG.js → chunk-OGEWGWER-C3jdH3Ty.js} +1 -1
  37. package/dist/assets/{chunk-OSBZ3O6U-ASDEm7y0.js → chunk-OSBZ3O6U-CecHo-f0.js} +1 -1
  38. package/dist/assets/{chunk-PUDLZKDR-CTlvAcn7.js → chunk-PUDLZKDR-f3IJh3sN.js} +1 -1
  39. package/dist/assets/{chunk-Q4XR5HBZ-Da9BWfB6.js → chunk-Q4XR5HBZ-DQFeUPxZ.js} +1 -1
  40. package/dist/assets/{chunk-QBLGF6JB-Bi6RpTJO.js → chunk-QBLGF6JB-BhUeG0y2.js} +1 -1
  41. package/dist/assets/{chunk-R7FJI6CG-DkMsSPvK.js → chunk-R7FJI6CG-C3XpZ-2u.js} +1 -1
  42. package/dist/assets/{chunk-RYQCIY6F-DZp0eU-j.js → chunk-RYQCIY6F-CAqa5klQ.js} +1 -1
  43. package/dist/assets/{chunk-U6XO7XAA-vfinDSrj.js → chunk-U6XO7XAA-D_WXezeD.js} +1 -1
  44. package/dist/assets/{chunk-V7JOEXUC-C9Nksccs.js → chunk-V7JOEXUC-CZ70oOtp.js} +1 -1
  45. package/dist/assets/chunk-VAUOI2AC-BGvh3yIx.js +1 -0
  46. package/dist/assets/{chunk-VR4S4FIN-Xv6zfwXs.js → chunk-VR4S4FIN-B7AHEYYk.js} +1 -1
  47. package/dist/assets/{chunk-WYO6CB5R-mOJNzbWl.js → chunk-WYO6CB5R-Dn9To_OI.js} +2 -2
  48. package/dist/assets/chunk-XXDRQBXY-DaBxG5gs.js +1 -0
  49. package/dist/assets/{chunk-YOTPTUD7-1-aKSu4o.js → chunk-YOTPTUD7-BYEgRBk3.js} +1 -1
  50. package/dist/assets/{chunk-ZGVPDNZ5-OJ8veMpK.js → chunk-ZGVPDNZ5-C6YtZDU0.js} +1 -1
  51. package/dist/assets/{chunk-ZIRB5QZD-SR_Nq_PP.js → chunk-ZIRB5QZD-DMuYtnHF.js} +1 -1
  52. package/dist/assets/classDiagram-OUVF2IWQ-P6N03G2R.js +1 -0
  53. package/dist/assets/classDiagram-v2-EOCWNBFH-B1_uLvMv.js +1 -0
  54. package/dist/assets/config-split-page-ps1Aod3g.js +1 -0
  55. package/dist/assets/confirm-dialog-DJSUNG33.js +5 -0
  56. package/dist/assets/{cose-bilkent-JH36ORCC-NjVgz2Bw.js → cose-bilkent-JH36ORCC-Bc2Ex5Y3.js} +1 -1
  57. package/dist/assets/cynefin-VYW2F7L2-B-H8Qp-n.js +1 -0
  58. package/dist/assets/{cynefinDiagram-TSTJHNR4-B_17LDqD.js → cynefinDiagram-TSTJHNR4-DVysQoGz.js} +1 -1
  59. package/dist/assets/{dagre-CMe101gk.js → dagre-CMhQ1cAG.js} +1 -1
  60. package/dist/assets/{dagre-VKFMJZFB-qo8nLb3B.js → dagre-VKFMJZFB-RYyWpPJZ.js} +1 -1
  61. package/dist/assets/desktop-update-config--zagjHic.js +1 -0
  62. package/dist/assets/{diagram-FQU43EPY-Ba3XIklC.js → diagram-FQU43EPY-BD6KONdF.js} +1 -1
  63. package/dist/assets/{diagram-G47NLZAW-CG45TcUx.js → diagram-G47NLZAW-CGB2ptRR.js} +1 -1
  64. package/dist/assets/{diagram-NH7WQ7WH-2F2HrwV-.js → diagram-NH7WQ7WH-DnkOI6cU.js} +1 -1
  65. package/dist/assets/{diagram-OA4YK3LP-CXfWH9NZ.js → diagram-OA4YK3LP-DF82RZ7P.js} +1 -1
  66. package/dist/assets/{diagram-WEI45ONY-CH_4yepc.js → diagram-WEI45ONY-Be2v7Ck9.js} +1 -1
  67. package/dist/assets/{dist-CaYdVVeO.js → dist-BkTYNzm_.js} +1 -1
  68. package/dist/assets/{dist-BH7W5yCi.js → dist-DkR7_Dpl.js} +1 -1
  69. package/dist/assets/doc-browser-DahzJEWj.js +1 -0
  70. package/dist/assets/doc-browser-Q67TOGVS.js +1 -0
  71. package/dist/assets/doc-browser-context-BQim8SqD.js +1 -0
  72. package/dist/assets/{docx-preview-CoM4JK7_.js → docx-preview-BqwAjrj3.js} +1 -1
  73. package/dist/assets/{ebnfDiagram-CCIWWBDH-BwiG4Ea1.js → ebnfDiagram-CCIWWBDH-CP98OYk8.js} +1 -1
  74. package/dist/assets/{erDiagram-Q63AITRT-BML3hpnQ.js → erDiagram-Q63AITRT-ZLlx8xfs.js} +1 -1
  75. package/dist/assets/eventmodeling-45OFAUF4-YVtShyFA.js +1 -0
  76. package/dist/assets/flowDiagram-23GEKE2U-BeKXabVO.js +1 -0
  77. package/dist/assets/{form-actions-0c0aw_bl.js → form-actions-B2-bpFie.js} +1 -1
  78. package/dist/assets/{ganttDiagram-NO4QXBWP-80enfWbD.js → ganttDiagram-NO4QXBWP-DXCDjHR2.js} +1 -1
  79. package/dist/assets/gitGraph-TEB2WS4Q-jTSiBj-p.js +1 -0
  80. package/dist/assets/{gitGraphDiagram-IHSO6WYX-CVLqXr-b.js → gitGraphDiagram-IHSO6WYX-l2HWrTJp.js} +1 -1
  81. package/dist/assets/index-Ba_o5fu9.js +109 -0
  82. package/dist/assets/index-DSLK7zgR.css +1 -0
  83. package/dist/assets/info-DKCQHKI2-BIporNWb.js +1 -0
  84. package/dist/assets/{infoDiagram-FWYZ7A6U-Dyvs2t0i.js → infoDiagram-FWYZ7A6U-D-DjX-bn.js} +1 -1
  85. package/dist/assets/{ishikawaDiagram-FXEZZL3T-sSnxDKfh.js → ishikawaDiagram-FXEZZL3T-y_Xy128F.js} +1 -1
  86. package/dist/assets/{journeyDiagram-5HDEW3XC-D22V71Mf.js → journeyDiagram-5HDEW3XC-DJn5xYcQ.js} +1 -1
  87. package/dist/assets/{kanban-definition-HUTT4EX6-D3ds0p-g.js → kanban-definition-HUTT4EX6-DJVIOR21.js} +1 -1
  88. package/dist/assets/{line-CbyFs065.js → line-Cos7PIOj.js} +1 -1
  89. package/dist/assets/{linear-4DKtnZBS.js → linear-BtDLqtzF.js} +1 -1
  90. package/dist/assets/loader-circle-DyXZU92l.js +1 -0
  91. package/dist/assets/{map-CcZzEoz6.js → map-BKnQyvd0.js} +1 -1
  92. package/dist/assets/mcp-marketplace-page-B0dBE5CV.js +1 -0
  93. package/dist/assets/mcp-marketplace-page-w8panjZG.js +9 -0
  94. package/dist/assets/{mermaid-parser.core-DPmMOjXD.js → mermaid-parser.core-XUNZhr2W.js} +2 -2
  95. package/dist/assets/{mermaid.core-BSf-ddRa.js → mermaid.core-ySrvolIe.js} +3 -3
  96. package/dist/assets/{mindmap-definition-LN4V7U3C-BUTwWPyx.js → mindmap-definition-LN4V7U3C-BypL9tei.js} +1 -1
  97. package/dist/assets/model-config-page-rrhFaque.js +1 -0
  98. package/dist/assets/{navigation-link-CVy0_kVl.js → navigation-link-mpHFXwRr.js} +2 -2
  99. package/dist/assets/{ordinal-BgLYtOZE.js → ordinal-CxxVWxYU.js} +1 -1
  100. package/dist/assets/packet-7NZHBO7P-CuFMADV0.js +1 -0
  101. package/dist/assets/{pegDiagram-2B236MQR-BEu_ZBjc.js → pegDiagram-2B236MQR-D-U2KBGv.js} +1 -1
  102. package/dist/assets/pie-RZYD4A2V-XUeIXhM9.js +1 -0
  103. package/dist/assets/{pieDiagram-ENE6RG2P-CAwAwuBd.js → pieDiagram-ENE6RG2P-CBi3GusJ.js} +1 -1
  104. package/dist/assets/plus-Dhb4KuMH.js +1 -0
  105. package/dist/assets/provider-scoped-model-input-CFsfWEt9.js +1 -0
  106. package/dist/assets/providers-config-page-D-TYFZsF.js +1 -0
  107. package/dist/assets/{quadrantDiagram-ABIIQ3AL-CwE6F-_2.js → quadrantDiagram-ABIIQ3AL-H0ZuvnZL.js} +1 -1
  108. package/dist/assets/radar-I7S5WNFK-D-NNGh1k.js +1 -0
  109. package/dist/assets/railroad-3IZDKUUU-C67_uDaM.js +1 -0
  110. package/dist/assets/railroad-abnf-AHOZXSZD-BZ8Yflnd.js +1 -0
  111. package/dist/assets/railroad-ebnf-EBAXGLYW-B7zO7RoK.js +1 -0
  112. package/dist/assets/railroad-peg-LSFZ7HO6-R63PTgLz.js +1 -0
  113. package/dist/assets/{railroadDiagram-RFXS5EU6-xgLekU3B.js → railroadDiagram-RFXS5EU6-D7Y2EqSd.js} +1 -1
  114. package/dist/assets/react-BlXwvOLo.js +8 -0
  115. package/dist/assets/{refresh-cw-j2bl79Ea.js → refresh-cw-JFuyDj_P.js} +1 -1
  116. package/dist/assets/remote-BwVv_Qq-.js +1 -0
  117. package/dist/assets/{requirementDiagram-TGXJPOKE-CyVUzEX5.js → requirementDiagram-TGXJPOKE-BiXNX1NN.js} +1 -1
  118. package/dist/assets/rotate-cw-DjbbiIW_.js +1 -0
  119. package/dist/assets/runtime-config-page-Br9j9Vxe.js +1 -0
  120. package/dist/assets/{sankeyDiagram-HTMAVEWB-JK6bFmYB.js → sankeyDiagram-HTMAVEWB-qzDeLztW.js} +1 -1
  121. package/dist/assets/{save-BKNrtK81.js → save-BL8P8CLX.js} +1 -1
  122. package/dist/assets/{search-CkOm65W_.js → search-bZL75Pgc.js} +1 -1
  123. package/dist/assets/search-config-page-B3fvzMd1.js +1 -0
  124. package/dist/assets/secrets-config-page-ClwTxtXd.js +3 -0
  125. package/dist/assets/security-config-DmJw9QZA.js +1 -0
  126. package/dist/assets/{select-Ea7ffKCE.js → select-rUZ8nIZu.js} +2 -2
  127. package/dist/assets/{sequenceDiagram-DBY2YBRQ-BR5IokXV.js → sequenceDiagram-DBY2YBRQ-BtRbPQtL.js} +1 -1
  128. package/dist/assets/{settings-2-CtyN3m_V.js → settings-2-BI4SCkxQ.js} +1 -1
  129. package/dist/assets/{sizeCapture-X5ZJPWSS-SxG_YnMA.js → sizeCapture-X5ZJPWSS-CMYvM3SL.js} +1 -1
  130. package/dist/assets/skeleton-CVmEPG43.js +1 -0
  131. package/dist/assets/{src-vgz8E_-O.js → src-Bw-mzbQb.js} +1 -1
  132. package/dist/assets/{stateDiagram-2N3HPSRC-DD4OoYhn.js → stateDiagram-2N3HPSRC-BJ-mFeOz.js} +1 -1
  133. package/dist/assets/stateDiagram-v2-6OUMAXLB-BE-HqxOK.js +1 -0
  134. package/dist/assets/{swimlanes-5IMT3BWC-BWkFeyCT.js → swimlanes-5IMT3BWC-BsucVOO2.js} +2 -2
  135. package/dist/assets/swimlanesDiagram-G3AALYLV-Dr1H9LJH.js +8 -0
  136. package/dist/assets/{tag-chip-C9l4xsKp.js → tag-chip-BdI_yIOA.js} +1 -1
  137. package/dist/assets/{timeline-definition-FHXFAJF6-VTRPy6KA.js → timeline-definition-FHXFAJF6-Bicewlzo.js} +1 -1
  138. package/dist/assets/treeView-QDETBFTQ-npJ5dbqS.js +1 -0
  139. package/dist/assets/treemap-6X3UGDF4-pYrBx6oa.js +1 -0
  140. package/dist/assets/{vennDiagram-L72KCM5P-Bvk42Pek.js → vennDiagram-L72KCM5P-BxOOnO9x.js} +1 -1
  141. package/dist/assets/wardley-OPB4EBWU-CmSRKLR8.js +1 -0
  142. package/dist/assets/{wardleyDiagram-EHGQE667-DOFjx2s3.js → wardleyDiagram-EHGQE667-Cl7NltMv.js} +1 -1
  143. package/dist/assets/x-BcEayhV6.js +1 -0
  144. package/dist/assets/{xychartDiagram-FW5EYKEG-DY5yRTUc.js → xychartDiagram-FW5EYKEG-DiMIxQ7N.js} +1 -1
  145. package/dist/index.html +21 -22
  146. package/package.json +6 -6
  147. package/src/app/components/layout/app-layout.tsx +38 -2
  148. package/src/app/hooks/__tests__/use-app-event-consumers.test.ts +20 -0
  149. package/src/app/hooks/use-app-event-consumers.ts +21 -0
  150. package/src/app/presenters/app.presenter.ts +6 -0
  151. package/src/features/apps/components/__tests__/app-packages-panel.test.tsx +312 -0
  152. package/src/features/apps/components/__tests__/apps-panel.test.tsx +58 -0
  153. package/src/features/apps/components/app-artwork.tsx +49 -0
  154. package/src/features/apps/components/app-marketplace-catalog.tsx +332 -0
  155. package/src/features/apps/components/app-marketplace-cover.tsx +64 -0
  156. package/src/features/apps/components/app-marketplace-detail.tsx +161 -0
  157. package/src/features/apps/components/app-marketplace-dialog.tsx +152 -0
  158. package/src/features/apps/components/app-marketplace-operation.tsx +84 -0
  159. package/src/features/apps/components/app-package-card.tsx +417 -0
  160. package/src/features/apps/components/app-packages-panel.tsx +373 -0
  161. package/src/features/apps/components/apps-panel.tsx +31 -23
  162. package/src/features/apps/hooks/use-app-marketplace.test.ts +144 -0
  163. package/src/features/apps/hooks/use-app-marketplace.ts +65 -0
  164. package/src/features/apps/hooks/use-app-packages.ts +114 -0
  165. package/src/features/apps/index.ts +1 -0
  166. package/src/features/apps/managers/__tests__/app-package-operation-settlement.manager.test.ts +81 -0
  167. package/src/features/apps/managers/app-package-operation-settlement.manager.ts +80 -0
  168. package/src/features/apps/services/app-marketplace.service.ts +223 -0
  169. package/src/features/apps/types/app-marketplace.types.ts +75 -0
  170. package/src/features/chat/components/chat-sidebar-list-mode-switch.tsx +27 -4
  171. package/src/features/chat/components/layout/__tests__/chat-sidebar-session-area.test.tsx +36 -5
  172. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +12 -13
  173. package/src/features/chat/features/conversation/components/__tests__/session-conversation-area.test.tsx +49 -1
  174. package/src/features/chat/features/conversation/components/__tests__/session-conversation-input.streaming.test.tsx +68 -7
  175. package/src/features/chat/features/conversation/components/session-conversation-area.tsx +25 -4
  176. package/src/features/chat/features/conversation/components/session-conversation-input.tsx +3 -0
  177. package/src/features/chat/features/conversation/components/session-queued-input-rows.tsx +24 -14
  178. package/src/features/chat/features/conversation/hooks/__tests__/use-session-conversation-controller.test.tsx +53 -0
  179. package/src/features/chat/features/conversation/hooks/__tests__/use-session-run-queue.test.tsx +18 -0
  180. package/src/features/chat/features/conversation/hooks/use-chat-composer-reference-intent.ts +4 -1
  181. package/src/features/chat/features/conversation/hooks/use-session-conversation-controller.ts +126 -32
  182. package/src/features/chat/features/conversation/hooks/use-session-run-queue.ts +12 -2
  183. package/src/features/chat/features/conversation/hooks/use-system-object-reference-select.ts +27 -0
  184. package/src/features/chat/features/conversation/utils/session-message-composer.utils.ts +5 -0
  185. package/src/features/chat/features/input/hooks/__tests__/use-chat-input-surface-state.test.tsx +102 -0
  186. package/src/features/chat/features/input/hooks/use-chat-input-surface-state.ts +71 -120
  187. package/src/features/chat/features/input/input-surface-plugins/__tests__/context-reference-plugin.test.ts +265 -18
  188. package/src/features/chat/features/input/input-surface-plugins/chat-input-product-plugin-adapters.types.ts +7 -2
  189. package/src/features/chat/features/input/input-surface-plugins/chat-input-product-plugin-adapters.utils.ts +124 -0
  190. package/src/features/chat/features/input/input-surface-plugins/context-reference-items.utils.ts +99 -15
  191. package/src/features/chat/features/input/input-surface-plugins/context-reference-plugin.utils.ts +143 -139
  192. package/src/features/chat/features/input/input-surface-plugins/panel-app-input-surface-items.utils.ts +116 -0
  193. package/src/features/chat/features/input/input-surface-plugins/slash-command-plugin.utils.ts +1 -1
  194. package/src/features/chat/features/input/utils/__tests__/chat-inline-token.utils.test.ts +84 -1
  195. package/src/features/chat/features/input/utils/chat-composer-token-protocol.utils.ts +10 -0
  196. package/src/features/chat/features/input/utils/chat-inline-token-composer.utils.ts +148 -0
  197. package/src/features/chat/features/input/utils/chat-inline-token.utils.ts +55 -101
  198. package/src/features/chat/features/input/utils/chat-system-object-reference.utils.test.ts +44 -0
  199. package/src/features/chat/features/input/utils/chat-system-object-reference.utils.ts +46 -0
  200. package/src/features/chat/features/message/hooks/use-chat-inline-token-actions.ts +8 -1
  201. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel-content.test.tsx +155 -18
  202. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-text-selection.test.tsx +12 -8
  203. package/src/features/chat/features/workspace/components/chat-session-workspace-directory-browser.tsx +80 -62
  204. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-content.tsx +9 -2
  205. package/src/features/chat/features/workspace/components/project-files/workspace-directory-tree.tsx +83 -13
  206. package/src/features/chat/features/workspace/components/project-files/workspace-project-tree-view.tsx +93 -0
  207. package/src/features/chat/features/workspace/hooks/use-workspace-explorer-layout.ts +8 -11
  208. package/src/features/chat/features/workspace/hooks/use-workspace-file-actions.ts +68 -46
  209. package/src/features/chat/features/workspace/stores/__tests__/workspace-project-tree.store.test.ts +38 -0
  210. package/src/features/chat/features/workspace/stores/workspace-project-tree.store.ts +160 -0
  211. package/src/features/chat/index.ts +2 -1
  212. package/src/features/chat/managers/__tests__/chat-composer-intent.manager.test.ts +29 -0
  213. package/src/features/chat/managers/chat-composer-intent.manager.ts +29 -2
  214. package/src/features/chat/managers/chat-draft-intent.manager.ts +18 -2
  215. package/src/features/chat/presenters/chat.presenter.ts +2 -2
  216. package/src/features/chat/stores/__tests__/chat-thread.store.test.ts +6 -0
  217. package/src/features/chat/stores/chat-thread.store.ts +6 -0
  218. package/src/features/inbox/components/inbox-reader-dialog.test.tsx +38 -5
  219. package/src/features/inbox/components/inbox-reader-dialog.tsx +5 -3
  220. package/src/features/inbox/managers/inbox.manager.test.ts +28 -3
  221. package/src/features/inbox/managers/inbox.manager.ts +14 -4
  222. package/src/features/inbox/pages/inbox-page.test.ts +121 -2
  223. package/src/features/inbox/pages/inbox-page.tsx +5 -3
  224. package/src/features/marketplace/components/__tests__/marketplace-page.test.tsx +85 -1
  225. package/src/features/marketplace/hooks/__tests__/use-marketplace.test.tsx +44 -1
  226. package/src/features/marketplace/hooks/use-marketplace-item-actions.ts +23 -2
  227. package/src/features/marketplace/hooks/use-marketplace.ts +10 -0
  228. package/src/features/marketplace/index.ts +4 -0
  229. package/src/features/panel-apps/components/__tests__/panel-apps-list.test.tsx +1 -1
  230. package/src/features/panel-apps/components/panel-apps-list.tsx +1 -6
  231. package/src/features/panel-apps/index.ts +5 -1
  232. package/src/features/panel-apps/utils/__tests__/panel-app-doc-browser.utils.test.ts +13 -6
  233. package/src/features/panel-apps/utils/panel-app-doc-browser.utils.tsx +6 -3
  234. package/src/features/right-panel-resources/index.ts +1 -0
  235. package/src/features/right-panel-resources/utils/__tests__/right-panel-resource-uri.utils.test.ts +34 -0
  236. package/src/features/right-panel-resources/utils/right-panel-resource-uri.utils.ts +36 -4
  237. package/src/features/service-apps/components/service-apps-panel.tsx +3 -17
  238. package/src/features/system-status/components/__tests__/desktop-update-config.test.tsx +20 -1
  239. package/src/features/system-status/components/desktop-update-config.tsx +14 -13
  240. package/src/features/system-status/managers/__tests__/runtime-update.manager.test.ts +99 -0
  241. package/src/features/system-status/managers/runtime-update.manager.ts +22 -0
  242. package/src/features/system-status/stores/runtime-update.store.ts +1 -0
  243. package/src/platforms/desktop/components/desktop-app-shell.tsx +5 -0
  244. package/src/platforms/mobile/components/mobile-app-shell.tsx +9 -1
  245. package/src/shared/components/actions/__tests__/navigation-link.test.tsx +12 -0
  246. package/src/shared/components/actions/navigation-link.tsx +6 -3
  247. package/src/shared/components/doc-browser/__tests__/doc-browser.test.tsx +34 -0
  248. package/src/shared/components/doc-browser/doc-browser-tab-strip.tsx +5 -0
  249. package/src/shared/components/doc-browser/doc-browser.tsx +11 -1
  250. package/src/shared/components/doc-browser/managers/doc-browser.manager.ts +13 -0
  251. package/src/shared/components/ui/actions/__tests__/icon-action-button.test.tsx +15 -0
  252. package/src/shared/components/ui/actions/icon-action-button.tsx +4 -2
  253. package/src/shared/components/ui/tabs.tsx +24 -1
  254. package/src/shared/hooks/use-server-path-watch.ts +42 -0
  255. package/src/shared/hooks/use-system-object-references.ts +22 -0
  256. package/src/shared/lib/api/server-path/server-path.types.ts +10 -0
  257. package/src/shared/lib/api/types.ts +13 -0
  258. package/src/shared/lib/api/utils/server-path.utils.ts +10 -0
  259. package/src/shared/lib/i18n/locales/en-US/chat.json +17 -9
  260. package/src/shared/lib/i18n/locales/en-US/desktop-update.json +7 -4
  261. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +82 -0
  262. package/src/shared/lib/i18n/locales/en-US/marketplace.json +3 -0
  263. package/src/shared/lib/i18n/locales/zh-CN/chat.json +19 -11
  264. package/src/shared/lib/i18n/locales/zh-CN/desktop-update.json +7 -4
  265. package/src/shared/lib/i18n/locales/zh-CN/doc-browser.json +82 -0
  266. package/src/shared/lib/i18n/locales/zh-CN/marketplace.json +3 -0
  267. package/vite.config.ts +32 -1
  268. package/dist/assets/appearance-settings-page-BYbvl2wj.js +0 -1
  269. package/dist/assets/architecture-TIHT7OUA-Bjp9jf0h.js +0 -1
  270. package/dist/assets/channel-5T3pdR-s.js +0 -1
  271. package/dist/assets/chat-page-C5E-LLVd.js +0 -1
  272. package/dist/assets/chunk-2Q5K7J3B-DTZ3tGfE.js +0 -1
  273. package/dist/assets/chunk-VAUOI2AC-HLGIHQ6k.js +0 -1
  274. package/dist/assets/chunk-XXDRQBXY-Dl0m6Ni-.js +0 -1
  275. package/dist/assets/classDiagram-OUVF2IWQ-DcDnzGNX.js +0 -1
  276. package/dist/assets/classDiagram-v2-EOCWNBFH-BKXKMzKM.js +0 -1
  277. package/dist/assets/config-split-page-CA_a0AJ5.js +0 -1
  278. package/dist/assets/confirm-dialog-CxZfenjK.js +0 -5
  279. package/dist/assets/cynefin-VYW2F7L2-BWg7U2UD.js +0 -1
  280. package/dist/assets/desktop-update-config-BEKC8Ly9.js +0 -1
  281. package/dist/assets/doc-browser-Cl2ldE3f.js +0 -1
  282. package/dist/assets/doc-browser-DXCSd63E.js +0 -1
  283. package/dist/assets/doc-browser-context-FDPs3gJf.js +0 -1
  284. package/dist/assets/eventmodeling-45OFAUF4-SB-J4tpq.js +0 -1
  285. package/dist/assets/flowDiagram-23GEKE2U-BQ_u-eLM.js +0 -1
  286. package/dist/assets/gitGraph-TEB2WS4Q-DPxNwsFd.js +0 -1
  287. package/dist/assets/i18n-provider-DkITJNz8.js +0 -1
  288. package/dist/assets/index-CQ2LcI2p.css +0 -1
  289. package/dist/assets/index-CrdfvBVg.js +0 -107
  290. package/dist/assets/info-DKCQHKI2-DNlNGH90.js +0 -1
  291. package/dist/assets/loader-circle-DHtUxCIA.js +0 -1
  292. package/dist/assets/mcp-marketplace-page-Bc_jI5iH.js +0 -9
  293. package/dist/assets/mcp-marketplace-page-CzCieD9r.js +0 -1
  294. package/dist/assets/model-config-page-C4jw-pcj.js +0 -1
  295. package/dist/assets/packet-7NZHBO7P-BpeiqkBZ.js +0 -1
  296. package/dist/assets/pie-RZYD4A2V-Cy1yxsPd.js +0 -1
  297. package/dist/assets/plus-CG1RwZQq.js +0 -1
  298. package/dist/assets/provider-scoped-model-input-CmH4BFvc.js +0 -1
  299. package/dist/assets/providers-config-page-CJQjwzaw.js +0 -1
  300. package/dist/assets/radar-I7S5WNFK-CEcPKCj8.js +0 -1
  301. package/dist/assets/railroad-3IZDKUUU-CW38eNDs.js +0 -1
  302. package/dist/assets/railroad-abnf-AHOZXSZD-ByrylcXf.js +0 -1
  303. package/dist/assets/railroad-ebnf-EBAXGLYW-CNB6GwP-.js +0 -1
  304. package/dist/assets/railroad-peg-LSFZ7HO6-x6hnqlBG.js +0 -1
  305. package/dist/assets/react-DjFBVA0n.js +0 -8
  306. package/dist/assets/remote-BIlpD3yL.js +0 -1
  307. package/dist/assets/rotate-cw-bKG8zH8M.js +0 -1
  308. package/dist/assets/runtime-config-page-B_x2Glz5.js +0 -1
  309. package/dist/assets/search-config-page-BaIijtmO.js +0 -1
  310. package/dist/assets/secrets-config-page-CJjtdFAl.js +0 -3
  311. package/dist/assets/security-config-DB8apj09.js +0 -1
  312. package/dist/assets/skeleton-Bt6zxcAB.js +0 -1
  313. package/dist/assets/stateDiagram-v2-6OUMAXLB-ZC6dFORv.js +0 -1
  314. package/dist/assets/swimlanesDiagram-G3AALYLV-CRkh51Im.js +0 -8
  315. package/dist/assets/treeView-QDETBFTQ-Bw0DSCH7.js +0 -1
  316. package/dist/assets/treemap-6X3UGDF4-DFWBFcfh.js +0 -1
  317. package/dist/assets/wardley-OPB4EBWU-CoWturk0.js +0 -1
  318. package/dist/assets/x-CowtCu9Z.js +0 -1
  319. /package/dist/assets/{array-NADKd9aU.js → array-BQVzeGRt.js} +0 -0
  320. /package/dist/assets/{chunk-KEIR6QF5-BuyuzJJL.js → chunk-KEIR6QF5-f9psyCXK.js} +0 -0
  321. /package/dist/assets/{chunk-Y2CYZVJY-D_B2ZRNt.js → chunk-Y2CYZVJY-D1mAU_Po.js} +0 -0
  322. /package/dist/assets/{config-hints-BcfVUMij.js → config-hints-nV5HPOvq.js} +0 -0
  323. /package/dist/assets/{cytoscape.esm-BANTlgza.js → cytoscape.esm-0uDtdD0l.js} +0 -0
  324. /package/dist/assets/{defaultLocale-C4_L0aEs.js → defaultLocale-DSWXGgt0.js} +0 -0
  325. /package/dist/assets/{dist-DAPEIJbz.js → dist--ta5rX12.js} +0 -0
  326. /package/dist/assets/{graphlib-ChqXg0dI.js → graphlib-CQ6QV4yP.js} +0 -0
  327. /package/dist/assets/{host-capabilities-D9C4CBK5.js → host-capabilities-Tk038i04.js} +0 -0
  328. /package/dist/assets/{init-D8wZg9xq.js → init-Y6h9jGtZ.js} +0 -0
  329. /package/dist/assets/{jszip.min-CkbBfwAQ.js → jszip.min-8hyJpgpx.js} +0 -0
  330. /package/dist/assets/{katex-TZJFa0J_.js → katex-ARhY9PS1.js} +0 -0
  331. /package/dist/assets/{middleware-B3k-TSmZ.js → middleware-DXsbf9xI.js} +0 -0
  332. /package/dist/assets/{path-DodfxcX7.js → path-10BjdyLh.js} +0 -0
  333. /package/dist/assets/{rough.esm-CUaa1Rbe.js → rough.esm-DxgC_14r.js} +0 -0
  334. /package/dist/assets/{xlsx-CxByi7bR.js → xlsx-DrDuDNAa.js} +0 -0
@@ -39,8 +39,29 @@ export function Tabs({ defaultValue: _defaultValue, value, onValueChange, childr
39
39
  }
40
40
 
41
41
  export function TabsList({ children, className }: TabsListProps) {
42
+ const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
43
+ if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return;
44
+ const triggers = Array.from(
45
+ event.currentTarget.querySelectorAll<HTMLButtonElement>('[role="tab"]:not(:disabled)'),
46
+ );
47
+ if (triggers.length === 0) return;
48
+ const currentIndex = triggers.indexOf(document.activeElement as HTMLButtonElement);
49
+ const nextIndex = event.key === 'Home'
50
+ ? 0
51
+ : event.key === 'End'
52
+ ? triggers.length - 1
53
+ : event.key === 'ArrowRight'
54
+ ? (Math.max(currentIndex, -1) + 1) % triggers.length
55
+ : (currentIndex <= 0 ? triggers.length : currentIndex) - 1;
56
+ event.preventDefault();
57
+ triggers[nextIndex]?.focus();
58
+ triggers[nextIndex]?.click();
59
+ };
60
+
42
61
  return (
43
62
  <div
63
+ role="tablist"
64
+ onKeyDown={handleKeyDown}
44
65
  className={cn(
45
66
  'inline-flex h-9 items-center justify-center rounded-xl bg-muted p-1 text-muted-foreground',
46
67
  className
@@ -61,7 +82,9 @@ export function TabsTrigger({ value, children, className }: TabsTriggerProps) {
61
82
  <button
62
83
  type="button"
63
84
  onClick={() => context.onValueChange(value)}
64
- aria-pressed={isActive}
85
+ role="tab"
86
+ aria-selected={isActive}
87
+ tabIndex={isActive ? 0 : -1}
65
88
  data-state={isActive ? 'active' : 'inactive'}
66
89
  className={cn(
67
90
  'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-[13px] font-medium transition-all duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none disabled:opacity-50',
@@ -0,0 +1,42 @@
1
+ import { useEffect } from 'react';
2
+ import { unwatchServerPaths, watchServerPaths } from '@/shared/lib/api';
3
+
4
+ const SERVER_PATH_WATCH_HEARTBEAT_MS = 2 * 60_000;
5
+
6
+ export function useServerPathWatch(directories: readonly string[]): void {
7
+ const signature = directories.join('\n');
8
+
9
+ useEffect(() => {
10
+ const watchedDirectories = signature.split('\n').filter(Boolean);
11
+ if (watchedDirectories.length === 0) return;
12
+ let disposed = false;
13
+ let subscriptionId: string | null = null;
14
+ let heartbeat: ReturnType<typeof setInterval> | null = null;
15
+
16
+ const subscribe = async () => {
17
+ try {
18
+ const result = await watchServerPaths({
19
+ directories: watchedDirectories,
20
+ subscriptionId,
21
+ });
22
+ if (disposed) {
23
+ await unwatchServerPaths(result.subscriptionId).catch(() => undefined);
24
+ return;
25
+ }
26
+ subscriptionId = result.subscriptionId;
27
+ } catch (error) {
28
+ console.warn('Project file auto-refresh is unavailable; manual refresh remains available.', error);
29
+ }
30
+ };
31
+
32
+ void subscribe().then(() => {
33
+ if (!disposed && subscriptionId) heartbeat = setInterval(() => void subscribe(), SERVER_PATH_WATCH_HEARTBEAT_MS);
34
+ });
35
+
36
+ return () => {
37
+ disposed = true;
38
+ if (heartbeat) clearInterval(heartbeat);
39
+ if (subscriptionId) void unwatchServerPaths(subscriptionId).catch(() => undefined);
40
+ };
41
+ }, [signature]);
42
+ }
@@ -0,0 +1,22 @@
1
+ import { useQuery } from '@tanstack/react-query';
2
+ import { nextclawClient } from '@/shared/lib/api';
3
+
4
+ export function useSystemObjectReferences(params: {
5
+ enabled: boolean;
6
+ query: string;
7
+ limit?: number;
8
+ objectType?: string;
9
+ }) {
10
+ const { enabled, limit, objectType } = params;
11
+ const query = params.query.trim();
12
+ return useQuery({
13
+ queryKey: ['system-object-references', objectType ?? null, query, limit ?? null],
14
+ queryFn: () => nextclawClient.systemObjectReferences.list({
15
+ query: query || undefined,
16
+ limit,
17
+ objectType,
18
+ }),
19
+ enabled,
20
+ staleTime: 10_000,
21
+ });
22
+ }
@@ -21,6 +21,16 @@ export type ServerPathBrowseView = {
21
21
  locations: ServerPathLocationView[];
22
22
  };
23
23
 
24
+ export type ServerPathWatchRequest = {
25
+ subscriptionId?: string | null;
26
+ directories: string[];
27
+ };
28
+
29
+ export type ServerPathWatchView = {
30
+ subscriptionId: string;
31
+ watchedDirectories: string[];
32
+ };
33
+
24
34
  export type ServerPathSearchEntryView = {
25
35
  name: string;
26
36
  path: string;
@@ -6,6 +6,13 @@ export type {
6
6
  ProjectListView,
7
7
  ProjectTemplateView,
8
8
  ProjectView,
9
+ SystemObjectReferenceDisplayText,
10
+ SystemObjectReferenceGroupDescriptor,
11
+ SystemObjectReferenceGroupIcon,
12
+ SystemObjectReferenceGroupView,
13
+ SystemObjectReferenceItem,
14
+ SystemObjectReferenceListView,
15
+ SystemObjectResolvedReference,
9
16
  } from '@nextclaw/client-sdk';
10
17
  export type {
11
18
  SessionEntryView,
@@ -442,6 +449,8 @@ export type {
442
449
  ServerPathReadView,
443
450
  ServerPathSearchEntryView,
444
451
  ServerPathSearchView,
452
+ ServerPathWatchRequest,
453
+ ServerPathWatchView,
445
454
  } from './server-path/server-path.types';
446
455
 
447
456
  export type PanelAppEntryView = {
@@ -461,6 +470,9 @@ export type PanelAppEntryView = {
461
470
  clientGranted: boolean;
462
471
  lastOpenedAt?: string;
463
472
  openCount: number;
473
+ sourceKind?: 'workspace' | 'package';
474
+ packageId?: string;
475
+ packageVersion?: string;
464
476
  };
465
477
 
466
478
  export type PanelAppListView = {
@@ -816,6 +828,7 @@ export type ConfigActionExecuteResult = {
816
828
  // WebSocket events
817
829
  export type WsEvent =
818
830
  | { type: 'config.updated'; payload: { path: string } }
831
+ | { type: 'server-path.changed'; payload: { directoryPath: string } }
819
832
  | {
820
833
  type: 'channel.config.apply-status';
821
834
  payload: {
@@ -12,6 +12,8 @@ import type {
12
12
  ServerPathFilesUploadView,
13
13
  ServerPathReadView,
14
14
  ServerPathSearchView,
15
+ ServerPathWatchRequest,
16
+ ServerPathWatchView,
15
17
  } from '@/shared/lib/api/types';
16
18
 
17
19
  const SERVER_PATH_CONTENT_BASE_PATH = '/api/server-paths/content';
@@ -24,6 +26,14 @@ export async function fetchServerPathBrowse(params?: {
24
26
  return await nextclawClient.serverPaths.browse(params);
25
27
  }
26
28
 
29
+ export async function watchServerPaths(input: ServerPathWatchRequest): Promise<ServerPathWatchView> {
30
+ return await nextclawClient.serverPaths.watch(input);
31
+ }
32
+
33
+ export async function unwatchServerPaths(subscriptionId: string): Promise<void> {
34
+ await nextclawClient.serverPaths.unwatch(subscriptionId);
35
+ }
36
+
27
37
  export async function createServerPathDirectory(
28
38
  input: ServerPathDirectoryCreateRequest,
29
39
  ): Promise<ServerPathDirectoryCreateView> {
@@ -290,20 +290,27 @@
290
290
  "chatPanelAppReferenceNoDescription": "No panel app description",
291
291
  "chatContextReferenceLoading": "Searching references...",
292
292
  "chatContextReferenceSection": "References",
293
- "chatContextReferenceNoResult": "No matching files, folders, projects, or panel apps",
294
- "chatContextReferenceHint": "Type @ to reference a file, folder, project, or panel app",
293
+ "chatContextReferenceNoResult": "No matching system objects, files, folders, projects, or panel apps",
294
+ "chatContextReferenceHint": "Type @ to reference a system object, file, folder, project, or panel app",
295
295
  "chatContextReferenceItemHint": "Press Enter to add this reference.",
296
- "chatContextReferenceFilesLabel": "Files & Folders",
297
- "chatContextReferenceFilesType": "Project Context",
298
- "chatContextReferenceFilesDescription": "Search and reference files or folders in the current project.",
299
- "chatContextReferenceFilesHint": "Press Enter to browse files and folders.",
296
+ "chatContextReferenceFilesLabel": "Files",
297
+ "chatContextReferenceFilesType": "Project Files",
298
+ "chatContextReferenceFilesDescription": "Browse and reference files in the current project.",
299
+ "chatContextReferenceFilesHint": "Press Enter to browse files.",
300
+ "chatContextReferenceFoldersLabel": "Folders",
301
+ "chatContextReferenceFoldersType": "Project Folders",
302
+ "chatContextReferenceFoldersDescription": "Browse and reference folders in the current project.",
303
+ "chatContextReferenceFoldersHint": "Press Enter to browse folders.",
300
304
  "chatContextReferenceBack": "Back to all references",
301
- "chatContextReferenceBackDescription": "Return to the unified file, folder, project, and panel app reference menu.",
305
+ "chatContextReferenceBackDescription": "Return to the unified system object, file, folder, project, and panel app reference menu.",
302
306
  "chatContextReferenceBackHint": "Press Enter to go back.",
303
307
  "chatContextReferenceParent": "Up one folder",
304
308
  "chatContextReferenceParentDescription": "Browse the parent folder without closing the reference menu.",
305
309
  "chatContextReferenceParentHint": "Press Enter to open the parent folder.",
306
310
  "chatContextReferenceCurrentDirectory": "Reference current folder",
311
+ "chatSystemObjectSection": "System Objects",
312
+ "chatSystemObjectGroupHint": "Press Enter to browse this category.",
313
+ "chatSystemObjectResolveFailed": "Could not reference system object",
307
314
  "chatContextReferenceFileDescription": "Use this file as explicit context for the current message.",
308
315
  "chatContextReferenceDirectoryDescription": "Use this folder as a context scope for the current message.",
309
316
  "chatContextReferenceProjectsLabel": "Projects",
@@ -316,8 +323,7 @@
316
323
  "chatContextReferenceProjectSection": "Projects",
317
324
  "chatContextReferenceProjectsLoadFailed": "Failed to load projects",
318
325
  "chatContextReferenceProjectRoot": "Project directory",
319
- "chatContextReferenceWorkspaceSection": "Files & Folders",
320
- "chatContextReferenceSearchFailed": "File search failed",
326
+ "chatContextReferenceSearchFailed": "Reference search failed",
321
327
  "chatSkillScopeBuiltin": "Built-in",
322
328
  "chatSkillScopeGlobal": "Global",
323
329
  "chatSkillScopeProject": "Project",
@@ -381,6 +387,7 @@
381
387
  "chatSending": "Sending...",
382
388
  "chatQueueSend": "Queue",
383
389
  "chatQueuedBannerAttachmentFallback": "Attachment message",
390
+ "chatQueuedSubmitting": "Adding to queue…",
384
391
  "chatQueuedEdit": "Edit queued input",
385
392
  "chatQueuedDelete": "Delete queued input",
386
393
  "chatDeleteSession": "Delete Session",
@@ -484,6 +491,7 @@
484
491
  "chatSidebarTaskRecords": "Sessions",
485
492
  "chatSidebarViewTime": "Time",
486
493
  "chatSidebarViewProject": "Project",
494
+ "chatSidebarViewMode": "Session list view",
487
495
  "chatSidebarToday": "Today",
488
496
  "chatSidebarYesterday": "Yesterday",
489
497
  "chatSidebarPrevious7Days": "Previous 7 Days",
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "updates": "Updates",
3
3
  "runtimeUpdatesPageTitle": "Runtime Updates",
4
- "runtimeUpdatesPageDescription": "NextClaw checks every two hours; you choose when to download and apply each update.",
4
+ "runtimeUpdatesPageDescription": "NextClaw checks every two hours; you choose when to start each update.",
5
5
  "runtimeUpdatesUnavailableTitle": "Updates Are Currently Unavailable",
6
6
  "runtimeUpdatesUnavailableDescription": "This runtime environment does not currently expose an update host.",
7
7
  "runtimeUpdatesUnavailableHint": "The update entry appears automatically once the host supports updates.",
8
8
  "runtimeUpdatesHostVersion": "Host Version",
9
- "runtimeUpdatesDownloadedBannerDescription": "Version {version} has finished downloading and is ready to switch over when you confirm.",
10
- "runtimeUpdatesActionsDescription": "Manually check, manually download, and switch to a downloaded version whenever you are ready.",
9
+ "runtimeUpdatesDownloadedBannerDescription": "Version {version} has finished downloading and is ready to finish updating.",
10
+ "runtimeUpdatesActionsDescription": "Check manually, then complete the update in one action whenever you are ready.",
11
11
  "runtimeUpdatesApplyNow": "Update Now",
12
12
  "runtimeUpdatesLoadFailed": "Failed to load update state",
13
13
  "runtimeUpdatesCheckFailed": "Failed to check for updates",
14
14
  "runtimeUpdatesDownloadFailed": "Failed to download update",
15
15
  "runtimeUpdatesApplyFailed": "Failed to apply update",
16
+ "runtimeUpdatesUpdateFailed": "Failed to update",
16
17
  "runtimeUpdatesChannelChangeFailed": "Failed to change the release channel",
17
18
  "runtimeUpdatesAlreadyLatest": "You already have the latest version.",
18
19
  "runtimeUpdatesReadyToApply": "The update is ready and can be applied now.",
@@ -33,6 +34,8 @@
33
34
  "desktopUpdatesStatusAvailable": "Update Available",
34
35
  "desktopUpdatesStatusDownloading": "Downloading",
35
36
  "desktopUpdatesStatusDownloaded": "Downloaded",
37
+ "desktopUpdatesStatusApplying": "Updating",
38
+ "desktopUpdatesStatusRestartRequired": "Restart Required",
36
39
  "desktopUpdatesStatusUpToDate": "Up to Date",
37
40
  "desktopUpdatesStatusBlocked": "Blocked",
38
41
  "desktopUpdatesStatusFailed": "Failed",
@@ -64,7 +67,7 @@
64
67
  "desktopUpdatesBlockedRootCause.host-too-old": "Root cause: the host is too old for this runtime bundle; upgrade the NextClaw launcher first.",
65
68
  "desktopUpdatesBlockedRootCause.unsupported-installation": "Root cause: this installation or update source does not support auto-update; use a configured build.",
66
69
  "desktopUpdatesChannelSettingsTitle": "Update Channel",
67
- "desktopUpdatesChannelSettingsDescription": "NextClaw checks every two hours; downloading and applying always require your action.",
70
+ "desktopUpdatesChannelSettingsDescription": "NextClaw checks every two hours; you choose when an update starts.",
68
71
  "desktopUpdatesReleaseChannel": "Release Channel",
69
72
  "desktopUpdatesReleaseChannelHelp": "Stable is for everyday use, while Beta lets you try newer builds earlier with more risk.",
70
73
  "desktopUpdatesReleaseChannelDowngradeHint": "Switching back to Stable does not force an immediate downgrade. Stable updates resume once that channel catches up with or exceeds your current version.",
@@ -17,6 +17,8 @@
17
17
  "docBrowserHomeTitle": "Start Page",
18
18
  "docBrowserCloseTab": "Close Tab",
19
19
  "docBrowserTabUntitled": "Untitled",
20
+ "docBrowserTabMoreActions": "More tab actions",
21
+ "docBrowserAddToChat": "Add to Chat",
20
22
  "sideDockPinCurrent": "Pin to SideDock",
21
23
  "sideDockUnpinCurrent": "Remove from SideDock",
22
24
  "sideDockBuiltInDocked": "Built-in shortcut",
@@ -29,6 +31,86 @@
29
31
  "sideDockVisibilityTitle": "Show SideDock",
30
32
  "sideDockVisibilityDescription": "Keep the right shortcut dock visible beside the workspace.",
31
33
  "appsTitle": "Apps",
34
+ "appPackagesLibraryTitle": "Your apps",
35
+ "appPackagesLibraryDescription": "Open and manage the apps in NextClaw. Installs continue in the background, and personal data stays local.",
36
+ "appPackagesLoading": "Loading apps…",
37
+ "appPackagesLoadFailed": "Failed to load apps",
38
+ "appPackagesRefresh": "Refresh apps",
39
+ "appPackagesBrowse": "Add apps",
40
+ "appPackagesMarketplaceTitle": "Add apps",
41
+ "appPackagesMarketplaceDescription": "Choose apps that fit the way you use NextClaw. You can keep browsing or leave while an install continues.",
42
+ "appPackagesMarketplaceSearch": "Search apps, features, or tags",
43
+ "appPackagesMarketplaceLoading": "Loading the app marketplace…",
44
+ "appPackagesMarketplaceLoadMore": "Load more",
45
+ "appPackagesMarketplaceLoadingMore": "Loading…",
46
+ "appPackagesMarketplaceFailed": "The app marketplace is temporarily unavailable. You can still install from a trusted source.",
47
+ "appPackagesMarketplaceEmpty": "No matching apps found",
48
+ "appPackagesMarketplaceEmptyHint": "Try a shorter search or switch back to All.",
49
+ "appPackagesMarketplaceFeatured": "Featured",
50
+ "appPackagesMarketplaceDetails": "Details",
51
+ "appPackagesMarketplaceInstalled": "Installed",
52
+ "appPackagesMarketplaceTrustHint": "Apps come from the official NextClaw library. Review access before installing, then disable or uninstall at any time.",
53
+ "appPackagesInstall": "Install app",
54
+ "appPackagesInstallTitle": "Install a Mini APP",
55
+ "appPackagesInstallDescription": "Enter a trusted .napp file path, local app directory, or app ID.",
56
+ "appPackagesInstallSource": "Install source",
57
+ "appPackagesInstallPlaceholder": "File path, directory, or nextclaw.example-app",
58
+ "appPackagesInstallTrustHint": "Only install sources you trust. Apps with a Service can run local code, and start only after you enable them.",
59
+ "appPackagesInstalling": "Installing…",
60
+ "appPackagesEmptyTitle": "No apps available yet",
61
+ "appPackagesEmptyDescription": "Install a Mini APP, or upgrade to a NextClaw version that includes built-in apps.",
62
+ "appPackagesEnabled": "Enabled",
63
+ "appPackagesAvailable": "Available",
64
+ "appPackagesBuiltIn": "Built into NextClaw",
65
+ "appPackagesLocalService": "Local data service",
66
+ "appPackagesEnable": "Enable",
67
+ "appPackagesDisable": "Disable",
68
+ "appPackagesWorking": "Working…",
69
+ "appPackagesEnableToOpen": "Enable this app to open it",
70
+ "appPackagesMoreActions": "More app actions",
71
+ "appPackagesCheckUpdate": "Check for updates",
72
+ "appPackagesRollback": "Switch to",
73
+ "appPackagesUninstall": "Uninstall",
74
+ "appPackagesUninstallTitle": "Uninstall this app?",
75
+ "appPackagesUninstallDescription": "The app code will be removed. Personal data is kept by default so a future reinstall can continue using it.",
76
+ "appPackagesKeepData": "Keep personal data",
77
+ "appPackagesKeepDataDescription": "Remove only the app code so a future reinstall can continue with existing content.",
78
+ "appPackagesDeleteData": "Delete personal data too",
79
+ "appPackagesDeleteDataDescription": "Permanently remove data saved by this app. This cannot be undone.",
80
+ "appPackagesActionFailed": "App action failed",
81
+ "appPackagesFilterLabel": "App categories",
82
+ "appPackagesFilterAll": "All",
83
+ "appPackagesFilterPersonal": "Personal",
84
+ "appPackagesFilterLocal": "Local-first",
85
+ "appPackagesBackToMarketplace": "Back to apps",
86
+ "appPackagesAboutApp": "About this app",
87
+ "appPackagesPanelsAdded": "App views",
88
+ "appPackagesServicesAdded": "Local services",
89
+ "appPackagesNone": "None",
90
+ "appPackagesAccessTitle": "Access",
91
+ "appPackagesOpenPublicDetails": "View the public app page",
92
+ "appPackagesDocumentAccess": "Needs access to {count} file folder(s) you approve",
93
+ "appPackagesNetworkAccess": "Needs to connect to {count} network domain(s)",
94
+ "appPackagesHostBridgeAccess": "Uses local capabilities provided by NextClaw",
95
+ "appPackagesLocalStorageAccess": "Stores its own app data on this device",
96
+ "appPackagesNoExtraAccess": "No additional file or network access declared",
97
+ "appPackagesPreparing": "Preparing",
98
+ "appPackagesResolving": "Checking app",
99
+ "appPackagesDownloading": "Downloading",
100
+ "appPackagesVerifying": "Verifying",
101
+ "appPackagesFinalizing": "Finishing up",
102
+ "appPackagesCompleted": "Completed",
103
+ "appPackagesSwitchingVersion": "Switching version",
104
+ "appPackagesUninstalling": "Uninstalling",
105
+ "appPackagesRetry": "Retry",
106
+ "appPackagesInstallCompleted": "App installed",
107
+ "appPackagesUpdateCompleted": "App updated",
108
+ "appPackagesAlreadyCurrent": "Already up to date",
109
+ "appPackagesAlreadyOnVersion": "Already on this version",
110
+ "appPackagesUpdate": "Update",
111
+ "appPackagesRollbackCompleted": "App version switched",
112
+ "appPackagesUninstallCompleted": "App uninstalled",
113
+ "appPackagesNextClawRequirement": "Requires NextClaw",
32
114
  "panelAppsTitle": "Panel Apps",
33
115
  "panelAppsLoading": "Loading panel apps...",
34
116
  "panelAppsLoadFailed": "Failed to load panel apps",
@@ -44,6 +44,9 @@
44
44
  "marketplaceNoInstalledMcp": "No installed MCP servers found.",
45
45
  "marketplaceUninstallTitle": "Uninstall",
46
46
  "marketplaceUninstallDescription": "This will remove the extension. You can install it again from the marketplace.",
47
+ "marketplaceUpdateConflictTitle": "Overwrite local changes and update?",
48
+ "marketplaceUpdateConflictDescription": "This skill was changed after installation. Continuing replaces local changes in its skill directory with the latest marketplace version. Canceling leaves the current files unchanged.",
49
+ "marketplaceUpdateConflictConfirm": "Overwrite and Update",
47
50
  "marketplaceInstallSuccessSkill": "Skill installed successfully",
48
51
  "marketplaceInstallSuccessMcp": "MCP installed successfully",
49
52
  "marketplaceEnableSuccess": "Enabled successfully",
@@ -250,7 +250,7 @@
250
250
  "chatProcessSummaryCancelled": "已取消",
251
251
  "chatRuntimeInitializing": "聊天能力正在初始化。你可以先输入内容,完成后即可发送。",
252
252
  "chatRuntimeInitializationFailed": "聊天能力启动失败,请稍后重试或检查服务日志。",
253
- "chatInputPlaceholder": "输入消息,/ 选命令、应用或技能,@ 引用文件、目录、项目或面板应用,Enter 发送,Shift + Enter 换行",
253
+ "chatInputPlaceholder": "输入消息,/ 选命令、应用或技能,@ 引用文件、文件夹、项目或面板应用,Enter 发送,Shift + Enter 换行",
254
254
  "chatInputPlaceholderCompact": "发消息...",
255
255
  "chatWelcomeInputPlaceholder": "描述你想完成的目标……",
256
256
  "chatInputHint": "支持多轮上下文,默认走当前会话。",
@@ -290,22 +290,29 @@
290
290
  "chatPanelAppReferenceNoDescription": "暂无面板应用描述",
291
291
  "chatContextReferenceLoading": "搜索引用中…",
292
292
  "chatContextReferenceSection": "引用",
293
- "chatContextReferenceNoResult": "没有匹配的文件、目录、项目或面板应用",
294
- "chatContextReferenceHint": "输入 @ 引用文件、目录、项目或面板应用",
293
+ "chatContextReferenceNoResult": "没有匹配的系统对象、文件、文件夹、项目或面板应用",
294
+ "chatContextReferenceHint": "输入 @ 引用系统对象、文件、文件夹、项目或面板应用",
295
295
  "chatContextReferenceItemHint": "回车添加这个引用。",
296
- "chatContextReferenceFilesLabel": "文件与文件夹",
297
- "chatContextReferenceFilesType": "项目上下文",
298
- "chatContextReferenceFilesDescription": "搜索并引用当前项目中的文件或目录。",
299
- "chatContextReferenceFilesHint": "回车进入文件与文件夹。",
296
+ "chatContextReferenceFilesLabel": "文件",
297
+ "chatContextReferenceFilesType": "项目文件",
298
+ "chatContextReferenceFilesDescription": "浏览并引用当前项目中的文件。",
299
+ "chatContextReferenceFilesHint": "回车进入文件列表。",
300
+ "chatContextReferenceFoldersLabel": "文件夹",
301
+ "chatContextReferenceFoldersType": "项目文件夹",
302
+ "chatContextReferenceFoldersDescription": "浏览并引用当前项目中的文件夹。",
303
+ "chatContextReferenceFoldersHint": "回车进入文件夹列表。",
300
304
  "chatContextReferenceBack": "返回全部引用",
301
- "chatContextReferenceBackDescription": "返回文件、目录、项目和面板应用的统一引用入口。",
305
+ "chatContextReferenceBackDescription": "返回系统对象、文件、文件夹、项目和面板应用的统一引用入口。",
302
306
  "chatContextReferenceBackHint": "回车返回。",
303
307
  "chatContextReferenceParent": "返回上一级",
304
308
  "chatContextReferenceParentDescription": "在不关闭引用菜单的情况下浏览上一级文件夹。",
305
309
  "chatContextReferenceParentHint": "回车打开上一级文件夹。",
306
310
  "chatContextReferenceCurrentDirectory": "引用当前文件夹",
311
+ "chatSystemObjectSection": "系统对象",
312
+ "chatSystemObjectGroupHint": "回车进入该分类。",
313
+ "chatSystemObjectResolveFailed": "无法引用系统对象",
307
314
  "chatContextReferenceFileDescription": "把这个文件作为本次消息的显式上下文。",
308
- "chatContextReferenceDirectoryDescription": "把这个目录作为本次消息的上下文范围。",
315
+ "chatContextReferenceDirectoryDescription": "把这个文件夹作为本次消息的上下文范围。",
309
316
  "chatContextReferenceProjectsLabel": "项目",
310
317
  "chatContextReferenceProjectsType": "项目上下文",
311
318
  "chatContextReferenceProjectsDescription": "从已登记项目中选择一个,作为本次消息的上下文。",
@@ -316,8 +323,7 @@
316
323
  "chatContextReferenceProjectSection": "项目",
317
324
  "chatContextReferenceProjectsLoadFailed": "项目加载失败",
318
325
  "chatContextReferenceProjectRoot": "项目目录",
319
- "chatContextReferenceWorkspaceSection": "文件与文件夹",
320
- "chatContextReferenceSearchFailed": "文件搜索失败",
326
+ "chatContextReferenceSearchFailed": "引用搜索失败",
321
327
  "chatSkillScopeBuiltin": "内建",
322
328
  "chatSkillScopeGlobal": "全局",
323
329
  "chatSkillScopeProject": "项目",
@@ -381,6 +387,7 @@
381
387
  "chatSending": "发送中...",
382
388
  "chatQueueSend": "排队发送",
383
389
  "chatQueuedBannerAttachmentFallback": "附件消息",
390
+ "chatQueuedSubmitting": "正在加入队列…",
384
391
  "chatQueuedEdit": "编辑排队输入",
385
392
  "chatQueuedDelete": "删除排队输入",
386
393
  "chatDeleteSession": "删除会话",
@@ -484,6 +491,7 @@
484
491
  "chatSidebarTaskRecords": "会话记录",
485
492
  "chatSidebarViewTime": "时间",
486
493
  "chatSidebarViewProject": "项目",
494
+ "chatSidebarViewMode": "会话列表视图",
487
495
  "chatSidebarToday": "今天",
488
496
  "chatSidebarYesterday": "昨天",
489
497
  "chatSidebarPrevious7Days": "近 7 天",
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "updates": "更新",
3
3
  "runtimeUpdatesPageTitle": "版本更新",
4
- "runtimeUpdatesPageDescription": "系统每两小时自动检查新版本;发现更新后,由你手动下载并决定何时应用。",
4
+ "runtimeUpdatesPageDescription": "系统每两小时自动检查新版本;发现更新后,由你决定何时开始更新。",
5
5
  "runtimeUpdatesUnavailableTitle": "当前环境暂不支持更新",
6
6
  "runtimeUpdatesUnavailableDescription": "这个运行环境暂时没有可用的更新宿主。",
7
7
  "runtimeUpdatesUnavailableHint": "更新入口会在宿主支持后自动出现,不需要前端单独区分环境。",
8
8
  "runtimeUpdatesHostVersion": "宿主版本",
9
- "runtimeUpdatesDownloadedBannerDescription": "版本 {version} 已下载完成,确认后即可切换到新版本。",
10
- "runtimeUpdatesActionsDescription": "支持手动检查、手动下载,以及在你准备好之后切换到已下载的新版本。",
9
+ "runtimeUpdatesDownloadedBannerDescription": "版本 {version} 已下载完成,可以继续完成更新。",
10
+ "runtimeUpdatesActionsDescription": "你可以手动检查,并在准备好之后一次完成更新。",
11
11
  "runtimeUpdatesApplyNow": "立即更新",
12
12
  "runtimeUpdatesLoadFailed": "读取更新状态失败",
13
13
  "runtimeUpdatesCheckFailed": "检查更新失败",
14
14
  "runtimeUpdatesDownloadFailed": "下载更新失败",
15
15
  "runtimeUpdatesApplyFailed": "应用更新失败",
16
+ "runtimeUpdatesUpdateFailed": "更新失败",
16
17
  "runtimeUpdatesChannelChangeFailed": "切换更新通道失败",
17
18
  "runtimeUpdatesAlreadyLatest": "当前已经是最新版本。",
18
19
  "runtimeUpdatesReadyToApply": "更新已下载完成,已经可以切换到新版本。",
@@ -33,6 +34,8 @@
33
34
  "desktopUpdatesStatusAvailable": "有可用更新",
34
35
  "desktopUpdatesStatusDownloading": "下载中",
35
36
  "desktopUpdatesStatusDownloaded": "已下载待应用",
37
+ "desktopUpdatesStatusApplying": "更新中",
38
+ "desktopUpdatesStatusRestartRequired": "等待重启生效",
36
39
  "desktopUpdatesStatusUpToDate": "已是最新",
37
40
  "desktopUpdatesStatusBlocked": "更新被阻塞",
38
41
  "desktopUpdatesStatusFailed": "更新失败",
@@ -64,7 +67,7 @@
64
67
  "desktopUpdatesBlockedRootCause.host-too-old": "根因:当前宿主版本太旧,不满足新运行包的最低宿主版本要求;请先升级 NextClaw 启动器。",
65
68
  "desktopUpdatesBlockedRootCause.unsupported-installation": "根因:当前安装形态或更新源配置不支持自动更新;请安装支持自动更新的版本,或由维护者补齐更新源配置。",
66
69
  "desktopUpdatesChannelSettingsTitle": "更新通道",
67
- "desktopUpdatesChannelSettingsDescription": "系统每两小时自动检查更新,下载和应用都由你手动确认。",
70
+ "desktopUpdatesChannelSettingsDescription": "系统每两小时自动检查更新;是否开始更新由你确认。",
68
71
  "desktopUpdatesReleaseChannel": "更新通道",
69
72
  "desktopUpdatesReleaseChannelHelp": "Stable 面向日常主力使用;Beta 用于提前体验新版本,但可能更不稳定。",
70
73
  "desktopUpdatesReleaseChannelDowngradeHint": "切回 Stable 后不会立刻强制降级;只有当 Stable 追平或超过当前版本时,才会继续提供 Stable 更新。",
@@ -17,6 +17,8 @@
17
17
  "docBrowserHomeTitle": "导航页",
18
18
  "docBrowserCloseTab": "关闭标签",
19
19
  "docBrowserTabUntitled": "未命名",
20
+ "docBrowserTabMoreActions": "更多标签操作",
21
+ "docBrowserAddToChat": "添加到聊天",
20
22
  "sideDockPinCurrent": "固定到快捷栏",
21
23
  "sideDockUnpinCurrent": "从快捷栏移除",
22
24
  "sideDockBuiltInDocked": "内置快捷入口",
@@ -29,6 +31,86 @@
29
31
  "sideDockVisibilityTitle": "显示快捷栏",
30
32
  "sideDockVisibilityDescription": "在工作区右侧显示快捷入口栏。",
31
33
  "appsTitle": "应用",
34
+ "appPackagesLibraryTitle": "你的应用",
35
+ "appPackagesLibraryDescription": "打开和管理装进 NextClaw 的应用。安装会在后台继续,个人数据保存在本机。",
36
+ "appPackagesLoading": "加载应用中…",
37
+ "appPackagesLoadFailed": "应用加载失败",
38
+ "appPackagesRefresh": "刷新应用",
39
+ "appPackagesBrowse": "添加应用",
40
+ "appPackagesMarketplaceTitle": "添加应用",
41
+ "appPackagesMarketplaceDescription": "挑选适合自己的应用。开始安装后,你可以继续浏览或直接离开这里。",
42
+ "appPackagesMarketplaceSearch": "搜索应用、功能或标签",
43
+ "appPackagesMarketplaceLoading": "正在加载应用市场…",
44
+ "appPackagesMarketplaceLoadMore": "加载更多",
45
+ "appPackagesMarketplaceLoadingMore": "正在加载…",
46
+ "appPackagesMarketplaceFailed": "应用市场暂时不可用,你仍可从可信来源手动安装。",
47
+ "appPackagesMarketplaceEmpty": "没有找到匹配的应用",
48
+ "appPackagesMarketplaceEmptyHint": "试试更短的关键词,或切换到“全部”。",
49
+ "appPackagesMarketplaceFeatured": "精选",
50
+ "appPackagesMarketplaceDetails": "查看详情",
51
+ "appPackagesMarketplaceInstalled": "已安装",
52
+ "appPackagesMarketplaceTrustHint": "应用从 NextClaw 官方应用库下载。安装前可查看访问范围,安装后可随时停用或卸载。",
53
+ "appPackagesInstall": "安装应用",
54
+ "appPackagesInstallTitle": "安装 Mini APP",
55
+ "appPackagesInstallDescription": "输入可信的 .napp 文件路径、本机应用目录或应用 ID。",
56
+ "appPackagesInstallSource": "安装来源",
57
+ "appPackagesInstallPlaceholder": "文件路径、目录或 nextclaw.example-app",
58
+ "appPackagesInstallTrustHint": "只安装你信任的来源。包含 Service 的应用可在本机运行代码,并仅在启用后启动。",
59
+ "appPackagesInstalling": "安装中…",
60
+ "appPackagesEmptyTitle": "还没有可用应用",
61
+ "appPackagesEmptyDescription": "安装一个 Mini APP,或升级到包含内置应用的 NextClaw 版本。",
62
+ "appPackagesEnabled": "已启用",
63
+ "appPackagesAvailable": "可用",
64
+ "appPackagesBuiltIn": "NextClaw 内置",
65
+ "appPackagesLocalService": "本地数据服务",
66
+ "appPackagesEnable": "启用",
67
+ "appPackagesDisable": "停用",
68
+ "appPackagesWorking": "处理中…",
69
+ "appPackagesEnableToOpen": "启用后即可打开",
70
+ "appPackagesMoreActions": "更多应用操作",
71
+ "appPackagesCheckUpdate": "检查更新",
72
+ "appPackagesRollback": "切换到",
73
+ "appPackagesUninstall": "卸载",
74
+ "appPackagesUninstallTitle": "卸载这个应用?",
75
+ "appPackagesUninstallDescription": "应用代码会被移除,个人数据默认保留,之后重新安装仍可继续使用。",
76
+ "appPackagesKeepData": "保留个人数据",
77
+ "appPackagesKeepDataDescription": "只移除应用代码,重新安装后可以继续使用原有内容。",
78
+ "appPackagesDeleteData": "同时删除个人数据",
79
+ "appPackagesDeleteDataDescription": "永久移除该应用保存的数据,此操作无法撤销。",
80
+ "appPackagesActionFailed": "应用操作失败",
81
+ "appPackagesFilterLabel": "应用分类",
82
+ "appPackagesFilterAll": "全部",
83
+ "appPackagesFilterPersonal": "个人",
84
+ "appPackagesFilterLocal": "本地优先",
85
+ "appPackagesBackToMarketplace": "返回应用列表",
86
+ "appPackagesAboutApp": "关于这个应用",
87
+ "appPackagesPanelsAdded": "可打开的界面",
88
+ "appPackagesServicesAdded": "本机服务",
89
+ "appPackagesNone": "无",
90
+ "appPackagesAccessTitle": "访问范围",
91
+ "appPackagesOpenPublicDetails": "查看公开详情页",
92
+ "appPackagesDocumentAccess": "需要访问 {count} 个由你授权的文件目录",
93
+ "appPackagesNetworkAccess": "需要连接 {count} 个网络域名",
94
+ "appPackagesHostBridgeAccess": "需要调用 NextClaw 提供的本机能力",
95
+ "appPackagesLocalStorageAccess": "会在本机保存自己的应用数据",
96
+ "appPackagesNoExtraAccess": "没有声明额外的文件或网络访问",
97
+ "appPackagesPreparing": "准备中",
98
+ "appPackagesResolving": "正在检查应用",
99
+ "appPackagesDownloading": "正在下载",
100
+ "appPackagesVerifying": "正在校验",
101
+ "appPackagesFinalizing": "即将完成",
102
+ "appPackagesCompleted": "已完成",
103
+ "appPackagesSwitchingVersion": "正在切换版本",
104
+ "appPackagesUninstalling": "正在卸载",
105
+ "appPackagesRetry": "重试",
106
+ "appPackagesInstallCompleted": "应用已安装",
107
+ "appPackagesUpdateCompleted": "应用已更新",
108
+ "appPackagesAlreadyCurrent": "已经是最新版本",
109
+ "appPackagesAlreadyOnVersion": "已经在这个版本",
110
+ "appPackagesUpdate": "更新",
111
+ "appPackagesRollbackCompleted": "应用版本已切换",
112
+ "appPackagesUninstallCompleted": "应用已卸载",
113
+ "appPackagesNextClawRequirement": "需要 NextClaw",
32
114
  "panelAppsTitle": "面板应用",
33
115
  "panelAppsLoading": "加载面板应用中...",
34
116
  "panelAppsLoadFailed": "面板应用加载失败",
@@ -44,6 +44,9 @@
44
44
  "marketplaceNoInstalledMcp": "未找到已安装 MCP server。",
45
45
  "marketplaceUninstallTitle": "确认卸载",
46
46
  "marketplaceUninstallDescription": "该操作会移除扩展,后续可在市场中重新安装。",
47
+ "marketplaceUpdateConflictTitle": "覆盖本地修改并更新?",
48
+ "marketplaceUpdateConflictDescription": "这个技能安装后被修改过。继续会用市场最新版本替换技能目录中的本地修改;取消不会改动现有文件。",
49
+ "marketplaceUpdateConflictConfirm": "覆盖并更新",
47
50
  "marketplaceInstallSuccessSkill": "技能安装成功",
48
51
  "marketplaceInstallSuccessMcp": "MCP 安装成功",
49
52
  "marketplaceEnableSuccess": "启用成功",