@nextclaw/ui 0.15.10 → 0.15.12
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.
- package/CHANGELOG.md +53 -0
- package/dist/assets/{abnfDiagram-VRR7QNED-BYpK0F5F.js → abnfDiagram-VRR7QNED-M4g_AyR8.js} +1 -1
- package/dist/assets/{aiden0z-pptx-renderer.es-D87ywFdC.js → aiden0z-pptx-renderer.es-Bd99vut2.js} +1 -1
- package/dist/assets/api-Bw1oLhwf.js +13 -0
- package/dist/assets/app-presenter-provider-DSN90VJw.js +106 -0
- package/dist/assets/appearance-settings-page-BDpels6a.js +1 -0
- package/dist/assets/{arc-DFELHWM2.js → arc-IO7WNWOB.js} +1 -1
- package/dist/assets/architecture-TIHT7OUA-Cii4JyA2.js +1 -0
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-CvRhdovL.js → architectureDiagram-ZJ3FMSHR-Dc-lvdUh.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-DVYNkbR_.js → blockDiagram-677ZJIJ3-CcsoWpIY.js} +1 -1
- package/dist/assets/{book-open-w3160PZf.js → book-open-D-oLp0QJ.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-B1w-iwRe.js → c4Diagram-LMCZKHZV-Bsrtg6b2.js} +1 -1
- package/dist/assets/card-CA3ozZwW.js +1 -0
- package/dist/assets/channel-BSKkTPe8.js +1 -0
- package/dist/assets/channels-list-page-B44EWctT.js +8 -0
- package/dist/assets/chat-page-CH8ypOKO.js +1 -0
- package/dist/assets/chunk-2Q5K7J3B-CDMOR1xZ.js +1 -0
- package/dist/assets/{chunk-32BRIVSS-kG3lg0bC.js → chunk-32BRIVSS-Bt08t8oG.js} +1 -1
- package/dist/assets/{chunk-52WLFC77-BLeB7iGk.js → chunk-52WLFC77-Ddx68Xzx.js} +1 -1
- package/dist/assets/{chunk-5FCAYU7R-BQga1Rr7.js → chunk-5FCAYU7R-B7p9_q55.js} +1 -1
- package/dist/assets/{chunk-5HE753X5-DU81hkcF.js → chunk-5HE753X5-D52KvdTm.js} +1 -1
- package/dist/assets/{chunk-5JV3BV7I-C2bAx0m7.js → chunk-5JV3BV7I-C329h8nI.js} +1 -1
- package/dist/assets/{chunk-5TONJI2A-BExIIgWY.js → chunk-5TONJI2A-BZyUBxWt.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-C3XB05yh.js → chunk-5VM5RSS4-BUiYXZmu.js} +1 -1
- package/dist/assets/{chunk-7BUUIJ7U-JiyRtrGu.js → chunk-7BUUIJ7U-B7o-mn4r.js} +1 -1
- package/dist/assets/{chunk-BIQX33UG-BZRV20pI.js → chunk-BIQX33UG-Bey9GoRP.js} +1 -1
- package/dist/assets/{chunk-C7G6YPKG-AsyDSQ9j.js → chunk-C7G6YPKG-C6tosszM.js} +1 -1
- package/dist/assets/{chunk-CQNSW5MT-iN-fiXVA.js → chunk-CQNSW5MT-BNrdkgGQ.js} +1 -1
- package/dist/assets/{chunk-CYSBUYHQ-DhC_TRzI.js → chunk-CYSBUYHQ-DHODFeyB.js} +1 -1
- package/dist/assets/{chunk-EMLP6XTP-QFLK8R6d.js → chunk-EMLP6XTP-BcmLjrcq.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-DzUwhkCz.js → chunk-EX3LRPZG-r-_eEtJI.js} +1 -1
- package/dist/assets/{chunk-FWX5IMBZ-DFelpZBy.js → chunk-FWX5IMBZ-DOObDWbf.js} +2 -2
- package/dist/assets/{chunk-HOUHSVGY-BMPwFEwN.js → chunk-HOUHSVGY-Bd0FnbWZ.js} +1 -1
- package/dist/assets/{chunk-ICXQ74PX-DH8NJMok.js → chunk-ICXQ74PX-ntNwAm4_.js} +1 -1
- package/dist/assets/{chunk-JG7HCLWE-D-95AsO4.js → chunk-JG7HCLWE-YtRpblZN.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-DIaTv8kx.js → chunk-JWPE2WC7-De5-D9ta.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-BPFLzWgj.js → chunk-MOJQB5TN-CdvKhyp2.js} +1 -1
- package/dist/assets/{chunk-MOZMSUNE-DR_fzxG0.js → chunk-MOZMSUNE-DJMMN_lu.js} +1 -1
- package/dist/assets/{chunk-OGEWGWER-TIcEoPPH.js → chunk-OGEWGWER-DOFWVw3O.js} +1 -1
- package/dist/assets/{chunk-OSBZ3O6U-BALNvSfG.js → chunk-OSBZ3O6U-DZkrIN9r.js} +1 -1
- package/dist/assets/{chunk-PUDLZKDR-I-EXhf_k.js → chunk-PUDLZKDR-D1wma2Yf.js} +1 -1
- package/dist/assets/{chunk-Q4XR5HBZ-uvIGstBS.js → chunk-Q4XR5HBZ-CjPy94Lz.js} +1 -1
- package/dist/assets/{chunk-QBLGF6JB-r-TjLdxa.js → chunk-QBLGF6JB-Hy1bEgS-.js} +1 -1
- package/dist/assets/{chunk-R7FJI6CG-N-1LDgvy.js → chunk-R7FJI6CG-CUPIHyh-.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-jxNASx65.js → chunk-RYQCIY6F-D5Ua4pcv.js} +1 -1
- package/dist/assets/{chunk-U6XO7XAA-Cphbuc7q.js → chunk-U6XO7XAA-DaUQcqb7.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-BLEuBf1s.js → chunk-V7JOEXUC-DX2zLfQe.js} +1 -1
- package/dist/assets/chunk-VAUOI2AC-BRvqNW76.js +1 -0
- package/dist/assets/{chunk-VR4S4FIN-BAUbR0ke.js → chunk-VR4S4FIN-CFA-WQik.js} +1 -1
- package/dist/assets/{chunk-WYO6CB5R-Do6SJrnY.js → chunk-WYO6CB5R-Bk2HeDvJ.js} +2 -2
- package/dist/assets/chunk-XXDRQBXY-CwX_mqJ3.js +1 -0
- package/dist/assets/{chunk-YOTPTUD7-CQqvMTCr.js → chunk-YOTPTUD7-DUG4FpBN.js} +1 -1
- package/dist/assets/{chunk-ZGVPDNZ5-B7kWWaXv.js → chunk-ZGVPDNZ5-70JdIGo0.js} +1 -1
- package/dist/assets/{chunk-ZIRB5QZD-DTU0cDNh.js → chunk-ZIRB5QZD-XZdgBt5L.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-RzbGxG77.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-C_gWB7WT.js +1 -0
- package/dist/assets/config-split-page-DskB5yAV.js +1 -0
- package/dist/assets/confirm-dialog-BRQpFnvD.js +5 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-B9LrtV-q.js → cose-bilkent-JH36ORCC-B-PQoGX-.js} +1 -1
- package/dist/assets/cynefin-VYW2F7L2-fSLIS0X3.js +1 -0
- package/dist/assets/{cynefinDiagram-TSTJHNR4-BfjvW4su.js → cynefinDiagram-TSTJHNR4-BoLCPEM0.js} +1 -1
- package/dist/assets/{dagre-DkiXZKkL.js → dagre-D7Ie4eXr.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-B1pQKQSY.js → dagre-VKFMJZFB-CKRrwZA-.js} +1 -1
- package/dist/assets/desktop-update-config-se0OEu06.js +1 -0
- package/dist/assets/{diagram-FQU43EPY-cB4EZdaP.js → diagram-FQU43EPY-CASL1J3_.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-CtW8im1B.js → diagram-G47NLZAW-CvLPBIzf.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-BDCtrCCm.js → diagram-NH7WQ7WH-Ba6fGdYP.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-DEMJ42Gt.js → diagram-OA4YK3LP-DkpfgEjM.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-CdCcxSYU.js → diagram-WEI45ONY-BP5UMVsN.js} +1 -1
- package/dist/assets/{dist-DEJlYi0E.js → dist-f6aZEsu8.js} +1 -1
- package/dist/assets/doc-browser-BRiAfy_N.js +1 -0
- package/dist/assets/doc-browser-DW7afLXs.js +1 -0
- package/dist/assets/{doc-browser-context-CpvHiuQG.js → doc-browser-context-DhTa-zP_.js} +1 -1
- package/dist/assets/{docx-preview-zis3U0Fa.js → docx-preview-D0tp3a9T.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-DBZETBwE.js → ebnfDiagram-CCIWWBDH-TJKbUcmc.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-y2zDXprP.js → erDiagram-Q63AITRT-DzGPKkKH.js} +1 -1
- package/dist/assets/eventmodeling-45OFAUF4-XVcQGgha.js +1 -0
- package/dist/assets/eye-DMGpISEo.js +1 -0
- package/dist/assets/flowDiagram-23GEKE2U-BiFSctqz.js +1 -0
- package/dist/assets/{form-actions-5OsDRt0g.js → form-actions-SgP78YnZ.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-D2DP344e.js → ganttDiagram-NO4QXBWP-JhJzsGp2.js} +1 -1
- package/dist/assets/gitGraph-TEB2WS4Q-C014uXqS.js +1 -0
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-D37uiwA2.js → gitGraphDiagram-IHSO6WYX-DZ1CKMj8.js} +1 -1
- package/dist/assets/index-B2YF-7Yw.css +1 -0
- package/dist/assets/index-CBD4zQ_A.js +2 -0
- package/dist/assets/info-DKCQHKI2-CQ2qjGhU.js +1 -0
- package/dist/assets/{infoDiagram-FWYZ7A6U-CG-WAIRi.js → infoDiagram-FWYZ7A6U-BNXNKfRQ.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-WeCTnW0f.js → ishikawaDiagram-FXEZZL3T-DoiEfjNw.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-DUFBW9Td.js → journeyDiagram-5HDEW3XC-D6oK2HSy.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-B0lxgMpg.js → kanban-definition-HUTT4EX6-B2UnLOH-.js} +1 -1
- package/dist/assets/{line-B78frP_c.js → line-BM7PoxY5.js} +1 -1
- package/dist/assets/{linear-C6lVEcb2.js → linear-B3DiqMjk.js} +1 -1
- package/dist/assets/loader-circle-DEQ2CflP.js +1 -0
- package/dist/assets/{logo-badge-TdPa95AC.js → logo-badge-BZnxuJYW.js} +1 -1
- package/dist/assets/{map-Bdri5UL5.js → map-BAAdHTqR.js} +1 -1
- package/dist/assets/mcp-marketplace-page-B8eWiT9H.js +1 -0
- package/dist/assets/{mcp-marketplace-page-cm3ifaKu.js → mcp-marketplace-page-Dm08nf11.js} +2 -2
- package/dist/assets/{mermaid-parser.core-Cue18vLo.js → mermaid-parser.core-BeMviefY.js} +2 -2
- package/dist/assets/{mermaid.core-CXwWRh5i.js → mermaid.core-D0Q77r9I.js} +3 -3
- package/dist/assets/{mindmap-definition-LN4V7U3C-CFxz0P0-.js → mindmap-definition-LN4V7U3C-BQ7r7bR8.js} +1 -1
- package/dist/assets/model-config-page-k_tCjGlK.js +1 -0
- package/dist/assets/navigation-link-CJ3fpUBN.js +1 -0
- package/dist/assets/{ordinal-Cbd8t4LB.js → ordinal-Bt2N4IkA.js} +1 -1
- package/dist/assets/packet-7NZHBO7P-6IFyydij.js +1 -0
- package/dist/assets/{pegDiagram-2B236MQR-B_Qt9zyT.js → pegDiagram-2B236MQR-B-C9-LGz.js} +1 -1
- package/dist/assets/pie-RZYD4A2V-spXQC_wr.js +1 -0
- package/dist/assets/{pieDiagram-ENE6RG2P-CRQdSuwS.js → pieDiagram-ENE6RG2P-CtirZLtn.js} +1 -1
- package/dist/assets/plus-9_9Q74qc.js +1 -0
- package/dist/assets/{popover-EulxhA0q.js → popover-Cq_oB7HI.js} +1 -1
- package/dist/assets/provider-scoped-model-input-Cwv5zw0Z.js +1 -0
- package/dist/assets/providers-config-page-D82jX13I.js +1 -0
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-D5kPpttq.js → quadrantDiagram-ABIIQ3AL-DiBWAzDU.js} +1 -1
- package/dist/assets/radar-I7S5WNFK-DWVA8lvY.js +1 -0
- package/dist/assets/railroad-3IZDKUUU-Ce51u8y1.js +1 -0
- package/dist/assets/railroad-abnf-AHOZXSZD-D7i7cqI_.js +1 -0
- package/dist/assets/railroad-ebnf-EBAXGLYW-BEg2hcPs.js +1 -0
- package/dist/assets/railroad-peg-LSFZ7HO6-CxROSzbi.js +1 -0
- package/dist/assets/{railroadDiagram-RFXS5EU6-DGh_TGlQ.js → railroadDiagram-RFXS5EU6-CP6b3PBI.js} +1 -1
- package/dist/assets/{react-Bb0EYsLS.js → react-BjpVlGAu.js} +1 -1
- package/dist/assets/{refresh-cw-CexL11m1.js → refresh-cw-CYyWovQ1.js} +1 -1
- package/dist/assets/remote-C2MGMI2j.js +1 -0
- package/dist/assets/{requirementDiagram-TGXJPOKE-EmFph0H_.js → requirementDiagram-TGXJPOKE-D8YV0-Jz.js} +1 -1
- package/dist/assets/rotate-cw-BkGMTudQ.js +1 -0
- package/dist/assets/runtime-config-page-OS6ZT2b0.js +1 -0
- package/dist/assets/{sankeyDiagram-HTMAVEWB-BXWB5Ugi.js → sankeyDiagram-HTMAVEWB-C2vA4ojE.js} +1 -1
- package/dist/assets/{save-DtccrZld.js → save-B0V_M-kz.js} +1 -1
- package/dist/assets/search-config-page-IzK1hMQX.js +1 -0
- package/dist/assets/{search-BArc_WOX.js → search-vFYD1SOf.js} +1 -1
- package/dist/assets/secrets-config-page-Cm3IXYpK.js +3 -0
- package/dist/assets/security-config-DfzQ8txL.js +1 -0
- package/dist/assets/{select-C9FB0jlt.js → select-BAYdPRVG.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-ClKnO7v0.js → sequenceDiagram-DBY2YBRQ-B9LBmpUo.js} +1 -1
- package/dist/assets/settings-2-QX-FHs_i.js +1 -0
- package/dist/assets/{sizeCapture-X5ZJPWSS-DSo-t5ou.js → sizeCapture-X5ZJPWSS-9UIfya9-.js} +1 -1
- package/dist/assets/skeleton-2eczb2co.js +1 -0
- package/dist/assets/{src-Dad2ZbCt.js → src-DKf77Yzo.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-BvAalBfz.js → stateDiagram-2N3HPSRC-oTW44vds.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-Bui4RXQK.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-DdVqVa1a.js → swimlanes-5IMT3BWC-Cf7lcsay.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-DTwUsCBz.js +8 -0
- package/dist/assets/{tabs-D_mjyOOf.js → tabs-Ddprun22.js} +1 -1
- package/dist/assets/{tag-chip-C011rd9q.js → tag-chip-C9SLhljq.js} +1 -1
- package/dist/assets/{timeline-definition-FHXFAJF6-D4ar8IQY.js → timeline-definition-FHXFAJF6-DoCuWKDJ.js} +1 -1
- package/dist/assets/{trash-2-bDhfsO1O.js → trash-2-CODUwc31.js} +1 -1
- package/dist/assets/treeView-QDETBFTQ-D5zsTiuL.js +1 -0
- package/dist/assets/treemap-6X3UGDF4-CR3dxqNs.js +1 -0
- package/dist/assets/{use-config-BNrlfEck.js → use-config-C5OKT3lk.js} +1 -1
- package/dist/assets/use-confirm-dialog-B_ZW-WgC.js +1 -0
- package/dist/assets/{use-viewport-layout-P0q6Nt_N.js → use-viewport-layout-OtzTlg5U.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-CDXJ_i3p.js → vennDiagram-L72KCM5P-CpU0pzGe.js} +1 -1
- package/dist/assets/wardley-OPB4EBWU-LatRT_Lx.js +1 -0
- package/dist/assets/{wardleyDiagram-EHGQE667-D-dSuT_7.js → wardleyDiagram-EHGQE667-CkN6nn6-.js} +1 -1
- package/dist/assets/x-Cbfpb-Zm.js +1 -0
- package/dist/assets/{xychartDiagram-FW5EYKEG-C9JCzsZF.js → xychartDiagram-FW5EYKEG-DATpapm2.js} +1 -1
- package/dist/index.html +31 -32
- package/dist/runtime-icons/opencode.svg +16 -0
- package/package.json +10 -9
- package/public/runtime-icons/opencode.svg +16 -0
- package/src/app/components/layout/__tests__/settings-entry-page.test.tsx +6 -4
- package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +24 -12
- package/src/app/components/layout/sidebar-items.tsx +11 -2
- package/src/app/components/layout/sidebar.tsx +33 -234
- package/src/app/configs/app-navigation.config.ts +10 -24
- package/src/app/index.tsx +0 -5
- package/src/features/channels/components/config/channel-form.tsx +26 -26
- package/src/features/channels/components/config/weixin-channel-auth-section.tsx +6 -7
- package/src/features/channels/pages/__tests__/channels-list-page.test.tsx +2 -2
- package/src/features/channels/pages/channels-list-page.tsx +33 -32
- package/src/features/chat/components/conversation/__tests__/chat-conversation-content.test.tsx +68 -7
- package/src/features/chat/components/conversation/__tests__/chat-conversation-header-section.test.tsx +27 -0
- package/src/features/chat/components/conversation/__tests__/chat-conversation-panel.test.tsx +0 -8
- package/src/features/chat/components/conversation/chat-conversation-content.tsx +65 -21
- package/src/features/chat/components/conversation/chat-conversation-header-section.tsx +36 -12
- package/src/features/chat/components/conversation/chat-conversation-panel.tsx +0 -7
- package/src/features/chat/components/layout/__tests__/chat-sidebar-toolbar.test.tsx +0 -1
- package/src/features/chat/components/layout/__tests__/chat-sidebar.test.tsx +17 -8
- package/src/features/chat/components/layout/chat-page-shell.tsx +2 -2
- package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +2 -23
- package/src/features/chat/components/layout/chat-sidebar.tsx +3 -12
- package/src/features/chat/features/conversation/components/__tests__/session-conversation-area.test.tsx +155 -93
- package/src/features/chat/features/conversation/components/session-conversation-area.tsx +126 -93
- package/src/features/chat/features/conversation/hooks/__tests__/use-session-conversation-input-state.test.tsx +8 -0
- package/src/features/chat/features/conversation/hooks/use-session-conversation-input-state.ts +27 -13
- package/src/features/chat/features/message/components/__tests__/chat-inline-file-preview.test.tsx +15 -9
- package/src/features/chat/features/message/components/__tests__/chat-inline-panel-app-card.test.tsx +127 -49
- package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +186 -20
- package/src/features/chat/features/message/components/chat-inline-content-surface.tsx +55 -0
- package/src/features/chat/features/message/components/chat-inline-file-preview.tsx +49 -71
- package/src/features/chat/features/message/components/chat-inline-panel-app-card.tsx +65 -55
- package/src/features/chat/features/message/components/chat-message-list.container.tsx +275 -267
- package/src/features/chat/features/message/hooks/__tests__/use-chat-message-virtualizer.test.tsx +163 -0
- package/src/features/chat/features/message/hooks/use-chat-message-virtualizer.ts +68 -0
- package/src/features/chat/features/message/utils/__tests__/chat-message-execution-summary.utils.test.ts +200 -0
- package/src/features/chat/features/message/utils/__tests__/chat-message-texts.utils.test.ts +14 -1
- package/src/features/chat/features/message/utils/__tests__/chat-message.utils.test.ts +33 -0
- package/src/features/chat/features/message/utils/chat-inline-panel-app-card.utils.ts +24 -9
- package/src/features/chat/features/message/utils/chat-message-execution-summary.utils.ts +173 -0
- package/src/features/chat/features/message/utils/chat-message-texts.utils.ts +43 -0
- package/src/features/chat/features/message/utils/chat-message-timeline.utils.ts +194 -0
- package/src/features/chat/features/message/utils/chat-message.utils.ts +5 -0
- package/src/features/chat/features/ncp/hooks/__tests__/use-ncp-session-conversation.test.tsx +151 -13
- package/src/features/chat/features/ncp/hooks/use-ncp-session-conversation.ts +44 -70
- package/src/features/chat/features/ncp/hooks/use-ncp-session-message-history.ts +197 -0
- package/src/features/chat/features/session/components/__tests__/chat-sidebar-session-item.test.tsx +21 -3
- package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +7 -7
- package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +2 -2
- package/src/features/chat/features/session/components/session-context-icon.tsx +1 -1
- package/src/features/chat/features/session-type/components/__tests__/chat-session-type-option-item.test.tsx +5 -1
- package/src/features/chat/features/session-type/components/chat-session-type-option-item.tsx +1 -1
- package/src/features/chat/features/workspace/components/__tests__/workspace-file-content-preview.test.tsx +32 -10
- package/src/features/chat/features/workspace/components/workspace-file-content-preview.tsx +5 -15
- package/src/features/chat/features/workspace/utils/__tests__/chat-workspace-panel-view-model.utils.test.ts +62 -9
- package/src/features/chat/features/workspace/utils/chat-thread-workspace-session.utils.ts +6 -1
- package/src/features/chat/features/workspace/utils/chat-workspace-panel-view-model.utils.ts +1 -25
- package/src/features/chat/managers/__tests__/chat-session-list.manager.test.ts +190 -109
- package/src/features/chat/managers/__tests__/chat-thread-workspace.manager.test.ts +9 -10
- package/src/features/chat/managers/chat-session-list.manager.ts +68 -27
- package/src/features/cron/components/__tests__/cron-config.test.tsx +260 -0
- package/src/features/cron/components/cron-config.tsx +392 -388
- package/src/features/cron/components/cron-job-detail-dialog.tsx +210 -0
- package/src/features/cron/components/cron-job-row.tsx +271 -0
- package/src/features/cron/components/cron-task-discovery.tsx +152 -0
- package/src/features/cron/hooks/use-cron-jobs.ts +3 -1
- package/src/features/marketplace/components/__tests__/marketplace-page.test.tsx +3 -2
- package/src/features/marketplace/components/marketplace-external-skill-source-action.tsx +8 -6
- package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +26 -40
- package/src/features/pwa/components/pwa-install-entry.tsx +45 -58
- package/src/features/remote/components/remote-access-page.tsx +128 -208
- package/src/features/settings/components/config/provider-auth-section.tsx +32 -17
- package/src/features/settings/components/config/provider-form.tsx +6 -6
- package/src/features/settings/components/config/provider-models-section.tsx +52 -46
- package/src/features/settings/components/config/secrets-config-form.tsx +78 -84
- package/src/features/settings/index.ts +0 -1
- package/src/features/settings/pages/__tests__/appearance-settings-page.test.tsx +35 -1
- package/src/features/settings/pages/__tests__/model-config-page.test.tsx +18 -1
- package/src/features/settings/pages/__tests__/search-config-page.test.tsx +8 -0
- package/src/features/settings/pages/__tests__/secrets-config-page.test.tsx +18 -17
- package/src/features/settings/pages/appearance-settings-page.tsx +87 -64
- package/src/features/settings/pages/model-config-page.tsx +75 -70
- package/src/features/settings/pages/providers-config-page.tsx +107 -73
- package/src/features/settings/pages/search-config-page.tsx +159 -152
- package/src/features/settings/pages/secrets-config-page.tsx +6 -1
- package/src/features/system-status/components/config/runtime-agent-list-card.tsx +23 -22
- package/src/features/system-status/components/config/runtime-binding-list-card.tsx +23 -22
- package/src/features/system-status/components/config/runtime-config-editor.tsx +17 -7
- package/src/features/system-status/components/config/runtime-config-overview.tsx +0 -3
- package/src/features/system-status/components/config/runtime-entry-list-card.tsx +24 -23
- package/src/features/system-status/components/config/runtime-settings-card.tsx +59 -52
- package/src/features/system-status/components/desktop-update-config.tsx +117 -112
- package/src/features/system-status/components/runtime-control-card.tsx +62 -59
- package/src/features/system-status/components/runtime-presence-card.tsx +79 -98
- package/src/features/system-status/components/runtime-security-card.tsx +74 -62
- package/src/features/system-status/components/security-config.tsx +3 -4
- package/src/features/system-status/pages/runtime-config-page.tsx +6 -1
- package/src/platforms/desktop/components/desktop-app-shell.tsx +1 -1
- package/src/platforms/mobile/components/mobile-settings-shell.tsx +2 -2
- package/src/shared/components/__tests__/config-split-page.test.tsx +15 -3
- package/src/shared/components/__tests__/settings-page.test.tsx +31 -0
- package/src/shared/components/actions/__tests__/navigation-link.test.tsx +47 -0
- package/src/shared/components/actions/navigation-link.tsx +116 -0
- package/src/shared/components/common/__tests__/brand-header.test.tsx +5 -5
- package/src/shared/components/common/__tests__/searchable-model-input.test.tsx +24 -0
- package/src/shared/components/common/brand-header.tsx +12 -10
- package/src/shared/components/common/searchable-model-input.tsx +9 -10
- package/src/shared/components/config-split-page.tsx +70 -65
- package/src/shared/components/doc-browser/doc-browser-panel-parts.tsx +6 -7
- package/src/shared/components/settings/setting-row.tsx +61 -30
- package/src/shared/components/settings/settings-page.tsx +34 -0
- package/src/shared/components/ui/actions/__tests__/icon-action-button.test.tsx +23 -2
- package/src/shared/components/ui/actions/icon-action-button.tsx +9 -2
- package/src/shared/components/ui/overlays/sheet.tsx +142 -0
- package/src/shared/lib/api/ncp-session.types.ts +8 -2
- package/src/shared/lib/api/types.ts +22 -1
- package/src/shared/lib/api/utils/config.utils.ts +2 -1
- package/src/shared/lib/api/utils/ncp-session.utils.ts +25 -11
- package/src/shared/lib/i18n/locales/en-US/chat.json +31 -1
- package/src/shared/lib/i18n/locales/en-US/core.json +3 -3
- package/src/shared/lib/i18n/locales/en-US/cron.json +87 -17
- package/src/shared/lib/i18n/locales/zh-CN/chat.json +33 -3
- package/src/shared/lib/i18n/locales/zh-CN/core.json +6 -6
- package/src/shared/lib/i18n/locales/zh-CN/cron.json +80 -10
- package/src/shared/lib/transport/__tests__/remote.transport.test.ts +16 -4
- package/dist/assets/api-D0U10BcF.js +0 -13
- package/dist/assets/app-presenter-provider-Dffdm_Ek.js +0 -106
- package/dist/assets/appearance-settings-page-sfusZc2d.js +0 -1
- package/dist/assets/architecture-TIHT7OUA-ClwVFq-K.js +0 -1
- package/dist/assets/channel-BEHOSFc5.js +0 -1
- package/dist/assets/channels-list-page-Dkfe87Zq.js +0 -8
- package/dist/assets/chat-page-CeapbQnG.js +0 -1
- package/dist/assets/chunk-2Q5K7J3B-DrIhesSX.js +0 -1
- package/dist/assets/chunk-VAUOI2AC-Dpcz6BhT.js +0 -1
- package/dist/assets/chunk-XXDRQBXY-C2QjjwYX.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-DESMaY3_.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-DwOlByYH.js +0 -1
- package/dist/assets/config-split-page-CnQI8cKT.js +0 -1
- package/dist/assets/confirm-dialog-RZUWA_j9.js +0 -5
- package/dist/assets/cynefin-VYW2F7L2-CzjeeOq9.js +0 -1
- package/dist/assets/desktop-update-config-CbSYQMYz.js +0 -1
- package/dist/assets/doc-browser-DwXHr-mm.js +0 -1
- package/dist/assets/doc-browser-jVTq8iY_2.js +0 -1
- package/dist/assets/download-BP7ZxrwI.js +0 -1
- package/dist/assets/eventmodeling-45OFAUF4-C38BqG8w.js +0 -1
- package/dist/assets/external-link-DvHCEe3h.js +0 -1
- package/dist/assets/eye-C--6dxv_.js +0 -1
- package/dist/assets/flowDiagram-23GEKE2U-BoKk8RRq.js +0 -1
- package/dist/assets/folder-BfeO1zCY.js +0 -1
- package/dist/assets/gitGraph-TEB2WS4Q-IsQHHJuS.js +0 -1
- package/dist/assets/index-BlKbckX4.css +0 -1
- package/dist/assets/index-DoZR11Nh.js +0 -2
- package/dist/assets/info-DKCQHKI2-ofy2qlHI.js +0 -1
- package/dist/assets/loader-circle-BWdgwVnn.js +0 -1
- package/dist/assets/mcp-marketplace-page-XnRWiC8c.js +0 -1
- package/dist/assets/model-config-page-CXnqSbSI.js +0 -1
- package/dist/assets/packet-7NZHBO7P-Rfopfa1o.js +0 -1
- package/dist/assets/pie-RZYD4A2V-CJR1xKEv.js +0 -1
- package/dist/assets/plus-BeApS21t.js +0 -1
- package/dist/assets/provider-scoped-model-input-ll_Btc9h.js +0 -1
- package/dist/assets/providers-config-page-Bcuhqkdl.js +0 -1
- package/dist/assets/radar-I7S5WNFK-CDg8Z-1r.js +0 -1
- package/dist/assets/railroad-3IZDKUUU-BHnNmjxO.js +0 -1
- package/dist/assets/railroad-abnf-AHOZXSZD-DGtNcusW.js +0 -1
- package/dist/assets/railroad-ebnf-EBAXGLYW-BRFtsQmm.js +0 -1
- package/dist/assets/railroad-peg-LSFZ7HO6-Bj5IypCA.js +0 -1
- package/dist/assets/remote-CqKpuOP9.js +0 -1
- package/dist/assets/rotate-cw-DHXoiqFB.js +0 -1
- package/dist/assets/runtime-config-page-D-Aqxizs.js +0 -1
- package/dist/assets/search-config-page-XTKf5rc0.js +0 -1
- package/dist/assets/secrets-config-page-Cx-qptcj.js +0 -3
- package/dist/assets/security-config-DWGFM2u9.js +0 -1
- package/dist/assets/setting-row-DFvioO2a.js +0 -1
- package/dist/assets/settings-2-RMWqf-ey.js +0 -1
- package/dist/assets/skeleton-DQ5WhuDG.js +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-CfMU38yc.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-D9Zb9X57.js +0 -8
- package/dist/assets/treeView-QDETBFTQ-Uy7M0WvH.js +0 -1
- package/dist/assets/treemap-6X3UGDF4-BJfGV7KX.js +0 -1
- package/dist/assets/use-confirm-dialog-CTNA1PC0.js +0 -1
- package/dist/assets/wardley-OPB4EBWU-q263iF3K.js +0 -1
- package/dist/assets/x-qvh05iyu.js +0 -1
- package/src/features/chat/components/conversation/chat-conversation-skeleton.tsx +0 -86
- package/src/features/settings/pages/__tests__/language-settings-page.test.tsx +0 -36
- package/src/features/settings/pages/language-settings-page.tsx +0 -56
- package/src/shared/components/actions/action-link.tsx +0 -49
- /package/dist/assets/{array-BqYdCIE6.js → array-CAkJT3no.js} +0 -0
- /package/dist/assets/{chunk-KEIR6QF5-A3jEqwzn.js → chunk-KEIR6QF5-BgdDoWEH.js} +0 -0
- /package/dist/assets/{chunk-Y2CYZVJY-BGrd8tLy.js → chunk-Y2CYZVJY-pTllD0P3.js} +0 -0
- /package/dist/assets/{config-hints-LxG80Uj5.js → config-hints-S3g-UVZb.js} +0 -0
- /package/dist/assets/{cytoscape.esm-CRW8q92n.js → cytoscape.esm-DmURt-5G.js} +0 -0
- /package/dist/assets/{defaultLocale-Cdv9x6q7.js → defaultLocale-BKy_KP3O.js} +0 -0
- /package/dist/assets/{dist-dw-gAfM_.js → dist-IgNNB7K9.js} +0 -0
- /package/dist/assets/{graphlib-BcNFQr5y.js → graphlib-xw_TBHyH.js} +0 -0
- /package/dist/assets/{host-capabilities-CFbAfrrA.js → host-capabilities-B-TtABsP.js} +0 -0
- /package/dist/assets/{init-D8TjIqfm.js → init-C9xlLIAu.js} +0 -0
- /package/dist/assets/{jszip.min-CP5uPNQa.js → jszip.min-Das2IAnb.js} +0 -0
- /package/dist/assets/{katex-wEmrEFTg.js → katex-DSy1eD2d.js} +0 -0
- /package/dist/assets/{middleware-CAXxl-af.js → middleware-Df-a4x-q.js} +0 -0
- /package/dist/assets/{path-DzBnMI1r.js → path-DB0USYHi.js} +0 -0
- /package/dist/assets/{provider-models-BoUhFo9R.js → provider-models-CXUgDxGR.js} +0 -0
- /package/dist/assets/{rough.esm-wJ1d3nQl.js → rough.esm-B1B52ZQS.js} +0 -0
- /package/dist/assets/{xlsx-DUqJhg5u.js → xlsx-DfjC_iml.js} +0 -0
|
@@ -1,32 +1,102 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cronPageTitle": "
|
|
3
|
-
"
|
|
4
|
-
"
|
|
2
|
+
"cronPageTitle": "Scheduled tasks",
|
|
3
|
+
"cronWorkspaceEyebrow": "Automation workspace",
|
|
4
|
+
"cronPageDescription": "View every automated Agent task, or arrange a new one through an AI conversation.",
|
|
5
|
+
"cronComposerPlaceholder": "Describe what you want done regularly",
|
|
6
|
+
"cronComposerLabel": "Describe the task you want to arrange",
|
|
7
|
+
"cronComposerSubmit": "Continue in AI chat",
|
|
8
|
+
"cronComposerHint": "Your request opens an AI conversation for confirmation. It is not enabled here directly.",
|
|
9
|
+
"cronSearchPlaceholder": "Search name, task, or session",
|
|
5
10
|
"cronStatusLabel": "Status",
|
|
6
11
|
"cronStatusAll": "All",
|
|
7
|
-
"cronStatusEnabled": "
|
|
8
|
-
"cronStatusDisabled": "
|
|
12
|
+
"cronStatusEnabled": "Running",
|
|
13
|
+
"cronStatusDisabled": "Paused",
|
|
14
|
+
"cronStatusAttention": "Needs attention",
|
|
15
|
+
"cronPaginationLabel": "Task list pagination",
|
|
16
|
+
"cronPreviousPage": "Previous page",
|
|
17
|
+
"cronNextPage": "Next page",
|
|
9
18
|
"cronTotalLabel": "Total",
|
|
10
|
-
"cronLoading": "Loading
|
|
11
|
-
"cronEmpty": "No
|
|
19
|
+
"cronLoading": "Loading scheduled tasks...",
|
|
20
|
+
"cronEmpty": "No scheduled tasks yet.",
|
|
12
21
|
"cronScheduleLabel": "Schedule",
|
|
13
|
-
"cronSessionLabel": "
|
|
22
|
+
"cronSessionLabel": "Execution session",
|
|
14
23
|
"cronDeliverTo": "Deliver to",
|
|
15
24
|
"cronNextRun": "Next run",
|
|
16
25
|
"cronLastRun": "Last run",
|
|
17
26
|
"cronLastStatus": "Last status",
|
|
18
|
-
"cronDeleteConfirm": "Delete
|
|
27
|
+
"cronDeleteConfirm": "Delete scheduled task",
|
|
19
28
|
"cronOneShot": "One-shot",
|
|
20
29
|
"cronEnable": "Enable",
|
|
21
|
-
"cronDisable": "
|
|
30
|
+
"cronDisable": "Pause",
|
|
22
31
|
"cronRunNow": "Run now",
|
|
23
|
-
"cronEnableConfirm": "Enable
|
|
24
|
-
"cronDisableConfirm": "
|
|
25
|
-
"cronRunConfirm": "Run
|
|
26
|
-
"cronRunForceConfirm": "
|
|
32
|
+
"cronEnableConfirm": "Enable scheduled task",
|
|
33
|
+
"cronDisableConfirm": "Pause scheduled task",
|
|
34
|
+
"cronRunConfirm": "Run scheduled task now",
|
|
35
|
+
"cronRunForceConfirm": "Task is paused. Run it anyway",
|
|
27
36
|
"cronMoreActions": "More actions",
|
|
37
|
+
"cronExpandTask": "Expand task",
|
|
38
|
+
"cronCollapseTask": "Collapse task",
|
|
28
39
|
"cronCreatedAt": "Created",
|
|
29
|
-
"cronEmptyGuide": "Tell your Agent about
|
|
30
|
-
"cronId": "
|
|
31
|
-
"cronUpdatedAt": "Updated"
|
|
40
|
+
"cronEmptyGuide": "Tell your Agent about the task you want to schedule",
|
|
41
|
+
"cronId": "Task ID",
|
|
42
|
+
"cronUpdatedAt": "Updated",
|
|
43
|
+
"cronSummaryLabel": "Current task overview",
|
|
44
|
+
"cronSummaryTotal": "All tasks",
|
|
45
|
+
"cronSummaryEnabled": "Running",
|
|
46
|
+
"cronSummaryPaused": "Paused",
|
|
47
|
+
"cronSummaryAttention": "Needs attention",
|
|
48
|
+
"cronAttentionSummary": "tasks need attention",
|
|
49
|
+
"cronAttentionSummaryHint": "Open task details to review the latest error",
|
|
50
|
+
"cronAllHealthy": "Tasks are running normally",
|
|
51
|
+
"cronAllHealthyHint": "There are no issues that need attention",
|
|
52
|
+
"cronMyTasks": "My tasks",
|
|
53
|
+
"cronTaskCountUnit": "tasks",
|
|
54
|
+
"cronNeedInspiration": "Need fresh ideas?",
|
|
55
|
+
"cronStartFromResult": "Start from a concrete outcome",
|
|
56
|
+
"cronTemplateSelectionHint": "Choose a template, edit it, then confirm it in an AI conversation.",
|
|
57
|
+
"cronEmptyHeroTitle": "What should NextClaw do for you regularly?",
|
|
58
|
+
"cronEmptyHeroDescription": "Describe an outcome or start with a template. AI will confirm timing, scope, and how results should be delivered.",
|
|
59
|
+
"cronNoMatchingTasks": "No matching tasks",
|
|
60
|
+
"cronNoMatchingTasksHint": "Try a different search or status filter.",
|
|
61
|
+
"cronNeedsAttention": "Needs attention",
|
|
62
|
+
"cronRunningNormally": "Running",
|
|
63
|
+
"cronPaused": "Paused",
|
|
64
|
+
"cronRunFailed": "Latest run failed",
|
|
65
|
+
"cronBoundSession": "Bound session",
|
|
66
|
+
"cronDedicatedSession": "Dedicated session",
|
|
67
|
+
"cronEditDetails": "View and edit task",
|
|
68
|
+
"cronDetailDescription": "Review the task and its latest run. Return to its execution session to describe changes.",
|
|
69
|
+
"cronTaskPrompt": "Task prompt",
|
|
70
|
+
"cronTaskDetails": "Task settings",
|
|
71
|
+
"cronAgentLabel": "Execution Agent",
|
|
72
|
+
"cronLatestRun": "Latest run",
|
|
73
|
+
"cronLatestRunHint": "The system currently stores only the latest execution snapshot.",
|
|
74
|
+
"cronLastError": "Error",
|
|
75
|
+
"cronNeverRun": "Never run",
|
|
76
|
+
"cronLastStatusOk": "Succeeded",
|
|
77
|
+
"cronLastStatusError": "Failed",
|
|
78
|
+
"cronLastStatusSkipped": "Skipped",
|
|
79
|
+
"cronEnabledState": "Task is running",
|
|
80
|
+
"cronToggleHint": "Paused tasks do not run automatically on schedule.",
|
|
81
|
+
"cronOpenSession": "Open session",
|
|
82
|
+
"cronCloseDetails": "Close task details",
|
|
83
|
+
"cronSessionAvailableAfterRun": "A dedicated session is created after the task runs for the first time.",
|
|
84
|
+
"cronTemplateAiNewsTitle": "Daily AI news brief",
|
|
85
|
+
"cronTemplateAiNewsDescription": "Summarize AI product and research changes that affect real work.",
|
|
86
|
+
"cronTemplateAiNewsPrompt": "Every morning at 8, summarize the most important AI product and research developments from the past 24 hours and include original sources.",
|
|
87
|
+
"cronTemplateWeeklyReviewTitle": "Weekly project review",
|
|
88
|
+
"cronTemplateWeeklyReviewDescription": "Summarize progress, decisions, loose ends, and next priorities on Friday.",
|
|
89
|
+
"cronTemplateWeeklyReviewPrompt": "Every Friday at 6 PM, summarize this project's progress, key decisions, open issues, and priorities for next week.",
|
|
90
|
+
"cronTemplateMeetingPrepTitle": "Meeting preparation",
|
|
91
|
+
"cronTemplateMeetingPrepDescription": "Collect the agenda, material, open questions, and participant context.",
|
|
92
|
+
"cronTemplateMeetingPrepPrompt": "Thirty minutes before each meeting, organize the agenda, related material, open questions, and anything I need to prepare.",
|
|
93
|
+
"cronTemplateLearningTitle": "Daily learning practice",
|
|
94
|
+
"cronTemplateLearningDescription": "Create a short practice set aligned with the current learning goal.",
|
|
95
|
+
"cronTemplateLearningPrompt": "Every evening at 8, create a 15-minute practice set based on what I have been learning recently.",
|
|
96
|
+
"cronTemplateCompetitorTitle": "Competitor change tracker",
|
|
97
|
+
"cronTemplateCompetitorDescription": "Check official updates and report only changes worth acting on.",
|
|
98
|
+
"cronTemplateCompetitorPrompt": "Every Monday, check official announcements and release notes from major competitors and report only material changes that affect product decisions.",
|
|
99
|
+
"cronTemplateFamilyTitle": "Family check-in reminder",
|
|
100
|
+
"cronTemplateFamilyDescription": "Remind you to contact important people at a suitable time.",
|
|
101
|
+
"cronTemplateFamilyPrompt": "Every Sunday at 10 AM, remind me to contact my parents and recap anything from our last conversation that I should follow up on."
|
|
32
102
|
}
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"chatWorkspaceProjectFiles": "项目文件",
|
|
56
56
|
"chatWorkspaceProjectFilesDescription": "浏览当前会话项目目录中的文件。",
|
|
57
57
|
"chatWorkspaceProjectFilesUnavailable": "当前会话还没有项目目录。",
|
|
58
|
-
"chatWorkspaceSideChatDraftTitle": "
|
|
58
|
+
"chatWorkspaceSideChatDraftTitle": "侧边对话",
|
|
59
59
|
"chatWorkspaceSideChatDraftSubtitle": "发送第一条消息后,会继承父会话上下文并创建真实 child 会话。",
|
|
60
60
|
"chatWorkspaceChildSessions": "子会话",
|
|
61
61
|
"chatWorkspaceOpenFiles": "打开的文件",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"chatWorkspaceDiffEmpty": "当前没有可显示的 diff 内容。",
|
|
84
84
|
"chatWorkspaceHtmlPreviewTitle": "HTML 渲染预览",
|
|
85
85
|
"chatWorkspacePreviewTruncated": "内容已截断",
|
|
86
|
-
"chatWorkspaceSessionCronJobs": "
|
|
86
|
+
"chatWorkspaceSessionCronJobs": "定时任务",
|
|
87
87
|
"chatWorkspaceCronJobEmpty": "这个会话暂无定时任务。",
|
|
88
88
|
"chatSessionUnread": "会话有未读更新",
|
|
89
89
|
"chatTyping": "Agent 正在思考...",
|
|
@@ -146,7 +146,37 @@
|
|
|
146
146
|
"chatToolDisplayError": "展示结果失败",
|
|
147
147
|
"chatToolDisplayCancelled": "已取消展示结果",
|
|
148
148
|
"chatScrollToBottom": "滚动到底部",
|
|
149
|
+
"chatHistoryLoadFailed": "较早消息加载失败",
|
|
150
|
+
"chatHistoryRetry": "重试",
|
|
149
151
|
"chatProcessSummaryProcessed": "已处理",
|
|
152
|
+
"chatAiExecutionInput": "输入",
|
|
153
|
+
"chatAiExecutionOutput": "输出",
|
|
154
|
+
"chatAiExecutionTokens": "Token",
|
|
155
|
+
"chatAiExecutionPartial": "部分用量",
|
|
156
|
+
"chatMessageMoreActions": "更多操作",
|
|
157
|
+
"chatAiExecutionViewMetadata": "查看运行元数据",
|
|
158
|
+
"chatAiExecutionMetadataTitle": "AI 运行元数据",
|
|
159
|
+
"chatAiExecutionMetadataDescription": "随本条 assistant 消息持久化的运行事实,可用于检查与调试。",
|
|
160
|
+
"chatAiExecutionMetadataClose": "关闭运行元数据",
|
|
161
|
+
"chatAiExecutionNotAvailable": "暂无",
|
|
162
|
+
"chatAiExecutionRunId": "运行 ID",
|
|
163
|
+
"chatAiExecutionRuntime": "Runtime",
|
|
164
|
+
"chatAiExecutionModel": "模型",
|
|
165
|
+
"chatAiExecutionRequestedModel": "请求模型",
|
|
166
|
+
"chatAiExecutionOutcome": "运行结果",
|
|
167
|
+
"chatAiExecutionInputTokens": "输入 Token",
|
|
168
|
+
"chatAiExecutionOutputTokens": "输出 Token",
|
|
169
|
+
"chatAiExecutionCachedInputTokens": "缓存输入 Token",
|
|
170
|
+
"chatAiExecutionTotalTokens": "总 Token",
|
|
171
|
+
"chatAiExecutionModelCallCount": "模型调用次数",
|
|
172
|
+
"chatAiExecutionReportedModelCallCount": "已报告用量的调用次数",
|
|
173
|
+
"chatAiExecutionUsageStatus": "用量状态",
|
|
174
|
+
"chatAiExecutionOutcomeCompleted": "已完成",
|
|
175
|
+
"chatAiExecutionOutcomeFailed": "失败",
|
|
176
|
+
"chatAiExecutionOutcomeAborted": "已取消",
|
|
177
|
+
"chatAiExecutionUsageReported": "已报告",
|
|
178
|
+
"chatAiExecutionUsagePartial": "部分报告",
|
|
179
|
+
"chatAiExecutionUsageUnavailable": "不可用",
|
|
150
180
|
"chatToolActivityReadOne": "读取 1 个文件",
|
|
151
181
|
"chatToolActivityReadOther": "读取 {count} 个文件",
|
|
152
182
|
"chatToolActivityEditOne": "编辑 1 个文件",
|
|
@@ -187,7 +217,7 @@
|
|
|
187
217
|
"chatSlashNoResult": "无匹配项",
|
|
188
218
|
"chatSlashHint": "输入 / 触发命令、面板应用或技能选择",
|
|
189
219
|
"chatSlashCommandHint": "回车执行这个命令。",
|
|
190
|
-
"chatSlashCommandSideChatTitle": "
|
|
220
|
+
"chatSlashCommandSideChatTitle": "侧边对话",
|
|
191
221
|
"chatSlashCommandSideChatDescription": "打开一个继承当前会话上下文的右侧草稿会话。",
|
|
192
222
|
"chatSlashCommandSideChatDetail": "只有发送第一条消息后才会创建真实 child 会话。",
|
|
193
223
|
"chatSlashPanelAppHint": "回车在右侧打开这个面板应用。",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"settingsMenu": "设置菜单",
|
|
24
24
|
"sidebarCollapse": "收起侧边栏",
|
|
25
25
|
"sidebarExpand": "展开侧边栏",
|
|
26
|
-
"security": "
|
|
26
|
+
"security": "登录管理",
|
|
27
27
|
"backToMain": "返回主界面",
|
|
28
28
|
"enabled": "启用",
|
|
29
29
|
"disabled": "禁用",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"providerModelsHelp": "系统会先填充预置模型;你可以在这里新增或删除。请填写不带当前 provider 路由前缀的本地模型 ID;vendor/model 这类多段 ID 合法。若输入包含当前 provider 前缀,只会去掉最外层前缀。",
|
|
125
125
|
"providerModelsEmptyShort": "暂无可用模型",
|
|
126
126
|
"providerAddFirstModel": "添加第一个模型",
|
|
127
|
-
"providerModelVisionTitle": "
|
|
127
|
+
"providerModelVisionTitle": "视觉能力",
|
|
128
128
|
"providerModelVisionHint": "允许向该模型发送图片输入。",
|
|
129
129
|
"providerModelThinkingTitle": "思考档位能力",
|
|
130
130
|
"providerModelThinkingHint": "为该模型声明可切换的思考档位,聊天会话将按这里的能力展示下拉。",
|
|
@@ -227,8 +227,8 @@
|
|
|
227
227
|
"authDisabledSuccess": "认证已关闭",
|
|
228
228
|
"authRetryStatus": "重试",
|
|
229
229
|
"authStatusLoadFailed": "无法获取认证状态,请检查 UI 服务是否正常。",
|
|
230
|
-
"authSecurityTitle": "
|
|
231
|
-
"authSecurityDescription": "
|
|
230
|
+
"authSecurityTitle": "登录管理",
|
|
231
|
+
"authSecurityDescription": "设置进入 NextClaw 时是否需要登录,并管理登录账号和密码。",
|
|
232
232
|
"authSetupTitle": "开启轻量认证",
|
|
233
233
|
"authSetupDescription": "首次开启时设置单个管理员账号。完成后当前标签页会自动登录。",
|
|
234
234
|
"authSetupAction": "开启认证",
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
"defaultEnvProvider": "默认 Env 提供器",
|
|
288
288
|
"defaultFileProvider": "默认 File 提供器",
|
|
289
289
|
"defaultExecProvider": "默认 Exec 提供器",
|
|
290
|
-
"secretProvidersTitle": "
|
|
290
|
+
"secretProvidersTitle": "密钥提供器",
|
|
291
291
|
"secretProvidersDescription": "定义可复用的 secrets provider(env/file/exec)。",
|
|
292
292
|
"providerAlias": "提供器别名",
|
|
293
293
|
"removeProvider": "移除提供器",
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
"secretExecCwd": "执行目录(可选)",
|
|
299
299
|
"secretExecTimeoutMs": "超时(毫秒)",
|
|
300
300
|
"addSecretProvider": "添加 Provider",
|
|
301
|
-
"secretRefsTitle": "
|
|
301
|
+
"secretRefsTitle": "密钥引用",
|
|
302
302
|
"secretRefsDescription": "把配置路径映射到 secret 引用(source/provider/id)。",
|
|
303
303
|
"secretConfigPath": "配置路径",
|
|
304
304
|
"secretId": "Secret ID",
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"cronPageTitle": "定时任务",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"cronWorkspaceEyebrow": "自动化工作台",
|
|
4
|
+
"cronPageDescription": "查看所有自动运行的 Agent 任务,或通过 AI 会话安排新的任务。",
|
|
5
|
+
"cronComposerPlaceholder": "描述你想定期完成的事",
|
|
6
|
+
"cronComposerLabel": "描述你想安排的任务",
|
|
7
|
+
"cronComposerSubmit": "进入 AI 会话",
|
|
8
|
+
"cronComposerHint": "请求会进入 AI 会话确认,不会在这里直接启用任务。",
|
|
9
|
+
"cronSearchPlaceholder": "搜索名称、任务内容或会话",
|
|
5
10
|
"cronStatusLabel": "状态",
|
|
6
11
|
"cronStatusAll": "全部",
|
|
7
|
-
"cronStatusEnabled": "
|
|
8
|
-
"cronStatusDisabled": "
|
|
12
|
+
"cronStatusEnabled": "运行中",
|
|
13
|
+
"cronStatusDisabled": "已暂停",
|
|
14
|
+
"cronStatusAttention": "需要关注",
|
|
15
|
+
"cronPaginationLabel": "任务列表分页",
|
|
16
|
+
"cronPreviousPage": "上一页",
|
|
17
|
+
"cronNextPage": "下一页",
|
|
9
18
|
"cronTotalLabel": "总数",
|
|
10
19
|
"cronLoading": "加载定时任务中...",
|
|
11
20
|
"cronEmpty": "暂无定时任务。",
|
|
12
|
-
"cronScheduleLabel": "
|
|
13
|
-
"cronSessionLabel": "
|
|
21
|
+
"cronScheduleLabel": "执行计划",
|
|
22
|
+
"cronSessionLabel": "执行会话",
|
|
14
23
|
"cronDeliverTo": "投递到",
|
|
15
24
|
"cronNextRun": "下次执行",
|
|
16
25
|
"cronLastRun": "上次执行",
|
|
@@ -18,15 +27,76 @@
|
|
|
18
27
|
"cronDeleteConfirm": "确认删除定时任务",
|
|
19
28
|
"cronOneShot": "一次性",
|
|
20
29
|
"cronEnable": "启用",
|
|
21
|
-
"cronDisable": "
|
|
30
|
+
"cronDisable": "暂停",
|
|
22
31
|
"cronRunNow": "立即执行",
|
|
23
32
|
"cronEnableConfirm": "确认启用定时任务",
|
|
24
|
-
"cronDisableConfirm": "
|
|
33
|
+
"cronDisableConfirm": "确认暂停定时任务",
|
|
25
34
|
"cronRunConfirm": "确认立即执行定时任务",
|
|
26
|
-
"cronRunForceConfirm": "
|
|
35
|
+
"cronRunForceConfirm": "任务已暂停,仍要立即执行",
|
|
27
36
|
"cronMoreActions": "更多操作",
|
|
37
|
+
"cronExpandTask": "展开任务",
|
|
38
|
+
"cronCollapseTask": "收起任务",
|
|
28
39
|
"cronCreatedAt": "创建时间",
|
|
29
40
|
"cronEmptyGuide": "在对话中告诉 Agent 你需要定时执行的任务",
|
|
30
41
|
"cronId": "任务 ID",
|
|
31
|
-
"cronUpdatedAt": "更新时间"
|
|
42
|
+
"cronUpdatedAt": "更新时间",
|
|
43
|
+
"cronSummaryLabel": "当前任务概况",
|
|
44
|
+
"cronSummaryTotal": "全部任务",
|
|
45
|
+
"cronSummaryEnabled": "运行中",
|
|
46
|
+
"cronSummaryPaused": "已暂停",
|
|
47
|
+
"cronSummaryAttention": "需要关注",
|
|
48
|
+
"cronAttentionSummary": "项需要处理",
|
|
49
|
+
"cronAttentionSummaryHint": "打开任务详情查看最近错误",
|
|
50
|
+
"cronAllHealthy": "当前任务运行正常",
|
|
51
|
+
"cronAllHealthyHint": "暂时没有需要处理的异常",
|
|
52
|
+
"cronMyTasks": "我的任务",
|
|
53
|
+
"cronTaskCountUnit": "个任务",
|
|
54
|
+
"cronNeedInspiration": "需要新灵感?",
|
|
55
|
+
"cronStartFromResult": "从一个具体结果开始",
|
|
56
|
+
"cronTemplateSelectionHint": "选择模板后仍可修改,再进入 AI 会话确认。",
|
|
57
|
+
"cronEmptyHeroTitle": "想让 NextClaw 定期替你做什么?",
|
|
58
|
+
"cronEmptyHeroDescription": "描述目标,或者选一个模板作为起点。AI 会和你确认执行时间、范围与结果发送方式。",
|
|
59
|
+
"cronNoMatchingTasks": "没有符合条件的任务",
|
|
60
|
+
"cronNoMatchingTasksHint": "尝试更换关键词或状态筛选。",
|
|
61
|
+
"cronNeedsAttention": "需要关注",
|
|
62
|
+
"cronRunningNormally": "运行中",
|
|
63
|
+
"cronPaused": "已暂停",
|
|
64
|
+
"cronRunFailed": "最近执行失败",
|
|
65
|
+
"cronBoundSession": "绑定会话",
|
|
66
|
+
"cronDedicatedSession": "独立会话",
|
|
67
|
+
"cronEditDetails": "查看与编辑任务",
|
|
68
|
+
"cronDetailDescription": "查看任务设置与最近一次运行状态。修改任务可回到执行会话继续说明。",
|
|
69
|
+
"cronTaskPrompt": "任务内容",
|
|
70
|
+
"cronTaskDetails": "任务设置",
|
|
71
|
+
"cronAgentLabel": "执行 Agent",
|
|
72
|
+
"cronLatestRun": "最近一次运行",
|
|
73
|
+
"cronLatestRunHint": "当前系统只保存最近一次执行快照。",
|
|
74
|
+
"cronLastError": "错误信息",
|
|
75
|
+
"cronNeverRun": "尚未运行",
|
|
76
|
+
"cronLastStatusOk": "成功",
|
|
77
|
+
"cronLastStatusError": "失败",
|
|
78
|
+
"cronLastStatusSkipped": "已跳过",
|
|
79
|
+
"cronEnabledState": "任务运行中",
|
|
80
|
+
"cronToggleHint": "暂停后不会按计划自动执行。",
|
|
81
|
+
"cronOpenSession": "打开会话",
|
|
82
|
+
"cronCloseDetails": "关闭任务详情",
|
|
83
|
+
"cronSessionAvailableAfterRun": "独立会话会在任务首次运行后创建。",
|
|
84
|
+
"cronTemplateAiNewsTitle": "每日 AI 新闻简报",
|
|
85
|
+
"cronTemplateAiNewsDescription": "每天汇总真正影响工作的 AI 产品与研究进展。",
|
|
86
|
+
"cronTemplateAiNewsPrompt": "每天早上 8 点汇总过去 24 小时最重要的 AI 产品和研究进展,并附上原始来源。",
|
|
87
|
+
"cronTemplateWeeklyReviewTitle": "每周项目复盘",
|
|
88
|
+
"cronTemplateWeeklyReviewDescription": "周五汇总进展、决定、遗留问题和下周重点。",
|
|
89
|
+
"cronTemplateWeeklyReviewPrompt": "每周五下午 6 点汇总当前项目本周的进展、关键决定、遗留问题和下周优先事项。",
|
|
90
|
+
"cronTemplateMeetingPrepTitle": "会议前准备",
|
|
91
|
+
"cronTemplateMeetingPrepDescription": "会前整理议题、材料、未决问题与参会人背景。",
|
|
92
|
+
"cronTemplateMeetingPrepPrompt": "每次会议开始前 30 分钟,整理会议议题、相关材料、未决问题和我需要准备的内容。",
|
|
93
|
+
"cronTemplateLearningTitle": "每日学习练习",
|
|
94
|
+
"cronTemplateLearningDescription": "每天生成一组贴近当前学习目标的短练习。",
|
|
95
|
+
"cronTemplateLearningPrompt": "每天晚上 8 点,根据我最近的学习内容生成一组 15 分钟可以完成的练习。",
|
|
96
|
+
"cronTemplateCompetitorTitle": "竞品变化追踪",
|
|
97
|
+
"cronTemplateCompetitorDescription": "定期核对官方更新,只报告值得行动的变化。",
|
|
98
|
+
"cronTemplateCompetitorPrompt": "每周一检查主要竞品的官方公告和 Release Notes,只报告会影响产品判断的实质变化。",
|
|
99
|
+
"cronTemplateFamilyTitle": "家人联系提醒",
|
|
100
|
+
"cronTemplateFamilyDescription": "在合适的时间提醒你联系重要的人。",
|
|
101
|
+
"cronTemplateFamilyPrompt": "每周日早上 10 点提醒我联系父母,并回顾上次提到需要继续关心的事情。"
|
|
32
102
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import { RemoteSessionMultiplexTransport } from '
|
|
2
|
+
import { RemoteSessionMultiplexTransport } from '@/shared/lib/transport/remote-transport.service';
|
|
3
3
|
|
|
4
4
|
class MockWebSocket {
|
|
5
5
|
static readonly CONNECTING = 0;
|
|
@@ -44,12 +44,18 @@ class MockWebSocket {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
type SentRequestFrame = {
|
|
48
|
+
type: 'request';
|
|
49
|
+
id: string;
|
|
50
|
+
target: { headers?: Record<string, string> };
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
function lastSentRequestFrame(socket: MockWebSocket): SentRequestFrame {
|
|
48
54
|
const raw = socket.sent[socket.sent.length - 1];
|
|
49
55
|
if (!raw) {
|
|
50
56
|
throw new Error('Expected a sent request frame.');
|
|
51
57
|
}
|
|
52
|
-
return JSON.parse(raw) as
|
|
58
|
+
return JSON.parse(raw) as SentRequestFrame;
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
describe('RemoteSessionMultiplexTransport request path', () => {
|
|
@@ -73,7 +79,10 @@ describe('RemoteSessionMultiplexTransport request path', () => {
|
|
|
73
79
|
|
|
74
80
|
const requestPromise = transport.request<{ sessions: unknown[]; total: number }>({
|
|
75
81
|
method: 'GET',
|
|
76
|
-
path: '/api/sessions'
|
|
82
|
+
path: '/api/sessions',
|
|
83
|
+
headers: {
|
|
84
|
+
'x-nextclaw-panel-bridge-session': 'runtime-token'
|
|
85
|
+
}
|
|
77
86
|
});
|
|
78
87
|
|
|
79
88
|
const socket = MockWebSocket.instances[0];
|
|
@@ -103,6 +112,9 @@ describe('RemoteSessionMultiplexTransport request path', () => {
|
|
|
103
112
|
total: 0
|
|
104
113
|
});
|
|
105
114
|
expect(socket.url).toBe('wss://remote.claw.cool/_remote/ws');
|
|
115
|
+
expect(requestFrame.target.headers).toEqual({
|
|
116
|
+
'x-nextclaw-panel-bridge-session': 'runtime-token'
|
|
117
|
+
});
|
|
106
118
|
});
|
|
107
119
|
|
|
108
120
|
it('fails predictably when a remote request frame never receives a response', async () => {
|