openclaw-multi-auto 1.3.7 → 1.3.9
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/dist/{accounts-L9ByEpnP.js → accounts-C9HcPI9h.js} +2 -2
- package/dist/{accounts-BOzyfwW4.js → accounts-C_lW3Ag9.js} +2 -2
- package/dist/{accounts-yfBeCZtS.js → accounts-Tgelvk0C.js} +17 -17
- package/dist/{active-listener-D1yqT1cw.js → active-listener-BEdprTkn.js} +2 -2
- package/dist/{api-key-rotation-DtsNS2Nb.js → api-key-rotation-BJpKWXy0.js} +2 -2
- package/dist/{audio-preflight-DpxQCpsA.js → audio-preflight-BMvgEQ5j.js} +32 -32
- package/dist/{audio-transcription-runner-28fcRNNi.js → audio-transcription-runner-gLFfz8fr.js} +12 -12
- package/dist/{audit-membership-runtime-DWyHWAHM.js → audit-membership-runtime-Dntemq07.js} +4 -4
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +51 -51
- package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
- package/dist/bundled/command-logger/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +51 -51
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-xHOMiarp.js → channel-activity-BDnjYF7B.js} +3 -3
- package/dist/{chrome-DwizpzOC.js → chrome-DxxEKrY7.js} +18 -18
- package/dist/{commands-registry-V1zZ5pPC.js → commands-registry-D5qXbFJn.js} +4 -4
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/de-Bm0iuKxz.js +2 -0
- package/dist/control-ui/assets/de-Bm0iuKxz.js.map +1 -0
- package/dist/control-ui/assets/index-7XbUBC_m.js +8380 -0
- package/dist/control-ui/assets/index-7XbUBC_m.js.map +1 -0
- package/dist/control-ui/assets/index-E0j6Tkrc.css +1 -0
- package/dist/control-ui/assets/pt-BR-C2uaHesk.js +2 -0
- package/dist/control-ui/assets/pt-BR-C2uaHesk.js.map +1 -0
- package/dist/control-ui/assets/zh-CN-CqPGpAps.js +2 -0
- package/dist/control-ui/assets/zh-CN-CqPGpAps.js.map +1 -0
- package/dist/control-ui/assets/zh-TW-Cyl5GDQh.js +2 -0
- package/dist/control-ui/assets/zh-TW-Cyl5GDQh.js.map +1 -0
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/favicon.svg +22 -0
- package/dist/control-ui/index.html +17 -0
- package/dist/{deliver-D4o6VIur.js → deliver-DbdywYJE.js} +21 -21
- package/dist/deliver-runtime-BFs7iAZF.js +36 -0
- package/dist/deps-send-discord.runtime-DZUccI6Z.js +26 -0
- package/dist/deps-send-imessage.runtime-CF3OpoqY.js +25 -0
- package/dist/deps-send-signal.runtime-Cw4-ozeO.js +24 -0
- package/dist/deps-send-slack.runtime-BDsDhS1P.js +22 -0
- package/dist/deps-send-telegram.runtime-D_4xVasO.js +27 -0
- package/dist/deps-send-whatsapp.runtime-DK8jqd14.js +60 -0
- package/dist/{diagnostic-Bn4PZjMZ.js → diagnostic-Co6Kghr-.js} +2 -2
- package/dist/{errors-CCLeFWAg.js → errors-xt401nuk.js} +1 -1
- package/dist/{fetch-BlJWzEP6.js → fetch-DuraYswo.js} +5 -5
- package/dist/{fetch-guard-ChYBwfiy.js → fetch-guard-DWr0d00H.js} +2 -2
- package/dist/{frontmatter-CvaMP376.js → frontmatter-BkTfEZ93.js} +3 -3
- package/dist/{fs-safe-0jAo_Whb.js → fs-safe-CTYUrIgQ.js} +4 -4
- package/dist/{github-copilot-token-D13V9YBz.js → github-copilot-token-BDioPmd6.js} +7 -7
- package/dist/{image-Bbn53mzj.js → image-eT7Y-nP5.js} +6 -6
- package/dist/{image-ops-CehkHxmW.js → image-ops-BuUnEOE0.js} +2 -2
- package/dist/image-runtime-BcAK3n8a.js +29 -0
- package/dist/{ir-DAP-B-Xw.js → ir-B83looB-.js} +8 -8
- package/dist/{legacy-names-TyzbVqa_.js → legacy-names-DOC03BkU.js} +1 -1
- package/dist/llm-slug-generator.js +51 -51
- package/dist/{logger-DMZQQtxK.js → logger-BfjWMCSD.js} +7 -7
- package/dist/{login-DiCctRo1.js → login-CrIwcrVI.js} +5 -5
- package/dist/{login-qr-MUbXgjtd.js → login-qr-BpPDZdl_.js} +10 -10
- package/dist/{manager-BW_NSIMl.js → manager-1bvuGrNR.js} +13 -13
- package/dist/manager-runtime-FO1Sx3W8.js +18 -0
- package/dist/{model-selection-idoqPmw0.js → model-selection-Dna0Gz1k.js} +43 -43
- package/dist/{outbound-C2kanETZ.js → outbound-ChDjtuD6.js} +6 -6
- package/dist/{outbound-attachment-DBrYWX8h.js → outbound-attachment-DqHlD21U.js} +2 -2
- package/dist/{path-alias-guards-DqXRZmsL.js → path-alias-guards-BzvdLvTI.js} +1 -1
- package/dist/{paths-CCxysrzL.js → paths-Bkr-BCxW.js} +4 -4
- package/dist/{paths-C6TxBCvO.js → paths-Cvc9EM8Y.js} +5 -5
- package/dist/{pi-embedded-BaGj07T0.js → pi-embedded-BQQa91aA.js} +158 -158
- package/dist/{pi-embedded-helpers-wy0DZvx1.js → pi-embedded-helpers-CLXm10bV.js} +52 -52
- package/dist/{plugin-sdk/pi-model-discovery-v-XPUOOf.js → pi-model-discovery-Dymwdjt0.js} +2 -2
- package/dist/pi-model-discovery-runtime-BeY4EUPp.js +11 -0
- package/dist/{pi-tools.before-tool-call.runtime-BuLxSyx9.js → pi-tools.before-tool-call.runtime-Cwab_5W1.js} +9 -9
- package/dist/plugin-sdk/index.js +50 -50
- package/dist/plugin-sdk/mattermost.js +3 -3
- package/dist/plugin-sdk/signal.js +2 -2
- package/dist/plugin-sdk/zalo.js +2 -2
- package/dist/{plugins-CWkRQYDj.js → plugins-4Rj4OjLY.js} +11 -11
- package/dist/{proxy-env-Cq5gdrbj.js → proxy-env-DlmzDx8x.js} +1 -1
- package/dist/{proxy-fetch-CCjEYbFm.js → proxy-fetch-B2pEfjbR.js} +1 -1
- package/dist/{pw-ai-Cl1Lc7RC.js → pw-ai-DNMjFMqH.js} +14 -14
- package/dist/{qmd-manager-BsYsO9Ii.js → qmd-manager-BtIKUaO9.js} +10 -10
- package/dist/{query-expansion-DtLc3wjL.js → query-expansion-CX-1fS52.js} +6 -6
- package/dist/{plugin-sdk/redact-DjVX-1N3.js → redact-COik8ET1.js} +1 -1
- package/dist/{run-with-concurrency-D_ZpbgEG.js → run-with-concurrency-BgYfgkXT.js} +4 -4
- package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +13 -0
- package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +22 -0
- package/dist/{send-Dx2RkUOZ.js → send-6lz6rNVP.js} +6 -6
- package/dist/{send-vmONuVgL.js → send-BHTiZcH3.js} +26 -26
- package/dist/{send-Bj776ESJ.js → send-L7gRiwyd.js} +7 -7
- package/dist/{send-DcxmcFi_.js → send-PE6cwoTe.js} +8 -8
- package/dist/{send-BQERFNyo.js → send-dfu6_rgf.js} +5 -5
- package/dist/{session-A4QhBRvH.js → session-D8ImowSs.js} +8 -8
- package/dist/{skill-commands-CMzBZKG2.js → skill-commands-DNqJ-kwn.js} +9 -9
- package/dist/{skills-CE_iqvM5.js → skills-7ODkHQYp.js} +22 -22
- package/dist/slash-commands.runtime-CVw6566g.js +16 -0
- package/dist/slash-dispatch.runtime-B9Ygtzi4.js +56 -0
- package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +20 -0
- package/dist/{store--eR1R_UX.js → store-D89wDcz9.js} +2 -2
- package/dist/subagent-registry-runtime-DL1Wv7nA.js +56 -0
- package/dist/{subsystem-Di1z8l0Z.js → subsystem-B45WV3qB.js} +14 -14
- package/dist/{tables-d739Y1xW.js → tables-mE4cJBN2.js} +1 -1
- package/dist/{plugin-sdk/target-errors-Blia4S69.js → target-errors-mnlwhAjP.js} +2 -2
- package/dist/{thinking-DXYisHiZ.js → thinking-BeGmb5k6.js} +7 -7
- package/dist/{tokens-DxnY9ui_.js → tokens-q32vI39c.js} +1 -1
- package/dist/{tool-images-2cBx1W8h.js → tool-images-RZdHiZcG.js} +2 -2
- package/dist/{web-CzWRVmFt.js → web-Btj-e8kN.js} +55 -55
- package/dist/{whatsapp-actions-iEArE_Ez.js → whatsapp-actions-BHbJJyqw.js} +21 -21
- package/dist/{workspace-CUVC6GX1.js → workspace-U-DyR64O.js} +20 -20
- package/package.json +7 -5
- package/scripts/create-instance.sh +66 -27
- package/scripts/install-maca.sh +1 -1
- package/scripts/npm_publish.sh +5 -1
- package/ui/index.html +16 -0
- package/ui/node_modules/.bin/jiti +21 -0
- package/ui/node_modules/.bin/lessc +21 -0
- package/ui/node_modules/.bin/marked +21 -0
- package/ui/node_modules/.bin/playwright +21 -0
- package/ui/node_modules/.bin/sass +21 -0
- package/ui/node_modules/.bin/tsx +21 -0
- package/ui/node_modules/.bin/vite +21 -0
- package/ui/node_modules/.bin/vitest +21 -0
- package/ui/node_modules/.bin/yaml +21 -0
- package/ui/package.json +27 -0
- package/ui/public/apple-touch-icon.png +0 -0
- package/ui/public/favicon-32.png +0 -0
- package/ui/public/favicon.ico +0 -0
- package/ui/public/favicon.svg +22 -0
- package/ui/src/css.d.ts +1 -0
- package/ui/src/i18n/index.ts +3 -0
- package/ui/src/i18n/lib/lit-controller.ts +22 -0
- package/ui/src/i18n/lib/registry.ts +64 -0
- package/ui/src/i18n/lib/translate.ts +123 -0
- package/ui/src/i18n/lib/types.ts +9 -0
- package/ui/src/i18n/locales/de.ts +129 -0
- package/ui/src/i18n/locales/en.ts +337 -0
- package/ui/src/i18n/locales/pt-BR.ts +128 -0
- package/ui/src/i18n/locales/zh-CN.ts +330 -0
- package/ui/src/i18n/locales/zh-TW.ts +125 -0
- package/ui/src/i18n/test/translate.test.ts +56 -0
- package/ui/src/main.ts +2 -0
- package/ui/src/styles/base.css +385 -0
- package/ui/src/styles/chat/grouped.css +300 -0
- package/ui/src/styles/chat/layout.css +481 -0
- package/ui/src/styles/chat/sidebar.css +117 -0
- package/ui/src/styles/chat/text.css +146 -0
- package/ui/src/styles/chat/tool-cards.css +202 -0
- package/ui/src/styles/chat.css +5 -0
- package/ui/src/styles/components.css +2612 -0
- package/ui/src/styles/config.css +1658 -0
- package/ui/src/styles/layout.css +621 -0
- package/ui/src/styles/layout.mobile.css +374 -0
- package/ui/src/styles.css +5 -0
- package/ui/src/ui/__screenshots__/config-form.browser.test.ts/config-form-renderer-flags-unsupported-unions-1.png +0 -0
- package/ui/src/ui/__screenshots__/config-form.browser.test.ts/config-form-renderer-renders-inputs-and-patches-values-1.png +0 -0
- package/ui/src/ui/__screenshots__/config-form.browser.test.ts/config-form-renderer-renders-union-literals-as-select-options-1.png +0 -0
- package/ui/src/ui/__screenshots__/navigation.browser.test.ts/control-UI-routing-auto-scrolls-chat-history-to-the-latest-message-1.png +0 -0
- package/ui/src/ui/app-channels.ts +279 -0
- package/ui/src/ui/app-chat.ts +266 -0
- package/ui/src/ui/app-defaults.ts +50 -0
- package/ui/src/ui/app-events.ts +5 -0
- package/ui/src/ui/app-gateway.node.test.ts +229 -0
- package/ui/src/ui/app-gateway.ts +349 -0
- package/ui/src/ui/app-lifecycle.node.test.ts +44 -0
- package/ui/src/ui/app-lifecycle.ts +109 -0
- package/ui/src/ui/app-polling.ts +69 -0
- package/ui/src/ui/app-render-usage-tab.ts +273 -0
- package/ui/src/ui/app-render.helpers.node.test.ts +286 -0
- package/ui/src/ui/app-render.helpers.ts +574 -0
- package/ui/src/ui/app-render.ts +1168 -0
- package/ui/src/ui/app-scroll.test.ts +275 -0
- package/ui/src/ui/app-scroll.ts +179 -0
- package/ui/src/ui/app-settings.test.ts +70 -0
- package/ui/src/ui/app-settings.ts +440 -0
- package/ui/src/ui/app-tool-stream.node.test.ts +139 -0
- package/ui/src/ui/app-tool-stream.ts +455 -0
- package/ui/src/ui/app-view-state.ts +321 -0
- package/ui/src/ui/app.ts +621 -0
- package/ui/src/ui/assistant-identity.ts +23 -0
- package/ui/src/ui/chat/constants.ts +12 -0
- package/ui/src/ui/chat/copy-as-markdown.ts +97 -0
- package/ui/src/ui/chat/grouped-render.ts +287 -0
- package/ui/src/ui/chat/message-extract.test.ts +64 -0
- package/ui/src/ui/chat/message-extract.ts +122 -0
- package/ui/src/ui/chat/message-normalizer.test.ts +179 -0
- package/ui/src/ui/chat/message-normalizer.ts +101 -0
- package/ui/src/ui/chat/tool-cards.ts +156 -0
- package/ui/src/ui/chat/tool-helpers.test.ts +141 -0
- package/ui/src/ui/chat/tool-helpers.ts +37 -0
- package/ui/src/ui/chat-event-reload.test.ts +47 -0
- package/ui/src/ui/chat-event-reload.ts +16 -0
- package/ui/src/ui/chat-markdown.browser.test.ts +37 -0
- package/ui/src/ui/components/resizable-divider.ts +110 -0
- package/ui/src/ui/config-form.browser.test.ts +443 -0
- package/ui/src/ui/controllers/agent-files.ts +126 -0
- package/ui/src/ui/controllers/agent-identity.ts +59 -0
- package/ui/src/ui/controllers/agent-skills.ts +33 -0
- package/ui/src/ui/controllers/agents.test.ts +61 -0
- package/ui/src/ui/controllers/agents.ts +64 -0
- package/ui/src/ui/controllers/assistant-identity.ts +34 -0
- package/ui/src/ui/controllers/channels.ts +94 -0
- package/ui/src/ui/controllers/channels.types.ts +15 -0
- package/ui/src/ui/controllers/chat.test.ts +568 -0
- package/ui/src/ui/controllers/chat.ts +318 -0
- package/ui/src/ui/controllers/config/form-coerce.ts +160 -0
- package/ui/src/ui/controllers/config/form-utils.node.test.ts +455 -0
- package/ui/src/ui/controllers/config/form-utils.ts +90 -0
- package/ui/src/ui/controllers/config.test.ts +289 -0
- package/ui/src/ui/controllers/config.ts +219 -0
- package/ui/src/ui/controllers/control-ui-bootstrap.test.ts +82 -0
- package/ui/src/ui/controllers/control-ui-bootstrap.ts +49 -0
- package/ui/src/ui/controllers/cron-filters.test.ts +81 -0
- package/ui/src/ui/controllers/cron.test.ts +1070 -0
- package/ui/src/ui/controllers/cron.ts +921 -0
- package/ui/src/ui/controllers/debug.ts +60 -0
- package/ui/src/ui/controllers/devices.ts +159 -0
- package/ui/src/ui/controllers/exec-approval.ts +100 -0
- package/ui/src/ui/controllers/exec-approvals.ts +170 -0
- package/ui/src/ui/controllers/logs.ts +147 -0
- package/ui/src/ui/controllers/nodes.ts +32 -0
- package/ui/src/ui/controllers/presence.ts +37 -0
- package/ui/src/ui/controllers/sessions.test.ts +104 -0
- package/ui/src/ui/controllers/sessions.ts +127 -0
- package/ui/src/ui/controllers/skills.ts +157 -0
- package/ui/src/ui/controllers/usage.node.test.ts +181 -0
- package/ui/src/ui/controllers/usage.ts +315 -0
- package/ui/src/ui/data/moonshot-kimi-k2.ts +45 -0
- package/ui/src/ui/device-auth.ts +73 -0
- package/ui/src/ui/device-identity.ts +112 -0
- package/ui/src/ui/external-link.test.ts +18 -0
- package/ui/src/ui/external-link.ts +19 -0
- package/ui/src/ui/focus-mode.browser.test.ts +39 -0
- package/ui/src/ui/format.test.ts +101 -0
- package/ui/src/ui/format.ts +60 -0
- package/ui/src/ui/gateway.ts +360 -0
- package/ui/src/ui/icons.ts +256 -0
- package/ui/src/ui/markdown.test.ts +85 -0
- package/ui/src/ui/markdown.ts +139 -0
- package/ui/src/ui/navigation.browser.test.ts +188 -0
- package/ui/src/ui/navigation.test.ts +189 -0
- package/ui/src/ui/navigation.ts +165 -0
- package/ui/src/ui/open-external-url.test.ts +108 -0
- package/ui/src/ui/open-external-url.ts +73 -0
- package/ui/src/ui/presenter.ts +85 -0
- package/ui/src/ui/storage.node.test.ts +63 -0
- package/ui/src/ui/storage.ts +99 -0
- package/ui/src/ui/test-helpers/app-mount.ts +27 -0
- package/ui/src/ui/text-direction.test.ts +24 -0
- package/ui/src/ui/text-direction.ts +30 -0
- package/ui/src/ui/theme-transition.ts +109 -0
- package/ui/src/ui/theme.ts +16 -0
- package/ui/src/ui/tool-display.ts +159 -0
- package/ui/src/ui/types/chat-types.ts +44 -0
- package/ui/src/ui/types.ts +627 -0
- package/ui/src/ui/ui-types.ts +54 -0
- package/ui/src/ui/usage-helpers.node.test.ts +43 -0
- package/ui/src/ui/usage-helpers.ts +321 -0
- package/ui/src/ui/usage-types.ts +22 -0
- package/ui/src/ui/uuid.test.ts +41 -0
- package/ui/src/ui/uuid.ts +57 -0
- package/ui/src/ui/views/agents-panels-status-files.ts +461 -0
- package/ui/src/ui/views/agents-panels-tools-skills.browser.test.ts +102 -0
- package/ui/src/ui/views/agents-panels-tools-skills.ts +537 -0
- package/ui/src/ui/views/agents-utils.test.ts +100 -0
- package/ui/src/ui/views/agents-utils.ts +502 -0
- package/ui/src/ui/views/agents.ts +499 -0
- package/ui/src/ui/views/channel-config-extras.ts +49 -0
- package/ui/src/ui/views/channels.config.ts +155 -0
- package/ui/src/ui/views/channels.discord.ts +65 -0
- package/ui/src/ui/views/channels.googlechat.ts +79 -0
- package/ui/src/ui/views/channels.imessage.ts +65 -0
- package/ui/src/ui/views/channels.nostr-profile-form.ts +321 -0
- package/ui/src/ui/views/channels.nostr.ts +237 -0
- package/ui/src/ui/views/channels.shared.ts +38 -0
- package/ui/src/ui/views/channels.signal.ts +69 -0
- package/ui/src/ui/views/channels.slack.ts +65 -0
- package/ui/src/ui/views/channels.telegram.ts +120 -0
- package/ui/src/ui/views/channels.ts +325 -0
- package/ui/src/ui/views/channels.types.ts +62 -0
- package/ui/src/ui/views/channels.whatsapp.ts +118 -0
- package/ui/src/ui/views/chat-image-open.browser.test.ts +70 -0
- package/ui/src/ui/views/chat.test.ts +227 -0
- package/ui/src/ui/views/chat.ts +616 -0
- package/ui/src/ui/views/config-form.analyze.ts +267 -0
- package/ui/src/ui/views/config-form.node.ts +1073 -0
- package/ui/src/ui/views/config-form.render.ts +478 -0
- package/ui/src/ui/views/config-form.search.node.test.ts +69 -0
- package/ui/src/ui/views/config-form.shared.ts +96 -0
- package/ui/src/ui/views/config-form.ts +4 -0
- package/ui/src/ui/views/config-search.node.test.ts +50 -0
- package/ui/src/ui/views/config-search.ts +92 -0
- package/ui/src/ui/views/config.browser.test.ts +233 -0
- package/ui/src/ui/views/config.ts +820 -0
- package/ui/src/ui/views/cron.test.ts +741 -0
- package/ui/src/ui/views/cron.ts +1758 -0
- package/ui/src/ui/views/debug.ts +151 -0
- package/ui/src/ui/views/exec-approval.ts +89 -0
- package/ui/src/ui/views/gateway-url-confirmation.ts +40 -0
- package/ui/src/ui/views/instances.ts +89 -0
- package/ui/src/ui/views/logs.ts +155 -0
- package/ui/src/ui/views/markdown-sidebar.ts +40 -0
- package/ui/src/ui/views/nodes-exec-approvals.ts +617 -0
- package/ui/src/ui/views/nodes-shared.ts +67 -0
- package/ui/src/ui/views/nodes.ts +485 -0
- package/ui/src/ui/views/overview-hints.ts +16 -0
- package/ui/src/ui/views/overview.node.test.ts +39 -0
- package/ui/src/ui/views/overview.ts +361 -0
- package/ui/src/ui/views/sessions.test.ts +81 -0
- package/ui/src/ui/views/sessions.ts +321 -0
- package/ui/src/ui/views/skills-grouping.ts +40 -0
- package/ui/src/ui/views/skills-shared.ts +52 -0
- package/ui/src/ui/views/skills.ts +192 -0
- package/ui/src/ui/views/usage-metrics.ts +578 -0
- package/ui/src/ui/views/usage-query.ts +277 -0
- package/ui/src/ui/views/usage-render-details.test.ts +136 -0
- package/ui/src/ui/views/usage-render-details.ts +1083 -0
- package/ui/src/ui/views/usage-render-overview.ts +796 -0
- package/ui/src/ui/views/usage-styles/usageStyles-part1.ts +701 -0
- package/ui/src/ui/views/usage-styles/usageStyles-part2.ts +702 -0
- package/ui/src/ui/views/usage-styles/usageStyles-part3.ts +551 -0
- package/ui/src/ui/views/usage.ts +836 -0
- package/ui/src/ui/views/usageStyles.ts +5 -0
- package/ui/src/ui/views/usageTypes.ts +105 -0
- package/ui/vite.config.ts +43 -0
- package/ui/vitest.config.ts +15 -0
- package/ui/vitest.node.config.ts +10 -0
- package/dist/deliver-runtime-P-G3bPjW.js +0 -36
- package/dist/deps-send-discord.runtime-DnbhTFX9.js +0 -26
- package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +0 -25
- package/dist/deps-send-signal.runtime-CTcl388M.js +0 -24
- package/dist/deps-send-slack.runtime-CCqBz4Kg.js +0 -22
- package/dist/deps-send-telegram.runtime-DGSKTCpH.js +0 -27
- package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +0 -60
- package/dist/image-runtime-CVv2ra9J.js +0 -29
- package/dist/manager-runtime-BN6VevdC.js +0 -18
- package/dist/pi-model-discovery-BGgOlX8N.js +0 -134
- package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +0 -11
- package/dist/plugin-sdk/accounts-CJWOBzwB.js +0 -35
- package/dist/plugin-sdk/accounts-DP1-L-QS.js +0 -288
- package/dist/plugin-sdk/accounts-DZhWlEg3.js +0 -46
- package/dist/plugin-sdk/active-listener-B_sLJTXM.js +0 -50
- package/dist/plugin-sdk/api-key-rotation-BRE4X2tf.js +0 -181
- package/dist/plugin-sdk/audio-preflight-DGEUDxxR.js +0 -69
- package/dist/plugin-sdk/audio-transcription-runner-DkoPNPYt.js +0 -2176
- package/dist/plugin-sdk/audit-membership-runtime-DSBHHw7o.js +0 -58
- package/dist/plugin-sdk/channel-activity-F3d0yUwy.js +0 -94
- package/dist/plugin-sdk/channel-web-QF7EpjeP.js +0 -2256
- package/dist/plugin-sdk/chrome-BXoCyCkY.js +0 -2415
- package/dist/plugin-sdk/commands-registry-t7cXBTfN.js +0 -1125
- package/dist/plugin-sdk/config-BkEnz2Po.js +0 -17913
- package/dist/plugin-sdk/deliver-B6AG_l67.js +0 -1694
- package/dist/plugin-sdk/deliver-runtime-D585kJZc.js +0 -32
- package/dist/plugin-sdk/deps-send-discord.runtime-a_OKY2js.js +0 -23
- package/dist/plugin-sdk/deps-send-imessage.runtime-Baxy9TD4.js +0 -22
- package/dist/plugin-sdk/deps-send-signal.runtime-BwXoCrFl.js +0 -21
- package/dist/plugin-sdk/deps-send-slack.runtime-CLmKjgso.js +0 -19
- package/dist/plugin-sdk/deps-send-telegram.runtime-BKfdBKnZ.js +0 -24
- package/dist/plugin-sdk/deps-send-whatsapp.runtime-BOTwkbx_.js +0 -57
- package/dist/plugin-sdk/diagnostic-CsP-lEkI.js +0 -319
- package/dist/plugin-sdk/errors-DaiAM-yU.js +0 -54
- package/dist/plugin-sdk/fetch-guard-DETCcJzQ.js +0 -156
- package/dist/plugin-sdk/fs-safe-B8y811FR.js +0 -352
- package/dist/plugin-sdk/image-DjTEkYZE.js +0 -2310
- package/dist/plugin-sdk/image-ops-BSiMpAw4.js +0 -584
- package/dist/plugin-sdk/image-runtime-6xPp8m5a.js +0 -25
- package/dist/plugin-sdk/ir-DQ7_HbvK.js +0 -1296
- package/dist/plugin-sdk/local-roots-BUP4YBmR.js +0 -186
- package/dist/plugin-sdk/logger-CZY9KIoY.js +0 -1163
- package/dist/plugin-sdk/login-BxEKLlCo.js +0 -57
- package/dist/plugin-sdk/login-qr-BQIpMPr9.js +0 -320
- package/dist/plugin-sdk/manager-I6KbPihW.js +0 -3917
- package/dist/plugin-sdk/manager-runtime-CFfYYWIQ.js +0 -15
- package/dist/plugin-sdk/outbound-NS6UHnB6.js +0 -212
- package/dist/plugin-sdk/outbound-attachment-Dy6fyf6H.js +0 -19
- package/dist/plugin-sdk/path-alias-guards-DBjLbIX_.js +0 -43
- package/dist/plugin-sdk/paths-vTM3Lh3X.js +0 -166
- package/dist/plugin-sdk/pi-embedded-helpers-1R1gu7eX.js +0 -9627
- package/dist/plugin-sdk/pi-model-discovery-runtime-Do9o-dUd.js +0 -8
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-D4sFsIks.js +0 -354
- package/dist/plugin-sdk/plugins-DeBZB9l_.js +0 -864
- package/dist/plugin-sdk/proxy-fetch-ChxOhWF4.js +0 -38
- package/dist/plugin-sdk/pw-ai-DEOmCSSC.js +0 -1938
- package/dist/plugin-sdk/qmd-manager-HyYKoEch.js +0 -1448
- package/dist/plugin-sdk/query-expansion-CeyKUeDW.js +0 -1011
- package/dist/plugin-sdk/reply-DAo_Jt8K.js +0 -97916
- package/dist/plugin-sdk/resolve-outbound-target-B42qgQS9.js +0 -40
- package/dist/plugin-sdk/run-with-concurrency-Bt_ks0Qa.js +0 -1994
- package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6W989eF.js +0 -10
- package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-c_GDFy37.js +0 -19
- package/dist/plugin-sdk/send-CQpMudwO.js +0 -2587
- package/dist/plugin-sdk/send-DQHLzVyO.js +0 -414
- package/dist/plugin-sdk/send-DTB24bEF.js +0 -3135
- package/dist/plugin-sdk/send-DfHadjZ_.js +0 -503
- package/dist/plugin-sdk/send-XXlW2iny.js +0 -540
- package/dist/plugin-sdk/session-6TF6MyaC.js +0 -169
- package/dist/plugin-sdk/skill-commands-CkGeFUMl.js +0 -342
- package/dist/plugin-sdk/skills-CBkHBYPq.js +0 -1428
- package/dist/plugin-sdk/slash-commands.runtime-CxliuGaP.js +0 -13
- package/dist/plugin-sdk/slash-dispatch.runtime-DFaeYlJQ.js +0 -52
- package/dist/plugin-sdk/slash-skill-commands.runtime-0M0OLCxq.js +0 -16
- package/dist/plugin-sdk/ssrf-cFtplYtS.js +0 -202
- package/dist/plugin-sdk/store-5nyxY3WU.js +0 -81
- package/dist/plugin-sdk/subagent-registry-runtime-DCtmDwna.js +0 -52
- package/dist/plugin-sdk/tables-C47P4GTN.js +0 -55
- package/dist/plugin-sdk/thinking-Bo2eosVa.js +0 -1206
- package/dist/plugin-sdk/tokens-DgNRBwIg.js +0 -52
- package/dist/plugin-sdk/tool-images-Gk_-0y2N.js +0 -274
- package/dist/plugin-sdk/web-CVxZbXyH.js +0 -56
- package/dist/plugin-sdk/whatsapp-actions-Bw0H9g-n.js +0 -80
- package/dist/redact-ClbcYG1J.js +0 -319
- package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +0 -13
- package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +0 -22
- package/dist/slash-commands.runtime-Cpn2tYW4.js +0 -16
- package/dist/slash-dispatch.runtime-DoBAQBU5.js +0 -56
- package/dist/slash-skill-commands.runtime-DKMvvdDW.js +0 -20
- package/dist/subagent-registry-runtime-ppWS3tVu.js +0 -56
- package/dist/target-errors-CBI2Ga0y.js +0 -195
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { TranslationMap } from "../lib/types.ts";
|
|
2
|
+
|
|
3
|
+
export const pt_BR: TranslationMap = {
|
|
4
|
+
common: {
|
|
5
|
+
version: "Versão",
|
|
6
|
+
health: "Saúde",
|
|
7
|
+
ok: "OK",
|
|
8
|
+
offline: "Offline",
|
|
9
|
+
connect: "Conectar",
|
|
10
|
+
refresh: "Atualizar",
|
|
11
|
+
enabled: "Ativado",
|
|
12
|
+
disabled: "Desativado",
|
|
13
|
+
na: "n/a",
|
|
14
|
+
docs: "Docs",
|
|
15
|
+
resources: "Recursos",
|
|
16
|
+
},
|
|
17
|
+
nav: {
|
|
18
|
+
chat: "Chat",
|
|
19
|
+
control: "Controle",
|
|
20
|
+
agent: "Agente",
|
|
21
|
+
settings: "Configurações",
|
|
22
|
+
expand: "Expandir barra lateral",
|
|
23
|
+
collapse: "Recolher barra lateral",
|
|
24
|
+
},
|
|
25
|
+
tabs: {
|
|
26
|
+
agents: "Agentes",
|
|
27
|
+
overview: "Visão Geral",
|
|
28
|
+
channels: "Canais",
|
|
29
|
+
instances: "Instâncias",
|
|
30
|
+
sessions: "Sessões",
|
|
31
|
+
usage: "Uso",
|
|
32
|
+
cron: "Tarefas Cron",
|
|
33
|
+
skills: "Habilidades",
|
|
34
|
+
nodes: "Nós",
|
|
35
|
+
chat: "Chat",
|
|
36
|
+
config: "Config",
|
|
37
|
+
debug: "Debug",
|
|
38
|
+
logs: "Logs",
|
|
39
|
+
},
|
|
40
|
+
subtitles: {
|
|
41
|
+
agents: "Gerenciar espaços de trabalho, ferramentas e identidades de agentes.",
|
|
42
|
+
overview: "Status do gateway, pontos de entrada e leitura rápida de saúde.",
|
|
43
|
+
channels: "Gerenciar canais e configurações.",
|
|
44
|
+
instances: "Beacons de presença de clientes e nós conectados.",
|
|
45
|
+
sessions: "Inspecionar sessões ativas e ajustar padrões por sessão.",
|
|
46
|
+
usage: "Monitorar uso e custos da API.",
|
|
47
|
+
cron: "Agendar despertares e execuções recorrentes de agentes.",
|
|
48
|
+
skills: "Gerenciar disponibilidade de habilidades e injeção de chaves de API.",
|
|
49
|
+
nodes: "Dispositivos pareados, capacidades e exposição de comandos.",
|
|
50
|
+
chat: "Sessão de chat direta com o gateway para intervenções rápidas.",
|
|
51
|
+
config: "Editar ~/.openclaw/openclaw.json com segurança.",
|
|
52
|
+
debug: "Snapshots do gateway, eventos e chamadas RPC manuais.",
|
|
53
|
+
logs: "Acompanhamento ao vivo dos logs de arquivo do gateway.",
|
|
54
|
+
},
|
|
55
|
+
overview: {
|
|
56
|
+
access: {
|
|
57
|
+
title: "Acesso ao Gateway",
|
|
58
|
+
subtitle: "Onde o dashboard se conecta e como ele se autentica.",
|
|
59
|
+
wsUrl: "URL WebSocket",
|
|
60
|
+
token: "Token do Gateway",
|
|
61
|
+
password: "Senha (não armazenada)",
|
|
62
|
+
sessionKey: "Chave de Sessão Padrão",
|
|
63
|
+
language: "Idioma",
|
|
64
|
+
connectHint: "Clique em Conectar para aplicar as alterações de conexão.",
|
|
65
|
+
trustedProxy: "Autenticado por proxy confiável.",
|
|
66
|
+
},
|
|
67
|
+
snapshot: {
|
|
68
|
+
title: "Snapshot",
|
|
69
|
+
subtitle: "Informações mais recentes do handshake do gateway.",
|
|
70
|
+
status: "Status",
|
|
71
|
+
uptime: "Tempo de Atividade",
|
|
72
|
+
tickInterval: "Intervalo de Tick",
|
|
73
|
+
lastChannelsRefresh: "Última Atualização de Canais",
|
|
74
|
+
channelsHint: "Use Canais para vincular WhatsApp, Telegram, Discord, Signal ou iMessage.",
|
|
75
|
+
},
|
|
76
|
+
stats: {
|
|
77
|
+
instances: "Instâncias",
|
|
78
|
+
instancesHint: "Beacons de presença nos últimos 5 minutos.",
|
|
79
|
+
sessions: "Sessões",
|
|
80
|
+
sessionsHint: "Chaves de sessão recentes rastreadas pelo gateway.",
|
|
81
|
+
cron: "Cron",
|
|
82
|
+
cronNext: "Próximo despertar {time}",
|
|
83
|
+
},
|
|
84
|
+
notes: {
|
|
85
|
+
title: "Notas",
|
|
86
|
+
subtitle: "Lembretes rápidos para configurações de controle remoto.",
|
|
87
|
+
tailscaleTitle: "Tailscale serve",
|
|
88
|
+
tailscaleText:
|
|
89
|
+
"Prefira o modo serve para manter o gateway em loopback com autenticação tailnet.",
|
|
90
|
+
sessionTitle: "Higiene de sessão",
|
|
91
|
+
sessionText: "Use /new ou sessions.patch para redefinir o contexto.",
|
|
92
|
+
cronTitle: "Lembretes de Cron",
|
|
93
|
+
cronText: "Use sessões isoladas para execuções recorrentes.",
|
|
94
|
+
},
|
|
95
|
+
auth: {
|
|
96
|
+
required:
|
|
97
|
+
"Este gateway requer autenticação. Adicione um token ou senha e clique em Conectar.",
|
|
98
|
+
failed:
|
|
99
|
+
"Falha na autenticação. Recopie uma URL com token usando {command}, ou atualize o token e clique em Conectar.",
|
|
100
|
+
},
|
|
101
|
+
pairing: {
|
|
102
|
+
hint: "Este dispositivo precisa de aprovação de pareamento do host do gateway.",
|
|
103
|
+
mobileHint:
|
|
104
|
+
"No celular? Copie a URL completa (incluindo #token=...) executando openclaw dashboard --no-open no desktop.",
|
|
105
|
+
},
|
|
106
|
+
insecure: {
|
|
107
|
+
hint: "Esta página é HTTP, então o navegador bloqueia a identidade do dispositivo. Use HTTPS (Tailscale Serve) ou abra {url} no host do gateway.",
|
|
108
|
+
stayHttp: "Se você precisar permanecer em HTTP, defina {config} (apenas token).",
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
chat: {
|
|
112
|
+
disconnected: "Desconectado do gateway.",
|
|
113
|
+
refreshTitle: "Atualizar dados do chat",
|
|
114
|
+
thinkingToggle: "Alternar saída de pensamento/trabalho do assistente",
|
|
115
|
+
focusToggle: "Alternar modo de foco (ocultar barra lateral + cabeçalho da página)",
|
|
116
|
+
hideCronSessions: "Ocultar sessões de cron",
|
|
117
|
+
showCronSessions: "Mostrar sessões de cron",
|
|
118
|
+
showCronSessionsHidden: "Mostrar sessões de cron ({count} ocultas)",
|
|
119
|
+
onboardingDisabled: "Desativado durante a integração",
|
|
120
|
+
},
|
|
121
|
+
languages: {
|
|
122
|
+
en: "English",
|
|
123
|
+
zhCN: "简体中文 (Chinês Simplificado)",
|
|
124
|
+
zhTW: "繁體中文 (Chinês Tradicional)",
|
|
125
|
+
ptBR: "Português (Português Brasileiro)",
|
|
126
|
+
de: "Deutsch (Alemão)",
|
|
127
|
+
},
|
|
128
|
+
};
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import type { TranslationMap } from "../lib/types.ts";
|
|
2
|
+
|
|
3
|
+
export const zh_CN: TranslationMap = {
|
|
4
|
+
common: {
|
|
5
|
+
version: "版本",
|
|
6
|
+
health: "健康状况",
|
|
7
|
+
ok: "正常",
|
|
8
|
+
offline: "离线",
|
|
9
|
+
connect: "连接",
|
|
10
|
+
refresh: "刷新",
|
|
11
|
+
enabled: "已启用",
|
|
12
|
+
disabled: "已禁用",
|
|
13
|
+
na: "不适用",
|
|
14
|
+
docs: "文档",
|
|
15
|
+
resources: "资源",
|
|
16
|
+
},
|
|
17
|
+
nav: {
|
|
18
|
+
chat: "聊天",
|
|
19
|
+
control: "控制",
|
|
20
|
+
agent: "代理",
|
|
21
|
+
settings: "设置",
|
|
22
|
+
expand: "展开侧边栏",
|
|
23
|
+
collapse: "折叠侧边栏",
|
|
24
|
+
},
|
|
25
|
+
tabs: {
|
|
26
|
+
agents: "代理",
|
|
27
|
+
overview: "概览",
|
|
28
|
+
channels: "频道",
|
|
29
|
+
instances: "实例",
|
|
30
|
+
sessions: "会话",
|
|
31
|
+
usage: "使用情况",
|
|
32
|
+
cron: "定时任务",
|
|
33
|
+
skills: "技能",
|
|
34
|
+
nodes: "节点",
|
|
35
|
+
chat: "聊天",
|
|
36
|
+
config: "配置",
|
|
37
|
+
debug: "调试",
|
|
38
|
+
logs: "日志",
|
|
39
|
+
},
|
|
40
|
+
subtitles: {
|
|
41
|
+
agents: "管理代理工作区、工具和身份。",
|
|
42
|
+
overview: "网关状态、入口点和快速健康读取。",
|
|
43
|
+
channels: "管理频道和设置。",
|
|
44
|
+
instances: "来自已连接客户端和节点的在线信号。",
|
|
45
|
+
sessions: "检查活动会话并调整每个会话的默认设置。",
|
|
46
|
+
usage: "监控 API 使用情况和成本。",
|
|
47
|
+
cron: "安排唤醒和重复的代理运行。",
|
|
48
|
+
skills: "管理技能可用性和 API 密钥注入。",
|
|
49
|
+
nodes: "配对设备、功能和命令公开。",
|
|
50
|
+
chat: "用于快速干预的直接网关聊天会话。",
|
|
51
|
+
config: "安全地编辑 ~/.openclaw/openclaw.json。",
|
|
52
|
+
debug: "网关快照、事件和手动 RPC 调用。",
|
|
53
|
+
logs: "网关文件日志的实时追踪。",
|
|
54
|
+
},
|
|
55
|
+
overview: {
|
|
56
|
+
access: {
|
|
57
|
+
title: "网关访问",
|
|
58
|
+
subtitle: "仪表板连接的位置及其身份验证方式。",
|
|
59
|
+
wsUrl: "WebSocket URL",
|
|
60
|
+
token: "网关令牌",
|
|
61
|
+
password: "密码 (不存储)",
|
|
62
|
+
sessionKey: "默认会话密钥",
|
|
63
|
+
language: "语言",
|
|
64
|
+
connectHint: "点击连接以应用连接更改。",
|
|
65
|
+
trustedProxy: "通过受信任代理认证。",
|
|
66
|
+
},
|
|
67
|
+
snapshot: {
|
|
68
|
+
title: "快照",
|
|
69
|
+
subtitle: "最新的网关握手信息。",
|
|
70
|
+
status: "状态",
|
|
71
|
+
uptime: "运行时间",
|
|
72
|
+
tickInterval: "刻度间隔",
|
|
73
|
+
lastChannelsRefresh: "最后频道刷新",
|
|
74
|
+
channelsHint: "使用频道链接 WhatsApp、Telegram、Discord、Signal 或 iMessage。",
|
|
75
|
+
},
|
|
76
|
+
stats: {
|
|
77
|
+
instances: "实例",
|
|
78
|
+
instancesHint: "过去 5 分钟内的在线信号。",
|
|
79
|
+
sessions: "会话",
|
|
80
|
+
sessionsHint: "网关跟踪的最近会话密钥。",
|
|
81
|
+
cron: "定时任务",
|
|
82
|
+
cronNext: "下次唤醒 {time}",
|
|
83
|
+
},
|
|
84
|
+
notes: {
|
|
85
|
+
title: "备注",
|
|
86
|
+
subtitle: "远程控制设置的快速提醒。",
|
|
87
|
+
tailscaleTitle: "Tailscale serve",
|
|
88
|
+
tailscaleText: "首选 serve 模式以通过 tailnet 身份验证将网关保持在回环地址。",
|
|
89
|
+
sessionTitle: "会话清理",
|
|
90
|
+
sessionText: "使用 /new 或 sessions.patch 重置上下文。",
|
|
91
|
+
cronTitle: "定时任务提醒",
|
|
92
|
+
cronText: "为重复运行使用隔离的会话。",
|
|
93
|
+
},
|
|
94
|
+
auth: {
|
|
95
|
+
required: "此网关需要身份验证。添加令牌或密码,然后点击连接。",
|
|
96
|
+
failed: "身份验证失败。请使用 {command} 重新复制令牌化 URL,或更新令牌,然后点击连接。",
|
|
97
|
+
},
|
|
98
|
+
pairing: {
|
|
99
|
+
hint: "此设备需要网关主机的配对批准。",
|
|
100
|
+
mobileHint:
|
|
101
|
+
"在手机上?从桌面运行 openclaw dashboard --no-open 复制完整 URL(包括 #token=...)。",
|
|
102
|
+
},
|
|
103
|
+
insecure: {
|
|
104
|
+
hint: "此页面为 HTTP,因此浏览器阻止设备标识。请使用 HTTPS (Tailscale Serve) 或在网关主机上打开 {url}。",
|
|
105
|
+
stayHttp: "如果您必须保持 HTTP,请设置 {config} (仅限令牌)。",
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
chat: {
|
|
109
|
+
disconnected: "已断开与网关的连接。",
|
|
110
|
+
refreshTitle: "刷新聊天数据",
|
|
111
|
+
thinkingToggle: "切换助手思考/工作输出",
|
|
112
|
+
focusToggle: "切换专注模式 (隐藏侧边栏 + 页面页眉)",
|
|
113
|
+
hideCronSessions: "隐藏定时任务会话",
|
|
114
|
+
showCronSessions: "显示定时任务会话",
|
|
115
|
+
showCronSessionsHidden: "显示定时任务会话 (已隐藏 {count} 个)",
|
|
116
|
+
onboardingDisabled: "引导期间禁用",
|
|
117
|
+
},
|
|
118
|
+
languages: {
|
|
119
|
+
en: "English",
|
|
120
|
+
zhCN: "简体中文 (简体中文)",
|
|
121
|
+
zhTW: "繁體中文 (繁体中文)",
|
|
122
|
+
ptBR: "Português (巴西葡萄牙语)",
|
|
123
|
+
de: "Deutsch (德语)",
|
|
124
|
+
},
|
|
125
|
+
cron: {
|
|
126
|
+
summary: {
|
|
127
|
+
enabled: "已启用",
|
|
128
|
+
yes: "是",
|
|
129
|
+
no: "否",
|
|
130
|
+
jobs: "任务数",
|
|
131
|
+
nextWake: "下次唤醒",
|
|
132
|
+
refreshing: "刷新中...",
|
|
133
|
+
refresh: "刷新",
|
|
134
|
+
},
|
|
135
|
+
jobs: {
|
|
136
|
+
title: "任务列表",
|
|
137
|
+
subtitle: "网关中存储的所有定时任务。",
|
|
138
|
+
shownOf: "显示 {shown} / 共 {total}",
|
|
139
|
+
searchJobs: "搜索任务",
|
|
140
|
+
searchPlaceholder: "名称、描述或代理",
|
|
141
|
+
enabled: "启用状态",
|
|
142
|
+
all: "全部",
|
|
143
|
+
sort: "排序",
|
|
144
|
+
nextRun: "下次运行",
|
|
145
|
+
recentlyUpdated: "最近更新",
|
|
146
|
+
name: "名称",
|
|
147
|
+
direction: "方向",
|
|
148
|
+
ascending: "升序",
|
|
149
|
+
descending: "降序",
|
|
150
|
+
noMatching: "没有匹配的任务。",
|
|
151
|
+
loading: "加载中...",
|
|
152
|
+
loadMore: "加载更多任务",
|
|
153
|
+
},
|
|
154
|
+
runs: {
|
|
155
|
+
title: "运行历史",
|
|
156
|
+
subtitleAll: "所有任务的最新运行记录。",
|
|
157
|
+
subtitleJob: "{title} 的最新运行记录。",
|
|
158
|
+
scope: "范围",
|
|
159
|
+
allJobs: "所有任务",
|
|
160
|
+
selectedJob: "已选任务",
|
|
161
|
+
searchRuns: "搜索运行",
|
|
162
|
+
searchPlaceholder: "摘要、错误或任务",
|
|
163
|
+
newestFirst: "最新优先",
|
|
164
|
+
oldestFirst: "最早优先",
|
|
165
|
+
status: "状态",
|
|
166
|
+
delivery: "投递",
|
|
167
|
+
clear: "清除",
|
|
168
|
+
allStatuses: "全部状态",
|
|
169
|
+
allDelivery: "全部投递",
|
|
170
|
+
selectJobHint: "请选择一个任务以查看运行历史。",
|
|
171
|
+
noMatching: "没有匹配的运行记录。",
|
|
172
|
+
loadMore: "加载更多运行",
|
|
173
|
+
runStatusOk: "成功",
|
|
174
|
+
runStatusError: "错误",
|
|
175
|
+
runStatusSkipped: "已跳过",
|
|
176
|
+
runStatusUnknown: "未知",
|
|
177
|
+
deliveryDelivered: "已投递",
|
|
178
|
+
deliveryNotDelivered: "未投递",
|
|
179
|
+
deliveryUnknown: "未知",
|
|
180
|
+
deliveryNotRequested: "未请求",
|
|
181
|
+
},
|
|
182
|
+
form: {
|
|
183
|
+
editJob: "编辑任务",
|
|
184
|
+
newJob: "新建任务",
|
|
185
|
+
updateSubtitle: "更新所选定时任务。",
|
|
186
|
+
createSubtitle: "创建定时唤醒或代理运行。",
|
|
187
|
+
required: "必填",
|
|
188
|
+
requiredSr: "必填",
|
|
189
|
+
basics: "基本信息",
|
|
190
|
+
basicsSub: "命名、选择助手并设置启用状态。",
|
|
191
|
+
fieldName: "名称",
|
|
192
|
+
description: "描述",
|
|
193
|
+
agentId: "代理 ID",
|
|
194
|
+
namePlaceholder: "晨间简报",
|
|
195
|
+
descriptionPlaceholder: "此任务的可选说明",
|
|
196
|
+
agentPlaceholder: "main 或 ops",
|
|
197
|
+
agentHelp: "输入以选择已知代理,或输入自定义 ID。",
|
|
198
|
+
schedule: "调度",
|
|
199
|
+
scheduleSub: "控制任务运行时间。",
|
|
200
|
+
every: "每隔",
|
|
201
|
+
at: "指定时间",
|
|
202
|
+
cronOption: "Cron",
|
|
203
|
+
runAt: "运行时间",
|
|
204
|
+
unit: "单位",
|
|
205
|
+
minutes: "分钟",
|
|
206
|
+
hours: "小时",
|
|
207
|
+
days: "天",
|
|
208
|
+
expression: "表达式",
|
|
209
|
+
expressionPlaceholder: "0 7 * * *",
|
|
210
|
+
everyAmountPlaceholder: "30",
|
|
211
|
+
timezoneOptional: "时区(可选)",
|
|
212
|
+
timezonePlaceholder: "America/Los_Angeles",
|
|
213
|
+
timezoneHelp: "选择常用时区或输入有效的 IANA 时区。",
|
|
214
|
+
jitterHelp: "需要抖动?使用高级 → 抖动窗口 / 抖动单位。",
|
|
215
|
+
execution: "执行",
|
|
216
|
+
executionSub: "选择唤醒时机和任务执行内容。",
|
|
217
|
+
session: "会话",
|
|
218
|
+
main: "主会话",
|
|
219
|
+
isolated: "隔离会话",
|
|
220
|
+
sessionHelp: "主会话发布系统事件。隔离会话运行独立的代理轮次。",
|
|
221
|
+
wakeMode: "唤醒模式",
|
|
222
|
+
now: "立即",
|
|
223
|
+
nextHeartbeat: "下次心跳",
|
|
224
|
+
wakeModeHelp: "立即模式立即触发。下次心跳等待下一个周期。",
|
|
225
|
+
payloadKind: "执行内容",
|
|
226
|
+
systemEvent: "发布消息到主时间线",
|
|
227
|
+
agentTurn: "运行助手任务(隔离)",
|
|
228
|
+
systemEventHelp: "将文本发送到网关主时间线(适用于提醒/触发)。",
|
|
229
|
+
agentTurnHelp: "使用您的提示在独立会话中启动助手运行。",
|
|
230
|
+
timeoutSeconds: "超时(秒)",
|
|
231
|
+
timeoutPlaceholder: "可选,如 90",
|
|
232
|
+
timeoutHelp: "可选。留空以使用网关默认超时行为。",
|
|
233
|
+
mainTimelineMessage: "主时间线消息",
|
|
234
|
+
assistantTaskPrompt: "助手任务提示",
|
|
235
|
+
deliverySection: "投递",
|
|
236
|
+
deliverySub: "选择运行摘要的发送位置。",
|
|
237
|
+
resultDelivery: "结果投递",
|
|
238
|
+
announceDefault: "发布摘要(默认)",
|
|
239
|
+
webhookPost: "Webhook POST",
|
|
240
|
+
noneInternal: "无(仅内部)",
|
|
241
|
+
deliveryHelp: "发布将摘要发送到聊天。无保持执行仅内部。",
|
|
242
|
+
webhookUrl: "Webhook URL",
|
|
243
|
+
channel: "频道",
|
|
244
|
+
webhookPlaceholder: "https://example.com/cron",
|
|
245
|
+
channelHelp: "选择接收摘要的已连接频道。",
|
|
246
|
+
webhookHelp: "将运行摘要发送到 Webhook 端点。",
|
|
247
|
+
to: "收件人",
|
|
248
|
+
toPlaceholder: "+1555... 或聊天 ID",
|
|
249
|
+
toHelp: "可选收件人覆盖(聊天 ID、电话或用户 ID)。",
|
|
250
|
+
advanced: "高级",
|
|
251
|
+
advancedHelp: "投递保证、调度抖动和模型控制的可选覆盖。",
|
|
252
|
+
deleteAfterRun: "运行后删除",
|
|
253
|
+
deleteAfterRunHelp: "适用于应自动清理的一次性提醒。",
|
|
254
|
+
clearAgentOverride: "清除代理覆盖",
|
|
255
|
+
clearAgentHelp: "强制此任务使用网关默认助手。",
|
|
256
|
+
exactTiming: "精确时间(无抖动)",
|
|
257
|
+
exactTimingHelp: "在精确的 cron 边界运行,无分散。",
|
|
258
|
+
staggerWindow: "抖动窗口",
|
|
259
|
+
staggerUnit: "抖动单位",
|
|
260
|
+
staggerPlaceholder: "30",
|
|
261
|
+
seconds: "秒",
|
|
262
|
+
model: "模型",
|
|
263
|
+
modelPlaceholder: "openai/gpt-5.2",
|
|
264
|
+
modelHelp: "输入以选择已知模型,或输入自定义模型。",
|
|
265
|
+
thinking: "思考",
|
|
266
|
+
thinkingPlaceholder: "low",
|
|
267
|
+
thinkingHelp: "使用建议级别或输入提供商特定值。",
|
|
268
|
+
bestEffortDelivery: "尽力投递",
|
|
269
|
+
bestEffortHelp: "投递失败时不使任务失败。",
|
|
270
|
+
cantAddYet: "暂无法添加任务",
|
|
271
|
+
fillRequired: "填写下方必填项以启用提交。",
|
|
272
|
+
fixFields: "修复 {count} 个字段以继续。",
|
|
273
|
+
fixFieldsPlural: "修复 {count} 个字段以继续。",
|
|
274
|
+
saving: "保存中...",
|
|
275
|
+
saveChanges: "保存更改",
|
|
276
|
+
addJob: "添加任务",
|
|
277
|
+
cancel: "取消",
|
|
278
|
+
},
|
|
279
|
+
jobList: {
|
|
280
|
+
allJobs: "所有任务",
|
|
281
|
+
selectJob: "(选择任务)",
|
|
282
|
+
enabled: "已启用",
|
|
283
|
+
disabled: "已禁用",
|
|
284
|
+
edit: "编辑",
|
|
285
|
+
clone: "克隆",
|
|
286
|
+
disable: "禁用",
|
|
287
|
+
enable: "启用",
|
|
288
|
+
run: "运行",
|
|
289
|
+
history: "历史",
|
|
290
|
+
remove: "删除",
|
|
291
|
+
},
|
|
292
|
+
jobDetail: {
|
|
293
|
+
system: "系统",
|
|
294
|
+
prompt: "提示",
|
|
295
|
+
delivery: "投递",
|
|
296
|
+
agent: "代理",
|
|
297
|
+
},
|
|
298
|
+
jobState: {
|
|
299
|
+
status: "状态",
|
|
300
|
+
next: "下次",
|
|
301
|
+
last: "上次",
|
|
302
|
+
},
|
|
303
|
+
runEntry: {
|
|
304
|
+
noSummary: "无摘要。",
|
|
305
|
+
runAt: "运行于",
|
|
306
|
+
openRunChat: "打开运行聊天",
|
|
307
|
+
next: "下次 {rel}",
|
|
308
|
+
due: "到期 {rel}",
|
|
309
|
+
},
|
|
310
|
+
errors: {
|
|
311
|
+
nameRequired: "名称为必填项。",
|
|
312
|
+
scheduleAtInvalid: "请输入有效的日期/时间。",
|
|
313
|
+
everyAmountInvalid: "间隔必须大于 0。",
|
|
314
|
+
cronExprRequired: "Cron 表达式为必填项。",
|
|
315
|
+
staggerAmountInvalid: "抖动值必须大于 0。",
|
|
316
|
+
systemTextRequired: "系统文本为必填项。",
|
|
317
|
+
agentMessageRequired: "代理消息为必填项。",
|
|
318
|
+
timeoutInvalid: "若设置超时,必须大于 0 秒。",
|
|
319
|
+
webhookUrlRequired: "Webhook URL 为必填项。",
|
|
320
|
+
webhookUrlInvalid: "Webhook URL 必须以 http:// 或 https:// 开头。",
|
|
321
|
+
invalidRunTime: "无效的运行时间。",
|
|
322
|
+
invalidIntervalAmount: "无效的间隔值。",
|
|
323
|
+
cronExprRequiredShort: "Cron 表达式为必填。",
|
|
324
|
+
invalidStaggerAmount: "无效的抖动值。",
|
|
325
|
+
systemEventTextRequired: "系统事件文本为必填。",
|
|
326
|
+
agentMessageRequiredShort: "代理消息为必填。",
|
|
327
|
+
nameRequiredShort: "名称为必填。",
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { TranslationMap } from "../lib/types.ts";
|
|
2
|
+
|
|
3
|
+
export const zh_TW: TranslationMap = {
|
|
4
|
+
common: {
|
|
5
|
+
version: "版本",
|
|
6
|
+
health: "健康狀況",
|
|
7
|
+
ok: "正常",
|
|
8
|
+
offline: "離線",
|
|
9
|
+
connect: "連接",
|
|
10
|
+
refresh: "刷新",
|
|
11
|
+
enabled: "已啟用",
|
|
12
|
+
disabled: "已禁用",
|
|
13
|
+
na: "不適用",
|
|
14
|
+
docs: "文檔",
|
|
15
|
+
resources: "資源",
|
|
16
|
+
},
|
|
17
|
+
nav: {
|
|
18
|
+
chat: "聊天",
|
|
19
|
+
control: "控制",
|
|
20
|
+
agent: "代理",
|
|
21
|
+
settings: "設置",
|
|
22
|
+
expand: "展開側邊欄",
|
|
23
|
+
collapse: "折疊側邊欄",
|
|
24
|
+
},
|
|
25
|
+
tabs: {
|
|
26
|
+
agents: "代理",
|
|
27
|
+
overview: "概覽",
|
|
28
|
+
channels: "頻道",
|
|
29
|
+
instances: "實例",
|
|
30
|
+
sessions: "會話",
|
|
31
|
+
usage: "使用情況",
|
|
32
|
+
cron: "定時任務",
|
|
33
|
+
skills: "技能",
|
|
34
|
+
nodes: "節點",
|
|
35
|
+
chat: "聊天",
|
|
36
|
+
config: "配置",
|
|
37
|
+
debug: "調試",
|
|
38
|
+
logs: "日誌",
|
|
39
|
+
},
|
|
40
|
+
subtitles: {
|
|
41
|
+
agents: "管理代理工作區、工具和身份。",
|
|
42
|
+
overview: "網關狀態、入口點和快速健康讀取。",
|
|
43
|
+
channels: "管理頻道和設置。",
|
|
44
|
+
instances: "來自已連接客戶端和節點的在線信號。",
|
|
45
|
+
sessions: "檢查活動會話並調整每個會話的默認設置。",
|
|
46
|
+
usage: "監控 API 使用情況和成本。",
|
|
47
|
+
cron: "安排喚醒和重複的代理運行。",
|
|
48
|
+
skills: "管理技能可用性和 API 密鑰注入。",
|
|
49
|
+
nodes: "配對設備、功能和命令公開。",
|
|
50
|
+
chat: "用於快速干預的直接網關聊天會話。",
|
|
51
|
+
config: "安全地編輯 ~/.openclaw/openclaw.json。",
|
|
52
|
+
debug: "網關快照、事件和手動 RPC 調用。",
|
|
53
|
+
logs: "網關文件日志的實時追蹤。",
|
|
54
|
+
},
|
|
55
|
+
overview: {
|
|
56
|
+
access: {
|
|
57
|
+
title: "網關訪問",
|
|
58
|
+
subtitle: "儀表板連接的位置及其身份驗證方式。",
|
|
59
|
+
wsUrl: "WebSocket URL",
|
|
60
|
+
token: "網關令牌",
|
|
61
|
+
password: "密碼 (不存儲)",
|
|
62
|
+
sessionKey: "默認會話密鑰",
|
|
63
|
+
language: "語言",
|
|
64
|
+
connectHint: "點擊連接以應用連接更改。",
|
|
65
|
+
trustedProxy: "通過受信任代理身份驗證。",
|
|
66
|
+
},
|
|
67
|
+
snapshot: {
|
|
68
|
+
title: "快照",
|
|
69
|
+
subtitle: "最新的網關握手信息。",
|
|
70
|
+
status: "狀態",
|
|
71
|
+
uptime: "運行時間",
|
|
72
|
+
tickInterval: "刻度間隔",
|
|
73
|
+
lastChannelsRefresh: "最後頻道刷新",
|
|
74
|
+
channelsHint: "使用頻道鏈接 WhatsApp、Telegram、Discord、Signal 或 iMessage。",
|
|
75
|
+
},
|
|
76
|
+
stats: {
|
|
77
|
+
instances: "實例",
|
|
78
|
+
instancesHint: "過去 5 分鐘內的在線信號。",
|
|
79
|
+
sessions: "會話",
|
|
80
|
+
sessionsHint: "網關跟蹤的最近會話密鑰。",
|
|
81
|
+
cron: "定時任務",
|
|
82
|
+
cronNext: "下次喚醒 {time}",
|
|
83
|
+
},
|
|
84
|
+
notes: {
|
|
85
|
+
title: "備註",
|
|
86
|
+
subtitle: "遠程控制設置的快速提醒。",
|
|
87
|
+
tailscaleTitle: "Tailscale serve",
|
|
88
|
+
tailscaleText: "首選 serve 模式以通過 tailnet 身份驗證將網關保持在回環地址。",
|
|
89
|
+
sessionTitle: "會話清理",
|
|
90
|
+
sessionText: "使用 /new 或 sessions.patch 重置上下文。",
|
|
91
|
+
cronTitle: "定時任務提醒",
|
|
92
|
+
cronText: "為重複運行使用隔離的會話。",
|
|
93
|
+
},
|
|
94
|
+
auth: {
|
|
95
|
+
required: "此網關需要身份驗證。添加令牌或密碼,然後點擊連接。",
|
|
96
|
+
failed: "身份驗證失敗。請使用 {command} 重新複製令牌化 URL,或更新令牌,然後點擊連接。",
|
|
97
|
+
},
|
|
98
|
+
pairing: {
|
|
99
|
+
hint: "此裝置需要閘道主機的配對批准。",
|
|
100
|
+
mobileHint:
|
|
101
|
+
"在手機上?從桌面執行 openclaw dashboard --no-open 複製完整 URL(包括 #token=...)。",
|
|
102
|
+
},
|
|
103
|
+
insecure: {
|
|
104
|
+
hint: "此頁面為 HTTP,因此瀏覽器阻止設備標識。請使用 HTTPS (Tailscale Serve) 或在網關主機上打開 {url}。",
|
|
105
|
+
stayHttp: "如果您必須保持 HTTP,請設置 {config} (僅限令牌)。",
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
chat: {
|
|
109
|
+
disconnected: "已斷開與網關的連接。",
|
|
110
|
+
refreshTitle: "刷新聊天數據",
|
|
111
|
+
thinkingToggle: "切換助手思考/工作輸出",
|
|
112
|
+
focusToggle: "切換專注模式 (隱藏側邊欄 + 頁面頁眉)",
|
|
113
|
+
hideCronSessions: "隱藏定時任務會話",
|
|
114
|
+
showCronSessions: "顯示定時任務會話",
|
|
115
|
+
showCronSessionsHidden: "顯示定時任務會話 (已隱藏 {count} 個)",
|
|
116
|
+
onboardingDisabled: "引導期間禁用",
|
|
117
|
+
},
|
|
118
|
+
languages: {
|
|
119
|
+
en: "English",
|
|
120
|
+
zhCN: "简体中文 (簡體中文)",
|
|
121
|
+
zhTW: "繁體中文 (繁體中文)",
|
|
122
|
+
ptBR: "Português (巴西葡萄牙語)",
|
|
123
|
+
de: "Deutsch (德語)",
|
|
124
|
+
},
|
|
125
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from "vitest";
|
|
2
|
+
import { i18n, t } from "../lib/translate.ts";
|
|
3
|
+
|
|
4
|
+
describe("i18n", () => {
|
|
5
|
+
beforeEach(async () => {
|
|
6
|
+
localStorage.clear();
|
|
7
|
+
// Reset to English
|
|
8
|
+
await i18n.setLocale("en");
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it("should return the key if translation is missing", () => {
|
|
12
|
+
expect(t("non.existent.key")).toBe("non.existent.key");
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("should return the correct English translation", () => {
|
|
16
|
+
expect(t("common.health")).toBe("Health");
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("should replace parameters correctly", () => {
|
|
20
|
+
expect(t("overview.stats.cronNext", { time: "10:00" })).toBe("Next wake 10:00");
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("should fallback to English if key is missing in another locale", async () => {
|
|
24
|
+
// We haven't registered other locales in the test environment yet,
|
|
25
|
+
// but the logic should fallback to 'en' map which is always there.
|
|
26
|
+
await i18n.setLocale("zh-CN");
|
|
27
|
+
// Since we don't mock the import, it might fail to load zh-CN,
|
|
28
|
+
// but let's assume it falls back to English for now.
|
|
29
|
+
expect(t("common.health")).toBeDefined();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("loads translations even when setting the same locale again", async () => {
|
|
33
|
+
const internal = i18n as unknown as {
|
|
34
|
+
locale: string;
|
|
35
|
+
translations: Record<string, unknown>;
|
|
36
|
+
};
|
|
37
|
+
internal.locale = "zh-CN";
|
|
38
|
+
delete internal.translations["zh-CN"];
|
|
39
|
+
|
|
40
|
+
await i18n.setLocale("zh-CN");
|
|
41
|
+
expect(t("common.health")).toBe("健康状况");
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it("loads saved non-English locale on startup", async () => {
|
|
45
|
+
localStorage.setItem("openclaw.i18n.locale", "zh-CN");
|
|
46
|
+
vi.resetModules();
|
|
47
|
+
const fresh = await import("../lib/translate.ts");
|
|
48
|
+
|
|
49
|
+
for (let index = 0; index < 5 && fresh.i18n.getLocale() !== "zh-CN"; index += 1) {
|
|
50
|
+
await Promise.resolve();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
expect(fresh.i18n.getLocale()).toBe("zh-CN");
|
|
54
|
+
expect(fresh.t("common.health")).toBe("健康状况");
|
|
55
|
+
});
|
|
56
|
+
});
|
package/ui/src/main.ts
ADDED