@xopcai/xopc 0.0.149 → 0.0.151
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/README.md +10 -0
- package/README.zh-CN.md +10 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
- package/dist/extensions/demo-memory/src/index.js +0 -2
- package/dist/extensions/fal/src/image-generation-provider.js +0 -2
- package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
- package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
- package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
- package/dist/extensions/feishu/src/auth/pairing.js +0 -2
- package/dist/extensions/feishu/src/auth/paths.js +0 -2
- package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
- package/dist/extensions/feishu/src/format.js +0 -2
- package/dist/extensions/feishu/src/index.js +0 -2
- package/dist/extensions/feishu/src/outbound/actions.js +0 -2
- package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
- package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
- package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/feishu/src/plugin.js +0 -2
- package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
- package/dist/extensions/feishu/src/state/accounts.js +0 -2
- package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
- package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
- package/dist/extensions/feishu/src/status/doctor.js +0 -2
- package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
- package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
- package/dist/extensions/feishu/src/tools/tools.js +0 -2
- package/dist/extensions/feishu/src/transport/client/client.js +2 -4
- package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
- package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
- package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
- package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
- package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
- package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
- package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
- package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
- package/dist/extensions/feishu/src/workflow-progress.js +0 -2
- package/dist/extensions/google/src/image-generation-provider.js +0 -2
- package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
- package/dist/extensions/openai/src/image-generation-provider.js +0 -2
- package/dist/extensions/telegram/src/access-control.js +0 -2
- package/dist/extensions/telegram/src/account-manager.js +0 -2
- package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
- package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
- package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
- package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
- package/dist/extensions/telegram/src/adapters/index.js +0 -2
- package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
- package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
- package/dist/extensions/telegram/src/api-root.js +0 -2
- package/dist/extensions/telegram/src/approval-delivery.js +0 -2
- package/dist/extensions/telegram/src/approval-store.js +0 -2
- package/dist/extensions/telegram/src/caption.js +0 -2
- package/dist/extensions/telegram/src/command-handler.js +0 -2
- package/dist/extensions/telegram/src/config-schema.js +0 -2
- package/dist/extensions/telegram/src/conversation-id.js +0 -2
- package/dist/extensions/telegram/src/dedupe.js +0 -2
- package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
- package/dist/extensions/telegram/src/doctor.js +0 -2
- package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
- package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
- package/dist/extensions/telegram/src/draft-stream.js +0 -2
- package/dist/extensions/telegram/src/errors.js +0 -2
- package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
- package/dist/extensions/telegram/src/exec-approvals.js +0 -2
- package/dist/extensions/telegram/src/focus-handler.js +0 -2
- package/dist/extensions/telegram/src/format.js +0 -2
- package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
- package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
- package/dist/extensions/telegram/src/inbound-processor.js +0 -2
- package/dist/extensions/telegram/src/index.js +0 -2
- package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
- package/dist/extensions/telegram/src/network-errors.js +0 -2
- package/dist/extensions/telegram/src/outbound-sender.js +0 -2
- package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
- package/dist/extensions/telegram/src/plugin.js +0 -2
- package/dist/extensions/telegram/src/polling-session.js +0 -2
- package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
- package/dist/extensions/telegram/src/reactions.js +0 -2
- package/dist/extensions/telegram/src/reply-params.js +0 -2
- package/dist/extensions/telegram/src/routing-integration.js +0 -2
- package/dist/extensions/telegram/src/send-options.js +0 -2
- package/dist/extensions/telegram/src/sent-cache.js +0 -2
- package/dist/extensions/telegram/src/startup-errors.js +0 -2
- package/dist/extensions/telegram/src/telegram-actions.js +0 -2
- package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
- package/dist/extensions/telegram/src/thread-bindings.js +0 -2
- package/dist/extensions/telegram/src/timeout-abort.js +0 -2
- package/dist/extensions/telegram/src/token-resolver.js +0 -2
- package/dist/extensions/telegram/src/update-offset-store.js +0 -2
- package/dist/extensions/telegram/src/workflow-progress.js +0 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/weixin/src/api/api.js +0 -2
- package/dist/extensions/weixin/src/api/config-cache.js +0 -2
- package/dist/extensions/weixin/src/api/session-guard.js +0 -2
- package/dist/extensions/weixin/src/api/types.js +0 -2
- package/dist/extensions/weixin/src/auth/accounts.js +0 -2
- package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
- package/dist/extensions/weixin/src/auth/pairing.js +0 -2
- package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
- package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
- package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
- package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
- package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
- package/dist/extensions/weixin/src/cdn/upload.js +0 -2
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
- package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
- package/dist/extensions/weixin/src/config-schema.js +0 -2
- package/dist/extensions/weixin/src/config-surface.js +0 -2
- package/dist/extensions/weixin/src/delivery-to.js +0 -2
- package/dist/extensions/weixin/src/index.js +0 -2
- package/dist/extensions/weixin/src/media/data-url.js +0 -2
- package/dist/extensions/weixin/src/media/media-download.js +0 -2
- package/dist/extensions/weixin/src/media/mime.js +0 -2
- package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
- package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
- package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
- package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
- package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
- package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
- package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
- package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
- package/dist/extensions/weixin/src/messaging/send.js +0 -2
- package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
- package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
- package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
- package/dist/extensions/weixin/src/outbound-send.js +0 -2
- package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/weixin/src/plugin.js +0 -2
- package/dist/extensions/weixin/src/routing-integration.js +0 -2
- package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
- package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
- package/dist/extensions/weixin/src/util/logger.js +0 -2
- package/dist/extensions/weixin/src/util/random.js +0 -2
- package/dist/extensions/weixin/src/util/redact.js +0 -2
- package/dist/extensions/weixin/src/workflow-progress.js +0 -2
- package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-uu1xu9Pl.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
- package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
- package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
- package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
- package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
- package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
- package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
- package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
- package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
- package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
- package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
- package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
- package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
- package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
- package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
- package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
- package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
- package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
- package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
- package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
- package/dist/gateway/static/root/favicon.svg +1 -187
- package/dist/gateway/static/root/index.html +8 -7
- package/dist/gateway/static/root/logo-dark.svg +1 -185
- package/dist/gateway/static/root/logo.svg +1 -185
- package/dist/package.js +1 -3
- package/dist/src/activity/context.js +0 -2
- package/dist/src/activity/emitter.js +0 -2
- package/dist/src/activity/service.js +0 -2
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +1 -2
- package/dist/src/agent/agent-scope.js +0 -2
- package/dist/src/agent/background-review/coordinator.js +0 -2
- package/dist/src/agent/background-review/prompts.js +0 -2
- package/dist/src/agent/background-review/run-background-review.js +0 -2
- package/dist/src/agent/background-review/settings.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
- package/dist/src/agent/capabilities/definitions.js +0 -2
- package/dist/src/agent/capabilities/registry.js +0 -2
- package/dist/src/agent/child-agent-factory.js +0 -2
- package/dist/src/agent/client-error-format.js +0 -2
- package/dist/src/agent/code-intelligence/binary.js +0 -2
- package/dist/src/agent/code-intelligence/runtime.js +0 -2
- package/dist/src/agent/code-intelligence/tools.js +0 -2
- package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
- package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
- package/dist/src/agent/context/project-context.js +0 -2
- package/dist/src/agent/context/workspace-seed.js +0 -2
- package/dist/src/agent/context/workspace-state.js +0 -2
- package/dist/src/agent/context/workspace.js +0 -2
- package/dist/src/agent/embedded/run-for-session.js +0 -2
- package/dist/src/agent/embedded/run-turn.js +0 -2
- package/dist/src/agent/embedded/runs.js +0 -2
- package/dist/src/agent/embedded/session-manager-init.js +0 -2
- package/dist/src/agent/embedded/session-runner.js +0 -2
- package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
- package/dist/src/agent/embedded/subscribe-session.js +0 -2
- package/dist/src/agent/embedded/system-prompt-override.js +0 -2
- package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
- package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
- package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
- package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
- package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
- package/dist/src/agent/failover-error.js +0 -2
- package/dist/src/agent/fallback/candidates.js +0 -2
- package/dist/src/agent/fallback/reason.js +0 -2
- package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
- package/dist/src/agent/goals/checklist-judge.js +0 -2
- package/dist/src/agent/goals/checklist-types.js +0 -2
- package/dist/src/agent/goals/evaluate-turn.js +0 -2
- package/dist/src/agent/goals/goal-locale.js +0 -2
- package/dist/src/agent/goals/judge.js +0 -2
- package/dist/src/agent/goals/persistent-goal-service.js +0 -2
- package/dist/src/agent/goals/post-turn.js +0 -2
- package/dist/src/agent/goals/state.js +0 -2
- package/dist/src/agent/image/generation/bundled-registry.js +0 -2
- package/dist/src/agent/image/generation/bundled.js +0 -2
- package/dist/src/agent/image/generation/image-assets.js +0 -2
- package/dist/src/agent/image/generation/model-ref.js +0 -2
- package/dist/src/agent/image/generation/normalization.js +0 -2
- package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
- package/dist/src/agent/image/generation/provider-registry.js +0 -2
- package/dist/src/agent/image/generation/runtime.js +0 -2
- package/dist/src/agent/image/image-helpers.js +0 -2
- package/dist/src/agent/image/image-model-fallback.js +0 -2
- package/dist/src/agent/image/inbound-image-handling.js +0 -2
- package/dist/src/agent/image/load-image-media.js +0 -2
- package/dist/src/agent/image/tool-model-config.js +0 -2
- package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
- package/dist/src/agent/image/understanding/provider-registry.js +0 -2
- package/dist/src/agent/image/understanding/runtime.js +0 -2
- package/dist/src/agent/image/vision-detection.js +0 -2
- package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
- package/dist/src/agent/inbound/inbound-loop.js +0 -2
- package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
- package/dist/src/agent/ipc/bus.js +0 -2
- package/dist/src/agent/ipc/inbox.js +0 -2
- package/dist/src/agent/ipc/socket.js +0 -2
- package/dist/src/agent/ipc/types.js +0 -2
- package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
- package/dist/src/agent/lifecycle/hook-handler.js +0 -2
- package/dist/src/agent/lifecycle/manager.js +0 -2
- package/dist/src/agent/lifecycle/progress.js +0 -2
- package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
- package/dist/src/agent/lifecycle/typing.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
- package/dist/src/agent/mcp/embedded-mcp.js +0 -2
- package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
- package/dist/src/agent/mcp/mcp-http.js +0 -2
- package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
- package/dist/src/agent/mcp/mcp-stdio.js +0 -2
- package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
- package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
- package/dist/src/agent/mcp/mcp-transport.js +0 -2
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
- package/dist/src/agent/media-generation/model-ref.js +0 -2
- package/dist/src/agent/media-generation/normalization.types.js +0 -2
- package/dist/src/agent/media-generation/runtime-shared.js +0 -2
- package/dist/src/agent/memory/agent-message-access.js +0 -2
- package/dist/src/agent/memory/builtin-memory-store.js +0 -2
- package/dist/src/agent/memory/builtin-provider.js +0 -2
- package/dist/src/agent/memory/compaction.js +0 -2
- package/dist/src/agent/memory/context/planner.js +0 -2
- package/dist/src/agent/memory/context-fence.js +0 -2
- package/dist/src/agent/memory/create-memory-manager.js +0 -2
- package/dist/src/agent/memory/dreaming/config.js +0 -2
- package/dist/src/agent/memory/dreaming/constants.js +0 -2
- package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
- package/dist/src/agent/memory/dreaming/events.js +0 -2
- package/dist/src/agent/memory/dreaming/last-run.js +0 -2
- package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
- package/dist/src/agent/memory/dreaming/preview.js +0 -2
- package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
- package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
- package/dist/src/agent/memory/dreaming/scope.js +0 -2
- package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
- package/dist/src/agent/memory/dreaming/utils.js +0 -2
- package/dist/src/agent/memory/lifecycle.js +0 -2
- package/dist/src/agent/memory/manager.js +0 -2
- package/dist/src/agent/memory/memory-config.js +0 -2
- package/dist/src/agent/memory/message-sanitizer.js +0 -2
- package/dist/src/agent/memory/plugin-discovery.js +0 -2
- package/dist/src/agent/memory/sensitivity.js +0 -2
- package/dist/src/agent/memory/source-origin.js +0 -2
- package/dist/src/agent/memory/stub-memory-provider.js +0 -2
- package/dist/src/agent/memory/summary-generator.js +0 -2
- package/dist/src/agent/memory/understanding/correction.js +0 -2
- package/dist/src/agent/memory/understanding/quality.js +0 -2
- package/dist/src/agent/memory/understanding/service.js +0 -2
- package/dist/src/agent/memory/user-context-coordinator.js +0 -2
- package/dist/src/agent/memory/user-message-text.js +0 -2
- package/dist/src/agent/memory/window.js +0 -2
- package/dist/src/agent/messaging/command-handler.js +0 -2
- package/dist/src/agent/messaging/message-router.js +0 -2
- package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
- package/dist/src/agent/messaging/stream-manager.js +0 -2
- package/dist/src/agent/middleware/context.js +0 -2
- package/dist/src/agent/middleware/self-verify.js +0 -2
- package/dist/src/agent/models/manager.js +0 -2
- package/dist/src/agent/models/request-limiter.js +0 -2
- package/dist/src/agent/models/selection.js +0 -2
- package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
- package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
- package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
- package/dist/src/agent/orchestration/loop-guard.js +0 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
- package/dist/src/agent/prompt/cache-boundary.js +0 -2
- package/dist/src/agent/prompt/memory/index.js +0 -2
- package/dist/src/agent/prompt/safety.js +0 -2
- package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
- package/dist/src/agent/prompt/sections/behavior.js +0 -2
- package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
- package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
- package/dist/src/agent/prompt/sections/project-context.js +0 -2
- package/dist/src/agent/prompt/sections/tooling.js +0 -2
- package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
- package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
- package/dist/src/agent/prompt/subagent-context.js +0 -2
- package/dist/src/agent/prompt/system-prompt-params.js +0 -2
- package/dist/src/agent/prompt/system-prompt.js +0 -2
- package/dist/src/agent/prompt/system-reminder.js +0 -2
- package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
- package/dist/src/agent/reply/post-compaction-context.js +0 -2
- package/dist/src/agent/reply/startup-context.js +0 -2
- package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
- package/dist/src/agent/sandbox/command-validator.js +0 -2
- package/dist/src/agent/sandbox/exec-policy.js +0 -2
- package/dist/src/agent/sandbox/path-policy.js +0 -2
- package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
- package/dist/src/agent/sandbox/types.js +0 -2
- package/dist/src/agent/service/async-queue.js +0 -2
- package/dist/src/agent/service/btw-query.js +0 -2
- package/dist/src/agent/service/build-direct-message-content.js +0 -2
- package/dist/src/agent/service/direct-turn-helpers.js +0 -2
- package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
- package/dist/src/agent/service/process-direct-one-shot.js +0 -2
- package/dist/src/agent/service/process-direct-streaming.js +0 -2
- package/dist/src/agent/service/session-context-report.js +0 -2
- package/dist/src/agent/service/webchat-tts.js +0 -2
- package/dist/src/agent/service-inbound-utils.js +0 -2
- package/dist/src/agent/service.js +1 -2
- package/dist/src/agent/service.types.d.ts +2 -0
- package/dist/src/agent/session/session-config-service.js +0 -2
- package/dist/src/agent/session/session-context.js +0 -2
- package/dist/src/agent/session/session-hydrator.js +0 -2
- package/dist/src/agent/session/session-inspector.js +0 -2
- package/dist/src/agent/session/session-lifecycle.js +0 -2
- package/dist/src/agent/session/session-state-bag.js +0 -2
- package/dist/src/agent/session/tracker.js +0 -2
- package/dist/src/agent/skills/config.js +0 -2
- package/dist/src/agent/skills/filesystem-watcher.js +0 -2
- package/dist/src/agent/skills/format-skills-prompt.js +0 -2
- package/dist/src/agent/skills/hub-hash.js +0 -2
- package/dist/src/agent/skills/hub-lock.js +0 -2
- package/dist/src/agent/skills/hub-pull.js +0 -2
- package/dist/src/agent/skills/index.js +0 -2
- package/dist/src/agent/skills/install-target.js +0 -2
- package/dist/src/agent/skills/installer.js +0 -2
- package/dist/src/agent/skills/managed-store.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
- package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
- package/dist/src/agent/skills/marketplace/registry.js +0 -2
- package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
- package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
- package/dist/src/agent/skills/required-env-vars.js +0 -2
- package/dist/src/agent/skills/scanner.js +0 -2
- package/dist/src/agent/skills/skill-manage-ops.js +0 -2
- package/dist/src/agent/skills/skill-manager.js +0 -2
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
- package/dist/src/agent/skills/skill-tool-gating.js +0 -2
- package/dist/src/agent/skills/skill-view-path.js +0 -2
- package/dist/src/agent/skills/skills-marketplace.js +0 -2
- package/dist/src/agent/skills/test-framework.js +0 -2
- package/dist/src/agent/skills/watcher.js +0 -2
- package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
- package/dist/src/agent/source-context/injector.js +0 -2
- package/dist/src/agent/source-context/types.js +0 -2
- package/dist/src/agent/starter-agents.js +0 -2
- package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
- package/dist/src/agent/tool-manuals/browser.js +0 -2
- package/dist/src/agent/tool-manuals/index.js +0 -2
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
- package/dist/src/agent/tools/apply-patch.js +0 -2
- package/dist/src/agent/tools/automation-tool.js +45 -8
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
- package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
- package/dist/src/agent/tools/chain-tracker.js +0 -2
- package/dist/src/agent/tools/clarify-tool.js +0 -2
- package/dist/src/agent/tools/cli-clarify.js +0 -2
- package/dist/src/agent/tools/communication.js +0 -2
- package/dist/src/agent/tools/composio-tool.js +0 -2
- package/dist/src/agent/tools/concurrency.js +0 -2
- package/dist/src/agent/tools/create-share-tool.js +0 -2
- package/dist/src/agent/tools/curated-memory-tool.js +0 -2
- package/dist/src/agent/tools/delegate-tool.js +0 -2
- package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
- package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
- package/dist/src/agent/tools/dreaming-tool.js +0 -2
- package/dist/src/agent/tools/edit-diff.js +0 -2
- package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
- package/dist/src/agent/tools/error-tracker.js +0 -2
- package/dist/src/agent/tools/exec-command.js +0 -2
- package/dist/src/agent/tools/execute-code-tool.js +0 -2
- package/dist/src/agent/tools/executor.js +0 -2
- package/dist/src/agent/tools/factory.d.ts +2 -0
- package/dist/src/agent/tools/factory.js +3 -4
- package/dist/src/agent/tools/find.js +0 -2
- package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
- package/dist/src/agent/tools/goal-tool.d.ts +7 -1
- package/dist/src/agent/tools/goal-tool.js +34 -7
- package/dist/src/agent/tools/grep.js +0 -2
- package/dist/src/agent/tools/image-generate-tool.js +0 -2
- package/dist/src/agent/tools/image-tool.js +0 -2
- package/dist/src/agent/tools/list-dir.js +0 -2
- package/dist/src/agent/tools/media-read-tool.js +0 -2
- package/dist/src/agent/tools/memory-tool.js +0 -2
- package/dist/src/agent/tools/metadata.js +0 -2
- package/dist/src/agent/tools/read.js +0 -2
- package/dist/src/agent/tools/search/http.js +0 -2
- package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
- package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
- package/dist/src/agent/tools/search/providers/brave.js +0 -2
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
- package/dist/src/agent/tools/search/providers/searxng.js +0 -2
- package/dist/src/agent/tools/search/providers/tavily.js +0 -2
- package/dist/src/agent/tools/search/region.js +0 -2
- package/dist/src/agent/tools/search/registry.js +0 -2
- package/dist/src/agent/tools/search/resolve-config.js +0 -2
- package/dist/src/agent/tools/send-media.js +0 -2
- package/dist/src/agent/tools/session-search-tool.js +0 -2
- package/dist/src/agent/tools/session-status-tool.js +0 -2
- package/dist/src/agent/tools/skill-install-tool.js +0 -2
- package/dist/src/agent/tools/skill-manage-tool.js +0 -2
- package/dist/src/agent/tools/skills-tools.js +0 -2
- package/dist/src/agent/tools/structured-output.js +0 -2
- package/dist/src/agent/tools/todo-tool.js +0 -2
- package/dist/src/agent/tools/tool-manual-tool.js +0 -2
- package/dist/src/agent/tools/tool-paths.js +0 -2
- package/dist/src/agent/tools/truncate.js +0 -2
- package/dist/src/agent/tools/tts-tool.js +0 -2
- package/dist/src/agent/tools/update-plan-tool.js +0 -2
- package/dist/src/agent/tools/url-safety.js +0 -2
- package/dist/src/agent/tools/usage-analyzer.js +0 -2
- package/dist/src/agent/tools/web-extract.js +0 -2
- package/dist/src/agent/tools/web.js +4 -4
- package/dist/src/agent/tools/workflow-tool.js +32 -4
- package/dist/src/agent/tools/write.js +23 -5
- package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
- package/dist/src/agent/tools/xopc-use-tool.js +216 -8
- package/dist/src/agent/transcript/google-api.js +0 -2
- package/dist/src/agent/transcript/model-selection.js +0 -2
- package/dist/src/agent/transcript/provider-capabilities.js +0 -2
- package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
- package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
- package/dist/src/agent/transcript/thinking-types.js +0 -2
- package/dist/src/agent/transcript/thinking.js +0 -2
- package/dist/src/agent/transcript/tool-call-id.js +0 -2
- package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
- package/dist/src/agent/transcript/transcript-policy.js +0 -2
- package/dist/src/agent/workflow/agent-progress.js +0 -2
- package/dist/src/agent/workflow/builtins/index.js +0 -2
- package/dist/src/agent/workflow/catalog.js +0 -2
- package/dist/src/agent/workflow/progress-broker.js +0 -2
- package/dist/src/agent/workflow/snapshot-empty.js +0 -2
- package/dist/src/agent/workflow/snapshot.js +0 -2
- package/dist/src/agent/workflow/step-labels.js +0 -2
- package/dist/src/agent/workflow/structured-output-tool.js +0 -2
- package/dist/src/agent/workflow/subagent-runner.js +0 -2
- package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
- package/dist/src/agent/workspace-runtime/registry.js +0 -2
- package/dist/src/agent-manifest/index.js +0 -2
- package/dist/src/agent-manifest/preset-chain.js +0 -2
- package/dist/src/agent-manifest/prompt.js +0 -2
- package/dist/src/agent-manifest/resolver.js +0 -2
- package/dist/src/agent-manifest/schema.js +0 -2
- package/dist/src/agent-manifest/validator.js +0 -2
- package/dist/src/agent-runtime/boundary-guard.js +0 -2
- package/dist/src/agent-runtime/memory-runtime.js +0 -2
- package/dist/src/agent-runtime/model-router.js +0 -2
- package/dist/src/agent-runtime/run-trace.js +0 -2
- package/dist/src/agent-runtime/runtime-profile.js +0 -2
- package/dist/src/agent-runtime/tool-registry.js +0 -2
- package/dist/src/agent-runtime/workflow-runtime.js +0 -2
- package/dist/src/ai-assist/text-assist.js +0 -2
- package/dist/src/auth/credentials.js +0 -2
- package/dist/src/auth/index.js +0 -2
- package/dist/src/auth/oauth/anthropic.js +0 -2
- package/dist/src/auth/oauth/github-copilot.js +0 -2
- package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
- package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
- package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
- package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
- package/dist/src/auth/oauth/kimi-coding.js +0 -2
- package/dist/src/auth/oauth/minimax-cn.js +0 -2
- package/dist/src/auth/oauth/minimax.js +0 -2
- package/dist/src/auth/oauth/openai-codex.js +0 -2
- package/dist/src/auth/oauth/pkce.js +0 -2
- package/dist/src/auth/profiles/oauth.js +0 -2
- package/dist/src/auth/profiles/order.js +0 -2
- package/dist/src/auth/profiles/profiles.js +0 -2
- package/dist/src/auth/profiles/store.js +0 -2
- package/dist/src/auth/sync-provider-auth.js +0 -2
- package/dist/src/automations/api/routes.js +0 -2
- package/dist/src/automations/domain/schedule.js +0 -2
- package/dist/src/automations/domain/validation.js +0 -2
- package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
- package/dist/src/automations/draft/automation-draft-service.js +0 -2
- package/dist/src/automations/draft/automation-draft-validator.js +0 -2
- package/dist/src/automations/product-events.js +0 -2
- package/dist/src/automations/service/action-executor.js +0 -2
- package/dist/src/automations/service/automation-service.js +0 -2
- package/dist/src/automations/storage/automation-repository.js +0 -2
- package/dist/src/automations/storage/automation-run-repository.js +0 -2
- package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
- package/dist/src/browser/actions/registry.js +0 -2
- package/dist/src/browser/backend-from-config.js +0 -2
- package/dist/src/browser/browser-command-timeout.js +0 -2
- package/dist/src/browser/cache-dir-policy.js +0 -2
- package/dist/src/browser/cdp-local-launcher.js +0 -2
- package/dist/src/browser/cdp-supervisor.js +0 -2
- package/dist/src/browser/free-port.js +0 -2
- package/dist/src/browser/humanize.js +0 -2
- package/dist/src/browser/install-lock.js +0 -2
- package/dist/src/browser/manager.js +0 -2
- package/dist/src/browser/pipeline/output.js +0 -2
- package/dist/src/browser/pipeline/runner.js +0 -2
- package/dist/src/browser/pipeline/schema.js +0 -2
- package/dist/src/browser/pipeline/source.js +0 -2
- package/dist/src/browser/pipeline/template.js +0 -2
- package/dist/src/browser/providers/browser-ext-install.js +0 -2
- package/dist/src/browser/providers/browser-use.js +0 -2
- package/dist/src/browser/providers/browserbase.js +0 -2
- package/dist/src/browser/providers/cloakbrowser.js +0 -2
- package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
- package/dist/src/browser/providers/extension.js +0 -2
- package/dist/src/browser/providers/playwright-doctor.js +13 -4
- package/dist/src/browser/providers/playwright-install.js +0 -2
- package/dist/src/browser/readiness.js +0 -2
- package/dist/src/browser/schemas.js +0 -2
- package/dist/src/browser/session-lifecycle.js +0 -2
- package/dist/src/browser/snapshot-helpers.js +0 -2
- package/dist/src/browser/stealth.js +0 -2
- package/dist/src/browser/url-policy.js +0 -2
- package/dist/src/capabilities/store-connector.js +0 -2
- package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
- package/dist/src/channels/attachments/inbound-persist.js +0 -2
- package/dist/src/channels/attachments/inbound-types.js +0 -2
- package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
- package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
- package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
- package/dist/src/channels/config-helpers.js +0 -2
- package/dist/src/channels/envelope-timestamp.js +0 -2
- package/dist/src/channels/exec-approval-runtime.js +0 -2
- package/dist/src/channels/health-monitor.js +0 -2
- package/dist/src/channels/heartbeat-scheduler.js +0 -2
- package/dist/src/channels/internal-outbound.js +0 -2
- package/dist/src/channels/lifecycle-supervisor.js +0 -2
- package/dist/src/channels/manager.js +0 -2
- package/dist/src/channels/media.js +0 -2
- package/dist/src/channels/outbound/deliver.js +0 -2
- package/dist/src/channels/outbound/normalize.js +0 -2
- package/dist/src/channels/outbound/persist-store.js +0 -2
- package/dist/src/channels/outbound/queue.js +0 -2
- package/dist/src/channels/outbound-sender.js +0 -2
- package/dist/src/channels/pairing/allow-from-file.js +0 -2
- package/dist/src/channels/pairing/approve-cli.js +0 -2
- package/dist/src/channels/pairing/pairing-challenge.js +0 -2
- package/dist/src/channels/pairing/pairing-constants.js +0 -2
- package/dist/src/channels/pairing/pairing-events.js +0 -2
- package/dist/src/channels/pairing/pairing-messages.js +0 -2
- package/dist/src/channels/pairing/pairing-service.js +0 -2
- package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
- package/dist/src/channels/pairing/pairing-store.js +0 -2
- package/dist/src/channels/pairing/paths.js +0 -2
- package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
- package/dist/src/channels/pipeline.js +0 -2
- package/dist/src/channels/plugin-registry.js +0 -2
- package/dist/src/channels/plugins/registry.js +0 -2
- package/dist/src/channels/restart-policy.js +0 -2
- package/dist/src/channels/security-helpers.js +0 -2
- package/dist/src/channels/security.js +0 -2
- package/dist/src/channels/setup-wizard-discovery.js +0 -2
- package/dist/src/chat-commands/agent-edit.js +0 -2
- package/dist/src/chat-commands/builtins/config.js +0 -2
- package/dist/src/chat-commands/builtins/context.js +0 -2
- package/dist/src/chat-commands/builtins/goal.js +0 -2
- package/dist/src/chat-commands/builtins/model.js +0 -2
- package/dist/src/chat-commands/builtins/review.js +0 -2
- package/dist/src/chat-commands/builtins/session.js +0 -2
- package/dist/src/chat-commands/builtins/skill.js +0 -2
- package/dist/src/chat-commands/builtins/subgoal.js +0 -2
- package/dist/src/chat-commands/builtins/system.js +0 -2
- package/dist/src/chat-commands/builtins/thinking.js +0 -2
- package/dist/src/chat-commands/builtins/tts.js +0 -2
- package/dist/src/chat-commands/builtins/workflow.js +0 -2
- package/dist/src/chat-commands/command-parse.js +0 -2
- package/dist/src/chat-commands/config-paths.js +0 -2
- package/dist/src/chat-commands/config-value.js +0 -2
- package/dist/src/chat-commands/context.js +0 -2
- package/dist/src/chat-commands/format-output.js +0 -2
- package/dist/src/chat-commands/index.js +0 -2
- package/dist/src/chat-commands/processor.js +0 -2
- package/dist/src/chat-commands/registry.js +0 -2
- package/dist/src/chat-commands/session-key.js +0 -2
- package/dist/src/cli/argv-invocation.js +0 -2
- package/dist/src/cli/argv.js +0 -2
- package/dist/src/cli/bin.js +0 -2
- package/dist/src/cli/cli-log-level-preset.js +0 -2
- package/dist/src/cli/command-catalog.js +0 -2
- package/dist/src/cli/command-loaders.js +0 -2
- package/dist/src/cli/command-manifest.js +0 -2
- package/dist/src/cli/command-path-matches.js +0 -2
- package/dist/src/cli/command-path-policy.js +0 -2
- package/dist/src/cli/command-startup-policy.js +0 -2
- package/dist/src/cli/commands/agent/interactive.js +0 -2
- package/dist/src/cli/commands/agent/sessions.js +0 -2
- package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
- package/dist/src/cli/commands/agent.js +0 -2
- package/dist/src/cli/commands/agents.js +0 -2
- package/dist/src/cli/commands/auth.js +0 -2
- package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
- package/dist/src/cli/commands/browser.js +0 -2
- package/dist/src/cli/commands/channels.js +0 -2
- package/dist/src/cli/commands/config.js +0 -2
- package/dist/src/cli/commands/connectors.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
- package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
- package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
- package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
- package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
- package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
- package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
- package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
- package/dist/src/cli/commands/doctor/flow.js +0 -2
- package/dist/src/cli/commands/doctor/format.js +0 -2
- package/dist/src/cli/commands/doctor/index.js +0 -2
- package/dist/src/cli/commands/extension-create.js +0 -2
- package/dist/src/cli/commands/extension-dev.js +0 -2
- package/dist/src/cli/commands/extension-marketplace.js +0 -2
- package/dist/src/cli/commands/extension-pack.js +0 -2
- package/dist/src/cli/commands/extension.js +0 -2
- package/dist/src/cli/commands/gateway/call.js +0 -2
- package/dist/src/cli/commands/gateway/health.js +0 -2
- package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
- package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
- package/dist/src/cli/commands/gateway/logs.js +0 -2
- package/dist/src/cli/commands/gateway/probe.js +0 -2
- package/dist/src/cli/commands/gateway/restart-health.js +0 -2
- package/dist/src/cli/commands/gateway/restart.js +0 -2
- package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
- package/dist/src/cli/commands/gateway/service.js +0 -2
- package/dist/src/cli/commands/gateway/shared.js +0 -2
- package/dist/src/cli/commands/gateway/status.js +0 -2
- package/dist/src/cli/commands/gateway/stop.js +0 -2
- package/dist/src/cli/commands/gateway/subcommands.js +0 -2
- package/dist/src/cli/commands/gateway/token.js +0 -2
- package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
- package/dist/src/cli/commands/gateway.js +0 -2
- package/dist/src/cli/commands/goal.js +0 -2
- package/dist/src/cli/commands/image.js +0 -2
- package/dist/src/cli/commands/init.js +0 -2
- package/dist/src/cli/commands/logs.js +0 -2
- package/dist/src/cli/commands/models.js +0 -2
- package/dist/src/cli/commands/onboard/channels/index.js +0 -2
- package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
- package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
- package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
- package/dist/src/cli/commands/onboard/gateway.js +0 -2
- package/dist/src/cli/commands/onboard/model.js +0 -2
- package/dist/src/cli/commands/onboard.js +0 -2
- package/dist/src/cli/commands/profile.js +0 -2
- package/dist/src/cli/commands/project.js +0 -2
- package/dist/src/cli/commands/providers.js +0 -2
- package/dist/src/cli/commands/resume.js +0 -2
- package/dist/src/cli/commands/search.js +0 -2
- package/dist/src/cli/commands/session/actions.js +0 -2
- package/dist/src/cli/commands/session/utils.js +0 -2
- package/dist/src/cli/commands/session.js +0 -2
- package/dist/src/cli/commands/setup-shared/output.js +0 -2
- package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
- package/dist/src/cli/commands/setup-shared/runner.js +0 -2
- package/dist/src/cli/commands/setup-shared/types.js +0 -2
- package/dist/src/cli/commands/setup.js +0 -2
- package/dist/src/cli/commands/skills-test.js +0 -2
- package/dist/src/cli/commands/skills.js +0 -2
- package/dist/src/cli/commands/tailscale.js +0 -2
- package/dist/src/cli/commands/tui-runner.js +0 -2
- package/dist/src/cli/commands/tui.js +0 -2
- package/dist/src/cli/commands/tunnel.js +0 -2
- package/dist/src/cli/commands/update.js +0 -2
- package/dist/src/cli/commands/voice.js +0 -2
- package/dist/src/cli/context.js +0 -2
- package/dist/src/cli/extension-cli-register.js +0 -2
- package/dist/src/cli/gateway-run-argv.js +0 -2
- package/dist/src/cli/gateway-run-fast-path.js +0 -2
- package/dist/src/cli/index.js +0 -2
- package/dist/src/cli/registry.js +0 -2
- package/dist/src/cli/templates.js +0 -2
- package/dist/src/cli/utils/colors.js +0 -2
- package/dist/src/cli/utils/gateway-client-options.js +0 -2
- package/dist/src/cli/utils/gateway-client.js +0 -2
- package/dist/src/cli/utils/init-workspace-core.js +0 -2
- package/dist/src/cli/utils/init-workspace.js +0 -2
- package/dist/src/cli/utils/oauth-login.js +0 -2
- package/dist/src/cli/utils/oauth-providers.js +0 -2
- package/dist/src/cli/utils/session.js +0 -2
- package/dist/src/commands/agents.config.js +0 -2
- package/dist/src/config/agent-profile.js +0 -2
- package/dist/src/config/agent-typed-models.js +0 -2
- package/dist/src/config/commands.flags.js +0 -2
- package/dist/src/config/default-model.js +0 -2
- package/dist/src/config/diff.js +0 -2
- package/dist/src/config/gateway-bind.js +0 -2
- package/dist/src/config/index.js +0 -2
- package/dist/src/config/loader.js +0 -2
- package/dist/src/config/mcp-config-normalize.js +0 -2
- package/dist/src/config/model-input.js +0 -2
- package/dist/src/config/models-json.js +0 -2
- package/dist/src/config/paths-state.js +0 -2
- package/dist/src/config/paths.js +0 -2
- package/dist/src/config/profile.js +0 -2
- package/dist/src/config/public-url.js +0 -2
- package/dist/src/config/reload.js +0 -2
- package/dist/src/config/resolve-config-value.js +0 -2
- package/dist/src/config/rules.js +0 -2
- package/dist/src/config/runtime-overrides.js +0 -2
- package/dist/src/config/schema.js +0 -2
- package/dist/src/config/validate-channel-configs.js +0 -2
- package/dist/src/config/voice.js +0 -2
- package/dist/src/config/web-patch.js +0 -2
- package/dist/src/config/workspace-defaults.js +0 -2
- package/dist/src/config/workspace-dirs.js +0 -2
- package/dist/src/config/workspace-path-helpers.js +0 -2
- package/dist/src/config/workspace-path.js +0 -2
- package/dist/src/connectors/approval.js +0 -2
- package/dist/src/connectors/auth-provider-registry.js +0 -2
- package/dist/src/connectors/builtin-catalog.js +0 -2
- package/dist/src/connectors/catalog.js +0 -2
- package/dist/src/connectors/composio-catalog.js +0 -2
- package/dist/src/connectors/composio-logo.js +0 -2
- package/dist/src/connectors/composio-sessions.js +9 -5
- package/dist/src/connectors/composio-triggers.js +0 -2
- package/dist/src/connectors/composio.js +0 -2
- package/dist/src/connectors/connector-memory-sync.js +0 -2
- package/dist/src/connectors/health.js +0 -2
- package/dist/src/connectors/install.js +0 -2
- package/dist/src/connectors/instances.js +0 -2
- package/dist/src/connectors/integration-strategy.js +0 -2
- package/dist/src/connectors/lifecycle.js +0 -2
- package/dist/src/connectors/materialize.js +0 -2
- package/dist/src/connectors/policy.js +0 -2
- package/dist/src/connectors/providers.js +0 -2
- package/dist/src/connectors/registries/modelscope.js +0 -2
- package/dist/src/connectors/registries/official-mcp.js +0 -2
- package/dist/src/connectors/registries/search.js +0 -2
- package/dist/src/connectors/registries/smithery.js +0 -2
- package/dist/src/connectors/runtime-adapter-registry.js +0 -2
- package/dist/src/connectors/secret-store.js +0 -2
- package/dist/src/connectors/setup-secrets.js +0 -2
- package/dist/src/connectors/supervisor.js +0 -2
- package/dist/src/connectors/usage.js +0 -2
- package/dist/src/connectors/workflow-preflight.js +0 -2
- package/dist/src/daemon/constants.js +0 -2
- package/dist/src/daemon/install-plan.js +0 -2
- package/dist/src/daemon/launchd.js +0 -2
- package/dist/src/daemon/schtasks.js +0 -2
- package/dist/src/daemon/service-audit.js +0 -2
- package/dist/src/daemon/service.js +0 -2
- package/dist/src/daemon/systemd.js +0 -2
- package/dist/src/document-understanding/extract.js +0 -2
- package/dist/src/errors/index.js +0 -2
- package/dist/src/extensions/activation-context.js +0 -2
- package/dist/src/extensions/activation-planner.js +0 -2
- package/dist/src/extensions/api.js +0 -2
- package/dist/src/extensions/bundle-mcp.js +0 -2
- package/dist/src/extensions/bundled-extension-activation.js +0 -2
- package/dist/src/extensions/diagnostics.js +0 -2
- package/dist/src/extensions/discover-extensions.js +0 -2
- package/dist/src/extensions/engine-check.js +0 -2
- package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
- package/dist/src/extensions/extension-registry-impl.js +0 -2
- package/dist/src/extensions/health.js +0 -2
- package/dist/src/extensions/hooks.js +0 -2
- package/dist/src/extensions/index.js +0 -2
- package/dist/src/extensions/install-transaction.js +0 -2
- package/dist/src/extensions/install.js +0 -2
- package/dist/src/extensions/loader.js +0 -2
- package/dist/src/extensions/lockfile.js +0 -2
- package/dist/src/extensions/manifest-registry.js +0 -2
- package/dist/src/extensions/marketplace.js +0 -2
- package/dist/src/extensions/media-provider-contracts.js +0 -2
- package/dist/src/extensions/normalize-manifest.js +0 -2
- package/dist/src/extensions/onboard-helpers.js +0 -2
- package/dist/src/extensions/package-contract.js +0 -2
- package/dist/src/extensions/sdk/channel-entry.js +0 -2
- package/dist/src/extensions/sdk/channel-helpers.js +0 -2
- package/dist/src/extensions/sdk/index.js +0 -2
- package/dist/src/extensions/sdk/lazy.js +0 -2
- package/dist/src/extensions/sdk/testing.js +0 -2
- package/dist/src/extensions/security.js +0 -2
- package/dist/src/extensions/slots.js +0 -2
- package/dist/src/extensions/speech-provider-contracts.js +0 -2
- package/dist/src/extensions/store-zip-limits.js +0 -2
- package/dist/src/extensions/typed-event-bus.js +0 -2
- package/dist/src/extensions/types/hooks.js +0 -2
- package/dist/src/extensions/types/providers.js +0 -2
- package/dist/src/extensions/update.js +0 -2
- package/dist/src/extensions/when-context.js +0 -2
- package/dist/src/extensions/when-expression.js +0 -2
- package/dist/src/gateway/agent-builtin-tools.js +0 -2
- package/dist/src/gateway/agent-run-relay.js +0 -2
- package/dist/src/gateway/agents-admin.js +0 -2
- package/dist/src/gateway/auth.js +0 -2
- package/dist/src/gateway/capability-presets-admin.js +0 -2
- package/dist/src/gateway/chat-limits.js +0 -2
- package/dist/src/gateway/chat-stream/mapper.js +28 -14
- package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
- package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
- package/dist/src/gateway/clarify-bridge.js +3 -3
- package/dist/src/gateway/clarify-runtime.js +0 -2
- package/dist/src/gateway/client-ip.js +0 -2
- package/dist/src/gateway/config-tools-web.js +0 -2
- package/dist/src/gateway/credential.js +0 -2
- package/dist/src/gateway/discovery/mdns.js +0 -2
- package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
- package/dist/src/gateway/ensure-network-cors.js +0 -2
- package/dist/src/gateway/file-path-classifier.js +0 -2
- package/dist/src/gateway/file-reference-registry.js +0 -2
- package/dist/src/gateway/global-defaults-admin.js +0 -2
- package/dist/src/gateway/heartbeat/service.js +0 -2
- package/dist/src/gateway/hono/app.js +0 -2
- package/dist/src/gateway/hono/lib/agent-model.js +0 -2
- package/dist/src/gateway/hono/lib/config-payload.js +0 -2
- package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
- package/dist/src/gateway/hono/lib/extension-store.js +0 -2
- package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
- package/dist/src/gateway/hono/lib/route-logger.js +0 -2
- package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
- package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
- package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
- package/dist/src/gateway/hono/lib/static-ui.js +0 -2
- package/dist/src/gateway/hono/middleware/auth.js +0 -2
- package/dist/src/gateway/hono/middleware/log-context.js +0 -2
- package/dist/src/gateway/hono/middleware/logger.js +0 -2
- package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
- package/dist/src/gateway/hono/middleware/scopes.js +0 -2
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
- package/dist/src/gateway/hono/oauth-async.js +0 -2
- package/dist/src/gateway/hono/oauth.js +0 -2
- package/dist/src/gateway/hono/routes/activity.js +0 -2
- package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
- package/dist/src/gateway/hono/routes/agents.js +0 -2
- package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
- package/dist/src/gateway/hono/routes/browser-install.js +0 -2
- package/dist/src/gateway/hono/routes/browser.js +0 -2
- package/dist/src/gateway/hono/routes/capabilities.js +0 -2
- package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
- package/dist/src/gateway/hono/routes/channels.js +0 -2
- package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
- package/dist/src/gateway/hono/routes/config.js +0 -2
- package/dist/src/gateway/hono/routes/connectors.js +0 -2
- package/dist/src/gateway/hono/routes/doctor.js +0 -2
- package/dist/src/gateway/hono/routes/dreaming.js +0 -2
- package/dist/src/gateway/hono/routes/exposure.js +0 -2
- package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
- package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
- package/dist/src/gateway/hono/routes/goals.js +0 -2
- package/dist/src/gateway/hono/routes/home.js +0 -2
- package/dist/src/gateway/hono/routes/host-fs.js +0 -2
- package/dist/src/gateway/hono/routes/index.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
- package/dist/src/gateway/hono/routes/local-apps.js +0 -2
- package/dist/src/gateway/hono/routes/logs.js +0 -2
- package/dist/src/gateway/hono/routes/mcp.js +0 -2
- package/dist/src/gateway/hono/routes/media.js +0 -2
- package/dist/src/gateway/hono/routes/memory.js +0 -2
- package/dist/src/gateway/hono/routes/migrations.js +0 -2
- package/dist/src/gateway/hono/routes/mobile.js +0 -2
- package/dist/src/gateway/hono/routes/models.js +0 -2
- package/dist/src/gateway/hono/routes/notes.js +3 -3
- package/dist/src/gateway/hono/routes/projects.js +0 -2
- package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
- package/dist/src/gateway/hono/routes/search.js +0 -2
- package/dist/src/gateway/hono/routes/sessions.js +0 -2
- package/dist/src/gateway/hono/routes/shares.js +0 -2
- package/dist/src/gateway/hono/routes/site-shares.js +0 -2
- package/dist/src/gateway/hono/routes/status.js +0 -2
- package/dist/src/gateway/hono/routes/tui.js +0 -2
- package/dist/src/gateway/hono/routes/tunnel.js +0 -2
- package/dist/src/gateway/hono/routes/update.js +0 -2
- package/dist/src/gateway/hono/routes/voice.js +0 -2
- package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
- package/dist/src/gateway/hono/routes/workflows.js +0 -2
- package/dist/src/gateway/hono/routes/workspace.js +0 -2
- package/dist/src/gateway/hono/routes/you.js +0 -2
- package/dist/src/gateway/hono/sse-json.js +0 -2
- package/dist/src/gateway/hono/sse.js +0 -2
- package/dist/src/gateway/host.js +0 -2
- package/dist/src/gateway/image-capabilities.js +0 -2
- package/dist/src/gateway/listen.js +0 -2
- package/dist/src/gateway/lock.js +0 -2
- package/dist/src/gateway/ports.js +0 -2
- package/dist/src/gateway/protocol.js +0 -2
- package/dist/src/gateway/public-url.js +0 -2
- package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
- package/dist/src/gateway/rate-limit/buckets.js +0 -2
- package/dist/src/gateway/rate-limit/env-flags.js +0 -2
- package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
- package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
- package/dist/src/gateway/respawn.js +0 -2
- package/dist/src/gateway/run-loop.js +0 -2
- package/dist/src/gateway/runtime-config.js +0 -2
- package/dist/src/gateway/security/audit.js +0 -2
- package/dist/src/gateway/security/csp.js +0 -2
- package/dist/src/gateway/security/dangerous-tools.js +0 -2
- package/dist/src/gateway/security/external-content.js +0 -2
- package/dist/src/gateway/security/known-weak-secrets.js +0 -2
- package/dist/src/gateway/security/loopback.js +0 -2
- package/dist/src/gateway/security/operator-scopes.js +0 -2
- package/dist/src/gateway/security/origin-check.js +0 -2
- package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
- package/dist/src/gateway/security/secret-equal.js +0 -2
- package/dist/src/gateway/server-tailscale.js +0 -2
- package/dist/src/gateway/server.js +0 -2
- package/dist/src/gateway/service/agent-runner.js +0 -2
- package/dist/src/gateway/service/config-coordinator.js +0 -2
- package/dist/src/gateway/service/marketplace-service.js +0 -2
- package/dist/src/gateway/service/run-gateway-agent.js +0 -2
- package/dist/src/gateway/service/session-chat-ids.js +0 -2
- package/dist/src/gateway/service/sessions-api.js +0 -2
- package/dist/src/gateway/service/sse-hub.js +0 -2
- package/dist/src/gateway/service.js +1 -2
- package/dist/src/gateway/session-reset-service.js +0 -2
- package/dist/src/gateway/startup-readiness.js +0 -2
- package/dist/src/gateway/startup-trace.js +0 -2
- package/dist/src/gateway/tailscale-auth.js +0 -2
- package/dist/src/gateway/tailscale-lifecycle.js +0 -2
- package/dist/src/gateway/tls-server.js +0 -2
- package/dist/src/gateway/trusted-proxy.js +0 -2
- package/dist/src/gateway/user-turn-input.js +0 -2
- package/dist/src/gateway/workspace-editor-path.js +0 -2
- package/dist/src/gateway/workspace-file-search.js +0 -2
- package/dist/src/gateway/workspace-fs-file-list.js +0 -2
- package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
- package/dist/src/gateway/workspace-ripgrep.js +0 -2
- package/dist/src/gateway/ws-security.js +0 -2
- package/dist/src/generated/bundled-image-generation-providers.js +0 -2
- package/dist/src/goals/goal-contract-draft.js +0 -2
- package/dist/src/goals/goal-evidence-review.js +0 -2
- package/dist/src/goals/goal-notifications.js +0 -2
- package/dist/src/goals/goal-queue-store.js +0 -2
- package/dist/src/goals/goal-runner.js +0 -2
- package/dist/src/goals/goal-service.js +0 -2
- package/dist/src/goals/goal-store.js +0 -2
- package/dist/src/goals/goal-workflow-judge.js +0 -2
- package/dist/src/heartbeat/active-hours.js +0 -2
- package/dist/src/heartbeat/content-check.js +0 -2
- package/dist/src/heartbeat/event-prompt.js +0 -2
- package/dist/src/heartbeat/tokens.js +0 -2
- package/dist/src/heartbeat/wake.js +0 -2
- package/dist/src/i18n/format.js +0 -2
- package/dist/src/i18n/goals-bundle.js +0 -2
- package/dist/src/i18n/locale.js +0 -2
- package/dist/src/i18n/locales/goals.en.js +0 -2
- package/dist/src/i18n/locales/goals.zh.js +0 -2
- package/dist/src/i18n/locales/share-tool.en.js +0 -2
- package/dist/src/i18n/locales/share-tool.zh.js +0 -2
- package/dist/src/i18n/share-tool-bundle.js +0 -2
- package/dist/src/index.js +0 -2
- package/dist/src/infra/brew.js +0 -2
- package/dist/src/infra/bus/queue.js +0 -2
- package/dist/src/infra/debounce.js +0 -2
- package/dist/src/infra/exec.js +0 -2
- package/dist/src/infra/gateway-process-argv.js +0 -2
- package/dist/src/infra/gateway-processes.js +0 -2
- package/dist/src/infra/host-env-security-policy.js +0 -2
- package/dist/src/infra/host-env-security.js +0 -2
- package/dist/src/infra/http-proxy-env.js +0 -2
- package/dist/src/infra/is-main.js +0 -2
- package/dist/src/infra/json-utf8-bytes.js +0 -2
- package/dist/src/infra/node-sqlite.js +0 -2
- package/dist/src/infra/package-json.js +0 -2
- package/dist/src/infra/package-update-steps.js +0 -2
- package/dist/src/infra/path-env.js +0 -2
- package/dist/src/infra/path-prepend.js +0 -2
- package/dist/src/infra/ports.js +0 -2
- package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
- package/dist/src/infra/rate-limit/keyed-store.js +0 -2
- package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
- package/dist/src/infra/restart.js +0 -2
- package/dist/src/infra/retry.js +0 -2
- package/dist/src/infra/run-command.js +0 -2
- package/dist/src/infra/sqlite-errors.js +0 -2
- package/dist/src/infra/ssh-tunnel.js +0 -2
- package/dist/src/infra/stable-node-path.js +0 -2
- package/dist/src/infra/tailscale.js +0 -2
- package/dist/src/infra/undici-fetch.js +0 -2
- package/dist/src/infra/unhandled-rejections.js +0 -2
- package/dist/src/infra/update-channels.js +0 -2
- package/dist/src/infra/update-check.js +0 -2
- package/dist/src/infra/update-global.js +0 -2
- package/dist/src/infra/update-lock.js +0 -2
- package/dist/src/infra/update-log.js +0 -2
- package/dist/src/infra/update-restart.js +0 -2
- package/dist/src/infra/update-runner.js +0 -2
- package/dist/src/infra/update-startup.js +0 -2
- package/dist/src/infra/warning-filter.js +0 -2
- package/dist/src/infra/write-file-atomic.js +0 -2
- package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
- package/dist/src/knowledge/coordinator.js +0 -2
- package/dist/src/knowledge/ingestion-service.js +0 -2
- package/dist/src/local-apps/acceptance.js +0 -2
- package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
- package/dist/src/local-apps/runtime-entry.js +0 -2
- package/dist/src/local-apps/scaffold.js +0 -2
- package/dist/src/local-apps/service.js +0 -2
- package/dist/src/local-apps/store.js +0 -2
- package/dist/src/markdown/chunk.js +0 -2
- package/dist/src/markdown/code-spans.js +0 -2
- package/dist/src/markdown/fences.js +0 -2
- package/dist/src/markdown/frontmatter.js +0 -2
- package/dist/src/markdown/ir.js +0 -2
- package/dist/src/markdown/render.js +0 -2
- package/dist/src/markdown/tables.js +0 -2
- package/dist/src/mcp/channel-bridge.js +0 -2
- package/dist/src/mcp/channel-server.js +0 -2
- package/dist/src/mcp/channel-shared.js +0 -2
- package/dist/src/mcp/channel-tools.js +0 -2
- package/dist/src/mcp/gateway-http-client.js +0 -2
- package/dist/src/media/media-reference.js +0 -2
- package/dist/src/media/paths.js +0 -2
- package/dist/src/media/session-references.js +0 -2
- package/dist/src/media/store.js +0 -2
- package/dist/src/media/uri.js +0 -2
- package/dist/src/media-shared/http/api-key-rotation.js +0 -2
- package/dist/src/media-shared/http/deadline.js +0 -2
- package/dist/src/media-shared/http/private-network.js +0 -2
- package/dist/src/media-shared/http/provider-http-errors.js +0 -2
- package/dist/src/media-shared/http/provider-http.js +0 -2
- package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
- package/dist/src/media-shared/http/ssrf-guard.js +0 -2
- package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
- package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
- package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
- package/dist/src/media-understanding/registry.js +0 -2
- package/dist/src/media-understanding/resolve-entries.js +0 -2
- package/dist/src/media-understanding/runner.js +0 -2
- package/dist/src/migrations/config/default-capability-preset.js +0 -2
- package/dist/src/migrations/registry.js +0 -2
- package/dist/src/migrations/runner.js +0 -2
- package/dist/src/mobile/notification-service.js +0 -2
- package/dist/src/mobile/notification-store.js +0 -2
- package/dist/src/mobile/notification-types.js +0 -2
- package/dist/src/notes/agent-context.js +0 -2
- package/dist/src/notes/attachment-ref.js +0 -2
- package/dist/src/notes/note-attachment-sync.js +0 -2
- package/dist/src/notes/note-index-meta.js +0 -2
- package/dist/src/notes/note-markdown.js +0 -2
- package/dist/src/notes/paths.js +0 -2
- package/dist/src/notes/service.d.ts +3 -1
- package/dist/src/notes/service.js +19 -5
- package/dist/src/notes/store.js +0 -2
- package/dist/src/package-version.js +0 -2
- package/dist/src/pets/factory.d.ts +13 -0
- package/dist/src/pets/factory.js +23 -2
- package/dist/src/pets/manifest.js +0 -2
- package/dist/src/pets/validator.js +0 -2
- package/dist/src/process/kill-tree.js +0 -2
- package/dist/src/project-trust/trust-store.js +0 -2
- package/dist/src/projects/automation-bind.js +0 -2
- package/dist/src/projects/goal-bind.js +0 -2
- package/dist/src/projects/memory-bind.js +0 -2
- package/dist/src/projects/project-agent-suggestion.js +0 -2
- package/dist/src/projects/project-agent.js +0 -2
- package/dist/src/projects/project-kind.js +0 -2
- package/dist/src/projects/project-loop.js +0 -2
- package/dist/src/projects/project-service.js +0 -2
- package/dist/src/projects/project-store.js +0 -2
- package/dist/src/projects/session-bind.js +0 -2
- package/dist/src/projects/workflow-bind.js +0 -2
- package/dist/src/projects/workspace-project.js +0 -2
- package/dist/src/projects/workspace.js +0 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
- package/dist/src/providers/auth-runtime/is-configured.js +0 -2
- package/dist/src/providers/auth-runtime/oauth.js +0 -2
- package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
- package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
- package/dist/src/providers/constants.js +0 -2
- package/dist/src/providers/domestic-presets.js +0 -2
- package/dist/src/providers/env-keys.js +0 -2
- package/dist/src/providers/extension-stream-bridge.js +0 -2
- package/dist/src/providers/index.js +0 -2
- package/dist/src/providers/model-call.js +0 -2
- package/dist/src/providers/model-discovery.js +0 -2
- package/dist/src/providers/model-registry.js +0 -2
- package/dist/src/providers/model-supplements.js +0 -2
- package/dist/src/providers/plugin-registry.js +0 -2
- package/dist/src/providers/presentation.js +0 -2
- package/dist/src/remote-access/exposure-guards.js +0 -2
- package/dist/src/remote-access/exposure-manager.js +0 -2
- package/dist/src/review/review-git.js +0 -2
- package/dist/src/review/review-types.js +0 -2
- package/dist/src/routing/account-id.js +0 -2
- package/dist/src/routing/agent-session-key.js +0 -2
- package/dist/src/routing/bindings.js +0 -2
- package/dist/src/routing/index.js +0 -2
- package/dist/src/routing/resolve-route.js +0 -2
- package/dist/src/routing/resolve-tui-session-key.js +0 -2
- package/dist/src/routing/session-key-utils.js +0 -2
- package/dist/src/routing/session-key.js +0 -2
- package/dist/src/session/abort-cutoff.js +0 -2
- package/dist/src/session/chat-export.js +0 -2
- package/dist/src/session/client-history.js +0 -2
- package/dist/src/session/compaction-checkpoints.js +0 -2
- package/dist/src/session/config-store.js +0 -2
- package/dist/src/session/init-session-turn.js +0 -2
- package/dist/src/session/lifecycle-timestamps.js +0 -2
- package/dist/src/session/load-jsonl-entries.js +0 -2
- package/dist/src/session/manager.js +0 -2
- package/dist/src/session/patch-metadata.js +0 -2
- package/dist/src/session/reset-policy.js +0 -2
- package/dist/src/session/reset-triggers.js +0 -2
- package/dist/src/session/reset-type.js +0 -2
- package/dist/src/session/resolve-session.js +0 -2
- package/dist/src/session/session-context-for-llm.js +0 -2
- package/dist/src/session/session-id.js +0 -2
- package/dist/src/session/session-title.js +0 -2
- package/dist/src/session/session-workspace.js +0 -2
- package/dist/src/session/store.js +0 -2
- package/dist/src/session/stored-rows-to-file-entries.js +0 -2
- package/dist/src/session/thinking-resolve.js +0 -2
- package/dist/src/session/transcript-events.js +0 -2
- package/dist/src/session/transcript-format.js +0 -2
- package/dist/src/session/transcript-outline.js +0 -2
- package/dist/src/session/transcript-stats.js +0 -2
- package/dist/src/session/types.js +0 -2
- package/dist/src/session/user-round-delete.js +0 -2
- package/dist/src/share/share-audit.js +0 -2
- package/dist/src/share/share-auto.js +0 -2
- package/dist/src/share/share-config.js +0 -2
- package/dist/src/share/share-landing.js +0 -2
- package/dist/src/share/share-rate-limit.js +0 -2
- package/dist/src/share/share-store.js +0 -2
- package/dist/src/share/share-thumbnail.js +0 -2
- package/dist/src/share/share-types.js +0 -2
- package/dist/src/share/share-url.js +0 -2
- package/dist/src/share/share-zip.js +0 -2
- package/dist/src/share/site-proxy.js +0 -2
- package/dist/src/share/site-share-config.js +0 -2
- package/dist/src/share/site-share-router.js +0 -2
- package/dist/src/share/site-share-store.js +0 -2
- package/dist/src/share/site-share-types.js +0 -2
- package/dist/src/share/site-static-serve.js +0 -2
- package/dist/src/storage/sqlite/activity-repository.js +0 -2
- package/dist/src/storage/sqlite/config-repository.js +0 -2
- package/dist/src/storage/sqlite/connection.js +0 -2
- package/dist/src/storage/sqlite/connector-repository.js +0 -2
- package/dist/src/storage/sqlite/fts.js +0 -2
- package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
- package/dist/src/storage/sqlite/migrations/discover.js +0 -2
- package/dist/src/storage/sqlite/migrations/errors.js +0 -2
- package/dist/src/storage/sqlite/migrations/runner.js +0 -2
- package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
- package/dist/src/storage/sqlite/notes-repository.js +0 -2
- package/dist/src/storage/sqlite/paths.js +0 -2
- package/dist/src/storage/sqlite/row-mappers.js +0 -2
- package/dist/src/storage/sqlite/schema-version.js +0 -2
- package/dist/src/storage/sqlite/schema.js +0 -2
- package/dist/src/storage/sqlite/session-metadata.js +0 -2
- package/dist/src/storage/sqlite/session-repository.js +0 -2
- package/dist/src/storage/sqlite/transaction.js +0 -2
- package/dist/src/storage/sqlite/transcript-repository.js +0 -2
- package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
- package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
- package/dist/src/tui/backends/embedded-backend.js +0 -2
- package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
- package/dist/src/tui/chat-history.js +0 -2
- package/dist/src/tui/clipboard-image.js +0 -2
- package/dist/src/tui/clipboard-text.js +0 -2
- package/dist/src/tui/components/assistant-message.js +0 -2
- package/dist/src/tui/components/bash-execution.js +0 -2
- package/dist/src/tui/components/bash-summary.js +0 -2
- package/dist/src/tui/components/branch-message-summary.js +0 -2
- package/dist/src/tui/components/branch-summary.js +0 -2
- package/dist/src/tui/components/chat-log.js +0 -2
- package/dist/src/tui/components/compaction-summary.js +0 -2
- package/dist/src/tui/components/custom-editor.js +0 -2
- package/dist/src/tui/components/custom-message.js +0 -2
- package/dist/src/tui/components/dynamic-border.js +0 -2
- package/dist/src/tui/components/extension-dialog.js +0 -2
- package/dist/src/tui/components/fuzzy-filter.js +0 -2
- package/dist/src/tui/components/scoped-models-selector.js +0 -2
- package/dist/src/tui/components/searchable-select-list.js +0 -2
- package/dist/src/tui/components/session-selector.js +0 -2
- package/dist/src/tui/components/settings-selector.js +0 -2
- package/dist/src/tui/components/thinking-selector.js +0 -2
- package/dist/src/tui/components/tool-execution.js +0 -2
- package/dist/src/tui/components/tui-bottom-bar.js +0 -2
- package/dist/src/tui/components/tui-header.js +0 -2
- package/dist/src/tui/components/user-message.js +0 -2
- package/dist/src/tui/components/visual-truncate.js +0 -2
- package/dist/src/tui/extension-host/autocomplete.js +0 -2
- package/dist/src/tui/extension-host/host.js +0 -2
- package/dist/src/tui/extension-host/load-extensions.js +0 -2
- package/dist/src/tui/extension-host/runtime-context.js +0 -2
- package/dist/src/tui/extension-host/runtime.js +0 -2
- package/dist/src/tui/extension-host/surface.js +0 -2
- package/dist/src/tui/extension-host/tool-renderers.js +0 -2
- package/dist/src/tui/format-tui-hotkeys.js +0 -2
- package/dist/src/tui/sse-consumer.js +0 -2
- package/dist/src/tui/theme/dark.js +0 -2
- package/dist/src/tui/theme/light.js +0 -2
- package/dist/src/tui/theme-manager.js +0 -2
- package/dist/src/tui/theme.js +0 -2
- package/dist/src/tui/tool-summary.js +0 -2
- package/dist/src/tui/tui-agent-events.js +0 -2
- package/dist/src/tui/tui-command-formatters.js +0 -2
- package/dist/src/tui/tui-commands.js +0 -2
- package/dist/src/tui/tui-context-usage.js +0 -2
- package/dist/src/tui/tui-extension-user-message.js +0 -2
- package/dist/src/tui/tui-fd-path.js +0 -2
- package/dist/src/tui/tui-file-autocomplete.js +0 -2
- package/dist/src/tui/tui-follow-up-queue.js +0 -2
- package/dist/src/tui/tui-git-branch.js +0 -2
- package/dist/src/tui/tui-keybindings-file.js +0 -2
- package/dist/src/tui/tui-lifecycle.js +0 -2
- package/dist/src/tui/tui-local-shell.js +0 -2
- package/dist/src/tui/tui-model-picker.js +0 -2
- package/dist/src/tui/tui-oauth-login.js +0 -2
- package/dist/src/tui/tui-overlays.js +0 -2
- package/dist/src/tui/tui-picker-overlay.js +0 -2
- package/dist/src/tui/tui-run-state.js +0 -2
- package/dist/src/tui/tui-run-status-format.js +0 -2
- package/dist/src/tui/tui-runtime-hints.js +0 -2
- package/dist/src/tui/tui-scoped-models.js +0 -2
- package/dist/src/tui/tui-session-actions.js +0 -2
- package/dist/src/tui/tui-session-format.js +0 -2
- package/dist/src/tui/tui-session-snapshot.js +0 -2
- package/dist/src/tui/tui-session-stats.js +0 -2
- package/dist/src/tui/tui-settings.js +0 -2
- package/dist/src/tui/tui-skills-autocomplete.js +0 -2
- package/dist/src/tui/tui-startup-resources.js +0 -2
- package/dist/src/tui/tui-startup-text.js +0 -2
- package/dist/src/tui/tui-stdio-filter.js +0 -2
- package/dist/src/tui/tui-submit.js +0 -2
- package/dist/src/tui/tui-suspend.js +0 -2
- package/dist/src/tui/tui-timeline-picker.js +0 -2
- package/dist/src/tui/tui-timeline.js +0 -2
- package/dist/src/tui/tui-tool-diff.js +0 -2
- package/dist/src/tui/tui-tool-result.js +0 -2
- package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
- package/dist/src/tui/tui-transcript-tree.js +0 -2
- package/dist/src/tui/tui-types.js +0 -2
- package/dist/src/tui/tui-workflow-slash.js +0 -2
- package/dist/src/tui/tui.js +0 -2
- package/dist/src/tui/xopc-tui-keybindings.js +0 -2
- package/dist/src/tunnel/broker-client.js +0 -2
- package/dist/src/tunnel/consent.js +0 -2
- package/dist/src/tunnel/enable-lan-pairing.js +0 -2
- package/dist/src/tunnel/env.js +0 -2
- package/dist/src/tunnel/frp-subdomain-host.js +0 -2
- package/dist/src/tunnel/frpc-binary.js +0 -2
- package/dist/src/tunnel/frpc-config.js +0 -2
- package/dist/src/tunnel/frpc-extract.js +0 -2
- package/dist/src/tunnel/frpc-process.js +0 -2
- package/dist/src/tunnel/gateway-lifecycle.js +0 -2
- package/dist/src/tunnel/pair-context.js +0 -2
- package/dist/src/tunnel/pair-url.js +0 -2
- package/dist/src/tunnel/pairing-rate-limit.js +0 -2
- package/dist/src/tunnel/pairing.js +0 -2
- package/dist/src/tunnel/tunnel-audit.js +0 -2
- package/dist/src/tunnel/tunnel-config.js +0 -2
- package/dist/src/tunnel/tunnel-persist.js +0 -2
- package/dist/src/tunnel/tunnel-qr.js +0 -2
- package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
- package/dist/src/tunnel/tunnel-service.js +0 -2
- package/dist/src/tunnel/tunnel-state.js +0 -2
- package/dist/src/tunnel/well-known.js +0 -2
- package/dist/src/user-context/config.js +0 -2
- package/dist/src/user-context/import.js +0 -2
- package/dist/src/user-context/owner.js +0 -2
- package/dist/src/user-context/profile.js +0 -2
- package/dist/src/user-context/projection.js +0 -2
- package/dist/src/user-context/runtime.js +0 -2
- package/dist/src/user-context/source-recommendations.js +0 -2
- package/dist/src/user-context/trust-policy.js +0 -2
- package/dist/src/utils/global-singleton.js +0 -2
- package/dist/src/utils/helpers.js +0 -2
- package/dist/src/utils/index.js +0 -2
- package/dist/src/utils/is-record.js +0 -2
- package/dist/src/utils/logger/audit.js +0 -2
- package/dist/src/utils/logger/config.js +0 -2
- package/dist/src/utils/logger/context.js +0 -2
- package/dist/src/utils/logger/exporters.js +0 -2
- package/dist/src/utils/logger/index.js +0 -2
- package/dist/src/utils/logger/log-store.js +0 -2
- package/dist/src/utils/logger/log-stream.js +0 -2
- package/dist/src/utils/logger/pino-record.js +0 -2
- package/dist/src/utils/logger/redact.js +0 -2
- package/dist/src/utils/logger/rotation.js +0 -2
- package/dist/src/utils/logger/shutdown.js +0 -2
- package/dist/src/utils/logger/stats.js +0 -2
- package/dist/src/utils/logger/streams.js +0 -2
- package/dist/src/utils/logger/types.js +0 -2
- package/dist/src/utils/logger.js +0 -2
- package/dist/src/utils/redact-sensitive-url.js +0 -2
- package/dist/src/utils/sanitize-log.js +0 -2
- package/dist/src/utils/string-coerce.js +0 -2
- package/dist/src/voice/language-profile.js +0 -2
- package/dist/src/voice/local/model-files.js +0 -2
- package/dist/src/voice/local/model-manager.js +0 -2
- package/dist/src/voice/local/models.js +0 -2
- package/dist/src/voice/local/runtime-client.js +0 -2
- package/dist/src/voice/local/runtime-dispatcher.js +0 -2
- package/dist/src/voice/local/runtime-worker.js +12 -4
- package/dist/src/voice/local/wav.js +0 -2
- package/dist/src/voice/metadata/builtin.js +0 -2
- package/dist/src/voice/metadata/registry.js +0 -2
- package/dist/src/voice/stt/availability.js +0 -2
- package/dist/src/voice/stt/config-slice.js +0 -2
- package/dist/src/voice/stt/factory.js +0 -2
- package/dist/src/voice/stt/index.js +0 -2
- package/dist/src/voice/stt/list-providers.js +0 -2
- package/dist/src/voice/stt/mention.js +0 -2
- package/dist/src/voice/stt/preflight.js +0 -2
- package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
- package/dist/src/voice/stt/providers/local-transcription.js +0 -2
- package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
- package/dist/src/voice/stt/transcribe-core.js +0 -2
- package/dist/src/voice/stt/types.js +0 -2
- package/dist/src/voice/tts/audio.js +0 -2
- package/dist/src/voice/tts/config-slice.js +0 -2
- package/dist/src/voice/tts/directives.js +0 -2
- package/dist/src/voice/tts/factory.js +0 -2
- package/dist/src/voice/tts/list-providers.js +0 -2
- package/dist/src/voice/tts/merge-config.js +0 -2
- package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
- package/dist/src/voice/tts/payload.js +0 -2
- package/dist/src/voice/tts/preprocess.js +0 -2
- package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
- package/dist/src/voice/tts/providers/edge-speech.js +0 -2
- package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
- package/dist/src/voice/tts/providers/openai-speech.js +0 -2
- package/dist/src/voice/tts/sentence-boundary.js +0 -2
- package/dist/src/voice/tts/service.js +0 -2
- package/dist/src/voice/tts/speak-core.js +0 -2
- package/dist/src/voice/tts/speech-registry.js +0 -2
- package/dist/src/voice/tts/status-tracker.js +0 -2
- package/dist/src/voice/tts/summarize.js +0 -2
- package/dist/src/voice/tts/types.js +0 -2
- package/dist/src/work-discovery/analyzer.js +0 -2
- package/dist/src/work-discovery/probe.js +0 -2
- package/dist/src/work-discovery/repository.js +0 -2
- package/dist/src/work-discovery/service.js +0 -2
- package/dist/src/work-items/agent-context.js +0 -2
- package/dist/src/work-items/work-item-service.js +0 -2
- package/dist/src/work-items/work-item-store.js +0 -2
- package/dist/src/work-items/work-item-workflow-judge.js +0 -2
- package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
- package/dist/src/workflows/domain/definition-utils.js +0 -2
- package/dist/src/workflows/domain/run.js +0 -2
- package/dist/src/workflows/domain/schema-validation.js +0 -2
- package/dist/src/workflows/domain/validation.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
- package/dist/src/workflows/engine/projector.js +0 -2
- package/dist/src/workflows/engine/workflow-engine.js +0 -2
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
- package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
- package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
- package/dist/src/workflows/service/workflow-run-service.js +1 -3
- package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
- package/dist/src/workflows/service/workflow-session-key.js +0 -2
- package/dist/src/workflows/store/event-store.js +0 -2
- package/dist/src/workflows/store/paths.js +0 -2
- package/dist/src/workflows/store/run-index-store.js +0 -2
- package/dist/src/workflows/store/run-store.js +0 -2
- package/package.json +43 -12
- package/skills/creative/hatch-pet/SKILL.md +1 -0
- package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/demo-memory/src/index.js.map +0 -1
- package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
- package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
- package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
- package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/format.js.map +0 -1
- package/dist/extensions/feishu/src/index.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
- package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/feishu/src/plugin.js.map +0 -1
- package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
- package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
- package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
- package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
- package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
- package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
- package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
- package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
- package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
- package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
- package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
- package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
- package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
- package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
- package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
- package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
- package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/telegram/src/access-control.js.map +0 -1
- package/dist/extensions/telegram/src/account-manager.js.map +0 -1
- package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/api-root.js.map +0 -1
- package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
- package/dist/extensions/telegram/src/approval-store.js.map +0 -1
- package/dist/extensions/telegram/src/caption.js.map +0 -1
- package/dist/extensions/telegram/src/command-handler.js.map +0 -1
- package/dist/extensions/telegram/src/config-schema.js.map +0 -1
- package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
- package/dist/extensions/telegram/src/dedupe.js.map +0 -1
- package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
- package/dist/extensions/telegram/src/doctor.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
- package/dist/extensions/telegram/src/errors.js.map +0 -1
- package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
- package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
- package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
- package/dist/extensions/telegram/src/format.js.map +0 -1
- package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
- package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
- package/dist/extensions/telegram/src/index.js.map +0 -1
- package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
- package/dist/extensions/telegram/src/network-errors.js.map +0 -1
- package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
- package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
- package/dist/extensions/telegram/src/plugin.js.map +0 -1
- package/dist/extensions/telegram/src/polling-session.js.map +0 -1
- package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
- package/dist/extensions/telegram/src/reactions.js.map +0 -1
- package/dist/extensions/telegram/src/reply-params.js.map +0 -1
- package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
- package/dist/extensions/telegram/src/send-options.js.map +0 -1
- package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
- package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
- package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
- package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
- package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
- package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
- package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
- package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
- package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/weixin/src/api/api.js.map +0 -1
- package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
- package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
- package/dist/extensions/weixin/src/api/types.js.map +0 -1
- package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
- package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
- package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
- package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
- package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
- package/dist/extensions/weixin/src/config-schema.js.map +0 -1
- package/dist/extensions/weixin/src/config-surface.js.map +0 -1
- package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
- package/dist/extensions/weixin/src/index.js.map +0 -1
- package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
- package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
- package/dist/extensions/weixin/src/media/mime.js.map +0 -1
- package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
- package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
- package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
- package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/weixin/src/plugin.js.map +0 -1
- package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
- package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
- package/dist/extensions/weixin/src/util/logger.js.map +0 -1
- package/dist/extensions/weixin/src/util/random.js.map +0 -1
- package/dist/extensions/weixin/src/util/redact.js.map +0 -1
- package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
- package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
- package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
- package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
- package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
- package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
- package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
- package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
- package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
- package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
- package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
- package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
- package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
- package/dist/gateway/static/root/favicon-icon.svg +0 -187
- package/dist/package.js.map +0 -1
- package/dist/src/activity/context.js.map +0 -1
- package/dist/src/activity/emitter.js.map +0 -1
- package/dist/src/activity/service.js.map +0 -1
- package/dist/src/agent/agent-manager.js.map +0 -1
- package/dist/src/agent/agent-scope.js.map +0 -1
- package/dist/src/agent/background-review/coordinator.js.map +0 -1
- package/dist/src/agent/background-review/prompts.js.map +0 -1
- package/dist/src/agent/background-review/run-background-review.js.map +0 -1
- package/dist/src/agent/background-review/settings.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
- package/dist/src/agent/capabilities/definitions.js.map +0 -1
- package/dist/src/agent/capabilities/registry.js.map +0 -1
- package/dist/src/agent/child-agent-factory.js.map +0 -1
- package/dist/src/agent/client-error-format.js.map +0 -1
- package/dist/src/agent/code-intelligence/binary.js.map +0 -1
- package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
- package/dist/src/agent/code-intelligence/tools.js.map +0 -1
- package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
- package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
- package/dist/src/agent/context/project-context.js.map +0 -1
- package/dist/src/agent/context/workspace-seed.js.map +0 -1
- package/dist/src/agent/context/workspace-state.js.map +0 -1
- package/dist/src/agent/context/workspace.js.map +0 -1
- package/dist/src/agent/embedded/run-for-session.js.map +0 -1
- package/dist/src/agent/embedded/run-turn.js.map +0 -1
- package/dist/src/agent/embedded/runs.js.map +0 -1
- package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
- package/dist/src/agent/embedded/session-runner.js.map +0 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
- package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
- package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
- package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
- package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
- package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
- package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
- package/dist/src/agent/failover-error.js.map +0 -1
- package/dist/src/agent/fallback/candidates.js.map +0 -1
- package/dist/src/agent/fallback/reason.js.map +0 -1
- package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
- package/dist/src/agent/goals/checklist-judge.js.map +0 -1
- package/dist/src/agent/goals/checklist-types.js.map +0 -1
- package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
- package/dist/src/agent/goals/goal-locale.js.map +0 -1
- package/dist/src/agent/goals/judge.js.map +0 -1
- package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
- package/dist/src/agent/goals/post-turn.js.map +0 -1
- package/dist/src/agent/goals/state.js.map +0 -1
- package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
- package/dist/src/agent/image/generation/bundled.js.map +0 -1
- package/dist/src/agent/image/generation/image-assets.js.map +0 -1
- package/dist/src/agent/image/generation/model-ref.js.map +0 -1
- package/dist/src/agent/image/generation/normalization.js.map +0 -1
- package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
- package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
- package/dist/src/agent/image/generation/runtime.js.map +0 -1
- package/dist/src/agent/image/image-helpers.js.map +0 -1
- package/dist/src/agent/image/image-model-fallback.js.map +0 -1
- package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
- package/dist/src/agent/image/load-image-media.js.map +0 -1
- package/dist/src/agent/image/tool-model-config.js.map +0 -1
- package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
- package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
- package/dist/src/agent/image/understanding/runtime.js.map +0 -1
- package/dist/src/agent/image/vision-detection.js.map +0 -1
- package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
- package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
- package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
- package/dist/src/agent/ipc/bus.js.map +0 -1
- package/dist/src/agent/ipc/inbox.js.map +0 -1
- package/dist/src/agent/ipc/socket.js.map +0 -1
- package/dist/src/agent/ipc/types.js.map +0 -1
- package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
- package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
- package/dist/src/agent/lifecycle/manager.js.map +0 -1
- package/dist/src/agent/lifecycle/progress.js.map +0 -1
- package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
- package/dist/src/agent/lifecycle/typing.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
- package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
- package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
- package/dist/src/agent/mcp/mcp-http.js.map +0 -1
- package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
- package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
- package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
- package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
- package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
- package/dist/src/agent/media-generation/model-ref.js.map +0 -1
- package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
- package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
- package/dist/src/agent/memory/agent-message-access.js.map +0 -1
- package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
- package/dist/src/agent/memory/builtin-provider.js.map +0 -1
- package/dist/src/agent/memory/compaction.js.map +0 -1
- package/dist/src/agent/memory/context/planner.js.map +0 -1
- package/dist/src/agent/memory/context-fence.js.map +0 -1
- package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
- package/dist/src/agent/memory/dreaming/config.js.map +0 -1
- package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
- package/dist/src/agent/memory/dreaming/events.js.map +0 -1
- package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
- package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
- package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
- package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
- package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
- package/dist/src/agent/memory/lifecycle.js.map +0 -1
- package/dist/src/agent/memory/manager.js.map +0 -1
- package/dist/src/agent/memory/memory-config.js.map +0 -1
- package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
- package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
- package/dist/src/agent/memory/sensitivity.js.map +0 -1
- package/dist/src/agent/memory/source-origin.js.map +0 -1
- package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
- package/dist/src/agent/memory/summary-generator.js.map +0 -1
- package/dist/src/agent/memory/understanding/correction.js.map +0 -1
- package/dist/src/agent/memory/understanding/quality.js.map +0 -1
- package/dist/src/agent/memory/understanding/service.js.map +0 -1
- package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
- package/dist/src/agent/memory/user-message-text.js.map +0 -1
- package/dist/src/agent/memory/window.js.map +0 -1
- package/dist/src/agent/messaging/command-handler.js.map +0 -1
- package/dist/src/agent/messaging/message-router.js.map +0 -1
- package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
- package/dist/src/agent/messaging/stream-manager.js.map +0 -1
- package/dist/src/agent/middleware/context.js.map +0 -1
- package/dist/src/agent/middleware/self-verify.js.map +0 -1
- package/dist/src/agent/models/manager.js.map +0 -1
- package/dist/src/agent/models/request-limiter.js.map +0 -1
- package/dist/src/agent/models/selection.js.map +0 -1
- package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
- package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
- package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
- package/dist/src/agent/prompt/memory/index.js.map +0 -1
- package/dist/src/agent/prompt/safety.js.map +0 -1
- package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
- package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
- package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
- package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
- package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
- package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
- package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
- package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
- package/dist/src/agent/prompt/subagent-context.js.map +0 -1
- package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
- package/dist/src/agent/prompt/system-prompt.js.map +0 -1
- package/dist/src/agent/prompt/system-reminder.js.map +0 -1
- package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
- package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
- package/dist/src/agent/reply/startup-context.js.map +0 -1
- package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
- package/dist/src/agent/sandbox/command-validator.js.map +0 -1
- package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
- package/dist/src/agent/sandbox/path-policy.js.map +0 -1
- package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
- package/dist/src/agent/sandbox/types.js.map +0 -1
- package/dist/src/agent/service/async-queue.js.map +0 -1
- package/dist/src/agent/service/btw-query.js.map +0 -1
- package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
- package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
- package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
- package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
- package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
- package/dist/src/agent/service/session-context-report.js.map +0 -1
- package/dist/src/agent/service/webchat-tts.js.map +0 -1
- package/dist/src/agent/service-inbound-utils.js.map +0 -1
- package/dist/src/agent/service.js.map +0 -1
- package/dist/src/agent/session/session-config-service.js.map +0 -1
- package/dist/src/agent/session/session-context.js.map +0 -1
- package/dist/src/agent/session/session-hydrator.js.map +0 -1
- package/dist/src/agent/session/session-inspector.js.map +0 -1
- package/dist/src/agent/session/session-lifecycle.js.map +0 -1
- package/dist/src/agent/session/session-state-bag.js.map +0 -1
- package/dist/src/agent/session/tracker.js.map +0 -1
- package/dist/src/agent/skills/config.js.map +0 -1
- package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
- package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
- package/dist/src/agent/skills/hub-hash.js.map +0 -1
- package/dist/src/agent/skills/hub-lock.js.map +0 -1
- package/dist/src/agent/skills/hub-pull.js.map +0 -1
- package/dist/src/agent/skills/index.js.map +0 -1
- package/dist/src/agent/skills/install-target.js.map +0 -1
- package/dist/src/agent/skills/installer.js.map +0 -1
- package/dist/src/agent/skills/managed-store.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
- package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
- package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
- package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
- package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
- package/dist/src/agent/skills/required-env-vars.js.map +0 -1
- package/dist/src/agent/skills/scanner.js.map +0 -1
- package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
- package/dist/src/agent/skills/skill-manager.js.map +0 -1
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
- package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
- package/dist/src/agent/skills/skill-view-path.js.map +0 -1
- package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
- package/dist/src/agent/skills/test-framework.js.map +0 -1
- package/dist/src/agent/skills/watcher.js.map +0 -1
- package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
- package/dist/src/agent/source-context/injector.js.map +0 -1
- package/dist/src/agent/source-context/types.js.map +0 -1
- package/dist/src/agent/starter-agents.js.map +0 -1
- package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
- package/dist/src/agent/tool-manuals/browser.js.map +0 -1
- package/dist/src/agent/tool-manuals/index.js.map +0 -1
- package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
- package/dist/src/agent/tools/apply-patch.js.map +0 -1
- package/dist/src/agent/tools/automation-tool.js.map +0 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
- package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
- package/dist/src/agent/tools/chain-tracker.js.map +0 -1
- package/dist/src/agent/tools/clarify-tool.js.map +0 -1
- package/dist/src/agent/tools/cli-clarify.js.map +0 -1
- package/dist/src/agent/tools/communication.js.map +0 -1
- package/dist/src/agent/tools/composio-tool.js.map +0 -1
- package/dist/src/agent/tools/concurrency.js.map +0 -1
- package/dist/src/agent/tools/create-share-tool.js.map +0 -1
- package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
- package/dist/src/agent/tools/delegate-tool.js.map +0 -1
- package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
- package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
- package/dist/src/agent/tools/edit-diff.js.map +0 -1
- package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
- package/dist/src/agent/tools/error-tracker.js.map +0 -1
- package/dist/src/agent/tools/exec-command.js.map +0 -1
- package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
- package/dist/src/agent/tools/executor.js.map +0 -1
- package/dist/src/agent/tools/factory.js.map +0 -1
- package/dist/src/agent/tools/find.js.map +0 -1
- package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
- package/dist/src/agent/tools/goal-tool.js.map +0 -1
- package/dist/src/agent/tools/grep.js.map +0 -1
- package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
- package/dist/src/agent/tools/image-tool.js.map +0 -1
- package/dist/src/agent/tools/list-dir.js.map +0 -1
- package/dist/src/agent/tools/media-read-tool.js.map +0 -1
- package/dist/src/agent/tools/memory-tool.js.map +0 -1
- package/dist/src/agent/tools/metadata.js.map +0 -1
- package/dist/src/agent/tools/read.js.map +0 -1
- package/dist/src/agent/tools/search/http.js.map +0 -1
- package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
- package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
- package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
- package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
- package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
- package/dist/src/agent/tools/search/region.js.map +0 -1
- package/dist/src/agent/tools/search/registry.js.map +0 -1
- package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
- package/dist/src/agent/tools/send-media.js.map +0 -1
- package/dist/src/agent/tools/session-search-tool.js.map +0 -1
- package/dist/src/agent/tools/session-status-tool.js.map +0 -1
- package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
- package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
- package/dist/src/agent/tools/skills-tools.js.map +0 -1
- package/dist/src/agent/tools/structured-output.js.map +0 -1
- package/dist/src/agent/tools/todo-tool.js.map +0 -1
- package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
- package/dist/src/agent/tools/tool-paths.js.map +0 -1
- package/dist/src/agent/tools/truncate.js.map +0 -1
- package/dist/src/agent/tools/tts-tool.js.map +0 -1
- package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
- package/dist/src/agent/tools/url-safety.js.map +0 -1
- package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
- package/dist/src/agent/tools/web-extract.js.map +0 -1
- package/dist/src/agent/tools/web.js.map +0 -1
- package/dist/src/agent/tools/workflow-tool.js.map +0 -1
- package/dist/src/agent/tools/write.js.map +0 -1
- package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
- package/dist/src/agent/transcript/google-api.js.map +0 -1
- package/dist/src/agent/transcript/model-selection.js.map +0 -1
- package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
- package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
- package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
- package/dist/src/agent/transcript/thinking-types.js.map +0 -1
- package/dist/src/agent/transcript/thinking.js.map +0 -1
- package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
- package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
- package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
- package/dist/src/agent/workflow/agent-progress.js.map +0 -1
- package/dist/src/agent/workflow/builtins/index.js.map +0 -1
- package/dist/src/agent/workflow/catalog.js.map +0 -1
- package/dist/src/agent/workflow/progress-broker.js.map +0 -1
- package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
- package/dist/src/agent/workflow/snapshot.js.map +0 -1
- package/dist/src/agent/workflow/step-labels.js.map +0 -1
- package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
- package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
- package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
- package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
- package/dist/src/agent-manifest/index.js.map +0 -1
- package/dist/src/agent-manifest/preset-chain.js.map +0 -1
- package/dist/src/agent-manifest/prompt.js.map +0 -1
- package/dist/src/agent-manifest/resolver.js.map +0 -1
- package/dist/src/agent-manifest/schema.js.map +0 -1
- package/dist/src/agent-manifest/validator.js.map +0 -1
- package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
- package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
- package/dist/src/agent-runtime/model-router.js.map +0 -1
- package/dist/src/agent-runtime/run-trace.js.map +0 -1
- package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
- package/dist/src/agent-runtime/tool-registry.js.map +0 -1
- package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
- package/dist/src/ai-assist/text-assist.js.map +0 -1
- package/dist/src/auth/credentials.js.map +0 -1
- package/dist/src/auth/index.js.map +0 -1
- package/dist/src/auth/oauth/anthropic.js.map +0 -1
- package/dist/src/auth/oauth/github-copilot.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
- package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
- package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
- package/dist/src/auth/oauth/minimax.js.map +0 -1
- package/dist/src/auth/oauth/openai-codex.js.map +0 -1
- package/dist/src/auth/oauth/pkce.js.map +0 -1
- package/dist/src/auth/profiles/oauth.js.map +0 -1
- package/dist/src/auth/profiles/order.js.map +0 -1
- package/dist/src/auth/profiles/profiles.js.map +0 -1
- package/dist/src/auth/profiles/store.js.map +0 -1
- package/dist/src/auth/sync-provider-auth.js.map +0 -1
- package/dist/src/automations/api/routes.js.map +0 -1
- package/dist/src/automations/domain/schedule.js.map +0 -1
- package/dist/src/automations/domain/validation.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
- package/dist/src/automations/product-events.js.map +0 -1
- package/dist/src/automations/service/action-executor.js.map +0 -1
- package/dist/src/automations/service/automation-service.js.map +0 -1
- package/dist/src/automations/storage/automation-repository.js.map +0 -1
- package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
- package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
- package/dist/src/browser/actions/registry.js.map +0 -1
- package/dist/src/browser/backend-from-config.js.map +0 -1
- package/dist/src/browser/browser-command-timeout.js.map +0 -1
- package/dist/src/browser/cache-dir-policy.js.map +0 -1
- package/dist/src/browser/cdp-local-launcher.js.map +0 -1
- package/dist/src/browser/cdp-supervisor.js.map +0 -1
- package/dist/src/browser/free-port.js.map +0 -1
- package/dist/src/browser/humanize.js.map +0 -1
- package/dist/src/browser/install-lock.js.map +0 -1
- package/dist/src/browser/manager.js.map +0 -1
- package/dist/src/browser/pipeline/output.js.map +0 -1
- package/dist/src/browser/pipeline/runner.js.map +0 -1
- package/dist/src/browser/pipeline/schema.js.map +0 -1
- package/dist/src/browser/pipeline/source.js.map +0 -1
- package/dist/src/browser/pipeline/template.js.map +0 -1
- package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
- package/dist/src/browser/providers/browser-use.js.map +0 -1
- package/dist/src/browser/providers/browserbase.js.map +0 -1
- package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
- package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
- package/dist/src/browser/providers/extension.js.map +0 -1
- package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
- package/dist/src/browser/providers/playwright-install.js.map +0 -1
- package/dist/src/browser/readiness.js.map +0 -1
- package/dist/src/browser/schemas.js.map +0 -1
- package/dist/src/browser/session-lifecycle.js.map +0 -1
- package/dist/src/browser/snapshot-helpers.js.map +0 -1
- package/dist/src/browser/stealth.js.map +0 -1
- package/dist/src/browser/url-policy.js.map +0 -1
- package/dist/src/capabilities/store-connector.js.map +0 -1
- package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
- package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
- package/dist/src/channels/attachments/inbound-types.js.map +0 -1
- package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
- package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
- package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
- package/dist/src/channels/config-helpers.js.map +0 -1
- package/dist/src/channels/envelope-timestamp.js.map +0 -1
- package/dist/src/channels/exec-approval-runtime.js.map +0 -1
- package/dist/src/channels/health-monitor.js.map +0 -1
- package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
- package/dist/src/channels/internal-outbound.js.map +0 -1
- package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
- package/dist/src/channels/manager.js.map +0 -1
- package/dist/src/channels/media.js.map +0 -1
- package/dist/src/channels/outbound/deliver.js.map +0 -1
- package/dist/src/channels/outbound/normalize.js.map +0 -1
- package/dist/src/channels/outbound/persist-store.js.map +0 -1
- package/dist/src/channels/outbound/queue.js.map +0 -1
- package/dist/src/channels/outbound-sender.js.map +0 -1
- package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
- package/dist/src/channels/pairing/approve-cli.js.map +0 -1
- package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
- package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
- package/dist/src/channels/pairing/pairing-events.js.map +0 -1
- package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
- package/dist/src/channels/pairing/pairing-service.js.map +0 -1
- package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
- package/dist/src/channels/pairing/pairing-store.js.map +0 -1
- package/dist/src/channels/pairing/paths.js.map +0 -1
- package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
- package/dist/src/channels/pipeline.js.map +0 -1
- package/dist/src/channels/plugin-registry.js.map +0 -1
- package/dist/src/channels/plugins/registry.js.map +0 -1
- package/dist/src/channels/restart-policy.js.map +0 -1
- package/dist/src/channels/security-helpers.js.map +0 -1
- package/dist/src/channels/security.js.map +0 -1
- package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
- package/dist/src/chat-commands/agent-edit.js.map +0 -1
- package/dist/src/chat-commands/builtins/config.js.map +0 -1
- package/dist/src/chat-commands/builtins/context.js.map +0 -1
- package/dist/src/chat-commands/builtins/goal.js.map +0 -1
- package/dist/src/chat-commands/builtins/model.js.map +0 -1
- package/dist/src/chat-commands/builtins/review.js.map +0 -1
- package/dist/src/chat-commands/builtins/session.js.map +0 -1
- package/dist/src/chat-commands/builtins/skill.js.map +0 -1
- package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
- package/dist/src/chat-commands/builtins/system.js.map +0 -1
- package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
- package/dist/src/chat-commands/builtins/tts.js.map +0 -1
- package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
- package/dist/src/chat-commands/command-parse.js.map +0 -1
- package/dist/src/chat-commands/config-paths.js.map +0 -1
- package/dist/src/chat-commands/config-value.js.map +0 -1
- package/dist/src/chat-commands/context.js.map +0 -1
- package/dist/src/chat-commands/format-output.js.map +0 -1
- package/dist/src/chat-commands/index.js.map +0 -1
- package/dist/src/chat-commands/processor.js.map +0 -1
- package/dist/src/chat-commands/registry.js.map +0 -1
- package/dist/src/chat-commands/session-key.js.map +0 -1
- package/dist/src/cli/argv-invocation.js.map +0 -1
- package/dist/src/cli/argv.js.map +0 -1
- package/dist/src/cli/bin.js.map +0 -1
- package/dist/src/cli/cli-log-level-preset.js.map +0 -1
- package/dist/src/cli/command-catalog.js.map +0 -1
- package/dist/src/cli/command-loaders.js.map +0 -1
- package/dist/src/cli/command-manifest.js.map +0 -1
- package/dist/src/cli/command-path-matches.js.map +0 -1
- package/dist/src/cli/command-path-policy.js.map +0 -1
- package/dist/src/cli/command-startup-policy.js.map +0 -1
- package/dist/src/cli/commands/agent/interactive.js.map +0 -1
- package/dist/src/cli/commands/agent/sessions.js.map +0 -1
- package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
- package/dist/src/cli/commands/agent.js.map +0 -1
- package/dist/src/cli/commands/agents.js.map +0 -1
- package/dist/src/cli/commands/auth.js.map +0 -1
- package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
- package/dist/src/cli/commands/browser.js.map +0 -1
- package/dist/src/cli/commands/channels.js.map +0 -1
- package/dist/src/cli/commands/config.js.map +0 -1
- package/dist/src/cli/commands/connectors.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
- package/dist/src/cli/commands/doctor/flow.js.map +0 -1
- package/dist/src/cli/commands/doctor/format.js.map +0 -1
- package/dist/src/cli/commands/doctor/index.js.map +0 -1
- package/dist/src/cli/commands/extension-create.js.map +0 -1
- package/dist/src/cli/commands/extension-dev.js.map +0 -1
- package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
- package/dist/src/cli/commands/extension-pack.js.map +0 -1
- package/dist/src/cli/commands/extension.js.map +0 -1
- package/dist/src/cli/commands/gateway/call.js.map +0 -1
- package/dist/src/cli/commands/gateway/health.js.map +0 -1
- package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
- package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
- package/dist/src/cli/commands/gateway/logs.js.map +0 -1
- package/dist/src/cli/commands/gateway/probe.js.map +0 -1
- package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
- package/dist/src/cli/commands/gateway/restart.js.map +0 -1
- package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
- package/dist/src/cli/commands/gateway/service.js.map +0 -1
- package/dist/src/cli/commands/gateway/shared.js.map +0 -1
- package/dist/src/cli/commands/gateway/status.js.map +0 -1
- package/dist/src/cli/commands/gateway/stop.js.map +0 -1
- package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
- package/dist/src/cli/commands/gateway/token.js.map +0 -1
- package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
- package/dist/src/cli/commands/gateway.js.map +0 -1
- package/dist/src/cli/commands/goal.js.map +0 -1
- package/dist/src/cli/commands/image.js.map +0 -1
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/logs.js.map +0 -1
- package/dist/src/cli/commands/models.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
- package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
- package/dist/src/cli/commands/onboard/model.js.map +0 -1
- package/dist/src/cli/commands/onboard.js.map +0 -1
- package/dist/src/cli/commands/profile.js.map +0 -1
- package/dist/src/cli/commands/project.js.map +0 -1
- package/dist/src/cli/commands/providers.js.map +0 -1
- package/dist/src/cli/commands/resume.js.map +0 -1
- package/dist/src/cli/commands/search.js.map +0 -1
- package/dist/src/cli/commands/session/actions.js.map +0 -1
- package/dist/src/cli/commands/session/utils.js.map +0 -1
- package/dist/src/cli/commands/session.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
- package/dist/src/cli/commands/setup.js.map +0 -1
- package/dist/src/cli/commands/skills-test.js.map +0 -1
- package/dist/src/cli/commands/skills.js.map +0 -1
- package/dist/src/cli/commands/tailscale.js.map +0 -1
- package/dist/src/cli/commands/tui-runner.js.map +0 -1
- package/dist/src/cli/commands/tui.js.map +0 -1
- package/dist/src/cli/commands/tunnel.js.map +0 -1
- package/dist/src/cli/commands/update.js.map +0 -1
- package/dist/src/cli/commands/voice.js.map +0 -1
- package/dist/src/cli/context.js.map +0 -1
- package/dist/src/cli/extension-cli-register.js.map +0 -1
- package/dist/src/cli/gateway-run-argv.js.map +0 -1
- package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/registry.js.map +0 -1
- package/dist/src/cli/templates.js.map +0 -1
- package/dist/src/cli/utils/colors.js.map +0 -1
- package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
- package/dist/src/cli/utils/gateway-client.js.map +0 -1
- package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
- package/dist/src/cli/utils/init-workspace.js.map +0 -1
- package/dist/src/cli/utils/oauth-login.js.map +0 -1
- package/dist/src/cli/utils/oauth-providers.js.map +0 -1
- package/dist/src/cli/utils/session.js.map +0 -1
- package/dist/src/commands/agents.config.js.map +0 -1
- package/dist/src/config/agent-profile.js.map +0 -1
- package/dist/src/config/agent-typed-models.js.map +0 -1
- package/dist/src/config/commands.flags.js.map +0 -1
- package/dist/src/config/default-model.js.map +0 -1
- package/dist/src/config/diff.js.map +0 -1
- package/dist/src/config/gateway-bind.js.map +0 -1
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/mcp-config-normalize.js.map +0 -1
- package/dist/src/config/model-input.js.map +0 -1
- package/dist/src/config/models-json.js.map +0 -1
- package/dist/src/config/paths-state.js.map +0 -1
- package/dist/src/config/paths.js.map +0 -1
- package/dist/src/config/profile.js.map +0 -1
- package/dist/src/config/public-url.js.map +0 -1
- package/dist/src/config/reload.js.map +0 -1
- package/dist/src/config/resolve-config-value.js.map +0 -1
- package/dist/src/config/rules.js.map +0 -1
- package/dist/src/config/runtime-overrides.js.map +0 -1
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/config/validate-channel-configs.js.map +0 -1
- package/dist/src/config/voice.js.map +0 -1
- package/dist/src/config/web-patch.js.map +0 -1
- package/dist/src/config/workspace-defaults.js.map +0 -1
- package/dist/src/config/workspace-dirs.js.map +0 -1
- package/dist/src/config/workspace-path-helpers.js.map +0 -1
- package/dist/src/config/workspace-path.js.map +0 -1
- package/dist/src/connectors/approval.js.map +0 -1
- package/dist/src/connectors/auth-provider-registry.js.map +0 -1
- package/dist/src/connectors/builtin-catalog.js.map +0 -1
- package/dist/src/connectors/catalog.js.map +0 -1
- package/dist/src/connectors/composio-catalog.js.map +0 -1
- package/dist/src/connectors/composio-logo.js.map +0 -1
- package/dist/src/connectors/composio-sessions.js.map +0 -1
- package/dist/src/connectors/composio-triggers.js.map +0 -1
- package/dist/src/connectors/composio.js.map +0 -1
- package/dist/src/connectors/connector-memory-sync.js.map +0 -1
- package/dist/src/connectors/health.js.map +0 -1
- package/dist/src/connectors/install.js.map +0 -1
- package/dist/src/connectors/instances.js.map +0 -1
- package/dist/src/connectors/integration-strategy.js.map +0 -1
- package/dist/src/connectors/lifecycle.js.map +0 -1
- package/dist/src/connectors/materialize.js.map +0 -1
- package/dist/src/connectors/policy.js.map +0 -1
- package/dist/src/connectors/providers.js.map +0 -1
- package/dist/src/connectors/registries/modelscope.js.map +0 -1
- package/dist/src/connectors/registries/official-mcp.js.map +0 -1
- package/dist/src/connectors/registries/search.js.map +0 -1
- package/dist/src/connectors/registries/smithery.js.map +0 -1
- package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
- package/dist/src/connectors/secret-store.js.map +0 -1
- package/dist/src/connectors/setup-secrets.js.map +0 -1
- package/dist/src/connectors/supervisor.js.map +0 -1
- package/dist/src/connectors/usage.js.map +0 -1
- package/dist/src/connectors/workflow-preflight.js.map +0 -1
- package/dist/src/daemon/constants.js.map +0 -1
- package/dist/src/daemon/install-plan.js.map +0 -1
- package/dist/src/daemon/launchd.js.map +0 -1
- package/dist/src/daemon/schtasks.js.map +0 -1
- package/dist/src/daemon/service-audit.js.map +0 -1
- package/dist/src/daemon/service.js.map +0 -1
- package/dist/src/daemon/systemd.js.map +0 -1
- package/dist/src/document-understanding/extract.js.map +0 -1
- package/dist/src/errors/index.js.map +0 -1
- package/dist/src/extensions/activation-context.js.map +0 -1
- package/dist/src/extensions/activation-planner.js.map +0 -1
- package/dist/src/extensions/api.js.map +0 -1
- package/dist/src/extensions/bundle-mcp.js.map +0 -1
- package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
- package/dist/src/extensions/diagnostics.js.map +0 -1
- package/dist/src/extensions/discover-extensions.js.map +0 -1
- package/dist/src/extensions/engine-check.js.map +0 -1
- package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
- package/dist/src/extensions/extension-registry-impl.js.map +0 -1
- package/dist/src/extensions/health.js.map +0 -1
- package/dist/src/extensions/hooks.js.map +0 -1
- package/dist/src/extensions/index.js.map +0 -1
- package/dist/src/extensions/install-transaction.js.map +0 -1
- package/dist/src/extensions/install.js.map +0 -1
- package/dist/src/extensions/loader.js.map +0 -1
- package/dist/src/extensions/lockfile.js.map +0 -1
- package/dist/src/extensions/manifest-registry.js.map +0 -1
- package/dist/src/extensions/marketplace.js.map +0 -1
- package/dist/src/extensions/media-provider-contracts.js.map +0 -1
- package/dist/src/extensions/normalize-manifest.js.map +0 -1
- package/dist/src/extensions/onboard-helpers.js.map +0 -1
- package/dist/src/extensions/package-contract.js.map +0 -1
- package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
- package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
- package/dist/src/extensions/sdk/index.js.map +0 -1
- package/dist/src/extensions/sdk/lazy.js.map +0 -1
- package/dist/src/extensions/sdk/testing.js.map +0 -1
- package/dist/src/extensions/security.js.map +0 -1
- package/dist/src/extensions/slots.js.map +0 -1
- package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
- package/dist/src/extensions/store-zip-limits.js.map +0 -1
- package/dist/src/extensions/typed-event-bus.js.map +0 -1
- package/dist/src/extensions/types/hooks.js.map +0 -1
- package/dist/src/extensions/types/providers.js.map +0 -1
- package/dist/src/extensions/update.js.map +0 -1
- package/dist/src/extensions/when-context.js.map +0 -1
- package/dist/src/extensions/when-expression.js.map +0 -1
- package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
- package/dist/src/gateway/agent-run-relay.js.map +0 -1
- package/dist/src/gateway/agents-admin.js.map +0 -1
- package/dist/src/gateway/auth.js.map +0 -1
- package/dist/src/gateway/capability-presets-admin.js.map +0 -1
- package/dist/src/gateway/chat-limits.js.map +0 -1
- package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
- package/dist/src/gateway/clarify-bridge.js.map +0 -1
- package/dist/src/gateway/clarify-runtime.js.map +0 -1
- package/dist/src/gateway/client-ip.js.map +0 -1
- package/dist/src/gateway/config-tools-web.js.map +0 -1
- package/dist/src/gateway/credential.js.map +0 -1
- package/dist/src/gateway/discovery/mdns.js.map +0 -1
- package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
- package/dist/src/gateway/ensure-network-cors.js.map +0 -1
- package/dist/src/gateway/file-path-classifier.js.map +0 -1
- package/dist/src/gateway/file-reference-registry.js.map +0 -1
- package/dist/src/gateway/global-defaults-admin.js.map +0 -1
- package/dist/src/gateway/heartbeat/service.js.map +0 -1
- package/dist/src/gateway/hono/app.js.map +0 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
- package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
- package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
- package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
- package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
- package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
- package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
- package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
- package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
- package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
- package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
- package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
- package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
- package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
- package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
- package/dist/src/gateway/hono/oauth-async.js.map +0 -1
- package/dist/src/gateway/hono/oauth.js.map +0 -1
- package/dist/src/gateway/hono/routes/activity.js.map +0 -1
- package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
- package/dist/src/gateway/hono/routes/agents.js.map +0 -1
- package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
- package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
- package/dist/src/gateway/hono/routes/browser.js.map +0 -1
- package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
- package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
- package/dist/src/gateway/hono/routes/channels.js.map +0 -1
- package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
- package/dist/src/gateway/hono/routes/config.js.map +0 -1
- package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
- package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
- package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
- package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
- package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
- package/dist/src/gateway/hono/routes/goals.js.map +0 -1
- package/dist/src/gateway/hono/routes/home.js.map +0 -1
- package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
- package/dist/src/gateway/hono/routes/index.js.map +0 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
- package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
- package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
- package/dist/src/gateway/hono/routes/logs.js.map +0 -1
- package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
- package/dist/src/gateway/hono/routes/media.js.map +0 -1
- package/dist/src/gateway/hono/routes/memory.js.map +0 -1
- package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
- package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
- package/dist/src/gateway/hono/routes/models.js.map +0 -1
- package/dist/src/gateway/hono/routes/notes.js.map +0 -1
- package/dist/src/gateway/hono/routes/projects.js.map +0 -1
- package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/search.js.map +0 -1
- package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
- package/dist/src/gateway/hono/routes/shares.js.map +0 -1
- package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
- package/dist/src/gateway/hono/routes/status.js.map +0 -1
- package/dist/src/gateway/hono/routes/tui.js.map +0 -1
- package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
- package/dist/src/gateway/hono/routes/update.js.map +0 -1
- package/dist/src/gateway/hono/routes/voice.js.map +0 -1
- package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
- package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
- package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
- package/dist/src/gateway/hono/routes/you.js.map +0 -1
- package/dist/src/gateway/hono/sse-json.js.map +0 -1
- package/dist/src/gateway/hono/sse.js.map +0 -1
- package/dist/src/gateway/host.js.map +0 -1
- package/dist/src/gateway/image-capabilities.js.map +0 -1
- package/dist/src/gateway/listen.js.map +0 -1
- package/dist/src/gateway/lock.js.map +0 -1
- package/dist/src/gateway/ports.js.map +0 -1
- package/dist/src/gateway/protocol.js.map +0 -1
- package/dist/src/gateway/public-url.js.map +0 -1
- package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
- package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
- package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
- package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
- package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
- package/dist/src/gateway/respawn.js.map +0 -1
- package/dist/src/gateway/run-loop.js.map +0 -1
- package/dist/src/gateway/runtime-config.js.map +0 -1
- package/dist/src/gateway/security/audit.js.map +0 -1
- package/dist/src/gateway/security/csp.js.map +0 -1
- package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
- package/dist/src/gateway/security/external-content.js.map +0 -1
- package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
- package/dist/src/gateway/security/loopback.js.map +0 -1
- package/dist/src/gateway/security/operator-scopes.js.map +0 -1
- package/dist/src/gateway/security/origin-check.js.map +0 -1
- package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
- package/dist/src/gateway/security/secret-equal.js.map +0 -1
- package/dist/src/gateway/server-tailscale.js.map +0 -1
- package/dist/src/gateway/server.js.map +0 -1
- package/dist/src/gateway/service/agent-runner.js.map +0 -1
- package/dist/src/gateway/service/config-coordinator.js.map +0 -1
- package/dist/src/gateway/service/marketplace-service.js.map +0 -1
- package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
- package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
- package/dist/src/gateway/service/sessions-api.js.map +0 -1
- package/dist/src/gateway/service/sse-hub.js.map +0 -1
- package/dist/src/gateway/service.js.map +0 -1
- package/dist/src/gateway/session-reset-service.js.map +0 -1
- package/dist/src/gateway/startup-readiness.js.map +0 -1
- package/dist/src/gateway/startup-trace.js.map +0 -1
- package/dist/src/gateway/tailscale-auth.js.map +0 -1
- package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
- package/dist/src/gateway/tls-server.js.map +0 -1
- package/dist/src/gateway/trusted-proxy.js.map +0 -1
- package/dist/src/gateway/user-turn-input.js.map +0 -1
- package/dist/src/gateway/workspace-editor-path.js.map +0 -1
- package/dist/src/gateway/workspace-file-search.js.map +0 -1
- package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
- package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
- package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
- package/dist/src/gateway/ws-security.js.map +0 -1
- package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
- package/dist/src/goals/goal-contract-draft.js.map +0 -1
- package/dist/src/goals/goal-evidence-review.js.map +0 -1
- package/dist/src/goals/goal-notifications.js.map +0 -1
- package/dist/src/goals/goal-queue-store.js.map +0 -1
- package/dist/src/goals/goal-runner.js.map +0 -1
- package/dist/src/goals/goal-service.js.map +0 -1
- package/dist/src/goals/goal-store.js.map +0 -1
- package/dist/src/goals/goal-workflow-judge.js.map +0 -1
- package/dist/src/heartbeat/active-hours.js.map +0 -1
- package/dist/src/heartbeat/content-check.js.map +0 -1
- package/dist/src/heartbeat/event-prompt.js.map +0 -1
- package/dist/src/heartbeat/tokens.js.map +0 -1
- package/dist/src/heartbeat/wake.js.map +0 -1
- package/dist/src/i18n/format.js.map +0 -1
- package/dist/src/i18n/goals-bundle.js.map +0 -1
- package/dist/src/i18n/locale.js.map +0 -1
- package/dist/src/i18n/locales/goals.en.js.map +0 -1
- package/dist/src/i18n/locales/goals.zh.js.map +0 -1
- package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
- package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
- package/dist/src/i18n/share-tool-bundle.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/infra/brew.js.map +0 -1
- package/dist/src/infra/bus/queue.js.map +0 -1
- package/dist/src/infra/debounce.js.map +0 -1
- package/dist/src/infra/exec.js.map +0 -1
- package/dist/src/infra/gateway-process-argv.js.map +0 -1
- package/dist/src/infra/gateway-processes.js.map +0 -1
- package/dist/src/infra/host-env-security-policy.js.map +0 -1
- package/dist/src/infra/host-env-security.js.map +0 -1
- package/dist/src/infra/http-proxy-env.js.map +0 -1
- package/dist/src/infra/is-main.js.map +0 -1
- package/dist/src/infra/json-utf8-bytes.js.map +0 -1
- package/dist/src/infra/node-sqlite.js.map +0 -1
- package/dist/src/infra/package-json.js.map +0 -1
- package/dist/src/infra/package-update-steps.js.map +0 -1
- package/dist/src/infra/path-env.js.map +0 -1
- package/dist/src/infra/path-prepend.js.map +0 -1
- package/dist/src/infra/ports.js.map +0 -1
- package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
- package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
- package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
- package/dist/src/infra/restart.js.map +0 -1
- package/dist/src/infra/retry.js.map +0 -1
- package/dist/src/infra/run-command.js.map +0 -1
- package/dist/src/infra/sqlite-errors.js.map +0 -1
- package/dist/src/infra/ssh-tunnel.js.map +0 -1
- package/dist/src/infra/stable-node-path.js.map +0 -1
- package/dist/src/infra/tailscale.js.map +0 -1
- package/dist/src/infra/undici-fetch.js.map +0 -1
- package/dist/src/infra/unhandled-rejections.js.map +0 -1
- package/dist/src/infra/update-channels.js.map +0 -1
- package/dist/src/infra/update-check.js.map +0 -1
- package/dist/src/infra/update-global.js.map +0 -1
- package/dist/src/infra/update-lock.js.map +0 -1
- package/dist/src/infra/update-log.js.map +0 -1
- package/dist/src/infra/update-restart.js.map +0 -1
- package/dist/src/infra/update-runner.js.map +0 -1
- package/dist/src/infra/update-startup.js.map +0 -1
- package/dist/src/infra/warning-filter.js.map +0 -1
- package/dist/src/infra/write-file-atomic.js.map +0 -1
- package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
- package/dist/src/knowledge/coordinator.js.map +0 -1
- package/dist/src/knowledge/ingestion-service.js.map +0 -1
- package/dist/src/local-apps/acceptance.js.map +0 -1
- package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
- package/dist/src/local-apps/runtime-entry.js.map +0 -1
- package/dist/src/local-apps/scaffold.js.map +0 -1
- package/dist/src/local-apps/service.js.map +0 -1
- package/dist/src/local-apps/store.js.map +0 -1
- package/dist/src/markdown/chunk.js.map +0 -1
- package/dist/src/markdown/code-spans.js.map +0 -1
- package/dist/src/markdown/fences.js.map +0 -1
- package/dist/src/markdown/frontmatter.js.map +0 -1
- package/dist/src/markdown/ir.js.map +0 -1
- package/dist/src/markdown/render.js.map +0 -1
- package/dist/src/markdown/tables.js.map +0 -1
- package/dist/src/mcp/channel-bridge.js.map +0 -1
- package/dist/src/mcp/channel-server.js.map +0 -1
- package/dist/src/mcp/channel-shared.js.map +0 -1
- package/dist/src/mcp/channel-tools.js.map +0 -1
- package/dist/src/mcp/gateway-http-client.js.map +0 -1
- package/dist/src/media/media-reference.js.map +0 -1
- package/dist/src/media/paths.js.map +0 -1
- package/dist/src/media/session-references.js.map +0 -1
- package/dist/src/media/store.js.map +0 -1
- package/dist/src/media/uri.js.map +0 -1
- package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
- package/dist/src/media-shared/http/deadline.js.map +0 -1
- package/dist/src/media-shared/http/private-network.js.map +0 -1
- package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
- package/dist/src/media-shared/http/provider-http.js.map +0 -1
- package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
- package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
- package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
- package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
- package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
- package/dist/src/media-understanding/registry.js.map +0 -1
- package/dist/src/media-understanding/resolve-entries.js.map +0 -1
- package/dist/src/media-understanding/runner.js.map +0 -1
- package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
- package/dist/src/migrations/registry.js.map +0 -1
- package/dist/src/migrations/runner.js.map +0 -1
- package/dist/src/mobile/notification-service.js.map +0 -1
- package/dist/src/mobile/notification-store.js.map +0 -1
- package/dist/src/mobile/notification-types.js.map +0 -1
- package/dist/src/notes/agent-context.js.map +0 -1
- package/dist/src/notes/attachment-ref.js.map +0 -1
- package/dist/src/notes/note-attachment-sync.js.map +0 -1
- package/dist/src/notes/note-index-meta.js.map +0 -1
- package/dist/src/notes/note-markdown.js.map +0 -1
- package/dist/src/notes/paths.js.map +0 -1
- package/dist/src/notes/service.js.map +0 -1
- package/dist/src/notes/store.js.map +0 -1
- package/dist/src/package-version.js.map +0 -1
- package/dist/src/pets/factory.js.map +0 -1
- package/dist/src/pets/manifest.js.map +0 -1
- package/dist/src/pets/validator.js.map +0 -1
- package/dist/src/process/kill-tree.js.map +0 -1
- package/dist/src/project-trust/trust-store.js.map +0 -1
- package/dist/src/projects/automation-bind.js.map +0 -1
- package/dist/src/projects/goal-bind.js.map +0 -1
- package/dist/src/projects/memory-bind.js.map +0 -1
- package/dist/src/projects/project-agent-suggestion.js.map +0 -1
- package/dist/src/projects/project-agent.js.map +0 -1
- package/dist/src/projects/project-kind.js.map +0 -1
- package/dist/src/projects/project-loop.js.map +0 -1
- package/dist/src/projects/project-service.js.map +0 -1
- package/dist/src/projects/project-store.js.map +0 -1
- package/dist/src/projects/session-bind.js.map +0 -1
- package/dist/src/projects/workflow-bind.js.map +0 -1
- package/dist/src/projects/workspace-project.js.map +0 -1
- package/dist/src/projects/workspace.js.map +0 -1
- package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
- package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
- package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
- package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
- package/dist/src/providers/constants.js.map +0 -1
- package/dist/src/providers/domestic-presets.js.map +0 -1
- package/dist/src/providers/env-keys.js.map +0 -1
- package/dist/src/providers/extension-stream-bridge.js.map +0 -1
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/providers/model-call.js.map +0 -1
- package/dist/src/providers/model-discovery.js.map +0 -1
- package/dist/src/providers/model-registry.js.map +0 -1
- package/dist/src/providers/model-supplements.js.map +0 -1
- package/dist/src/providers/plugin-registry.js.map +0 -1
- package/dist/src/providers/presentation.js.map +0 -1
- package/dist/src/remote-access/exposure-guards.js.map +0 -1
- package/dist/src/remote-access/exposure-manager.js.map +0 -1
- package/dist/src/review/review-git.js.map +0 -1
- package/dist/src/review/review-types.js.map +0 -1
- package/dist/src/routing/account-id.js.map +0 -1
- package/dist/src/routing/agent-session-key.js.map +0 -1
- package/dist/src/routing/bindings.js.map +0 -1
- package/dist/src/routing/index.js.map +0 -1
- package/dist/src/routing/resolve-route.js.map +0 -1
- package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
- package/dist/src/routing/session-key-utils.js.map +0 -1
- package/dist/src/routing/session-key.js.map +0 -1
- package/dist/src/session/abort-cutoff.js.map +0 -1
- package/dist/src/session/chat-export.js.map +0 -1
- package/dist/src/session/client-history.js.map +0 -1
- package/dist/src/session/compaction-checkpoints.js.map +0 -1
- package/dist/src/session/config-store.js.map +0 -1
- package/dist/src/session/init-session-turn.js.map +0 -1
- package/dist/src/session/lifecycle-timestamps.js.map +0 -1
- package/dist/src/session/load-jsonl-entries.js.map +0 -1
- package/dist/src/session/manager.js.map +0 -1
- package/dist/src/session/patch-metadata.js.map +0 -1
- package/dist/src/session/reset-policy.js.map +0 -1
- package/dist/src/session/reset-triggers.js.map +0 -1
- package/dist/src/session/reset-type.js.map +0 -1
- package/dist/src/session/resolve-session.js.map +0 -1
- package/dist/src/session/session-context-for-llm.js.map +0 -1
- package/dist/src/session/session-id.js.map +0 -1
- package/dist/src/session/session-title.js.map +0 -1
- package/dist/src/session/session-workspace.js.map +0 -1
- package/dist/src/session/store.js.map +0 -1
- package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
- package/dist/src/session/thinking-resolve.js.map +0 -1
- package/dist/src/session/transcript-events.js.map +0 -1
- package/dist/src/session/transcript-format.js.map +0 -1
- package/dist/src/session/transcript-outline.js.map +0 -1
- package/dist/src/session/transcript-stats.js.map +0 -1
- package/dist/src/session/types.js.map +0 -1
- package/dist/src/session/user-round-delete.js.map +0 -1
- package/dist/src/share/share-audit.js.map +0 -1
- package/dist/src/share/share-auto.js.map +0 -1
- package/dist/src/share/share-config.js.map +0 -1
- package/dist/src/share/share-landing.js.map +0 -1
- package/dist/src/share/share-rate-limit.js.map +0 -1
- package/dist/src/share/share-store.js.map +0 -1
- package/dist/src/share/share-thumbnail.js.map +0 -1
- package/dist/src/share/share-types.js.map +0 -1
- package/dist/src/share/share-url.js.map +0 -1
- package/dist/src/share/share-zip.js.map +0 -1
- package/dist/src/share/site-proxy.js.map +0 -1
- package/dist/src/share/site-share-config.js.map +0 -1
- package/dist/src/share/site-share-router.js.map +0 -1
- package/dist/src/share/site-share-store.js.map +0 -1
- package/dist/src/share/site-share-types.js.map +0 -1
- package/dist/src/share/site-static-serve.js.map +0 -1
- package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
- package/dist/src/storage/sqlite/config-repository.js.map +0 -1
- package/dist/src/storage/sqlite/connection.js.map +0 -1
- package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
- package/dist/src/storage/sqlite/fts.js.map +0 -1
- package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
- package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
- package/dist/src/storage/sqlite/paths.js.map +0 -1
- package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
- package/dist/src/storage/sqlite/schema-version.js.map +0 -1
- package/dist/src/storage/sqlite/schema.js.map +0 -1
- package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
- package/dist/src/storage/sqlite/session-repository.js.map +0 -1
- package/dist/src/storage/sqlite/transaction.js.map +0 -1
- package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
- package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
- package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
- package/dist/src/tui/backends/embedded-backend.js.map +0 -1
- package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
- package/dist/src/tui/chat-history.js.map +0 -1
- package/dist/src/tui/clipboard-image.js.map +0 -1
- package/dist/src/tui/clipboard-text.js.map +0 -1
- package/dist/src/tui/components/assistant-message.js.map +0 -1
- package/dist/src/tui/components/bash-execution.js.map +0 -1
- package/dist/src/tui/components/bash-summary.js.map +0 -1
- package/dist/src/tui/components/branch-message-summary.js.map +0 -1
- package/dist/src/tui/components/branch-summary.js.map +0 -1
- package/dist/src/tui/components/chat-log.js.map +0 -1
- package/dist/src/tui/components/compaction-summary.js.map +0 -1
- package/dist/src/tui/components/custom-editor.js.map +0 -1
- package/dist/src/tui/components/custom-message.js.map +0 -1
- package/dist/src/tui/components/dynamic-border.js.map +0 -1
- package/dist/src/tui/components/extension-dialog.js.map +0 -1
- package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
- package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
- package/dist/src/tui/components/searchable-select-list.js.map +0 -1
- package/dist/src/tui/components/session-selector.js.map +0 -1
- package/dist/src/tui/components/settings-selector.js.map +0 -1
- package/dist/src/tui/components/thinking-selector.js.map +0 -1
- package/dist/src/tui/components/tool-execution.js.map +0 -1
- package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
- package/dist/src/tui/components/tui-header.js.map +0 -1
- package/dist/src/tui/components/user-message.js.map +0 -1
- package/dist/src/tui/components/visual-truncate.js.map +0 -1
- package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
- package/dist/src/tui/extension-host/host.js.map +0 -1
- package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
- package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
- package/dist/src/tui/extension-host/runtime.js.map +0 -1
- package/dist/src/tui/extension-host/surface.js.map +0 -1
- package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
- package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
- package/dist/src/tui/sse-consumer.js.map +0 -1
- package/dist/src/tui/theme/dark.js.map +0 -1
- package/dist/src/tui/theme/light.js.map +0 -1
- package/dist/src/tui/theme-manager.js.map +0 -1
- package/dist/src/tui/theme.js.map +0 -1
- package/dist/src/tui/tool-summary.js.map +0 -1
- package/dist/src/tui/tui-agent-events.js.map +0 -1
- package/dist/src/tui/tui-command-formatters.js.map +0 -1
- package/dist/src/tui/tui-commands.js.map +0 -1
- package/dist/src/tui/tui-context-usage.js.map +0 -1
- package/dist/src/tui/tui-extension-user-message.js.map +0 -1
- package/dist/src/tui/tui-fd-path.js.map +0 -1
- package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
- package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
- package/dist/src/tui/tui-git-branch.js.map +0 -1
- package/dist/src/tui/tui-keybindings-file.js.map +0 -1
- package/dist/src/tui/tui-lifecycle.js.map +0 -1
- package/dist/src/tui/tui-local-shell.js.map +0 -1
- package/dist/src/tui/tui-model-picker.js.map +0 -1
- package/dist/src/tui/tui-oauth-login.js.map +0 -1
- package/dist/src/tui/tui-overlays.js.map +0 -1
- package/dist/src/tui/tui-picker-overlay.js.map +0 -1
- package/dist/src/tui/tui-run-state.js.map +0 -1
- package/dist/src/tui/tui-run-status-format.js.map +0 -1
- package/dist/src/tui/tui-runtime-hints.js.map +0 -1
- package/dist/src/tui/tui-scoped-models.js.map +0 -1
- package/dist/src/tui/tui-session-actions.js.map +0 -1
- package/dist/src/tui/tui-session-format.js.map +0 -1
- package/dist/src/tui/tui-session-snapshot.js.map +0 -1
- package/dist/src/tui/tui-session-stats.js.map +0 -1
- package/dist/src/tui/tui-settings.js.map +0 -1
- package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
- package/dist/src/tui/tui-startup-resources.js.map +0 -1
- package/dist/src/tui/tui-startup-text.js.map +0 -1
- package/dist/src/tui/tui-stdio-filter.js.map +0 -1
- package/dist/src/tui/tui-submit.js.map +0 -1
- package/dist/src/tui/tui-suspend.js.map +0 -1
- package/dist/src/tui/tui-timeline-picker.js.map +0 -1
- package/dist/src/tui/tui-timeline.js.map +0 -1
- package/dist/src/tui/tui-tool-diff.js.map +0 -1
- package/dist/src/tui/tui-tool-result.js.map +0 -1
- package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
- package/dist/src/tui/tui-transcript-tree.js.map +0 -1
- package/dist/src/tui/tui-types.js.map +0 -1
- package/dist/src/tui/tui-workflow-slash.js.map +0 -1
- package/dist/src/tui/tui.js.map +0 -1
- package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
- package/dist/src/tunnel/broker-client.js.map +0 -1
- package/dist/src/tunnel/consent.js.map +0 -1
- package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
- package/dist/src/tunnel/env.js.map +0 -1
- package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
- package/dist/src/tunnel/frpc-binary.js.map +0 -1
- package/dist/src/tunnel/frpc-config.js.map +0 -1
- package/dist/src/tunnel/frpc-extract.js.map +0 -1
- package/dist/src/tunnel/frpc-process.js.map +0 -1
- package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
- package/dist/src/tunnel/pair-context.js.map +0 -1
- package/dist/src/tunnel/pair-url.js.map +0 -1
- package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
- package/dist/src/tunnel/pairing.js.map +0 -1
- package/dist/src/tunnel/tunnel-audit.js.map +0 -1
- package/dist/src/tunnel/tunnel-config.js.map +0 -1
- package/dist/src/tunnel/tunnel-persist.js.map +0 -1
- package/dist/src/tunnel/tunnel-qr.js.map +0 -1
- package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
- package/dist/src/tunnel/tunnel-service.js.map +0 -1
- package/dist/src/tunnel/tunnel-state.js.map +0 -1
- package/dist/src/tunnel/well-known.js.map +0 -1
- package/dist/src/user-context/config.js.map +0 -1
- package/dist/src/user-context/import.js.map +0 -1
- package/dist/src/user-context/owner.js.map +0 -1
- package/dist/src/user-context/profile.js.map +0 -1
- package/dist/src/user-context/projection.js.map +0 -1
- package/dist/src/user-context/runtime.js.map +0 -1
- package/dist/src/user-context/source-recommendations.js.map +0 -1
- package/dist/src/user-context/trust-policy.js.map +0 -1
- package/dist/src/utils/global-singleton.js.map +0 -1
- package/dist/src/utils/helpers.js.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/is-record.js.map +0 -1
- package/dist/src/utils/logger/audit.js.map +0 -1
- package/dist/src/utils/logger/config.js.map +0 -1
- package/dist/src/utils/logger/context.js.map +0 -1
- package/dist/src/utils/logger/exporters.js.map +0 -1
- package/dist/src/utils/logger/index.js.map +0 -1
- package/dist/src/utils/logger/log-store.js.map +0 -1
- package/dist/src/utils/logger/log-stream.js.map +0 -1
- package/dist/src/utils/logger/pino-record.js.map +0 -1
- package/dist/src/utils/logger/redact.js.map +0 -1
- package/dist/src/utils/logger/rotation.js.map +0 -1
- package/dist/src/utils/logger/shutdown.js.map +0 -1
- package/dist/src/utils/logger/stats.js.map +0 -1
- package/dist/src/utils/logger/streams.js.map +0 -1
- package/dist/src/utils/logger/types.js.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/redact-sensitive-url.js.map +0 -1
- package/dist/src/utils/sanitize-log.js.map +0 -1
- package/dist/src/utils/string-coerce.js.map +0 -1
- package/dist/src/voice/language-profile.js.map +0 -1
- package/dist/src/voice/local/model-files.js.map +0 -1
- package/dist/src/voice/local/model-manager.js.map +0 -1
- package/dist/src/voice/local/models.js.map +0 -1
- package/dist/src/voice/local/runtime-client.js.map +0 -1
- package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
- package/dist/src/voice/local/runtime-worker.js.map +0 -1
- package/dist/src/voice/local/wav.js.map +0 -1
- package/dist/src/voice/metadata/builtin.js.map +0 -1
- package/dist/src/voice/metadata/registry.js.map +0 -1
- package/dist/src/voice/stt/availability.js.map +0 -1
- package/dist/src/voice/stt/config-slice.js.map +0 -1
- package/dist/src/voice/stt/factory.js.map +0 -1
- package/dist/src/voice/stt/index.js.map +0 -1
- package/dist/src/voice/stt/list-providers.js.map +0 -1
- package/dist/src/voice/stt/mention.js.map +0 -1
- package/dist/src/voice/stt/preflight.js.map +0 -1
- package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
- package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
- package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
- package/dist/src/voice/stt/transcribe-core.js.map +0 -1
- package/dist/src/voice/stt/types.js.map +0 -1
- package/dist/src/voice/tts/audio.js.map +0 -1
- package/dist/src/voice/tts/config-slice.js.map +0 -1
- package/dist/src/voice/tts/directives.js.map +0 -1
- package/dist/src/voice/tts/factory.js.map +0 -1
- package/dist/src/voice/tts/list-providers.js.map +0 -1
- package/dist/src/voice/tts/merge-config.js.map +0 -1
- package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
- package/dist/src/voice/tts/payload.js.map +0 -1
- package/dist/src/voice/tts/preprocess.js.map +0 -1
- package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
- package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
- package/dist/src/voice/tts/service.js.map +0 -1
- package/dist/src/voice/tts/speak-core.js.map +0 -1
- package/dist/src/voice/tts/speech-registry.js.map +0 -1
- package/dist/src/voice/tts/status-tracker.js.map +0 -1
- package/dist/src/voice/tts/summarize.js.map +0 -1
- package/dist/src/voice/tts/types.js.map +0 -1
- package/dist/src/work-discovery/analyzer.js.map +0 -1
- package/dist/src/work-discovery/probe.js.map +0 -1
- package/dist/src/work-discovery/repository.js.map +0 -1
- package/dist/src/work-discovery/service.js.map +0 -1
- package/dist/src/work-items/agent-context.js.map +0 -1
- package/dist/src/work-items/work-item-service.js.map +0 -1
- package/dist/src/work-items/work-item-store.js.map +0 -1
- package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
- package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
- package/dist/src/workflows/domain/definition-utils.js.map +0 -1
- package/dist/src/workflows/domain/run.js.map +0 -1
- package/dist/src/workflows/domain/schema-validation.js.map +0 -1
- package/dist/src/workflows/domain/validation.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
- package/dist/src/workflows/engine/projector.js.map +0 -1
- package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
- package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
- package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
- package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
- package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
- package/dist/src/workflows/store/event-store.js.map +0 -1
- package/dist/src/workflows/store/paths.js.map +0 -1
- package/dist/src/workflows/store/run-index-store.js.map +0 -1
- package/dist/src/workflows/store/run-store.js.map +0 -1
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var e={agentSettings:JSON.parse(`{"subtitle":"Defaults for models, workspace, sampling, and how responses are shown.","sectionDesc":"Changes are written to your gateway config file. Some values apply on the next agent turn or session.","needToken":"Save a gateway token to load and change agent defaults.","loadError":"Failed to load settings","save":"Save","discard":"Discard","saving":"Saving…","saved":"Saved","saveError":"Failed to save","routeIntro":{"workspace":"Working directory for agent files and limits for inbound images in the image tool.","browser":"Let the agent drive the web via browser_use. Enable tools, pick a connection method, then finish setup below.","runtime":"Per-turn time limits, tool call depth, request retries, and consecutive tool failure caps.","context":"Context compaction and tool-result pruning before messages reach the model.","memory":"Memory snapshots, session_search summary model, and optional background review.","tools":"Optional tools (web_extract, delegate_task, execute_code), global built-in tool access, and extension params JSON. Available skills are under Skills.","skills":"Skills marketplace source (use the section Save button) and default available skills for all agents (use the page header Save). Install skills in the Skills library. Per-tool toggles are under Tools.","systemPrompt":"Optional prompt customization for the selected agent profile.","modelStrategy":"Model roles and default role selection for agent settings.","generation":"Control response length, randomness, thinking level, reasoning visibility, and verbosity."},"defaultsTabs":{"workspace":"Workspace","browser":"Browser","runtime":"Turn limits","context":"Context","memory":"Memory","tools":"Tools","skills":"Skills","system-prompt":"System prompt","model-strategy":"Model strategy","generation":"Generation"},"defaultsTabsAria":"Agent default configuration sections","browserTabs":{"overview":"Overview","extension":"Chrome extension","local":"Local Chromium","cloakbrowser":"CloakBrowser","cdp":"CDP","cloud":"Cloud"},"browserTabsAria":"Browser settings sections","cardModelsTitle":"Default chat model","cardModelsSubtitle":"Primary model used by new sessions.","cardWorkspaceTitle":"Workspace & attachments","cardWorkspaceSubtitle":"Working directory and inbound media limits","cardBrowserTitle":"Browser automation","cardBrowserSubtitle":"browser_use — navigate, snapshot, click, screenshot, pipelines (Chrome extension, Playwright, CloakBrowser, …)","browserEnabledOn":"Enable browser tools","browserHeadlessOn":"Run headless (no visible window)","browserAllowPrivateOn":"Allow private/internal URLs","browserDialogPolicyMustRespond":"Agent must respond","browserDialogPolicyAutoDismiss":"Auto dismiss","browserDialogPolicyAutoAccept":"Auto accept","browserBackendLocal":"Local (Playwright)","browserBackendCdp":"CDP (Remote)","browserBackendCloud":"Cloud Provider","browserBackendExtension":"Chrome Extension","browserBackendCloakBrowser":"CloakBrowser","browserCloudProviderLocal":"Local (Playwright)","browserCloudProviderBrowserbase":"Browserbase","browserCloudProviderBrowserUse":"Browser Use","browserExtensionConnected":"Connected","browserExtensionDisconnected":"Disconnected","browserExtensionWaiting":"Waiting for connection…","browserExtensionServerOff":"Server not running","browserPlaywrightGuideTitle":"Local Playwright requires Chromium","browserPlaywrightGuideDesc":"When Local (Playwright) is selected, Chromium must be installed on the gateway host. You can install it here or run the install command manually on that machine.","browserPlaywrightInstall":"Install","browserPlaywrightInstalling":"Installing…","browserPlaywrightInstalled":"Chromium installed","browserPlaywrightInstallFailed":"Failed to install Chromium","browserPlaywrightManualInstall":"Manual install command","browserCloakGuideTitle":"Download CloakBrowser before first use","browserCloakGuideDesc":"CloakBrowser provides anti-fingerprint Chromium. After saving, the gateway uses it from this config; you can also run the install command first to download it.","browserCloakDownload":"Download","browserCloakInstalling":"Downloading…","browserCloakInstalled":"CloakBrowser downloaded","browserCloakInstallFailed":"Failed to download CloakBrowser","browserCloakOpen":"Open browser","browserCloakOpening":"Opening…","browserCloakOpenReused":"Connected to running browser · port {{port}}","browserCloakOpenLaunched":"Opened · port {{port}}","browserCloakProfileLabel":"Profile","browserCloakProfileAgentHint":"Uses the profile from saved config — same as agent runtime. Save settings after changing paths or profile options.","browserCloakRuntimeRunning":"Running · port {{port}}","browserCloakRuntimeOff":"Not running","browserCloakTemporaryProfileHint":"Temporary profile enabled — each launch uses a new profile","browserInstallPhaseStarting":"Preparing…","browserInstallPhaseDownloading":"Downloading…","browserInstallPhaseDownloadingPercent":"Downloading… {{percent}}%","browserInstallPhaseVerifying":"Verifying checksum…","browserInstallPhaseExtracting":"Extracting archive…","browserInstallPhaseRunning":"Running install…","browserInstallPhaseReady":"Finishing…","browserInstallCancel":"Cancel","browserInstallCancelling":"Cancelling…","browserInstallCancelled":"Install cancelled","browserCloakKeepOpenOn":"Keep browser alive between tasks","browserCloakTemporaryProfileOn":"Use a temporary profile each time","browserHumanizeOn":"Simulate more natural mouse, keyboard, and scroll input","browserHumanPresetCareful":"Careful (recommended)","browserHumanPresetDefault":"Standard","browserModeLocalShort":"Local Chromium","browserModeCloakShort":"CloakBrowser","browserModeCdpShort":"CDP","browserModeCloudShort":"Cloud","browserModeExtShort":"Extension","browserModeLocalTagline":"Playwright Chromium on the gateway host","browserModeCloakTagline":"Anti-fingerprint Chromium for stealth automation","browserModeCdpTagline":"Drive a local debuggable Chrome over CDP","browserModeCloudTagline":"Browserbase / Browser Use remote browsers","browserModeExtTagline":"Bridge a real user's Chrome via extension","browserDisabledHint":"Enable browser tools to choose a connection method and configure the backend.","browserDocsLink":"Browser tools docs","browserSetupTitle":"Get started","browserSetupSubtitle":"Pick a connection method — you can change it anytime after enabling browser tools.","browserSetupRecommended":"Recommended","browserSetupSelect":"Use this method","browserSetupExtTitle":"Chrome extension","browserSetupExtDesc":"Bridge your everyday Chrome. Best for sites that need a logged-in session.","browserSetupLocalTitle":"Local Playwright","browserSetupLocalDesc":"Headless or visible Chromium on the gateway host. Install once, then save.","browserSetupCloudTitle":"Cloud browser","browserSetupCloudDesc":"Browserbase or Browser Use — no local Chromium install required.","browserStatusStripBackend":"Connection","browserWorkspaceExtSubtitle":"Install the extension, start the bridge, and connect from Chrome.","browserWorkspaceLocalSubtitle":"Install Chromium on the gateway host to run Playwright locally.","browserWorkspaceCloakSubtitle":"Download CloakBrowser and tune anti-fingerprint options.","browserWorkspaceCdpSubtitle":"Launch or attach to a debuggable Chrome over CDP.","browserWorkspaceCloudSubtitle":"Connect to Browserbase or Browser Use with your API credentials.","browserBehaviorShow":"Runtime & dialogs","browserBehaviorHide":"Hide runtime & dialogs","browserBehaviorHint":"Headless mode and JavaScript dialog handling for all backends.","browserSecurityShow":"Security & limits","browserSecurityHide":"Hide security & limits","browserSecurityHint":"Private URL access and per-command timeouts. Cloud metadata endpoints are always blocked.","browserPickerTitle":"Active browser","browserPickerSubtitle":"Choose which backend agents use at runtime. Configure each method in its tab.","browserGoToConfigure":"Configure","browserConfiguringHeader":"Configuring: {{mode}}","browserSelectedBadge":"Selected","browserStatusReady":"Ready","browserStatusNotInstalled":"Not installed","browserStatusChecking":"Checking…","browserStatusUnknown":"Unknown","browserStatusError":"Error","browserAdvancedShow":"Advanced","browserAdvancedHide":"Hide advanced","browserReinstall":"Reinstall","browserConfirmDownloadTitle":"Download external binary","browserConfirmDownloadBody":"About to download CloakBrowser {{version}} for {{platform}} from {{url}}. The file will be SHA-256 verified before extraction.","browserConfirmDownloadConfirm":"Download & install","browserConfirmDownloadCancel":"Cancel","browserCloakSha256Skipped":"Manifest has no SHA-256 for this platform — integrity will NOT be verified.","browserCloakAdvancedShow":"Paths & fingerprint","browserCloakAdvancedHide":"Hide paths & fingerprint","browserCloakAdvancedHint":"Binary cache, custom executable, timezone/locale emulation, WebRTC IP, and extra Chromium flags.","browserCdpLaunchLocal":"Launch a debuggable Chrome locally","browserCdpLaunchLocalDesc":"Spawns Chrome with --remote-debugging-port so the agent can drive it. The window stays open until you click Stop.","browserCdpLaunching":"Launching…","browserCdpStopLocal":"Stop local Chrome","browserCdpLaunchedAtPort":"Launched on port {{port}} — endpoint filled in below.","browserCdpTestConnection":"Test connection","browserCdpTesting":"Testing…","browserCdpReachable":"Reachable — {{browser}}","browserCdpUnreachable":"Unreachable: {{error}}","browserCdpLoopbackOnly":"Only loopback endpoints (127.0.0.1 / localhost / ::1) are allowed for safety.","browserCdpChromePath":"Chrome executable (optional)","browserCdpChromePathDesc":"Optional override. Empty uses Playwright Chromium first, then the system Chrome/Chromium.","browserCloudTestConnection":"Test connection","browserCloudTestOk":"Connected ✓","browserCloudTestFailed":"Failed: {{error}}","browserBinaryPathWarning":"⚠ The gateway will execute the binary at this path with its own privileges. Only point to binaries you trust.","browserCacheDirHomeOnly":"Must be under your home directory (e.g. ~/.xopc/bin).","browserExtensionDownloadHint":"Load the xopc extension in Chrome and bridge to the gateway over WebSocket.","browserExtensionInstall":"Install locally","browserExtensionInstalling":"Installing…","browserExtensionInstalled":"Extension copied to","browserExtensionOpenChrome":"Open browser extensions","browserExtensionCopyPath":"Copy path","browserExtensionRevealFolder":"Open folder","browserExtensionPathCopied":"Path copied.","browserExtensionPathCopyFailed":"Could not copy the path. Select the path and copy it manually.","browserExtensionFolderOpened":"Folder opened in Finder/Explorer.","browserExtensionNeedsChromeReload":"xopc updated the extension on disk. Open chrome://extensions and click Reload on the xopc extension.","browserExtensionInstallGuideTitle":"Setup checklist","browserExtensionChecklistProgress":"{{done}}/{{total}} done","browserExtensionChecklistDone":"Completed:","browserExtensionChecklistPending":"Pending:","browserExtensionInstallStep1":"Click Install locally above to copy the extension to your machine.","browserExtensionInstallStep2":"Open the browser extensions page (Chrome or Edge) → turn on Developer mode → Load unpacked → select the folder below.","browserExtensionInstallStep2FolderLabel":"Extension folder","browserExtensionInstallStep3":"Click Start bridge, then Connect in the xopc extension popup from the browser toolbar.","browserExtensionStartBridge":"Start bridge","browserExtensionStarting":"Starting…","browserExtensionStopBridge":"Stop bridge","browserExtensionDisconnect":"Disconnect extension","browserExtensionPortConflict":"Port {{port}} is already in use. If this gateway owns the bridge, click Stop bridge; otherwise change the port or stop the process using it.","browserExtensionStartHint":"Start the WebSocket bridge now so you can pair the extension before saving. The bridge will keep running until you click Stop.","cardGenerationTitle":"Sampling & tools","cardGenerationSubtitle":"Token budget, randomness, and tool loop depth","cardBehaviorTitle":"Reasoning & output","cardBehaviorSubtitle":"Thinking depth, traces, and verbosity","label":{"model":"Model","modelFallbacks":"Fallback models","typedModels":"Model roles","smallModel":"Small model","smallModelFallbacks":"Small-model fallbacks","imageModel":"Image model","imageModelFallbacks":"Image understanding fallbacks","imageGenerationModel":"Image generation model","imageGenerationModelFallbacks":"Image generation fallbacks","mediaMaxMb":"Image load limit (MB)","workspace":"Workspace","browserEnabled":"Browser tools","browserHeadless":"Headless mode","browserAllowPrivateUrls":"Allow private URLs","browserCommandTimeout":"Command timeout (s)","browserBackend":"Backend mode","browserCloudProvider":"Cloud provider","browserCloudApiKey":"API Key","browserCloudProjectId":"Browserbase project ID","browserCloudRegion":"Cloud region","browserCdpUrl":"CDP endpoint URL","browserExtensionPort":"Extension port","browserExtensionHost":"Extension host","browserExtensionConnectionTimeout":"Connection timeout (s)","browserCloakKeepOpen":"Keep alive","browserCloakTemporaryProfile":"Temporary profile","browserCloakCacheDir":"Download cache dir","browserCloakBinaryPath":"Browser binary path","browserCloakTimezone":"Timezone","browserCloakLocale":"Locale","browserCloakWebrtcIp":"WebRTC public IP","browserCloakFingerprintPlatform":"Fingerprint platform","browserCloakExtraArgs":"Extra Chromium args","browserHumanize":"Humanized input","browserHumanPreset":"Input pace","browserDialogPolicy":"Dialog handling policy","browserDialogTimeout":"Dialog timeout (s)","maxTokens":"Max tokens","temperature":"Temperature","maxToolIterations":"Max tool iterations","thinkingDefault":"Thinking level","reasoningDefault":"Reasoning visibility","verboseDefault":"Verbose mode"},"desc":{"model":"Default model for new sessions.","modelFallbacks":"Tried in order when the primary model returns an error after transient retries. Requires API keys for each provider.","typedModels":"Named model roles for workflows or internal tasks, such as small, large, and vision.","smallModel":"Optional cheaper/faster tier for lightweight workflow steps. Leave blank to fall back to the primary model.","smallModelFallbacks":"Tried in order when the small primary fails. Requires API keys for each provider.","imageModel":"Optional. Used for image understanding / vision. Only models the gateway marks as accepting image input are listed.","imageModelFallbacks":"Tried in order when the primary vision model fails. Only models flagged as image-capable are listed.","imageGenerationModel":"Optional. For image_generate. Only providers the gateway reports as configured (API keys present) are listed.","imageGenerationModelFallbacks":"Tried in order when the primary image generation model fails. Only configured image-generation providers are listed.","mediaMaxMb":"Max size when loading images in the image tool.","workspace":"Working directory for agent files.","browserEnabled":"Exposes browser_use automation to the model (which browser runs depends on Backend mode below).","browserHeadless":"Default off: Chromium shows a window on the gateway machine. Turn on to run without a visible window (background).","browserAllowPrivateUrls":"Skip private-IP blocking for navigation. Cloud metadata endpoints (169.254.169.254, etc.) are always blocked regardless.","browserCommandTimeout":"Max seconds per browser command (navigate, click, etc.). Default 30.","browserBackend":"Connection mode: Local Playwright, direct CDP, cloud provider, or Chrome Extension bridge.","browserCloudProvider":"Cloud provider: Browserbase or Browser Use. You can set the API key here; environment variables BROWSERBASE_API_KEY / BROWSER_USE_API_KEY are still supported.","browserCloudApiKey":"Stored in gateway config. Leave empty to use process environment variables. Saved keys are masked on reload.","browserCloudProjectId":"Optional Browserbase project ID. Empty uses BROWSERBASE_PROJECT_ID or the provider default.","browserCloudRegion":"Optional. Passed to providers that support regions; empty uses the default region.","browserCdpUrl":"Direct Chrome DevTools Protocol WebSocket endpoint (e.g. ws://localhost:9222). Only used when backend is CDP.","browserExtensionPort":"WebSocket port for the Chrome Extension bridge. Default 19820.","browserExtensionHost":"Host for the Chrome Extension bridge. Default 127.0.0.1.","browserExtensionConnectionTimeout":"How long the gateway waits for the extension to connect (seconds). Default 30.","browserCloakKeepOpen":"Reuse one CloakBrowser process to reduce startup time for later tasks. Enabled by default.","browserCloakTemporaryProfile":"Use a temporary user-data directory on each launch and clean it up on close. Useful for isolated testing.","browserCloakCacheDir":"Optional. CloakBrowser home directory (binaries and profiles). Empty uses ~/.xopc/bin/cloakbrowser.","browserCloakBinaryPath":"Optional. Path to an existing CloakBrowser/Chromium executable, usually under ~/.xopc/bin. Set this to skip auto-download.","browserCloakTimezone":"Optional timezone to emulate (IANA name, e.g. America/New_York).","browserCloakLocale":"Optional locale to emulate (e.g. en-US).","browserCloakWebrtcIp":"Optional public IP for WebRTC leak prevention.","browserCloakFingerprintPlatform":"Optional platform string for fingerprint emulation (e.g. windows, macos).","browserCloakExtraArgs":"One Chromium flag per line. Args with the same --key= prefix override defaults.","browserHumanize":"Use Bezier mouse movement, per-character typing, and natural scroll pacing to reduce automation signals.","browserHumanPreset":"Choose the input pace. Careful is slower but closer to real user behavior.","browserDialogPolicy":"How JS dialogs (alert/confirm/prompt) are handled: agent must respond, auto dismiss, or auto accept.","browserDialogTimeout":"Seconds before an unhandled dialog is auto-dismissed/accepted (only for auto policies). Default 300.","maxTokens":"Maximum tokens in the model response.","temperature":"Randomness (0–2).","maxToolIterations":"Maximum tool calls per user message.","thinkingDefault":"Default thinking level for new sessions.","reasoningDefault":"Whether to surface model reasoning in the chat UI. Per-session overrides (e.g. /reasoning) take precedence until cleared.","verboseDefault":"Agent verbosity for logs/tool detail elsewhere — not the reasoning/thinking panel. Use Reasoning visibility to hide reasoning."},"addModelFallback":"Add fallback model","removeModelFallback":"Remove fallback model","addTypedModel":"Add model role","removeTypedModel":"Remove model role","typedModelIdLabel":"Role id","typedModelDescriptionLabel":"Description","typedModelIdPlaceholder":"small","typedModelDescriptionPlaceholder":"Optional hint for pickers","typedModelsInvalidId":"Each model role needs a valid id (lowercase letters, digits, hyphens, underscores).","typedModelsDuplicateId":"Duplicate model role id.","typedModelsInvalidModel":"Each model role needs a provider/model ref.","setDefaultWorkspace":"Set default","visionRegistryEmpty":"No models flagged as image-capable for your configured providers. Add \`input\` including \\"image\\" in models.json, or pick a provider model that exposes image input.","visionOutOfFilterNote":"Registry does not mark this model as image-capable; choose a vision model when possible.","imageGenRegistryEmpty":"No image generation providers are configured with API credentials. Add keys for a provider (e.g. OpenAI) in config or environment, then refresh.","imageGenOutOfFilterNote":"This model’s provider is not configured with credentials; image_generate will fail until you configure it or pick a configured provider.","reasoning":{"off":"Off","on":"On","stream":"Stream"},"verbose":{"off":"Off","on":"On","full":"Full"},"advanced":{"advancedOptionsShow":"Advanced options","advancedOptionsHide":"Hide advanced options","cardLimitsTitle":"Turn limits & reliability","cardLimitsSubtitle":"Wall-clock cap per user turn, request retries, and tool failure budget.","maxTaskDurationMs":"Max task duration (minutes)","maxTaskDurationMsDesc":"Per-user-turn wall time for LLM and tools. Leave empty to use the server default. Range 1–240 min (1 min–4 h).","maxTaskDurationPlaceholder":"e.g. 30 (empty = default)","maxRequestsPerTurn":"Max requests per turn","maxRequestsPerTurnDesc":"LLM request attempts per user message (reliability; default 50).","maxToolFailuresPerTurn":"Max tool failures per turn","maxToolFailuresPerTurnDesc":"Consecutive tool errors before giving up (default 3).","goalsCheckLink":"Goal checks → Goal progress rules","goalsCheckLinkHint":"Checklist judging defaults are configured under Settings → Automation → Goal runtime rules.","cardCompactionTitle":"Context compaction","cardCompactionSubtitle":"When to compact older context to stay within the model window.","compactionEnabled":"Enable compaction","compactionEnabledDesc":"When off, the runtime skips compaction (may use more context).","compactionEnabledOn":"Compaction on","compactionMode":"Mode","compactionModeDesc":"default: standard strategy; safeguard: stricter heuristics when enabled.","compactionModeDefault":"default","compactionModeSafeguard":"safeguard","reserveTokens":"Reserve tokens","reserveTokensDesc":"Headroom to leave after compaction (default 8000).","triggerThreshold":"Trigger threshold","triggerThresholdDesc":"Fraction of context that triggers compaction (0.5–0.95).","minMessagesBeforeCompact":"Min messages before compact","minMessagesBeforeCompactDesc":"Message count before compaction can run (default 10).","keepRecentMessages":"Keep recent messages","keepRecentMessagesDesc":"Recent turns always kept near the tail (default 5).","evictionWindow":"Eviction window","evictionWindowDesc":"Portion of history eligible for summary-first eviction (0.1–0.5).","retentionWindow":"Retention window","retentionWindowDesc":"Recent turns in the retention band (3–20).","cardPruningTitle":"Tool result pruning","cardPruningSubtitle":"Trim oversized tool results before the model sees them.","pruningEnabled":"Enable pruning","pruningEnabledDesc":"When off, full tool output may be sent to the model (higher cost).","pruningEnabledOn":"Pruning on","maxToolResultChars":"Max tool result characters","maxToolResultCharsDesc":"Default cap for a single tool result string (default 10000).","headKeepRatio":"Head keep ratio","headKeepRatioDesc":"Fraction kept from the start when pruning (0–1, default 0.3).","tailKeepRatio":"Tail keep ratio","tailKeepRatioDesc":"Fraction kept from the end (0–1, default 0.3).","cardMemoryTitle":"Memory (curated & external)","cardMemorySubtitle":"Agent notes, global user memory, and optional provider hooks.","memoryEnabled":"Memory features","memoryEnabledDesc":"Master switch: curated memory snapshot, tool, and external prefetch (when set).","memoryEnabledOn":"Enabled","useEnhancedSystem":"Use enhanced system","useEnhancedSystemDesc":"When off, use profile Markdown in the workspace only (no extra memory snapshot in system).","useEnhancedSystemOn":"Enhanced system on","userProfileEnabled":"Include user memory","userProfileEnabledDesc":"Add global user/MEMORY.md to the memory snapshot when present.","userProfileEnabledOn":"Include user profile","memoryProvider":"External memory provider","memoryProviderDesc":"none/stub, or leave unset to omit.","memoryProviderUnset":"(unset)","injectionFrequency":"External prefetch injection","injectionFrequencyDesc":"How often to inject prefetched memory into the user message context.","injectionFrequencyUnset":"(unset)","injectionEveryTurn":"Every turn (with cadence)","injectionFirstTurn":"First turn only","memoryCharLimit":"Memory character limit","memoryCharLimitDesc":"Max chars for the curated memory snapshot (optional).","userCharLimit":"User profile char limit","userCharLimitDesc":"Max chars for the global user memory section (optional).","contextCadence":"Context cadence","contextCadenceDesc":"When using every turn: inject on turns 1, 1+N, … (min 1).","dialecticCadence":"Dialectic cadence (reserved)","dialecticCadenceDesc":"Reserved; not yet wired. Min 1 when set.","cardSessionSearchTitle":"Session search (transcripts)","cardSessionSearchSubtitle":"Model used to summarize past sessions for the session_search tool.","sessionSearchSummaryModel":"Summary model","sessionSearchSummaryModelDesc":"e.g. openai/gpt-4o-mini. Leave empty to use runtime defaults.","cardWebExtractTitle":"web_extract (LLM pass)","cardWebExtractSubtitle":"Optional model and length for markdown web extraction.","webExtractModel":"Model","webExtractModelDesc":"Leave empty to use the default provider/model for extraction.","webExtractMaxLength":"Max length","webExtractMaxLengthDesc":"Max extracted characters (optional).","cardDelegateTitle":"Sub-agents & code execution","cardDelegateSubtitle":"Opt-in: delegate_task and sandboxed execute_code.","delegateEnabled":"Sub-agent delegate_task","delegateEnabledDesc":"When on, the agent may delegate to sub-agent runs (if supported).","delegateEnabledOn":"Enabled","executeCodeEnabled":"execute_code (sandboxed)","executeCodeEnabledDesc":"When on, the sandboxed code tool is available (if the runtime allows).","executeCodeEnabledOn":"Enabled","cardSystemPromptTitle":"System prompt","cardSystemPromptSubtitle":"Optional override of the default system context. Merged with per-agent values; entry-specific settings win.","cardSkillsTitle":"Available skills","cardSkillsSubtitle":"When non-empty, only these skills appear in <available_skills> in the prompt.","systemPromptOverride":"System prompt override","systemPromptOverrideDesc":"Optional full replacement; merged with per-agent entry (entry wins). Leave empty to clear.","systemPromptPlaceholder":"","skillsAllowlist":"Available skill names","skillsAllowlistDesc":"Only checked skills appear in <available_skills>. Leave empty for a clean default context; shared settings can declare their own visible skills.","skillsAllowlistModeAll":"No default skills","skillsAllowlistModeRestrict":"Only selected","skillsAllowlistNotInCatalog":"not in catalog","addSkillName":"Add skill name","removeListItem":"Remove row","cardToolsDisableTitle":"Tools — global disable","cardToolsDisableSubtitle":"Control built-in tool access for agent settings or shared settings (e.g. exec_command, web_search).","toolsDisableFieldLabel":"Built-in tools","toolsDisableHint":"Checked tools are available to the default agent; unchecked tools are blocked. Per-agent overrides in Agents still apply.","toolsDisableLoadingBuiltin":"Loading built-in tool list…","toolsDisableEmptyBuiltin":"No built-in tools returned by the gateway.","toolsDisableNotInBuiltin":"not in built-in list","toolsDisableQuickActionsLabel":"Quick actions","toolsDisableQuickEnableAll":"Enable all","toolsDisableQuickDisableAll":"Disable all","toolsDisableQuickReadOnlyWorkspace":"Read-only workspace","toolsDisableQuickHighRiskOff":"Block high-risk","toolsDisableQuickNoOutbound":"No outbound","addToolName":"Add tool name","cardParamsTitle":"Params (JSON)","cardParamsSubtitle":"Opaque key/value for extensions. Must be a JSON object.","paramsJson":"Params object","paramsJsonDesc":"e.g. {\\"myFlag\\": true}. Clear to remove params from the config file.","paramsInvalidJson":"Params must be valid JSON object (e.g. empty or {}). Check syntax."},"modelsOverrideTitle":"Global model roles","modelsOverrideHint":"Model roles live in each agent's settings. Shared behavior should move into shared settings.","modelResolutionGlobal":"Shared setting","modelResolutionAgent":"Agent override","modelResolutionSession":"Current session selection","modelResolutionUnset":"Not set","modelResolutionAgentInherits":"Inherited from shared settings when this agent uses one.","modelResolutionSessionSelectable":"The chat page can select a temporary session model."}`),agentsSettings:JSON.parse(`{"title":"Agents","subtitle":"Manage each agent's identity, workspace, models, tools, skills, and routing.","needToken":"Save a gateway token to manage agents.","loadError":"Failed to load agents","saveError":"Request failed","loading":"Loading…","tuiDefaultAgentTitle":"TUI default agent","tuiDefaultAgentHint":"Used by new terminal UI sessions when no agent is specified. Existing sessions and gateway routing are unchanged.","tuiDefaultAgentUnavailable":"Configured agent \\"{{agentId}}\\" is unavailable. Choose another agent to save a working default.","tuiDefaultAgentInheritOption":"Follow global default ({{agent}})","tuiDefaultAgentInheritedStatus":"Currently follows global default: {{agent}}","tuiDefaultAgentExplicitStatus":"Currently set to: {{agent}}","tuiDefaultAgentSave":"Save","tuiDefaultAgentSaving":"Saving…","tuiDefaultAgentSaved":"Saved","tuiDefaultAgentInvalid":"Choose an available agent for the TUI default.","selectAgent":"Agent","selectAgentHint":"Choose an entry to edit. Profile Markdown (SOUL.md, IDENTITY.md, …) is read from that agent's \`agents/<id>/profile/\` directory.","agent":"Agent","defaultBadge":"default","globalDefaultBadge":"global default","tuiDefaultBadge":"TUI default","tuiDefaultInheritedBadge":"TUI default · inherited","agentCardActions":"Agent actions","setGlobalDefault":"Set as global default","setTuiDefault":"Set as TUI default","inheritTuiDefault":"TUI follows global default","setDefault":"Set as default","editAgent":"Edit entry","editAgentHint":"Updates agents.list on the gateway. Paths are expanded (~ → home).","capabilityPresetsTitle":"Capability plans","capabilityPresetsHint":"The global baseline is applied first. Additional plans are applied in order, followed by this agent's own settings.","capabilityPresetsManage":"Manage capability plans","capabilityPresetsGlobalDefault":"Global baseline","capabilityPresetsGlobalDefaultHint":"Applied to every agent before additional plans and the agent's own settings.","capabilityPresetsEmpty":"This agent does not use any additional capability plans.","capabilityPresetsEmptyAdditional":"No additional plans. The global baseline still applies.","capabilityPresetAdd":"Add capability plan","capabilityPresetRemove":"Remove capability plan","capabilityPresetMoveUp":"Move capability plan up","capabilityPresetMoveDown":"Move capability plan down","createCapabilityPlansTitle":"Capability plans","createCapabilityPlansHint":"Optional. The global baseline is always included; choose any additional plans this agent should use.","inheritance":{"title":"Configuration sources","subtitle":"See whether key runtime fields come from shared settings or this agent's own settings.","editDefaultsLink":"Edit model strategy","modelLabel":"Primary model","workspaceLabel":"Workspace","badgeInherit":"Uses shared","badgeOverride":"Custom","inheritsValue":"Shared: {{value}}","unset":"Not set"},"displayName":"Display name","agentDescription":"Description","agentDescriptionPlaceholder":"Short summary shown on agent cards and in pickers (optional).","editLocalizedText":"Edit Chinese / English","hideLocalizedText":"Hide Chinese / English","languageChinese":"Chinese","languageEnglish":"English","workspacePath":"Markdown workspace","modelPrimary":"Model (primary)","modelSmall":"Small model","modelSmallHint":"Optional cheaper/faster tier for lightweight workflow steps. Leave blank to use shared model roles.","modelSmallDefaultsPrefix":"Shared: ","modelClear":"Clear","save":"Save","discard":"Discard","removeFromConfig":"Remove from config","purgeDisk":"Remove + delete data","addAgent":"Add agent","addAgentHint":"Same as CLI agents add: creates directories and seeds profile Markdown templates.","newAgentLabel":"Display name","newAgentIdOptional":"Agent ID (optional)","newAgentIdPlaceholder":"Leave empty to derive from display name","newAgentIdRules":"1–64 characters: letters, digits, underscores, hyphens; must start with a letter or digit. Avoid reserved ids (e.g. main, con).","newWorkspace":"Workspace directory (required)","newModelOptional":"Model (optional)","create":"Create agent","addAgentAria":"Add agent","createModalCancel":"Cancel","closeDialogAria":"Close","filesHint":"Editable persona files (SOUL, IDENTITY, …). Changes save automatically after you stop typing; use Preview to render Markdown.","filesLoading":"Loading file list…","filesEmpty":"No files yet.","pickFile":"Select a file to edit.","saveFile":"Save file","filesMarkdownEdit":"Edit","filesMarkdownPreview":"Preview","filesAutoSaveHint":"Auto-saves when you pause typing.","filesSavingStatus":"Saving…","missing":"missing","confirmDelete":"Remove this agent from config? Bindings referencing it will be stripped.","confirmDeletePurge":"Remove this agent and delete its workspace + ~/.xopc/agents/<id> data? This cannot be undone.","purgeConfirmLabel":"Type the agent id to confirm","purgeConfirmPlaceholder":"Type {{agentId}} to confirm","purgeConfirmHint":"This action is irreversible. Enter {{agentId}} exactly to enable deletion.","toolsTitle":"Built-in tools","toolsHint":"Tool access for this agent. Tools blocked by shared settings cannot be re-enabled here.","toolsSave":"Save tool disables","toolsClearEntry":"Clear per-agent disables","toolsLockedByPreset":"blocked by shared settings","toolsDisableGroups":{"unknown":"Custom ids (not in built-in list)","code-intelligence":"Code intelligence","workspace":"Workspace & search","execution":"Execution","web":"Web","messaging":"Channels & outbound","memory":"Memory & sessions","media":"Vision & generation","extensions":"Extensions","mcp":"MCP (bundle)","misc":"Other built-ins"},"toolDescriptions":{"code_search":"Search indexed symbols, definitions, implementations, routes, and types.","code_read_symbol":"Read exact source for a symbol returned by code search.","code_trace":"Trace callers, callees, data flow, and cross-service paths.","code_impact":"Map git changes to affected symbols and blast radius.","code_architecture":"Summarize packages, boundaries, layers, entry points, hotspots, and clusters.","read_file":"Read text and small files inside the agent workspace (paths are restricted to the workspace sandbox).","write_file":"Create new files or overwrite existing ones under the workspace.","apply_patch":"Apply strict multi-file patches for focused source changes.","list_dir":"List files and subfolders in a workspace directory.","grep":"Search file contents with regular expressions (similar to ripgrep).","find":"Find files by name or glob pattern under the workspace.","exec_command":"Run commands with workspace context; high impact, so disable for read-only or safer agents.","update_plan":"Update the visible multi-step coding plan for the current turn.","web_search":"Search the public web for facts and pages newer than the model may know.","web_fetch":"Fetch a URL and read its text content for the model.","browser_use":"Unified browser automation tool for navigation, snapshots, clicks, typing, screenshots, and browser pipelines.","send_message":"Send outbound chat messages on connected channels (e.g. Telegram, CLI, gateway) when the agent replies.","send_media":"Send images or other media attachments through those channels.","memory_search":"Search indexed memories and notes stored for this agent.","memory_get":"Load a specific memory entry or chunk by id.","curated_memory":"Read or update curated markdown memories under the agent home directory.","session_search":"Search across saved conversation transcripts and per-session summaries.","image":"Analyze or describe images (vision) from the workspace or the current turn.","image_generate":"Generate images using the configured image / image-generation model.","extensions":"Expose tools registered by enabled extensions — disable to block all extension tools.","bundle-mcp":"Load tools from configured MCP servers (global mcp.servers and extension .mcp.json)."},"skillsTitle":"Available skills","skillsHint":"These skills appear in this agent's Chat / menu and <available_skills>. Other skills are hidden from the agent. Inherit uses shared settings; customize sets this agent's skills.","skillsInherit":"Use shared settings","skillsCustomize":"Choose skills","skillsSave":"Save skills","modelsTabTitle":"Model roles","modelsTabHint":"Configure named workflow model roles for this agent, or use shared model roles.","modelsInherit":"Use shared model roles","modelsCustomize":"Edit global roles","modelsResetInherit":"Restore model strategy","modelsDefaultsLink":"Edit settings","modelsPresetLabel":"Shared:","modelsEffectiveLabel":"Active:","modelsSave":"Save model roles","typedModelIdLabel":"Role id","typedModelDescriptionLabel":"Description","typedModelPrimaryModelLabel":"Primary model","typedModelFallbackModelsLabel":"Fallback order","typedModelAddFallback":"Add fallback","typedModelRemoveFallback":"Remove fallback","typedModelFallbackPlaceholder":"Select fallback model","typedModelFallbackEmptyHint":"No fallback models. Add one to try it after the primary model fails.","addTypedModel":"Add model role","removeTypedModel":"Remove model role","typedModelRecommendedTitle":"Recommended purposes","typedModelCustomTitle":"Custom roles","typedModelDefaultBadge":"Default","typedModelVisionBadge":"Vision","typedModelVisionAutoHint":"When no manual image understanding model is set, this image-capable role can be selected automatically at runtime.","addTypedModelPurpose":"Add {name}","typedModelNoCustomRoles":"No custom roles.","typedModelRoleNames":{"deep":"Deep model","fast":"Fast model","cheap":"Low-cost model","code":"Code model","review":"Review model"},"typedModelRoleDescriptions":{"deep":"Complex reasoning, planning, and long-context work.","fast":"Short replies, lightweight decisions, and low-latency tasks.","cheap":"Batch work, summaries, and cost-sensitive tasks.","code":"Code understanding, edits, tests, and architecture analysis.","review":"Reviews, risk checks, and second-pass validation."},"typedModelIdPlaceholder":"small","typedModelDescriptionPlaceholder":"Optional hint","typedModelsInvalidId":"Each model role needs a valid id (lowercase letters, digits, hyphens, underscores).","typedModelsDuplicateId":"Duplicate model role id.","typedModelsInvalidModel":"Each model role needs a provider/model ref.","skillsCatalogLoading":"Loading skill catalog…","skillsEmptyCatalog":"No skills in catalog.","skillsNoDescription":"No description in SKILL.md metadata.","skillsPresetLabel":"Shared skills:","skillsEffectiveLabel":"Active skills:","skillsAllFromCatalog":"—","channelsTitle":"Routing bindings","channelsHint":"config.bindings rows for this agent. Removing a rule updates the full bindings array on the gateway.","channelsLoading":"Loading bindings…","channelsNone":"No bindings target this agent.","channelLabel":"Channel","peerIdLabel":"Peer id (optional)","channelsLoadingChannels":"Loading channel list…","channelsManualChannelHint":"Gateway returned no channel list. Enter a channel id (e.g. telegram, webchat, gateway).","channelsDisabledSuffix":"(disabled)","channelsSessionLabel":"Match","channelsRefreshSessions":"Refresh","channelsRefreshSessionsHint":"Reload recent sessions for this channel","channelsLoadingSessions":"Loading sessions…","channelsPeerFromSessions":"From sessions","channelsPeerAny":"All traffic on this channel","channelsNoSessionsHint":"No session history for this channel yet. Send a message or enter a custom peer id below.","channelsCustomPeerHint":"If set, overrides the session picker. Supports * globs; see session routing docs.","channelsCustomPeerPlaceholder":"e.g. 12345 or *","addBinding":"Add binding","removeBinding":"Remove","cronTitle":"Scheduled jobs","cronHint":"Isolated cron jobs can pin an agent id for the session key. Jobs without an agent id use the default agent and appear when that agent is selected.","cronLoading":"Loading cron jobs…","cronNone":"No matching jobs.","cronColSchedule":"Schedule","cronColMessage":"Message","cronColSession":"Session","cronColAgent":"Agent","cronAgentDefault":"Default agent","cronAgentClear":"Reset to default","navOverview":"Overview","navProfile":"Identity & behavior","navCapabilities":"Capabilities","navRuntime":"Runtime","navBehavior":"Profile","navTools":"Tools","navSkills":"Skills","navConnections":"Connections","navAdvanced":"Advanced","navConfig":"Config","navDangerZone":"Danger zone","configSubtabSources":"Sources","configSubtabShared":"Shared settings","configSubtabEffective":"Effective config","connectionsTitle":"Connections","filesNavAria":"Profile files","listSearchPlaceholder":"Search by name, id, or workspace","listEmpty":"No agents match your search.","listNoAgentsYet":"No agents yet. Create one to get started.","listNewAgentCard":"New agent","listChatWithAgent":"Chat","listCustomBadge":"custom","listNoDescription":"No description yet.","listModelLabel":"Model","listWorkspaceLabel":"Workspace","listToolsLabel":"Tools","listSkillsLabel":"Skills","listInheritedValue":"Inherited","listUnsetValue":"Not set","listToolsAllEnabled":"All enabled","listToolsDisabledCount":"{{count}} disabled","listSkillsCount":"{{count}} allowed","builtInAgents":{"assistant":{"name":"Smart Assistant","description":"Your personal intelligent assistant for questions, everyday tasks, and conversation."},"coding":{"name":"Coding Expert","description":"Build, debug, refactor, and test software."},"writing":{"name":"Writing Assistant","description":"Draft, edit, and refine content for its audience."},"research":{"name":"Research Assistant","description":"Research topics, compare sources, and synthesize findings."},"data":{"name":"Data Analyst","description":"Clean and analyze data, create visualizations, and report results."},"creative":{"name":"Creative Assistant","description":"Explore visual direction, prompts, critique, and creative options."}},"editorNavAria":"Agent editor sections","capabilitiesHint":"Choose what this agent can use. Tool access and installed skills belong to this agent, even though user memory is shared.","capabilitiesToolsTab":"Tools","capabilitiesSkillsTab":"Skills","capabilitiesNavAria":"Agent capabilities","runtimeWorkspaceTitle":"Working directory","runtimeWorkspaceHint":"Files and Markdown workspace used when this agent runs.","advancedHint":"Inspect source files, inheritance, and effective configuration. These controls are intended for advanced setup and diagnosis.","advancedFilesTab":"Profile files","advancedConfigTab":"Configuration","advancedNavAria":"Advanced agent settings","advancedRuntimeCoverageHint":"Effective configuration shows the merged manifest. Whether every field is enforced depends on current runtime support.","skillsLibraryLink":"Skill library","personaHint":"Set up your agent's identity and personality with a friendly form. For raw Markdown, use Profile Markdown.","personaSectionIdentity":"Agent Identity","personaSectionIdentityHint":"How your agent presents itself","personaSectionUser":"About You","personaSectionUserHint":"Help your agent know you better","personaSectionSoul":"Personality & Style","personaSectionSoulHint":"Define how your agent communicates","personaName":"Name","personaNamePlaceholder":"e.g. Aria, Nova, Kai…","personaCreature":"Type","personaCreaturePlaceholder":"Custom type…","personaVibe":"Vibe","personaVibePlaceholder":"Custom vibe…","personaEmoji":"Emoji","personaEmojiPlaceholder":"e.g. 🤖 ✨ 🧠","personaAvatar":"Avatar","personaAvatarPlaceholder":"URL or workspace path","avatarPickerTitle":"Agent avatar","avatarOpenSettingsAria":"Open agent avatar settings","avatarRowHint":"Pick a style or upload a custom image.","avatarUploadCustom":"Upload custom image","avatarStyleAdventurer":"Adventurer","avatarStyleRobot":"Robot","avatarStyleLorelei":"Lorelei","avatarStyleThumbs":"Thumbs","avatarStyleFunEmoji":"Fun Emoji","avatarMore":"More","avatarUploading":"Uploading…","avatarUploadFailed":"Upload failed. Try a smaller PNG, JPEG, or WebP.","avatarInvalidImage":"Use a PNG, JPEG, or WebP image.","avatarTooLarge":"Image must be at most 512 KB.","personaCallName":"What to call you","personaCallNamePlaceholder":"e.g. Michael","personaPronouns":"Pronouns","personaPronounsPlaceholder":"e.g. he/him, she/her, they/them","personaTimezone":"Timezone","personaTimezoneDetect":"Detect","personaTimezoneCustom":"Custom timezone…","personaNotes":"Notes","personaNotesPlaceholder":"Anything else your agent should know about you…","personaSoulTemplate":"Personality template","personaTemplateHint":"Templates provide a starting point. You can refine the behavior instructions below without switching to a separate mode.","personaBehaviorEditorLabel":"Behavior instructions (Markdown)","personaSoulCustomEdit":"Edit personality (Markdown)","personaSoulPreview":"Preview","personaSoulEdit":"Edit","personaMemoryNote":"Your agent will automatically remember preferences you share in conversation (like favorite foods or habits). No need to add those here.","sharedUserContextTitle":"User memory is shared across agents","sharedUserContextHint":"Your profile, preferences, and long-term memory are managed once and made available to every agent. This page only changes this agent's identity and behavior.","sharedUserContextLink":"Manage user context","personaSaving":"Saving…","personaSaved":"Saved","overviewRuntimeTitle":"Runtime settings","overviewRuntimeHint":"Model and workspace used for new sessions.","overviewCapabilitiesTitle":"Capability summary","overviewCapabilitiesHint":"Review the tools, skills, memory, and connections available to this agent.","overviewConnectionsManaged":"Managed in Connections","overviewSharedMemoryLabel":"User memory","overviewSharedMemoryValue":"Shared across agents","dangerZoneTitle":"Danger zone","dangerZoneHint":"These actions cannot be undone. Be careful.","dangerZoneBody":"Removing the entry hides this agent from the list. Purging disk data also removes local files and profile content.","dangerZoneMainUnavailable":"Main is the fallback agent and cannot be deleted here.","footerSaveNotApplicable":"No unsaved changes.","effectiveTitle":"Effective settings","effectiveHint":"Review the actual runtime settings after shared settings and this agent's own settings are merged, with source attribution.","effectiveLoading":"Loading effective settings…","effectiveError":"Could not load effective settings.","effectiveEmpty":"No effective settings data.","effectivePresetChain":"Shared settings used","effectiveNoPresets":"No shared settings used","effectiveModelsTitle":"Model roles","effectiveToolsTitle":"Tool access","effectiveSkillsTitle":"Available skills","effectiveBoundariesTitle":"Boundary settings","effectiveNoToolPolicies":"No explicit tool access settings. Unlisted tools follow system defaults and runtime availability.","presetSetupBadge":"Quick Setup","presetSetupTitle":"Get Started with Preset Agents","presetSetupSubtitle":"Choose agents to create. Each comes with a tailored personality and workspace. You can customize them later.","presetSkip":"Skip for now","presetCreateSelected":"Create {{count}} Agent(s)","presetCreating":"Creating…","presetCreatingProgress":"Creating agent {{current}} of {{total}}…","presetSetupComplete":"Agents created successfully!","presetCreateFailed":"Failed to create {{name}}: {{message}}","modelsResolutionGlobal":"Global defaults","modelsResolutionAgent":"This agent override","modelsResolutionEffective":"Active result","modelsResolutionInherits":"Inherits global defaults","templateSectionTitle":"Start from a template","templateBlank":"Blank","templateBlankDesc":"Start from scratch with an empty profile.","tryInChat":"Try in Chat","tryInChatHint":"Save and open a new conversation with this agent.","backToEditor":"Back to Editor","duplicateAgent":"Duplicate","duplicateAgentTitle":"Duplicate Agent","duplicateAgentHint":"Select one to copy its settings and profile files, then adjust the name, ID, and workspace.","copyFromExistingAgent":"Copy from existing agent","copyFromExistingAgentNone":"Do not copy; create a new agent","duplicateName":"Copy of {{name}}","duplicateIdSuffix":"-copy","copyProfileFiles":"Copy profile files (SOUL, IDENTITY, …)","createCopy":"Create Copy"}`),goalsSettings:{title:`Goal progress rules`,hint:`Defaults for automatic checks, execution limits, and notifications for goals.`,save:`Save`,discard:`Discard`,saving:`Saving…`,saveError:`Failed to save goal settings`,tabsAriaLabel:`Goal settings sections`,tabJudge:`Automatic checks`,tabJudgeHint:`Configure turn budgets, completion criteria generation, and automatic check behavior.`,tabNotifications:`Notifications`,tabNotificationsHint:`Choose external channels, lifecycle events, and fixed recipients for goal updates.`,maxTurns:`Max turns per run`,judgeModelRef:`Check model`,judgeModelRefPlaceholder:`Use agent default (optional)`,judgeModelRefHint:`Optional. When unset, goal runs use each agent's configured model.`,judgeModelRefUseDefault:`Use agent default`,checklistMode:`Checklist mode`,checklistDecomposePolicy:`Acceptance criteria generation`,checklistDecomposePolicyEmptyOnly:`Generate only when empty`,checklistDecomposePolicySupplementExisting:`Supplement existing after first turn`,checklistDecomposePolicyHint:`Supplement mode preserves user criteria and adds non-duplicate AI criteria after the first turn.`,parseFailures:`Max consecutive check failures`,judgeTimeoutSec:`Check timeout (seconds)`,checklistHistoryChars:`Checklist history chars`,checklistHistoryCharsHint:`Max characters of transcript history used by automatic checks.`,notificationsTitle:`Channel notifications`,notificationsHint:`Send durable goal lifecycle updates to Telegram or Weixin.`,notificationsEnabled:`Enable external goal notifications`,notificationsLinkedSessions:`Notify linked Telegram/Weixin sessions automatically`,notificationsChannels:`Linked channels`,notificationsChannelEnabled:`Enabled`,notificationsChannelConfigured:`Configured`,notificationsEvents:`Events`,notificationsTargets:`Fixed targets`,notificationsAddTarget:`Add target`,notificationsChatId:`Chat ID`,notificationsAccountId:`Account`,notificationsChooseChat:`Choose chat`,notificationsCustomChat:`Custom chat ID…`,notificationsUseKnownChat:`Use known chat`,notificationsPaired:`paired`,notificationsRemoveTarget:`Remove target`,notificationsNoTargets:`No fixed targets. Linked sessions can still receive notifications.`}},t={automations:JSON.parse(`{"title":"Automations","subtitle":"When something happens, run an agent or workflow.","refresh":"Refresh","new":"New","createTitle":"Create automation","create":"Create","editTitle":"Edit automation","edit":"Edit","save":"Save","cancel":"Cancel","close":"Close","none":"None","never":"Never","enabled":"Enabled","paused":"Paused","last":"Last","next":"Next","workflowPrefix":"workflow","loading":"Loading...","selectRun":"Select a run to view its result.","timeline":"Technical log","details":{"created":"Created","started":"Started","duration":"Duration","model":"Model","session":"Session","showDetails":"Expand","hideDetails":"Collapse","eventData":"Details","repairPatch":"Patch"},"events":{"manualQueued":"Manual run queued","scheduledQueued":"Scheduled run queued","eventQueued":"Event queued this automation","runStarted":"Automation run started","actionStarted":"Running {kind} action","actionStartedFallback":"Running action","actionCompleted":"{kind} action completed","actionCompletedFallback":"Action completed","actionFailed":"{kind} action failed","actionFailedFallback":"Action failed","afterRunStarted":"Running after-run step","afterRunCompleted":"After-run step completed","afterRunFailed":"After-run step failed","runCompleted":"Automation run {status}","runCompletedFallback":"Automation run completed"},"metrics":{"total":"Total","enabled":"Enabled","running":"Running","next":"Next"},"system":{"title":"System automations"},"createMenu":{"draft":"Draft with AI","template":"From template","blank":"Blank automation","templatesTitle":"Choose a template"},"dashboard":{"activity":"Run results","activityDescription":"Start with what each automation produced, then open its conversation when you need the process.","manage":"Automations","manageDescription":"Open an automation to inspect configuration and run history.","needsAttention":"Needs attention","latestResult":"Latest result","result":"Result","runHistory":"Run history","runHistoryDescription":"Review previous runs and open the session or workflow behind each result.","openSession":"Open session","runNow":"Run now","pause":"Pause","resume":"Resume","delete":"Delete","resumed":"Automation resumed","deleted":"Automation deleted","cancelled":"Run cancelled","refreshed":"Automations refreshed","created":"Automation created","failures":"Failures"},"runDetail":{"resultTitle":"Result","resultPending":"This run is in progress. The result will appear here, or you can open the conversation to follow along.","noResult":"This run did not return a displayable result.","openConversation":"View full conversation","openWorkflow":"View workflow run","runInfo":"Run info","technicalEvents":"Technical log","technicalEventsDescription":"System events and raw data for troubleshooting. You normally do not need these.","eventCount":"{count} events"},"draft":{"title":"Draft with AI","subtitle":"Describe the outcome. xopc drafts the trigger, action, and safety review before anything is published.","placeholder":"Example: When a goal becomes blocked, ask the agent to diagnose why and suggest next steps.","generate":"Generate draft","generating":"Generating...","review":"Review before publishing","safety":"Safety","assumptions":"Assumptions","risks":"Risks","discard":"Discard","editTitle":"Edit automation draft","edit":"Edit draft","publish":"Publish","approval":"I reviewed the required confirmations and want to publish this automation."},"repair":{"title":"Repair suggestion","suggest":"Suggest repair","generating":"Generating...","risks":"Risks","approval":"I reviewed this repair patch and want to apply it.","apply":"Apply patch"},"suggestions":{"create":"Draft automation","manage":"Manage","coveredTitle":"Already automated","coveredDescription":"Covered by {name}. xopc will handle future matching events.","noteCreatedTitle":"Automate note follow-up","noteCreatedDescription":"Have xopc classify new notes and suggest next actions automatically.","noteCreatedPrompt":"When a note is created, run an agent to classify the note, identify useful follow-up actions, and summarize any tasks. Trigger on note.created from notes. Keep it safe: only write a short recommendation unless the user later approves edits.","goalBlockedTitle":"Automate blocker diagnosis","goalBlockedDescription":"When this goal gets blocked, ask an agent to diagnose why and propose the next concrete step.","goalBlockedPrompt":"When a goal becomes blocked, run an agent to diagnose the blocker reason and suggest the next concrete step. Trigger on goal.status_changed from goals with payloadMatch status=blocked. Use the goal title: {{title}}. Do not change the goal automatically unless the user configures that explicitly.","workflowFailedTitle":"Automate failed-run recovery","workflowFailedDescription":"When this workflow fails, let xopc inspect the run and draft a repair or retry plan.","workflowFailedPrompt":"When a workflow run completes with status failed, run an agent to inspect the workflow run, summarize the failure, and propose a recovery plan. Trigger on workflow.run.completed from workflows with payloadMatch status=failed. Use the run id: {{runId}} and definition id: {{definitionId}}. Do not retry automatically unless the user explicitly configures it."},"explain":{"whyRan":"Why it ran","whyCovered":"Why this is covered","event":"Event {eventType}","eventFrom":"Event {eventType} from {source}","payloadMatched":"Matched {pairs}","noPayloadFilter":"No payload filter","actionAgent":"Runs agent action","actionWorkflow":"Runs workflow {workflowId}","safetyMode":"Safety: {mode}","manual":"Manual trigger","schedule":"Scheduled trigger","webhook":"Webhook trigger","triggerMatched":"Trigger matched"},"feedback":{"title":"Triggered automations","open":"Open","chat":"Chat","workflow":"Workflow","rerun":"Run again","pause":"Pause rule","working":"Working...","rerunQueued":"Automation queued","paused":"Automation paused","repairApplied":"Repair applied","repairAppliedAndQueued":"Repair applied and automation queued","applyAndRerun":"Apply and run again","actionFailed":"Automation action failed","saveInsight":"Save insight","savingInsight":"Saving...","insightSaved":"Insight saved","savedInsight":"Saved","insightEvidenceTitle":"Automation: {name}","summaryHealthy":"{total} automations ran here. {succeeded} succeeded.","summaryRunning":"{total} automations ran here. {active} still in progress.","summaryNeedsAttention":"{total} automations ran here. {attention} need attention. Start with {name}.","summaryRecovered":"{total} automations ran here. {recovered} recovered after a fix, {succeeded} succeeded.","succeededCount":"{count} succeeded","activeCount":"{count} running","attentionCount":"{count} need attention","recoveredCount":"{count} recovered","primaryRepair":"Generate repair","primaryRepairing":"Generating...","historical":"Historical","recovered":"Recovered","thisAutomation":"this automation"},"tabs":{"automations":"Automations","runs":"Runs","templates":"Templates"},"templates":{"dailyAgent":{"name":"Daily agent briefing","description":"Ask an agent to prepare a daily summary.","instruction":"Prepare my daily briefing."},"morningWorkflow":{"name":"Run workflow every morning","description":"Start a workflow on a fixed daily schedule.","formName":"Morning workflow"},"webhookAgent":{"name":"Webhook to agent","description":"Trigger an agent from an external request.","formName":"Webhook agent task"},"blockedGoal":{"name":"Blocked goal helper","description":"When a goal becomes blocked, ask an agent to diagnose it.","formName":"Blocked goal helper","instruction":"A goal became blocked. Diagnose the likely blocker and suggest the next concrete step."},"noteCreated":{"name":"New note organizer","description":"When a note is created, ask an agent to classify and suggest follow-ups.","formName":"New note organizer","instruction":"A new note was created. Classify it and suggest useful follow-up actions."}},"empty":{"automations":"No automations","runs":"No runs yet","events":"No timeline events yet"},"info":{"when":"When","run":"Run","safety":"Safety","overview":"Run overview","schedule":"Schedule","action":"Runs","permission":"Permissions","lastRun":"Latest run","nextRun":"Next run","technicalDetails":"Technical details","scheduleType":"Schedule type","fixedInterval":"Fixed interval","rawInterval":"Raw interval","calendarSchedule":"Calendar schedule","oneTimeSchedule":"One-time schedule","timezone":"Time zone","anchor":"Interval anchor","expression":"Cron expression","eventType":"Event type","eventSource":"Event source","webhookSecret":"Webhook secret ID","pausedNoAutomaticRuns":"Paused; it will not run automatically","noAutomaticTrigger":"Does not trigger automatically","waitingForTrigger":"Waiting for its trigger","noUpcomingRun":"No upcoming run","notRunYet":"Not run yet"},"safety":{"suggest_only":"Suggestions only","ask_before_apply":"Ask before applying","auto_apply":"Auto apply","suggestOnlyDescription":"Safest. Produces recommendations without applying changes.","askBeforeApplyDescription":"Drafts actions and asks for confirmation before applying.","autoApplyDescription":"Runs automatically when conditions match.","upgrade":"Upgrade safety","downgrade":"Downgrade safety"},"trigger":{"manual":"Manual","once":"Run once","daily":"Daily at a fixed time","weekly":"Weekly at a fixed time","interval":"Fixed interval","customCron":"Custom cron","webhook":"Webhook","goalBlocked":"Goal blocked","noteCreated":"Note created","workflowFailed":"Workflow failed","sessionUpdated":"Session updated","customEvent":"Custom product event","eventWithType":"Runs when the {type} event occurs","onceAt":"Runs once {time}","manualWhen":"Runs manually only","webhookWhen":"Runs when a webhook request arrives","goalBlockedWhen":"Runs when a goal becomes blocked","noteCreatedWhen":"Runs when a note is created","workflowFailedWhen":"Runs when a workflow fails","sessionUpdatedWhen":"Runs when session content changes"},"action":{"agent":"Agent","agentWithId":"Agent: {id}","workflowWithId":"Workflow: {id}","runAgent":"Run Agent","runWorkflow":"Run Workflow"},"status":{"queued":"queued","running":"running","succeeded":"succeeded","failed":"failed","cancelled":"cancelled","timeout":"timeout","notRun":"not run"},"form":{"name":"Name","description":"Description","trigger":"Trigger","time":"Time","day":"Day","intervalEvery":"Repeat every","commonIntervals":"Common intervals","nextThreeRuns":"Next three runs","fixedIntervalHint":"Fixed intervals start from creation time. Choose Daily to run at the same clock time each day.","intervalUnits":{"minute":"Minutes","hour":"Hours","day":"Days (24 hours)","week":"Weeks"},"expression":"Expression","secretId":"Secret id","onceAt":"Run at","eventType":"Event type","eventSource":"Event source (optional)","eventPayloadMatch":"Payload match (optional JSON)","invalidJsonObject":"Enter a valid JSON object.","action":"Action","agent":"Agent","defaultAgent":"Default agent","loadingAgents":"Loading agents...","instruction":"Instruction","workflow":"Workflow","loadingWorkflows":"Loading workflows...","noWorkflows":"No workflows","triggeredRun":"Runs on trigger","goal":"Goal","afterRun":"After run","safety":"Safety mode","webhookUrl":"Webhook URL","reliability":"Reliability","timeoutSeconds":"Timeout seconds","disableAfterFailures":"Disable after failures"},"afterRun":{"none":"Do nothing","saveToSession":"Save to session","webhook":"Call webhook"},"weekdays":{"monday":"Monday","tuesday":"Tuesday","wednesday":"Wednesday","thursday":"Thursday","friday":"Friday","saturday":"Saturday","sunday":"Sunday"}}`)},n={extensionsPage:{title:`Extensions`,subtitle:`Browse the marketplace and manage built-in and installed extensions.`,openLocalApps:`App Workshop`,createLocalApp:`Create app`,tabMarketplace:`Marketplace`,tabBuiltin:`Built-in`,tabUser:`Installed`,extensionsNavAria:`Extension sections`,emptyBuiltin:`No built-in extensions were discovered by the gateway (check gateway logs and dist/extensions manifests).`,emptyUser:`No user-installed extensions found. Install from the marketplace or CLI into ~/.xopc/extensions.`,searchPlaceholder:`Search extensions`,noSearchResults:`No extensions match your filters.`,statusEnabled:`Enabled`,cardNoDescription:`No description in manifest.`,badgeKindUi:`UI`,badgeKindBackend:`Backend`,badgeBundled:`Built-in`,cardTooltipHasUi:`Declares Gateway console UI (pages or settings).`,cardTooltipNoUi:`No Gateway UI; may still expose tools, hooks, or channels.`,badgeSourceGlobal:`Global`,badgeSourceWorkspace:`Workspace`,badgeSourceOther:`Other`,detailTitle:`Extension details`,detailBack:`Back`,detailClose:`Close`,detailProviderPrefix:`Source:`,providerBundled:`Built-in (shipped with xopc)`,providerGlobal:`Global install (~/.xopc/extensions)`,providerWorkspace:`Workspace (.extensions)`,providerOther:`Other`,detailSectionFeatures:`Capabilities`,detailNoDescription:`No description was provided for this extension.`,restartNote:`Some extension changes require restarting the gateway for code to fully load.`,cliManageHint:`This copy is not bundled with xopc — install, remove, and upgrades are done via the CLI or filesystem.`,builtinConfigHint:`Channels and image provider keys are managed under Settings → Channels and Settings → Images.`,builtinRuntimeToggle:`Gateway runtime`,builtinToggleEnable:`Enable`,builtinToggleDisable:`Disable`,builtinToggleBusy:`Saving…`,builtinToggleFailed:`Could not update built-in extension.`,builtinToggleRestartHint:`Restart the gateway so extension code fully loads or unloads.`,backendOnlyHint:`This extension has no Gateway UI; tools and hooks still run when enabled.`,badgePages:`{{count}} page(s)`,badgeSettings:`{{count}} settings`,badgeWidgets:`{{count}} widget(s)`,badgeSidebar:`{{count}} sidebar`,open:`Open`,openSettings:`Settings`,runStateLive:`Running`,runStatePendingOn:`Enabled in config`,runStatePendingOff:`Disabled in config`,runStateOff:`Off`,marketplaceSearchPlaceholder:`Search extensions…`,marketplaceEmpty:`No extensions from xopc-store.`,marketplaceLoadFailed:`Failed to load marketplace.`,marketplaceLoading:`Loading extensions`,marketplaceDetailTitle:`Extension details`,marketplaceDetailLoadFailed:`Could not load package details.`,marketplaceDetailReadmeHeading:`Readme`,marketplaceNoReadme:`No readme was published for this package.`,marketplaceAuthor:`Author`,marketplaceVersion:`Version`,marketplaceDownloads:`Downloads`,marketplaceInstall:`Install`,marketplaceReview:`Review`,marketplaceReinstall:`Reinstall`,marketplaceInstalled:`Installed`,marketplaceUninstall:`Uninstall`,marketplaceUninstallConfirm:`Remove this extension from disk and disable it in config? Restart the gateway if it stays listed.`,marketplaceReinstallConfirm:`Overwrite the existing install with the marketplace version?`,marketplaceInstallFailed:`Install failed.`,marketplaceUninstallFailed:`Uninstall failed.`,marketplaceRestartHint:`Restart the gateway to fully apply channel plugins or unload removed code.`,marketplaceUnavailableTitle:`Currently unavailable`,marketplaceUnavailableBody:`This release cannot be installed safely.`,marketplaceRiskTitle:`Review before installing`,marketplaceCodeRisk:`Extension code and dependency install scripts run with the same operating-system access as the gateway.`,marketplaceIntegrity:`Artifact integrity`,marketplaceIntegrityVerified:`SHA-256 verified`,marketplaceDependencies:`Runtime dependencies`,marketplacePermissions:`Declared permissions`,marketplacePermissionsNone:`No permissions are declared in the extension manifest.`,marketplaceLifecycleScripts:`Package lifecycle scripts will run`,marketplaceRiskConfirm:`I reviewed these capabilities and trust this publisher and release.`,marketplaceBuiltin:`Built-in`,marketplaceBuiltinManageHint:`This package ships with xopc — it is not installed from the store. Use the Built-in tab to open its UI or change enablement.`,marketplaceBuiltinGoBuiltin:`Open Built-in tab`},extensionUi:{permissionTitle:`Allow “{{name}}”?`,permissionSubtitle:`This extension may use the following capabilities while its UI is open.`,permissionsNone:`No additional permissions are declared in the manifest.`,allow:`Allow`,deny:`Not now`,deniedHint:`The extension UI stays hidden until you approve its declared permissions.`,reviewPermissions:`Review permissions`,loadFailed:`The extension panel failed to load.`,loadFailedConnectionHint:`If the frame shows “connection refused”, start the xopc gateway (and if you use Vite for web/, match the proxy target in web/vite.config.ts).`,retryLoad:`Reload panel`},extensionDebug:{nav:`Extension debug`,title:`Extension debug`,subtitle:`Inspect discovered extensions and their declared permissions.`,listHeading:`Extensions from gateway`,colId:`Id`,colName:`Name`,colPermissions:`Manifest permissions`,futureHeading:`Coming later`,futureBody:`PostMessage capture, per-extension storage preview, and live permission overrides are planned for a future iteration.`}},r={channelsSettings:{needToken:`Save a gateway token to edit channel settings.`,subtitle:`Telegram, Weixin, and Feishu inbound channels. Changes are written to the gateway config file.`,docsLink:`Channel documentation`,refresh:`Refresh`,loadError:`Failed to load channel settings`,loading:`Loading…`,save:`Save`,discard:`Discard`,saving:`Saving…`,saved:`Saved`,saveError:`Failed to save`,retry:`Retry`,unsavedHint:`You have unsaved changes.`,hubStatusRunning:`Running`,hubStatusEnabled:`Enabled`,hubStatusConfigured:`Configured`,hubStatusNeedsSetup:`Needs setup`,hubStatusError:`Needs attention`,hubStatusNotConfigured:`Not configured`,connectionStatus:`Connection status`,connectionRunning:`Running`,connectionRunningHint:`This channel is receiving and processing messages.`,connectionDisabled:`Disabled`,connectionDisabledHint:`Enable this channel to start receiving messages.`,connectionNeedsSetup:`Setup required`,connectionNeedsSetupHint:`Finish connecting an account before this channel can start.`,connectionChecking:`Checking status…`,connectionStopped:`Enabled, not running`,connectionStoppedHint:`This channel is not currently running. Restart it to resume receiving messages.`,restartChannel:`Restart channel`,restartingChannel:`Restarting…`,checkConnection:`Check status`,checkingConnection:`Checking…`,connectionOptions:`Connection options`,hideConnectionOptions:`Hide connection options`,tokenRequired:`Gateway token is required.`,loadingChannels:`Loading channels…`,selectChannel:`Select a channel to configure it.`,docs:`Docs`,close:`Close`,startConfiguration:`Start setup`,completeSetup:`Complete setup`,enableChannel:`Enable channel`,manageChannel:`Manage channel`,toggleChannel:`Enable or disable {{channel}}`,scanLoginTitle:`Scan to log in`,scanLoginHint:`Scan the QR code below with {{channel}} to finish connecting.`,cardStream:`Streaming`,cardAccounts:`{{count}} accounts`,cardSetupTitle:`Connect this channel`,cardSetupQrHint:`Sign in or scan a QR code to let xopc receive and reply to messages from this channel.`,cardSetupConfigHint:`Add the required credentials, then enable the channel when you are ready to receive messages.`,cardSetupGenericHint:`Finish setup to route messages from this channel into your agents.`,cardCapabilityLogin:`QR login`,cardCapabilityPairing:`Pairing`,cardCapabilityMultiAccount:`Multi-account`,cardCapabilityStreaming:`Streaming`,cardCapabilityMedia:`Media`,cardCapabilityDoctor:`Diagnostics`,enabledLabel:`Enabled`,disabledLabel:`Disabled`,advancedConfiguration:`Advanced configuration`,basicConfiguration:`Basic configuration`,basicConfigurationHint:`Set the fields required for this channel to start and receive messages.`,agentRouting:`Agent routing`,agentRoutingHint:`Route all incoming messages from this channel to an agent. More specific account or conversation rules can override it.`,messageHandling:`Message handling`,messageHandlingHint:`Use the default agent unless this channel needs its own routing rule.`,agentRoutingSelect:`Use the default agent`,agentRoutingDefault:`Default agent ({{agent}})`,setupReadinessTitle:`Setup required`,setupReadinessEnabledBody:`This channel is enabled, but it is missing required setup. It will not work until these items are completed.`,setupReadinessDisabledBody:`Complete these items before enabling this channel.`,setupIssueTelegramMissingCredential:`Add a Telegram Bot Token or token file for at least one enabled account.`,setupIssueWeixinMissingAccount:`Log in to Weixin and create at least one enabled account.`,setupIssueFeishuMissingCredentials:`Add App ID and App Secret credentials.`,setupIssueMissingRequired:`Fill in the required field: {{field}}.`,enableBlockedMessage:`{{channel}} needs setup before it can be enabled.`,setupTitle:`Setup`,setupConfiguredHint:`Channel config exists. Use actions below to reconnect or verify it.`,setupEmptyHint:`Use the fastest setup path for this channel.`,reconnect:`Reconnect`,connect:`Connect`,diagnose:`Diagnose`,waitingConfirmation:`Waiting for confirmation…`,openSetupLink:`Open setup link`,complete:`Complete`,failed:`Failed`,saveSetup:`Save setup`,diagnosticCheckFallback:`Check {{index}}`,schemaBooleanDefault:`Enable`,schemaUnsupportedArrayType:`Unsupported array type`,schemaArrayAddPlaceholder:`Add and press Enter`,schemaUnsupportedFieldType:`{{title}}: unsupported field type{{type}}`,hubPairingButton:`Review pairing`,modalCancel:`Cancel`,proxy:`Proxy`,dmPolicy:`DM policy`,copy:`Copy`,copied:`Copied`,show:`Show`,hide:`Hide`,policy:{dm:{pairing:`Pairing`,allowlist:`Allowlist`,open:`Open`,disabled:`Disabled`},group:{open:`Open`,disabled:`Disabled`,allowlist:`Allowlist`},reply:{off:`Off`,first:`First`,all:`All`},stream:{off:`Off`,partial:`Partial`,block:`Block`}}},voiceSettings:{needToken:`Save a gateway token to edit voice settings.`,subtitle:`Speech-to-text and text-to-speech for channels. Keys can also be set via environment variables.`,docsLink:`Voice documentation`,loadError:`Failed to load voice settings`,loading:`Loading…`,save:`Save`,discard:`Discard`,saving:`Saving…`,saved:`Saved`,saveError:`Failed to save`,retry:`Retry`,unsavedHint:`You have unsaved changes.`,apiKeyMaskedHelp:`Saved keys are hidden. Click the eye to load the key from your config file (not from environment variables).`,apiKeyCopy:`Copy`,apiKeyCopied:`Copied`,apiKeyShow:`Show`,apiKeyHide:`Hide`,apiKeyNotInConfigFile:`No key stored in the config file for this provider (check environment variables).`,apiKeyRevealFailed:`Could not load key from config.`,overview:{title:`Voice status`,description:`A quick check of what the assistant can hear and speak right now.`,input:`Input`,replies:`Replies`,voice:`Voice`,ready:`Ready`,off:`Off`},language:{title:`Voice language`,auto:`Follow app language`,manual:`Keep manual settings`,autoDescription:`STT language and the built-in Edge voice follow the app language automatically.`,manualDescription:`App language changes will not overwrite the model language or selected voice.`},behavior:{title:`How voice should work`,description:`Choose the user-facing behavior first. Engine details stay below.`,modes:{text:{title:`Text only`,description:`No voice input or spoken replies.`},listen:{title:`Listen to my voice`,description:`Transcribe voice input, but reply in text.`},conversation:{title:`Speak replies when I speak`,description:`Voice in, voice out. Best default for chat channels.`},always:{title:`Always speak replies`,description:`Read every assistant reply aloud.`}}},inputEngine:{title:`Voice input engine`,description:`Provider, model, API key, and fallback for transcription.`},stt:{title:`Voice input (STT)`,description:`Transcribe voice messages so the assistant can read them.`,enable:`Enable voice input`,enableDesc:`When on, voice messages can be transcribed for the agent.`,provider:`STT provider`,alibaba:`Alibaba DashScope`,openai:`OpenAI`,apiKey:`API key`,apiKeyDesc:`Optional if the key is already in the environment.`,model:`Model`,fallback:`Fallback between providers`,fallbackDesc:`Try the other provider if the primary request fails.`,refinement:`Transcript cleanup`,refinementDesc:`Optional model pass after transcription. Off avoids extra latency and model usage.`,refinementOff:`Off (raw transcript)`,refinementPunctuation:`Punctuation only`,refinementLight:`Light cleanup`,localProvider:`xopc Local Voice`,localModels:`Local speech models`,localModelsDesc:`Only model files are downloaded. Recognition runs privately inside xopc.`,localRecommended:`Recommended for Chinese`,localDownloading:`Downloading`,localInstall:`Download`,localRemove:`Remove`},tts:{title:`Assistant voice replies (TTS)`,description:`Generate audio when the assistant should speak back.`,enable:`Enable voice replies`,enableDesc:`When on, assistant replies can be spoken according to the rule below.`,trigger:`Speak replies`,triggerOff:`Off`,triggerAlways:`Always`,triggerInbound:`Inbound voice only`,triggerTagged:`Tagged ([[tts]])`,triggerDescOff:`TTS is completely disabled.`,triggerDescAlways:`Apply TTS to all assistant messages.`,triggerDescInbound:`Only reply with voice when the user sends voice.`,triggerDescTagged:`Only when the [[tts]] directive is used.`,triggerHelp:`Choose when assistant text should be converted to speech.`,provider:`Voice engine`,providerOpenai:`OpenAI TTS`,providerEdge:`Microsoft Edge (free)`,providerLocalCli:`Local CLI (offline)`,voice:`Voice`,alwaysWarning:`Always-on voice can be noisy in busy chats. Use it only when the channel is meant to be audio-first.`,statusTitle:`Current voice reply status`,statusOff:`Voice replies are off. Text replies are unchanged.`,statusReady:`Ready with`,statusNeedsSetup:`Needs setup for`,advanced:{title:`Engine setup`,description:`API key, model, voice, and provider-specific options.`},configured:`Ready`,needsKey:`Needs key`,noKeyNeeded:`No key`,providerHints:{edge:`Free and quick for setup; best for testing or casual use.`,openai:`Low latency and broad voice selection; requires an OpenAI key.`,alibaba:`Strong Chinese voices through DashScope; requires DASHSCOPE_API_KEY.`,minimax:`High quality voices; async generation can be slower.`,localCli:`Private local synthesis through Piper, sherpa-onnx, mlx-audio, or your own script.`,generic:`Extension speech provider. Configure the required fields below.`},test:{title:`Test voice`,description:`Generate a short sample with the selected provider, model, and voice before saving it for chats.`,sampleText:`Hi, I can read assistant replies aloud when voice output is enabled.`,play:`Play test`,stop:`Stop`,generating:`Generating…`,playing:`Playing`,ready:`Ready`,emptyText:`Enter text to synthesize.`,playFailed:`Audio playback failed.`},edgeHint:`Microsoft Edge TTS — no API key required.`,localCli:{preset:`Command preset`,presetPlaceholder:`Choose a local engine template…`,presetDesc:`Starts from a safe template for Piper, sherpa-onnx, or mlx-audio. Replace paths before testing.`,command:`CLI command`,commandDesc:`Shell template; placeholders: {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.`,commandPlaceholder:`mlx_audio.tts.generate --text "{{Text}}" --file_prefix {{OutputBase}}`,cwd:`Working directory`,cwdDesc:`Optional. Defaults to the gateway working directory.`,outputFormat:`Output format`,outputFormatDesc:`File extension produced by the CLI (mp3, wav, opus, …).`,timeoutMs:`Timeout (ms)`,timeoutMsDesc:`Per-call timeout override; leave blank to inherit the TTS default.`,hint:"Provided by the bundled `tts-local-cli` extension. Enable the extension and configure the binary on PATH."}},notes:{title:`Note`,duration:`Long audio is split automatically; quality depends on provider and model.`,envVars:`Environment variables: DASHSCOPE_API_KEY, OPENAI_API_KEY (when not set in this form).`}},gatewaySettings:{needToken:`Save a gateway token to load and edit gateway options.`,subtitle:`HTTP API access token and listen address. Values are stored in the gateway config file.`,tabsAriaLabel:`Gateway settings categories`,tabNetwork:`Network`,tabAccess:`Access`,tabUpdates:`Updates`,tabSecurity:`Security`,tabAdvanced:`Advanced`,networkTabHint:`Configure listen address, port, and allowed CORS origins.`,accessTabHint:`Configure token, password, trusted proxy, and failed-auth rate limiting.`,updatesTabHint:`Configure release channel, startup checks, and automatic update policy.`,docsLink:`Gateway documentation`,loadError:`Failed to load gateway settings`,loading:`Loading…`,save:`Save`,discard:`Discard`,saving:`Saving…`,saved:`Saved`,saveError:`Failed to save`,retry:`Retry`,unsavedHint:`You have unsaved changes.`,tokenExpired:`Your session token was rejected. Update the client token or fix the access token in config.`,updateToken:`Update client token`,changeToken:`Open token dialog`,accessToken:`Gateway access token`,tokenPlaceholder:`Token stored in config (optional if using env)`,tokenHelp:`Used to authenticate HTTP/WebSocket API requests. You can also set XOPC_GATEWAY_TOKEN.`,copy:`Copy`,copied:`Copied`,show:`Show`,hide:`Hide`,listenHost:`Listen address`,bindMode:`Bind mode`,bindLoopback:`Loopback (127.0.0.1)`,bindLan:`LAN (0.0.0.0)`,bindAuto:`Auto`,bindCustom:`Custom IPv4`,bindTailnet:`Tailnet (Tailscale IP)`,customBindHost:`Custom bind address`,customBindHostPlaceholder:`192.168.1.10`,listenPort:`Port`,listenHint:`Bind mode controls which network interfaces the gateway listens on. Auto: binds to 0.0.0.0 inside containers, 127.0.0.1 on host machines. Use LAN only with token auth and explicit CORS origins. Restart after saving.`,restartHint:`Changes to listen address, authentication, or CORS require a gateway restart.`,restartGatewayButton:`Restart Gateway`,restartGatewayConfirm:`Restarting the gateway will interrupt all active connections. Continue?`,restartGatewayFailed:`Restart failed`,authMode:`Authentication mode`,authModeToken:`Token`,authModePassword:`Password`,authModeTrustedProxy:`Trusted proxy`,authModeNoneLabel:`None`,authModeNone:`Auth mode is set to none — API requests are not authenticated.`,authModeTrustedProxyHint:`Reverse proxy handles login and forwards user identity headers. Configure trusted proxy CIDRs and headers below. Restart after saving.`,authPassword:`Gateway password`,authPasswordPlaceholder:`Password stored in config (optional if using env)`,authPasswordHelp:`Used when auth mode is password. You can also set XOPC_GATEWAY_PASSWORD.`,rateLimitTitle:`Failed authentication rate limit`,rateLimitHint:`Limits repeated failed auth attempts per client IP.`,rateLimitEnabled:`Enable rate limiting`,rateLimitExemptLoopback:`Exempt loopback clients (127.0.0.1)`,rateLimitMaxAttempts:`Max attempts`,rateLimitWindowMinutes:`Window (minutes)`,rateLimitBlockMinutes:`Block duration (minutes)`,updateChannel:`Update channel`,channelStable:`Stable`,channelBeta:`Beta`,channelDev:`Dev`,updateChannelHint:`Beta and dev receive builds earlier; stable is recommended for daily use.`,updateAutoSection:`Automatic updates`,updateAutoSectionHint:`Controls npm/CLI update checks on gateway start and background auto-update scheduling.`,updateCheckOnStart:`Check for updates on start`,updateCheckOnStartHint:`When enabled, the gateway checks for newer packages when it starts.`,updateAutoEnabled:`Enable automatic updates`,updateAutoEnabledHint:`When enabled, eligible stable/beta builds may be applied automatically after the delay below.`,updateAutoStableDelayHours:`Stable delay (hours)`,updateAutoStableDelayHoursHint:`Minimum hours after a stable release before auto-update may run.`,updateAutoStableJitterHours:`Stable jitter (hours)`,updateAutoStableJitterHoursHint:`Random extra wait up to this many hours to spread update load.`,updateAutoBetaCheckIntervalHours:`Beta check interval (hours)`,updateAutoBetaCheckIntervalHoursHint:`How often to poll for beta builds when on the beta channel.`,corsOrigins:`CORS allowed origins`,corsOriginsHint:`Exact browser origins (scheme + host + port), e.g. http://localhost:5173. Leave empty to use built-in localhost defaults. Restart the gateway after saving.`,corsOriginsEmpty:`No custom origins — gateway uses localhost defaults for this port and Vite dev (3000).`,corsOriginsPlaceholder:`Add origin and press Enter`,corsOriginsWildcardWarning:`Wildcard "*" allows any website to call the API from a browser. Use only if you understand the risk.`,securitySection:`Network security`,securitySectionHint:`OpenClaw-aligned guards for LAN and reverse-proxy deployments. Restart after saving.`,securityStrict:`Strict security mode`,securityStrictHint:`When enabled, network-accessible binds require explicit failed-auth rate limiting configuration.`,dangerouslyAllowHostHeaderOriginFallback:`Allow Host-header origin fallback`,dangerouslyAllowHostHeaderOriginFallbackHint:`Dangerous: treat the HTTP Host header as an allowed browser origin when not listed in CORS. Prefer explicit corsOrigins.`,dangerouslyAllowHostHeaderOriginFallbackWarning:`Host-header fallback weakens browser origin checks. Use only behind a trusted reverse proxy with strict Host validation.`,trustedProxies:`Trusted proxy CIDRs`,trustedProxiesHint:`IP addresses or CIDR ranges of reverse proxies allowed to terminate trusted-proxy auth (e.g. 127.0.0.1/32, 10.0.0.0/8). Required on network binds.`,trustedProxiesEmpty:`No trusted proxies configured.`,trustedProxiesPlaceholder:`CIDR or IP and press Enter`,allowRealIpFallback:`Allow X-Real-IP fallback`,allowRealIpFallbackHint:`When X-Forwarded-For parsing fails, fall back to X-Real-IP. Default is fail-closed (disabled).`,trustedProxyUserHeader:`User identity header`,trustedProxyUserHeaderPlaceholder:`X-Forwarded-User`,trustedProxyUserHeaderHint:`HTTP header set by the reverse proxy with the authenticated user identity.`,trustedProxyRequiredHeaders:`Required proxy headers`,trustedProxyRequiredHeadersHint:`Additional headers that must be present on every request (e.g. X-Proxy-Auth).`,trustedProxyAllowUsers:`Allowed users`,trustedProxyAllowUsersHint:`When non-empty, only these user identities are accepted. Leave empty to allow any non-empty user header value.`,trustedProxyAllowLoopback:`Allow loopback proxy source`,trustedProxyAllowLoopbackHint:`Accept trusted-proxy auth when the TCP connection comes from 127.0.0.1 (same-host reverse proxy).`,validationErrorNetworkAuth:`Network-accessible gateway requires authentication.`,validationErrorTrustedProxies:`Trusted-proxy auth requires at least one trusted proxy CIDR on network binds.`,validationErrorUserHeader:`Trusted-proxy auth requires a user identity header name.`,validationErrorCors:`Network-accessible gateway requires CORS origins or Host-header fallback.`,validationErrorCorsWildcard:`CORS wildcard is not allowed on network binds.`,validationErrorCustomBind:`Custom bind mode requires a bind address.`,securityAuditTitle:`Security audit`,securityAuditSubtitle:`Live check of saved gateway configuration (same as xopc doctor --security).`,securityAuditSavedConfigHint:`Reflects the config file on disk. Save form changes and restart the gateway to update results.`,securityAuditRefresh:`Refresh`,securityAuditLoading:`Running security audit…`,securityAuditLoadError:`Security audit failed`,securityAuditStatusPass:`No critical issues`,securityAuditStatusWarn:`Recommendations`,securityAuditStatusFail:`Critical issues`,securityAuditStatusSkip:`Audit skipped`,securityAuditNoFindings:`No structured findings; configuration passes gateway security guards.`,securityAuditHintsTitle:`Additional notes`,securityAuditRemediation:`Fix:`,advancedSection:`Advanced`,advancedSectionHint:`Runtime limits and channel startup ordering. Restart the gateway after saving.`,maxSseConnections:`Max SSE connections`,maxSseConnectionsHint:"Upper bound for concurrent Server-Sent Events clients (`GET /api/events` and similar). Default 100.",channelConnectDeferMode:`Channel connect defer`,channelConnectDeferModeAuto:`Auto (plugin default)`,channelConnectDeferModeOff:`Off (start all channels before listen)`,channelConnectDeferModeExplicit:`Explicit list`,channelConnectDeferModeHint:"Controls when outbound-heavy channels call `start()` relative to HTTP listen. Auto defers plugins that opt in (e.g. Telegram, Weixin, Feishu).",channelConnectDeferIds:`Defer channel ids`,channelConnectDeferIdsHint:`Used when mode is Explicit. These plugin ids start after HTTP listen (max 24). Empty means defer none.`,channelConnectDeferSkipIds:`Skip defer ids`,channelConnectDeferSkipIdsHint:`Removed from the defer set after auto or explicit resolution (max 24). Example: keep Telegram on phase 1 but defer others.`,channelIdListPlaceholder:`Channel id and press Enter (e.g. telegram)`,channelIdListEmpty:`No ids configured.`},heartbeatSettings:{needToken:`Save a gateway token to load and edit heartbeat options.`,subtitle:`Periodic agent wake, optional delivery to a channel, and HEARTBEAT.md under the default agent's profile directory. Stored in the gateway config file and agents/<id>/profile/.`,docsLink:`Heartbeat documentation`,loadError:`Failed to load heartbeat settings`,loading:`Loading…`,saveConfig:`Save`,discard:`Discard`,savingConfig:`Saving…`,savedConfig:`Configuration saved`,saveConfigError:`Failed to save configuration`,triggerNow:`Run now`,triggering:`Queuing…`,triggered:`Heartbeat queued`,triggerError:`Failed to trigger heartbeat`,triggerHint:`Queues one heartbeat run (same as the timer). Skipped if HEARTBEAT.md is empty, outside active hours, or heartbeat is disabled.`,saveDoc:`Save`,savingDoc:`Saving…`,savedDoc:`Document saved`,saveDocError:`Failed to save HEARTBEAT.md`,retry:`Retry`,unsavedConfig:`You have unsaved configuration changes.`,unsavedDoc:`You have unsaved changes to HEARTBEAT.md.`,workspaceLabel:`Workspace`,tabsAriaLabel:`Heartbeat settings categories`,tabSchedule:`Schedule`,tabDelivery:`Delivery`,tabPrompt:`Prompt`,tabDocument:`HEARTBEAT.md`,scheduleTabHint:`Control whether heartbeat runs, how often it runs, and active hours.`,deliveryTabHint:`Choose the channel and conversation to deliver replies to; leave empty to only log them.`,promptTabHint:`Tune the heartbeat system prompt, silent-reply threshold, and session isolation.`,documentTabHint:`Maintain the tasks and reminders read on each heartbeat.`,configSection:`Heartbeat configuration`,docSection:`HEARTBEAT.md`,docHint:`Tasks and reminders read by the agent on each heartbeat. Leave empty or comment-only to skip LLM calls and save tokens.`,enable:`Enable heartbeat`,includeSystemPromptSection:`Include heartbeat instructions in chat system prompt`,includeSystemPromptSectionHint:`When off, heartbeat instructions are only sent during scheduled heartbeat turns (saves tokens in normal chat).`,interval:`Interval`,intervalHint:`Minimum 1 second. Saved to the gateway as milliseconds.`,intervalHintPreset:`Quick preset or type seconds in the field.`,intervalSecondsLabel:`Seconds`,intervalPresets:{custom:`Custom`,every30s:`Every 30 seconds`,every1min:`Every 1 minute`,every5min:`Every 5 minutes`,every10min:`Every 10 minutes`,every15min:`Every 15 minutes`,every30min:`Every 30 minutes`,every1h:`Every 1 hour`,every2h:`Every 2 hours`},deliveryTitle:`Delivery (optional)`,channelNone:`— None —`,customChannelSuffix:`custom`,deliveryHint:`Both channel and chat id are required to send non-silent replies somewhere. Otherwise the reply is only logged.`,prompt:`Custom system prompt (optional)`,promptPlaceholder:`Override the default heartbeat instruction…`,promptHint:`Leave empty to use the built-in default prompt.`,ackMaxChars:`Max reply length before treating as silent (ackMaxChars)`,ackMaxCharsHint:`Leave empty for server default (300).`,ackDefaultPlaceholder:`Default`,isolatedSession:`Use a fresh session key each run`,isolatedSessionHint:`Avoids mixing heartbeat context with the main chat session.`,activeHoursTitle:`Active hours (optional)`,activeStart:`Start`,activeEnd:`End`,activeTimezone:`Timezone (IANA)`,activeHoursHint:`Restrict heartbeats to this window. Clear to run any time.`,addActiveHours:`Add active hours`,clearActiveHours:`Clear active hours`},webSearchSettings:{title:`Web search`,subtitle:`Configure region and search providers for the web_search tool. Without API keys, a built-in HTML fallback is used.`,docsLink:`Gateway documentation`,needToken:`Save a gateway token to edit web search settings.`,loading:`Loading…`,loadError:`Failed to load web search settings`,save:`Save`,discard:`Discard`,saving:`Saving…`,saved:`Saved`,saveError:`Failed to save`,unsavedHint:`You have unsaved changes.`,sectionRegion:`Region`,sectionRegionHint:`Controls which zero-config HTML fallback is used when no API provider succeeds (China → Bing; otherwise DuckDuckGo).`,sectionSearch:`Search providers`,sectionSearchHint:`Providers are tried in order. Keys are stored in the gateway config file. Leave the list empty to use only the HTML fallback.`,sectionBlocklist:`Domain blocklist`,sectionBlocklistHint:`When enabled, web_search and web_extract skip URLs whose host matches these domains (exact or suffix match).`,blocklistEnabled:`Enable domain blocklist`,blocklistEnabledDesc:`Blocks matching hosts before fetch; useful for privacy or compliance.`,blocklistDomains:`Blocked domains`,blocklistDomainsDesc:`One domain per line (e.g. example.com). Subdomains of listed domains are also blocked.`,blocklistDomainsPlaceholder:`example.com
|
|
2
|
-
ads.example.net`,regionLabel:`Fallback region`,regionDesc:`Auto uses your system timezone. Override if you are on a VPN or need a specific fallback.`,regionAuto:`Auto (timezone)`,regionCn:`China (Bing HTML fallback)`,regionGlobal:`Global (DuckDuckGo HTML fallback)`,maxResultsLabel:`Default max results`,maxResultsDesc:`Used when the model does not pass a count (1–50).`,providersTitle:`Providers (ordered)`,addProvider:`Add provider`,apiKeyLabel:`API key`,apiKeyDesc:`Optional for some setups. Leave masked to keep the saved value.`,urlLabel:`Instance URL`,urlDesc:`SearXNG base URL (e.g. http://localhost:8080). No trailing slash required.`,keyPlaceholder:`API key or env var name`,keyPlaceholderMasked:`•••••••• (unchanged)`,disabled:`Skip`,footerHint:`HTML fallbacks depend on third-party pages and may change. For production, use a supported search API (Brave, Tavily, Bing, or self-hosted SearXNG).`,providerTypes:{brave:`Brave Search API`,tavily:`Tavily`,bing:`Bing Web Search API`,searxng:`SearXNG`}}},i={chat:JSON.parse(`{"typeMessage":"Type a message…","sendMessage":"Send","abort":"Abort","needToken":"Save a gateway token to chat.","loading":"Loading conversation…","model":"Session model","modelPlaceholder":"Select a model…","agent":"Agent","agentPlaceholder":"Select an agent…","agentSearchPlaceholder":"Search agents…","agentNoMatches":"No matching agents","thinkingLevel":"Thinking","newSession":"New chat","timelineTitle":"Timeline","timelineTurn":"Turn {{count}}","timelineMessageFallback":"Message","timelineToolCount_one":"{{count}} step","timelineToolCount_other":"{{count}} steps","timelineOpen":"Open timeline","timelineClose":"Close timeline","timelineCurrent":"Current","welcomeTitle":"Welcome to xopc","welcomeDescription":"Send a message to get started","welcomeSpotlight":{"otherSuggestionsLabel":"Other directions","acceptSuggestionHint":"Press Tab to use suggestion","refreshExplorationLabel":"Show another exploration direction","contextLoading":"Using the current context to shape suggestions…","contextFallback":"Some context is temporarily unavailable. Suggestions use the information that is available.","retryContext":"Read context again","contextFallbackTitle":"this task","reasons":{"general":"An easy starting point you can edit before sending","agent":"Better matched to {{agentName}}'s capabilities","project":"Based on the current context for {{projectName}}","note":"Based on the note {{noteTitle}}","workItem":"Based on the current state of {{workItemTitle}}","blocked":"Prioritizes the current blocker: {{blockedReason}}","nextAction":"Continues the defined next action: {{nextAction}}","directory":"Starts from the current directory: {{path}}"},"contextPrompts":{"workItemBlocked":"Work item {{workItemTitle}} is blocked by {{blockedReason}}. Analyze the root cause, then propose the smallest executable unblock plan, the information to confirm, and who to ask for help.","workItemNextAction":"The defined next action for {{workItemTitle}} is {{nextAction}}. Check prerequisites and risks, then break it into an action I can start now.","codingWorkspace":"Start from {{workspaceRoot}} and understand project {{projectName}}. Locate the entrypoints, core modules, and highest-value files to read, then recommend where I should look next."},"exploreCards":[{"id":"explore-news","icon":"globe","title":"Today & trends","description":"AI, technology, industry news","scenarios":[{"prompt":"Collect today's most important AI news, rank it by significance, and explain why each item matters."},{"prompt":"Summarize the past week's major technology trends, separating short-lived hype from changes with lasting impact."},{"prompt":"Choose 3 new products or technologies worth understanding today and give me a focused reading path."}]},{"id":"explore-learn","icon":"search","title":"Learn something new","description":"Concepts, sources, learning paths","scenarios":[{"prompt":"Find today's latest AI news, pick the 3 developments most worth attention, and explain in plain language what they are and why they matter."},{"prompt":"Design a focused 30-minute learning session on a topic you recommend."},{"prompt":"Teach me an overlooked but practical mental model and give me 3 examples of when to use it."}]},{"id":"explore-life","icon":"target","title":"Life & decisions","description":"Choices, plans, practical ideas","scenarios":[{"prompt":"Design one small action I can complete this week that would noticeably improve my quality of life."},{"prompt":"Recommend a weekend exploration theme: a book, film, local activity, or new experience."},{"prompt":"Teach me a simple way to reduce everyday decision fatigue and help me apply it once right now."}]},{"id":"explore-creative","icon":"content","title":"Explore ideas","description":"Creativity, observation, new angles","scenarios":[{"prompt":"Give me 5 creative prompts I can explore today across different fields."},{"prompt":"Start from an everyday object and guide me through a 10-minute divergent-thinking exercise."},{"prompt":"Suggest a viewpoint worth turning into a short essay, then list arguments for and against it."}]}],"empty":{"headline":"What do you want to move forward?","tagline":"Pick a starting point, edit it, then send.","categories":[{"id":"work","icon":"documents","title":"Work output","description":"Email, updates, meetings","scenarios":[{"prompt":"Help me write a concise weekly update covering completed work, risks, and next week's plan."},{"prompt":"I have a meeting in 30 minutes. Help me prepare 5 talking points and 3 follow-up questions."}]},{"id":"research","icon":"globe","title":"Organize information","description":"News, research, decisions","scenarios":[{"prompt":"Summarize today's most important tech news and explain why it matters."},{"prompt":"Compare these two options by pros, cons, cost, and best-fit use cases, then recommend one."}]},{"id":"content","icon":"content","title":"Refine writing","description":"Copy, posts, translation","scenarios":[{"prompt":"Rewrite this idea into a clearer, more persuasive paragraph."},{"prompt":"Translate this Chinese text into natural English without sounding literal."}]}]},"agentTagline":"{{agentName}} is selected, so suggestions prioritize that agent's working style.","agentCards":{"coding":{"id":"agent-coding","icon":"code","title":"Ship code","description":"Implementation, tests, review","scenarios":[{"prompt":"Based on the current context “{{contextTitle}}”, turn the requirement into a code implementation plan and list the files to change."},{"prompt":"Review the work around “{{contextTitle}}” from an engineering perspective, focusing on implementation risk, test gaps, and maintainability."}]},"writing":{"id":"agent-writing","icon":"content","title":"Shape writing","description":"Structure, tone, wording","scenarios":[{"prompt":"Based on the current context “{{contextTitle}}”, turn this into a clear, accurate written draft."},{"prompt":"Rewrite the material around “{{contextTitle}}” to be clearer and more persuasive while preserving key information."}]},"research":{"id":"agent-research","icon":"search","title":"Research and verify","description":"Sources, comparison, conclusion","scenarios":[{"prompt":"Based on the current context “{{contextTitle}}”, list the questions to verify, likely sources, and a research path."},{"prompt":"Run a fact-check and comparison pass around “{{contextTitle}}”, then give me a trustworthy conclusion."}]},"data":{"id":"agent-data","icon":"review","title":"Analyze data","description":"Cleaning, metrics, insight","scenarios":[{"prompt":"Based on the current context “{{contextTitle}}”, identify useful metrics, how to analyze them, and likely insights."},{"prompt":"Turn the information around “{{contextTitle}}” into an analyzable data structure and propose the next analysis steps."}]},"creative":{"id":"agent-creative","icon":"content","title":"Explore ideas","description":"Directions, drafts, tradeoffs","scenarios":[{"prompt":"Based on the current context “{{contextTitle}}”, propose 5 different creative directions and explain when each fits."},{"prompt":"Give me 3 bolder but still executable expression or design directions around “{{contextTitle}}”."}]}},"codingProject":{"headline":"Continue this code project","tagline":"Start by understanding, implementing, or debugging.","contextLabel":"Project: {{projectName}}","categories":[{"id":"understand-codebase","icon":"code","title":"Understand codebase","description":"Structure, entrypoints, modules","scenarios":[{"prompt":"Help me quickly understand the structure, core modules, and startup flow of project “{{projectName}}”."},{"prompt":"If I need to modify project “{{projectName}}”, which files should I inspect first? Prioritize them."}]},{"id":"implement-feature","icon":"target","title":"Move a feature","description":"Locate code, plan changes","scenarios":[{"prompt":"I want to implement a feature in project “{{projectName}}”. First locate the relevant code and propose a change plan."},{"prompt":"Based on this codebase, break this requirement into concrete implementation steps."}]},{"id":"review-debug","icon":"review","title":"Review or debug","description":"Risks, tests, build failures","scenarios":[{"prompt":"Review project “{{projectName}}” for likely risks, focusing on type safety, edge cases, and test gaps."},{"prompt":"Check this project for likely build or test issues and give me an investigation order."}]}]},"generalProject":{"headline":"Continue this project","tagline":"Review status, choose the next step, and create output.","contextLabel":"Project: {{projectName}}","categories":[{"id":"project-status","icon":"search","title":"Review status","description":"Goals, progress, risks","scenarios":[{"prompt":"Review the current state of project “{{projectName}}”: goal, completed work, risks, and next step."},{"prompt":"Based on this project, prepare a concise progress summary."}]},{"id":"project-next-step","icon":"target","title":"Plan next step","description":"Tasks, priority, action","scenarios":[{"prompt":"Break the next work for project “{{projectName}}” into 3 to 5 clearly prioritized steps."},{"prompt":"Given the current project state, suggest the smallest useful thing I can do today."}]},{"id":"project-material","icon":"documents","title":"Create material","description":"Updates, briefs, explanations","scenarios":[{"prompt":"Write a project update for “{{projectName}}” covering current outcomes, risks, and support needed."},{"prompt":"Turn this project into a concise one-page overview."}]}]},"note":{"headline":"Keep thinking with this note","tagline":"Extract points, find gaps, and turn it into output.","contextLabel":"Note: {{noteTitle}}","categories":[{"id":"note-summarize","icon":"note","title":"Extract note","description":"Points, conclusions, actions","scenarios":[{"prompt":"Summarize note “{{noteTitle}}” into core points, key conclusions, and actionable next steps."},{"prompt":"Reorganize this note into a clearer hierarchy."}]},{"id":"note-think","icon":"search","title":"Think further","description":"Questions, gaps, directions","scenarios":[{"prompt":"Based on note “{{noteTitle}}”, suggest 5 questions worth thinking about next."},{"prompt":"Find unclear logic, weak evidence, or missing context in this note."}]},{"id":"note-output","icon":"content","title":"Make output","description":"Article, tasks, plan","scenarios":[{"prompt":"Turn note “{{noteTitle}}” into an article outline while preserving the core ideas and improving structure."},{"prompt":"Extract a prioritized task list from this note."}]}]},"workItem":{"headline":"Continue this work item","tagline":"Summarize status, choose the next step, and check risk.","contextLabel":"Work item: {{workItemTitle}}","categories":[{"id":"work-item-progress","icon":"task","title":"Summarize progress","description":"Status, done, blockers","scenarios":[{"prompt":"Based on work item “{{workItemTitle}}”, summarize current progress, completed work, risks, and blockers."},{"prompt":"Turn this work item into a status update I can share with the team."}]},{"id":"work-item-next","icon":"target","title":"Find next step","description":"Small action, priority, dependencies","scenarios":[{"prompt":"Based on work item “{{workItemTitle}}”, identify the smallest executable next step."},{"prompt":"Break down the remaining work for this item and mark priority and dependencies."}]},{"id":"work-item-risk","icon":"review","title":"Identify risks","description":"Blockers, gaps, acceptance","scenarios":[{"prompt":"Check work item “{{workItemTitle}}” for missing details, risks, or unclear acceptance criteria."},{"prompt":"List the questions I need to confirm before moving this work item forward."}]}]},"workItemBlocked":{"headline":"This work item is blocked","tagline":"Analyze the cause, then choose an executable path.","contextLabel":"Work item: {{workItemTitle}}","categories":[{"id":"work-item-progress","icon":"task","title":"Summarize progress","description":"Status, done, blockers","scenarios":[{"prompt":"Based on work item “{{workItemTitle}}”, summarize current progress, completed work, risks, and blockers."},{"prompt":"Turn this work item into a status update I can share with the team."}]},{"id":"work-item-unblock","icon":"target","title":"Unblock it","description":"Cause, options, owner","scenarios":[{"prompt":"Work item “{{workItemTitle}}” is currently blocked. Analyze the blocker and suggest 3 possible ways forward."},{"prompt":"Help me decide who to ask, what information is missing, and how to move this blocker forward."}]},{"id":"work-item-risk","icon":"review","title":"Identify risks","description":"Gaps, dependencies, acceptance","scenarios":[{"prompt":"Check work item “{{workItemTitle}}” for missing details, risks, or unclear acceptance criteria."},{"prompt":"List the questions I need to confirm before moving this work item forward."}]}]},"workingDirectory":{"headline":"Start from this directory","tagline":"Take stock of the content, then surface priorities and an organizing direction.","categories":[{"id":"directory-understand","icon":"folder","title":"Take stock","description":"File types, highlights, overview","scenarios":[{"prompt":"Take stock of the main content, file types, and most important materials in “{{path}}”."},{"prompt":"Scan this directory first and tell me what kind of material collection it is and what I should review first."}]},{"id":"directory-summarize","icon":"documents","title":"Extract highlights","description":"Summary, leads, next actions","scenarios":[{"prompt":"Summarize the important content in “{{path}}” and flag leads worth following up."},{"prompt":"If I want to start working from this directory, which materials should I review and which questions should I confirm first?"}]},{"id":"directory-organize","icon":"review","title":"Organize files","description":"Categories, summary, cleanup","scenarios":[{"prompt":"Organize the files in “{{path}}” and suggest categories and cleanup opportunities."},{"prompt":"Create a summary of the important content in this directory."}]}]},"codingWorkspace":{"headline":"Start from this code directory","tagline":"Understand the structure, find entrypoints, and choose an implementation direction.","categories":[{"id":"directory-understand","icon":"folder","title":"Understand codebase","description":"Structure, stack, key files","scenarios":[{"prompt":"Help me understand the structure, tech stack, and most important files in the code directory “{{path}}”."},{"prompt":"Scan this code directory first and explain its project type, core modules, and recommended reading order."}]},{"id":"directory-entry","icon":"code","title":"Find entrypoints","description":"Startup, config, dependencies","scenarios":[{"prompt":"Find the likely startup entrypoints, config files, and dependency docs in the code directory “{{path}}”."},{"prompt":"If I want to modify this code directory, which files should I open first?"}]},{"id":"directory-organize","icon":"review","title":"Review & organize","description":"Modules, risks, cleanup","scenarios":[{"prompt":"Review the module boundaries, likely risks, and cleanup opportunities in the code directory “{{path}}”."},{"prompt":"Create an engineering-focused summary of the important content in this code directory."}]}]}},"you":"You","assistant":"Assistant","tool":"Tool","thinkingLabel":"thinking…","thoughts":"Thoughts","thoughtsStreaming":"Thinking…","thoughtsExpandHint":"Expand to view model thoughts","thinkingLevelLabel":"Thinking","thinkingLevels":{"off":"Off","minimal":"Minimal","low":"Low","medium":"Medium","high":"High","xhigh":"X-High","adaptive":"Adaptive"},"toolInput":"Input","toolOutput":"Output","noOutput":"(no output)","viewSteps_one":"View {{count}} step","viewSteps_other":"View {{count}} steps","stepSearchedWeb":"Searched web","stepReadFile":"Read file","stepDetails":"Details","stepRunCommand":"Run command","stepListDirectory":"Browse folder","stepWriteFile":"Save file","stepEditFile":"Edit file","stepOpenUrl":"Open link","stepFetchUrl":"Fetch webpage","stepUnknownTool":"Running {{name}}","stepsClusterDone":{"search_one":"Searched the web","search_other":"Searched the web {{count}} times","readFile_one":"Read 1 file","readFile_other":"Read {{count}} files","editFile_one":"Edited 1 file","editFile_other":"Edited {{count}} files","writeFile_one":"Saved 1 file","writeFile_other":"Saved {{count}} files","runCommand_one":"Ran 1 command","runCommand_other":"Ran {{count}} commands","listDir_one":"Browsed 1 folder","listDir_other":"Browsed {{count}} folders","openUrl_one":"Opened 1 link","openUrl_other":"Opened {{count}} links","fetchUrl_one":"Fetched 1 page","fetchUrl_other":"Fetched {{count}} pages","other_one":"Ran 1 tool","other_other":"Ran {{count}} tools"},"stepsClusterIng":{"thinking":"Thinking…","search":"Searching the web…","readFile":"Reading files…","editFile":"Editing files…","writeFile":"Saving files…","runCommand":"Running command…","listDir":"Browsing folder…","openUrl":"Opening link…","fetchUrl":"Fetching page…","other":"Working…","mixed":"Working on it…"},"stepsClusterJoin":", ","stepsClusterJoinFinal":" and ","stepsClusterMoreSuffix":" and more","toolCard":{"copyPath":"Copy path","copyCommand":"Copy command","copied":"Copied","viewDiff":"View changes","hideDiff":"Hide changes","viewOutput":"View output","hideOutput":"Hide output","viewContent":"View content","hideContent":"Hide content","linesBadge":"{{count}} lines","linesPartial":"Loaded {{shown}} of {{total}} lines","diffStats":"+{{added}} −{{removed}}","sizeBadge":"{{size}}","exitCodeOk":"Exit 0","exitCodeNonZero":"Exit {{code}}","exitCodeUnknown":"Unfinished","timedOut":"Timed out","truncatedBadge":"Output truncated","noOutput":"No output","openInWorkspace":"Open in workspace","rawDetails":"Raw details (developer)"},"composerRunStatusSending":"Sending…","composerRunStatusDefault":"Working…","composerRunningTool":"Running {{name}}","composerStageThinking":"Thinking…","composerStageSearching":"Searching…","composerStageReading":"Reading…","composerStageWriting":"Writing…","composerStageExecuting":"Executing…","composerStageAnalyzing":"Analyzing…","attachFile":"Attach file","moreActions":"More actions","reviewLauncher":{"actionLabel":"Review changes","title":"Select a review preset","description":"Review the current workspace.","baseTitle":"Select a base branch","commitTitle":"Select a commit to review","customTitle":"Custom review instructions","loading":"Loading review context…","errorTitle":"Could not load review context","retry":"Retry","noSession":"Open a chat session before starting a review.","close":"Close","back":"Back","cancel":"Cancel","runReview":"Run review","presetBase":"Review against a base branch","presetBaseDescription":"PR Style · default {{branch}}","presetBaseDescriptionNoDefault":"PR Style","presetUncommitted":"Review uncommitted changes","presetCommit":"Review a commit","presetCommitDescription":"{{count}} recent commits","presetCustom":"Custom review instructions","presetCustomDescription":"Review uncommitted changes with extra focus","statusClean":"working tree clean","statusChanged":"{{count}} changed","statusUntracked":"{{count}} untracked","searchBranches":"Type to search branches","searchCommits":"Type to search commits","noBranches":"No base branches available.","noCommits":"No commits available.","defaultBadge":"default","remoteBadge":"remote","localBadge":"local","customPlaceholder":"Focus on concurrency, persistence, regressions…","customDescription":"Custom instructions run against uncommitted workspace changes."},"fileReference":{"externalBadge":"External","externalDescription":"This file is outside the current workspace, so it cannot be edited in the workspace editor.","offWorkspaceBaseDescription":"This file is outside the current session workspace and cannot be opened in the workspace editor.","browserOffWorkspaceDescription":"This file is outside the current session workspace. Copy the path and open it from your system or desktop app.","locationKind":{"agent-profile":"Agent profile","xopc-skills":"Skills","xopc-config":"App config","xopc-agents":"Agent data","xopc-sessions":"Session data","host":"On this computer"},"openInSettings":"Open in settings","resolvingDescription":"Resolving file reference…","resolveFailedDescription":"Could not resolve this file path.","closeActions":"Close file actions","browserExternalDescription":"This file is outside the current workspace. In the browser, copy the path and open it from your system.","missingDescription":"This file is currently unavailable. It may have been moved, deleted, or created in another runtime environment.","invalidDescription":"This file path could not be resolved.","openExternal":"Open","revealInFolder":"Show in folder","copyPath":"Copy path","importToWorkspace":"Import to workspace","importInProgress":"Importing…","importDialogTitle":"Copy this file into the workspace?","importDialogSourceLabel":"Source","importDialogDestinationLabel":"Destination (workspace-relative)","importDialogConfirm":"Import","importDialogCancel":"Cancel","importSuccessToast":"Imported to {{path}}","importErrors":{"IMPORT_NOT_ALLOWED":"This file cannot be imported into the workspace.","SOURCE_NOT_FOUND":"The source file is no longer available.","SOURCE_NOT_FILE":"Only regular files can be imported.","SOURCE_TOO_LARGE":"File exceeds the import size limit.","INVALID_DESTINATION":"Invalid destination path.","DESTINATION_BLOCKED":"The destination path is protected. Try a different name.","DESTINATION_EXISTS":"A file already exists at the destination.","SAME_LOCATION":"Source and destination are the same.","FILE_REF_EXPIRED":"This file reference has expired. Try again.","FILE_REF_FORBIDDEN":"This file reference does not belong to the current session.","OVERWRITE_DISABLED":"Overwrite is disabled by configuration.","IMPORT_FAILED":"Import failed. Please try again.","UNKNOWN":"Import failed."}},"workingDirectory":{"selectWorkingDirectory":"Select working directory","chooseFolder":"Choose folder…","selectPath":"Select folder…","recentDirectories":"Recent directories","noRecent":"No recent folders","notSet":"Default workspace","defaultWorkspace":"Session workspace","copyPath":"Copy path","selectionOnlyAtNewChat":"Workspace can only be chosen before the first message.","lockedTapTitle":"Workspace is locked for this chat","lockedTapBody":"To pick a folder for the agent, open New chat and click this control before you send the first message. You can also set a default workspace under Settings → Agents.","clickToCopyFullPath":"Click to copy full path","tooltipAgentWorkspace":"Agent workspace","tooltipOpenProjectFiles":"Click to open or close project files in the sidebar.","copied":"Copied","openWorkspaceMenu":"Workspace options","folderPickerRequiresDesktop":"Folder selection requires the desktop app (Electron). Open xopc from the desktop app, or configure the path another way.","applyErrorTitle":"Could not set working directory","applyErrorClose":"Close","pathModalTitle":"Working directory","pathModalDescription":"Enter an absolute path on the machine running the gateway (folder for the session workspace).","pathInputPlaceholder":"/absolute/path/to/folder","pathModalConfirm":"Apply","pathModalCancel":"Cancel","pickerHostHint":"Directories on gateway host: {{hostname}}","pickerLoading":"Loading…","pickerUp":"Up","pickerUseThisFolder":"Use this folder","pickerManualPath":"Or type an absolute path","pickerApplyManual":"Apply path","pickerListError":"Could not read this location.","pickerEmptyFolder":"Empty folder","pickerDrives":"Drives"},"maxAttachmentsReached":"Maximum {{max}} files per message. Remove some to add more.","maxAttachmentsTruncated":"{{dropped}} file(s) not added (limit {{max}} per message).","attachmentFileTooLarge":"File \\"{{name}}\\" is too large (max {{maxSize}} per file).","attachmentLoadFailed":"Failed to load attachment: {{name}}","clipboardFileTypeUnsupported":"Clipboard file type not supported for chat attachments","inputPlaceholder":"Ask anything — @ for files, / for skills & commands","currentModel":"Model used for this conversation","modelSearchPlaceholder":"Search by name, provider, or ID…","modelNoMatches":"No models match your search","contextWindowHoverShort":"{{percent}}% context","contextWindowHoverNoLimit":"~{{used}} context","contextWindowAriaSummary":"Context usage about {{used}} of {{limit}} tokens","contextWindowAriaSummaryNoLimit":"Estimated context usage about {{used}} tokens","modelProviderSettingsLink":"Missing a model? Open Models & capabilities","dropFiles":"Drop files here to attach","voiceRecording":"Record voice","voiceRecordingStop":"Stop recording","voiceInput":"Voice input","voiceRecordingStatus":"Recording","voiceInputCancel":"Cancel recording","voiceInputConfirm":"Transcribe to text","voiceTranscribing":"Transcribing…","voicePreparing":"Preparing local speech recognition…","voicePreparingProgress":"Preparing local speech recognition… {progress}%","voiceRequestingMicrophone":"Waiting for microphone permission…","voicePreparationFailed":"Local speech preparation failed — retry","voiceNeedsPreparation":"Local speech model needs preparation","voiceRetry":"Retry transcription","voiceRetryAvailable":"Recording kept — retry transcription","voiceTranscribeEmpty":"No speech detected.","voiceTranscribeFailed":"Transcription failed. Try again.","voiceSttNotConfigured":"Speech-to-text is not configured. Enable STT under Settings → Voice.","voiceMicDenied":"Microphone access denied or unavailable.","voicePlaybackSpeed":"Playback speed","inputPlaceholderSteering":"Follow-up: Enter queues a row; click a row to edit here","inputPlaceholderSteeringEdit":"Editing queued follow-up — Enter saves, Esc discards changes","steeringInterruptSend":"Stop and send now (⌘↵ or Ctrl+↵)","followUpQueueAria":"Follow-up queue (sent after this reply, in order)","followUpQueueHeading":"Follow-ups","followUpQueueClickToEdit":"Edit in composer","followUpQueueAttachmentOnly":"(attachment)","followUpQueueEmptyPreview":"(empty)","followUpQueueDrag":"Drag to reorder","followUpQueueMoveUp":"Move up","followUpQueueMoveDown":"Move down","followUpQueueSteerNow":"Inject as steering (tool boundary)","followUpQueueRemove":"Remove from queue","followUpQueueAttachmentsNote":"Rows with attachments cannot use ✨ steer; they send as full messages in order.","followUpQueueMaxReached":"Follow-up queue is full (max {{max}}). Remove one or wait for the run to finish.","clarifyRegionAria":"Assistant clarification","clarifyResumeHint":"Your answer continues the current assistant turn.","clarifyServerTimeout":"This prompt expires on the server after about {{minutes}} minutes.","clarifyDefaultTimeoutNote":"If it expires before you answer, the assistant may use the suggested default.","clarifySkipNote":"Skip sends an empty reply so the run can continue.","clarifyChoicesGroupAria":"Suggested answers","clarifyCustomLabel":"Or type your own answer","clarifyPlaceholder":"Your answer…","clarifySend":"Send","clarifyUseDefault":"Use default","clarifyDefaultChoice":"Default: {{text}}","clarifySkip":"Skip","clarifyTimeRemaining":"Time left (approx.): {{time}}","memoryConsentAria":"Personal understanding permission","memoryConsentTitle":"May I use this when it helps?","memoryConsentPurpose":"Relevant to: {{purpose}}","memoryConsentHint":"I’ll continue without it for now. Your choice applies quietly to future answers.","memoryConsentDeny":"Don’t use","memoryConsentOnce":"Once","memoryConsentSession":"This chat","memoryConsentAlways":"Allow","memoryConsentError":"Couldn’t save that choice. Try again.","memoryCaptured":"I’ll keep this in mind","memoryCapturedHint":"You can change it anytime in You.","memoryCapturedUndo":"Undo","browserSetupRequiredTitle":"Browser setup needed","browserSetupRequiredCta":"Configure browser","browserSetupRequiredDetailToggle":"View diagnostic detail","browserSetupRequiredReasons":{"generic":"The configured browser backend isn't ready yet. Finish setup in Settings → Browser to continue.","extension_not_installed":"The xopc browser extension isn't installed yet. Install it from Settings → Browser to enable the agent to drive Chrome.","extension_bridge_offline":"The extension bridge isn't listening. Start it from Settings → Browser, then keep Chrome open.","extension_not_connected":"The bridge is up but Chrome hasn't connected yet. Open Chrome and enable the xopc extension.","local_chromium_missing":"Local Chromium isn't installed. Install it from Settings → Browser (one-click) before using the local backend.","cloakbrowser_not_installed":"CloakBrowser binary isn't downloaded yet. Install it from Settings → Browser.","cdp_unreachable":"The configured CDP endpoint isn't reachable. Verify the URL in Settings → Browser and make sure Chrome is running with --remote-debugging-port.","cloud_api_key_missing":"Cloud browser API key is missing. Add it in Settings → Browser."},"providerSetupRequiredTitle":"Model provider not configured","providerSetupRequiredBody":"No API key found for {{provider}}. Add your credentials in Settings → Providers to start chatting.","providerSetupRequiredCta":"Configure providers","providerSetupRequiredDetailToggle":"View detail","agentRunErrorAuthInvalidTitle":"API key rejected","agentRunErrorAuthInvalidBody":"The provider rejected the API key for {{provider}}. Update it in Settings → Providers.","agentRunErrorRateLimitTitle":"Rate limit exceeded","agentRunErrorRateLimitBody":"Too many requests to the model provider. Wait a moment and try again.","agentRunErrorTimeoutTitle":"Request timed out","agentRunErrorTimeoutBody":"The model provider did not respond in time. Check your network and try again.","agentRunErrorBillingTitle":"Billing or quota issue","agentRunErrorBillingBody":"The provider reported insufficient balance or quota. Check your account and try again.","agentRunErrorUnknownTitle":"Request failed","agentRunErrorUnknownBody":"The assistant could not complete this turn.","agentRunErrorSendFailedTitle":"Send failed","agentRunErrorSendFailedBody":"Could not reach the gateway. Check your connection and try again.","agentRunErrorUnknownProvider":"this provider","agentRunErrorDetailToggle":"View detail","agentRunErrorCtaProviders":"Configure providers","voicePlay":"Play voice","voicePause":"Pause","voiceLoading":"Loading audio…","voiceAriaRegion":"Voice playback","voiceAwaitingMeta":"Measuring clip length","voiceMessage":"Voice","loadOlder":"Loading older messages…","scrollToBottom":"Scroll to bottom","attachmentPreviewClose":"Close","attachmentPreviewDownload":"Download","attachmentPreviewRemove":"Remove","attachmentPreviewLoading":"Loading file…","attachmentPreviewText":"Text","attachmentPreviewPdf":"PDF","attachmentPreviewDocument":"Document","attachmentPreviewPresentation":"Presentation","attachmentPreviewSpreadsheet":"Spreadsheet","attachmentPreviewNoText":"No text content available","attachmentPreviewMissingData":"Missing file data","attachmentPreviewLoadError":"Error loading file","attachmentPreviewMissingAuth":"Missing authentication","attachmentPreviewFailedPdf":"Failed to load PDF","attachmentPreviewFailedDocx":"Failed to load document","attachmentPreviewFailedExcel":"Failed to load spreadsheet","attachmentPreviewPdfRendering":"Rendering PDF…","attachmentPreviewPdfLoadMore":"Scroll to load more pages","attachmentPreviewExcelTruncated":"Preview limited to {rows} rows × {cols} columns. Download the file to see the full sheet.","attachmentPreviewPptxTruncated":"Text preview truncated for performance. Download the file to see the full deck.","attachmentPreviewPptxSlide":"Slide {n}","attachmentPreviewPptxEmptySlide":"(No text on this slide)","attachmentPreviewOpenElsewhereHint":"Download the file to open it in another application on your computer.","attachmentPreviewOpenElsewhereTruncated":"Only part of this file is shown here. Download the full file to open it elsewhere.","attachmentPreviewDownloadFull":"Download file","attachmentPreviewImage":"Preview image","attachmentPreviewFullscreen":"Full screen preview","attachmentPreviewExitFullscreen":"Exit full screen","messageArtifactsHeading":"Message output","stepTimelineThinkingStreaming":"Thinking…","stepTimelineThinkingDone":"Thinking complete","stepTimelineToolSearchRunning":"Searching the web…","stepTimelineToolSearchComplete":"Web search complete","stepTimelineToolSearchError":"Web search failed","stepTimelineToolGenericRunning":"{{name}}…","stepTimelineToolGenericComplete":"{{name}} complete","stepTimelineToolGenericError":"{{name}} failed","searchSourcesHeading":"Search sources · {{count}}","executionDrawerTitle":"Execution","executionDrawerClose":"Close","executionDrawerEmpty":"No steps for this reply yet.","executionProgressDone":"Thinking complete","executionProgressRunning":"Thinking & tools…","executionElapsedTitle":"Elapsed time for this run","messageCopyPlainText":"Copy plain text","messageCopyMarkdown":"Copy Markdown","messageReadAloud":"Read aloud","messageReadAloudTitle":"Assistant response","messageReadAloudPreparing":"Preparing speech…","messageReadAloudPause":"Pause reading","messageReadAloudResume":"Resume reading","messageReadAloudRetry":"Retry read aloud","messageHelpful":"Helpful response","messageNotHelpful":"Response needs improvement","messageFeedbackUnavailable":"Feedback could not be linked to this response.","messageUnderstandingReviewQueued":"The related understanding is paused and queued for review.","messageWhyThisAnswer":"Why this answer was personalized","messageWhyThisAnswerHint":"These parts of your personal context were allowed to shape the response.","messageContextOrigins":{"told_by_you":"You told me","observed":"Noticed across your work","inferred":"My interpretation","connected_source":"From {{source}}"},"messageFeedbackReasonTitle":"What should I improve?","messageFeedbackReasonHint":"This helps me repair the response and avoid repeating the same mistake.","messageFeedbackReasons":{"misunderstood_intent":"Misunderstood me","incorrect":"Factually wrong","did_not_act":"Didn't take action","tone_mismatch":"Tone felt wrong","too_verbose":"Too long","other":"Something else"},"messageFeedbackRepair":"Help me correct it","messageFeedbackRepairPrompts":{"misunderstood_intent":"You misunderstood what I needed in your previous response. Re-read my request, briefly state what you now think I need, then correct the response.","incorrect":"Your previous response contains something incorrect. Re-check the relevant facts or evidence, explain the correction briefly, and give me the corrected result.","did_not_act":"Your previous response explained or planned instead of doing the work. Continue now, use the available tools where appropriate, and finish with the result or a concrete blocker.","tone_mismatch":"The tone of your previous response did not feel right for me. Respond more calmly and naturally, acknowledge the situation without overdoing empathy, and help me move forward.","too_verbose":"Your previous response was too long. Give me the essential answer and next step concisely.","other":"Your previous response did not help. Ask me one focused question about what was missing, then repair the response based on my answer."},"messageSaveToNote":"Save to source Note","messageSavedToNote":"Saved to Note","messageExtractTask":"Extract task","messageTaskExtracted":"Task created","sourceNoteBanner":"This chat is linked to Note: {{title}}","sourceNoteOpen":"Open Note","sourceNoteFallbackTitle":"Untitled note","sourceNoteAppendHeading":"Saved from discussion","sourceNoteTaskFallbackTitle":"Task from discussion","sourceNoteDigestAction":"Draft note digest","sourceNoteDigestQueued":"Digest request queued","sourceNoteDigestPrompt":"Draft a concise Markdown note digest for the current linked Note \\"{{title}}\\" from our recent discussion. Output only the content that should be saved to the note, with sections for Conclusions, Key points, Open questions, and Next steps when relevant. Do not modify the note directly.","sourceNoteSaveSuccess":"Saved to Note","sourceNoteSaveFailed":"Failed to save to Note","sourceNoteTaskSuccess":"Task created","sourceNoteTaskFailed":"Failed to create task","sourceNoteAppendSourceLine":"> Source: AI chat · {{time}}","sourceNoteSaveDialogTitle":"Save to Note","sourceNoteSaveDialogDescription":"Review what will be appended to \\"{{title}}\\".","sourceNoteSaveDialogHeadingLabel":"Section heading","sourceNoteSaveDialogContentLabel":"Markdown to append","sourceNoteSaveDialogCancel":"Cancel","sourceNoteSaveDialogConfirm":"Save to Note","sourceNoteSaveDialogSaving":"Saving…","workItemBanner":"Working on: {{title}}","workItemNextStepAction":"Next step","workItemSummarizeAction":"Summarize","workItemOpenItem":"Open work item","workItemOpenProject":"Open project","workItemPriorityLabel":"Priority","workItemUpdatedLabel":"Updated","workItemDescriptionLabel":"Description","workItemNextActionLabel":"Next action","workItemBlockedLabel":"Blocked","workItemNoDetails":"No description, next action, or blocker is recorded yet.","workItemNextStepPrompt":"For the current work item \\"{{title}}\\", propose the highest-value next step. Be concrete, include acceptance criteria if useful, and call out any work item fields that should be updated.","workItemSummarizePrompt":"Summarize the current progress for work item \\"{{title}}\\". Include what changed, current status, blockers, and the next action. Do not modify the work item directly unless I confirm.","workItemUpdateAction":"Update work item","workItemUpdateDrafted":"Update drafted","workItemUpdateApplied":"Work item updated","workItemUpdateFailed":"Failed to update work item","workItemUpdateDialogTitle":"Update work item","workItemUpdateDialogDescription":"Review the AI-suggested update for \\"{{title}}\\" before applying it.","workItemUpdateDialogDescriptionFallback":"Review the AI-suggested update before applying it.","workItemUpdateStatusLabel":"Status","workItemUpdateStatusUnchanged":"No status change","workItemUpdateNextActionLabel":"Next action","workItemUpdateBlockedReasonLabel":"Blocked reason","workItemUpdateProgressNoteLabel":"Progress note","workItemUpdateDialogCancel":"Cancel","workItemUpdateDialogApply":"Apply updates","workItemUpdateDialogApplying":"Applying…","codeBlockCopy":"Copy","messageCopied":"Copied","mermaidRenderError":"Diagram render failed","mermaidSourceLabel":"mermaid","userMessageCopy":"Copy message","userMessageRetry":"Retry","userMessageEdit":"Edit in composer","userMessageExpand":"Show more","userMessageCollapse":"Show less","userMessageRetryDisabledHint":"Only your latest message can be retried.","userMessageActionsWait":"Wait until sending or streaming finishes.","userMessageDelete":"Delete this round","userMessageDeleteConfirm":"This will delete both your message and the AI response. Continue?","userMessageDeleteConfirmTitle":"Delete conversation round","userMessageDeleteCancel":"Cancel","userMessageDeleteOk":"Delete","commandPalette":{"noResults":"No matching commands or skills","placeholder":"Search skills and commands…","skillsSection":"Skills","commandsSection":"Commands","agentsSection":"Agents","currentBadge":"current","queueBadge":"queue","queueFullBadge":"queue full","queueFullTooltip":"Follow-up queue is full","skillUnavailableBadge":"Unavailable","skillAgentDeniedBadge":"Not available","skillUnavailableMessage":"Skill \\"{{name}}\\" is unavailable for agent \\"{{agent}}\\". Reason: {{reason}}. Enable it in Agent settings → Skills before using it.","skillAgentDeniedReason":"not available to the current agent","skillDisabledReason":"the skill is disabled or requirements are not met","skillAddToAllowlistConfirm":"Make it available to the current agent now?","showGroupedMore":"Show {{count}} more"},"goal":{"heading":"Goal in progress","turns":"{{used}} / {{max}} turns","checklistHeading":"Criteria","checklistProgress":"{{done}} / {{total}} done","checklistEmpty":"Criteria appear after the first reply (or add your own).","addCriterionPlaceholder":"Add a criterion…","addCriterion":"Add","markDone":"Done","markBlocked":"Blocked","removeItem":"Remove","resetChecklist":"Reset criteria","moreActions":"More","moreHint":"Restart turn budget, detach this goal, or inspect automatic checks","statusActive":"Active","statusPaused":"Paused","statusDone":"Done","agentRunning":"Agent run in progress…","pause":"Pause","resume":"Resume","details":"Details","detailsTitle":"Goal details","openFullGoal":"Open full page","closeDetails":"Close goal details","tabOverview":"Overview","tabCriteria":"Criteria","tabRuns":"Runs","currentState":"Current state","noNextAction":"No next action recorded yet.","clear":"Clear goal","restart":"Restart budget","detach":"Detach","detailsToggle":"Check details","lastVerdict":"Last verdict","verdictDone":"Done","verdictContinue":"Continue","verdictSkipped":"Skipped","verdictDecompose":"Checklist ready","lastReason":"Reason","loadFailed":"Could not load goal state.","collapseAria":"Collapse goal bar","expandAria":"Expand standing goal","pillTitle":"{{status}} · {{turns}} — click to expand","elapsedLabel":"Run time","runHistory":"Run history","runHistoryEmpty":"No runs recorded yet. Runs appear after each assistant reply while the goal is active.","runHistoryLoading":"Loading…","runHistoryLoadFailed":"Could not load run history.","runHistoryTurns":"{{used}} / {{max}} turns","runHistoryContinue":"Continues","runHistoryStop":"Stops","verdictInactive":"Inactive","missionHeading":"Goal mission","phaseAgentRunning":"Agent running","phasePaused":"Goal paused","phaseDone":"Goal done","phaseJudged":"Check updated","lastJudgementTitle":"Last check","showDetails":"Expand","hideDetails":"Collapse","pausedReason":"Paused reason","judgeModel":"Check model","parseFailures":"Check failures","judgeGenerated":"Automatically added","userAdded":"User added","evidenceLabel":"Evidence","composerHeading":"Goal","composerNoGoalAttached":"No goal attached","composerStartGoal":"Start goal","composerGoalTitlePlaceholder":"What should be true when done?","composerSwitchGoal":"Switch goal","composerAttachGoal":"Attach goal","composerNoOpenGoals":"No open goals","composerDetachCurrent":"Detach current goal","composerRunWorkflow":"Run task template","composerNoWorkflows":"No templates","composerGoalStarted":"Goal started","composerGoalAttached":"Goal attached","composerGoalDetached":"Goal detached","composerWorkflowStarted":"Task started","composerLoadGoalsFailed":"Failed to load goals","composerLoadWorkflowsFailed":"Failed to load task templates","composerStartGoalFailed":"Failed to start goal","composerAttachGoalFailed":"Failed to attach goal","composerDetachGoalFailed":"Failed to detach goal","composerStartWorkflowFailed":"Failed to start task","pendingGroup":"Pending","completedGroup":"Completed","impossibleGroup":"Impossible","latestRunTitle":"Latest run","nextStepContinue":"Continue","nextStepStop":"Stop"},"atMention":{"noResults":"No matches","placeholder":"Search files…","searchError":"Failed to search workspace","files":"Files","folders":"Folders","recentFiles":"Recent","recentBadge":"Recent","shiftHint":"Shift+Enter or Shift+click: add another @ mention."}}`)},a={cron:JSON.parse('{"title":"Scheduled Tasks","subtitle":"Tasks run automatically on schedule and can be triggered manually anytime. Describe what you want to do regularly in any chat to create one quickly.","needToken":"Save a gateway token to manage scheduled tasks.","globals":{"title":"Global settings","hint":"Cron scheduler limits and defaults for all jobs. Restart may be required for some changes.","loading":"Loading…","enabled":"Enable cron scheduler","maxConcurrent":"Max concurrent jobs","timezone":"Default timezone (IANA)","retentionDays":"Run history retention (days)","metrics":"Enable cron metrics","save":"Save","discard":"Discard","saving":"Saving…","saved":"Saved","saveError":"Failed to save cron settings"},"statsRegion":"Overview","tabMyTasks":"My Scheduled Tasks","tabSystemTasks":"System","tabRunHistory":"Run History","systemTasksIntro":"Built-in schedules maintained by the gateway (memory consolidation) and the heartbeat timer. Change behavior in the linked settings pages.","systemHeartbeatTitle":"Gateway heartbeat","systemHeartbeatHint":"Runs on a wall-clock interval inside the gateway process (not a cron row). Uses HEARTBEAT.md when present.","systemHeartbeatSettingsLink":"Heartbeat settings","systemHeartbeatStatus":"Status","systemHeartbeatInterval":"Cadence","systemHeartbeatEvery":"About every {{value}}.","systemDreamingTitle":"Memory consolidation (dreaming)","systemDreamingHint":"Three-phase background jobs that promote short-term signals into long-term memory. Schedules follow agent memory settings.","systemDreamingSettingsLink":"Memory & dreams settings","systemDreamingEmpty":"No dreaming cron jobs are registered (dreaming may be disabled or not reconciled yet).","wakeBanner":"Scheduled tasks only run while this device is awake. When the system or display sleeps, runs may be skipped.","keepAwake":"Keep screen awake","wakeLockUnavailable":"Screen wake lock is not available in this browser or context.","sortCreatedDesc":"Created (newest first)","sortCreatedAsc":"Created (oldest first)","historyRangeDay":"Day","historyRangeWeek":"Week","historyRangeMonth":"Month","filterAllTasks":"All tasks","filterAllStatuses":"All statuses","emptyHistoryTitle":"No execution records","emptyHistoryHint":"Records will appear here once scheduled tasks start running.","jobCardMenuAria":"Task actions","scheduleBadge":{"everyMinute":"Every minute","everyNMinutes":"Every {{n}} minutes","everyNHours":"Every {{n}} hours","hourly":"Hourly","dailyAt":"Daily, {{time}}","weekdaysAt":"Weekdays, {{time}}","weekendsAt":"Weekends, {{time}}","weeklyOn":"{{day}}, {{time}}","daysAt":"{{days}} at {{time}}","monthlyAt":"Monthly on day {{day}}, {{time}}","customSchedule":"Custom schedule","cronExpr":"{{expr}}"},"jobsHeading":"Scheduled jobs","addJob":"New task","editJob":"Edit task","name":"Name *","namePlaceholder":"My scheduled task","nameRequired":"Name is required","schedule":"Schedule (cron expression) *","taskKind":"Task type","taskKindMessage":"Send message / AI processing","taskKindWorkflowRun":"Run Workflow","workflowDefinition":"Workflow template *","workflowDefinitionPlaceholder":"Select a workflow…","workflowDefinitionsLoading":"Loading workflows…","workflowDefinitionsEmpty":"No workflows found. Add templates under ~/.xopc/workflows/ or use built-ins.","workflowDefinitionCustom":"custom","workflowDefinitionMissing":"This workflow id is not in the current catalog. Pick another template or fix the id.","workflowDefinitionRequired":"Select a workflow template","workflowArgsRequired":"Fill in all required workflow fields","workflowGoal":"Workflow goal","workflowGoalPlaceholder":"What should this run accomplish?","workflowLocalOnly":"Local only (no channel delivery)","workflowLocalOnlyHint":"Run completes on the gateway; transcript is saved under Workflows. Uncheck to send the result to a channel when the run finishes.","workflowDeliveryHint":"When the workflow finishes, a summary and result preview are sent to this recipient.","message":"Message *","messagePlaceholder":"What should the assistant do?","messageEdit":"Edit","messagePreview":"Preview","messageMarkdownHint":"Supports Markdown (headings, lists, code blocks, links, …).","create":"Create Job","runNow":"Run Now","runStarted":"Run started.","jobAlreadyRunning":"This scheduled task is already running.","delete":"Delete","edit":"Edit","enabled":"Enabled","disabled":"Disabled","running":"Running","nextRun":"Next Run","status":"Status","runHistoryTitle":"Run History","runHistoryHint":"Completed runs are stored in xopc.db (automation_runs). Use Refresh to update.","detailRunHistory":"Recent runs","detailWhatItDoes":"What this task does","detailRunSettings":"Run settings","detailRunSettingsHint":"Mode, delivery, agent, and schedule details","detailResizeColumns":"Resize cron job detail columns","detailCronExpression":"Cron expression","detailCronTechnical":"Technical expression","detailCopySchedule":"Copy schedule","detailCopied":"Copied","detailLastRun":"Last run","detailNoRecentRuns":"No runs yet","detailRunCount":"{{success}} succeeded · {{failed}} failed","detailExpandRun":"Show details","detailCollapseRun":"Hide details","colStarted":"Started","colJob":"Job","colDuration":"Duration","colDetail":"Result","colChat":"Chat","openChat":"Open","openChatTitle":"Open this run in chat (isolated agent sessions only)","openWorkflow":"Workflow","openWorkflowTitle":"Open this run on the workflows board","colWorkflow":"Workflow","execStatusRunning":"Running","execStatusSuccess":"Success","execStatusFailed":"Failed","execStatusCancelled":"Skipped","noRunsYet":"No executions in this range.","confirmDelete":"Are you sure you want to delete this cron job?","confirmRun":"Run this cron job now?","scheduleLabel":"Schedule","messageLabel":"Message","totalJobs":"Total jobs","emptyStateCta":"Create your first job","channel":"Channel","channelLocal":"Local (no outbound)","deliveryTargetLocalChannel":"Local channel — transcript or message stays on this machine","recipient":"Recipient *","recipientPlaceholder":"Telegram: numeric id, or pick from recent sessions","refreshList":"Refresh","refreshRecipientHint":"Reload list from recent sessions","selectRecipient":"— Select —","noRecentChatsOption":"No recent sessions","deliveryTarget":"Delivery","scheduleHintPreset":"Select a preset or enter custom cron expression","schedulePicker":{"scheduleTimeLabel":"Scheduled time","modeNoRepeat":"Does not repeat (yearly date)","modeInterval":"Interval","intervalKindMinutes":"Minutes","intervalKindHours":"Hours","modeHourly":"Every hour","modeDaily":"Daily","modeWeekly":"Weekly","modeMonthly":"Monthly","modeCustom":"Custom (cron)","minuteUnit":"min","minuteAtHour":"Minute","intervalMinutes":"Interval in minutes","intervalHours":"Interval in hours","hourUnit":"h","dayOfMonth":"Day of month","customCronHint":"Five-field cron: minute hour day-of-month month day-of-week","weekdays":["Mo","Tu","We","Th","Fr","Sa","Su"]},"mode":"Mode","modeDirect":"Send message directly to the channel without AI processing","modeAgent":"Use AI agent to process the message, then send the response","modeDirectOption":"Direct (send message directly)","modeAgentOption":"AI Agent (process with AI then send)","agentLocalOnly":"Local only (save transcript, no channel send)","agentLocalOnlyHint":"Runs the agent on this machine. The transcript is stored as a cron session under the default or selected agent (the job id is part of the session key); no Telegram or CLI delivery.","deliveryLocalOnly":"Local only — transcript saved as a cron session under that agent","agentProfile":"Agent","agentProfileHint":"Only applies when mode is AI Agent. Leave as default to use the gateway default agent profile.","agentProfileDefault":"Default agent","workingDirectoryLabel":"Workspace","workingDirectoryHint":"Optional. Absolute path on the gateway host; leave unset to use this agent\'s default workspace.","workingDirectoryReset":"Use agent default","model":"Model","save":"Save","failedToLoadJobs":"Failed to load jobs","scheduleRequired":"Schedule and message are required","chatIdRequired":"Chat ID is required","failedToCreateJob":"Failed to create job","failedToUpdateJob":"Failed to save job","failedToToggleJob":"Failed to toggle job","actionFailed":"Action failed","enterManuallyOrSelect":"Enter manually or select from recent chats","noRecentChats":"No recent chats found. Enter chat ID manually (e.g., 123456789 for Telegram)","refresh":"Refresh","close":"Close","cancel":"Cancel","loading":"Loading…","schedulePresets":{"custom":"-- Custom (enter below) --","everyMinute":"Every minute","every5Minutes":"Every 5 minutes (default)","every10Minutes":"Every 10 minutes","every15Minutes":"Every 15 minutes","every30Minutes":"Every 30 minutes","everyHour":"Every hour","every2Hours":"Every 2 hours","every4Hours":"Every 4 hours","every6Hours":"Every 6 hours","every12Hours":"Every 12 hours","everyDayMidnight":"Every day at midnight","everyDay9AM":"Every day at 9:00 AM","everyDay9PM":"Every day at 9:00 PM"},"timeLabels":{"overdue":"Overdue","lessThanMinute":"Less than a minute","minutes":"{{count}} min","hours":"{{count}} hours"},"lastActiveLabels":{"justNow":"just now","minutesAgo":"{{count}}m ago","hoursAgo":"{{count}}h ago","daysAgo":"{{count}}d ago"},"templateFilterAll":"All","fromTemplate":"From template","templatePickerHint":"Browse templates by category, then create a scheduled task.","templateSearchPlaceholder":"Search templates…","templatesEmptyHint":"No templates match this filter.","templateCategories":{"daily":"Daily","monitoring":"Monitoring","reports":"Reports","automation":"Automation"},"templates":{"morning_briefing":{"title":"Morning briefing","description":"Weather-style day snapshot, headlines in your topics, and top priorities—edit the topic list in the prompt.","prompt":"Build a **morning briefing** I can read in a few minutes.\\n- **Weather / day shape**: if you cannot access a real forecast API, say so and give **one** practical clothing or commute tip based only on season/region I name below, or skip this bullet.\\n- **Headlines**: topics I care about (edit): **(e.g. local news, macro, tech policy, sports)**—if web search works, 4–6 bullets from the last ~24h with source type; if not, give a **manual check order** instead of inventing stories.\\n- **Top 3 priorities today** from workspace notes/todos if visible; else ask me to paste them once.\\n- **No fake URLs or quotes**."},"standup_prep":{"title":"Standup prep","description":"Draft a standup-style update from recent git activity and notable file changes in the workspace.","prompt":"Prepare a **standup update** for me:\\n- If Git is available: **yesterday / since last standup** themes from `git log` (no wall of SHAs), risky paths if obvious from messages.\\n- If not: give **commands** I should run locally next time.\\n- **Files touched**: infer from workspace if you can (recent edits, open PR-style hints); mark uncertain.\\n- **Blockers**: max 3, honest \\"unknown\\" allowed.\\n- **Today intent**: one sentence.\\n- Keep it speakable aloud in under ~90 seconds."},"meeting_prep":{"title":"Meeting prep","description":"Run the meeting_prep workflow before calls—agenda, talking points, and risks.","prompt":"Workflow: meeting_prep — fill meeting topic and attendees in the form."},"end_of_day_wrap_up":{"title":"End-of-day wrap-up","description":"Summarize progress, open items, and tomorrow\'s priorities from workspace context when possible.","prompt":"**End-of-day wrap** (weekday):\\n- **Done**: up to 5 bullets (mark inferred items).\\n- **Open / parked**: up to 4 bullets.\\n- **Tomorrow**: first concrete task after login—single bullet.\\n- Pull from task docs, changelogs, or notes in the workspace when present; otherwise say what is missing.\\n- Neutral tone, no guilt."},"inbox_triage":{"title":"Inbox triage","description":"Surface urgent follow-ups first—uses any mail/export notes in the workspace; no mailbox access implied.","prompt":"Help me **triage inbox-style work** (no live email unless I paste content):\\n- If I have exported snippets, `*.eml`, or notes about mail in the workspace, summarize **urgent follow-ups first** with suggested next action each.\\n- If nothing mail-related exists, output a **5-step triage routine** (folders/labels, oldest-first, VIP senders I list below) and ask me to paste 3 subject lines next run.\\n- **VIP / domains to watch** (edit): **(add yours)**.\\n- Do not claim you read my real inbox."},"competitor_watch":{"title":"Competitor watch","description":"Track competitor news, product updates, and pricing signals you name—web search when available.","prompt":"Competitors or alternatives to watch (edit names/topics): **(list here)**.\\n- If web search works: summarize **news, product/changelog moves, pricing or packaging signals** from roughly the past week; separate **fact** vs **rumor**.\\n- If search is unavailable: give **official domains + what to check** (pricing page, changelog, press) without fabricating updates.\\n- **Never invent press quotes, numbers, or URLs**."},"trending_topics_monitor":{"title":"Trending topics","description":"Track trending discussions and news in industries or communities you list.","prompt":"Industries, communities, or hashtags I track (edit): **(e.g. fintech, indie games, city subreddit, AI tools)**.\\n- If web search works: **5–7** bullets on what is **trending or unusually active** this week; note platform (news, Reddit-style, HN-style) at a high level.\\n- If not: suggest **where to look** and **search phrases**—no made-up threads.\\n- Flag **controversy or misinformation risk** briefly when relevant."},"tech_radar_stack":{"title":"Tech radar","description":"Monitor new releases and security advisories for stacks you name (frameworks, runtimes, cloud).","prompt":"Stacks I use (edit): **(e.g. Node LTS, Postgres, AWS service X, Android SDK)**.\\n- List **notable releases or deprecations** from the past ~14 days using **official blogs, registries, or changelogs** only.\\n- Security: point to **official advisory channels**; **do not invent CVE IDs**.\\n- If the workspace has lockfiles, you may mention ecosystem at a high level; if unsure, say what file you need."},"dependency_check_audit":{"title":"Dependency check","description":"Audit-style nudge for outdated packages and known issues—suggests commands, does not fabricate CVEs.","prompt":"From the repo in the workspace, infer package managers (`package.json`, `go.mod`, `pyproject.toml`, etc.).\\n- Suggest **one concrete audit command** per ecosystem if documented (npm/pnpm audit, pip-audit, etc.).\\n- Summarize **what I should look for** (majors, yanked packages, EOL runtimes) without claiming scan results you did not run.\\n- **Never fabricate CVE numbers** or vulnerable versions."},"weekly_review":{"title":"Weekly review","description":"Summarize the week\'s commits, open items, and next-week priorities.","prompt":"**Weekly review** (assume end of week):\\n- **Shipped themes** from git + workspace notes (or say git unavailable).\\n- **Open items** still worrying (max 6).\\n- **Next week**: 3 headline priorities.\\n- **One thing to stop or delegate** if overload is visible.\\n- Short, executive-summary tone."},"code_quality_report":{"title":"Code quality report","description":"Outline how to run lint/type-check and what to look for in output—does not pretend CI already ran.","prompt":"Inspect the workspace for **lint / typecheck / format** scripts (package.json, Makefile, CI YAML).\\n- Propose **commands** I should run locally and in what order.\\n- Describe **how to skim output**: error categories, flaky tests, type debt hotspots—without inventing numbers.\\n- If no scripts found, suggest a **minimal** starter for the detected language with caveats."},"git_activity_summary":{"title":"Git activity summary","description":"Summarize recent commits, active branches, and hotspot files when git is available.","prompt":"Summarize **recent Git activity** (last ~7 days if possible):\\n- Commit **themes**, **active branches** worth naming, **hotspot files** touched often.\\n- If git is not callable here, output **commands** to reproduce the summary locally.\\n- Avoid dumping hashes; keep it scannable."},"user_feedback_digest":{"title":"User feedback digest","description":"Summarize recurring feedback and pain points from notes, issues exports, or docs you keep in the workspace.","prompt":"I store feedback in (edit paths or patterns): **`feedback/`, issues export, Notion export, etc.`**\\n- From readable workspace text, cluster **recurring themes**, **sentiment (rough)**, and **top pain points** (max 5).\\n- If no material: give a **template** for how I should paste feedback next time.\\n- No PII beyond what is already in files; redact if needed in summary."},"content_repurpose":{"title":"Content repurpose","description":"Turn one piece of content into multi-platform drafts via the content_repurpose workflow.","prompt":"Workflow: content_repurpose — paste source content and target platforms in the form."},"stale_todo_or_issue_sweep":{"title":"Stale todo / issue sweep","description":"Find aging TODOs or issue-like markers in the repo and suggest keep / close / split.","prompt":"Scan the workspace for **TODO/FIXME/HACK** comments or lightweight issue lists in markdown.\\n- List up to **10 stale candidates** (old by file churn or vague wording) with **suggested next action**: close, split, or schedule.\\n- Do not delete anything—recommendations only.\\n- If scan is incomplete, say why."},"release_notes_or_changelog_draft":{"title":"Release notes draft","description":"Draft changelog bullets from recent commits and version files—human must verify before ship.","prompt":"Draft **release notes / changelog** candidate for the **next** version bump:\\n- Read `CHANGELOG`, version in `package.json`/`Cargo.toml`/similar if present.\\n- Summarize **user-visible** changes from recent commits since last tag if inferable; else since last week.\\n- Mark **uncertain** items; I will edit before publishing.\\n- No marketing exaggeration."},"client_proposal":{"title":"Client proposal","description":"Draft a client proposal from a brief using the client_proposal workflow.","prompt":"Workflow: client_proposal — fill client brief and offer details in the form."},"offer_design":{"title":"Offer design","description":"Monthly offer packaging review for solopreneurs via the offer_design workflow.","prompt":"Workflow: offer_design — describe skills, audience, and constraints in the form."},"decision_compare":{"title":"Decision compare","description":"Compare options with trade-offs using the decision_compare workflow.","prompt":"Workflow: decision_compare — fill the decision question and options in the form."},"workspace_cleanup_suggestions":{"title":"Workspace cleanup","description":"List large artifacts, caches, or generated files to review before the weekend—never auto-delete.","prompt":"Suggest **workspace cleanup** before the weekend:\\n- Large **build outputs, caches, logs** if discoverable.\\n- Table: path | why it might be safe to trim | risk | suggested action (review only).\\n- **Never delete**; if you cannot see disk usage, say so and give generic patterns."},"smoke_or_ci_health_reminder":{"title":"Smoke / CI health","description":"Remind which smoke tests or CI checks matter this week and how to run them locally.","prompt":"From CI config and package scripts, list **smoke or health checks** worth running this week.\\n- For each: **command**, **expected green signal**, **when to run** (before release, daily, etc.).\\n- If CI files are missing, propose a **minimal** manual smoke path for this repo type.\\n- Do not claim CI passed without evidence."}}}')},o={logs:{title:`Logs`,subtitle:`Runtime diagnostics and history from the gateway.`,needToken:`Save a gateway token to view logs.`,filters:`Filters`,level:`Level`,searchPlaceholder:`Search message or module…`,module:`Module`,allModules:`All modules`,timeRange:`Time range`,from:`From`,to:`To`,clear:`Clear`,refresh:`Refresh`,autoRefresh:`Auto refresh`,pause:`Pause`,liveHint:`Streaming via SSE`,logFiles:`Log files`,filesEmpty:`No log files on disk`,loadMore:`Load more`,showingCount:`{{count}} entries loaded`,moreAvailable:`Earlier entries may be available`,noLogs:`No matching entries`,noLogsDescription:`Adjust filters or search, or try again later.`,loading:`Loading…`,loadError:`Failed to load logs`,details:`Log details`,close:`Close`,time:`Time`,message:`Message`,metadata:`Metadata`,statsRegion:`Sample (recent files)`,statsHint:`Counts are sampled from recent log files, not totals.`,statsDetailTitle:`Level breakdown`,logDir:`Directory`,requestId:`Request ID`,sessionKey:`Session key`,sessionId:`Session ID`,phase:`Phase`,stackTrace:`Stack trace`,filterByRequestId:`Filter trace`,filterBySessionId:`Filter session`,openChat:`Open chat`,runtimeErrors:`Errors (24h)`,logLevelTitle:`Log level`,logLevelHint:`Runtime gateway log verbosity (applies immediately).`,logLevelLoadError:`Failed to load log level`,logLevelSaveError:`Failed to update log level`,exportLogs:`Export`,exportHint:`Download currently loaded entries.`,exportJson:`JSON`,exportCsv:`CSV`,errorSummaryTitle:`Error patterns`,errorSummaryHint:`Grouped from recent error/fatal logs in the selected time range.`,presetAll:`All`,presetErrors:`Errors`,presetWarnPlus:`Warn+`,presetInfoPlus:`Info+`,presetVerbose:`Debug`,presetOther:`More`,levelPresetAria:`Filter by log level`,refreshModeAria:`Log refresh mode`,refreshManual:`Manual`,refreshLive:`Live`,filtersMore:`More filters`,filtersDialogTitle:`More filters`,filtersDialogDesc:`Time range and custom log levels.`,filtersDone:`Done`,levelCustom:`Custom levels`,levelCustomHint:`Toggle to include or exclude. No selection means all levels.`,copyMessage:`Copy message`,copyJson:`Copy JSON`,copied:`Copied`,levelNames:{trace:`trace`,debug:`debug`,info:`info`,warn:`warn`,error:`error`,fatal:`fatal`}}},s={goalsPage:{title:`Goals`,refresh:`Refresh`,newGoalPlaceholder:`What do you want to achieve?`,searchPlaceholder:`Search goals…`,create:`New goal`,attempt:`attempt {{attempts}}/{{max}}`,turns:`turns {{used}}/{{max}}`,checklistProgress:`checklist {{done}}/{{total}}`,checklist:`Checklist`,openDetails:`Open details`,closeDetails:`Close details`,fullDetails:`View details`,currentBlocker:`Current blocker`,nextAction:`Next action`,noNextAction:`No next action recorded yet.`,noChecklist:`No checklist yet.`,prioritySummary:`{{priority}} priority`,deadlineSummary:`due {{deadline}}`,priorities:{low:`low`,normal:`normal`,high:`high`},createDialog:{title:`New goal`,description:`Describe the outcome you want. xopc can help draft acceptance criteria and completion evidence.`,simpleStartTitle:`Describe the goal`,simpleStartHint:`Start with the outcome. You can add acceptance criteria and evidence later.`,goalTitle:`Goal`,goalFallback:`the goal`,goalDescription:`Context`,descriptionPlaceholder:`Relevant background, constraints, existing progress…`,addAttachment:`Add attachment`,criteriaTitle:`Acceptance criteria`,criteriaHint:`xopc uses these criteria to decide whether the goal is complete.`,checklistPolicyEmptyOnly:`If you add criteria now, xopc will not add more during the first run.`,checklistPolicySupplementExisting:`After the first run, xopc may add new, non-duplicate criteria.`,aiDraft:`Draft completion plan`,drafting:`Drafting…`,draftFailed:`xopc couldn't draft the completion plan. Try again.`,criteriaPlaceholder:`Acceptance criterion {{index}}`,addCriteria:`Add acceptance criterion`,removeCriteria:`Remove acceptance criterion`,completionPlan:`Completion plan`,completionPlanHint:`Optional: define how xopc should determine that this goal is complete.`,contractTitle:`Completion agreement`,contractHint:`Define the expected outcome, scope, and evidence so xopc can determine when the goal is complete.`,objective:`Desired outcome`,objectivePlaceholder:`What will observably be true when this goal is complete?`,scopeBoundary:`Scope boundary`,scopeBoundaryPlaceholder:`What is in scope, and what should not be changed?`,evidencePlan:`Completion evidence`,evidencePlanHint:`Name the test, artifact, report, or confirmation that will prove success.`,evidencePlanPlaceholder:`Evidence requirement {{index}}`,addEvidence:`Add evidence requirement`,removeEvidence:`Remove evidence requirement`,defaultEvidencePlan:[`Acceptance criteria are verified with relevant tests or an inspectable artifact.`],advanced:`Execution settings`,priority:`Priority`,deadline:`Completion deadline`,deadlineNone:`Not set`,deadlineToday:`Today 23:59`,deadlineTomorrow:`Tomorrow 23:59`,deadlineFriday:`This Friday 23:59`,deadlineCustom:`Custom`,deadlineAt:`Exact time`,maxTurns:`Max execution turns`,agentId:`Assigned agent`,defaultAgent:`default`,agentPrimaryModel:`Primary model: {{model}}`,judgeModel:`Review model`,judgeModelPlaceholder:`Use system default`,agentModelRoles:`Current agent model roles`,judgeRole:`review`,configuredModels:`Configured models`,titleRequired:`Goal title is required.`,cancel:`Cancel`,create:`Create goal`,aiChecklistTemplates:[`{{goal}} has a clear, user-verifiable outcome.`,`All required implementation or operational steps for {{goal}} are complete.`,`Evidence is recorded for the final result, such as tests, command output, files, links, or notes.`,`Known blockers and follow-up questions for {{goal}} are resolved or explicitly documented.`]},workbench:{pageDescription:`Track progress and handle goals that need attention.`,tabs:{label:`Goal views`,workbench:`Overview`,all:`Open`,history:`History`},hero:{eyebrow:`Goal status`,attentionOne:`1 goal needs attention`,attentionMany:`{{count}} goals need attention`,attentionDescription:`Start with the most important issue, then continue the goal.`,runningOne:`1 goal is in progress`,runningMany:`{{count}} goals are in progress`,runningDescription:`These goals are running, queued, or waiting to retry.`,readyOne:`1 goal is ready to continue`,readyMany:`{{count}} goals are ready to continue`,readyDescription:`Choose a goal to continue.`,calm:`Nothing needs your attention`,calmDescription:`No goals are running or need your attention.`,calmDescriptionWithPaused:`No goals are running or need your attention. You have {{paused}} paused for later.`,nextFocus:`Recommended next`},status:{blocked:`Blocked`,needsInput:`Needs your input`,executionFailed:`Execution failed`,running:`Running`,queued:`Queued`,retryWaiting:`Retry scheduled`,ready:`Ready to continue`,paused:`Paused`,done:`Completed`,archived:`Archived`},actions:{handle:`Review issue`,review:`Review outcome`,viewExecution:`View progress`,continueExecution:`Continue goal`,working:`Working…`,retryLoad:`Try again`},row:{inputNeeded:`Open the goal and add the missing information.`,reviewBlocker:`Review the blocker before continuing.`,executionFailed:`Review why the latest run failed, then try again.`,executionInProgress:`xopc is working on the next step.`,pausedByUser:`This goal is paused. Resume it whenever you're ready.`,completedReview:`This goal is complete and ready for review.`,archived:`This goal is archived and no longer appears with open goals.`,highPriority:`High priority`,lastSucceeded:`Last run succeeded · {{time}}`,lastFailed:`Last run failed · {{time}}`,lastFinished:`Last run finished · {{time}}`,latestExecution:`Latest run`},sections:{attention:{title:`Needs attention`,description:`Blocked, waiting for input, or failed after retries.`},running:{title:`In progress`,description:`Executing now, queued, or waiting for a retry.`},ready:{title:`Ready to continue`,description:`These goals have a clear next step and can continue now.`},later:{title:`Paused`,description:`These goals are not running and can be resumed at any time.`}},filters:{agent:`Filter by agent`,status:`Filter by status`,priority:`Filter by priority`,allAgents:`All agents`,allStatuses:`All statuses`,allPriorities:`All priorities`,clear:`Clear filters`},empty:{healthyTitle:`Nothing needs attention`,healthyDescription:`No goals are running or need your attention.`,healthyDescriptionWithPaused:`No goals are running or need your attention. You have {{paused}} paused for later.`,noOpenTitle:`No matching goals`,noOpenDescription:`Adjust your search or filters, or create a new goal.`,noHistoryTitle:`No goal history yet`,noHistoryDescription:`Completed and archived goals will appear here.`},history:{title:`Goal history`,description:`Review completed and archived goals, or reopen one when needed.`},undo:{message:`Updated the status of “{{title}}”.`,action:`Undo`,dismiss:`Dismiss`}},actions:{continue:`Continue`,pause:`Pause`,reopen:`Reopen`,complete:`Complete`,archive:`Archive`,unarchive:`Unarchive`},errors:{load:`Couldn't load goals. Try again.`,create:`Couldn't create the goal. Try again.`,action:`Couldn't update the goal. Try again.`},statuses:{active:`Open`,paused:`Paused`,blocked:`Blocked`,needs_input:`Needs input`,done:`Completed`,archived:`Archived`,queued:`Queued`,running:`Running`,retry_waiting:`Waiting to retry`,succeeded:`Succeeded`,failed:`Failed`,skipped:`Skipped`},sources:{manual:`manual`,cron:`cron`,workflow:`workflow`,api:`API`}},goalDetailPage:{back:`Goals`,loading:`Loading goal…`,notFound:`Goal not found.`,notSet:`Not set`,noDeadline:`No deadline`,default:`Default`,agent:`agent {{agentId}}`,turns:`turns {{used}}/{{max}}`,checklistProgress:`checklist {{done}}/{{total}}`,prioritySummary:`{{priority}} priority`,currentBlocker:`Current blocker`,nextAction:`Next action`,noNextAction:`No next action recorded yet.`,chat:`Chat`,refresh:`Refresh`,pause:`Pause`,archive:`Archive`,archiveConfirm:`Archive this goal? It will move to history and can be reopened later.`,goalBrief:`Goal brief and completion agreement`,progressPanel:{activeTitle:`Ready to continue`,blockedTitle:`This goal can't continue yet`,blockedFallback:`xopc can't continue safely yet. Review the blocker, then continue the goal or run a diagnostic workflow.`,needsInputTitle:`Input is needed`,needsInputFallback:`Add the missing detail, then continue the goal.`,pausedTitle:`Paused for later`,pausedFallback:`Resume this goal whenever you're ready to continue.`,doneTitle:`Goal completed`,doneFallback:`Review the completion evidence, then archive the goal when you no longer need it nearby.`,executionFinishedTitle:`Execution finished; review is pending`,executionFinishedFallback:`A result is available, but its evidence or business outcome still needs review. Review it before marking the goal complete.`,reviewPendingLabel:`Review pending`,archivedTitle:`Archived`,archivedFallback:`This goal is preserved for history and removed from active work.`,lastCheck:`Last check at {{time}}: {{reason}}`,evidenceNeeded:`Evidence still needed before completion`,completion:`Completion`,execution:`Execution progress`,evidence:`Evidence`,evidenceCount:`{{count}} recorded`,reviewNeeded:`Evidence still needs approval`,reviewComplete:`Evidence approved`,outcome:`Business outcome`,outcomeNotSet:`Not set`,outcomeNotSetHint:`Add a baseline, current value, and target`,outcomeSummary:`Baseline {{baseline}} · current {{current}} · target {{target}}{{unit}}`,currentMissing:`not measured`,continueExecution:`Continue the next step`,reviewEvidenceAction:`Review evidence`,turnBudget:`Turn budget`},outcomeMetric:{title:`Business outcome metric`,hint:`Set a baseline, current value, and target to confirm whether the goal achieved its intended outcome.`,achieved:`Outcome achieved`,notAchieved:`Outcome not achieved`,name:`Metric`,namePlaceholder:`For example, GitHub Stars`,baseline:`Baseline`,current:`Current`,target:`Target`,unit:`Unit`,unitPlaceholder:`For example, stars`,source:`Data source`,sourcePlaceholder:`Link or description`,clear:`Clear metric`,save:`Save outcome metric`},actionRail:{nextTitle:`Recommended next step`,continueAction:`Continue with xopc`,needsYou:`Needs your attention`,defineOutcome:`Add a verifiable business outcome metric`,reviewEvidenceCount:`{{count}} evidence items await review`,latestCheckContinue:`The latest review recommends continuing`,setOutcome:`Set outcome metric`,reviewEvidence:`Review evidence`,automation:`Automated actions and suggestions`},executionProgress:{runTitle:`Execution {{number}}`,noRuns:`No execution records yet.`,systemActivity:`System activity and technical records ({{count}})`},acceptance:`Acceptance`,acceptanceHint:`Review acceptance criteria and supporting evidence.`,goalContract:`Completion agreement`,editContract:`Edit completion agreement`,saveContract:`Save completion agreement`,contractObjective:`Desired outcome`,contractObjectivePlaceholder:`Describe the user-visible outcome…`,scopeBoundaryPlaceholder:`What is in or out of scope…`,acceptanceCriteria:`Acceptance criteria`,contractLinesHint:`One item per line…`,scopeBoundary:`Scope boundary`,completionEvidence:`Completion evidence`,evidenceRequirements:`Evidence requirements`,evidenceRequirementProgress:`Approved evidence: {{approved}}/{{total}}`,linkedEvidenceCount:`Linked evidence: {{count}}`,provesRequirement:`Evidence requirement`,reviewEvidence:`Verify with xopc`,approveEvidence:`Approve evidence`,evidenceRequirementStatuses:{pending:`Evidence needs review`,ai_verified:`Verified by xopc; awaiting your approval`,approved:`Approved`,rejected:`Rejected`},latestJudgement:`Latest check: {{status}}`,latestNext:`Next: {{next}}`,checklist:`Checklist`,addAcceptancePlaceholder:`Add acceptance criterion…`,add:`Add`,noChecklist:`No acceptance criteria yet. xopc can create them during the next run.`,markPending:`Mark pending`,markCompleted:`Mark completed`,markImpossible:`Mark impossible`,deleteChecklistItem:`Delete checklist item`,evidence:`Evidence`,kind:`Kind`,title:`Title`,evidenceTitlePlaceholder:`Evidence title…`,uriOrPath:`URI or Path`,uriOrPathPlaceholder:`URI or path…`,summary:`Summary`,summaryPlaceholder:`Summary…`,addEvidence:`Add evidence`,noEvidence:`No completion evidence yet.`,timeline:`Timeline`,timelineHint:`View goal runs, workflows, evidence, and system events in chronological order.`,noTimeline:`No activity in this view.`,goalSettings:`Goal Settings`,deadline:`Deadline`,judgeModel:`Review model`,created:`Created`,updated:`Updated`,editDetails:`Edit details`,description:`Description`,priority:`Priority`,maxTurns:`Max turns`,blockedReason:`Blocked reason`,saveDetails:`Save details`,workflow:`Workflow`,workflowHint:`Use a predefined process to execute this goal.`,activeCount:`Active runs: {{count}}`,definition:`Definition`,noWorkflows:`No workflows`,workflowGoal:`Workflow goal`,runWorkflow:`Run workflow`,recentWorkflowRuns:`Recent workflow runs`,viewTimeline:`View timeline`,cancel:`Cancel`,retry:`Retry`,run:`Run`,recoveryNeeded:`Recovery needed`,failedCount:`{{count}} failed`,exitCode:`exit {{code}}`,outputBytes:`{{bytes}} bytes`,fuzzyMatch:`fuzzy match`,primaryActions:{resolveBlocker:`Resolve blocker`,resume:`Resume goal`,completed:`Completed`,archived:`Archived`,continue:`Continue`},timelineFilters:{all:`all`,queue:`queue`,goal_run:`goal run`,workflow_run:`workflow run`,event:`event`,evidence:`evidence`},evidenceKinds:{file:`file`,diff:`diff`,command:`command`,test:`test`,link:`link`,message:`message`,artifact:`artifact`},statuses:{active:`Open`,paused:`Paused`,blocked:`Blocked`,needs_input:`Needs input`,done:`Completed`,archived:`Archived`,queued:`Queued`,running:`Running`,succeeded:`Succeeded`,failed:`Failed`,timeout:`Timed out`,cancelled:`Cancelled`,continue:`Continue`,decompose:`Break down`},priorities:{low:`low`,normal:`normal`,high:`high`},errors:{load:`Couldn't load the goal. Try again.`,loadWorkflows:`Couldn't load workflows. Try again.`,continue:`Couldn't continue the goal. Try again.`,save:`Couldn't save the goal. Try again.`,action:`Couldn't update the goal. Try again.`,startWorkflow:`Couldn't start the workflow. Try again.`,cancelWorkflow:`Couldn't cancel the workflow. Try again.`,retryWorkflow:`Couldn't retry the workflow. Try again later.`,addChecklist:`Couldn't add the acceptance criterion. Try again.`,updateChecklist:`Couldn't update the acceptance criterion. Try again.`,deleteChecklist:`Couldn't delete the acceptance criterion. Try again.`,addEvidence:`Couldn't add the evidence. Try again.`}}},c={notes:{title:`Notes`,needToken:`Save a gateway token to manage notes.`,searchPlaceholder:`Search notes…`,searchDialogTitle:`Search notes`,searchClose:`Close search`,searchClear:`Clear search`,searchEmptyTitle:`Search all notes`,searchEmptyDescription:`Type a keyword to search titles, content, tags, and attachment text.`,searchNoResults:`No matching notes`,searchNoResultsDescription:`Try another keyword, or check whether the note was archived.`,searchResultsCount:`{{count}} results`,quickCapturePlaceholder:`Write down your thought…`,createBlankNote:`New blank note`,creatingBlankNote:`Creating…`,createBlankShortcut:`New blank note (⌘/Ctrl N)`,createBlankFailed:`Could not create note`,createBlankFailedHint:`Please try again later.`,send:`Send`,filterAll:`All`,filterInbox:`Inbox`,filterProcessed:`Processed`,filterArchived:`Archived`,kindAll:`All types`,kindThought:`Thought`,kindTodo:`Todo`,kindVoice:`Voice`,kindMedia:`Media`,kindBookmark:`Bookmark`,libraryTitle:`Library`,libraryDescription:`Focused views for capture, review and action.`,viewRecent:`Recent`,viewRecentDescription:`Latest notes`,viewInboxDescription:`Unprocessed captures`,viewPinnedDescription:`Important notes`,viewTasks:`Tasks`,viewTasksDescription:`Action items`,viewVoiceDescription:`Voice captures`,viewMediaDescription:`Images and files`,viewBookmarksDescription:`Saved links`,viewProcessedDescription:`Organized notes`,viewArchiveDescription:`Stored away`,emptyEditorTitle:`Select a note`,emptyEditorDescription:`Choose a note from the list to edit, review history, or continue the discussion with AI.`,noteOutsideCurrentView:`The open note is not in this view. You can keep editing it, or switch views to find it in the list.`,resizeNotesList:`Resize notes list`,collapseNotesList:`Collapse notes list`,expandNotesList:`Expand notes list`,noNotes:`No notes yet`,noNotesDescription:`Capture your first thought using the input above.`,pinned:`Pinned`,delete:`Delete`,archive:`Archive`,pin:`Pin`,unpin:`Unpin`,editTags:`Edit tags`,noteCount:`{{count}} notes`,back:`Back`,modeEdit:`Edit`,modeSource:`Source`,modePreview:`Preview`,saving:`Saving…`,emptyPreview:`Empty note — switch to Edit to start writing.`,imageUploadFailed:`Image upload failed`,imageUploadFailedHint:`Check your connection and try again.`,imageNote:`Image note`,noText:`No text`,saveFailed:`Failed to save note`,saveFailedHint:`Your latest edits may not have been saved.`,voiceUploadFailed:`Voice upload failed`,voiceUploadFailedHint:`Check microphone permissions and try again.`,recording:`Recording · {{seconds}}s`,voicePlay:`Play`,voicePause:`Pause`,readAloud:`Read aloud`,readAloudPreparing:`Preparing…`,readAloudPause:`Pause`,readAloudResume:`Resume`,readAloudRetry:`Retry`,lightboxClose:`Close image preview`,titlePlaceholder:`Untitled`,notFoundTitle:`Note not found`,notFoundDescription:`This note may have been deleted or moved.`,justNow:`Just now`,minutesAgo:`{{n}}m ago`,today:`Today`,yesterday:`Yesterday`,daysAgo:`{{n}}d ago`,quickCaptureHintEnter:`Save & open`,quickCaptureHintShift:`Save`,quickCaptureHintEsc:`Cancel`,history:`Version history`,historyEmpty:`No version history`,historyEmptyDescription:`History will be saved automatically as you edit.`,restore:`Restore this version`,restoreConfirm:`Restore to this version? Current content will be overwritten.`,restoreSuccess:`Restored`,restoreFailed:`Restore failed`,triggerEdit:`Edit`,triggerAiEdit:`AI edit`,triggerSync:`Sync`,triggerRestore:`Restore`,catalyzeButton:`Break down`,catalyzing:`Breaking down`,openChatButton:`Discuss with AI`,chatOpenFailedTitle:`Cannot open discussion`,chatOpenFailedMessage:`Please try again later`,catalysisSectionTitle:`AI Breakdown`,catalysisSectionDescription:`Turn an idea into questions, paths and next actions.`,contextStatusTitle:`AI context`,contextStatusDetail:`Processed {{attachments}} attachment(s), about {{tokens}} tokens.`,contextRebuild:`Rebuild`,catalyzeAction:`Break down`,processing:`Processing`,recatalyze:`Break down again`,noCatalysisReportHint:`No breakdown yet. Click "Break down" to generate the first action plan.`,valueHypothesis:`Value hypothesis`,keyQuestions:`Key questions`,targetUsers:`Target users`,mvpPathLabel:`MVP path`,risks:`Risks`,nextActions:`Next actions`,confidenceLabel:`Confidence {{percent}}%`,feedbackHelpfulAria:`Breakdown was helpful`,feedbackNotHelpfulAria:`Breakdown was not helpful`,catalysisDone:`Breakdown complete`,catalysisFailed:`Breakdown failed`,relatedThreadsTitle:`Related discussions`,relatedThreadsDescription:`Continue co-creating with AI around this Note.`,openThread:`Continue`,newThread:`New`,openingChat:`Opening`,noThreads:`No discussion threads yet.`,noteDiscussionFallback:`Note discussion`,messageCount:`{{count}} messages`}},l={onboarding:{title:`Welcome to xopc`,subtitle:`A personal assistant that learns how you work and helps carry things through.`,step0Title:`What should I call you?`,step0Subtitle:`This helps the assistant address you naturally throughout your conversations.`,step1Title:`Choose the intelligence service`,step1Subtitle:`Pick a service to power your assistant. We'll choose a recommended model for you.`,step2Title:`Enter your API key`,step2Subtitle:`Connect the service securely. You can change advanced model settings later.`,step2Placeholder:`Paste your API key here`,step2SecurityNote:`🔒 Keys never leave your machine.`,step3Title:`Choose a default model`,step3Subtitle:`New chats will use this model first. You can change it anytime in settings.`,profileCallNameLabel:`What should xopc call you?`,profileCallNamePlaceholder:`For example: Alex, Joyce, Mic`,modelSaveFailed:`Could not save the default chat model. Please try again.`,back:`Back`,continue:`Continue`,savingProfile:`Remembering…`,startChatting:`Start chatting`,skipCallName:`Skip — I'll set this later`,skipSetup:`Skip — I'll set this up later`,setupComplete:`You're all set! Start chatting below.`,stepOf:`Step {{current}} of {{total}}`,providerRecommended:`Recommended`,workDiscovery:{title:`Connect your recent work`,selectProject:`Choose a project`,recentProjects:`Recent projects`,chooseWorkFolder:`Choose a work folder`,chooseAnotherFolder:`Choose another folder`,resumeAnalysis:`View analysis progress`,projectStartFailed:`Could not open a conversation in this project.`,subtitle:`Choose a local folder. xopc will read it without making changes, understand the current state, and suggest a few ways to keep moving. This usually takes less than a minute.`,chooseFolder:`Choose folder`,skip:`Skip for now`,readOnlyNote:`Files will not be changed. You can review the read scope before analysis starts.`,selectedTitle:`Review the read scope`,selectedSubtitle:`xopc will inspect project structure, project instructions, recent text changes, and Git state.`,localFingerprint:`Local project signal`,branchValue:`Branch {{branch}}`,noGitBranch:`No Git branch detected`,recentActivity:`Recent activity`,changedFiles:`{{count}} changed files`,recentAreas:`Changed areas`,willRead:`Will read`,willReadValue:`Project structure, instructions, recent text files, and Git state`,willIgnore:`Will ignore`,willIgnoreValue:`Dependencies, build output, binary files, and common secret files`,providerDisclosure:`Relevant text excerpts may be sent to {{provider}} for analysis. Raw credentials and excluded files are not included.`,localDisclosure:`Analysis uses the configured local model. Excluded files are not included.`,startAnalysis:`Start analysis`,changeFolder:`Choose another folder`,stages:{folder_structure:`Understanding the folder`,recent_progress:`Reviewing recent progress`,next_steps:`Preparing next steps`},analyzingTitle:`Understanding your recent work`,analyzingSubtitle:`You can leave this page. The gateway will keep the analysis running.`,cancelAnalysis:`Cancel analysis`,foundTitle:`What I found`,recognitionEyebrow:`My current understanding`,recognitionTitle:`Does this match what you're working on?`,confirmUnderstanding:`Yes, continue`,notQuiteRight:`Not quite`,correctionLabel:`What should I understand differently?`,correctionPlaceholder:`For example: Today I want to finish the onboarding flow, not the user profile settings.`,useCorrection:`Continue with this correction`,differentGoal:`I'm doing something else`,continueWithCorrection:`Continue with this context`,understandingConfirmed:`Understanding confirmed`,primaryRecommendationTitle:`A useful next step`,estimatedMinutes:`About {{count}} min`,riskAnalysis:`Analysis only`,riskCommand:`May run a command with approval`,riskFileWrite:`May propose file changes`,expectedOutcome:`Expected outcome`,startRecommendedAction:`Start`,explainFirst:`Explain first`,otherDirections:`Other directions`,doSomethingElse:`Do something else`,correctUnderstanding:`Correct my understanding`,suggestionsTitle:`Suggested next steps`,continue:`Continue`,discussFirst:`Discuss first`,openConversation:`Open the conversation`,notAccurate:`These suggestions are not accurate`,chooseDifferent:`Choose a different folder`,errorTitle:`The analysis could not finish`,retry:`Try again`,loading:`Preparing work discovery…`,codingProject:`Software project`,generalProject:`General work folder`,unknownProject:`Local folder`,lowConfidenceTitle:`A little more context will help`}}},u={providersSettings:{subtitle:`Provider API keys and OAuth. Keys you save here go to the gateway credential store.`,intro:`Search or open a group, expand a provider, paste a new key, then Save. OAuth opens in your browser when you choose it.`,quickStartIntro:`Pick a provider to get started — paste your API key in the row that opens.`,docsLink:`Model & provider docs`,modelsLink:`Custom providers (models.json)`,rotateHint:`Rotating a key: expand the provider, paste the new secret, Save — no restart needed.`,needToken:`Save a gateway token to manage provider credentials.`,loadError:`Failed to load providers`,save:`Save`,saving:`Saving…`,saved:`Saved`,noChangesSaved:`No new keys to save.`,saveError:`Failed to save`,empty:`No providers available.`,searchPlaceholder:`Search OpenAI, Claude, Gemini…`,getApiKey:`Get API Key`,getApiKeyIntl:`Get API Key (International)`,getApiKeyCn:`Get API Key (China)`,savedModelsAvailable:`models available`,savedNoModels:`Configured — no models listed yet`,envVarAlt:`Or set via environment variable`,moreOptions:`More options`,unconfiguredOnly:`Unconfigured only`,noMatches:`No providers match your filters.`,clearFilters:`Clear filters`,discard:`Discard`,unsavedHint:`You have unsaved changes.`,runtimeLabelPrefix:`Runtime credential:`,sourceAgent:`agent private profile`,sourceGateway:`saved in gateway (this console)`,sourceOauth:`OAuth token`,sourceEnv:`environment variable`,sourceModelsJson:`models.json`,sourceExtension:`extension provider`,sourceNone:`none`,testKey:`Test value`,testingKey:`Testing…`,testOkLiteral:`Value accepted (direct key or text).`,testOkEnv:`Environment variable resolves.`,testOkCommand:`Command resolved successfully.`,testFailed:`Check failed.`,revokeFailed:`Revoke failed.`,expandRowDetails:`Show credential fields`,categories:{common:`Common providers`,domestic:`Domestic China models`,specialty:`Other providers`,enterprise:`Enterprise / cloud`,oauth:`OAuth only`,extension:`Extensions`},configuredCount:`{{count}} configured`,metaMasked:`Credential on file — enter a new key to replace.`,metaWillSave:`API key will be saved when you click Save.`,metaNotConfigured:`Not configured.`,placeholderKey:`API key`,placeholderKeep:`Leave empty to keep current`,placeholderOverride:`Enter new key to override`,show:`Show`,hide:`Hide`,copy:`Copy`,copied:`Copied`,oauth:`OAuth`,revoke:`Revoke`,revokeConfirm:`Revoke OAuth credentials for "{{name}}"?`,oauthStarting:`Starting OAuth…`,oauthProcessingCode:`Processing authorization…`,openAuthPage:`Open auth page`,cancelOAuth:`Cancel`,pasteRedirectUrl:`Paste full redirect URL (e.g. http://127.0.0.1:…/oauth-callback?code=…&state=…)`,submitCode:`Submit`,envHint:`API key is set via environment variable. Enter a new key above to override.`,maskedStoredHint:`Stored credential is not shown. Enter a new key above to replace it.`,oauthHint:`Use OAuth for secure authentication, or enter an API key manually.`,removeKey:`Remove key`,removeKeyConfirm:`Remove the stored API key for "{{name}}"? This cannot be undone.`,removeKeySuccess:`API key removed.`,removeKeyFailed:`Failed to remove key.`},modelsSettings:{needToken:`Save a gateway token to edit models.json.`,subtitle:`Custom providers and models (models.json). Changes apply after save; reload picks up disk edits.`,docsLink:`Model & provider docs`,loadError:`Failed to load models.json`,loadFileWarning:`File warning`,filePath:`Path`,addProvider:`Add provider`,validate:`Validate`,validating:`Validating…`,validateError:`Validation request failed`,save:`Save`,discard:`Discard`,saving:`Saving…`,saved:`Saved`,saveError:`Failed to save`,reload:`Reload`,reloading:`Reloading…`,reloadError:`Reload failed`,showJson:`Show JSON`,hideJson:`Hide JSON`,modeGuided:`Guided`,modeExpert:`Expert`,modeGuidedHint:`Add providers and models with forms. Recommended for most users.`,modeExpertHint:`Edit models.json directly. For custom providers and power users.`,statsProviders:`{{count}} providers`,statsModels:`{{count}} models`,unsavedHint:`You have unsaved changes.`,loading:`Loading…`,jsonParseError:`Invalid JSON`,jsonReset:`Reset from editor`,jsonApply:`Apply JSON`,emptyTitle:`No custom providers`,emptyDesc:`Add OpenAI-compatible endpoints (Ollama, LM Studio, OpenRouter, vLLM, etc.) and optional per-model overrides.`,emptyCta:`Add your first provider`,presetOllama:`Ollama`,presetLmStudio:`LM Studio`,presetOpenRouter:`OpenRouter`,presetZhipuCn:`Zhipu GLM (China · Coding API)`,presetZaiGeneral:`Zhipu GLM (International · general API)`,presetLabel:`Preset`,presetCustom:`Custom`,addProviderTitle:`Add provider`,addProviderSubtitle:`Provider id must be unique (e.g. ollama, my-openai).`,providerIdLabel:`Provider ID`,providerIdPlaceholder:`e.g. ollama`,providerIdRequired:`Provider ID is required`,addProviderConfirm:`Add provider`,cancel:`Cancel`,close:`Close`,baseUrl:`Base URL`,apiType:`API type`,apiKey:`API key`,apiKeyPlaceholder:`sk-…, ENV_VAR, or !command`,apiKeyHint:`Literal key, ENV name (uppercase), or shell command prefixed with !`,authHeader:`Send Authorization header automatically`,testKey:`Test`,show:`Show`,hide:`Hide`,badgeShell:`shell`,badgeEnv:`env`,badgeLiteral:`literal`,removeProvider:`Remove provider`,removeProviderConfirm:`Remove provider "{{id}}" and its models?`,modelsSection:`Models`,modelsEmpty:`No custom models; built-in defaults apply where available.`,addModel:`Add model`,editModel:`Edit model`,removeModel:`Remove model`,removeModelConfirm:`Remove model "{{id}}"?`,addModelTitle:`Add model`,editModelTitle:`Edit model`,modelProviderLabel:`Provider`,modelId:`Model ID`,displayName:`Display name`,inputTypes:`Input types`,inputTextOnly:`Text only`,inputTextVision:`Text + vision`,reasoning:`Supports reasoning`,contextWindow:`Context window`,maxOutputTokens:`Max output tokens`,costSection:`Cost (per 1M tokens)`,costInput:`Input`,costOutput:`Output`,modelIdRequired:`Model ID is required`,mustBePositive:`Must be greater than 0`,addModelConfirm:`Add model`,saveModelConfirm:`Save`,validationErrors:`Validation issues`,validationWarnings:`Warnings`,testError:`Error`,testOk:`Resolved`}},d={projectsPage:{title:`Your work`,summary:`{{count}} workspaces · ongoing work grouped across chats, goals, and tasks`,searchPlaceholder:`Search projects`,create:`Create`,createTitle:`Create project`,createDescription:`Group related sessions, goals, and workspace context without changing agent behavior.`,projectName:`Project name`,workspaceRoot:`Project workspace`,workspacePlaceholder:`Agent default workspace`,workspaceModeFollow:`Follow the agent's default workspace`,workspaceModeFixed:`Use a specific project folder`,workspaceModeGlobal:`Use global default workspace`,workspaceCurrent:`Current path: {{workspace}}`,workspaceFollowHint:`When the project default agent changes, the workspace follows that agent's default workspace.`,workspaceFixedHint:`Save a fixed project path that will not change when the agent changes.`,workspaceHint:`Following the agent does not save a fixed path.`,projectType:`Project type`,projectTypes:{auto:`Auto detect`,coding:`Coding project`,general:`General project`},workHome:{subtitle:`See what is moving, what needs you, and what will happen next.`,briefingTitle:`Today’s briefing`,heroTitle:`Your work, moving forward`,heroBody:`Keep the outcome in view while xopc chooses the agents, plans, and tools behind the scenes.`,activeCount:`{{count}} in progress`,attentionCount:`{{count}} need attention`,needsYou:`Needs you`,needsYouHint:`A decision, missing detail, or blocker is waiting for you.`,nothingNeedsYou:`Nothing needs your attention right now.`,decisionKinds:{work_item:`Work item`,goal:`Ongoing goal`,workflow_run:`Workflow`,automation_run:`Automation`,connector_approval:`Connector action`,goal_evidence:`Completion evidence`},decisionReasons:{needs_input:`Needs input`,in_review:`Ready to review`,blocked:`Blocked`,overdue:`Overdue`,due_soon:`Due soon`,run_failed:`Run failed`,approval_required:`Approval needed`},approve:`Approve`,deny:`Deny`,winKinds:{work_item:`Work completed`,workflow_run:`Workflow completed`,automation_run:`Automation completed`},continueTitle:`Keep moving`,continueHint:`The most relevant work to continue next.`,noCurrentWork:`No active work yet.`,processing:`Working now`,running:`In progress`,nothingRunning:`Nothing is running right now.`,activityTitle:`Recent activity`,activityHint:`Background work, status changes, and items that may need your attention.`,activityNew:`new`,activityUnread:`Unread activity`,activityViewRelated:`View related`,activityRemove:`Remove activity`,activityMarkRead:`Mark all read`,activityClearFinished:`Clear finished`,activityShowAll:`Show all {{count}}`,activityShowLess:`Show less`,activityEmpty:`No recent activity`,activityEmptyBody:`Important status changes will appear here as work moves forward.`,scheduled:`Coming up automatically`,noScheduled:`Nothing is scheduled yet.`,completed:`Recently completed`,emptyTitle:`Nothing is in motion yet`,emptyBody:`Start with a conversation. When something needs continued attention, xopc will keep the context and progress together.`,startChat:`Tell xopc what you need`,startLongWork:`Start ongoing work`,spacesTitle:`Long-running spaces`,spacesHint:`Projects keep related context together when work spans multiple sessions.`,openSpace:`Open space`,noSpaces:`No matching spaces.`,outcomeLabel:`What do you want to keep moving forward?`,outcomePlaceholder:`For example: prepare and ship the Q3 customer research report, including interviews, analysis, and a final presentation.`,autoSetupHint:`xopc will define done, choose the right setup, and start immediately.`,delegate:`Hand off to xopc`,delegateTitle:`Hand this off to xopc`,delegateDescription:`Describe the outcome you want. xopc handles execution, follow-through, and completion checks.`,delegating:`Taking it on…`,watch:`Keep watch`,watchTitle:`Have xopc keep watch`,watchDescription:`Describe what to watch and which changes matter. xopc will prepare a reviewable monitoring plan first.`,watchLabel:`What should xopc watch?`,watchPlaceholder:`For example: watch three competitors’ pricing pages and tell me about price cuts or new plans.`,watchSetupHint:`Next, review the trigger, notification, assumptions, and risks.`,designWatch:`Design the watch`,creating:`Creating…`,retry:`Try again`},defaultAgent:`Default agent`,agentAuto:`Auto`,agentGlobalDefault:`Global default`,agentHintAuto:`Coding workspaces will use coder when it is available.`,agentHintCoding:`Detected coding context. New project chats will default to {{agent}}.`,agentHintCoderUnavailable:`Detected coding context, but coder is unavailable. The project will use the global default.`,agentHintGeneral:`This project will use the global default agent.`,agentHintGlobal:`This project will always use the global default agent.`,agentHintSelected:`This project will default to {{agent}}.`,workspaceConflictTitle:`Workspace already linked`,workspaceConflictDescription:`This folder is already bound to “{{projectName}}”. Open that project instead?`,workspaceConflictPath:`Workspace: {{workspace}}`,workspaceConflictOpen:`Open project`,workspaceConflictBack:`Back`,workspaceMissingTitle:`Workspace folder does not exist`,workspaceMissingDescription:`“{{workspace}}” does not exist yet. Create this folder and continue creating the project?`,workspaceMissingCreate:`Create folder`,workspaceMissingBack:`Choose again`,cancel:`Cancel`,noDescription:`No description yet.`,workspaceLabel:`Workspace: {{workspace}}`,agentDefault:`Follow agent default`,lastActive:`Last active: {{time}}`,never:`Never`,all:`All`,optionalContext:`Optional context layer`,loading:`Loading projects…`,emptyTitle:`Nothing in progress yet`,emptyHint:`Start with a chat. Create a workspace when something grows into ongoing work.`,statuses:{active:`Active`,paused:`Paused`,archived:`Archived`},management:{title:`Projects`,subtitle:`Create, find, and manage spaces for ongoing work.`,filterLabel:`Filter projects`,pin:`Pin`,unpin:`Unpin`,archive:`Archive`,restore:`Restore`,descriptionLabel:`Project description`,descriptionPlaceholder:`Briefly describe what this project should keep moving forward.`,emptyTitle:`No matching projects`,emptyHint:`Change the filters or create a new project.`,viewAll:`View all projects`}},projectDetailPage:JSON.parse(`{"surfaceTabs":{"overview":"Overview","work":"Work","context":"Context","details":"Details","workHint":"Keep the next actions clear; execution details stay available when you need them.","contextTitle":"What this work knows","contextFallback":"Conversations, files, notes, and instructions connected to this work."},"tabs":{"overview":"Overview","sessions":"Sessions","goals":"Goals","workflows":"Workflows","files":"Files","activity":"Activity","automations":"Automations","notes":"Notes","settings":"Settings"},"navAria":"Project sections","backToProjects":"Projects","fallbackTitle":"Project","fallbackContext":"Project context","loading":"Loading project…","notFound":"Project not found.","projectSwitcher":{"switchProject":"Switch project","searchPlaceholder":"Search projects…","current":"Current project","recent":"Recent projects","loading":"Loading projects…","noMatches":"No projects found","newProject":"New project","openDirectory":"Open local directory…","manageProjects":"Manage projects","createFromDirectoryTitle":"Create project from local directory","createFromDirectoryDescription":"Choose a directory and save it as a project. This directory becomes the project workspace."},"common":{"refresh":"Refresh","new":"New","open":"Open","retry":"Retry","cancel":"Cancel","create":"Create","save":"Save","delete":"Delete","continue":"Continue","newChat":"New chat","viewAll":"View all","agent":"agent","defaultAgent":"Default agent","never":"never","root":"root","parentDirectory":"Parent directory","folder":"folder","notSet":"Not set","defaultWorkspace":"Agent default workspace","messages":"{{count}} messages","updated":"Updated {{time}}","lastRun":"{{trigger}} · {{action}} · last {{time}}"},"overview":{"directionTitle":"Project direction","directionFallback":"Add a brief or create a goal so the next step is clear.","saveDigest":"Save digest","savingDigest":"Saving","sessions":"Sessions","activeGoals":"Active goals","recentWorkflowRuns":"Recent workflow runs","nextActions":"Next actions","goal":"Goal","recommendedNext":"Next: {{action}}","noNextActions":"No next actions yet. Create a goal or continue the project chat to establish one.","noNextAction":"No next action set.","staleGoals":"Stale goals","noActiveGoals":"No active goals in this project.","recentSessions":"Recent sessions","noSessions":"No sessions yet.","workflowRuns":"Workflow runs","noWorkflowRuns":"No workflow runs yet.","timeline":"Timeline","noTimeline":"No project activity yet.","timelineKinds":{"session":"Session","goal":"Goal","workflow":"Workflow","memory":"Memory"},"workspace":"Workspace","brief":"Brief","noBrief":"No brief yet.","attention":"Attention","attentionKinds":{"blocked_goal":"Blocked goal","stale_goal":"Stale goal","failed_workflow":"Failed workflow"},"noBlockedGoals":"No blocked goals.","blockerTitlePlaceholder":"New blocker","blockerReasonPlaceholder":"Reason or dependency","addBlocker":"Add blocker","addingBlocker":"Adding"},"workItems":{"tab":"Work items","title":"Work items","boardAria":"Work item board","viewAria":"Work item view","views":{"list":"List","board":"Board"},"refresh":"Refresh work items","refreshing":"Refreshing work items","refreshShort":"Refresh","empty":"No work items yet.","emptyColumn":"No work items in this column.","loadMore":"Load more","noNextAction":"No next action recorded.","dragToUpdate":"Drag to update status","markDone":"Mark work item done","markTodo":"Mark work item todo","agent":"Agent","updated":"Updated","nextAction":"Next action","blockedReason":"Blocked reason","statuses":{"backlog":"Backlog","todo":"Todo","in_progress":"In progress","blocked":"Blocked","needs_input":"Needs input","in_review":"In review","done":"Done","cancelled":"Cancelled"},"priorities":{"low":"Low","normal":"Normal","high":"High","urgent":"Urgent"},"linkKinds":{"chat":"Chat","goal":"Goal","workflow_run":"Workflow","automation":"Automation","note":"Note"},"eventTypes":{"created":"Created","updated":"Updated","status_changed":"Status changed","archived":"Archived","attachment_added":"Attachment added","attachment_removed":"Attachment removed","chat_started":"Chat started","goal_created":"Goal created","workflow_started":"Workflow started","automation_added":"Automation added","link_added":"Link added","progress_note_added":"Progress note added","update_suggestion_created":"Update suggested","update_suggestion_applied":"Update applied","update_suggestion_dismissed":"Update dismissed"},"feedback":{"createdTitle":"Work item created","createdNext":"Next, start a chat to move it forward or create a goal to keep tracking it.","savedTitle":"Changes saved","savedNext":"Next, start a chat to continue the work or create a goal to track follow-up."},"create":{"short":"New","header":"New work item","title":"New work item","titleLabel":"Title","descriptionLabel":"Description","priorityLabel":"Priority","cancel":"Cancel","submit":"Create","addToColumn":"Create work item in {{status}}"},"attachments":{"title":"Attachments","add":"Add attachment","empty":"No attachments yet.","download":"Download attachment","remove":"Remove attachment"},"detail":{"description":"Plan and run the work needed to complete this item.","status":"Status","actions":"Actions","project":"Project","archived":"Archived","loading":"Loading work item…","notFound":"Work item not found.","backToProjects":"Back to projects","backToProject":"Back to {{name}}","noDescription":"No description recorded.","noBlockedReason":"No blocker recorded.","save":"Save changes","openItem":"Open item","startChat":"Start chat","createGoal":"Create goal","workflowTitle":"Task template","workflowHint":"Start a workflow with this item as context. The run is linked back to this work item.","workflowTemplate":"Template","recommendedWorkflows":"Recommended templates","workflowGoal":"Work to advance","startWorkflow":"Start template","noWorkflowTemplates":"No task templates available.","links":"Linked work","noLinks":"No linked chats, goals, or runs yet.","activity":"Activity","noActivity":"No activity yet."}},"workflows":{"runsTitle":"Project workflow runs","runsHint":"Runs started here use this project context and workspace.","loadingRuns":"Loading workflow runs…","runMeta":"{{definitionId}} · {{done}}/{{total}} agents · {{time}}","emptyRuns":"No workflow runs for this project and agent yet.","startTitle":"Start workflow","startHint":"Pick a workflow to run inside this project.","emptyDefinitions":"No workflows available.","browseAll":"Browse all workflows","contextTitle":"Run context","contextHint":"Project workflow runs inherit the selected agent, project workspace, brief, instructions, and active goals."},"automations":{"title":"Project automations","hint":"Automations bound to this project inherit its workspace context.","loading":"Loading automations…","enabled":"enabled","paused":"paused","run":"Run","pause":"Pause","resume":"Resume","empty":"No automations are bound to this project yet.","create":"Create automation","recentRuns":"Recent runs","emptyRuns":"No project automation runs yet.","contextTitle":"Automation context","contextHint":"Agent automations default to this project workspace. Workflow automations pass this project into workflow runs."},"activity":{"title":"Project activity","count":"{{count}} events","loading":"Loading activity…","empty":"No project activity yet.","includeRelated":"Include related","related":"Related","actor":"Actor","source":"Source","types":{"project.created":"Project created","project.updated":"Project updated","project.status_changed":"Project status changed","project.workspace_changed":"Project workspace changed","note.created":"Note created","note.appended":"Note appended","note.updated":"Note updated","note.status_changed":"Note status changed","work_item.created":"Work item created","work_item.updated":"Work item updated","work_item.status_changed":"Work item status changed","work_item.archived":"Work item archived","work_item.link_added":"Work item link added","session.attached_to_project":"Session attached","session.detached_from_project":"Session detached","goal.created":"Goal created","goal.status_changed":"Goal status changed","workflow_run.started":"Workflow run started","workflow_run.completed":"Workflow run completed","automation.run_started":"Automation run started","automation.run_completed":"Automation run completed"},"objectKinds":{"project":"Project","note":"Note","work_item":"Work item","session":"Session","goal":"Goal","workflow_run":"Workflow run","automation":"Automation"}},"notes":{"title":"Project notes","hint":"Notes tagged to this project for decisions, references, and working context.","count":"{{count}} notes","openAll":"Open all","searchPlaceholder":"Search project notes…","categoryAll":"All","categoryDecision":"Decisions","categoryReference":"References","categoryTask":"Tasks","loading":"Loading notes…","untitled":"Untitled note","noPreview":"No preview.","empty":"No notes are tagged to this project yet.","emptyTitle":"No project notes yet","emptyDescription":"Capture a decision, reference, or next idea. It will be attached to this project automatically.","noMatchesTitle":"No matching project notes","noMatchesDescription":"Try another keyword, or switch categories to review other project notes.","newTitle":"New note","quickCaptureHint":"Quickly capture a project decision, reference, or next idea.","addTitle":"Add title","titleLabel":"Title","titlePlaceholder":"Decision, reference, or idea","contentLabel":"Content","contentPlaceholder":"Write project context here…","create":"Create note","bindingTitle":"Binding","bindingHint":"Project notes are tagged with this project id, so they stay queryable from the global Notes page."},"files":{"title":"Project files","noWorkspace":"No project workspace set","loading":"Loading files…","emptyDirectory":"No files in this directory.","search":"Search files","searchPlaceholder":"Search file names","clearSearch":"Clear file search","noSearchResults":"No matching files in this view.","previewEmptyTitle":"Select a file to preview","previewEmptyDescription":"Click a file on the left to open the same preview experience used in chat.","resizeHandle":"Resize file browser","needWorkspace":"Set a project workspace before browsing project files.","openSettings":"Open settings","boundaryTitle":"Workspace boundary","boundaryHint":"Files are listed only from this project workspace. Chats, goals, and workflow runs use the same root.","nextStepTitle":"Next step","nextStepHint":"Start a project workflow when you need the agent to inspect or modify this workspace."},"sessions":{"empty":"No sessions in this project.","emptyTitle":"No project sessions yet","emptyDescription":"Start a chat from the page header to keep its work, goals, and summaries together.","searchPlaceholder":"Search sessions","clearSearch":"Clear session search","noMatches":"No matching sessions","fallbackTitle":"Chat session","sessionKey":"Session key","agent":"Agent","updated":"Updated","meta":"{{agent}} · {{messages}}","metaWithTime":"{{agent}} · {{messages}} · {{time}}"},"goals":{"title":"Goals","hint":"Goals created here stay attached to this project.","new":"New goal","empty":"No goals in this project.","noNextAction":"No next action set."},"settings":{"contextTitle":"Project context","contextHint":"Chats, goals, files, workflow runs, and automations use this project context.","detailsTitle":"Project details","name":"Name","status":"Status","defaultAgent":"Default agent","globalDefaultAgent":"Use global default","description":"List description","descriptionHint":"Shown in project lists and search results so you can quickly recognize this project.","pinState":"Pin state","pinned":"Pinned","notPinned":"Not pinned","workspaceRoot":"Project workspace","workspacePlaceholder":"Agent default workspace","workspaceMode":"Workspace mode","workspaceModeFollow":"Follow current default agent","workspaceModeFixed":"Use a specific project folder","workspaceCurrent":"Current path: {{workspace}}","workspaceHint":"Follow mode stores no fixed path. Changing the project default agent will use the new agent's default workspace.","openWorkspace":"Open folder","copyWorkspacePath":"Copy path","migrateWorkspace":"Move workspace","workspaceMigrationHint":"Project chats, goals, files, workflow runs, and automations use this folder by default. Moving the workspace affects new context from this point on; history is not rewritten.","workspaceMigrationTitle":"Move project workspace","workspaceMigrationDescription":"Move this only when the project has actually moved to a new folder, or when it should follow the agent's default workspace.","workspaceMigrationFixedHint":"Save a fixed project folder that will not change when the agent changes.","workspaceMigrationImpact":"After this change, future chats, goals, and workflows will use the new folder. Files in the old folder are not moved, and historical chats are not rewritten.","workspaceMigrationConfirm":"Confirm move","createdAt":"Created","updatedAt":"Updated","workspaceMissingTitle":"Workspace folder does not exist","workspaceMissingDescription":"“{{workspace}}” does not exist yet. Create this folder and move the project workspace?","workspaceMissingCreate":"Create folder","workspaceMissingBack":"Choose again","managementTitle":"Project management","managementHint":"Actions here affect project list placement and lifecycle; they do not modify project files.","pinTitle":"Pin project","pinnedTitle":"Project is pinned","pinHint":"Pinned projects appear first in project lists and the sidebar for faster access to active work.","pinProject":"Pin project","unpinProject":"Unpin project","archiveTitle":"Archive project","archiveHint":"Archived projects leave active views, while linked chats, goals, and files stay attached.","archiveProject":"Archive project","restoreTitle":"Restore archived project","restoreHint":"Restoring moves the project back to active views so you can continue chats, goals, and workflows.","restoreProject":"Restore project","dangerTitle":"Danger zone","dangerHint":"Removing a project ungroups its chats, goals, workflows, automations, and memories. Local files are not deleted.","agentContextTitle":"Agent context","agentContextHint":"These notes are provided to the agent as project context so it can understand and continue the work more reliably.","brief":"Project background","briefHint":"A project summary for the agent: goals, scope, current state, and important constraints.","instructions":"Agent working guidance","instructionsHint":"Preferences, process rules, and boundaries the agent should follow in this project.","statuses":{"active":"Active","paused":"Paused","archived":"Archived"},"deleteConfirm":"Delete project \\"{{name}}\\"? Sessions and goals will be left unassigned.","deleteConfirmTitle":"Delete project?","deleteConfirmFallback":"Delete this project? Sessions and goals will be left unassigned.","deleteConfirmAction":"Delete project"},"goalDialog":{"title":"New project goal","close":"Close","titleLabel":"Title","descriptionLabel":"Description","priorityLabel":"Priority","priorities":{"low":"Low","normal":"Normal","high":"High"}},"statuses":{"active":"active","paused":"paused","blocked":"blocked","needs_input":"needs input","done":"done","archived":"archived","queued":"queued","running":"running","retry_waiting":"retry waiting","succeeded":"succeeded","failed":"failed","timeout":"timed out","cancelled":"cancelled","skipped":"skipped"}}`)},f={remoteAccess:{pageTitle:`Remote access`,pageSubtitle:`Connect to this gateway from other devices. Pick one method — only one exposure mode should be active at a time.`,docsLink:`Read the remote access guide`,tabsAria:`Remote access methods`,tabs:{guide:`Overview`,tailscale:`Tailscale`,public:`Public internet`,"reverse-proxy":`Reverse proxy`,ssh:`SSH tunnel`,lan:`Local network`},tabIntro:{guide:`Compare options and see what's active on this gateway.`,tailscale:`Best for personal devices on your tailnet. Gateway stays on loopback; Tailscale Serve publishes HTTPS.`,public:`Create a Tunnel Registration Key in the Console and save it here, then start the tunnel for a public URL and pair your mobile app.`,"reverse-proxy":`Front the gateway with your own HTTPS reverse proxy (Caddy / nginx / Cloudflare Tunnel) at a custom domain, then scan to pair your mobile app.`,ssh:`CLI SSH port forwarding when VPN or a public tunnel are unavailable.`,lan:`Reach the gateway on the same Wi‑Fi or LAN via its bind address, then scan to pair your mobile app.`},guide:{pickMethod:`Choose a connection method`,recommended:`Recommended`,configure:`Configure`,statusActive:`Active`,statusOff:`Off`,statusConnecting:`Connecting`,tailscaleCardTitle:`Tailscale Serve`,tailscaleCardDesc:`HTTPS on your tailnet only. No public internet exposure.`,publicCardTitle:`Public tunnel`,publicCardDesc:`Share a public URL for mobile pairing and remote clients.`,reverseProxyCardTitle:`Reverse proxy`,reverseProxyCardDesc:`Use your own HTTPS reverse proxy at a custom domain.`,sshCardTitle:`SSH tunnel`,sshCardDesc:`CLI forwarding when VPN or public tunnel are unavailable.`,sshCardStatus:`CLI`,lanCardTitle:`Same Wi‑Fi / LAN`,lanCardDesc:`Use the gateway bind address on your local network.`,lanCardStatus:`Local`,conflictsTitle:`Configuration conflict`,conflictsHint:`Only one exposure method should be active. Disable the other before switching.`,oneAtATimeHint:`Tailscale Serve and the public tunnel cannot run together. Use Overview to check status before switching.`,needToken:`Sign in to the gateway (valid token) to manage remote access.`,docsLink:`Full guide in the docs`},advanced:{proxyTitle:`Reverse proxy & remote URL`,proxyBody:`When the gateway sits behind nginx, Caddy, or another proxy, configure trusted headers and optional gateway.remote for CLI clients.`,proxyDocs:`Read remote access docs`},lan:{title:`Same network (LAN)`,subtitle:`Reach the gateway from phones or laptops on the same Wi‑Fi without exposing it to the internet.`,body:`Set the gateway bind address to your LAN IP (or 0.0.0.0) and connect using http://<host>:<port>. Keep firewall rules in mind.`,link:`Open Gateway settings`,pairTitle:`Mobile app pairing`,pairSubtitle:`On the same Wi‑Fi, scan to connect your phone. The app exchanges a one-time pairing key for your gateway token.`,pairBlockedNextSteps:`Or use the Public internet tab to pair through a tunnel.`,pairPublicTabLink:`Open Public internet tab`},tailscale:{title:`Tailscale Serve (recommended)`,subtitle:`Expose the gateway on your tailnet over HTTPS while keeping the process bound to loopback.`,statusLabel:`Serve status`,stepInstallBefore:`Install `,stepInstallLink:`Tailscale`,stepInstallAfter:` on this machine and sign in to your tailnet.`,stepEnable:`Enable Serve below to publish HTTPS on your tailnet hostname.`,stepCopy:`Open or copy the HTTPS URL on any device on the same tailnet.`,loading:`Loading Tailscale status…`,statusActive:`Tailscale Serve is active.`,statusOff:`Tailscale Serve is off.`,enableServe:`Enable Serve`,disableServe:`Disable Serve`,copyUrl:`Copy HTTPS URL`,copied:`Copied`,hint:`Requires Tailscale installed and logged in on this machine. API routes still require your gateway token.`,docsLink:`Tailscale Serve docs`,cliMissingIntro:`Tailscale CLI not found on this machine.`,cliMissingDownloadLink:`Download from tailscale.com/download`,cliMissingSuffix:` — install, sign in, then retry.`},ssh:{title:`SSH tunnel (CLI)`,subtitle:`Forward the remote gateway loopback port to your laptop when Tailscale is unavailable.`,hint:`Replace user@your-host with your SSH login. Run on the machine where you want to use the gateway console.`,copy:`Copy command`,copied:`Copied`},reverseProxy:{title:`Reverse proxy (self-hosted HTTPS)`,subtitle:`Front the gateway with your own Caddy / nginx / Cloudflare Tunnel at a custom domain.`,urlLabel:`Public URL`,urlPlaceholder:`https://gateway.example.com`,urlHint:`No trailing path. https required for public hostnames; http is only allowed for RFC1918 / .local.`,probeButton:`Test`,probing:`Testing…`,autoDetectedTitle:`Detected from your current browser address`,autoDetectedHint:`The QR below already uses this URL. Click "Save as default" to persist it so other machines see the same URL.`,saveAsDefault:`Save as default`,saving:`Saving…`,clear:`Clear configured URL`,certWarning:`Mobile clients require a certificate trusted by the system root store (Let's Encrypt / Cloudflare / commercial CA). Self-signed certificates are not supported in v1.`,qrTitle:`Mobile pairing QR`,qrSubtitle:`Scan from the xopc mobile app to pair through your reverse proxy.`,noUrlYet:`Enter your reverse-proxy public URL above to generate the pairing QR.`,mintingSecret:`Minting pairing secret…`,encoding:`Encoding QR…`,refreshQr:`Refresh QR`,copyLink:`Copy deeplink`,copied:`Copied`,probeStatus:{ok:`Reachable`,mobileReady:`mobile pairing ready`,codeUnknown:`Probe failed`,code_TIMEOUT:`Timed out reaching the URL`,code_TLS_INVALID:`TLS / certificate error`,code_DNS_OR_CONN_REFUSED:`DNS or connection refused`,code_NETWORK_ERROR:`Network error`,code_AUTH_BLOCKED:`Reverse proxy returned 401/403 — remove auth in front of /api/tunnel/pair/ping`,code_HTTP_ERROR:`HTTP error from the URL`,code_NOT_XOPC_GATEWAY:`URL did not identify as an xopc gateway`,code_invalid_url:`Invalid URL`,code_invalid_scheme:`Scheme must be http(s)`,code_has_userinfo:`URL must not contain userinfo`,code_has_path:`URL must not contain a path`,code_has_query_or_fragment:`URL must not contain query or fragment`,code_requires_https:`Public hostnames require https`,code_INVALID_JSON:`Invalid JSON body`}}}},p={sessions:{title:`Sessions`,tabsAriaLabel:`Session sections`,tabsSessions:`Sessions`,tabsSessionsHint:`Browse, filter, continue, archive, export, and delete conversation sessions.`,tabsSettings:`Settings`,tabsSettingsHint:`Configure session key scope and metadata cleanup behavior.`,needToken:`Save a gateway token to manage sessions.`,searchPlaceholder:`Search sessions…`,filterAll:`All`,filterActive:`Active`,filterPinned:`Pinned`,filterArchived:`Archived`,filterChannelAll:`All channels`,filterChannelLabel:`Channel`,totalSessions:`Total`,activeSessions:`Active`,pinnedSessions:`Pinned`,archivedSessions:`Archived`,sessionCount:`{{count}} shown`,loadMore:`Load more`,noSessions:`No sessions yet`,noSessionsDescription:`Start a conversation in Chat; sessions will appear here.`,startNewChat:`Start New Chat`,continueChat:`Continue in chat`,archive:`Archive`,unarchive:`Unarchive`,pin:`Pin`,unpin:`Unpin`,export:`Export JSON`,delete:`Delete`,deleteSessionTitle:`Delete session?`,deleteSessionMessage:`Delete “{{name}}”? This cannot be undone.`,cancel:`Cancel`,loading:`Loading…`,loadError:`Failed to load sessions`,gridView:`Grid`,listView:`List`,layoutToggleGroup:`Session layout`,detailLoading:`Loading session…`,detailMessages:`Messages`,detailExport:`Export`,close:`Close`,config:{title:`Session storage`,hint:`How direct-message sessions are keyed and when old session metadata is pruned.`,save:`Save`,discard:`Discard`,saving:`Saving…`,saveError:`Failed to save session settings`,dmScope:`DM session scope`,dmScopeHint:`Controls how session keys are derived for direct messages across channels and accounts.`,dmScopeMain:`Main (single DM session)`,dmScopePerPeer:`Per peer`,dmScopePerChannelPeer:`Per channel + peer`,dmScopePerAccountChannelPeer:`Per account + channel + peer`,pruneAfterDays:`Prune after (days)`,maxEntries:`Max session entries`,unsetPlaceholder:`Leave empty for default`}}},m={settingsSections:{overview:`System status`,appearance:`Preferences`,"user-profile":`User profile`,agent:`Agent`,"agent-browser":`Browser`,"capability-presets":`Capability plans`,connectors:`Connectors`,providers:`Providers & keys`,credentials:`Models & capabilities`,models:`Model catalog`,"image-models":`Images`,channels:`Channels`,voice:`Voice`,gateway:`Gateway`,heartbeat:`Heartbeat`,tunnel:`Remote access`,"remote-access":`Remote access`,shares:`File sharing`,search:`Web search`,dreams:`Background reflection`,goals:`Goal mode`,agents:`Agents`,system:`System permissions`,"desktop-pet":`Pet`,"desktop-app":`Application data`,cron:`Scheduled tasks`,skills:`Skills`,"keyboard-shortcuts":`Keyboard shortcuts`},settingsPage:{comingSoon:`Settings · {{title}} (coming soon).`},userProfileSettings:{title:`About you`,subtitle:`Help your assistant understand how to work with you. You can change or remove this context anytime.`,sectionTitle:`About you`,sectionSubtitle:`Keep stable preferences, boundaries, and communication context here.`,loading:`Loading…`,loadError:`Could not load user profile.`,save:`Save`,saving:`Saving…`,saved:`Saved`,saveError:`Save failed.`,callName:`Name or nickname`,callNamePlaceholder:`What should your assistant call you?`,pronouns:`Pronouns`,pronounsPlaceholder:`Select or enter pronouns`,timezone:`Timezone`,timezoneCustom:`Custom timezone`,timezoneDetect:`Detect`,notes:`Notes`,notesPlaceholder:`Communication style, stable preferences, boundaries, ongoing priorities, or anything your assistant should understand.`,custom:`Custom…`,note:`This context is shared across your conversations. Durable memories remain separately reviewable and removable.`},capabilityPresetsSettings:{title:`Capability plans`,subtitle:`Build reusable model, tool, skill, memory, and safety plans, then apply them to one or more agents.`,needToken:`Save the gateway access token before managing capability plans.`,loading:`Loading…`,saveError:`Save failed`,newPreset:`New capability plan`,closeDialog:`Close`,tabs:{overview:`Overview`,models:`Models`,tools:`Tools`,skills:`Skills`,advanced:`Advanced`,impact:`Impact`},starters:{blank:{title:`Blank plan`,description:`Start from basics and only configure choices you truly want to reuse.`},"safe-coder":{title:`Safe coding`,description:`For coding agents: model roles, careful tool permissions, and engineering skills.`},"read-only":{title:`Read-only research`,description:`For reading and summarizing; write, edit, and shell tools start restricted.`},"low-cost":{title:`Low-cost assistant`,description:`For lightweight work where fast and cheaper model roles should be preferred.`}},listTitle:`Reusable plans`,listHint:`Usage includes agents that receive a plan directly or through another plan.`,empty:`No capability plans yet. Create one to reuse runtime choices across agents.`,summaryModels:`{{count}} model roles`,summaryTools:`{{count}} tool rules`,summarySkills:`Skills: {{mode}}`,summaryEmpty:`No explicit overrides yet`,globalDefaultsTitle:`Global baseline`,globalDefaultsHint:`Applied first to every agent. Put only the defaults that should be available everywhere here.`,globalDefaultsBadge:`Global baseline`,globalDefaultsInherited:`Inherited by all agents`,overviewTitle:`What this plan does`,overviewHint:`Define the name, purpose, and impact before editing concrete settings.`,editorTitle:`Basics`,editorHint:`Name the plan by its purpose. You can review the resulting changes and affected agents before saving.`,idLabel:`Plan ID`,nameLabel:`Name`,namePlaceholder:`Safe coding`,descriptionLabel:`Description`,descriptionPlaceholder:`Explain which agents should use this plan and what access it enables or restricts.`,versionLabel:`Version`,versionAutomatic:`Revision {{version}} · increases automatically when saved`,save:`Save`,delete:`Delete`,usageTitle:`Usage`,usageHint:`Check which agents will be affected before saving changes.`,noUsage:`No agents use this capability plan yet.`,usageDirect:`Applied directly`,usageIndirect:`Inherited through another plan`,changePreviewTitle:`Changes in this save`,changePreviewSections:`Will update: {{sections}}`,changePreviewEmpty:`No changes to save.`,modelsTitle:`Model strategy`,modelsHint:`Declare reusable model roles for this plan. Leave empty when it should not set model roles.`,modelRoleIdLabel:`Role ID`,modelRoleDescriptionLabel:`Description`,modelPrimaryModelLabel:`Primary model`,modelFallbackModelsLabel:`Fallback order`,modelAddFallback:`Add fallback`,modelRemoveFallback:`Remove fallback`,modelFallbackPlaceholder:`Select fallback model`,modelFallbackEmptyHint:`No fallback models. Add one to try it after the primary model fails.`,addModelRole:`Add model role`,removeModelRole:`Remove model role`,modelRecommendedTitle:`Recommended purposes`,modelCustomTitle:`Custom roles`,modelDefaultBadge:`Default`,modelVisionBadge:`Vision`,modelVisionAutoHint:`When no image understanding model is set manually, roles with image input support can be selected automatically at runtime.`,addModelPurpose:`Add {name}`,noCustomModelRoles:`No custom roles.`,modelRoleDescriptionPlaceholder:`Optional hint`,modelRoleNames:{deep:`Deep model`,fast:`Fast model`,cheap:`Low-cost model`,code:`Code model`,review:`Review model`},modelRoleDescriptions:{deep:`Complex reasoning, planning, and long-context work.`,fast:`Short replies, lightweight decisions, and low-latency tasks.`,cheap:`Batch work, summaries, and cost-sensitive tasks.`,code:`Code understanding, edits, tests, and architecture analysis.`,review:`Reviews, risk checks, and second-pass validation.`},invalidModelRoleId:`Each model role needs a valid id (lowercase letters, digits, hyphens, underscores).`,duplicateModelRoleId:`Duplicate model role id.`,invalidModelRef:`Each model role needs a provider/model ref.`,modelAdvancedTitle:`Image models and fallback policy`,modelAdvancedHint:`Optional. Set dedicated image models and shared fallback or cost limits only when this plan must override them.`,imageUnderstandingTitle:`Image understanding`,imageGenerationTitle:`Image generation`,modelToolPrimaryLabel:`Primary model`,modelToolFallbacksLabel:`Fallback models, one per line`,modelToolFallbacksPlaceholder:`provider/model
|
|
3
|
-
provider/backup-model`,modelAutoProviderFallbackLabel:`Automatic provider fallback`,modelAllowFallbacksLabel:`Allow model fallbacks`,modelMaxCostTierLabel:`Maximum cost tier`,policyInherit:`No override`,policyEnabled:`Enabled`,policyDisabled:`Disabled`,costTierLow:`Low`,costTierMedium:`Medium`,costTierHigh:`High`,advancedPositiveIntegerError:`Timeouts and limits must be positive integers.`,saveModels:`Save model strategy`,toolsTitle:`Tool permissions`,toolsHint:`Only configure tool access this plan should override; untouched tools remain controlled by agents or other plans.`,toolModes:{inherit:`No override`,allow:`Allow`,confirm:`Ask first`,deny:`Deny`},toolsQuickActionsLabel:`Quick actions`,toolsQuickClearOverrides:`Clear overrides`,toolsQuickReadOnlyWorkspace:`Read-only workspace`,toolsQuickHighRiskOff:`High-risk off`,toolsQuickNoOutbound:`No outbound`,toolsQuickResearchMode:`Research mode`,toolsQuickCodingMode:`Coding mode`,toolsEmptyBuiltin:`The gateway did not return any built-in tools yet.`,toolsOverrideSummaryTitle:`Current explicit overrides`,toolsNoOverrides:`No overrides yet. This plan will not change tool access.`,toolScopeLabel:`Access scope`,toolScopeInherit:`No scope override`,toolScopeReadonly:`Read only`,toolScopeWorkspace:`Workspace`,toolScopeUnrestricted:`Unrestricted`,toolMaxCallsLabel:`Max calls per turn`,toolTimeoutLabel:`Timeout (ms)`,saveTools:`Save tool permissions`,lockedByPreset:`locked`,skillsTitle:`Available skills`,skillsHint:`Control which skills are visible to agents that use this plan.`,skillModeLabels:{inherit:`No override`,all:`All skills`,allowlist:`Allowlist only`,denylist:`Denylist`,off:`Skills off`},skillsModeLabel:`Skill mode`,skillsModeInherit:`No override`,skillsModeAll:`All skills`,skillsModeAllowlist:`Allowlist only`,skillsModeDenylist:`Denylist`,skillsModeOff:`Skills off`,skillsListLabel:`Skill list`,skillsQuickActionsLabel:`Quick actions`,skillsQuickSelectAll:`Select all`,skillsQuickClear:`Clear`,skillsCatalogLoading:`Loading skill catalog…`,skillsEmptyCatalog:`No skills in the catalog.`,skillsNoDescription:`No description in SKILL.md metadata.`,skillsOverrideSummaryTitle:`Current skill override`,skillsInheritSummary:`Does not override available skills. Agents using this plan keep their own or other plans' skill settings.`,skillsAllSummary:`Explicitly allows all skills.`,skillsOffSummary:`Explicitly turns skills off.`,skillsAllowSummary:`Allows only {{count}} selected skill(s).`,skillsDenySummary:`Excludes {{count}} selected skill(s).`,saveSkills:`Save skill settings`,advancedTitle:`Advanced policies`,advancedHint:`Compose plans and configure policies that are less commonly changed. Empty fields inherit from earlier layers.`,advancedInheritanceTitle:`Build on other capability plans`,advancedInheritanceHint:`Selected plans are applied in order before this plan. The global baseline is already applied automatically.`,advancedInheritanceEmpty:`There are no other reusable plans to build on.`,advancedJsonTitle:`Section policies`,advancedJsonHint:`These expert fields use JSON so every runtime policy remains editable. Leave a field empty to inherit it.`,advancedFieldLabels:{mcp:`MCP server and tool policies`,memory:`Memory policy`,workflows:`Workflow policy`,boundaries:`Safety boundaries`,runtime:`Runtime limits`,locks:`Locked policy paths`},advancedFieldHints:{mcp:`Object with optional servers and tools maps; each rule supports mode, scope, and limits.`,memory:`Memory mode, sources, writes, retention, privacy, provider routing, dreaming, and user understanding.`,workflows:`Default, allowed, and suggested workflows.`,boundaries:`Arrays for requiresConfirmation, forbidden, and escalation.`,runtime:`Optional maxTurns, timeoutMs, and maxToolFailuresPerTurn.`,locks:`JSON array of policy paths that later layers cannot change.`},advancedJsonError:`{{field}} must contain valid JSON.`,unsavedTitle:`Capability plan has unsaved changes`,unsavedImpact:`Saving will affect {{count}} agent(s).`,unsavedNoImpact:`Saving will not affect any agents yet.`,noUnsavedTitle:`No unsaved changes`,noUnsavedHint:`The current capability plan is saved.`,discard:`Discard`,discardConfirm:`Discard the unsaved changes to this capability plan?`,deleteConfirm:`Delete “{{name}}”? This cannot be undone.`,savePreset:`Save capability plan`},modelsHub:{subtitle:`Configure provider keys, the model catalog, capability models, and setup health.`,docsLink:`Read the docs`,tabsAria:`Models & capabilities sections`,saveBar:{title:`Unsaved changes summary`,cleanSummary:`All sections saved.`,dirtySummary:`{{count}} section(s) have unsaved changes.`,savedSummary:`All changes saved.`,failuresSummary:`{{count}} section(s) failed to save.`,saveAll:`Save all`,discardAll:`Discard all`},tabs:{services:`Model services`,imageModels:`Images`,voice:`Voice`,search:`Web search`},servicesHint:`Manage connected model providers, or add a new one.`,imageModelsHint:`Configure image understanding, image generation models, and related provider keys.`,voiceHint:`Configure speech-to-text, text-to-speech providers, and trigger behavior.`,searchHint:`Configure search providers and guardrails used by the web_search tool.`,connectedProviders:{title:`Connected services`,titleCount:`Connected services ({{count}})`,empty:`No model services connected yet`,emptyHint:`Connect a provider and enter your API key to get started.`,addProvider:`Add provider`,manage:`Manage`,models:`Models`,modelsCount:`{{count}} models`,custom:`Custom`,loading:`Loading…`,noModels:`No models`},addProviderDialog:{title:`Add a provider`,searchPlaceholder:`Search providers…`,builtinSection:`Built-in providers`,customSection:`Custom services`,customDescription:`Connect an OpenAI-compatible private deployment or third-party model service`,addCustom:`Add custom model service`,configured:`Configured`,notConfigured:`Not configured`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter API key…`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.example.com/v1`,providerIdLabel:`Provider ID`,providerIdPlaceholder:`e.g. my-provider`,save:`Save`,saving:`Saving…`,saved:`Saved`,cancel:`Cancel`,close:`Close`,back:`Back`,getApiKey:`Get API key`,getApiKeyIntl:`Get API key (intl)`,getApiKeyCn:`Get API key (CN)`,saveError:`Save failed. Please try again.`,addModel:`Add model`,modelIdLabel:`Model ID`,modelIdPlaceholder:`e.g. gpt-4o`,discoverModels:`Discover models`,discoveringModels:`Discovering…`,discoverModelsHint:`Could not discover models from this endpoint. Add model IDs manually.`,noResults:`No matching providers`,step1Title:`Choose a provider`,step2BuiltinTitle:`Configure provider`,step2CustomTitle:`Add custom model service`,presetLabel:`Preset`,presetCustom:`Custom`,presetOllama:`Ollama`,presetLmStudio:`LM Studio`,presetOpenRouter:`OpenRouter`,presetZhipuCn:`Zhipu GLM (China · Coding API)`,presetZaiGeneral:`Zhipu GLM (International · general API)`,apiTypeLabel:`API type`,providerIdRequired:`Provider ID is required.`,baseUrlRequired:`Base URL is required.`,categories:{common:`Popular`,domestic:`China models`,specialty:`Other providers`,enterprise:`Enterprise`,oauth:`OAuth`,extension:`Extension`}},manageProviderDialog:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter new API key…`,apiUrlLabel:`API URL`,apiUrlExtensionHint:`Requests are routed through the extension plugin (no fixed public API URL).`,baseUrlLabel:`Base URL`,modelsLabel:`Available models`,noModels:`No models for this provider`,modelsCount:`{{count}} models`,save:`Save`,saving:`Saving…`,saved:`Saved`,cancel:`Cancel`,close:`Close`,remove:`Remove`,removeConfirmTitle:`Remove provider`,removeConfirmDescription:`Remove the configuration for {{provider}}? You'll need to re-enter the key to use it again.`,removeConfirmAction:`Remove`,saveError:`Save failed. Please try again.`,getApiKey:`Get API key`,getApiKeyIntl:`Get API key (intl)`,getApiKeyCn:`Get API key (CN)`,showKey:`Show key`,hideKey:`Hide key`,copy:`Copy`,copied:`Copied`,maskedHelp:`Saved keys are hidden. Use the eye to load the key from the gateway store or models.json (not from environment variables).`,notInConfigFile:`No key stored in the gateway or models.json — this provider may be using an environment variable or OAuth.`,extensionKeyHint:`This extension provider manages its own credentials. No gateway API key is required — configure optional keys in extension settings or environment variables if needed.`,openExtensionSettings:`Open extension settings`,extensionSettingsLinkTitle:`Configure optional credentials in the extension settings page`,loadFailed:`Could not load the API key.`,custom:`Custom`}},setupStatus:{title:`System status`,subtitle:`See what's configured and finish setup to start chatting.`,refresh:`Refresh`,loading:`Loading status…`,loadError:`Could not load system status. Check your gateway connection and try again.`,summaryTitle:`At a glance`,summarySubtitle:`Core services needed for chat.`,summaryGateway:`Gateway`,summaryProviders:`Providers`,summaryModel:`Default model`,statusOnline:`Online`,statusOffline:`Offline`,requiredCompleteMessage:`Required setup is complete — you're ready to chat.`,requiredIncompleteMessage:`Complete the required steps below to start chatting.`,health:{readyTitle:`Ready to chat`,readyBody:`Core setup is complete and no blocking doctor checks are active.`,setupTitle:`Finish core setup`,setupBody:`Complete the readiness steps before starting a reliable chat session.`,attentionTitle:`Needs attention`,attentionBody:`Doctor found warnings that may affect reliability or future operation.`,blockedTitle:`Needs repair`,blockedBody:`Doctor found at least one blocking issue that should be fixed first.`,issueCount:`{{count}} issue(s) need attention.`,viewIssues:`View Issues`,continueSetup:`Continue Setup`,startChat:`Start Chat`,runDoctor:`Run Doctor`,runDoctorRunning:`Running…`,doctorIdleMessage:`Run Doctor checks configuration, gateway, channels, logs, and browser diagnostics again.`,doctorRunningMessage:`Refreshing diagnostic results. This may take a moment.`,doctorCompleteMessage:`Doctor finished and the page has been updated.`,doctorFailedMessage:`Doctor failed. Check the gateway connection and try again.`},issuesTitle:`Needs attention`,issuesSubtitle:`Doctor checks are sorted by severity. Open an item to fix it in context.`,noIssues:`No doctor issues found.`,fixIssue:`Open`,nextStepsTitle:`Next step`,nextStepsIssuesSubtitle:`Handle the items that affect usability first. Each row opens the right settings page.`,nextStepsReadySubtitle:`The core path is reduced to the minimum steps needed for reliable chat.`,readinessTitle:`Chat readiness`,readinessSubtitle:`The minimum path from gateway connection to a usable default chat model.`,readinessLabels:{gateway:`Gateway`,provider:`Model provider`,defaultModel:`Default model`,ready:`Ready to chat`},diagnosticsTitle:`Diagnostics`,diagnosticsSubtitle:`Aggregated signals from security, channels, browser tools, logs, gateway, and automation.`,diagnosticsAllClear:`No diagnostic items need attention right now.`,diagnosticsEmpty:`No diagnostic signals are available yet.`,checklistTitle:`Setup checklist`,checklistSubtitle:`Tap a step to open its settings. Optional steps enhance channels and skills.`,optionalBadge:`Optional`,labels:{gatewayOnline:`Connected to gateway`,gatewayOffline:`Not connected — check token and gateway`,providersConfigured:`{{count}} provider(s) configured`,providersMetaReady:`{{configured}} / {{total}} providers ready`,providersMissing:`No provider configured`,modelConfigured:`{{model}}`,modelMissing:`No default model selected`,channelConfigured:`At least one channel connected`,channelMissing:`No channel configured yet`,skillsConfigured:`{{count}} skill(s) available`,skillsMissing:`No skills installed yet`},items:{gateway:{title:`Connect gateway`,description:`Verify the Web console can reach your xopc gateway.`},provider:{title:`Configure LLM provider`,description:`Add at least one AI provider API key or OAuth token.`},defaultModel:{title:`Choose default model`,description:`Set the model used for new conversations.`},channel:{title:`Connect a channel`,description:`Link Telegram, Weixin, or Feishu to chat from messaging apps.`},skill:{title:`Install a skill`,description:`Browse the marketplace or catalog to extend agent capabilities.`}},scenarios:{title:`Quick setup scenarios`,subtitle:`Pick a path that matches how you plan to use xopc — each step opens the right settings.`,dismiss:`Hide`,steps:{stepProviders:`Configure LLM provider keys`,stepDefaultModel:`Choose default chat model`,stepChannel:`Connect a messaging channel`,stepAutomation:`Create an automation`,stepSkills:`Install skills from the catalog`},presets:{lightChat:{title:`Light chat`,description:`Talk to your assistant in the web console with one provider and a default model.`},multiChannel:{title:`Multi-channel assistant`,description:`Connect Telegram or another channel so the same assistant can reply from the web console and messaging apps.`},automation:{title:`Automation workflow`,description:`Combine skills and cron jobs for recurring background work.`}}}},credentialsHub:{title:`Credentials hub`,subtitle:`One place to see API keys and OAuth status across chat, search, images, and voice.`,refresh:`Refresh`,loading:`Loading credentials…`,loadError:`Could not load credential status. Check your gateway connection and try again.`,domainsTitle:`Credential domains`,domainsSubtitle:`Manage keys on each detail page — values stay in your gateway config.`,footerHint:`LLM keys live under Providers. Image, voice, and web-search keys may also appear in environment variables — the gateway shows only what is stored in config.`,status:{ready:`Ready`,partial:`Partial`,missing:`Missing`,notNeeded:`Optional`},labels:{llmMetaReady:`{{configured}} / {{total}} LLM providers ready`,llmConfigured:`{{count}} LLM provider(s) configured`,llmMissing:`No LLM provider configured`,webSearchDisabled:`Web search disabled`,webSearchReady:`{{configured}} / {{total}} search provider keys set`,webSearchNoProviders:`No search providers configured`,imageReady:`{{configured}} / {{total}} image providers configured`,imageNoProviders:`No image providers registered`,voiceDisabled:`Speech input/output disabled`,voiceReadyNoKeys:`Speech enabled — no API keys required`,voiceKeysReady:`{{configured}} / {{total}} speech API keys set`,voiceMissing:`Speech not configured`},domains:{llm:{title:`LLM providers`,description:`API keys and OAuth for chat models.`},webSearch:{title:`Web search`,description:`Brave, Tavily, and other search API keys.`},image:{title:`Image generation`,description:`Keys for vision and image-generation providers.`},voice:{title:`Voice (STT / TTS)`,description:`Speech recognition and text-to-speech credentials.`}}},dreamingSettings:{title:`Dreams`,subtitle:`Inspect and maintain the background memory promotion sweep.`,tabsAriaLabel:`Dreams settings categories`,tabConfig:`Settings`,tabRuntime:`Runtime`,tabInsights:`Preview & logs`,tabMaintenance:`Maintenance`,configTabHint:`Manage the memory consolidation switch, run schedule, and consolidation phases.`,runtimeTabHint:`Review effective schedules, promotion lock, short-term recall store, and latest run output.`,insightsTabHint:`Preview promotion candidates and inspect phase audit logs.`,maintenanceTabHint:`Reset the short-term store or clear a stuck promotion lock; MEMORY.md is not edited.`,refresh:`Refresh`,runNow:`Run now`,runPhaseLabel:`Phase`,runNowHint:`Run the selected memory dreaming phase now.`,runNowSaveFirstHint:`Save changes before running; Run now uses the applied configuration.`,runQueued:`Run completed.`,actionOk:`Done.`,configSaved:`Configuration saved.`,configLoading:`Loading configuration…`,saveConfig:`Save & apply`,enableAllAgentsDreaming:`Enable all agents`,unsavedConfigTitle:`Unsaved changes`,unsavedConfigHint:`This page is showing draft configuration. Save to update scheduled runs and Run now behavior.`,phasePendingSave:`Pending save`,phaseWillEnable:`Enables after save`,phaseWillDisable:`Disables after save`,masterTitle:`Background Memory Consolidation`,masterHint:`When enabled, short-term memory is consolidated on the phase schedules below and synced to the running background tasks.`,masterOn:`Enabled`,masterOff:`Disabled`,scheduleTitle:`Run Schedule`,phasesTitle:`Consolidation Phases`,configEnabled:`Enable dreaming`,configFrequency:`Global fallback schedule`,configTimezone:`Timezone (IANA)`,configPhaseLight:`Light Sleep`,configPhaseLightHint:`Lightweight deduplication sweep (every 6h by default).`,configPhaseDeep:`Deep Sleep`,configPhaseDeepHint:`Full promotion sweep with scoring and time decay (daily at 3 AM).`,configPhaseRem:`REM Sleep`,configPhaseRemHint:`Cross-entry pattern clustering and dream diary (weekly on Sunday 5 AM).`,configPhaseEnabled:`Enabled`,configPhaseCron:`Run time`,configLightLookbackDays:`Lookback (days)`,configLightLimit:`Limit`,configLightDedupe:`Dedupe similarity`,configDeepMinScore:`Min score`,configDeepMinRecallCount:`Min recall count`,configDeepMinUniqueQueries:`Min unique queries`,configDeepLimit:`Limit`,configDeepHalfLife:`Recency half-life (days)`,configDeepMaxAge:`Max age (days)`,configRemLookbackDays:`Lookback (days)`,configRemLimit:`Limit`,configRemMinStrength:`Min pattern strength`,previewTitle:`Preview (dry-run)`,previewHint:`Shows the top candidates after rehydration, contamination filtering, and marker/hash dedupe checks. No files are written.`,previewLoad:`Load preview`,previewNotLoaded:`Preview not loaded yet.`,previewEmpty:`No eligible candidates found.`,previewEligible:`eligible`,runtimeTitle:`Runtime`,runtimeHint:`Read-only: effective settings from the gateway, the recall store, and the latest sweep output.`,subsectionSchedule:`Schedule & lock`,subsectionStore:`Short-term store`,subsectionPhases:`Phases (live)`,subsectionDeep:`Deep gate (live)`,subsectionLastRun:`Last sweep (deep)`,subsectionLightLastRun:`Last sweep (light)`,subsectionRemLastRun:`Last sweep (REM)`,lastRunBlockHint:`Data file: the selected agent's memories/.dreams/last-run.json`,phaseLastRunEmpty:`No runs recorded yet.`,phaseLastRunOk:`OK`,phaseLastRunFailed:`Failed`,lockValueLocked:`Locked`,lockValueUnlocked:`Unlocked`,statusTitle:`Status`,statusHint:`This reads the selected agent's memories/.dreams store.`,enabled:`Enabled`,on:`On`,off:`Off`,schedule:`Schedule`,timezone:`Timezone`,lock:`Promotion lock`,storeEntries:`Store entries`,storePromoted:`Promoted entries`,storeUpdatedAt:`Store updated`,storeLastPromotedAt:`Last promoted`,deepGate:`Deep gate:`,deepGateValue:`minScore={{minScore}}, minRecallCount={{minRecallCount}}, limit={{limit}}`,lastRunTitle:`Last run`,lastRunHint:`memories/.dreams/last-run.json: timing, deep gate config snapshot, ranked/applied counts, and skip reasons. Raw JSON is below for debugging.`,lastRunEmpty:`No runs recorded yet.`,lastRunDuration:`Duration`,lastRunStatus:`Result`,lastRunSuccess:`OK`,lastRunFailure:`Failed`,lastRunReason:`Reason`,lastRunError:`Error`,lastRunRanked:`Ranked candidates`,lastRunApplied:`Applied to MEMORY.md`,lastRunSkipped:`Skipped (counts)`,lastRunSkipKey:`Key already in MEMORY`,lastRunSkipRehydrate:`Rehydrate failed`,lastRunSkipContaminated:`Contaminated`,lastRunSkipHash:`Hash duplicate`,lastRunParseError:`Could not parse last-run file`,lastRunRaw:`Raw JSON`,eventsTitle:`Event log`,eventsHint:`Audit trail of dreaming phase runs (memories/.dreams/events.jsonl).`,eventsLoad:`Load events`,eventsNotLoaded:`Event log not loaded yet.`,eventsEmpty:`No events recorded yet.`,maintenanceTitle:`Maintenance`,maintenanceHint:`These actions only affect the store/lock files. They do not edit MEMORY.md.`,resetStore:`Reset store`,clearLock:`Clear lock`,confirmResetStore:`Reset the dreaming store? This clears short-term recall signals.`,confirmClearLock:`Clear the promotion lock file? Only do this if a sweep got stuck.`},desktopPet:{loading:`Loading…`,idleMessage:`I am here when you need me.`,openApp:`Open xopc`,settings:`Settings`,menu:`Collapse or expand tip`,hide:`Hide`,mute:`Mute`,unmute:`Unmute`,toolUsing:`I am {{action}}.`,toolActionSearch:`searching the web`,toolActionReadFile:`reading files`,toolActionEditFile:`editing files`,toolActionWriteFile:`writing files`,toolActionRunCommand:`running a command`,toolActionListDirectory:`checking a directory`,toolActionOpenUrl:`opening a link`,toolActionFetchUrl:`reading a web page`,toolActionUpdatePlan:`updating the plan`,toolActionBrowse:`using the browser`,toolActionImage:`searching images`,toolActionFinance:`checking market data`,toolActionWeather:`checking the weather`,toolActionSports:`checking sports`,toolActionTime:`checking the time`,toolActionMemory:`reading memory`,toolActionAutomation:`handling automations`,toolActionConnector:`using a connector`,toolActionUnknown:`using a tool`,toolActionUnknownNamed:`using {{name}}`,fallbackSessionLabel:`New chat`,tipRunStart:`I am lining up the context and getting started.`,tipTool:`I am {{action}}{{detail}}.`,tipProgress:`I am still moving this forward{{progress}}.`,tipValidate:`I am checking the last step{{progress}}.`,tipWaiting:`This needs your call.`,tipAssistantDelta:`I am shaping the answer.`,tipCommandDelta:`The command has new output.`,tipAssistantDone:`I have the main points and am wrapping up.`,tipComplete:`Done. The result is back in this chat.`,tipCompleteSummary:`Done: {{summary}}`,tipError:`This step needs attention.`,tipTargetSuffix:`: {{detail}}`,tipProgressSuffix:` · {{completed}}/{{total}}`,tipLongRunning:`This task is running long, and I am still watching it.`,tipStaleSignal:`This step is taking a while; I am waiting for a new signal.`,petCtaNeedsInput:`Review`,petCtaReviewIssue:`Fix`,idleTipTitle:`I am on standby`,idleTipBody:`When you start again, I will watch the background progress.`,taskInProgress:`Task in progress`,taskRecentActivity:`Recent activity`,viewSession:`View session`,stopTask:`Stop`,taskStopped:`Task stopped.`},desktopPetSettings:{title:`Pet`,subtitle:`A draggable animated pet that surfaces useful updates and jumps back into xopc.`,loading:`Loading pet…`,refresh:`Refresh`,openFolder:`Open folder`,enable:`Enable pet`,enableDesc:`Show a small draggable pet above your desktop.`,showOnStartup:`Show on startup`,showOnStartupDesc:`Open the pet automatically when xopc starts.`,createTitle:`Create a custom pet in chat`,createDesc:`Open a new chat so the agent can create the pet from your description, then keep refining it in that conversation.`,createNamePlaceholder:`Name`,createPromptPlaceholder:`e.g. a sleepy blue robot that loves terminals`,createPromptRequired:`Describe the pet before creating it.`,create:`Create`,createInChat:`Create in chat`,creating:`Creating…`,createSuccess:`{name} was created and selected.`,createChatDraft:`/skill:hatch-pet I want to create a new xopc pet. Please ask me what kind of pet I want first, then call create_desktop_pet once the concept is clear.`,optimizeInChat:`Refine`,optimizeChatDraft:`/skill:hatch-pet I want to refine the existing pet {name}. The petId is {id}. Current description: {description}. Original concept: {sourcePrompt}. Please ask what I want to adjust first; once I describe the change, call create_desktop_pet with mode=update and petId={id} to overwrite the same pet package.`,fixInChat:`Fix`,fixChatDraft:`/skill:hatch-pet I want to fix an xopc pet package that cannot load. Directory: {dir}. Load failure: {reason}. Diagnostics: {details}. Please inspect the package first, explain the smallest repair plan, then repair or regenerate the same pet package after I confirm.`,noIssueDetails:`No additional diagnostics`,petList:`Pets`,petListDesc:`Choose a built-in pet or add your own manifest in the custom folder.`,selected:`Selected`,select:`Select`,customBadge:`Custom`,customPets:`Custom pets`,builtinPets:{ember:{name:`Ember`,description:`A warm little push for everyday agent work.`},relay:{name:`Relay`,description:`Carries messages across apps and channels.`},loom:{name:`Loom`,description:`Weaves context, notes, and memory together.`},scout:{name:`Scout`,description:`Finds the useful signal inside the noise.`},forge:{name:`Forge`,description:`Helps you build, repair, and call tools.`},sprout:{name:`Sprout`,description:`Gives new workflows and ideas room to grow.`},atlas:{name:`Atlas`,description:`Brings structure to large workspaces.`},pulse:{name:`Pulse`,description:`Keeps a feel for gateway, automation, and runtime status.`},patch:{name:`Patch`,description:`Best for careful edits and diff review.`}},invalidPets:`Some custom pets could not be loaded`,size:`Pet size`,sizeDesc:`Adjust the floating window and sprite size.`,alwaysOnTop:`Always on top`,alwaysOnTopDesc:`Keep the pet above other windows.`,bubbles:`Speech bubbles`,bubblesDesc:`Show useful agent updates near the pet.`,clickThrough:`Click-through when idle`,clickThroughDesc:`Let clicks pass through the transparent window when the menu is closed.`,mute:`Mute sounds`,muteDesc:`Keep visual feedback but silence pet sounds.`,feedbackLevel:`Feedback detail`,feedbackLevelDesc:`Choose how much execution progress the pet shows.`,feedbackQuiet:`Quiet`,feedbackNormal:`Compact`,feedbackChatty:`Progress`,resetPosition:`Reset position`},systemSettings:{title:`System permissions`,behaviorGroup:`App behavior`,desktopOnlyTitle:`Desktop app only`,desktopOnlyBody:`System integration is available in the xopc Electron app. In the browser, use your OS settings instead.`,toggles:{openAtLogin:`Open at login`,openAtLoginDesc:`Start xopc when you sign in to this user account.`,keepAwake:`Keep system awake`,keepAwakeDesc:`While enabled, the app requests that the system stay awake (agent work may not be interrupted by idle sleep).`,notifyDesktop:`Desktop notifications`,notifyDesktopDesc:`Show native notifications when the app is in the background (updates, toasts, and agent errors).`,notifySound:`Sound notifications`,notifySoundDesc:`Play a short sound with each desktop notification.`},permissionsTitle:`System permissions`,permissionsHint:`Status is best-effort. After changing system settings, refresh or revisit this page.`,permissionsHintDarwin:`macOS privacy (TCC) and media status are best-effort. Use Refresh after you change System Settings.`,permissionsHintDevDarwin:`Development builds (electron:dev) appear as Electron in System Settings, not xopc. Test permissions with a packaged .app for accurate naming.`,permissionsHintWin:`On Windows, microphone and (where reported) screen access follow system-wide toggles. Each link opens a relevant page in the Settings app.`,permissionsHintLinux:`Linux does not report these states here. We try to open your desktop’s Settings; otherwise a documentation page opens. Grant access in your distro, Flatpak, or portal as needed.`,status:{granted:`Allowed`,denied:`Not allowed`,unknown:`Unknown`},openSettings:`Open settings`,refresh:`Refresh status`,refreshing:`Refreshing…`,refreshDone:`Permission status updated.`,openSettingsDone:`Opened system settings.`,openSettingsFailed:`Could not open system settings. Find the matching page manually.`,requestAccess:`Request access`,permFeedback:{granted:`Microphone access is granted.`,alreadyGranted:`Microphone was already granted.`,openedSettings:`Opened Microphone in System Settings — enable xopc, then tap Refresh status.`,denied:`Microphone access is denied. Enable xopc in System Settings.`,rendererDenied:`The app could not access the microphone. Check OS privacy settings.`,prompted:`If a system prompt appears, allow microphone access.`},screenFeedback:{granted:`Screen recording access is granted.`,alreadyGranted:`Screen recording was already granted.`,openedSettings:`Opened Screen Recording in System Settings — enable xopc, then tap Refresh status.`,denied:`Screen recording is denied. Enable xopc in System Settings.`,prompted:`If a system prompt appears, allow screen recording for xopc.`},accessibilityFeedback:{granted:`Accessibility access is granted.`,alreadyGranted:`Accessibility was already granted.`,openedSettings:`Opened Accessibility in System Settings — enable xopc, then tap Refresh status.`,denied:`Accessibility is not granted. Enable xopc in System Settings.`},notificationsFeedback:{granted:`Notification permission is granted.`,alreadyGranted:`Notifications were already allowed.`,openedSettings:`Opened Notifications in System Settings — enable xopc, then tap Refresh status.`,denied:`Notification permission was denied. Enable xopc in System Settings.`,prompted:`If a system prompt appears, allow notifications for xopc.`,default:`Notification permission was not granted. Try again or enable it in System Settings.`,unsupported:`System notifications are not supported in this environment.`},desktopNotify:{testTitle:`Desktop notifications enabled`,testBody:`You will see alerts here when xopc is in the background.`,testShown:`Test notification sent. Allow notifications in System Settings if you did not see it.`,denied:`Notification permission was denied. Enable notifications for xopc, then try again.`,agentErrorTitle:`Agent run failed`,agentErrorBody:`Open xopc to see details.`},perm:{fullDisk:{title:`Files & storage`,desc:`Read and write workspace and user data when the OS or sandbox allows (wording and paths vary by system).`},screen:{title:`Screen Recording`,desc:`Capture the screen for vision features outside the in-app browser.`},microphone:{title:`Microphone`,desc:`Record voice in chat and voice features.`},accessibility:{title:`Accessibility`,desc:`Use global shortcuts and accessibility-related integrations.`},automation:{title:`Automation & app integration`,desc:`Control or integrate with other apps and services (e.g. Apple Events on macOS, default apps on Windows, or desktop portals on Linux).`},notifications:{title:`Notifications`,desc:`Allow the app in your OS notification settings so alerts can appear.`},location:{title:`Location`,desc:`Location-based tasks when the product uses location.`}},permUnknown:{fullDisk:{darwin:`macOS does not report this until access is attempted. Grant Full Disk Access if workspace reads fail.`,win32:`Windows does not report this here. Open Storage settings if file access fails.`,linux:`Grant file access in your distro, Flatpak, or desktop portal if reads fail.`},screen:{darwin:`Grant Screen Recording for xopc if screen capture tools fail.`,win32:`Enable screen capture for desktop apps in Settings if capture fails.`,linux:`Use your desktop portal or compositor settings if screen capture fails.`},microphone:{darwin:`Use Request access or open Microphone settings if voice input fails.`,win32:`Use Request access or open Microphone privacy settings if voice input fails.`,linux:`Grant microphone access in your desktop or Flatpak settings if voice input fails.`},accessibility:{darwin:`Required for global shortcuts. Use Request access, then enable xopc under Accessibility.`,win32:`Open Accessibility settings if global shortcuts or integrations fail.`,linux:`Grant accessibility permissions in your desktop environment if shortcuts fail.`},automation:{darwin:`Grant Automation (Apple Events) if controlling other apps fails.`,win32:`Configure default apps and automation in Windows Settings if integrations fail.`,linux:`Use desktop portal or session settings for app integration if automation fails.`},notifications:{darwin:`Use Request access, then allow notifications for xopc in System Settings.`,win32:`Use Request access, then allow notifications for xopc in Settings.`,linux:`Allow notifications in your desktop environment or Flatpak permissions.`},location:{darwin:`Grant Location Services for xopc if location features fail.`,win32:`Enable location for desktop apps in Settings if location features fail.`,linux:`Grant location in your desktop portal if location features fail.`}},desktopApp:{title:`Application data`,loading:`Loading…`,devOnlyTitle:`Development build`,devOnlyBody:`Deleting data and uninstalling are only available in the packaged desktop app. Paths below are for reference.`,appPath:`Install location`,dataPath:`Shared data directory`,dataSize:`Data size`,dataSizeUnknown:`—`,copyPath:`Copy`,copied:`Copied`,copyFailed:`Could not copy to the clipboard. Select the path and copy manually.`,sharedDataWarning:`Gateway, Electron, and TUI share this directory. Deleting it affects every client; stop other xopc processes first to avoid concurrent writes.`,pendingUpdateBlocked:`Finish or cancel the pending update before deleting data or uninstalling.`,clearData:`Delete application data`,clearDataDesc:`Permanently remove shared config, sessions, workspaces, and caches. Gateway, Electron, and TUI will all lose this data.`,clearDataConfirmTitle:`Delete application data?`,clearDataConfirmDesc:`This permanently deletes API keys, sessions, transcripts, and workspace files in the shared data directory. Gateway, Electron, and TUI are all affected, and this cannot be undone.`,clearDataConfirmCheckbox:`I understand this cannot be undone`,clearDataConfirmPhrase:`confirm delete`,clearDataConfirmLabel:`Type "confirm delete" to continue`,clearDataConfirmHint:`The delete button stays disabled until the phrase matches exactly.`,uninstall:`Uninstall app`,uninstallDescDarwin:`Opens Finder with xopc selected, then quits the app. Drag xopc.app to the Trash to finish uninstalling.`,uninstallDescWin:`Opens the Windows uninstall wizard and quits xopc.`,uninstallDescLinuxAppImage:`Opens the folder containing the AppImage, then quits xopc. Delete the AppImage file to uninstall.`,uninstallDescLinuxDeb:`Quits xopc and opens the install folder. Remove the package with: sudo dpkg -r {{package}} (or use your distro software center).`,uninstallDescLinuxUnknown:`Opens the install location, then quits xopc. Remove the app binary or package using your distro tools.`,uninstallConfirmTitle:`Uninstall xopc?`,removeUserDataCheckbox:`Also delete application data before uninstalling (affects Gateway, Electron, and TUI)`,confirmClear:`Delete data`,confirmUninstall:`Uninstall`,cancel:`Cancel`,migrations:{title:`Upgrade repairs`,checking:`Checking migration status…`,checkFailed:`Could not check migration status.`,upToDate:`Configuration is up to date.`,manualAttention:`Some upgrade repairs need manual attention.`,safeRepairs:`{{count}} safe upgrade repair(s) can be applied.`,apply:`Apply repairs`,applying:`Applying…`},errors:{pendingUpdate:`A downloaded update is waiting to install. Restart to update or wait before uninstalling.`,uninstallerNotFound:`Could not find the uninstaller. Remove xopc from Settings → Apps → Installed apps.`,notPackaged:`This action is not available in development mode. Use the packaged desktop app.`,generic:`Operation failed. Try again or use your system settings to uninstall.`}}},settingsMode:{toggleLabel:`Show advanced options`,toggleAria:`Toggle advanced settings navigation`},settingsNavGroups:{general:`General`,system:`System settings`,credentials:`Credentials & models`,agent:`Agent settings`,connection:`Connection`,automation:`Automation`,diagnostics:`Diagnostics`,extensions:`Extensions`},cronSettingsPage:{title:`Scheduled tasks`,subtitle:`Global scheduler limits and defaults for all cron jobs.`,tasksLink:`Manage tasks and run history →`},goalsSettingsPage:{title:`Goal runtime rules`,subtitle:`Configure judging, execution limits, and notification rules for persistent /goal tasks.`},imageModelsSettings:{title:`Images`,subtitle:`Vision (understanding) and image-generation defaults, runtime options, and registered image providers.`,refresh:`Refresh`,crossLinkHint:`Image providers are configured here. Agent model roles and text models are managed from the Agents page.`,loadError:`Could not load image model settings.`,understandingTitle:`Image understanding`,understandingDescription:`Used for uploaded images, screenshots, and the image tool. Text models with image input support appear here automatically.`,runtimeUnderstandingTitle:`Runtime image understanding model`,runtimeUnderstandingExplicit:`Manual configuration is active.`,runtimeUnderstandingAutoRole:`Auto-selected from model role {role}. Choose a primary model below to pin a manual image understanding model.`,runtimeUnderstandingAutoProvider:`Auto-selected from the configured provider catalog. Choose a primary model below to pin a manual image understanding model.`,runtimeUnderstandingNone:`No runtime image understanding model is available. Configure a model role with image input support or choose a primary model below.`,runtimeUnderstandingFallbacks:`Fallbacks: {models}`,runtimeUnderstandingNoFallbacks:`No runtime fallbacks.`,runtimeAgentLabel:`Preview agent`,runtimeAgentHint:`This selector changes only the runtime preview above. Manual image model edits below still save to global defaults.`,generationTitle:`Image generation`,generationDescription:`Used by the image_generate tool to create or edit images. Only registered image-generation provider models are listed.`,primaryModelLabel:`Primary model`,fallbackModelsLabel:`Fallback models`,fallbackModelsPlaceholder:`No fallback models added`,noModelSelected:`Auto select`,timeoutLabel:`Timeout (ms)`,timeoutHint:`Hard cap for one generation attempt; leave empty for the gateway default (120000 ms).`,autoFallbackLabel:`Auto-fallback to any configured provider`,autoFallbackHint:`After the primary chain fails, sweep every other configured provider before giving up.`,save:`Save`,discard:`Discard`,saving:`Saving…`,saved:`Saved.`,fallbackChainsTitle:`Fallback chains`,runtimeTuningTitle:`Runtime tuning`,runtimeTuningHint:`These options only affect image generation; image understanding uses the model call defaults.`,providersTitle:`Registered providers`,providersEmpty:`No image-generation providers registered.`,configured:`Configured`,missingKey:`Missing API key`,unsavedChanges:`Unsaved`,expandProvider:`Expand provider settings`,collapseProvider:`Collapse provider settings`,defaultModel:`Default`,modelsLabel:`Models`,modelCountOne:`1 model`,modelCountMany:`{count} models`,credentialsIntro:`Set API keys and optional endpoints here. Values are written to config as providers.<id> (same as environment variables). Keys are never returned in full from the gateway.`,apiKeyLabel:`API key`,regionLabel:`Region`,regionHint:`DashScope: pick a region on its card to set region and the official image endpoint (Custom lets you type both).`,endpointPresetsHint:`When a card shows endpoint or cluster presets, pick one or use Custom — values are saved as providers.<id>.baseUrl.`,baseUrlLabel:`Base URL`,imageBaseUrlLabel:`Image base URL`,optionalPlaceholder:`Optional`,saveCredentials:`Save keys`,savingCredentials:`Saving…`,credentialsSaved:`Keys saved.`,discardCredentials:`Discard keys`,credentialsSaveError:`Could not save provider keys.`,credentialsNothingToSave:`No credential changes to save.`,regionPresetDefault:`Default (gateway chooses)`,regionPresetCustom:`Custom region / endpoint`,baseUrlPresetDefault:`Default (vendor official)`,baseUrlPresetCustom:`Custom URL`,openExtensionSettings:`Extension page`,openImageModelsPage:`Open Images settings`,extensionSettingsLinkTitle:`Open this provider’s extension settings`,imageModelsLinkTitle:`Open Images settings for all providers`,imageBaseUrlPresetHint:`Filled from the region preset; switch to “Custom” to edit.`,dashscopeRegion_beijing:`China (Beijing)`,dashscopeRegion_singapore:`International (Singapore)`,dashscopeRegion_us:`United States (Virginia)`,apiKeyMaskedHelp:`Saved keys are hidden. Click the eye to load the key from your config file (providers.<id>.apiKey only — not from environment variables).`,apiKeyCopy:`Copy`,apiKeyCopied:`Copied`,apiKeyShow:`Show key`,apiKeyHide:`Hide key`,apiKeyNotInConfigFile:`No API key in the config file for this provider (it may come only from an environment variable).`,apiKeyRevealFailed:`Could not load key from the gateway.`,minimaxClusterLabel:`MiniMax cluster (API host)`,minimaxClusterHint:`MiniMax chooses China vs international by hostname, not a separate region code. The gateway stores that host as providers.minimax.baseUrl (what the runtime reads). DashScope uses providers.dashscope.region plus an image endpoint URL.`,falQueueBaseLabel:`Fal queue / API base`,falQueueBaseHint:"Fal image calls are rooted at a queue URL (default `https://queue.fal.run`). This maps to `providers.fal.baseUrl`."},extensionImageGen:{banner:`API keys and endpoints are stored globally as providers.<id> (same as Settings → Images). Use either page — they stay in sync.`,openImageModels:`Open Images settings (all providers)`},extensionSttMedia:{banner:`STT credentials are stored in tools.media.audio.providers.<id> (same as Settings → Voice). Use either page — they stay in sync.`,openVoice:`Open Voice settings (all STT providers)`,credentialsTitle:`STT credentials`,credentialsHint:`Edits tools.media.audio.providers.{providerId} and enables STT when you save.`,configured:`Configured`,notConfigured:`Not configured`},appearanceSettings:{pageTitle:`Preferences`,subtitle:`Language, appearance, and text size for daily use. Stored in this browser only.`,languageTitle:`Language`,languageDescription:`Choose the interface language.`,themeTitle:`Theme`,themeDescription:`Light, dark, or follow your system setting.`,colorSchemeTitle:`Color scheme`,colorSchemeDescription:`Visual style of the interface.`,colorSchemeDefault:`Calm Intelligence`,colorSchemeLightGreen:`Light green`,colorSchemeModernMono:`Mono`,colorSchemeClay:`Clay`,fontScaleTitle:`Conversation text size`,fontScaleDescription:`Adjust text size in chat and reading areas.`,fontScaleCompact:`Small`,fontScaleDefault:`Medium`,fontScaleLarge:`Large`,langOptionEn:`English`,langOptionZh:`中文`,themeOptionLight:`Light`,themeOptionDark:`Dark`,themeOptionSystem:`System`,openFullPreferences:`Open all settings`,quickMenuHint:`Language, theme, and text size`,showDesktopPet:`Show pet`,hideDesktopPet:`Hide pet`,aboutApp:`About`,developerGroupTitle:`Developer`,developerGroupDescription:`Affects how tool-call results are displayed in chat.`,showRawToolDataTitle:`Show tool debugging data`,showRawToolDataDescription:`Reveal raw JSON input and output inside tool-call steps to help diagnose issues.`},keyboardShortcutsSettings:{pageTitle:`Keyboard shortcuts`,subtitle:`All keyboard shortcuts available in the app.`,categoryGlobal:`Global`,categoryNavigation:`Navigation`,categoryChat:`Chat`,categoryEditor:`Notes editor`,globalToggleWindow:`Show / hide app window`,globalVoiceInput:`Start / finish voice input`,globalVoiceInputMacNote:`Tap and release Fn by itself. Requires Accessibility access; set the macOS Fn action to Do Nothing to avoid conflicts.`,globalVoiceInputWindowsNote:`Tap and release Alt by itself. Alt combinations are ignored; some apps may still focus their menu.`,globalOpenSettings:`Open settings`,globalNewChat:`New chat`,globalCommandPalette:`Command palette`,navCommandPalette:`Open command palette`,navQuickCapture:`Quick capture note`,navToggleSidebar:`Toggle sidebar`,navToggleFullscreen:`Toggle full screen`,navCloseDialog:`Close dialog / settings`,chatSend:`Send message`,chatNewLine:`New line`,chatForceSend:`Force send (edit mode)`,chatVoiceInput:`Start / finish voice input`,editorHeading1:`Heading 1`,editorHeading2:`Heading 2`,editorHeading3:`Heading 3`,editorBulletList:`Bullet list`,editorOrderedList:`Ordered list`,editorTaskList:`Task list`,desktopOnly:`Desktop app only`,quickCaptureShortcutTitle:`Quick capture shortcut`,quickCaptureShortcutDescription:`Set the shortcut used to capture a note while the app is focused.`,quickCaptureShortcutChange:`Change shortcut`,quickCaptureShortcutReset:`Reset`,quickCaptureShortcutRecording:`Press a shortcut (Esc to cancel)`,quickCaptureShortcutConflict:`That shortcut is already in use.`,voiceInputShortcutTitle:`Voice input fallback shortcut`,voiceInputShortcutDescription:`Use this shortcut while the app is focused. Desktop also accepts the global Fn or Alt shortcut shown below. Press Esc to cancel.`,voiceInputAccessibilityDescription:`Global Fn detection needs macOS Accessibility access.`,voiceInputAccessibilityGranted:`Accessibility access is enabled for global Fn input.`,voiceInputAccessibilityEnable:`Enable access`,voiceInputAccessibilityRequesting:`Opening settings…`},mcpSettings:{title:`External tools (MCP)`,subtitle:`Configure outbound MCP servers (stdio or HTTP) for embedded agent runs. Tool access is controlled by each agent's settings.`,loading:`Loading MCP configuration…`,saved:`MCP configuration saved.`,save:`Save`,discard:`Discard`,saving:`Saving…`,globalTitle:`Runtime`,globalHint:`Session idle TTL controls when unused MCP client runtimes are evicted (0 = never).`,idleTtlLabel:`Session idle TTL (minutes)`,idleTtlHint:`Default is 10 minutes when unset. Set 0 to disable idle eviction.`,idleTtlPlaceholder:`10`,serversTitle:`Servers`,serversHint:`Each server id becomes the prefix in tool names (server__tool). Extension .mcp.json files merge in automatically.`,customServersTitle:`Custom MCP servers`,customServersHint:`Add stdio subprocesses or remote HTTP/SSE endpoints. Installed catalog connectors are managed separately above.`,reservedServerId:`This id is reserved by an installed connector. Choose a different server name.`,serversEmpty:`No MCP servers configured yet.`,addServer:`Add server`,removeServer:`Remove`,serverIdPlaceholder:`server-id`,serverIdLabel:`Server name`,serverCardTitle:`MCP server`,cardUntitled:`Untitled server`,cardExpandAria:`Expand server settings`,cardCollapseAria:`Collapse server settings`,transportLabel:`Server type`,commandLabel:`Command`,argsLabel:`Arguments`,argsHint:`Space-separated args (no shell quoting).`,cwdLabel:`Working directory`,envLabel:`Environment (JSON object)`,envHint:"Values may reference ${ENV_VAR}. Dangerous host env keys are filtered at startup.",urlLabel:`Server URL`,headersLabel:`Headers`,optionalSuffix:`(optional)`,headersHint:`Bearer tokens and custom headers for remote MCP servers.`,addHeader:`Add header`,removeHeader:`Remove header`,pasteHeaders:`Paste`,pasteHeadersFailed:`Could not parse headers. Paste a JSON object or lines like "Authorization: Bearer token".`,headerKeyPlaceholder:`Authorization`,headerValuePlaceholder:`Bearer your-token`,timeoutLabel:`Timeout (optional)`,timeoutHint:`Connection, tool list, and tool call timeout in seconds (1–600). Leave empty for the default (30 s).`,timeoutPlaceholder:`30`,testConnection:`Test`,toolsTitle:`MCP tools ({{count}})`,toolsSummary:`{{count}} tools discovered`,toolsLoading:`Fetching tool list…`,toolsEmpty:`No tools returned from this server.`,viewAllTools:`View all`,toolsDialogTitle:`MCP tool list`,toolsDialogSubtitle:`{{serverId}} · {{count}} tools`,toolsDialogSearchPlaceholder:`Search by name or description…`,toolsDialogSearchEmpty:`No tools match your search.`,toolsDialogClose:`Close`,disableHint:`To block MCP tools for an agent, deny the corresponding MCP tool in that agent's settings.`,transportLabels:{stdio:`stdio`,sse:`SSE`,"streamable-http":`Streamable HTTP`}},connectorsSettings:JSON.parse(`{"title":"Connectors","subtitle":"Manage current connections or discover new sources and actions for your agents.","tokenHint":"Save a gateway token under Settings → Gateway before configuring connectors.","tabConnected":"My connections","tabDiscover":"Discover","navAria":"Connector sections","registrySourceAria":"Connector source","discoverSourceAll":"All sources","discoverSourceBuiltin":"Built into xopc","storeSourceName":"xopc Store","connectedSearchPlaceholder":"Search my connections…","discoverSearchPlaceholder":"Search GitHub, Slack, Notion…","refreshConnections":"Refresh connection status","sortName":"Sort by name","sortSource":"Sort by source","sortAria":"Connector sort order","discoverTitle":"Find the right connectors","discoverHint":"Filter by outcome, name, or source, then connect the capabilities you need to xopc.","integrationStrategyHint":"Use native channels for core conversations, MCP for frequent or critical services, and Composio for long-tail SaaS integrations.","discoverEmpty":"No connectors match these filters. Try another outcome, search, or source.","loadMore":"Load more","connectionsTitle":"Connections","connectionsHint":"Connections that need attention appear first. Open one to inspect capabilities, permissions, and runtime status.","connectionsEmpty":"You have no connections yet. Choose one from the catalog to give xopc context or actions.","connectionsSearchEmpty":"No connections match this search.","connectionSummaryTitle":"Connection status","connectionSummaryHint":"Resolve connections that need setup so agents can use their capabilities.","connectionReady":"Ready","connectionNeedsSetup":"Needs attention","connectionChecking":"Awaiting check","loading":"Loading connectors…","addConnection":"Add connection","addFromCatalog":"Add from connector catalog","addCustomServerAdvanced":"Add custom MCP server (advanced)","runtimeSettings":"Runtime settings","runtimeSettingsTitle":"Connector runtime settings","runtimeSettingsHint":"Manage MCP runtime behavior shared by all connections.","editCustomServer":"Edit","customBadge":"custom","addCustomServerTitle":"Add custom MCP server","addCustomServerHint":"Configure a stdio subprocess or remote HTTP/SSE endpoint.","editCustomServerTitle":"Edit custom MCP server","editCustomServerHint":"Update connection settings for this server.","modalSave":"Save","modalCancel":"Cancel","modalClose":"Close","duplicateServerId":"A custom server with this id already exists.","connectorConfigLabel":"Settings","connectorBenefitHeadings":{"understand":"Understand your work","act":"Take action for you","reach":"Stay connected"},"outcomeFilterAria":"Filter connectors by outcome","outcomeAll":"All outcomes","connectorBenefitHints":{"understand":"Bring in the documents, data, and context that make help more relevant.","act":"Let xopc use the tools where your work already happens.","reach":"Receive updates and continue work in the channels you use."},"openConnectorDetails":"Open details for {{name}}","connectorDetails":"Details","connectorCapabilityLabels":{"tools":"Tools","resources":"Resources","prompts":"Prompts","context":"Context","channel":"Channel","events":"Events","ui":"UI","memory_source":"Memory source","workflows":"Workflows","auth.apiKey":"API key auth","auth.oauth":"OAuth","runtime.mcp.stdio":"MCP stdio","runtime.mcp.sse":"MCP SSE","runtime.mcp.streamableHttp":"MCP streamable HTTP"},"connectorPreviewUnknown":"Preview after probe","connectorPreviewButton":"Preview tools","connectorPreviewTitle":"Capability preview","connectorPreviewToolsCount":"{{count}} tools","connectorRequiredInputs":"Setup","connectorRequiredInputsCount":"{{count}} required","connectorCapabilitiesTitle":"Capabilities","connectorCapabilitiesHint":"These are declared capabilities from the registry. Tool names and schemas can be probed before or after installation when the server accepts a connection.","connectorSetupTitle":"Required setup","connectorSetupSecret":"secret","connectorSetupConfig":"config","connectorSetupRequired":"required","connectorSetupNone":"No secrets or config fields are required before installation.","connectorRuntimeTitle":"Runtime","connectorRuntimeMcp":"MCP server {{serverId}}","connectorRuntimeGeneric":"{{runtime}} runtime {{id}}","connectorAuthNone":"No auth required","connectorAuthApiKey":"API key","connectorAuthOAuth":"OAuth","connectorBasicConfigTitle":"Connection","connectorBasicConfigHint":"Set the server identity and the endpoint or command XOPC should start.","connectorShowAdvancedConfig":"Advanced settings","connectorHideAdvancedConfig":"Hide advanced settings","connectedBadge":"Connected","connect":"Connect","connectorVerified":"Verified","integrationStrategyNative":"Native","integrationStrategyMcp":"Preferred MCP","integrationStrategyComposio":"Composio SaaS","integrationStrategyNativeHint":"This core communication path runs through xopc's native channel runtime.","integrationStrategyMcpHint":"This frequent or critical integration runs directly through MCP for tighter control and predictable operation.","integrationStrategyComposioHint":"This long-tail SaaS integration uses Composio for managed authentication and tool execution.","connectorBeta":"Beta","connectorExperimental":"Experimental","connectDialogTitle":"Connect {{name}}","connectProgressAria":"Connection progress","connectStepConfigure":"Set up","connectStepVerify":"Verify","connectStepReady":"Ready","secretInputLabels":{"show":"Show","hide":"Hide","copy":"Copy","copied":"Copied"},"requiredPlaceholder":"Required","optionalPlaceholder":"Optional","connectingTitle":"Connecting and running a health check…","connectingHint":"XOPC saves the connection, materializes its runtime, then probes exposed tools, resources, and prompts.","connectedAs":"Connected as {{target}}","runtimeLabel":"Runtime: {{runtime}}","healthStatusPending":"Health pending","healthStatusHealthy":"Healthy","healthStatusLabels":{"ok":"Healthy","server_not_found":"Server not found","missing_secret":"Missing secret","startup_failed":"Startup failed","tools_list_failed":"Tool list failed","timeout":"Timed out","network_failed":"Network failed","unauthorized":"Unauthorized","disabled":"Disabled","unknown_error":"Unknown error"},"toolsMetric":"Tools","resourcesMetric":"Resources","promptsMetric":"Prompts","promptArgumentCount":"{{count}} arguments","installedWithoutHealth":"Installed. Capabilities can be tested from Installed.","customCapabilitySummary":"{{tools}} tools, {{resources}} resources, {{prompts}} prompts discovered.","catalogBadge":"catalog","mcpServerRuntime":"MCP server: {{serverId}}","test":"Test","remove":"Remove","detailHealth":"Health","detailTools":"Tools","detailResources":"Resources","detailPrompts":"Prompts","detailPermissions":"Permissions","storeLocalExecDenied":"Local command execution denied","healthNotTested":"not tested","statusLabel":"Status:","lastCheckLabel":"Last check:","never":"never","toolsAvailable":"{{count}} tools available for this connector.","toolsLastCheckSummary":"{{count}} tools were found in the last health check. Run Test again to load tool details.","toolsRunTestHint":"Run Test to list tools.","resourcesRunTestHint":"Run Test to list resources exposed by this MCP server.","promptsRunTestHint":"Run Test to list prompts exposed by this MCP server.","secretsConfigured":"Secrets configured: {{count}}","runtimeServerLabel":"Runtime: {{runtime}} server {{serverId}}","mcpPolicyHint":"Tool calls run through MCP and follow the agent tool policy/approval gates.","connectorPolicyHint":"Tool calls follow connector scope and curated allowlist gates.","installedToolsDialogTitle":"{{name}} tools","installedToolsDialogSubtitle":"{{serverId}} exposes {{count}} MCP tools.","composioApiKeyStored":"Composio API key stored. Install a toolkit connector to manage OAuth connections and tools.","composioToolkitTitle":"Composio toolkit: {{toolkit}}","composioScopeHint":"Curated actions are filtered by read/write/admin scope before they reach the agent.","composioScopeRead":"Read","composioScopeWrite":"Write","composioScopeAdmin":"Admin","connectOAuth":"Connect OAuth","refresh":"Refresh","composioConnections":"Connections","composioConnectionsEmpty":"No active connection loaded.","composioAgentTools":"Agent tools","composioUncuratedSuffix":"· uncurated","composioToolsEmpty":"No actions available at this scope.","composioRecentTriggers":"Recent triggers","composioTriggersEmpty":"No trigger events archived yet.","composioPendingApprovals":"Pending approvals","composioApprovalExpires":"Expires at {{time}}","approve":"Approve","composioDeny":"Deny","composioConfirmationPolicy":"Confirm before actions","composioConfirmWrites":"Writes and admin","composioConfirmAlways":"Every action","composioConfirmNever":"Never","composioAllowedAgents":"Allowed agents","composioAllowedAgentsAll":"All agents can use this app.","composioAllowedAgentsSelected":"Only selected agents can use this app.","composioDefaultAccount":"default","composioAccountAlias":"Account label","composioMakeDefault":"Make default","composioRevoke":"Revoke connection","composioRevokeConfirm":"Revoke this account connection? Agents will no longer be able to use it.","composioMemorySync":"Sync selected data to memory","composioMemorySyncHint":"Runs one verified read action and saves the result as external, review-required memory.","composioMemoryReadAction":"Read action","composioMemoryArguments":"Action arguments (JSON)","composioMemoryArgumentsObject":"Action arguments must be a JSON object.","composioMemoryAgentMissing":"No allowed agent is available for memory sync.","composioSyncNow":"Sync now","composioMemorySynced":"Saved as reviewable memory {{id}}.","composioHealthConnected":"{{count}} active account connection(s)","composioHealthReconnect":"An account expired or failed. Reconnect to restore agent access.","composioHealthDegraded":"Health check failed. Retry after checking the Composio credential and network.","composioHealthMissingCredential":"Install and configure the Composio API Key connector first.","composioHealthUnauthorized":"Composio rejected the configured project API key. Replace or rotate it.","composioHealthForbidden":"The Composio project API key is missing required permissions.","composioHealthNetwork":"The gateway cannot reach the Composio API. Check DNS, proxy, and firewall settings.","composioHealthTimeout":"The Composio health request timed out. Check the network and retry.","composioHealthDisconnected":"No active account is connected.","composioRetry":"Retry"}`)},h={appBrand:`XOPC`,sidebarCollapse:`Collapse sidebar`,sidebarExpand:`Expand sidebar`,titleBarCommandPalette:`Command palette`,historyBack:`Back`,historyForward:`Forward`,closeMenu:`Close menu`,openMenu:`Open menu`,appBarPreferences:`Language and theme`,nav:{chat:`Chat`,settings:`Settings`,sessions:`Session management`,automations:`Automations`,work:`Your work`,projects:`Projects`,localApps:`App Workshop`,profile:`About you`,goals:`Goals`,notes:`Notes`,workflows:`Workflows`,skills:`Skills`,connectors:`Connectors`,channels:`Channels`,agents:`Agents`,extensions:`Extensions`,logs:`Diagnostic logs`,settingsAppearance:`Preferences`,settingsOverview:`System status`,settingsCredentials:`Models & capabilities`,settingsProviders:`Providers & keys`,settingsModels:`Model catalog`,settingsImageModels:`Images`,settingsChannels:`Channels`,settingsVoice:`Voice`,settingsGateway:`Gateway`,settingsHeartbeat:`Heartbeat`,settingsTunnel:`Remote access`,settingsShares:`File sharing`,settingsSearch:`Web search`,settingsDreams:`Dreams`,settingsCron:`Scheduled tasks`,settingsGoals:`Goal runtime rules`,settingsAgentBrowser:`Browser`,settingsUserProfile:`User profile`,settingsCapabilityPresets:`Capability plans`,settingsAgents:`Agents`,settingsKeyboardShortcuts:`Keyboard shortcuts`,settingsSystem:`System permissions`,settingsDesktopPet:`Pet`,settingsDesktopApp:`Application data`},token:{title:`Authentication required`,description:`Enter your gateway token to continue.`,gatewayUrl:`Gateway URL`,tokenLabel:`Token`,placeholder:`Gateway token (e.g. ea4c67bf…)`,save:`Connect`,connecting:`Connecting…`,tokenRejected:`This token was rejected. Check it and try again.`,gatewayUnreachable:`The gateway could not be reached. Check that it is running and try again.`,tokenVerificationFailed:`The token could not be verified. Try again.`,show:`Show`,hide:`Hide`},gatewayLanding:{headline:`Enter your gateway token`,subline:`Connect this console to the gateway.`,sessionExpired:`Your session expired. Enter a valid gateway token to continue.`,tokenHelpSummary:`Where do I find my token?`,tokenHelpOnboard:`Run xopc onboard (or xopc onboard --gateway). The setup output includes your token.`,tokenHelpLink:`Opening a setup link ending in ?token= saves the token automatically.`,docsGatewayLink:`Gateway guide`},electron:{setupBannerTitle:`Finish setup to start chatting`,setupBannerBody:`Add at least one model provider API key and choose a default model. You can change this anytime in Settings.`,setupBannerLinkProviders:`Provider keys`,setupBannerLinkModels:`Default model`,setupBannerDismiss:`Don't show again`,gatewayExitTitle:`Local gateway stopped`,gatewayExitBody:`The assistant backend exited unexpectedly. Restart the app to continue.`},connection:{connecting:`Connecting…`,online:`Online`,reconnecting:`Reconnecting…`,offline:`Offline`,error:`Connection error`,reconnect:`Reconnect`},api:{errorBadGateway:`Bad gateway (502)`,errorServiceUnavailable:`Service unavailable (503)`,errorGatewayTimeout:`Gateway timeout (504)`,errorInternal:`Internal server error (500)`,errorServer:`Server error ({{status}})`,errorNotFound:`Not found (404)`,errorForbidden:`Forbidden (403)`,errorRequest:`Request failed ({{status}})`},sidebar:{newTask:`New task`,moreApps:`More apps`,moreAppsAria:`More apps`,resizeApps:`Resize application shortcuts`,navDragHandle:`Drag to reorder`,tasksHeading:`Tasks`,projectsHeading:`Projects`,inboxHeading:`Chats`,projectOpen:`Open project`,projectNewChat:`New chat in project`,projectMenuAria:`Project actions`,projectPin:`Pin project`,projectUnpin:`Unpin project`,projectOpenInExplorer:`Open in file explorer`,projectOpenInExplorerUnavailable:`Project workspace is not available`,projectOpenInExplorerFailed:`Could not open project workspace`,projectRename:`Rename project`,projectRenameTitle:`Rename project`,projectRenamePlaceholder:`Project name`,projectArchive:`Archive project`,projectRemove:`Remove`,projectRemoveTitle:`Remove project`,projectRemoveMessage:`Remove "{{name}}" from projects? Local files will stay on disk, but linked chats, goals, workflows, automations, and memories will be ungrouped.`,projectShowMore:`Show more`,projectShowLess:`Collapse`,viewAllSessions:`All sessions`,taskListEmpty:`No chats yet`,taskListNeedToken:`Save a gateway token to load your chats.`,taskListAddToken:`Add token`,taskListStartChat:`Start a chat`,appMenuAria:`App menu and settings`,taskSessionMenuAria:`Session actions`,taskSessionAgentRunning:`Assistant is still responding`,taskRename:`Rename`,taskCopyChatId:`Copy chat ID`,taskChatIdCopied:`Chat ID copied`,taskDeleteTask:`Delete task`,taskRenameTitle:`Rename task`,taskRenamePlaceholder:`Session name`,taskRenameSave:`Save`,taskRenameCancel:`Cancel`,backToApp:`Back to app`,backToAgents:`Back to agents`,back:`Back`,helpDocs:`Documentation`,sessionChannelFilterAria:`Filter tasks: web app or channels`,sessionTasksTab:`Tasks`,sessionChannelsTab:`Channels`,resizeHandleAria:`Resize sidebar`,timelinePinned:`Pinned`,timelineToday:`Today`,timelineYesterday:`Yesterday`,timelineLast7Days:`Previous 7 days`,timelineThisMonth:`This month`,timelineOlder:`Older`},aboutDialog:{windowTitle:`About this application`,close:`Close`,versionLabel:`Version`,commitLabel:`Commit`,buildDateLabel:`Date`,gatewayVersionLabel:`Gateway`,consoleBuildHint:`Console UI build (this browser bundle). Gateway is the running xopc service.`,checkUpdates:`Check for updates`,checkUpdatesChecking:`Checking...`,checkUpdatesUpToDate:`You're up to date`,checkUpdatesAvailable:`Update available: v{version}`,checkUpdatesDownloading:`Downloading... {percent}%`,checkUpdatesDownloaded:`Ready to install: v{version}`,checkUpdatesError:`Check failed`,gatewayUnavailable:`—`,repositoryLink:`View on GitHub`,copyright:`Copyright © {year} xopcai`},updatePanel:{restartToUpdate:`Restart to update`,dismissAria:`Dismiss`,dismissHint:`Do not show this reminder again for this version`,reminderElectronReady:`Update v{{version}} is ready. Restart the app to install.`,reminderDownloading:`Downloading update… {{percent}}%`,reminderElectronUpdateError:`Desktop update failed: {{detail}}`,reminderNpm:`A new version v{{version}} is available for the gateway.`,updateNow:`Update now`,updateRunning:`Updating…`,updateSuccess:`Update installed`,updateSuccessDetail:`Restart the gateway to use the new version (for example: xopc gateway restart).`,updateErrorGit:`One-click update unavailable`,updateErrorBusy:`An update is already in progress`,updateErrorFailed:`Update failed`,restartRequired:`v{{version}} installed. Restart the gateway to use the new version.`,restartGateway:`Restart gateway`,restartPolling:`Gateway is restarting, waiting for it to come back…`,restartPollTimeout:`Gateway did not respond in time. It may still be starting.`,restartPollRetry:`Retry`},commandPalette:{groups:{navigate:`Navigate`,projects:`Projects`,quickSettings:`Quick Settings`,extensions:`Extensions`,sessions:`Sessions`,files:`Files`,commands:`Commands`,skills:`Skills`,actions:`Actions`},routes:{chatSubtitle:`Open chat`,agentsSubtitle:`Manage agents`,extensionsSubtitle:`Discover and manage extensions`,localAppsSubtitle:`Build and manage your own XOPC apps`,sessionsSubtitle:`Manage and search sessions`,logsSubtitle:`Gateway diagnostic logs`,skillsSubtitle:`Manage skills`,connectorsSubtitle:`Connect tools and registries`,channelsSubtitle:`Channel settings`,cronSubtitle:`Cron jobs and schedules`,cronSettingsSubtitle:`Cron scheduler global settings`,goalsSettingsSubtitle:`Goal runtime rules for /goal`,dreamsSettingsSubtitle:`Memory consolidation schedules`,settingsSubtitle:`Open settings`,credentialsSubtitle:`Provider keys, model catalog, images, voice, and web search`,providersSubtitle:`LLM provider keys and OAuth`,modelsSubtitle:`Model configuration`,imageModelsSubtitle:`Image understanding and generation settings`,voiceSubtitle:`Voice settings`,searchSubtitle:`Web search settings`,gatewaySubtitle:`Gateway settings`,agentDefaultsSubtitle:`Default agent configuration`},quickSettings:{switchModel:`Switch model`,switchModelSubtitle:`Change the default AI model`,switchAgent:`Switch agent`,switchAgentSubtitle:`Change the agent for new chats`,themeLight:`Switch to light theme`,themeDark:`Switch to dark theme`,themeSystem:`Use system theme`,appearanceSubtitle:`Appearance`,languageSubtitle:`Language`,languageEn:`Switch to English`,languageZh:`Switch to 中文`},actions:{createCron:`Create scheduled task`,createCronSubtitle:`Open scheduled tasks (create)`,manageCron:`Manage scheduled tasks`,manageCronSubtitle:`View and edit cron jobs`,createLocalApp:`Create app`,createLocalAppSubtitle:`Describe an idea and start building with Coder`,manageSkills:`Manage skills`,manageSkillsSubtitle:`View, enable, or disable skills`,reloadSkills:`Reload skills`,reloadSkillsSubtitle:`Reload all skills from disk`}},clipboard:{copy:`Copy`,copied:`Copied!`,copyFailed:`Could not copy to the clipboard. The text is selected — press Ctrl/Cmd+C to copy manually.`}},g={sharesSettings:{title:`File sharing`,subtitle:`Manage temporary public download links for workspace files.`,tabShares:`Shares`,tabPolicy:`Policy`,tabsAria:`File sharing settings tabs`,needToken:`Sign in to the gateway to manage file shares.`,emptyState:`No shares yet. Create one from the file tree or via the API.`,createTitle:`Create share`,createHint:`Pick a workspace file or directory to generate a shareable link.`,pathLabel:`File / Directory`,pathPlaceholder:`e.g. reports/monthly.pdf`,pathBrowse:`Browse…`,pathBrowseChange:`Change`,pathPickedFile:`Selected file`,pathPickedDirectory:`Selected directory`,pickerTitle:`Pick something to share`,pickerConfirm:`Pick`,pickerAgentLabel:`Agent`,pickerHintNone:`Click a file or directory, then confirm`,pickerHintNeedsFile:`Please pick a file`,pickerHintNeedsDirectory:`Please pick a directory`,directoryModeLabel:`Directory mode`,directoryModeBrowse:`Browsable`,directoryModeZipOnly:`ZIP only`,ttlLabel:`Expires after`,ttlOptions:{"1h":`1 hour`,"6h":`6 hours`,"24h":`24 hours`,"3d":`3 days`,"7d":`7 days`},maxViewsLabel:`Max downloads`,maxViewsUnlimited:`Unlimited`,descriptionLabel:`Description (optional)`,descriptionPlaceholder:`Brief note for the recipient`,createButton:`Create link`,creating:`Creating…`,shareCreated:`Share link created`,copyUrl:`Copy link`,copy:`Copy`,publicUrlLabel:`Public (FRP)`,lanUrlLabel:`LAN`,localUrlLabel:`Local only`,expiresLabel:`Expires`,copied:`Copied!`,copyFailed:`Could not copy to the clipboard. Select the link and copy manually.`,listTitle:`Active shares`,allSharesTitle:`All shares`,showExpired:`Show expired / revoked`,hideExpired:`Hide expired / revoked`,fileName:`File`,status:`Status`,statusActive:`Active`,statusExpired:`Expired`,statusRevoked:`Revoked`,statusFileGone:`File missing`,views:`Downloads`,viewsOf:`of`,expiresAt:`Expires`,createdAt:`Created`,revoke:`Revoke`,revokeConfirmTitle:`Revoke share?`,revokeConfirmBody:`This link will stop working immediately. This cannot be undone.`,revokeConfirmLabel:`Revoke`,batchRevoke:`Revoke selected`,cleanExpired:`Clean all expired`,cleanExpiredConfirmTitle:`Remove expired shares?`,cleanExpiredConfirmBody:`This will revoke all expired and already-revoked shares permanently.`,cleanExpiredConfirmLabel:`Clean up`,extend:`Extend`,extendTitle:`Extend share`,extendBy:`Extend by`,reachability:`Reachability`,reachPublic:`Public (tunnel active)`,reachLan:`LAN only`,reachLocal:`Local only`,reachLocalHint:`Start the tunnel in Remote Access settings to make shares publicly accessible.`,noShareUrl:`Not reachable externally`,openTunnel:`Open Remote Access`,loading:`Loading shares…`,error:`Failed to load shares`,retry:`Retry`,cancel:`Cancel`,policyTitle:`Share policy`,policyHint:`Limits and defaults for temporary file and site shares.`,policyEnabled:`Enable file sharing`,policyDefaultTtlHours:`Default expiry (hours)`,policyDefaultTtlHint:`Default TTL for new shares (1–168 hours).`,policyMaxTtlDays:`Maximum expiry (days)`,policyMaxTtlHint:`Upper bound when creating or extending shares (1–30 days).`,policyMaxActiveShares:`Max active shares`,policyMaxActiveSharesHint:`Concurrent non-expired file shares allowed (1–10,000).`,policyMaxActiveSites:`Max active site shares`,policyMaxActiveSitesHint:`Concurrent non-expired site shares allowed for HTML/site publishing (1–1,000).`,policyMaxFileSizeMb:`Max file size (MB)`,policyMaxFileSizeHint:`Per-file limit for share creation (1 MB–10 GB).`,policyInlinePreviewMimes:`Inline preview MIME types`,policyInlinePreviewMimesHint:`MIME types allowed for ?inline=1 browser preview.`,policyMimePlaceholder:`MIME type and press Enter (e.g. image/png)`,policySave:`Save policy`,policyDiscard:`Discard`,policySaving:`Saving…`,policySaved:`Policy saved`,policySaveError:`Failed to save share policy`,policyUnsaved:`You have unsaved policy changes.`,policyRestartHint:`Policy changes require a gateway restart.`,policyLoading:`Loading share policy…`}},_={tunnelSettings:{title:`Remote access`,subtitle:`Expose this gateway on the internet so the mobile app can connect from anywhere. Off by default for your security.`,needToken:`Sign in to the gateway (valid token) to manage remote access.`,riskBannerTitle:`Security notice`,riskBannerBody:`Remote access exposes your gateway on the public internet. Only enable when you understand the risks.`,emptyStateTitle:`Get a public HTTPS URL`,emptyStateBody:`Start remote access to reach this gateway from your phone or anywhere on the internet.`,publicUrlLabel:`Public URL`,showOptions:`More options`,hideOptions:`Hide options`,showAdvanced:`Advanced settings`,hideAdvanced:`Hide advanced settings`,pairWaitingForTunnel:`Start remote access above, then scan the QR code here to pair your mobile app.`,consentExpiredBanner:`The remote access security notice was updated. Re-confirm before starting the tunnel or enabling auto-start.`,statusTitle:`Status`,loading:`Loading tunnel status…`,statusConnected:`Connected`,statusConnecting:`Connecting…`,statusReconnecting:`Reconnecting…`,statusPreparingFrpc:`Preparing frpc…`,statusRegistering:`Registering tunnel…`,statusProvisioningTls:`Provisioning HTTPS…`,statusStartingFrpc:`Connecting to frp…`,statusError:`Error`,statusOff:`Off`,frpcDownloading:`Downloading frpc…`,frpcDownloadingPercent:`Downloading frpc… {{percent}}%`,frpcDownloadingBytes:`Downloading frpc… {{received}}`,frpcDownloadingUrlLabel:`Download URL`,frpcExtracting:`Extracting frpc…`,startProgressTitle:`Startup progress`,startProgressHint:`First start can take 2–4 minutes (DNS propagation + HTTPS). DNS validation retries once automatically. The public URL appears before the tunnel is fully ready.`,startProgressElapsed:`Current step: {{elapsed}}`,publicUrlPendingNotice:`Public URL is assigned. Finish the remaining steps before using it remotely.`,stepPrepareFrpc:`Prepare frpc client`,stepRegister:`Register with broker`,stepRegisterDetail:`Public URL assigned — HTTPS and frp connection still in progress`,stepTls:`Provision HTTPS certificate`,stepTlsDetail:`Requesting TLS certificate for your subdomain`,stepTlsChecking:`Checking existing certificate`,stepTlsDnsChallenge:`Publishing DNS validation record`,stepTlsDnsPropagation:`Waiting for DNS on all public resolvers (can take 2–4 minutes)`,stepTlsCaValidation:`Waiting for certificate authority validation`,stepTlsIssuing:`Issuing certificate`,stepFrpcLogin:`Connect frpc to frp server`,stepFrpcDetail:`Waiting for frpc login (up to 60 seconds)`,stepReconnectDetail:`Reconnecting frpc after interruption`,uptime:`Uptime`,lanHint:`For LAN + tunnel QR, set gateway host to 0.0.0.0 in Gateway settings.`,pairTitle:`Mobile app pairing`,pairSubtitle:`Scan with your mobile app. The app exchanges a one-time pairing key for your gateway token.`,pairTunnelActive:`Remote access is on. The QR includes your tunnel URL, LAN address when available, and a one-time pairing key.`,pairBaseUrlLabel:`Gateway URL for pairing`,pairBaseUrlHint:`Use an address reachable from your phone (for example LAN IP and port). This may differ from the address in your desktop browser.`,pairBaseUrlPlaceholder:`http://192.168.x.x:28790`,pairBlockedTitle:`Pairing is not ready on localhost`,pairBlockedLoopbackBody:`Your gateway is only listening on this computer (127.0.0.1). Phones cannot reach that address. Use a LAN IP after exposing the gateway on your network, or start remote access below.`,pairBlockedNextSteps:`Or enable remote access below for tunnel pairing.`,pairEnableLanButton:`Enable LAN pairing`,pairEnableLanConfirmTitle:`Expose gateway on your LAN?`,pairEnableLanConfirmBody:`This sets gateway bind to LAN (0.0.0.0) and restarts the gateway. Anyone on your local network who obtains the pairing QR or token could access your assistant. Only continue on networks you trust.`,pairEnableLanEnabling:`Enabling LAN pairing…`,pairEnableLanSecurityAuditLink:`Review gateway security audit`,pairSuggestedLanLabel:`Suggested LAN address on this machine`,pairUseSuggestedUrl:`Use suggested address`,pairCandidatesTitle:`Detected LAN addresses`,pairSelectCandidateTitle:`Choose a LAN address`,pairSelectCandidateHint:`Pick the address your phone can reach on this network. The mobile app can probe each URL with GET /api/tunnel/pair/ping before pairing.`,pairMobileProbeHint:`Mobile apps: validate manual URLs with POST /api/tunnel/pair/validate-url, probe with GET /api/tunnel/pair/ping, then exchange ps via POST /api/tunnel/exchange-token.`,pairQrDisabled:`Scanning is disabled until the gateway is reachable from your phone.`,pairLocalhostWarning:`This URL looks like localhost. Phones on the network cannot reach your machine unless you expose the gateway (for example bind to LAN and use http://<this-machine-ip>:<port>).`,pairSecurityNote:`The QR contains a one-time pairing key (valid 5 minutes, single use). Only show it where you trust the people and cameras around you.`,pairEncoding:`Generating QR…`,pairImageError:`Could not generate a QR image. Copy the pairing link instead.`,pairCopyLink:`Copy pairing link`,pairCopied:`Copied pairing link`,pairSchemeHint:`Format registered by apps: xopc://gateway/mobile-connect?baseUrl=…&ps=… (exchange ps for token via POST /api/tunnel/exchange-token)`,pairInvalidBaseUrl:`Enter an absolute gateway URL starting with http:// or https:// (no path required).`,pairTunnelPublicUrl:`Tunnel URL`,pairTunnelLanUrl:`LAN URL (in QR)`,start:`Start remote access`,stop:`Disconnect`,release:`Release public URL`,releaseHint:`Revokes the subdomain on the broker. Your next start will get a new public URL.`,releaseConfirmTitle:`Release public URL?`,releaseConfirmBody:`This deregisters the tunnel on frp.xopc.ai and clears saved credentials. You will get a new subdomain when you start remote access again.`,releaseConfirmLabel:`Release`,copyUrl:`Copy public URL`,copied:`Copied`,refreshQr:`Refresh QR`,optionsTitle:`Options`,autoStart:`Start tunnel when gateway launches`,autoStartHint:`Available after you start remote access once and accept the security notice.`,autoStartConfirmTitle:`Start tunnel on every gateway launch?`,autoStartConfirmBody:`Your gateway will be reachable from the internet whenever it runs. Only enable if you accept that risk.`,autoStartConfirmLabel:`Enable auto-start`,consentTitle:`Enable remote access`,consentIntro:`Read carefully before exposing your gateway:`,consentBullet1:`A public URL lets anyone who obtains it use your gateway Bearer token.`,consentBullet2:`Traffic is proxied via frp.xopc.ai (third-party infrastructure).`,consentBullet3:`Use a strong token; stop the tunnel when you do not need remote access.`,consentCheckbox:`I understand these risks and want to enable remote access`,consentConfirm:`Accept and start`,consentReconfirm:`Accept and continue`,consentCancel:`Cancel`,deeplinkTitle:`Deep link payload`,brokerNote:`Traffic is proxied via frp.xopc.ai. Keep your gateway token private.`,brokerDocsLink:`Public tunnel security docs`,brokerSecretTitle:`Tunnel Registration Key`,brokerSecretStepTitle:`Step 1 · Tunnel Registration Key`,brokerSecretHint:`Create a Tunnel Registration Key in the xopc Console, paste it below, and save. The key registers with frp.xopc.ai via the X-Registration-Secret header and is stored in xopc.json on this machine.`,brokerSecretConsoleLink:`Create Tunnel Registration Key in Console`,brokerSecretEnvHint:`The legacy environment variable XOPC_TUNNEL_REGISTRATION_SECRET is set (it overrides the value below). Create a new key in the Console, save it here, then remove the env var.`,brokerSecretMaskedHelp:`A key is saved in local config. You can view, copy, or replace it.`,brokerSecretPlaceholder:`Paste Tunnel Registration Key`,brokerSecretPlaceholderKeep:`Paste a new Tunnel Registration Key`,brokerSecretMissingHint:`Create a key in the Console first, then paste it here and save.`,brokerSecretRequiredBeforeStart:`Save a Tunnel Registration Key above before starting remote access.`,brokerSecretSave:`Save key`,brokerSecretSaveAndContinue:`Save and continue`,brokerSecretClear:`Clear saved key`,brokerSecretSaved:`Tunnel Registration Key saved`,brokerSecretCleared:`Saved Tunnel Registration Key cleared`,brokerSecretReadyTitle:`Tunnel Registration Key configured`,brokerSecretReadyHint:`You can start remote access below. Use Reconfigure to replace the key.`,brokerSecretReconfigure:`Reconfigure`,brokerSecretCancelReconfigure:`Cancel`,brokerSecretRevealFailed:`Could not load the saved key`,brokerSecretNotInConfigFile:`Key is not in the config file; plaintext cannot be shown.`,copyKey:`Copy key`,showKey:`Show key`,hideKey:`Hide key`,flowStepStart:`Step 2 · Start remote access`}},v={skills:{title:`Skills`,needToken:`Save a gateway token to manage skills.`,tagline:`Install and manage skills to extend XOPC in conversation.`,refresh:`Refresh list`,reloadRuntime:`Reload from disk`,reloadDiskAria:`Reload skills from disk`,skillsNavAria:`Skill management sections`,tabInstalled:`My skills`,tabDiscover:`Discover`,tabBuiltin:`Built-in`,tabUser:`Installed`,tabMarketplace:`Marketplace`,installedHeading:`My skills`,installedHint:`Manage the skills agents can use now. Disabled skills stay out of conversations.`,discoverHeading:`Discover skills`,discoverHint:`Browse new capabilities from trusted sources and install them for use in chat.`,summaryReady:`Ready`,summaryNeedsAttention:`Needs attention`,summaryAdded:`Added by you`,sourceFilterAria:`Filter skills by source`,statusFilterAria:`Filter skills by status`,diagnosticsTitle:`{{count}} skill diagnostics need attention`,diagnosticsHint:`Some skills may not load or work. Open a skill or check gateway logs to investigate.`,marketplacePlaceholder:`The skill marketplace is coming soon.`,sectionMarketplace:`Skill store`,marketplaceBrowseSkillhub:`SkillHub`,marketplaceBrowseClawhub:`ClawHub`,marketplaceBrowseStore:`XOPC Store`,marketplaceBrowseSwitchAria:`Skills marketplace source`,marketplaceResultsTabsAria:`Search result source`,marketplaceResultsTabAll:`All`,marketplaceSortLabel:`Sort`,marketplaceSortDownloads:`Most downloads`,marketplaceSortNewest:`Newest`,marketplaceCategoryAll:`All`,marketplaceCategoriesAria:`Marketplace categories`,marketplaceCategoriesFailed:`Could not load categories`,marketplaceSearchPackages:`Search skill name, description, tags…`,marketplaceStars:`Stars`,marketplaceSource:`Source`,marketplaceLoadFailed:`Failed to load marketplace`,marketplaceEmpty:`No packages match your search.`,marketplaceEmptySearch:`No skills match "{{query}}".`,marketplaceEmptySearchTryProvider:`Search in {{provider}}`,marketplaceEmptySearchClear:`Clear search`,marketplaceInstall:`Install`,previewUseInChat:`Use in chat`,previewUseInChatBusy:`Installing…`,marketplaceReinstall:`Reinstall`,marketplaceInstalled:`Installed`,marketplaceNotInstalled:`Not installed`,marketplaceReinstallConfirm:`This skill is already installed. Replace it with the version from the store?`,marketplacePagePrev:`Previous page`,marketplacePageNext:`Next page`,marketplacePageStatus:`Page {{page}} of {{totalPages}} · {{total}} packages`,marketplaceAuthor:`Author`,marketplaceOpenOnSkillhub:`Open on SkillHub`,marketplaceOpenOnSkillhubAria:`Open this skill on skillhub.cn in a new tab`,marketplaceOpenExternal:`Open on registry`,marketplaceOpenExternalAria:`Open this skill on its registry page in a new tab`,marketplaceDownloads:`Downloads`,marketplaceVersion:`Latest`,sectionBuiltinList:`Built-in skills`,categoryLabel:{business:`Business`,creative:`Creative & Design`,documents:`Documents`,engineering:`Engineering`,tools:`Tools & Utilities`},filterAll:`All`,filterInstalled:`Added by you`,filterEnabled:`Ready only`,filterDisabledOnly:`Disabled only ({{count}})`,filterDisabledOnlyAria:`Show only disabled skills`,statusDisabled:`Disabled`,statusEnabled:`Enabled`,noDisabledSkills:`No disabled skills in this list.`,filterGlobal:`Global`,filterWorkspace:`Workspace`,filterExtra:`Extra`,sectionUser:`Your skills`,installCta:`Install skill`,installModalTitle:`Install skill`,installModalDropHint:`Drop a .zip or SKILL.md file, or click to choose.`,installModalReqTitle:`Requirements`,installModalReq1:`A .zip archive that contains SKILL.md`,installModalReq2:`Or drop a SKILL.md file directly`,installAction:`Install`,installClose:`Close`,searchPlaceholder:`Search skills`,noSearchResults:`No skills match your search.`,uploading:`Uploading…`,loading:`Loading…`,empty:`No skills loaded.`,loadFailed:`Failed to load skills`,reloadFailed:`Failed to reload skills`,skillToggleFailed:`Failed to update skill`,uploadFailed:`Upload failed`,installSuccess:`Skill installed.`,zipOnly:`Please choose a .zip file`,invalidFile:`Choose a .zip or SKILL.md file`,delete:`Delete`,deleteTitle:`Delete skill`,deleteMessage:`Remove folder "{{id}}" from managed skills? This cannot be undone.`,deleteConfirm:`Delete`,deleteFailed:`Failed to delete skill`,yes:`Yes`,no:`No`,cancel:`Cancel`,source:{builtin:`Bundled`,workspace:`Workspace`,global:`Global`,extra:`Extra`},col:{name:`Name`,description:`Description`,source:`Source`,managed:`Managed`,actions:`Actions`},detailModalBanner:`Metadata comes from SKILL.md YAML frontmatter; the instruction body below excludes that block.`,detailModalBannerStore:`Preview below is the markdown published with this package on the skill store (same content as the package readme).`,detailDisabledNotice:`This skill is installed but disabled by your settings, so agents cannot use it until you enable it.`,detailSummaryHeading:`Summary`,detailInstructionsHeading:`Instructions`,detailNoInstructionsBody:`No instruction body after frontmatter.`,detailHomepageLabel:`Homepage`,detailPlatformsLabel:`Platforms`,detailRequiresLabel:`Requirements`,detailRequiresBins:`Binaries`,detailRequiresEnv:`Environment variables`,detailRequiresAnyBins:`Any of these binaries`,detailInstallLabel:`Install steps`,detailToolGatingLabel:`Tool visibility`,detailToolsRequiresList:`Requires tools`,detailToolsetsRequiresList:`Requires toolsets`,detailToolsFallbackList:`Fallback tools`,detailToolsetsFallbackList:`Fallback toolsets`,detailEnvVarsLabel:`Session environment variables`,detailNotInjectedNote:`This skill is not injected into model context (disable-model-invocation).`,detailModalEnable:`Enable`,detailModalDisable:`Disable`,useRequiresEnabled:`Enable this skill before using it in chat`,detailLoadFailed:`Failed to load SKILL.md`,detailCloseAria:`Close`,hubRemote:`Remote`,hubKindGit:`git`,hubKindArchive:`archive`},skillsMarketplaceSettings:{title:`Marketplace source`,hint:`Default provider and store API base URL for the Skills marketplace tab.`,save:`Save`,discard:`Discard`,saving:`Saving…`,saveError:`Failed to save marketplace settings`,provider:`Provider`,providerHint:`Which catalog to browse by default (store, skillhub, clawhub).`,storeBaseUrl:`Store base URL`,storeBaseUrlHint:`REST base for package listings. Override with XOPC_SKILLS_STORE_URL env if needed.`}},y={workflows:JSON.parse(`{"title":"Workflows","runsSubtitle":"Resolve failures, follow progress, and use run results.","librarySubtitle":"Choose, create, and manage reusable workflows.","needToken":"Connect to the gateway with a token to browse workflows and monitor runs.","refresh":"Refresh","addWorkflow":"New workflow","agentFilterAria":"Select agent","pageTabsAria":"Workflow pages","pageTabs":{"runs":"Runs","library":"Workflow library"},"runFiltersAria":"Filter workflow runs","runsSearchPlaceholder":"Search runs…","statusFilterAria":"Filter by run status","runStatuses":{"all":"All statuses","attention":"Needs attention","running":"Running","queued":"Queued","succeeded":"Completed"},"layoutAria":"Run layout","runLayouts":{"list":"List","board":"Board"},"clearFilters":"Clear filters","attentionTitle":"Needs attention","attentionHint":"Review the failure before retrying, or open the run to continue recovery.","attentionView":"Review failure","allRuns":"All runs","allRunsHint":"Runs needing attention appear first; the rest follow recent activity.","noRunsTitle":"No runs yet","noRunsStartHint":"Choose a workflow, configure its input, and start your first run.","noRunResultsTitle":"No runs match","noRunResultsHint":"Change the search or filters to see other runs.","chooseWorkflow":"Choose workflow","libraryTitle":"Workflow library","libraryDescription":"Choose a workflow for the work at hand, configure its input, or create a reusable workflow of your own.","librarySearchPlaceholder":"Search workflows…","recentlyUsed":"Recently used","allWorkflows":"All workflows","workflowCount":"{{count}} workflows","configureAndRun":"Configure and run","categoryFilterAria":"Filter by category","sourceFilterAria":"Filter by source","categories":{"all":"All categories","code-review":"Code review","planning":"Planning","research":"Research & debug","writing":"Writing & content","productivity":"Decisions & meetings","uncategorized":"Other"},"sources":{"all":"All","builtin":"Built-in","user":"Mine"},"badgeBuiltin":"Built-in","badgeUser":"Custom","runWorkflow":"Start run","viewDetails":"Details","editWorkflow":"Edit","copyAndEditWorkflow":"Copy and edit","saveWorkflow":"Save workflow","savingWorkflow":"Saving…","saveWorkflowSuccess":"Workflow saved to ~/.xopc/workflows/.","saveWorkflowFailed":"Failed to save workflow.","noDefinitions":"No workflows match your filters.","noDefinitionsHint":"Change the source, category, or search to see other workflows.","boardStart":"Choose workflow","boardEmptyTitle":"No runs yet","boardEmptyHint":"Choose a workflow, configure its input, and start a run.","templateBestFor":"Best for","templateInputs":"Inputs","templateExpectedOutput":"Expected output","templateInputsGoalOnly":"Goal or context","templateInputsStructured":"Guided input form","templateOutputReport":"Summary, findings, and next steps","boardWorkflowFilterAria":"Filter by workflow","boardWorkflowFilterAll":"All workflows","boardTriggerFilterAria":"Filter by trigger source","boardTriggerFilterAll":"All sources","boardTriggerFilterAutomation":"Automation","boardTriggerFilterWebui":"Console","boardTriggerFilterChat":"Chat","boardTriggerFilterApi":"API","boardColumnEmpty":"No runs","boardExpandSucceeded":"Show all ({{count}})","boardCollapseSucceeded":"Show less","pickStartTitle":"Choose a workflow","pickStartHint":"Choose a workflow, configure its input, and start the run.","pickStartClose":"Close","taskNoSession":"This run has no chat session yet.","taskActionsAria":"Run actions","taskCloseMenu":"Close menu","taskOpenDetails":"View run","taskElapsed":"Elapsed {{duration}}","taskArtifacts":"{{count}} artifacts","boardColumns":{"queued":"Queued","running":"In progress","succeeded":"Done","attention":"Needs attention"},"startTitle":"Start run","runPlanPreview":"Run plan","readyToStart":"Ready","startPlanPhases":"Planned phases","runLimitsSummary":"{{concurrency}} parallel · max {{max}}","noInputSummary":"Uses this workflow's default goal unless you add input below.","goalLabel":"Goal (optional)","goalPlaceholder":"Describe what this run should accomplish…","inputRequiredHint":"Fill in the required inputs before starting the run.","examplePrompts":"Example prompts","advancedSettings":"Advanced settings","concurrencyPlaceholder":"Concurrency (default {{default}})","maxSubagentsPlaceholder":"Max checks (default {{default}})","timeoutSecondsPlaceholder":"Timeout seconds (default {{default}})","start":"Start run","starting":"Starting…","startSuccess":"Run started.","cancelDialog":"Cancel","historyRunsHeading":"Run history","runs":"Recent runs","noRuns":"No completed runs yet.","noRunsHint":"Completed runs appear here with status, duration, artifacts, and results.","noActiveRuns":"Nothing running right now.","noActiveRunsHint":"Start from a template to watch live progress, checks, and results.","browseCatalog":"Browse catalog","loading":"Loading…","selectRunHint":"Select a run to review its result, process, and artifacts.","cancel":"Cancel run","rerun":"Run again","replayFailedAgents":"Retry failed checks","replayFailedPhases":"Retry failed steps","replayLineageTitle":"Replay lineage","replayLineageSummary":"{{scope}} replay · {{count}} target checks","replayScopeFailedAgents":"Failed checks","replayScopeFailedPhases":"Failed phases","replaySourceRun":"Source run","replayTargetAgents":"Target checks","replayOpenSource":"Open source","replayFixedAgents":"Fixed checks","replayStillFailingAgents":"Still failing","replayDurationDelta":"Duration delta","contextRefsTitle":"Context used","contextRefsHint":"Objects that shaped this run before execution.","noContextRefs":"No bound context recorded.","contextRefKinds":{"project":"Project","goal":"Goal","work_item":"Work item","session":"Session","attachment":"Attachment","memory":"Memory"},"writebackTitle":"Writeback plan","writebackHint":"Where terminal results are recorded or suggested.","noWritebackTargets":"No writeback targets recorded.","writebackTargetKinds":{"project":"Project","goal":"Goal","work_item":"Work item"},"writebackModes":{"record":"record","suggest":"suggest update","evaluate":"evaluate state"},"retryFailed":"Failed to retry run.","runSummaryTitle":"Run summary","runSummaryActive":"{{done}}/{{total}} checks have completed. Keep this panel open to follow progress.","runSummarySucceeded":"Completed with {{agents}} checks and {{artifacts}} artifacts.","runSummaryFailedFallback":"The run stopped before producing a complete result.","runSummaryCancelled":"This run was cancelled before completion.","diagnosticFailedHint":"Review the failure reason first. After adjusting input or the template, retry only the failed part.","diagnosticTimeoutHint":"The run hit its time limit. Try lowering concurrency, narrowing the goal, or increasing limits before rerunning.","diagnosticCancelledHint":"No further checks will start. You can run it again when ready.","diagnosticPartialHint":"Some checks reported errors even though the run completed. Review the process before acting on the result.","reliabilityTitle":"Reliability and exceptions","reliabilityHint":"Signals that may affect how much you should trust or reuse this result.","nextActionsTitle":"Next actions","primaryActionsTitle":"Keep moving","recoveryActionsTitle":"Recover run","resultActionsTitle":"Use result","diagnosticsTitle":"Issues","diagnosticsHint":"Focused failure signals from this run.","diagnosticsRunError":"Run error","diagnosticsRunErrorWithCode":"Run error · {{code}}","diagnosticsAgentError":"{{agent}} check failed","diagnosticsStepError":"{{agent}} · {{step}} failed","diagnosticsAgentSkipped":"{{agent}} was skipped","openAgentDetails":"View check","process":"Process","expand":"Expand","collapse":"Collapse","agentIoTitle":"Check input / output","agentIoHint":"For troubleshooting: review what each check was asked to do and what it returned.","agentInputHeading":"Input","agentOutputHeading":"Output","agentNoOutput":"No output yet.","agentInvocationModel":"Model","agentInvocationTools":"Tools","agentInvocationIterations":"Iterations","agentInvocationSchema":"Schema","agentInvocationSchemaPresent":"Captured","resultTitle":"Result","copyResult":"Copy","copied":"Copied","exportResult":"Export","continueInChat":"Continue chat","continueInChatPrompt":"The {{workflow}} workflow finished with this goal: {{goal}}\\n\\nHelp me act on the result.","continueInChatResultHeading":"Workflow result:","runLinkRunning":"Run in progress","runLinkCompleted":"Run completed","runLinkFinished":"Run finished","runLinkOpenChat":"Open run session","metadataSession":"Session","metadataSource":"Source","metadataDefinition":"Definition","metadataDefinitionHash":"Definition hash","metadataPermissions":"Permissions","metadataRetryOf":"Retry of","debugDetailsTitle":"Advanced debug info","debugDetailsHint":"For troubleshooting only: check prompts, outputs, metadata, and audit fields.","definitionHashMatches":"matches current","definitionHashDrifted":"current changed","definitionHashCurrentUnknown":"current unknown","definitionHashUnavailable":"unavailable","closeResult":"Close","noResult":"No result yet.","phases":"Phases","phasesHeading":"Phases","subagents":"Checks","logs":"Logs","whenToUseHeading":"When to use","noPhases":"No phases recorded yet.","noSubagents":"No checks recorded yet.","noLogs":"No logs recorded yet.","startFailed":"Failed to start workflow.","cancelFailed":"Failed to cancel run.","agentProgress":"{{done}}/{{total}} checks","runRowErrorSummary":"{{count}} checks need attention.","agentCount":"{{count}} checks","agentScaleExact":"~{{count}} checks","agentScaleRange":"~{{min}}–{{max}} checks","phaseCount":"{{count}} steps","morePhases":"+{{count}} more","templatePlan":"Run plan","templateExample":"Try with","metrics":{"startedAt":"Started","duration":"Duration","agents":"Checks","artifacts":"Artifacts"},"status":{"queued":"Queued","running":"Running","succeeded":"Succeeded","failed":"Failed","cancelled":"Cancelled","timeout":"Timed out"},"phaseStatus":{"pending":"Pending","running":"Running","completed":"Completed","failed":"Failed"},"agentStatus":{"queued":"Queued","running":"Running","done":"Done","error":"Error","skipped":"Skipped"},"args":{"argQuestion":"Research question","argQuestionPlaceholder":"What should we investigate?","argTarget":"Review target","argTargetPlaceholder":"PR, file, plan, or design to review","argDiff":"PR / diff / commits","argDiffPlaceholder":"Describe the change set to review","argError":"Error or symptom","argErrorPlaceholder":"Paste the error message or stack trace","argContext":"Extra context","argContextPlaceholder":"What changed recently? When did it start?","argRequest":"Implementation request","argRequestPlaceholder":"Feature, refactor, or bugfix to plan","argScope":"Scope hint","argScopePlaceholder":"Optional path or subsystem (default: repo root)","argReleaseTargetPlaceholder":"Release candidate, branch, or feature summary","argTopic":"Topic","argTopicPlaceholder":"What should we write about?","argAudience":"Audience","argAudiencePlaceholder":"Who will read this?","argFormat":"Format","argFormatPlaceholder":"email, post, announcement, document…","argDecisionQuestion":"Decision","argDecisionQuestionPlaceholder":"What decision are you trying to make?","argOptions":"Options","argOptionsPlaceholder":"List options to compare (optional)","argCriteria":"Criteria","argCriteriaPlaceholder":"What matters most in this decision?","argMeetingTopic":"Meeting","argMeetingTopicPlaceholder":"What is the meeting about?","argAttendees":"Attendees","argAttendeesPlaceholder":"Who is involved?","argMeetingGoal":"Goal","argMeetingGoalPlaceholder":"What outcome do you want from this meeting?","argWins":"Wins this week","argWinsPlaceholder":"What went well? Ship, revenue, learning…","argBlockers":"Blockers","argBlockersPlaceholder":"What stalled or frustrated you?","argCarryover":"Carryover","argCarryoverPlaceholder":"Unfinished items to roll forward (optional)","argClientBrief":"Client brief","argClientBriefPlaceholder":"What does the client want? Timeline, budget, context…","argOffer":"Your offer","argOfferPlaceholder":"What you will deliver","argBudgetHint":"Budget hint","argBudgetHintPlaceholder":"Budget range or constraints (optional)","argSource":"Source content","argSourcePlaceholder":"Paste article, notes, or talking points","argPlatforms":"Target platforms","argPlatformsPlaceholder":"X thread, LinkedIn, video script… (optional — defaults to common set)","argMarket":"Market","argMarketPlaceholder":"What are you building or selling?","argCompetitors":"Competitors","argCompetitorsPlaceholder":"Names to compare (optional — we can suggest)","argFocus":"Focus","argFocusPlaceholder":"e.g. positioning, pricing, features","argSkills":"Your skills","argSkillsPlaceholder":"What you can deliver as a solo operator","argOfferAudience":"Target customers","argOfferAudiencePlaceholder":"Who will buy this offer?","argConstraints":"Constraints","argConstraintsPlaceholder":"Time limits, revenue goals… (optional)","argInbox":"Inbox","argInboxPlaceholder":"Paste emails, messages, todos, ideas…","argPriorities":"Weekly priorities","argPrioritiesPlaceholder":"What matters most this week? (optional)"},"versionLabel":"v{{version}}","inputSchemaBadge":"Input form","outputSchemaBadge":"Structured output","capabilitiesHeading":"Capabilities","advancedTemplateDetails":"Advanced template details","inputsHeading":"Inputs","outputsHeading":"Outputs","resourcesHeading":"Resources","permissionsTools":"Tools","permissionsNetwork":"Network","permissionsFileSystem":"Files","permissionsApproval":"Approval required","resourcesSkills":"Skills","resourcesContextFiles":"Context files","resourcesPromptTemplates":"Prompt templates","capabilityNone":"Not specified","networkEnabled":"enabled","networkDisabled":"disabled","inputSchemaHeading":"Inputs","rawJson":"Raw JSON","rawJsonInvalid":"Enter a JSON object.","booleanTrue":"True","booleanFalse":"False","outcomeArtifacts":"Artifacts","outcomeFollowUps":"Follow-ups","outcomeStructuredOutput":"Structured output","downloadArtifact":"Download","downloadingArtifact":"Downloading…","startFollowUp":"Open in Chat","copyPrompt":"Copy prompt","noArtifacts":"No artifacts yet.","manifestLabel":"Template details"}`)},b={workspace:{title:`Project Files`,currentWorkspace:`Current Workspace`,openFiles:`Project Files`,preview:`Preview`,download:`Download`,copyPath:`Copy Path`,pathCopied:`Path copied`,edit:`Edit`,wordWrap:`Word wrap`,viewing:`Viewing`,saved:`Saved`,saving:`Saving…`,emptyDir:`No files`,search:`Search files`,searchPlaceholder:`Search files`,clearSearch:`Clear file search`,noSearchResults:`No matching files`,loadError:`Failed to load`,close:`Close`,resizeHandleAria:`Resize project files panel`,lastModified:`Modified`,openElsewhereHint:`Preview may be limited or unavailable. Download the file or open it with another app.`,cannotPreviewType:`This file type can't be previewed here.`,openWith:`Open with`,openLocation:`Open location`,openInFileManager:`Open in file manager`,openLocationFailed:`Could not open workspace location`,copyPathFailed:`Could not copy path`,openSystemApp:`Open with default app`,chooseApp:`Choose app…`,recommendedApps:`Recommended`,recentApps:`Recent apps`,revealInFolder:`Show in folder`,shareLink:`Share link`,sharing:`Creating share…`,shareFailed:`Failed to create share link`}},x={you:JSON.parse(`{"title":"About you","subtitle":"What xopc understands about you, where it came from, and what you control.","tabs":{"overview":"Overview","understanding":"What xopc knows","sources":"Sources","controls":"Controls & privacy"},"attentionTitle":"Needs your attention","sourceIssues":"{{count}} sources need attention","completeProfile":"Complete your basics","knownSummary":"understandings in use","currentTrust":"current action boundary","memoryScope":"This is the shared understanding every agent uses when helping you.","heroTitle":"Learning how to work well with you","heroBody":"xopc uses only relevant context to make its help more accurate and personal. You can correct or remove anything here.","meetSuggestedTitle":"May I call you {{name}}?","meetSuggestedBody":"This is a possible name from the computer running xopc. Confirm it or replace it with the name or nickname you prefer.","meetTitle":"Let's get acquainted","meetBody":"Tell xopc how you would like to be addressed. This one small detail makes future collaboration feel more natural.","meetPlaceholder":"For example: Alex, Joyce, or Mic","meetSave":"Remember this name","meetSaving":"Remembering…","meetLater":"Maybe later","meetSource":"From the computer running xopc; it is saved only after you confirm.","meetSaved":"Got it, {{name}}. I'll use that name from now on.","knownCount":"{{count}} useful understandings","reviewCount":"{{count}} need your review","upToDate":"Everything is up to date","insightsTitle":"Turn understanding into action","insightsHint":"These suggestions come only from well-established context. You decide whether xopc should act.","insightReason":"Based on confirmed, durable context","insightEvidence":"Seen across {{count}} relevant moments","insightActions":{"make_repeatable":"Make it repeatable","start_progress":"Start moving it"},"notNow":"Not now","playbooksTitle":"How xopc works with you","playbooksHint":"These rules directly shape how agents communicate and execute. Pause or resume them as a group.","playbookNames":{"communication":"Communication & boundaries","execution":"How work gets done","routines":"Recurring habits"},"playbookRuleCount":"{{count}} active rules","playbookActive":"In use","playbookPaused":"Paused","pausePlaybook":"Pause","resumePlaybook":"Resume","addRule":"Add","newRulePlaceholder":"Add a collaboration rule…","enableRule":"Enable","disableRule":"Disable","deleteRule":"Delete","moveUp":"Up","moveDown":"Down","profileTitle":"The basics","profileHint":"Things you choose to tell xopc directly.","callName":"What should xopc call you?","pronouns":"How to address you","pronounsPlaceholder":"Not set","timezone":"Timezone","timezoneCustom":"Custom timezone…","timezoneDetect":"Detect timezone","custom":"Custom…","notes":"Anything useful to know","notesPlaceholder":"Your working style, priorities, accessibility needs, or anything else that helps collaboration.","edit":"Edit","save":"Save","saving":"Saving…","cancel":"Cancel","understandingTitle":"How xopc understands you","understandingHint":"Stable preferences and context that can improve future work.","consentTitle":"Permission to reference saved understanding","consentHint":"A recent request matched an item that xopc must not use until you approve it.","consentPurpose":"Requested for: {{purpose}}","consentDeny":"Don't allow","consentOnce":"Allow once","consentSession":"This conversation","consentAlways":"Always allow","addUnderstanding":"Add something xopc should know","addUnderstandingHint":"Use this for a preference, boundary, important person, routine, or current priority.","understandingPlaceholder":"For example: When I’m weighing options, show the tradeoffs before recommending one.","understandingKind":"What kind of context is this?","understandingKinds":{"preference":"Preference","boundary":"Boundary","relationship":"Important person","routine":"Routine","current_state":"Current situation","long_term_goal":"Long-term direction"},"add":"Add","conflictsTitle":"Choose what is true now","conflictsHint":"I found understandings that may no longer agree. I won’t use the unresolved alternatives.","useThis":"Use this","reviewAll":"Confirm all","grantsTitle":"Ongoing permissions","grantsHint":"These understandings may be referenced without asking again. You can revoke access at any time.","revoke":"Revoke","grantScopes":{"once":"Once","session":"This conversation","always":"Ongoing"},"noGrants":"No ongoing permissions.","history":"History","historyTitle":"Earlier versions","reviewTitle":"Check these with me","reviewHint":"These are inferred or need another look before they should guide future work.","nothingToReview":"Nothing needs your attention","nothingToReviewHint":"xopc will bring uncertain or aging understanding here instead of quietly relying on it.","showAll":"See everything xopc understands","hideAll":"Hide confirmed understanding","emptyUnderstanding":"There is nothing here yet. xopc will learn only from useful, durable context as you work together.","facets":{"basics":"About you","collaboration":"How to work with you","boundaries":"Your boundaries","priorities":"What matters now","people":"Important people","current":"Current context"},"origins":{"told_by_you":"You told me","observed":"Noticed across your work","inferred":"My interpretation","connected_source":"From {{source}}"},"stability":{"strong":"Well established","working":"Still learning","fragile":"Needs care"},"evidenceCount":"{{count}} supporting moments","viewEvidence":"View why xopc knows this","evidenceSource":"Source","evidencePath":"Source location","evidenceUpdated":"Last updated","evidenceSupport":"Supporting evidence","confirm":"That's right","notTrue":"That's not right","change":"Correct","forget":"Forget","updatePlaceholder":"Write the correct version…","forgetTitle":"Forget this understanding?","forgetBody":"It will be removed and will no longer be used as personal context.","sourcesTitle":"Where xopc can learn context","sourcesHint":"Only sources designed to provide personal context appear here. Tools used only to take actions stay under Connectors.","connected":"Connected","available":"Available","paused":"Paused","manageSources":"Manage sources","sourceContext":"Can provide context","sourceMemory":"Can update memory","sourceRead":"Can read","sourceWrite":"May perform writes","sourceHealth":"Health: {{status}}","sourceLastUsed":"Last activity: {{time}}","sourceDerivedCount":"Created {{count}} understandings","sourceKnowledgeCount":"Indexed {{count}} source items","sourceLastSync":"Last sync: {{time}}","sourceSyncFailed":"Last sync failed: {{error}}","sourceNeverUsed":"No activity recorded yet","healthOk":"Healthy","healthIssue":"Needs attention","disconnect":"Disconnect","disconnectTitle":"Disconnect this source?","disconnectBody":"After disconnecting {{source}}, xopc will stop receiving new context from it. Choose what should happen to existing understanding.","disconnectAccount":"Account: {{account}}","disconnectImpact":"This account currently contributes {{items}} source items and {{understandings}} derived understandings.","disconnectKeepTitle":"Disconnect and keep understanding","disconnectKeepBody":"Existing understanding stays available, and you can still correct or forget each item.","disconnectDeleteTitle":"Disconnect and delete derived understanding","disconnectDeleteBody":"Delete {{count}} understandings from this source, including archived or rejected records. This cannot be undone.","disconnectAction":"Disconnect source","disconnecting":"Disconnecting…","disconnectSuccess":"The source was disconnected.","disconnectDeleted":"The source was disconnected and {{count}} understandings were deleted.","observedAt":"Latest evidence: {{time}}","recommendationsTitle":"Recommended for your current goals","recommendationsHint":"Only sources that may help an active goal are suggested. Exact permissions are still shown before connecting.","recommendationReason":"May help with “{{goal}}”","noSources":"No personal context sources are available yet.","trustTitle":"How far xopc may act by default","trustHint":"Choose the default boundary for everyday actions. Individual automations and connections can be authorized separately without silently expanding access.","trustLevels":{"observe":"Observe","suggest":"Suggest","confirm":"Ask, then act","auto":"Act automatically"},"trustLevelHints":{"observe":"Build context without initiating action.","suggest":"Explain a recommendation and let you decide.","confirm":"Prepare the action and request approval first.","auto":"Act within explicitly approved boundaries."},"defaultTrust":"Default","autoOptInPromise":"When automatic action is selected, xopc acts only within authorized permissions, workflows, and recoverable boundaries; high-risk actions still require confirmation.","autoConfirmTitle":"Allow automatic action within approved boundaries?","autoConfirmBody":"xopc may use write-enabled connectors or workflows to complete routine actions automatically. It cannot expand existing permissions, and high-risk actions still require confirmation.","autoConfirmAction":"Allow automatic action","stableUnderstandings":"well-established understandings","connectedSources":"connected context sources","waitingReview":"waiting for review","controlTitle":"You stay in control","controlHint":"Choose how xopc learns and how carefully sensitive context is handled.","learningMode":"Learning","learningModes":{"off":"Don't use memory","readOnly":"Use what I approved","confirmWrite":"Ask before remembering","auto":"Learn useful stable context"},"sensitive":"Sensitive information","sensitiveOptions":{"deny":"Never remember it","confirm":"Always ask first","allow":"Allow when relevant"},"sharing":"Share across my assistants","sharingOptions":{"deny":"Keep it with this assistant","readOnly":"Other assistants may read it","allow":"Other assistants may use and update it"},"transientPromise":"Temporary emotions are treated as context for the moment, not as a permanent label about you.","transferTitle":"Import & export","transferHint":"Export a readable copy of your personal context, or restore understanding from an xopc About You export.","exportAction":"Export personal context","exporting":"Exporting…","importAction":"Import personal context","importing":"Importing…","importPromise":"Import does not overwrite your basics. New understanding enters the review queue, while duplicates and invalid items are skipped. Files are limited to 2 MB and 500 understandings.","importSuccess":"Imported {{count}} understandings and skipped {{skipped}}. Please review each one.","importError":"This file could not be imported. Make sure it is an xopc About You export within the size limit.","saved":"Your choices were saved.","loadError":"Could not load what xopc knows about you.","saveError":"Could not save this change."}`)},S={agentSettings:JSON.parse('{"subtitle":"模型、工作区、采样与输出方式的默认配置。","sectionDesc":"修改将写入网关配置文件;部分项在下一轮对话或新会话中生效。","needToken":"请先保存网关访问令牌后再加载或修改智能体默认项。","loadError":"加载设置失败","save":"保存","discard":"放弃","saving":"保存中…","saved":"已保存","saveError":"保存失败","routeIntro":{"workspace":"智能体工作目录与图像工具加载入站图片的体积上限。","browser":"让智能体通过 browser_use 操作网页。启用工具、选择连接方式,再在下方完成就绪配置。","runtime":"单轮耗时、工具调用轮数、请求重试与连续工具失败上限。","context":"上下文压缩与工具结果裁剪,控制送入模型的历史体积。","memory":"记忆快照、session_search 摘要模型与可选的后台审阅。","tools":"可选工具(网页抽取、子任务委托、沙箱执行代码)、全局内置工具权限,以及扩展用 Params(JSON)。可用技能见「技能」页。","skills":"技能市场来源(在该区块内单独保存)与全部智能体默认可见的技能(使用页头保存)。在「技能库」安装技能;按工具开关见「工具」页。","systemPrompt":"当前智能体配置的可选提示词定制。","modelStrategy":"智能体配置中的模型用途与默认模型选择。","generation":"控制模型回复长度、随机性、思考级别、推理可见性与详细程度。"},"defaultsTabs":{"workspace":"工作区","browser":"浏览器","runtime":"单轮限制","context":"上下文","memory":"记忆","tools":"工具","skills":"技能","system-prompt":"系统提示词","model-strategy":"模型策略","generation":"生成参数"},"defaultsTabsAria":"智能体默认配置分区","browserTabs":{"overview":"概览","extension":"Chrome 扩展","local":"本地 Chromium","cloakbrowser":"CloakBrowser","cdp":"CDP","cloud":"云端"},"browserTabsAria":"浏览器设置分区","cardModelsTitle":"默认聊天模型","cardModelsSubtitle":"新会话默认使用的主模型。","cardWorkspaceTitle":"工作区与附件","cardWorkspaceSubtitle":"工作目录与入站媒体大小限制","cardBrowserTitle":"浏览器自动化","cardBrowserSubtitle":"browser_use — 导航、快照、点击、截图、流水线等(后端可选 Chrome 扩展、Playwright、CloakBrowser…)","browserEnabledOn":"启用浏览器工具","browserHeadlessOn":"无头模式(不显示浏览器窗口)","browserAllowPrivateOn":"允许内网/私有 URL","browserDialogPolicyMustRespond":"智能体必须响应","browserDialogPolicyAutoDismiss":"自动关闭","browserDialogPolicyAutoAccept":"自动接受","browserBackendLocal":"本地(Playwright)","browserBackendCdp":"CDP(远程)","browserBackendCloud":"云端服务","browserBackendExtension":"Chrome 扩展","browserBackendCloakBrowser":"CloakBrowser","browserCloudProviderLocal":"本地(Playwright)","browserCloudProviderBrowserbase":"Browserbase","browserCloudProviderBrowserUse":"Browser Use","browserExtensionConnected":"已连接","browserExtensionDisconnected":"未连接","browserExtensionWaiting":"等待连接…","browserExtensionServerOff":"服务未启动","browserPlaywrightGuideTitle":"本地 Playwright 需要先安装 Chromium","browserPlaywrightGuideDesc":"选择本地(Playwright)时,Chromium 需要安装在网关所在机器。可以点击安装,也可以登录网关机器手动执行安装命令。","browserPlaywrightInstall":"安装","browserPlaywrightInstalling":"安装中…","browserPlaywrightInstalled":"Chromium 已安装","browserPlaywrightInstallFailed":"Chromium 安装失败","browserPlaywrightManualInstall":"手动安装命令","browserCloakGuideTitle":"首次使用前请先下载 CloakBrowser","browserCloakGuideDesc":"CloakBrowser 会提供反指纹 Chromium。保存后,网关会按配置使用它;也可以先在终端执行安装命令完成下载。","browserCloakDownload":"下载","browserCloakInstalling":"下载中…","browserCloakInstalled":"CloakBrowser 已下载","browserCloakInstallFailed":"CloakBrowser 下载失败","browserCloakOpen":"打开浏览器","browserCloakOpening":"正在打开…","browserCloakOpenReused":"已连接到运行中的浏览器 · 端口 {{port}}","browserCloakOpenLaunched":"已打开 · 端口 {{port}}","browserCloakProfileLabel":"用户资料","browserCloakProfileAgentHint":"使用已保存配置中的 profile,与智能体运行时一致。修改路径或 profile 选项后请先保存。","browserCloakRuntimeRunning":"运行中 · 端口 {{port}}","browserCloakRuntimeOff":"未运行","browserCloakTemporaryProfileHint":"已启用临时资料 — 每次启动使用新的 profile","browserInstallPhaseStarting":"准备中…","browserInstallPhaseDownloading":"下载中…","browserInstallPhaseDownloadingPercent":"下载中… {{percent}}%","browserInstallPhaseVerifying":"校验 SHA-256…","browserInstallPhaseExtracting":"解压中…","browserInstallPhaseRunning":"安装中…","browserInstallPhaseReady":"即将完成…","browserInstallCancel":"取消","browserInstallCancelling":"取消中…","browserInstallCancelled":"安装已取消","browserCloakKeepOpenOn":"任务之间保持浏览器常驻","browserCloakTemporaryProfileOn":"每次使用临时用户资料","browserHumanizeOn":"模拟更自然的鼠标、键盘与滚动","browserHumanPresetCareful":"更稳妥(推荐)","browserHumanPresetDefault":"标准","browserModeLocalShort":"本地 Chromium","browserModeCloakShort":"CloakBrowser","browserModeCdpShort":"CDP","browserModeCloudShort":"云端","browserModeExtShort":"扩展","browserModeLocalTagline":"网关机器自带的 Playwright Chromium","browserModeCloakTagline":"反指纹 Chromium,适合隐身自动化","browserModeCdpTagline":"驱动本机一个可调试 Chrome","browserModeCloudTagline":"Browserbase / Browser Use 远程浏览器","browserModeExtTagline":"桥接真实用户的 Chrome 扩展","browserDisabledHint":"启用浏览器工具后,可选择连接方式并配置后端。","browserDocsLink":"浏览器工具文档","browserSetupTitle":"快速开始","browserSetupSubtitle":"选择一种连接方式 — 启用浏览器工具后随时可改。","browserSetupRecommended":"推荐","browserSetupSelect":"使用此方式","browserSetupExtTitle":"Chrome 扩展","browserSetupExtDesc":"桥接日常 Chrome,适合需要已登录会话的网站。","browserSetupLocalTitle":"本地 Playwright","browserSetupLocalDesc":"在网关主机运行 Chromium(可无头)。安装一次后保存即可。","browserSetupCloudTitle":"云端浏览器","browserSetupCloudDesc":"Browserbase 或 Browser Use — 无需在本机安装 Chromium。","browserStatusStripBackend":"当前连接","browserWorkspaceExtSubtitle":"安装扩展、启动桥接,并在 Chrome 中完成连接。","browserWorkspaceLocalSubtitle":"在网关主机安装 Chromium,以本地运行 Playwright。","browserWorkspaceCloakSubtitle":"下载 CloakBrowser 并调整反指纹选项。","browserWorkspaceCdpSubtitle":"启动或通过 CDP 连接可调试的 Chrome。","browserWorkspaceCloudSubtitle":"使用 API 凭证连接 Browserbase 或 Browser Use。","browserBehaviorShow":"运行与交互","browserBehaviorHide":"收起运行与交互","browserBehaviorHint":"无头模式与 JavaScript 对话框处理,对所有后端生效。","browserSecurityShow":"安全与限制","browserSecurityHide":"收起安全与限制","browserSecurityHint":"内网 URL 访问与单命令超时。云元数据端点始终被拦截。","browserPickerTitle":"生效的浏览器","browserPickerSubtitle":"选择智能体运行时使用的后端。各后端的详细配置在对应 Tab 中设置。","browserGoToConfigure":"前往配置","browserConfiguringHeader":"正在配置:{{mode}}","browserSelectedBadge":"已选中","browserStatusReady":"就绪","browserStatusNotInstalled":"未安装","browserStatusChecking":"检测中…","browserStatusUnknown":"未知","browserStatusError":"错误","browserAdvancedShow":"高级设置","browserAdvancedHide":"收起高级设置","browserReinstall":"重新安装","browserConfirmDownloadTitle":"下载外部二进制","browserConfirmDownloadBody":"即将从 {{url}} 下载 CloakBrowser {{version}}(平台 {{platform}}),解压前会做 SHA-256 校验。","browserConfirmDownloadConfirm":"下载并安装","browserConfirmDownloadCancel":"取消","browserCloakSha256Skipped":"当前平台尚未在 manifest 中提供 SHA-256,安装时不会做完整性校验。","browserCloakAdvancedShow":"路径与指纹","browserCloakAdvancedHide":"收起路径与指纹","browserCloakAdvancedHint":"二进制缓存、自定义可执行文件、时区/语言模拟、WebRTC IP 及额外 Chromium 启动参数。","browserCdpLaunchLocal":"在本机启动可调试 Chrome","browserCdpLaunchLocalDesc":"由网关帮你 spawn 一个带 --remote-debugging-port 的 Chrome;窗口会一直保留,直到点击「停止」。","browserCdpLaunching":"启动中…","browserCdpStopLocal":"停止本机 Chrome","browserCdpLaunchedAtPort":"已启动,监听端口 {{port}} — 下方端点已自动填入。","browserCdpTestConnection":"测试连接","browserCdpTesting":"测试中…","browserCdpReachable":"可达 — {{browser}}","browserCdpUnreachable":"不可达:{{error}}","browserCdpLoopbackOnly":"安全起见,只允许 loopback 端点(127.0.0.1 / localhost / ::1)。","browserCdpChromePath":"Chrome 可执行路径(可选)","browserCdpChromePathDesc":"可选项。留空时优先用 Playwright Chromium,再回落到系统 Chrome / Chromium。","browserCloudTestConnection":"测试连接","browserCloudTestOk":"连接成功 ✓","browserCloudTestFailed":"失败:{{error}}","browserBinaryPathWarning":"⚠ 网关会以自身权限执行此路径下的二进制,仅在你信任来源时填写。","browserCacheDirHomeOnly":"必须在用户家目录之下(例如 ~/.xopc/bin)。","browserExtensionDownloadHint":"在真实 Chrome 中加载 xopc 扩展,通过 WebSocket 与网关桥接。","browserExtensionInstall":"安装到本地","browserExtensionInstalling":"安装中…","browserExtensionInstalled":"扩展已复制到","browserExtensionOpenChrome":"打开浏览器扩展页","browserExtensionCopyPath":"复制路径","browserExtensionRevealFolder":"打开文件夹","browserExtensionPathCopied":"路径已复制。","browserExtensionPathCopyFailed":"无法复制路径,请手动选择路径复制。","browserExtensionFolderOpened":"已在 Finder/资源管理器中打开文件夹。","browserExtensionNeedsChromeReload":"xopc 已更新磁盘上的扩展。请打开 chrome://extensions,在 xopc 扩展上点击「重新加载」。","browserExtensionInstallGuideTitle":"安装清单","browserExtensionChecklistProgress":"已完成 {{done}}/{{total}}","browserExtensionChecklistDone":"已完成:","browserExtensionChecklistPending":"待完成:","browserExtensionInstallStep1":"点击上方「安装到本地」,将扩展复制到本机目录。","browserExtensionInstallStep2":"打开浏览器扩展页(Chrome 或 Edge)→ 开启「开发者模式」→ 点击「加载已解压的扩展程序」→ 选择下方文件夹。","browserExtensionInstallStep2FolderLabel":"扩展文件夹","browserExtensionInstallStep3":"点击「启动桥接」,在浏览器工具栏的 xopc 扩展弹窗中点击连接。","browserExtensionStartBridge":"启动桥接","browserExtensionStarting":"启动中…","browserExtensionStopBridge":"停止桥接","browserExtensionDisconnect":"断开扩展","browserExtensionPortConflict":"端口 {{port}} 已被占用。若为本网关桥接,请点击「停止桥接」;否则请更换端口或结束占用进程。","browserExtensionStartHint":"立即启动 WebSocket 桥接,无需先保存配置即可完成扩展配对。桥接会一直运行直到你点击「停止」。","cardGenerationTitle":"采样与工具","cardGenerationSubtitle":"输出上限(Token)、随机性与工具调用轮数","cardBehaviorTitle":"推理与输出","cardBehaviorSubtitle":"思考深度、推理可见性与详细程度","label":{"model":"模型","modelFallbacks":"备用模型","typedModels":"模型角色","smallModel":"小模型","smallModelFallbacks":"小模型备用链","imageModel":"图像理解模型","imageModelFallbacks":"图像理解备用模型","imageGenerationModel":"图像生成模型","imageGenerationModelFallbacks":"图像生成备用模型","mediaMaxMb":"图像加载上限 (MB)","workspace":"工作区","browserEnabled":"浏览器工具","browserHeadless":"无头模式","browserAllowPrivateUrls":"允许私有 URL","browserCommandTimeout":"命令超时(秒)","browserBackend":"后端模式","browserCloudProvider":"云端服务商","browserCloudApiKey":"API Key","browserCloudProjectId":"Browserbase 项目 ID","browserCloudRegion":"云端区域","browserCdpUrl":"CDP 端点 URL","browserExtensionPort":"扩展端口","browserExtensionHost":"扩展主机","browserExtensionConnectionTimeout":"连接超时(秒)","browserCloakKeepOpen":"保持常驻","browserCloakTemporaryProfile":"临时资料","browserCloakCacheDir":"下载缓存目录","browserCloakBinaryPath":"浏览器路径","browserCloakTimezone":"时区","browserCloakLocale":"语言区域","browserCloakWebrtcIp":"WebRTC 公网 IP","browserCloakFingerprintPlatform":"指纹平台","browserCloakExtraArgs":"额外 Chromium 参数","browserHumanize":"拟人化操作","browserHumanPreset":"操作节奏","browserDialogPolicy":"对话框处理策略","browserDialogTimeout":"对话框超时(秒)","maxTokens":"最大 Token 数","temperature":"温度","maxToolIterations":"最大工具调用轮数","thinkingDefault":"思考级别","reasoningDefault":"推理可见性","verboseDefault":"详细程度"},"desc":{"model":"新会话的默认模型。","modelFallbacks":"主模型在瞬时重试后仍失败时,按顺序尝试。各服务商均需配置 API Key。","typedModels":"为 Workflow 或内部任务设置命名模型角色,如 small、large、vision。","smallModel":"可选的更快/更便宜模型档位,适合轻量工作流步骤;留空则回退到主模型。","smallModelFallbacks":"小模型主选失败时按顺序尝试。各服务商均需配置 API Key。","imageModel":"可选,用于图像理解 / 视觉。下列仅展示网关判定为接受图像输入的模型。","imageModelFallbacks":"主视觉模型失败时按顺序尝试。下列仅展示标记为支持图像输入的模型。","imageGenerationModel":"可选,用于 image_generate。下列仅展示网关判定为已配置 API 凭证的图像生成服务商。","imageGenerationModelFallbacks":"主图像生成模型失败时按顺序尝试。下列仅展示已配置凭证的图像生成服务商。","mediaMaxMb":"图像工具加载单张图片时的最大体积。","workspace":"智能体读写文件的工作目录。","browserEnabled":"向模型暴露 browser_use 浏览器自动化工具(具体浏览器由下方「后端模式」决定)。","browserHeadless":"默认关闭:在网关机器上显示 Chromium 窗口。开启后为无头/后台运行(不显示窗口)。","browserAllowPrivateUrls":"跳过导航时的私有 IP 拦截。云元数据端点(169.254.169.254 等)始终被拦截。","browserCommandTimeout":"单条浏览器命令(导航、点击等)的最大秒数。默认 30。","browserBackend":"连接模式:本地 Playwright、远程 CDP、云端服务或 Chrome 扩展桥接。","browserCloudProvider":"云端服务商:Browserbase 或 Browser Use。可在这里直接填写 API Key;也兼容环境变量 BROWSERBASE_API_KEY / BROWSER_USE_API_KEY。","browserCloudApiKey":"保存在网关配置中。留空则使用进程环境变量;已保存的密钥会以掩码显示。","browserCloudProjectId":"Browserbase 可选项目 ID;留空时使用 BROWSERBASE_PROJECT_ID 或服务商默认值。","browserCloudRegion":"可选。服务商支持区域时传入;留空使用默认区域。","browserCdpUrl":"Chrome DevTools Protocol 的 WebSocket 端点(如 ws://localhost:9222)。仅在 CDP 模式下使用。","browserExtensionPort":"Chrome 扩展桥接的 WebSocket 端口。默认 19820。","browserExtensionHost":"Chrome 扩展桥接的主机地址。默认 127.0.0.1。","browserExtensionConnectionTimeout":"网关等待扩展连接的最长时间(秒)。默认 30。","browserCloakKeepOpen":"复用同一个 CloakBrowser 进程,减少后续任务启动时间。默认开启。","browserCloakTemporaryProfile":"每次启动时使用临时用户资料目录,关闭后清理。适合隔离测试。","browserCloakCacheDir":"可选。CloakBrowser 根目录(二进制与 profiles);留空使用 ~/.xopc/bin/cloakbrowser。","browserCloakBinaryPath":"可选。已下载的 CloakBrowser/Chromium 可执行文件路径;通常位于 ~/.xopc/bin,填写后跳过自动下载。","browserCloakTimezone":"可选,模拟的 IANA 时区(如 America/New_York)。","browserCloakLocale":"可选,模拟的语言区域(如 en-US)。","browserCloakWebrtcIp":"可选,用于 WebRTC 泄露防护的公网 IP。","browserCloakFingerprintPlatform":"可选,指纹模拟的平台标识(如 windows、macos)。","browserCloakExtraArgs":"每行一个 Chromium 启动参数。相同 --key= 前缀会覆盖默认值。","browserHumanize":"使用贝塞尔鼠标轨迹、逐字输入和滚动节奏,降低自动化痕迹。","browserHumanPreset":"选择操作节奏;更稳妥会慢一些但更接近真人操作。","browserDialogPolicy":"JS 对话框(alert/confirm/prompt)的处理方式:智能体必须响应、自动关闭或自动接受。","browserDialogTimeout":"未处理的对话框在自动策略下的等待秒数。默认 300。","maxTokens":"模型回复的最大 Token 数。","temperature":"随机性(0–2)。","maxToolIterations":"单条用户消息内最多进行多少轮工具调用。","thinkingDefault":"新会话的默认思考级别。","reasoningDefault":"是否在聊天界面展示模型推理。若会话曾设置 /reasoning 等,会覆盖此默认直至清除会话配置。","verboseDefault":"智能体在日志与工具细节上的详细程度,不控制聊天中的推理/思考区块;若要隐藏推理请使用「推理可见性」。"},"addModelFallback":"添加备用模型","removeModelFallback":"移除备用模型","addTypedModel":"添加模型角色","removeTypedModel":"移除模型角色","typedModelIdLabel":"角色 ID","typedModelDescriptionLabel":"描述","typedModelIdPlaceholder":"small","typedModelDescriptionPlaceholder":"可选说明","typedModelsInvalidId":"每个模型角色需要有效的 id(小写字母、数字、连字符、下划线)。","typedModelsDuplicateId":"模型角色 id 重复。","typedModelsInvalidModel":"每个模型角色需要 provider/model 格式的模型引用。","setDefaultWorkspace":"设为默认","visionRegistryEmpty":"当前已配置的服务商下,没有标记为支持图像输入的模型。可在 models.json 中为模型设置包含 \\"image\\" 的 `input`,或选择上游目录中声明支持图像的模型。","visionOutOfFilterNote":"当前模型列表未将该模型标为支持图像;建议尽量选择带图像能力的模型。","imageGenRegistryEmpty":"当前没有已配置 API 凭证的图像生成服务商。请在配置或环境变量中填写对应密钥(如 OpenAI)后刷新。","imageGenOutOfFilterNote":"该模型所属服务商未配置凭证;在配置完成或改选已配置的服务商之前,image_generate 将无法使用该模型。","reasoning":{"off":"关闭","on":"开启","stream":"流式"},"verbose":{"off":"关闭","on":"开启","full":"完整"},"advanced":{"advancedOptionsShow":"高级选项","advancedOptionsHide":"收起高级选项","cardLimitsTitle":"单轮限制与可靠性","cardLimitsSubtitle":"单轮最大耗时、重试与工具连续失败次数。","maxTaskDurationMs":"单轮最长时间(分钟)","maxTaskDurationMsDesc":"单条用户消息内(模型 + 工具)墙钟上限。留空用服务端默认。范围 1–240 分(1 分–4 小时)。","maxTaskDurationPlaceholder":"如 30(留空为默认)","maxRequestsPerTurn":"每轮最大请求数","maxRequestsPerTurnDesc":"单条用户消息内大模型重试/请求尝试上限(默认 50)。","maxToolFailuresPerTurn":"每轮最大工具失败次数","maxToolFailuresPerTurnDesc":"连续工具错误达到该值后放弃(默认 3)。","goalsCheckLink":"目标检查 → 目标推进规则","goalsCheckLinkHint":"清单检查默认值在「设置 → 自动化 → 目标推进规则」中配置。","cardCompactionTitle":"上下文压缩","cardCompactionSubtitle":"在上下文中按策略压缩较早内容以适配窗口。","compactionEnabled":"启用压缩","compactionEnabledDesc":"关闭后不按策略压缩(可能更占上下文)。","compactionEnabledOn":"启用压缩","compactionMode":"模式","compactionModeDesc":"default:标准;safeguard:更谨慎的启发式。","compactionModeDefault":"default","compactionModeSafeguard":"safeguard","reserveTokens":"保留 token","reserveTokensDesc":"压缩后为目标模型预留的头部空间(默认 8000)。","triggerThreshold":"触发阈值","triggerThresholdDesc":"已用上下文比例达到该值时考虑压缩(0.5–0.95)。","minMessagesBeforeCompact":"最早压缩前消息数","minMessagesBeforeCompactDesc":"达到该条数后才允许开始压缩(默认 10)。","keepRecentMessages":"保留最近消息数","keepRecentMessagesDesc":"尾部始终完整保留的最近轮次(默认 5)。","evictionWindow":"逐出窗口","evictionWindowDesc":"可参与先摘要/逐出策略的历史比例(0.1–0.5)。","retentionWindow":"保留窗口","retentionWindowDesc":"参与保留策略的轮次宽度(3–20)。","cardPruningTitle":"工具结果裁剪","cardPruningSubtitle":"在送入模型前截断过长的工具输出。","pruningEnabled":"启用裁剪","pruningEnabledDesc":"关闭后整段工具结果可能入模型(成本更高)。","pruningEnabledOn":"启用裁剪","maxToolResultChars":"单条工具结果最大字符","maxToolResultCharsDesc":"单条工具结果默认上限(默认 10000)。","headKeepRatio":"保留开头比例","headKeepRatioDesc":"裁剪时从开头保留比例(0–1,默认 0.3)。","tailKeepRatio":"保留结尾比例","tailKeepRatioDesc":"从结尾保留比例(0–1,默认 0.3)。","cardMemoryTitle":"记忆(精选与外部)","cardMemorySubtitle":"智能体笔记、全局用户记忆与可选外部 provider。","memoryEnabled":"记忆功能","memoryEnabledDesc":"总开关:精选记忆快照、工具与外部预取。","memoryEnabledOn":"启用","useEnhancedSystem":"增强 system","useEnhancedSystemDesc":"关闭时仅使用工作区内的角色配置(不附加额外记忆快照)。","useEnhancedSystemOn":"使用增强 system","userProfileEnabled":"包含用户记忆","userProfileEnabledDesc":"在快照中纳入全局 user/MEMORY.md。","userProfileEnabledOn":"包含用户侧写","memoryProvider":"外部记忆 provider","memoryProviderDesc":"选 none / stub 或留空视为不设置。","memoryProviderUnset":"(不设置)","injectionFrequency":"外部预取注入","injectionFrequencyDesc":"将预取记忆注入到用户消息上下文的频率。","injectionFrequencyUnset":"(不设置)","injectionEveryTurn":"每轮(配合 cadence)","injectionFirstTurn":"仅首轮","memoryCharLimit":"记忆字符上限","memoryCharLimitDesc":"精选记忆快照最大字符数(可选)。","userCharLimit":"用户侧写字符上限","userCharLimitDesc":"全局用户记忆区块最大字符数(可选)。","contextCadence":"上下文节奏","contextCadenceDesc":"每轮注入时:在轮次 1、1+N、… 注入(最小 1)。","dialecticCadence":"对话节奏(预留)","dialecticCadenceDesc":"预留,尚未接入。设置时最小为 1。","cardSessionSearchTitle":"会话搜索(转写)","cardSessionSearchSubtitle":"session_search 工具中用于历史会话摘要的模型。","sessionSearchSummaryModel":"摘要模型","sessionSearchSummaryModelDesc":"如 openai/gpt-4o-mini。留空用运行时的默认/启发式。","cardWebExtractTitle":"web_extract(LLM 提取)","cardWebExtractSubtitle":"网页转 Markdown 提取的可选模型与长度。","webExtractModel":"模型","webExtractModelDesc":"留空用默认提取模型/启发式。","webExtractMaxLength":"最大长度","webExtractMaxLengthDesc":"提取文字最大长度(可选)。","cardDelegateTitle":"子智能体与代码执行","cardDelegateSubtitle":"可选:delegate_task 与沙箱 execute_code。","delegateEnabled":"子任务委托 delegate_task","delegateEnabledDesc":"开启后,若运行环境支持,可使用子智能体。","delegateEnabledOn":"开启","executeCodeEnabled":"execute_code(沙箱)","executeCodeEnabledDesc":"开启后,若运行环境允许,可见沙箱代码工具。","executeCodeEnabledOn":"开启","cardSystemPromptTitle":"系统提示词","cardSystemPromptSubtitle":"可选覆盖默认系统上下文;与智能体级合并,条目级优先。","cardSkillsTitle":"可用技能","cardSkillsSubtitle":"非空时仅向提示中暴露列表中的 <available_skills>。","systemPromptOverride":"系统提示覆盖","systemPromptOverrideDesc":"可选全量覆盖;与智能体级合并(条目优先)。留空可清除。","systemPromptPlaceholder":"","skillsAllowlist":"可用技能名","skillsAllowlistDesc":"只有勾选的技能会进入 <available_skills>。留空表示默认上下文保持干净;共享配置可声明自己的可见技能。","skillsAllowlistModeAll":"无默认技能","skillsAllowlistModeRestrict":"仅已选技能","skillsAllowlistNotInCatalog":"不在目录中","addSkillName":"添加技能名","removeListItem":"移除此行","cardToolsDisableTitle":"工具 — 全局禁用","cardToolsDisableSubtitle":"为智能体配置或共享配置设置内建工具权限(如 exec_command、web_search)。","toolsDisableFieldLabel":"内建工具","toolsDisableHint":"勾选表示默认智能体可使用该工具;取消勾选则全局禁用。与「智能体」中按条目的禁用会合并生效。","toolsDisableLoadingBuiltin":"正在加载内建工具列表…","toolsDisableEmptyBuiltin":"网关未返回任何内建工具。","toolsDisableNotInBuiltin":"不在内建列表中","toolsDisableQuickActionsLabel":"快捷操作","toolsDisableQuickEnableAll":"全部允许","toolsDisableQuickDisableAll":"全部禁用","toolsDisableQuickReadOnlyWorkspace":"工作区只读","toolsDisableQuickHighRiskOff":"关闭高危","toolsDisableQuickNoOutbound":"禁止出站","addToolName":"添加工具名","cardParamsTitle":"Params(JSON)","cardParamsSubtitle":"给扩展的任意键值,必须为 JSON 对象。","paramsJson":"Params 对象","paramsJsonDesc":"如 {\\"myFlag\\": true}。清空可去掉配置文件中的 params。","paramsInvalidJson":"Params 必须是有效 JSON 对象。请检查花括号、引号等。"},"modelsOverrideTitle":"全局模型角色","modelsOverrideHint":"模型用途属于每个智能体配置;可复用的选择应沉淀到共享配置。","modelResolutionGlobal":"共享配置","modelResolutionAgent":"智能体覆盖","modelResolutionSession":"当前会话选择","modelResolutionUnset":"未设置","modelResolutionAgentInherits":"当智能体使用共享配置时,从共享配置继承。","modelResolutionSessionSelectable":"聊天页可临时选择会话模型。"}'),agentsSettings:JSON.parse('{"title":"智能体","subtitle":"管理每个智能体的身份、工作区、模型、工具、技能与路由。","needToken":"请先保存网关访问令牌后再管理智能体。","loadError":"加载智能体列表失败","saveError":"请求失败","loading":"加载中…","tuiDefaultAgentTitle":"TUI 默认 Agent","tuiDefaultAgentHint":"仅用于未指定 Agent 的新终端 TUI 会话;不会影响现有会话或网关路由。","tuiDefaultAgentUnavailable":"已配置的 Agent \\"{{agentId}}\\" 当前不可用。请选择另一个 Agent 保存。","tuiDefaultAgentInheritOption":"跟随全局默认({{agent}})","tuiDefaultAgentInheritedStatus":"当前跟随全局默认:{{agent}}","tuiDefaultAgentExplicitStatus":"当前显式设置为:{{agent}}","tuiDefaultAgentSave":"保存","tuiDefaultAgentSaving":"保存中…","tuiDefaultAgentSaved":"已保存","tuiDefaultAgentInvalid":"请选择一个可用 Agent 作为 TUI 默认值。","selectAgent":"智能体","selectAgentHint":"选择要编辑的智能体。角色配置文件(SOUL.md、IDENTITY.md 等)从该智能体目录 `agents/<id>/profile/` 读取。","agent":"智能体","defaultBadge":"默认","globalDefaultBadge":"全局默认","tuiDefaultBadge":"TUI 默认","tuiDefaultInheritedBadge":"TUI 默认 · 继承","agentCardActions":"Agent 操作","setGlobalDefault":"设为全局默认","setTuiDefault":"设为 TUI 默认","inheritTuiDefault":"TUI 跟随全局默认","setDefault":"设为默认","editAgent":"运行配置","editAgentHint":"修改模型、工作区等配置,保存后将更新网关的 agents.list。","capabilityPresetsTitle":"能力方案","capabilityPresetsHint":"全局基线最先应用;其他能力方案按顺序叠加,最后应用当前智能体自身的设置。","capabilityPresetsManage":"管理能力方案","capabilityPresetsGlobalDefault":"全局基线","capabilityPresetsGlobalDefaultHint":"最先应用到所有智能体,作为其他能力方案和智能体自身设置的基础。","capabilityPresetsEmpty":"当前智能体没有使用共享配置。","capabilityPresetsEmptyAdditional":"除全局基线外,当前智能体没有添加其他能力方案。","capabilityPresetAdd":"添加能力方案","capabilityPresetRemove":"移除能力方案","capabilityPresetMoveUp":"上移能力方案","capabilityPresetMoveDown":"下移能力方案","createCapabilityPlansTitle":"能力方案","createCapabilityPlansHint":"可选。全局基线始终生效;选择这个智能体还需要使用的其他能力方案。","inheritance":{"title":"配置来源","subtitle":"查看关键运行字段来自共享配置还是本智能体单独设置。","editDefaultsLink":"编辑模型策略","modelLabel":"主模型","workspaceLabel":"工作区","badgeInherit":"使用共享配置","badgeOverride":"已覆盖","inheritsValue":"共享:{{value}}","unset":"未设置"},"displayName":"名称","agentDescription":"描述","agentDescriptionPlaceholder":"简短说明,会显示在智能体卡片和选择器中(可选)。","editLocalizedText":"编辑中英文内容","hideLocalizedText":"收起中英文内容","languageChinese":"中文","languageEnglish":"英文","workspacePath":"Markdown 工作区","modelPrimary":"模型(主)","modelSmall":"小模型","modelSmallHint":"可选的更快/更便宜模型档位,适合轻量工作流步骤;留空则使用共享模型用途。","modelSmallDefaultsPrefix":"共享:","modelClear":"清除","save":"保存","discard":"放弃","removeFromConfig":"从配置移除","purgeDisk":"移除并删除数据","addAgent":"添加智能体","addAgentHint":"与 CLI agents add 相同:创建目录并写入角色配置模板。","newAgentLabel":"名称","newAgentIdOptional":"Agent ID(可选)","newAgentIdPlaceholder":"留空则根据显示名称生成","newAgentIdRules":"1–64 个字符:字母、数字、下划线、连字符;须以字母或数字开头。勿使用保留 id(如 main、con)。","newWorkspace":"工作区目录(必填)","newModelOptional":"模型(可选)","create":"创建智能体","addAgentAria":"添加智能体","createModalCancel":"取消","closeDialogAria":"关闭","filesHint":"智能体的身份配置文件(SOUL、IDENTITY 等)。编辑后自动保存,可用「预览」查看渲染效果。","filesLoading":"正在加载文件列表…","filesEmpty":"暂无文件。","pickFile":"请选择要编辑的文件。","saveFile":"保存文件","filesMarkdownEdit":"编辑","filesMarkdownPreview":"预览","filesAutoSaveHint":"编辑后自动保存。","filesSavingStatus":"保存中…","missing":"缺失","confirmDelete":"从配置中移除此智能体?相关路由绑定会被清除。","confirmDeletePurge":"移除此智能体并删除其工作区与 ~/.xopc/agents/<id> 数据?此操作不可恢复。","purgeConfirmLabel":"输入 agentId 以确认","purgeConfirmPlaceholder":"请输入 {{agentId}} 以确认","purgeConfirmHint":"此操作不可恢复。需完整输入 {{agentId}} 才能启用删除。","toolsTitle":"内置工具","toolsHint":"配置本智能体的工具权限;被共享配置阻止的工具不能在此处单独启用。","toolsSave":"保存工具禁用","toolsClearEntry":"清除本智能体的额外禁用","toolsLockedByPreset":"已被共享配置阻止","toolsDisableGroups":{"unknown":"自定义(不在内置列表)","code-intelligence":"代码智能","workspace":"工作区与搜索","execution":"执行","web":"网络","messaging":"通道与出站","memory":"记忆与会话","media":"视觉与生成","extensions":"扩展","mcp":"MCP(bundle)","misc":"其他内置"},"toolDescriptions":{"code_search":"搜索已索引的符号、定义、实现、路由和类型。","code_read_symbol":"读取代码搜索返回符号的精确源码。","code_trace":"追踪调用方、被调用方、数据流和跨服务路径。","code_impact":"将 Git 变更映射到受影响符号和影响范围。","code_architecture":"汇总包、边界、分层、入口、热点和图聚类。","read_file":"读取工作区内的文本与小文件(路径限制在工作区沙箱内)。","write_file":"在工作区创建新文件或覆盖已有文件。","apply_patch":"应用严格的多文件补丁,用于聚焦修改源码。","list_dir":"列出工作区某目录下的文件与子目录。","grep":"用正则搜索文件内容(类似 ripgrep)。","find":"按文件名或 glob 在工作区内查找文件。","exec_command":"在与工作区关联的环境中执行命令,权限高;只读或更保守的智能体可关闭。","update_plan":"更新当前轮次可见的多步骤编程计划。","web_search":"检索公开网页,获取模型训练截止之后的事实与资料。","web_fetch":"请求 URL 并读取页面文本供模型使用。","browser_use":"统一的浏览器自动化工具,用于导航、快照、点击、输入、截图与浏览器流水线。","send_message":"在已连接的通道上发送出站聊天内容(如 Telegram、CLI、网关等)。","send_media":"通过通道发送图片或其他媒体附件。","memory_search":"搜索为本智能体建立的记忆与笔记索引。","memory_get":"按 ID 读取某条记忆或片段。","curated_memory":"读取或更新智能体主目录下的精选 Markdown 记忆。","session_search":"在已保存的会话记录与按会话摘要中搜索。","image":"分析或描述图片(视觉),可来自工作区或当前对话。","image_generate":"使用已配置的图像 / 文生图模型生成图片。","extensions":"启用扩展注册的工具;关闭则屏蔽所有扩展工具。","bundle-mcp":"从已配置的 MCP 服务器加载工具(全局 mcp.servers 与扩展 .mcp.json)。"},"skillsTitle":"可用技能","skillsHint":"这些技能会出现在该智能体的 Chat / 菜单和 <available_skills> 中。其他技能不会被该智能体看到。「使用共享配置」采用共享设置;「选择技能」写入本智能体的技能设置。","skillsInherit":"使用共享配置","skillsCustomize":"选择技能","skillsSave":"保存技能","modelsTabTitle":"模型角色","modelsTabHint":"为当前智能体配置 Workflow 命名模型用途,或使用共享模型用途。","modelsInherit":"使用共享模型用途","modelsCustomize":"编辑全局角色","modelsResetInherit":"恢复模型策略","modelsDefaultsLink":"编辑配置","modelsPresetLabel":"共享:","modelsEffectiveLabel":"当前生效:","modelsSave":"保存模型角色","typedModelIdLabel":"角色 ID","typedModelDescriptionLabel":"描述","typedModelPrimaryModelLabel":"主模型","typedModelFallbackModelsLabel":"Fallback 顺序","typedModelAddFallback":"添加 fallback","typedModelRemoveFallback":"移除 fallback","typedModelFallbackPlaceholder":"选择 fallback 模型","typedModelFallbackEmptyHint":"暂无 fallback 模型。添加后会在主模型失败时按顺序尝试。","addTypedModel":"添加模型角色","removeTypedModel":"移除模型角色","typedModelRecommendedTitle":"推荐用途","typedModelCustomTitle":"自定义角色","typedModelDefaultBadge":"默认","typedModelVisionBadge":"视觉","typedModelVisionAutoHint":"未手动配置图片理解模型时,这个支持图片输入的角色可在运行时自动用于图片理解。","addTypedModelPurpose":"添加{name}","typedModelNoCustomRoles":"暂无自定义角色。","typedModelRoleNames":{"deep":"深度模型","fast":"快速模型","cheap":"低成本模型","code":"代码模型","review":"审阅模型"},"typedModelRoleDescriptions":{"deep":"复杂推理、规划、长上下文任务。","fast":"短回复、轻量判断、低延迟任务。","cheap":"批处理、摘要、成本敏感任务。","code":"代码理解、编辑、测试与架构分析。","review":"复核、评审、风险检查与结论校验。"},"typedModelIdPlaceholder":"small","typedModelDescriptionPlaceholder":"可选说明","typedModelsInvalidId":"每个模型角色都需要合法 id(小写字母、数字、连字符、下划线)。","typedModelsDuplicateId":"模型角色 id 重复。","typedModelsInvalidModel":"每个模型角色都需要 provider/model 格式的模型引用。","skillsCatalogLoading":"正在加载技能目录…","skillsEmptyCatalog":"目录中暂无技能。","skillsNoDescription":"SKILL.md 元数据中暂无描述。","skillsPresetLabel":"共享技能:","skillsEffectiveLabel":"当前可用技能:","skillsAllFromCatalog":"—","channelsTitle":"路由绑定","channelsHint":"指向本智能体的 config.bindings。删除规则会更新网关上的完整 bindings 数组。","channelsLoading":"正在加载绑定…","channelsNone":"没有指向该智能体的绑定。","channelLabel":"通道","peerIdLabel":"对端 ID(可选)","channelsLoadingChannels":"正在加载通道列表…","channelsManualChannelHint":"网关未返回通道列表。请直接填写通道 id(如 telegram、webchat、gateway)。","channelsDisabledSuffix":"(已禁用)","channelsSessionLabel":"匹配范围","channelsRefreshSessions":"刷新","channelsRefreshSessionsHint":"重新加载该通道的近期会话","channelsLoadingSessions":"正在加载会话…","channelsPeerFromSessions":"从会话选择","channelsPeerAny":"该通道上全部入站","channelsNoSessionsHint":"此通道下暂无会话记录。先发一条消息,或在下方填写自定义对端 id。","channelsCustomPeerHint":"若填写,将覆盖上方会话选择;支持 * 通配,详见会话路由说明。","channelsCustomPeerPlaceholder":"例如 12345 或 *","addBinding":"添加绑定","removeBinding":"移除","cronTitle":"定时任务","cronHint":"隔离会话的定时任务可指定 agentId 作为会话键。未指定 agentId 的任务使用默认智能体,并在选中该智能体时显示。","cronLoading":"正在加载定时任务…","cronNone":"没有匹配的任务。","cronColSchedule":"计划","cronColMessage":"消息","cronColSession":"会话","cronColAgent":"智能体","cronAgentDefault":"默认智能体","cronAgentClear":"恢复默认","navOverview":"概览","navProfile":"身份与行为","navCapabilities":"能力","navRuntime":"运行","navBehavior":"资料","navTools":"工具","navSkills":"技能","navConnections":"连接","navAdvanced":"高级","navConfig":"配置","navDangerZone":"危险操作","configSubtabSources":"来源","configSubtabShared":"共享配置","configSubtabEffective":"生效配置","connectionsTitle":"连接","filesNavAria":"角色配置文件","listSearchPlaceholder":"按名称、ID 或工作区搜索","listEmpty":"没有匹配的智能体。","listNoAgentsYet":"暂无智能体,请先创建一个。","listNewAgentCard":"新建智能体","listChatWithAgent":"聊天","listCustomBadge":"自定义","listNoDescription":"暂无描述。","listModelLabel":"模型","listWorkspaceLabel":"工作目录","listToolsLabel":"工具","listSkillsLabel":"技能","listInheritedValue":"继承默认","listUnsetValue":"未设置","listToolsAllEnabled":"全部启用","listToolsDisabledCount":"已禁用 {{count}} 个","listSkillsCount":"允许 {{count}} 个","builtInAgents":{"assistant":{"name":"智能助手","description":"你的个人智能助手:解答疑问、协助日常事务,并随时与你交流。"},"coding":{"name":"编程专家","description":"编写、调试、重构和测试软件。"},"writing":{"name":"写作助手","description":"根据受众需求起草、编辑和润色内容。"},"research":{"name":"研究助手","description":"研究主题、比较来源并综合结论。"},"data":{"name":"数据分析师","description":"清洗和分析数据,生成可视化并交付报告。"},"creative":{"name":"创意助手","description":"探索视觉方向、提示词、设计评审和创意方案。"}},"editorNavAria":"智能体编辑器分区","capabilitiesHint":"配置这个智能体可以使用什么。工具权限和已选技能属于当前智能体;关于用户的记忆仍由所有智能体共享。","capabilitiesToolsTab":"工具","capabilitiesSkillsTab":"技能","capabilitiesNavAria":"智能体能力","runtimeWorkspaceTitle":"工作目录","runtimeWorkspaceHint":"这个智能体运行时使用的文件目录与 Markdown 工作区。","advancedHint":"查看源文件、继承关系与最终生效配置。这里主要用于高级设置和问题排查。","advancedFilesTab":"角色文件","advancedConfigTab":"配置来源","advancedNavAria":"智能体高级设置","advancedRuntimeCoverageHint":"生效配置展示的是合并后的能力清单;每个字段是否已被实际执行,仍取决于当前运行时的支持情况。","skillsLibraryLink":"技能库","personaHint":"通过表单快速设置智能体身份与个性。需要直接编辑文本时请使用「角色配置」。","personaSectionIdentity":"智能体身份","personaSectionIdentityHint":"你的智能体如何介绍自己","personaSectionUser":"关于你","personaSectionUserHint":"帮助你的智能体更好地了解你","personaSectionSoul":"个性与风格","personaSectionSoulHint":"定义你的智能体如何与你交流","personaName":"名字","personaNamePlaceholder":"例如:小助、星辰、晓彤…","personaCreature":"类型","personaCreaturePlaceholder":"自定义类型…","personaVibe":"风格","personaVibePlaceholder":"自定义风格…","personaEmoji":"签名表情","personaEmojiPlaceholder":"例如 🤖 ✨ 🧠","personaAvatar":"头像","personaAvatarPlaceholder":"URL 或工作区路径","avatarPickerTitle":"智能体头像","avatarOpenSettingsAria":"打开智能体头像设置","avatarRowHint":"选择风格或上传自定义图片。","avatarUploadCustom":"上传自定义图片","avatarStyleAdventurer":"冒险家","avatarStyleRobot":"机器人","avatarStyleLorelei":"洛蕾莱","avatarStyleThumbs":"Thumbs","avatarStyleFunEmoji":"趣味表情","avatarMore":"更多","avatarUploading":"上传中…","avatarUploadFailed":"上传失败,请换一张较小的 PNG、JPEG 或 WebP。","avatarInvalidImage":"请使用 PNG、JPEG 或 WebP 图片。","avatarTooLarge":"图片大小不能超过 512 KB。","personaCallName":"怎么称呼你","personaCallNamePlaceholder":"例如:小明","personaPronouns":"称谓","personaPronounsPlaceholder":"例如:先生、女士、同学","personaTimezone":"时区","personaTimezoneDetect":"自动检测","personaTimezoneCustom":"自定义时区…","personaNotes":"备注","personaNotesPlaceholder":"其他你希望智能体了解的信息…","personaSoulTemplate":"个性模板","personaTemplateHint":"模板用于提供起点;无需切换到单独的“自定义”模式,也可以继续修改下方行为准则。","personaBehaviorEditorLabel":"行为准则(Markdown)","personaSoulCustomEdit":"编辑个性描述 (Markdown)","personaSoulPreview":"预览","personaSoulEdit":"编辑","personaMemoryNote":"你在对话中分享的偏好(如喜欢的食物、习惯等)会被智能体自动记住,无需在这里添加。","sharedUserContextTitle":"关于用户的记忆由所有智能体共享","sharedUserContextHint":"你的个人资料、偏好和长期记忆只需统一管理一次,所有智能体都可使用。本页只修改当前智能体自己的身份与行为。","sharedUserContextLink":"管理用户上下文","personaSaving":"保存中…","personaSaved":"已保存","overviewRuntimeTitle":"运行设置","overviewRuntimeHint":"当前用于新会话的模型和工作区。","overviewCapabilitiesTitle":"能力摘要","overviewCapabilitiesHint":"查看这个智能体能调用的工具、技能、记忆和连接。","overviewConnectionsManaged":"在连接页管理","overviewSharedMemoryLabel":"用户记忆","overviewSharedMemoryValue":"所有智能体共享","dangerZoneTitle":"危险操作","dangerZoneHint":"以下操作不可撤销,请谨慎操作。","dangerZoneBody":"删除配置会让该智能体不再出现在列表中;清除磁盘数据还会移除本地目录和角色文件。","dangerZoneMainUnavailable":"Main 是保底智能体,不能在这里删除。","footerSaveNotApplicable":"没有未保存的更改。","effectiveTitle":"生效配置","effectiveHint":"查看共享配置和本智能体配置合并后的实际运行设置,并确认每项配置来自哪里。","effectiveLoading":"正在加载生效配置…","effectiveError":"无法加载生效配置。","effectiveEmpty":"暂无生效配置数据。","effectivePresetChain":"使用的共享配置","effectiveNoPresets":"未使用共享配置","effectiveModelsTitle":"模型角色","effectiveToolsTitle":"工具权限","effectiveSkillsTitle":"可用技能","effectiveBoundariesTitle":"边界设置","effectiveNoToolPolicies":"没有显式工具权限设置。未列出的工具按系统默认和运行时可用性决定。","presetSetupBadge":"快速设置","presetSetupTitle":"创建预置 Agent 开始使用","presetSetupSubtitle":"选择要创建的 Agent,每个都带有定制化的性格和独立工作空间,创建后可随时修改。","presetSkip":"跳过","presetCreateSelected":"创建 {{count}} 个 Agent","presetCreating":"正在创建…","presetCreatingProgress":"正在创建第 {{current}} 个 / 共 {{total}} 个…","presetSetupComplete":"Agent 创建成功!","presetCreateFailed":"创建 {{name}} 失败:{{message}}","modelsResolutionGlobal":"全局默认","modelsResolutionAgent":"本智能体覆盖","modelsResolutionEffective":"当前生效","modelsResolutionInherits":"继承全局默认","templateSectionTitle":"从模板开始","templateBlank":"空白","templateBlankDesc":"从零开始,使用空白配置。","tryInChat":"去对话验证","tryInChatHint":"保存后打开新对话,立即体验此 Agent。","backToEditor":"返回编辑器","duplicateAgent":"复制","duplicateAgentTitle":"复制 Agent","duplicateAgentHint":"选择后会复制该 Agent 的设置和 Profile 文件,可再改名称、ID 与工作区。","copyFromExistingAgent":"从已有 Agent 复制","copyFromExistingAgentNone":"不复制,创建新 Agent","duplicateName":"{{name}} 的副本","duplicateIdSuffix":"-copy","copyProfileFiles":"复制 Profile 文件(SOUL、IDENTITY 等)","createCopy":"创建副本"}'),goalsSettings:{title:`目标推进规则`,hint:`配置目标的自动检查、执行限制与通知默认设置。`,save:`保存`,discard:`放弃`,saving:`保存中…`,saveError:`保存目标设置失败`,tabsAriaLabel:`Goal 设置分区`,tabJudge:`自动检查`,tabJudgeHint:`配置轮次预算、完成标准生成与自动检查行为。`,tabNotifications:`通知`,tabNotificationsHint:`选择外部通道、生命周期事件和固定通知接收人。`,maxTurns:`单次运行最大轮数`,judgeModelRef:`检查模型`,judgeModelRefPlaceholder:`使用 Agent 默认模型(可选)`,judgeModelRefHint:`可选。留空时,目标运行将使用 Agent 配置的默认模型。`,judgeModelRefUseDefault:`使用 Agent 默认模型`,checklistMode:`清单模式`,checklistDecomposePolicy:`验收标准生成策略`,checklistDecomposePolicyEmptyOnly:`仅空列表时生成`,checklistDecomposePolicySupplementExisting:`首轮后补充已有标准`,checklistDecomposePolicyHint:`补充模式会保留用户填写的标准,并在第一次执行后追加不重复的 AI 标准。`,parseFailures:`最大连续检查失败次数`,judgeTimeoutSec:`检查超时(秒)`,checklistHistoryChars:`清单历史字符数`,checklistHistoryCharsHint:`自动检查可使用的 transcript 历史最大字符数。`,notificationsTitle:`通道通知`,notificationsHint:`把持久化 Goal 的生命周期更新发送到 Telegram 或微信。`,notificationsEnabled:`启用外部 Goal 通知`,notificationsLinkedSessions:`自动通知绑定的 Telegram/微信会话`,notificationsChannels:`绑定通道`,notificationsChannelEnabled:`已启用`,notificationsChannelConfigured:`已配置`,notificationsEvents:`事件`,notificationsTargets:`固定目标`,notificationsAddTarget:`添加目标`,notificationsChatId:`Chat ID`,notificationsAccountId:`账号`,notificationsChooseChat:`选择聊天`,notificationsCustomChat:`自定义 Chat ID…`,notificationsUseKnownChat:`使用已知聊天`,notificationsPaired:`已配对`,notificationsRemoveTarget:`移除目标`,notificationsNoTargets:`没有固定目标。绑定会话仍可接收通知。`}},C={automations:JSON.parse(`{"title":"自动化","subtitle":"当事件发生时,运行智能体或工作流。","refresh":"刷新","new":"新建","createTitle":"创建自动化","create":"创建","editTitle":"编辑自动化","edit":"编辑","save":"保存","cancel":"取消","close":"关闭","none":"无","never":"从未","enabled":"已启用","paused":"已暂停","last":"上次","next":"下次","workflowPrefix":"工作流","loading":"正在加载...","selectRun":"选择一次运行查看结果。","timeline":"技术记录","details":{"created":"创建","started":"开始","duration":"耗时","model":"模型","session":"会话","showDetails":"展开","hideDetails":"收起","eventData":"详情","repairPatch":"修复内容"},"events":{"manualQueued":"手动运行已加入队列","scheduledQueued":"定时运行已加入队列","eventQueued":"事件已触发自动化","runStarted":"自动化开始运行","actionStarted":"正在执行 {kind} 动作","actionStartedFallback":"正在执行动作","actionCompleted":"{kind} 动作已完成","actionCompletedFallback":"动作已完成","actionFailed":"{kind} 动作失败","actionFailedFallback":"动作失败","afterRunStarted":"正在执行运行后步骤","afterRunCompleted":"运行后步骤已完成","afterRunFailed":"运行后步骤失败","runCompleted":"自动化运行已{status}","runCompletedFallback":"自动化运行已完成"},"metrics":{"total":"总数","enabled":"已启用","running":"运行中","next":"下次"},"system":{"title":"系统自动化"},"createMenu":{"draft":"用 AI 起草","template":"从模板创建","blank":"空白创建","templatesTitle":"选择模板"},"dashboard":{"activity":"运行结果","activityDescription":"先看每次自动化产出了什么,需要时再进入对话查看过程。","manage":"自动化","manageDescription":"打开某条自动化,查看配置和运行历史。","needsAttention":"需要处理","latestResult":"最近结果","result":"结果","runHistory":"运行历史","runHistoryDescription":"查看历史运行,并进入每次运行关联的会话或工作流。","openSession":"打开会话","runNow":"立即运行","pause":"暂停","resume":"恢复","delete":"删除","resumed":"已恢复自动化","deleted":"已删除自动化","cancelled":"运行已取消","refreshed":"自动化已刷新","created":"已创建自动化","failures":"失败次数"},"runDetail":{"resultTitle":"执行结果","resultPending":"正在执行,结果完成后会显示在这里。你也可以进入对话查看实时进度。","noResult":"本次运行没有返回可展示的结果。","openConversation":"查看完整对话","openWorkflow":"查看工作流运行","runInfo":"运行信息","technicalEvents":"技术记录","technicalEventsDescription":"用于排查问题的系统事件和原始数据,日常使用无需查看。","eventCount":"{count} 条"},"draft":{"title":"用 AI 起草","subtitle":"描述你想要的结果。xopc 会先起草触发条件、执行动作和安全检查,确认前不会发布。","placeholder":"例如:当目标变成阻塞状态时,让智能体诊断原因并建议下一步。","generate":"生成草案","generating":"生成中...","review":"发布前检查","safety":"安全","assumptions":"假设","risks":"风险","discard":"丢弃","editTitle":"编辑自动化草案","edit":"编辑草案","publish":"发布","approval":"我已检查需要确认的风险,并确认发布这条自动化。"},"repair":{"title":"修复建议","suggest":"生成修复建议","generating":"生成中...","risks":"风险","approval":"我已检查这次修复,并确认应用。","apply":"应用修复"},"suggestions":{"create":"生成自动化草案","manage":"管理","coveredTitle":"已设置自动化","coveredDescription":"已由「{name}」处理。后续匹配事件会自动运行。","noteCreatedTitle":"自动跟进笔记","noteCreatedDescription":"创建新笔记后,让 xopc 自动分类并建议下一步行动。","noteCreatedPrompt":"当创建新笔记时,运行智能体对笔记分类、识别有用的后续行动,并总结可能的任务。触发条件使用 notes 来源的 note.created 事件。保持安全:默认只输出简短建议,除非用户后续确认,否则不要自动改写笔记。","goalBlockedTitle":"自动诊断阻塞","goalBlockedDescription":"当这个目标被阻塞时,让智能体诊断原因并给出下一步具体行动。","goalBlockedPrompt":"当目标变为阻塞状态时,运行智能体诊断阻塞原因并给出下一步具体行动。触发条件使用 goals 来源的 goal.status_changed 事件,payloadMatch status=blocked。参考目标标题:{{title}}。除非用户明确配置,否则不要自动修改目标。","workflowFailedTitle":"自动处理失败运行","workflowFailedDescription":"当这个工作流失败时,让 xopc 检查运行记录并起草修复或重试计划。","workflowFailedPrompt":"当工作流运行以 failed 状态结束时,运行智能体检查工作流运行、总结失败原因,并提出恢复计划。触发条件使用 workflows 来源的 workflow.run.completed 事件,payloadMatch status=failed。参考运行 ID:{{runId}},工作流定义 ID:{{definitionId}}。除非用户明确配置,否则不要自动重试。"},"explain":{"whyRan":"触发来源","whyCovered":"覆盖原因","event":"事件 {eventType}","eventFrom":"来自 {source} 的事件 {eventType}","payloadMatched":"匹配条件:{pairs}","noPayloadFilter":"未限制事件内容","actionAgent":"执行智能体任务","actionWorkflow":"执行工作流 {workflowId}","safetyMode":"安全模式:{mode}","manual":"手动触发","schedule":"定时触发","webhook":"Webhook 触发","triggerMatched":"触发条件已匹配"},"feedback":{"title":"相关自动化运行","open":"打开","chat":"会话","workflow":"工作流","rerun":"重新运行","pause":"暂停自动化","working":"处理中...","rerunQueued":"已加入运行队列","paused":"已暂停自动化","repairApplied":"修复已应用","repairAppliedAndQueued":"修复已应用,已加入运行队列","applyAndRerun":"应用并重新运行","actionFailed":"操作失败","saveInsight":"保存洞察","savingInsight":"保存中...","insightSaved":"洞察已保存","savedInsight":"已保存","insightEvidenceTitle":"自动化:{name}","summaryHealthy":"这里运行了 {total} 条自动化,{succeeded} 条已成功。","summaryRunning":"这里运行了 {total} 条自动化,{active} 条仍在执行。","summaryNeedsAttention":"这里运行了 {total} 条自动化,{attention} 条需要处理。建议先看 {name}。","summaryRecovered":"这里运行了 {total} 条自动化,{recovered} 条修复后已恢复,{succeeded} 条成功。","succeededCount":"{count} 条成功","activeCount":"{count} 条运行中","attentionCount":"{count} 条需处理","recoveredCount":"{count} 条已恢复","primaryRepair":"生成修复建议","primaryRepairing":"生成中...","historical":"历史异常","recovered":"已恢复","thisAutomation":"这条自动化"},"tabs":{"automations":"自动化","runs":"运行记录","templates":"模板"},"templates":{"dailyAgent":{"name":"每日智能体简报","description":"让智能体准备每日摘要。","instruction":"准备我的每日简报。"},"morningWorkflow":{"name":"每天早上运行工作流","description":"按固定的每日计划启动工作流。","formName":"晨间工作流"},"webhookAgent":{"name":"Webhook 触发智能体","description":"从外部请求触发智能体。","formName":"Webhook 智能体任务"},"blockedGoal":{"name":"阻塞目标助手","description":"当目标变成阻塞状态时,让智能体诊断原因。","formName":"阻塞目标助手","instruction":"有一个目标变成阻塞状态。请诊断可能的阻塞原因,并建议下一步具体行动。"},"noteCreated":{"name":"新笔记整理","description":"当创建新笔记时,让智能体分类并建议后续行动。","formName":"新笔记整理","instruction":"有一条新笔记被创建。请判断它的类型,并建议有用的后续行动。"}},"empty":{"automations":"暂无自动化","runs":"暂无运行记录","events":"暂无时间线事件"},"info":{"when":"触发","run":"执行","safety":"安全","overview":"运行概览","schedule":"运行安排","action":"运行内容","permission":"执行权限","lastRun":"最近运行","nextRun":"下次运行","technicalDetails":"技术详情","scheduleType":"计划类型","fixedInterval":"固定间隔","rawInterval":"原始间隔","calendarSchedule":"日历计划","oneTimeSchedule":"一次性计划","timezone":"时区","anchor":"间隔起点","expression":"Cron 表达式","eventType":"事件类型","eventSource":"事件来源","webhookSecret":"Webhook 密钥 ID","pausedNoAutomaticRuns":"已暂停,不会自动运行","noAutomaticTrigger":"不会自动触发","waitingForTrigger":"正在等待触发条件","noUpcomingRun":"暂无后续运行","notRunYet":"尚未运行"},"safety":{"suggest_only":"仅生成建议","ask_before_apply":"执行前确认","auto_apply":"自动执行","suggestOnlyDescription":"最安全。只产出建议,不自动应用修改。","askBeforeApplyDescription":"先生成执行方案,应用前需要用户确认。","autoApplyDescription":"条件匹配时自动运行。","upgrade":"提高安全模式","downgrade":"降低安全模式"},"trigger":{"manual":"手动","once":"运行一次","daily":"每天固定时间","weekly":"每周固定时间","interval":"固定间隔","customCron":"自定义 cron","webhook":"Webhook","goalBlocked":"目标阻塞","noteCreated":"笔记创建","workflowFailed":"工作流失败","sessionUpdated":"会话更新","customEvent":"自定义产品事件","eventWithType":"当 {type} 事件发生时运行","onceAt":"在 {time} 运行一次","manualWhen":"仅手动运行","webhookWhen":"收到 Webhook 请求时运行","goalBlockedWhen":"当目标变为「阻塞」时运行","noteCreatedWhen":"创建新笔记时运行","workflowFailedWhen":"工作流运行失败时触发","sessionUpdatedWhen":"会话内容更新时运行"},"action":{"agent":"智能体","agentWithId":"智能体:{id}","workflowWithId":"工作流:{id}","runAgent":"运行智能体","runWorkflow":"运行工作流"},"status":{"queued":"排队中","running":"运行中","succeeded":"成功","failed":"失败","cancelled":"已取消","timeout":"超时","notRun":"未运行"},"form":{"name":"名称","description":"描述","trigger":"触发","time":"时间","day":"星期","intervalEvery":"每隔","commonIntervals":"常用间隔","nextThreeRuns":"接下来三次","fixedIntervalHint":"固定间隔从创建时间开始计算;如需每天固定时刻运行,请选择“每天”。","intervalUnits":{"minute":"分钟","hour":"小时","day":"天(24 小时)","week":"周"},"expression":"表达式","secretId":"密钥 ID","onceAt":"运行时间","eventType":"事件类型","eventSource":"事件来源(可选)","eventPayloadMatch":"载荷匹配(JSON,可选)","invalidJsonObject":"请输入有效的 JSON 对象。","action":"动作","agent":"智能体","defaultAgent":"默认智能体","loadingAgents":"正在加载智能体...","instruction":"指令","workflow":"工作流","loadingWorkflows":"正在加载工作流...","noWorkflows":"暂无工作流","triggeredRun":"触发时运行","goal":"目标","afterRun":"运行后","safety":"安全模式","webhookUrl":"Webhook URL","reliability":"可靠性","timeoutSeconds":"超时秒数","disableAfterFailures":"失败后停用次数"},"afterRun":{"none":"不处理","saveToSession":"保存到会话","webhook":"调用 Webhook"},"weekdays":{"monday":"周一","tuesday":"周二","wednesday":"周三","thursday":"周四","friday":"周五","saturday":"周六","sunday":"周日"}}`)},w={extensionsPage:{title:`扩展`,subtitle:`浏览扩展市场,管理内置扩展和已安装扩展。`,openLocalApps:`应用工坊`,createLocalApp:`创建应用`,tabMarketplace:`扩展市场`,tabBuiltin:`内置`,tabUser:`已安装`,extensionsNavAria:`扩展分区`,emptyBuiltin:`网关未发现任何内置扩展(可检查网关日志与 dist/extensions 下的清单)。`,emptyUser:`未发现用户安装的扩展。请通过扩展市场或 CLI 安装到 ~/.xopc/extensions。`,searchPlaceholder:`搜索扩展`,noSearchResults:`没有符合筛选的扩展。`,statusEnabled:`已启用`,cardNoDescription:`清单中无描述。`,badgeKindUi:`界面`,badgeKindBackend:`后端`,badgeBundled:`内置`,cardTooltipHasUi:`声明了网关控制台界面(页面或设置)。`,cardTooltipNoUi:`无网关界面;仍可提供工具、钩子或频道等能力。`,badgeSourceGlobal:`全局`,badgeSourceWorkspace:`工作区`,badgeSourceOther:`其他`,detailTitle:`扩展详情`,detailBack:`返回`,detailClose:`关闭`,detailProviderPrefix:`来源:`,providerBundled:`内置(随 xopc 分发)`,providerGlobal:`全局安装(~/.xopc/extensions)`,providerWorkspace:`工作区(.extensions)`,providerOther:`其他`,detailSectionFeatures:`扩展能力`,detailNoDescription:`该扩展未提供描述。`,restartNote:`部分扩展变更需要重启网关后才会完整生效。`,cliManageHint:`非内置副本需通过 CLI 或文件系统安装、升级与卸载。`,builtinConfigHint:`频道与图片密钥请在「设置 → 频道」「设置 → 图片」中管理。`,builtinRuntimeToggle:`网关运行时`,builtinToggleEnable:`启用`,builtinToggleDisable:`停用`,builtinToggleBusy:`保存中…`,builtinToggleFailed:`无法更新内置扩展。`,builtinToggleRestartHint:`请重启网关后扩展代码才会完整加载或卸载。`,backendOnlyHint:`该扩展无网关控制台界面;启用后工具与钩子仍会运行。`,badgePages:`{{count}} 个页面`,badgeSettings:`{{count}} 个设置`,badgeWidgets:`{{count}} 个聊天挂件`,badgeSidebar:`{{count}} 个侧栏`,open:`打开`,openSettings:`设置`,runStateLive:`运行中`,runStatePendingOn:`配置已启用`,runStatePendingOff:`配置已停用`,runStateOff:`已关闭`,marketplaceSearchPlaceholder:`搜索扩展…`,marketplaceEmpty:`xopc-store 暂无扩展。`,marketplaceLoadFailed:`扩展市场加载失败。`,marketplaceLoading:`正在加载扩展`,marketplaceDetailTitle:`扩展详情`,marketplaceDetailLoadFailed:`无法加载包详情。`,marketplaceDetailReadmeHeading:`说明`,marketplaceNoReadme:`该包未提供 readme。`,marketplaceAuthor:`作者`,marketplaceVersion:`版本`,marketplaceDownloads:`下载量`,marketplaceInstall:`安装`,marketplaceReview:`查看并安装`,marketplaceReinstall:`重新安装`,marketplaceInstalled:`已安装`,marketplaceUninstall:`卸载`,marketplaceUninstallConfirm:`从磁盘删除该扩展并从配置中移除启用项?若列表未更新请重启网关。`,marketplaceReinstallConfirm:`用商店版本覆盖当前已安装的扩展?`,marketplaceInstallFailed:`安装失败。`,marketplaceUninstallFailed:`卸载失败。`,marketplaceRestartHint:`若涉及频道插件或卸载残留,请重启网关以完全生效。`,marketplaceUnavailableTitle:`当前不可安装`,marketplaceUnavailableBody:`当前版本无法满足安全安装条件。`,marketplaceRiskTitle:`安装前确认`,marketplaceCodeRisk:`扩展代码及依赖安装脚本将以网关进程相同的操作系统权限运行。`,marketplaceIntegrity:`制品完整性`,marketplaceIntegrityVerified:`SHA-256 已校验`,marketplaceDependencies:`运行时依赖`,marketplacePermissions:`声明的权限`,marketplacePermissionsNone:`扩展清单未声明权限。`,marketplaceLifecycleScripts:`将执行包生命周期脚本`,marketplaceRiskConfirm:`我已审阅这些能力,并信任该发布者和此版本。`,marketplaceBuiltin:`内置`,marketplaceBuiltinManageHint:`该扩展已随 xopc 内置分发,无需从商店安装。请在「内置」页打开界面或调整启用状态。`,marketplaceBuiltinGoBuiltin:`前往「内置」`},extensionUi:{permissionTitle:`是否允许「{{name}}」?`,permissionSubtitle:`在扩展界面打开期间,它可能使用以下能力。`,permissionsNone:`清单中未声明额外权限。`,allow:`允许`,deny:`暂不`,deniedHint:`在你批准扩展声明的权限之前,扩展界面将保持隐藏。`,reviewPermissions:`查看权限`,loadFailed:`扩展面板加载失败。`,loadFailedConnectionHint:`若内嵌区域提示无法连接 localhost,请先启动 xopc 网关;若用 Vite 单独跑 web/,请确认 web/vite.config.ts 里代理的网关端口与正在运行的网关一致。`,retryLoad:`重新加载`},extensionDebug:{nav:`扩展调试`,title:`扩展调试`,subtitle:`查看网关发现的扩展及其声明的权限。`,listHeading:`网关返回的扩展`,colId:`标识`,colName:`名称`,colPermissions:`清单权限`,futureHeading:`后续计划`,futureBody:`后续将支持 postMessage 捕获、按扩展查看存储,以及更细的权限调试。`}},T={channelsSettings:{needToken:`请先保存网关访问令牌后再编辑消息通道设置。`,subtitle:`连接 Telegram、微信、飞书等消息通道。保存后写入本地网关配置。`,docsLink:`消息通道文档`,refresh:`刷新`,loadError:`加载消息通道设置失败`,loading:`加载中…`,save:`保存`,discard:`放弃`,saving:`保存中…`,saved:`已保存`,saveError:`保存失败`,retry:`重试`,unsavedHint:`有未保存的更改。`,hubStatusRunning:`运行中`,hubStatusEnabled:`已启用`,hubStatusConfigured:`已配置`,hubStatusNeedsSetup:`待配置`,hubStatusError:`需处理`,hubStatusNotConfigured:`未配置`,connectionStatus:`连接状态`,connectionRunning:`运行中`,connectionRunningHint:`此通道正在接收并处理消息。`,connectionDisabled:`已停用`,connectionDisabledHint:`启用后,该通道将开始接收消息。`,connectionNeedsSetup:`需要完成连接`,connectionNeedsSetupHint:`完成账号连接后,此通道才能启动。`,connectionChecking:`正在检查状态…`,connectionStopped:`已启用,未运行`,connectionStoppedHint:`此通道当前没有运行。重新启动后将恢复接收消息。`,restartChannel:`重新启动通道`,restartingChannel:`正在重新启动…`,checkConnection:`检查状态`,checkingConnection:`检查中…`,connectionOptions:`连接选项`,hideConnectionOptions:`收起连接选项`,tokenRequired:`需要先保存网关访问令牌。`,loadingChannels:`正在加载消息通道…`,selectChannel:`请选择一个消息通道进行配置。`,docs:`文档`,close:`关闭`,startConfiguration:`开始配置`,completeSetup:`完成配置`,enableChannel:`启用通道`,manageChannel:`管理通道`,toggleChannel:`启用或停用 {{channel}}`,scanLoginTitle:`扫码登录`,scanLoginHint:`请使用 {{channel}} 扫描下方二维码完成连接`,cardStream:`流式`,cardAccounts:`{{count}} 个账号`,cardSetupTitle:`连接此通道`,cardSetupQrHint:`登录或扫码后,xopc 就可以从此通道接收消息并回复。`,cardSetupConfigHint:`填写必要凭证,确认无误后启用通道即可开始接收消息。`,cardSetupGenericHint:`完成设置后,可将此通道的消息路由给智能体处理。`,cardCapabilityLogin:`扫码登录`,cardCapabilityPairing:`配对`,cardCapabilityMultiAccount:`多账号`,cardCapabilityStreaming:`流式回复`,cardCapabilityMedia:`媒体消息`,cardCapabilityDoctor:`诊断`,enabledLabel:`已启用`,disabledLabel:`已停用`,advancedConfiguration:`高级配置`,basicConfiguration:`基础配置`,basicConfigurationHint:`配置此通道启动并接收消息所需的必要字段。`,agentRouting:`智能体路由`,agentRoutingHint:`将此通道的所有入站消息路由到指定智能体。更具体的账号或会话规则可覆盖此设置。`,messageHandling:`消息处理`,messageHandlingHint:`默认使用默认智能体;仅在此通道需要单独路由时修改。`,agentRoutingSelect:`使用默认智能体`,agentRoutingDefault:`默认智能体({{agent}})`,setupReadinessTitle:`需要完成配置`,setupReadinessEnabledBody:`此通道已开启,但缺少必要配置,完成前不会正常工作。`,setupReadinessDisabledBody:`启用此通道前,请先完成以下配置。`,setupIssueTelegramMissingCredential:`请为至少一个已启用账号填写 Telegram Bot Token 或 token 文件。`,setupIssueWeixinMissingAccount:`请登录微信并创建至少一个已启用账号。`,setupIssueFeishuMissingCredentials:`请填写 App ID 和 App Secret。`,setupIssueMissingRequired:`请填写必填项:{{field}}。`,enableBlockedMessage:`{{channel}} 需要先完成配置才能启用。`,setupTitle:`设置`,setupConfiguredHint:`此通道已有配置。可使用下方操作重新连接或检查状态。`,setupEmptyHint:`使用此通道最快的设置方式。`,reconnect:`重新连接`,connect:`连接`,diagnose:`诊断`,waitingConfirmation:`等待确认…`,openSetupLink:`打开设置链接`,complete:`完成`,failed:`失败`,saveSetup:`保存设置`,diagnosticCheckFallback:`检查 {{index}}`,schemaBooleanDefault:`启用`,schemaUnsupportedArrayType:`不支持的数组类型`,schemaArrayAddPlaceholder:`输入后按 Enter 添加`,schemaUnsupportedFieldType:`{{title}}:不支持的字段类型{{type}}`,hubPairingButton:`处理配对`,modalCancel:`取消`,proxy:`代理`,dmPolicy:`私聊策略`,copy:`复制`,copied:`已复制`,show:`显示`,hide:`隐藏`,policy:{dm:{pairing:`配对`,allowlist:`白名单`,open:`开放`,disabled:`关闭`},group:{open:`开放`,disabled:`关闭`,allowlist:`白名单`},reply:{off:`关闭`,first:`首条`,all:`全部`},stream:{off:`关闭`,partial:`部分`,block:`阻塞`}}},voiceSettings:{needToken:`请先保存网关访问令牌后再编辑语音设置。`,subtitle:`配置消息通道中的语音识别和语音合成。API Key 也可以通过环境变量提供。`,docsLink:`语音文档`,loadError:`加载语音设置失败`,loading:`加载中…`,save:`保存`,discard:`放弃`,saving:`保存中…`,saved:`已保存`,saveError:`保存失败`,retry:`重试`,unsavedHint:`有未保存的更改。`,apiKeyMaskedHelp:`已保存的密钥默认隐藏。点击眼睛图标可从配置文件读取(不含环境变量里的密钥)。`,apiKeyCopy:`复制`,apiKeyCopied:`已复制`,apiKeyShow:`显示`,apiKeyHide:`隐藏`,apiKeyNotInConfigFile:`配置文件中没有该服务商的密钥(请检查环境变量)。`,apiKeyRevealFailed:`无法从配置文件读取密钥。`,overview:{title:`语音状态`,description:`快速确认助手现在能不能听、会不会说。`,input:`输入`,replies:`回复`,voice:`声音`,ready:`可用`,off:`关闭`},language:{title:`语音语言`,auto:`跟随应用语言`,manual:`保留手动设置`,autoDescription:`STT 识别语言和内置 Edge 音色会自动跟随应用语言。`,manualDescription:`切换应用语言时,不覆盖模型语言和已选择的音色。`},behavior:{title:`语音应该如何工作`,description:`先选择用户能感知的行为,引擎细节放在下方。`,modes:{text:{title:`仅文字`,description:`不使用语音输入,也不朗读回复。`},listen:{title:`听我说话`,description:`转写语音输入,但仍用文字回复。`},conversation:{title:`我说话时也语音回复`,description:`语音输入、语音回复,适合作为聊天默认模式。`},always:{title:`始终朗读回复`,description:`每条助手回复都会朗读。`}}},inputEngine:{title:`语音输入引擎`,description:`转写服务商、模型、API Key 与备用策略。`},stt:{title:`语音输入(STT)`,description:`将语音消息转写成文字,让助手能够阅读。`,enable:`启用语音输入`,enableDesc:`开启后,可将语音消息转写给智能体使用。`,provider:`STT 服务商`,alibaba:`阿里云 DashScope`,openai:`OpenAI`,apiKey:`API Key`,apiKeyDesc:`若环境变量已配置密钥,此处可留空。`,model:`模型`,fallback:`备用服务商`,fallbackDesc:`主服务商失败时尝试备用服务商。`,refinement:`转写润色`,refinementDesc:`转写后可选调用模型整理文本;关闭可避免额外延迟和模型用量。`,refinementOff:`关闭(保留原文)`,refinementPunctuation:`仅补标点`,refinementLight:`轻度整理`,localProvider:`xopc 本地语音`,localModels:`本地语音模型`,localModelsDesc:`只下载模型文件,识别过程完全在 xopc 内本地运行。`,localRecommended:`中文推荐`,localDownloading:`下载中`,localInstall:`下载`,localRemove:`删除`},tts:{title:`助手语音回复(TTS)`,description:`在需要时把助手回复合成为音频。`,enable:`启用语音回复`,enableDesc:`开启后,助手回复会按下方规则朗读。`,trigger:`朗读回复`,triggerOff:`关闭`,triggerAlways:`始终`,triggerInbound:`仅入站语音`,triggerTagged:`标签([[tts]])`,triggerDescOff:`完全关闭 TTS。`,triggerDescAlways:`对助手消息尝试使用 TTS。`,triggerDescInbound:`仅当用户发送语音时以语音回复。`,triggerDescTagged:`仅在使用 [[tts]] 指令时。`,triggerHelp:`选择什么时候把助手文字回复转换成语音。`,provider:`语音引擎`,providerOpenai:`OpenAI TTS`,providerEdge:`Microsoft Edge(免费)`,providerLocalCli:`本地 CLI(离线)`,voice:`音色`,alwaysWarning:`始终朗读会在高频聊天中打扰用户,只建议在明确以语音为主的通道中开启。`,statusTitle:`当前语音回复状态`,statusOff:`语音回复已关闭,助手仍会正常发送文字回复。`,statusReady:`已可用:`,statusNeedsSetup:`需要配置:`,advanced:{title:`引擎设置`,description:`API Key、模型、音色与服务商专属选项。`},configured:`可用`,needsKey:`需密钥`,noKeyNeeded:`免密钥`,providerHints:{edge:`免费、配置快,适合测试和轻量使用。`,openai:`低延迟、音色选择多;需要 OpenAI Key。`,alibaba:`中文语音效果好;需要 DASHSCOPE_API_KEY。`,minimax:`高质量音色;异步生成可能较慢。`,localCli:`通过 Piper、sherpa-onnx、mlx-audio 或自定义脚本在本地私有合成。`,generic:`扩展语音服务商,请在下方配置所需字段。`},test:{title:`试听音色`,description:`用当前服务商、模型和音色生成一小段样例,确认效果后再用于聊天。`,sampleText:`你好,我是你的助手。启用语音输出后,我可以朗读助手回复。`,play:`试听`,stop:`停止`,generating:`生成中…`,playing:`播放中`,ready:`已生成`,emptyText:`请输入要合成的文本。`,playFailed:`音频播放失败。`},edgeHint:`Microsoft Edge TTS — 无需 API Key。`,localCli:{preset:`命令模板`,presetPlaceholder:`选择本地引擎模板…`,presetDesc:`从 Piper、sherpa-onnx 或 mlx-audio 的安全模板开始;试听前请替换路径。`,command:`CLI 命令`,commandDesc:`Shell 模板;占位符:{{Text}}、{{OutputPath}}、{{OutputDir}}、{{OutputBase}}。`,commandPlaceholder:`mlx_audio.tts.generate --text "{{Text}}" --file_prefix {{OutputBase}}`,cwd:`工作目录`,cwdDesc:`可选;默认使用网关工作目录。`,outputFormat:`输出格式`,outputFormatDesc:`CLI 输出的文件扩展名(mp3、wav、opus 等)。`,timeoutMs:`超时(ms)`,timeoutMsDesc:`单次调用超时覆盖;留空则使用 TTS 默认值。`,hint:"由内置扩展 `tts-local-cli` 提供。请先启用该扩展并将二进制加入 PATH。"}},notes:{title:`说明`,duration:`长音频会自动分段;效果取决于服务商与模型。`,envVars:`环境变量:DASHSCOPE_API_KEY、OPENAI_API_KEY(未在表单填写时)。`}},gatewaySettings:{needToken:`请先保存网关访问令牌后再加载或修改网关选项。`,subtitle:`HTTP API 访问令牌与监听地址。配置写入网关配置文件。`,tabsAriaLabel:`网关设置分类`,tabNetwork:`网络`,tabAccess:`访问控制`,tabUpdates:`更新`,tabSecurity:`安全`,tabAdvanced:`高级`,networkTabHint:`配置监听地址、端口与跨域来源。`,accessTabHint:`配置访问令牌、密码、受信任代理和认证失败限流。`,updatesTabHint:`配置更新通道、启动检查和自动更新策略。`,docsLink:`网关文档`,loadError:`加载网关设置失败`,loading:`加载中…`,save:`保存`,discard:`放弃`,saving:`保存中…`,saved:`已保存`,saveError:`保存失败`,retry:`重试`,unsavedHint:`有未保存的更改。`,tokenExpired:`会话访问令牌无效。请在客户端更新访问令牌,或修正配置文件中的访问令牌。`,updateToken:`更新客户端访问令牌`,changeToken:`打开访问令牌对话框`,accessToken:`网关访问令牌`,tokenPlaceholder:`保存在配置中的访问令牌(若使用环境变量可留空)`,tokenHelp:`用于 HTTP/WebSocket API 鉴权。也可通过环境变量 XOPC_GATEWAY_TOKEN 提供。`,copy:`复制`,copied:`已复制`,show:`显示`,hide:`隐藏`,listenHost:`监听地址`,bindMode:`绑定模式`,bindLoopback:`本机回环 (127.0.0.1)`,bindLan:`局域网 (0.0.0.0)`,bindAuto:`自动`,bindCustom:`自定义 IPv4`,bindTailnet:`Tailnet(Tailscale IP)`,customBindHost:`自定义绑定地址`,customBindHostPlaceholder:`192.168.1.10`,listenPort:`端口`,listenHint:`绑定模式决定网关监听哪些网络接口。自动模式:容器内绑定 0.0.0.0,本机绑定 127.0.0.1。仅在已配置 token 与 CORS 来源时使用 LAN。保存后需重启网关。`,restartHint:`监听地址、认证或 CORS 的更改需要重启网关后生效。`,restartGatewayButton:`重启网关`,restartGatewayConfirm:`重启网关会中断所有活跃连接,确定继续吗?`,restartGatewayFailed:`重启失败`,authMode:`认证模式`,authModeToken:`令牌`,authModePassword:`密码`,authModeTrustedProxy:`受信任代理`,authModeNoneLabel:`无`,authModeNone:`当前认证模式为 none — API 请求不进行鉴权。`,authModeTrustedProxyHint:`由反向代理完成登录并转发用户身份头。请在下方配置受信任代理 CIDR 与相关头。保存后需重启网关。`,authPassword:`网关密码`,authPasswordPlaceholder:`保存在配置中的密码(若使用环境变量可留空)`,authPasswordHelp:`认证模式为 password 时使用。也可通过环境变量 XOPC_GATEWAY_PASSWORD 提供。`,rateLimitTitle:`认证失败限流`,rateLimitHint:`限制同一客户端 IP 的重复认证失败次数。`,rateLimitEnabled:`启用限流`,rateLimitExemptLoopback:`豁免本机回环客户端 (127.0.0.1)`,rateLimitMaxAttempts:`最大尝试次数`,rateLimitWindowMinutes:`统计窗口(分钟)`,rateLimitBlockMinutes:`封禁时长(分钟)`,updateChannel:`更新通道`,channelStable:`稳定版`,channelBeta:`测试版`,channelDev:`开发版`,updateChannelHint:`测试版与开发版会较早收到构建;日常使用建议稳定版。`,updateAutoSection:`自动更新`,updateAutoSectionHint:`控制网关启动时的 npm/CLI 更新检查以及后台自动更新调度。`,updateCheckOnStart:`启动时检查更新`,updateCheckOnStartHint:`启用后,网关启动时会检查是否有新版本。`,updateAutoEnabled:`启用自动更新`,updateAutoEnabledHint:`启用后,符合条件的 stable/beta 构建可能在下方延迟后自动应用。`,updateAutoStableDelayHours:`Stable 延迟(小时)`,updateAutoStableDelayHoursHint:`stable 发布后至少等待多少小时才允许自动更新。`,updateAutoStableJitterHours:`Stable 抖动(小时)`,updateAutoStableJitterHoursHint:`额外随机等待上限,用于分散更新负载。`,updateAutoBetaCheckIntervalHours:`Beta 检查间隔(小时)`,updateAutoBetaCheckIntervalHoursHint:`使用 beta 通道时,轮询新构建的频率。`,corsOrigins:`CORS 允许的来源`,corsOriginsHint:`填写完整浏览器来源(协议 + 主机 + 端口),例如 http://localhost:5173。留空则使用网关内置的 localhost 默认值。保存后需重启网关生效。`,corsOriginsEmpty:`未配置自定义来源 — 网关将对此端口及 Vite 开发端口(3000)使用 localhost 默认值。`,corsOriginsPlaceholder:`输入来源后按 Enter 添加`,corsOriginsWildcardWarning:`通配符 "*" 允许任意网站从浏览器调用 API,请确认风险后再使用。`,securitySection:`网络安全`,securitySectionHint:`适用于局域网和反向代理部署的安全策略。保存后需要重启网关。`,securityStrict:`严格安全模式`,securityStrictHint:`启用后,非本机回环绑定必须显式配置认证失败限流。`,dangerouslyAllowHostHeaderOriginFallback:`允许 Host 头来源回退`,dangerouslyAllowHostHeaderOriginFallbackHint:`危险:未列入 CORS 时,将 HTTP Host 头视为允许的浏览器来源。建议优先配置 corsOrigins。`,dangerouslyAllowHostHeaderOriginFallbackWarning:`Host 头回退会削弱浏览器来源校验。仅在受信任且严格校验 Host 的反向代理后使用。`,trustedProxies:`受信任代理 CIDR`,trustedProxiesHint:`允许终止 trusted-proxy 鉴权的反向代理 IP 或 CIDR(如 127.0.0.1/32、10.0.0.0/8)。网络绑定下必填。`,trustedProxiesEmpty:`未配置受信任代理。`,trustedProxiesPlaceholder:`输入 CIDR 或 IP 后按 Enter`,allowRealIpFallback:`允许 X-Real-IP 回退`,allowRealIpFallbackHint:`X-Forwarded-For 解析失败时回退到 X-Real-IP。默认关闭(fail-closed)。`,trustedProxyUserHeader:`用户身份头`,trustedProxyUserHeaderPlaceholder:`X-Forwarded-User`,trustedProxyUserHeaderHint:`反向代理设置的 HTTP 头,携带已认证用户身份。`,trustedProxyRequiredHeaders:`必需的代理头`,trustedProxyRequiredHeadersHint:`每个请求必须携带的额外头(如 X-Proxy-Auth)。`,trustedProxyAllowUsers:`允许的用户`,trustedProxyAllowUsersHint:`非空时仅接受列表中的用户身份。留空则接受任意非空用户头值。`,trustedProxyAllowLoopback:`允许本机回环代理来源`,trustedProxyAllowLoopbackHint:`TCP 连接来自 127.0.0.1 时仍接受 trusted-proxy 鉴权(同机反向代理)。`,validationErrorNetworkAuth:`网络可访问的网关必须启用鉴权。`,validationErrorTrustedProxies:`网络绑定下的 trusted-proxy 鉴权至少需要一个受信任代理 CIDR。`,validationErrorUserHeader:`trusted-proxy 鉴权必须配置用户身份头名称。`,validationErrorCors:`网络可访问的网关必须配置 CORS 来源或启用 Host 头回退。`,validationErrorCorsWildcard:`网络绑定下不允许 CORS 通配符。`,validationErrorCustomBind:`自定义绑定模式必须填写绑定地址。`,securityAuditTitle:`安全审计`,securityAuditSubtitle:`对当前已保存的网关配置进行实时检查(等同 xopc doctor --security)。`,securityAuditSavedConfigHint:`反映磁盘上的配置文件。保存表单更改并重启网关后结果才会更新。`,securityAuditRefresh:`刷新`,securityAuditLoading:`正在运行安全审计…`,securityAuditLoadError:`安全审计失败`,securityAuditStatusPass:`无严重问题`,securityAuditStatusWarn:`存在建议项`,securityAuditStatusFail:`存在严重问题`,securityAuditStatusSkip:`审计已跳过`,securityAuditNoFindings:`无结构化发现项;配置通过网关安全守卫检查。`,securityAuditHintsTitle:`补充说明`,securityAuditRemediation:`修复:`,advancedSection:`高级`,advancedSectionHint:`运行时限制与频道启动顺序。保存后需重启网关生效。`,maxSseConnections:`最大 SSE 连接数`,maxSseConnectionsHint:"并发 Server-Sent Events 客户端上限(如 `GET /api/events`)。默认 100。",channelConnectDeferMode:`频道连接延后`,channelConnectDeferModeAuto:`自动(按插件默认)`,channelConnectDeferModeOff:`关闭(监听前先启动全部频道)`,channelConnectDeferModeExplicit:`显式列表`,channelConnectDeferModeHint:"控制 outbound 较重的频道何时调用 `start()`。自动模式下会延后声明了 opt-in 的插件(如 Telegram、Weixin、飞书)。",channelConnectDeferIds:`延后启动的频道 id`,channelConnectDeferIdsHint:`模式为「显式列表」时使用。这些插件 id 在 HTTP 监听绑定后再 start(最多 24 个)。留空表示不延后任何频道。`,channelConnectDeferSkipIds:`跳过延后的频道 id`,channelConnectDeferSkipIdsHint:`在自动或显式解析后从延后集合中移除(最多 24 个)。例如:Telegram 仍在 phase 1 启动,其余延后。`,channelIdListPlaceholder:`输入频道 id 后按 Enter(如 telegram)`,channelIdListEmpty:`未配置 id。`},heartbeatSettings:{needToken:`请先保存网关访问令牌后再加载或修改心跳选项。`,subtitle:"定时唤醒智能体、可选投递到消息通道,以及默认智能体 `profile/` 目录下的 HEARTBEAT.md。配置写入网关配置文件与 `agents/<id>/profile/`。",docsLink:`心跳机制文档`,loadError:`加载心跳设置失败`,loading:`加载中…`,saveConfig:`保存`,discard:`放弃`,savingConfig:`保存中…`,savedConfig:`配置已保存`,saveConfigError:`保存配置失败`,triggerNow:`立即触发`,triggering:`排队中…`,triggered:`已加入心跳队列`,triggerError:`触发心跳失败`,triggerHint:`与定时器相同的一次心跳(会受 HEARTBEAT.md、活跃时段与是否启用心跳影响)。`,saveDoc:`保存`,savingDoc:`保存中…`,savedDoc:`文档已保存`,saveDocError:`保存 HEARTBEAT.md 失败`,retry:`重试`,unsavedConfig:`有未保存的配置更改。`,unsavedDoc:`HEARTBEAT.md 有未保存的更改。`,workspaceLabel:`工作区`,tabsAriaLabel:`心跳设置分类`,tabSchedule:`计划`,tabDelivery:`投递`,tabPrompt:`提示词`,tabDocument:`HEARTBEAT.md`,scheduleTabHint:`设置心跳是否启用、运行间隔和活跃时段。`,deliveryTabHint:`选择要投递的消息通道和会话;留空则只记录日志。`,promptTabHint:`调整心跳轮次的系统提示、静默阈值和会话隔离策略。`,documentTabHint:`维护每次心跳读取的任务与提醒内容。`,configSection:`心跳配置`,docSection:`HEARTBEAT.md`,docHint:`每次心跳时智能体会读取的任务与提醒。若留空或仅有注释,将跳过 LLM 调用以节省用量。`,enable:`启用心跳`,includeSystemPromptSection:`在聊天 system prompt 中包含心跳指令`,includeSystemPromptSectionHint:`关闭时,心跳指令仅在定时心跳轮次中发送(可减少普通聊天 token 消耗)。`,interval:`间隔`,intervalHint:`最短 1 秒;保存到网关配置时为毫秒。`,intervalHintPreset:`快速选择,或在左侧输入秒数。`,intervalSecondsLabel:`秒`,intervalPresets:{custom:`自定义`,every30s:`每 30 秒`,every1min:`每 1 分钟`,every5min:`每 5 分钟`,every10min:`每 10 分钟`,every15min:`每 15 分钟`,every30min:`每 30 分钟`,every1h:`每 1 小时`,every2h:`每 2 小时`},deliveryTitle:`投递(可选)`,channelNone:`— 无 —`,customChannelSuffix:`自定义`,deliveryHint:`需同时填写消息通道与会话 ID 才会发送非静默回复;否则仅记录日志。`,prompt:`自定义系统提示(可选)`,promptPlaceholder:`覆盖默认心跳指令…`,promptHint:`留空则使用内置默认提示。`,ackMaxChars:`视为静默前的最大回复长度(ackMaxChars)`,ackMaxCharsHint:`留空则使用服务端默认值(300)。`,ackDefaultPlaceholder:`默认`,isolatedSession:`每次使用新的会话键`,isolatedSessionHint:`避免与主对话会话混淆上下文。`,activeHoursTitle:`活跃时段(可选)`,activeStart:`开始`,activeEnd:`结束`,activeTimezone:`时区(IANA)`,activeHoursHint:`仅在该时间窗口内运行心跳。清除则不限时段。`,addActiveHours:`添加活跃时段`,clearActiveHours:`清除活跃时段`},webSearchSettings:{title:`网络搜索`,subtitle:`为 web_search 工具配置地区与搜索提供方。未配置 API 时将使用内置 HTML 兜底。`,docsLink:`网关文档`,needToken:`请先保存网关访问令牌后再编辑网络搜索。`,loading:`加载中…`,loadError:`加载网络搜索设置失败`,save:`保存`,discard:`放弃`,saving:`保存中…`,saved:`已保存`,saveError:`保存失败`,unsavedHint:`有未保存的更改。`,sectionRegion:`地区`,sectionRegionHint:`在无可用 API 时,用于选择内置 HTML 兜底(国内优先必应,否则 DuckDuckGo)。`,sectionSearch:`搜索提供方`,sectionSearchHint:`按列表顺序依次尝试。密钥写在网关配置文件中。列表为空则仅使用 HTML 兜底。`,sectionBlocklist:`域名黑名单`,sectionBlocklistHint:`启用后,web_search 与 web_extract 会跳过主机名匹配下列域名的 URL(精确或后缀匹配)。`,blocklistEnabled:`启用域名黑名单`,blocklistEnabledDesc:`在抓取前拦截匹配主机,适用于隐私或合规场景。`,blocklistDomains:`屏蔽域名`,blocklistDomainsDesc:`每行一个域名(如 example.com)。所列域名的子域名也会被屏蔽。`,blocklistDomainsPlaceholder:`example.com
|
|
4
|
-
ads.example.net`,regionLabel:`兜底地区`,regionDesc:`自动根据系统时区判断。若使用代理或需固定策略,可手动覆盖。`,regionAuto:`自动(时区)`,regionCn:`中国(必应 HTML 兜底)`,regionGlobal:`全球(DuckDuckGo HTML 兜底)`,maxResultsLabel:`默认结果条数`,maxResultsDesc:`模型未指定 count 时使用(1–50)。`,providersTitle:`提供方(按顺序)`,addProvider:`添加提供方`,apiKeyLabel:`API 密钥`,apiKeyDesc:`部分场景可选。留空且显示为已掩码时保留原值。`,urlLabel:`实例地址`,urlDesc:`SearXNG 根地址(如 http://localhost:8080),无需末尾斜杠。`,keyPlaceholder:`密钥或环境变量名`,keyPlaceholderMasked:`••••••••(未修改)`,disabled:`跳过`,footerHint:`HTML 兜底依赖第三方页面,可能随站点改版变化。生产环境建议使用正式搜索 API(Brave、Tavily、必应或自建 SearXNG)。`,providerTypes:{brave:`Brave Search API`,tavily:`Tavily`,bing:`Bing Web Search API`,searxng:`SearXNG`}}},E={chat:JSON.parse(`{"typeMessage":"输入消息…","sendMessage":"发送","abort":"停止","needToken":"请先保存网关访问令牌后再对话。","loading":"加载对话中…","model":"当前会话模型","modelPlaceholder":"选择模型…","agent":"智能体","agentPlaceholder":"选择智能体…","agentSearchPlaceholder":"搜索智能体…","agentNoMatches":"没有匹配的智能体","thinkingLevel":"思考级别","newSession":"新对话","timelineTitle":"时间线","timelineTurn":"第 {{count}} 轮","timelineMessageFallback":"消息","timelineToolCount_one":"{{count}} 步","timelineToolCount_other":"{{count}} 步","timelineOpen":"打开时间线","timelineClose":"关闭时间线","timelineCurrent":"当前","welcomeTitle":"今天想让 xopc 帮你做什么?","welcomeDescription":"输入问题、任务或文件处理需求,开始对话。","welcomeSpotlight":{"otherSuggestionsLabel":"其他方向","acceptSuggestionHint":"按 Tab 填入建议","refreshExplorationLabel":"换一个探索方向","contextLoading":"正在结合当前上下文生成建议…","contextFallback":"部分上下文暂时不可用,已根据可用信息生成建议。","retryContext":"重新读取","contextFallbackTitle":"当前任务","reasons":{"general":"一个容易开始、发送前仍可修改的起点","agent":"更贴合 {{agentName}} 的能力","project":"根据项目「{{projectName}}」的当前上下文","note":"根据笔记「{{noteTitle}}」继续推进","workItem":"根据工作项「{{workItemTitle}}」的当前状态","blocked":"优先处理当前阻塞:{{blockedReason}}","nextAction":"沿用已经明确的下一步:{{nextAction}}","directory":"根据当前目录「{{path}}」开始"},"contextPrompts":{"workItemBlocked":"工作项「{{workItemTitle}}」当前被「{{blockedReason}}」阻塞。请先分析根因,再给出最小可执行的解除阻塞方案、需要确认的信息和建议求助对象。","workItemNextAction":"工作项「{{workItemTitle}}」已经明确下一步是「{{nextAction}}」。请检查前置条件和风险,然后把它拆成可以立即开始的行动。","codingWorkspace":"请从目录「{{workspaceRoot}}」开始理解项目「{{projectName}}」,先定位启动入口、核心模块和最值得阅读的文件,再建议我下一步看哪里。"},"exploreCards":[{"id":"explore-news","icon":"globe","title":"今日与趋势","description":"AI、科技、行业动态","scenarios":[{"prompt":"帮我收集今天最值得关注的 AI 新闻,按重要性排序,并说明每条新闻为什么值得关注。"},{"prompt":"总结过去一周的重要科技趋势,区分短期热点和可能产生长期影响的变化。"},{"prompt":"帮我挑选 3 个今天值得深入了解的新产品或新技术,并给出阅读路径。"}]},{"id":"explore-learn","icon":"search","title":"学习新主题","description":"概念、资料、学习路径","scenarios":[{"prompt":"帮我收集今天最新的 AI 新闻,挑出 3 条最值得关注的进展,用通俗语言说明它们是什么、为什么重要。"},{"prompt":"给我设计一个 30 分钟可以完成的微型学习计划,主题由你推荐。"},{"prompt":"介绍一个容易被忽略但很实用的思维模型,并给出 3 个使用例子。"}]},{"id":"explore-life","icon":"target","title":"生活与决策","description":"选择、计划、实用建议","scenarios":[{"prompt":"帮我设计一个本周可以完成、能明显改善生活质量的小行动。"},{"prompt":"给我推荐一个周末探索主题,可以是书、电影、城市活动或新的体验。"},{"prompt":"教我一个能减少日常决策负担的简单方法,并帮我马上应用一次。"}]},{"id":"explore-creative","icon":"content","title":"灵感探索","description":"创意、观察、不同视角","scenarios":[{"prompt":"给我 5 个今天可以随手探索的创意题目,覆盖不同领域。"},{"prompt":"从一个常见事物出发,带我做一次 10 分钟的发散思考练习。"},{"prompt":"推荐一个值得写成短文的观点,并列出支持和反对它的理由。"}]}],"empty":{"headline":"今天想推进什么?","tagline":"选一个起点,改一改就能发送。","categories":[{"id":"work","icon":"documents","title":"办公输出","description":"邮件、周报、会议材料","scenarios":[{"prompt":"帮我写一份简短周报,包含本周完成、风险和下周计划。"},{"prompt":"我 30 分钟后要开会,帮我准备 5 个讨论要点和 3 个追问。"}]},{"id":"research","icon":"globe","title":"信息整理","description":"新闻、资料、选择决策","scenarios":[{"prompt":"帮我整理今天值得关注的科技新闻,并总结为什么重要。"},{"prompt":"帮我对比两个选择,从优缺点、成本和适用场景给出建议。"}]},{"id":"content","icon":"content","title":"写作润色","description":"文案、帖子、翻译改写","scenarios":[{"prompt":"帮我把这个想法改写成一段更清晰、有说服力的表达。"},{"prompt":"把这段中文翻译成自然地道的英文,不要翻译腔。"}]}]},"agentTagline":"当前由 {{agentName}} 处理,推荐会优先贴合它的工作方式。","agentCards":{"coding":{"id":"agent-coding","icon":"code","title":"代码落地","description":"实现、测试、审查","scenarios":[{"prompt":"基于当前上下文「{{contextTitle}}」,帮我把需求落到代码实现,并列出需要修改的文件。"},{"prompt":"请用工程视角审查「{{contextTitle}}」相关工作,重点看实现风险、测试缺口和可维护性。"}]},"writing":{"id":"agent-writing","icon":"content","title":"整理成文","description":"结构、语气、表达","scenarios":[{"prompt":"基于当前上下文「{{contextTitle}}」,帮我整理成一份结构清晰、表达准确的文字稿。"},{"prompt":"请把「{{contextTitle}}」相关内容改写得更清楚、更有说服力,并保留关键信息。"}]},"research":{"id":"agent-research","icon":"search","title":"调研验证","description":"来源、对比、结论","scenarios":[{"prompt":"基于当前上下文「{{contextTitle}}」,帮我列出需要验证的问题、可能的信息来源和调研路径。"},{"prompt":"请围绕「{{contextTitle}}」做一轮事实核查和对比分析,最后给出可信结论。"}]},"data":{"id":"agent-data","icon":"review","title":"分析数据","description":"清洗、指标、洞察","scenarios":[{"prompt":"基于当前上下文「{{contextTitle}}」,帮我判断可以提取哪些指标、如何分析、可能有哪些洞察。"},{"prompt":"请把「{{contextTitle}}」相关信息整理成可分析的数据结构,并给出下一步分析计划。"}]},"creative":{"id":"agent-creative","icon":"content","title":"发散方案","description":"方向、草案、取舍","scenarios":[{"prompt":"基于当前上下文「{{contextTitle}}」,帮我发散 5 个不同方向的创意方案,并说明各自适用场景。"},{"prompt":"请围绕「{{contextTitle}}」给我 3 个更大胆但可执行的表达或设计方向。"}]}},"codingProject":{"headline":"继续推进这个代码项目","tagline":"从理解、实现或排查开始。","contextLabel":"项目:{{projectName}}","categories":[{"id":"understand-codebase","icon":"code","title":"理解代码库","description":"结构、入口、关键模块","scenarios":[{"prompt":"帮我快速理解项目「{{projectName}}」的目录结构、核心模块和启动流程。"},{"prompt":"如果我要修改项目「{{projectName}}」,应该先看哪些文件?请按优先级说明。"}]},{"id":"implement-feature","icon":"target","title":"推进功能改动","description":"定位实现、拆解计划","scenarios":[{"prompt":"我想在项目「{{projectName}}」里实现一个功能。请先帮我定位相关代码,并给出改动计划。"},{"prompt":"基于当前代码库,帮我把这个需求拆成可执行的实现步骤。"}]},{"id":"review-debug","icon":"review","title":"审查与排查","description":"风险、测试、构建失败","scenarios":[{"prompt":"帮我审查项目「{{projectName}}」的潜在风险,重点看类型安全、边界情况和测试缺口。"},{"prompt":"帮我检查这个项目可能的构建或测试问题,并给出排查顺序。"}]}]},"generalProject":{"headline":"继续推进这个项目","tagline":"梳理状态,确定下一步,整理输出。","contextLabel":"项目:{{projectName}}","categories":[{"id":"project-status","icon":"search","title":"梳理项目状态","description":"目标、进展、风险","scenarios":[{"prompt":"帮我梳理项目「{{projectName}}」的当前状态:目标、已完成、风险和下一步。"},{"prompt":"基于这个项目,帮我整理一份简短的进展摘要。"}]},{"id":"project-next-step","icon":"target","title":"规划下一步","description":"任务拆解、优先级","scenarios":[{"prompt":"帮我把项目「{{projectName}}」接下来要做的事拆成 3 到 5 个优先级明确的步骤。"},{"prompt":"请根据当前项目情况,给我一个今天可以推进的最小下一步。"}]},{"id":"project-material","icon":"documents","title":"生成项目材料","description":"汇报、说明、对外表达","scenarios":[{"prompt":"帮我写一段项目「{{projectName}}」的进展说明,包含当前成果、风险和需要支持的事项。"},{"prompt":"帮我把这个项目整理成一页简洁的介绍材料。"}]}]},"note":{"headline":"围绕这篇笔记继续思考","tagline":"提炼观点,补全问题,转成产出。","contextLabel":"笔记:{{noteTitle}}","categories":[{"id":"note-summarize","icon":"note","title":"提炼笔记","description":"观点、结论、行动项","scenarios":[{"prompt":"帮我总结笔记「{{noteTitle}}」的核心观点、关键结论和可执行行动项。"},{"prompt":"请把这篇笔记整理成更清晰的层级结构。"}]},{"id":"note-think","icon":"search","title":"继续思考","description":"问题、缺口、延伸方向","scenarios":[{"prompt":"基于笔记「{{noteTitle}}」,帮我提出 5 个值得继续思考的问题。"},{"prompt":"帮我找出这篇笔记里逻辑不清、论据不足或可以补充的地方。"}]},{"id":"note-output","icon":"content","title":"转成产出","description":"文章、任务、计划","scenarios":[{"prompt":"把笔记「{{noteTitle}}」整理成一篇文章大纲,保留核心观点并优化结构。"},{"prompt":"从这篇笔记里提取任务清单,并按优先级排序。"}]}]},"workItem":{"headline":"继续推进这个工作项","tagline":"总结状态,确定下一步,检查风险。","contextLabel":"工作项:{{workItemTitle}}","categories":[{"id":"work-item-progress","icon":"task","title":"总结进展","description":"状态、已完成、阻塞","scenarios":[{"prompt":"基于工作项「{{workItemTitle}}」,帮我总结当前进展、已完成事项、风险和阻塞。"},{"prompt":"帮我把这个工作项整理成一段可以同步给团队的状态更新。"}]},{"id":"work-item-next","icon":"target","title":"找下一步","description":"最小行动、优先级、依赖","scenarios":[{"prompt":"基于工作项「{{workItemTitle}}」,帮我判断当前最小可执行下一步是什么。"},{"prompt":"帮我拆解这个工作项的后续步骤,并标出优先级和依赖。"}]},{"id":"work-item-risk","icon":"review","title":"识别风险","description":"阻塞、遗漏、验收标准","scenarios":[{"prompt":"帮我检查工作项「{{workItemTitle}}」可能有哪些遗漏、风险或未定义清楚的验收标准。"},{"prompt":"如果我要推进这个工作项,请帮我列出需要确认的问题清单。"}]}]},"workItemBlocked":{"headline":"这个工作项需要解除阻塞","tagline":"先分析原因,再确定可执行方案。","contextLabel":"工作项:{{workItemTitle}}","categories":[{"id":"work-item-progress","icon":"task","title":"总结进展","description":"状态、已完成、阻塞","scenarios":[{"prompt":"基于工作项「{{workItemTitle}}」,帮我总结当前进展、已完成事项、风险和阻塞。"},{"prompt":"帮我把这个工作项整理成一段可以同步给团队的状态更新。"}]},{"id":"work-item-unblock","icon":"target","title":"解除阻塞","description":"原因、方案、求助对象","scenarios":[{"prompt":"工作项「{{workItemTitle}}」当前被阻塞。请帮我分析阻塞原因,并给出 3 个可尝试的解决方案。"},{"prompt":"帮我判断这个阻塞应该找谁确认、需要什么信息、下一步怎么推进。"}]},{"id":"work-item-risk","icon":"review","title":"识别风险","description":"遗漏、依赖、验收标准","scenarios":[{"prompt":"帮我检查工作项「{{workItemTitle}}」可能有哪些遗漏、风险或未定义清楚的验收标准。"},{"prompt":"如果我要推进这个工作项,请帮我列出需要确认的问题清单。"}]}]},"workingDirectory":{"headline":"从当前目录开始","tagline":"先盘点内容,再提炼重点和整理方向。","categories":[{"id":"directory-understand","icon":"folder","title":"盘点内容","description":"文件类型、重点、概览","scenarios":[{"prompt":"帮我盘点目录「{{path}}」里的主要内容、文件类型和最重要的资料。"},{"prompt":"请先扫描这个目录,告诉我它更像什么资料集合,以及最值得先看的内容。"}]},{"id":"directory-summarize","icon":"documents","title":"提炼重点","description":"摘要、线索、待办","scenarios":[{"prompt":"帮我把目录「{{path}}」里的重要内容整理成摘要,并标出值得继续跟进的线索。"},{"prompt":"如果我要从这个目录开始处理事情,应该先看哪些资料、确认哪些问题?"}]},{"id":"directory-organize","icon":"review","title":"整理文件","description":"分类、摘要、清理建议","scenarios":[{"prompt":"帮我整理目录「{{path}}」里的文件,并给出分类和清理建议。"},{"prompt":"请帮我把这个目录里的重要内容做一份摘要。"}]}]},"codingWorkspace":{"headline":"从这个代码目录开始","tagline":"先理解结构,再找到入口和实现方向。","categories":[{"id":"directory-understand","icon":"folder","title":"理解代码目录","description":"结构、类型、关键文件","scenarios":[{"prompt":"帮我理解代码目录「{{path}}」的结构、技术栈和最重要的文件。"},{"prompt":"请先扫描这个代码目录,告诉我项目类型、核心模块和建议的阅读顺序。"}]},{"id":"directory-entry","icon":"code","title":"找入口","description":"启动、配置、依赖","scenarios":[{"prompt":"帮我找出代码目录「{{path}}」里可能的启动入口、配置文件和依赖说明。"},{"prompt":"如果我要开始修改这个代码目录,应该先打开哪些文件?"}]},{"id":"directory-organize","icon":"review","title":"审查与整理","description":"模块、风险、清理建议","scenarios":[{"prompt":"帮我梳理代码目录「{{path}}」的模块边界、潜在风险和可以清理的地方。"},{"prompt":"请帮我把这个代码目录里的重要内容做一份工程视角的摘要。"}]}]}},"you":"你","assistant":"助手","tool":"工具","thinkingLabel":"思考中…","thoughts":"思考内容","thoughtsStreaming":"思考中…","thoughtsExpandHint":"展开查看模型思考过程","thinkingLevelLabel":"思考深度","thinkingLevels":{"off":"关闭","minimal":"最低","low":"低","medium":"中","high":"高","xhigh":"极高","adaptive":"自适应"},"toolInput":"输入","toolOutput":"输出","noOutput":"(无输出)","viewSteps_one":"查看 {{count}} 步","viewSteps_other":"查看 {{count}} 步","stepSearchedWeb":"搜索网页","stepReadFile":"读取文件","stepDetails":"详情","stepRunCommand":"运行命令","stepListDirectory":"查看文件夹内容","stepWriteFile":"保存文件","stepEditFile":"修改文件","stepOpenUrl":"打开链接","stepFetchUrl":"获取网页内容","stepUnknownTool":"执行:{{name}}","stepsClusterDone":{"search_one":"搜索了网页","search_other":"搜索了 {{count}} 次网页","readFile_one":"读了 1 个文件","readFile_other":"读了 {{count}} 个文件","editFile_one":"改了 1 个文件","editFile_other":"改了 {{count}} 个文件","writeFile_one":"保存了 1 个文件","writeFile_other":"保存了 {{count}} 个文件","runCommand_one":"运行了 1 个命令","runCommand_other":"运行了 {{count}} 个命令","listDir_one":"查看了 1 个文件夹","listDir_other":"查看了 {{count}} 个文件夹","openUrl_one":"打开了 1 个链接","openUrl_other":"打开了 {{count}} 个链接","fetchUrl_one":"抓取了 1 个网页","fetchUrl_other":"抓取了 {{count}} 个网页","other_one":"执行了 1 个工具","other_other":"执行了 {{count}} 个工具"},"stepsClusterIng":{"thinking":"正在思考…","search":"正在搜索网页…","readFile":"正在阅读文件…","editFile":"正在修改文件…","writeFile":"正在保存文件…","runCommand":"正在运行命令…","listDir":"正在查看文件夹…","openUrl":"正在打开链接…","fetchUrl":"正在抓取网页…","other":"正在处理…","mixed":"正在为你处理…"},"stepsClusterJoin":",","stepsClusterJoinFinal":"和","stepsClusterMoreSuffix":" 等","toolCard":{"copyPath":"复制路径","copyCommand":"复制命令","copied":"已复制","viewDiff":"查看改动","hideDiff":"收起改动","viewOutput":"查看输出","hideOutput":"收起输出","viewContent":"查看内容","hideContent":"收起内容","linesBadge":"{{count}} 行","linesPartial":"已加载 {{shown}} / {{total}} 行","diffStats":"+{{added}} −{{removed}}","sizeBadge":"{{size}}","exitCodeOk":"退出码 0","exitCodeNonZero":"退出码 {{code}}","exitCodeUnknown":"未结束","timedOut":"超时","truncatedBadge":"输出已截断","noOutput":"无输出","openInWorkspace":"在工作区中查看","rawDetails":"原始数据(开发者)"},"composerRunStatusSending":"发送中…","composerRunStatusDefault":"处理中…","composerRunningTool":"执行:{{name}}","composerStageThinking":"思考中…","composerStageSearching":"搜索中…","composerStageReading":"阅读中…","composerStageWriting":"撰写中…","composerStageExecuting":"执行中…","composerStageAnalyzing":"分析中…","attachFile":"添加附件","moreActions":"更多操作","reviewLauncher":{"actionLabel":"代码审查","title":"选择审查方式","description":"审查当前工作区。","baseTitle":"选择基准分支","commitTitle":"选择要审查的提交","customTitle":"自定义审查要求","loading":"正在加载审查上下文…","errorTitle":"无法加载审查上下文","retry":"重试","noSession":"请先打开一个聊天会话再开始审查。","close":"关闭","back":"返回","cancel":"取消","runReview":"开始审查","presetBase":"基于分支审查","presetBaseDescription":"PR 模式 · 默认 {{branch}}","presetBaseDescriptionNoDefault":"PR 模式","presetUncommitted":"审查未提交改动","presetCommit":"审查一个提交","presetCommitDescription":"最近 {{count}} 个提交","presetCustom":"自定义审查要求","presetCustomDescription":"审查未提交改动并加入额外关注点","statusClean":"工作区无改动","statusChanged":"{{count}} 个已修改","statusUntracked":"{{count}} 个未跟踪","searchBranches":"输入以搜索分支","searchCommits":"输入以搜索提交","noBranches":"没有可用的基准分支。","noCommits":"没有可用提交。","defaultBadge":"默认","remoteBadge":"远程","localBadge":"本地","customPlaceholder":"重点关注并发、持久化、回归风险…","customDescription":"自定义要求会基于当前未提交改动运行审查。"},"fileReference":{"externalBadge":"外部文件","externalDescription":"这个文件不在当前工作区内,因此不能直接在工作区编辑器中编辑。","offWorkspaceBaseDescription":"此文件不在当前会话工作区内,无法在工作区编辑器中打开。","browserOffWorkspaceDescription":"此文件不在当前会话工作区内。请复制路径后在系统或桌面客户端中打开。","locationKind":{"agent-profile":"智能体配置","xopc-skills":"技能","xopc-config":"应用配置","xopc-agents":"智能体数据","xopc-sessions":"会话数据","host":"本机文件"},"openInSettings":"在设置中打开","resolvingDescription":"正在解析文件引用…","resolveFailedDescription":"无法解析这个文件路径。","closeActions":"关闭文件操作","browserExternalDescription":"当前运行在浏览器中,无法直接打开本地文件。你可以复制路径后在系统中打开。","missingDescription":"文件当前不可用,可能已被移动、删除,或属于另一个运行环境。","invalidDescription":"无法识别这个文件路径。","openExternal":"默认应用打开","revealInFolder":"打开所在目录","copyPath":"复制路径","importToWorkspace":"导入到工作区","importInProgress":"导入中…","importDialogTitle":"把这个文件复制到当前工作区?","importDialogSourceLabel":"源文件","importDialogDestinationLabel":"目标(工作区内相对路径)","importDialogConfirm":"导入","importDialogCancel":"取消","importSuccessToast":"已导入到 {{path}}","importErrors":{"IMPORT_NOT_ALLOWED":"该文件不支持导入到工作区。","SOURCE_NOT_FOUND":"源文件已不可用。","SOURCE_NOT_FILE":"只能导入普通文件。","SOURCE_TOO_LARGE":"文件超过导入大小上限。","INVALID_DESTINATION":"无效的目标路径。","DESTINATION_BLOCKED":"目标路径受保护,请改个名字。","DESTINATION_EXISTS":"目标位置已存在同名文件。","SAME_LOCATION":"源和目标是同一个文件。","FILE_REF_EXPIRED":"文件引用已过期,请重试。","FILE_REF_FORBIDDEN":"该文件引用不属于当前会话。","OVERWRITE_DISABLED":"覆盖已被配置禁用。","IMPORT_FAILED":"导入失败,请重试。","UNKNOWN":"导入失败。"}},"workingDirectory":{"selectWorkingDirectory":"选择工作目录","chooseFolder":"选择目录…","selectPath":"选择文件夹…","recentDirectories":"最近使用的目录","noRecent":"暂无最近使用的目录","notSet":"默认工作区","defaultWorkspace":"会话工作区","copyPath":"复制路径","selectionOnlyAtNewChat":"仅可在发送首条消息前选择工作区。","lockedTapTitle":"本会话无法更改工作区","lockedTapBody":"要选择项目文件夹,请先新建对话,在发送第一条消息前点击此处选择路径。也可在「设置 → 智能体」中配置默认工作空间。","clickToCopyFullPath":"点击复制完整路径","tooltipAgentWorkspace":"智能体工作目录","tooltipOpenProjectFiles":"点击在左侧打开或关闭项目文件。","copied":"已复制","openWorkspaceMenu":"工作区选项","folderPickerRequiresDesktop":"文件夹选择需要使用桌面版(Electron)。请使用桌面端 xopc,或通过其他方式配置路径。","applyErrorTitle":"无法设置工作目录","applyErrorClose":"关闭","pathModalTitle":"工作目录","pathModalDescription":"请输入网关所在机器上的绝对路径(作为本会话的工作区文件夹)。","pathInputPlaceholder":"/绝对路径/到/文件夹","pathModalConfirm":"确定","pathModalCancel":"取消","pickerHostHint":"网关所在主机上的目录:{{hostname}}","pickerLoading":"加载中…","pickerUp":"上级","pickerUseThisFolder":"使用此文件夹","pickerManualPath":"或手动输入绝对路径","pickerApplyManual":"应用路径","pickerListError":"无法读取该位置。","pickerEmptyFolder":"空文件夹","pickerDrives":"驱动器"},"maxAttachmentsReached":"每条消息最多 {{max}} 个文件,请先移除部分附件。","maxAttachmentsTruncated":"已忽略 {{dropped}} 个文件(每条最多 {{max}} 个)。","attachmentFileTooLarge":"文件「{{name}}」过大(单文件最大 {{maxSize}})。","attachmentLoadFailed":"加载附件失败:{{name}}","clipboardFileTypeUnsupported":"剪贴板中的文件类型不支持作为聊天附件","inputPlaceholder":"提问或描述任务 — @ 引用文件,/ 使用技能和命令","currentModel":"当前对话使用的模型","modelSearchPlaceholder":"按名称、服务商或 ID 搜索…","modelNoMatches":"没有匹配的模型","contextWindowHoverShort":"{{percent}}% 上下文","contextWindowHoverNoLimit":"约 {{used}} 上下文","contextWindowAriaSummary":"上下文用量约 {{used}} / {{limit}} tokens","contextWindowAriaSummaryNoLimit":"估计上下文用量约 {{used}} tokens","modelProviderSettingsLink":"找不到模型?前往模型与能力","dropFiles":"将文件拖放到此处添加","voiceRecording":"录制语音","voiceRecordingStop":"停止录音","voiceInput":"语音输入","voiceRecordingStatus":"正在录音","voiceInputCancel":"取消录音","voiceInputConfirm":"转为文字","voiceTranscribing":"正在转写…","voicePreparing":"正在准备本地中文语音…","voicePreparingProgress":"正在准备本地中文语音… {progress}%","voiceRequestingMicrophone":"正在等待麦克风权限…","voicePreparationFailed":"本地语音准备失败,可重试","voiceNeedsPreparation":"需要准备本地语音模型","voiceRetry":"重新转写","voiceRetryAvailable":"录音已保留,可重新转写","voiceTranscribeEmpty":"未识别到语音内容。","voiceTranscribeFailed":"转写失败,请重试。","voiceSttNotConfigured":"语音转文字未配置,请在设置 → 语音中启用 STT。","voiceMicDenied":"无法使用麦克风(权限被拒绝或设备不可用)。","voicePlaybackSpeed":"播放速度","inputPlaceholderSteering":"输入后续问题,按 Enter 加入队列;点击队列项可编辑。","inputPlaceholderSteeringEdit":"正在编辑队列中的后续问题 — Enter 保存,Esc 放弃修改","steeringInterruptSend":"停止当前回复并立即发送(⌘↵ 或 Ctrl+↵)","followUpQueueAria":"后续问题队列(本轮结束后按顺序发送)","followUpQueueHeading":"后续问题","followUpQueueClickToEdit":"在输入框中编辑","followUpQueueAttachmentOnly":"(附件)","followUpQueueEmptyPreview":"(空)","followUpQueueDrag":"拖动排序","followUpQueueMoveUp":"上移","followUpQueueMoveDown":"下移","followUpQueueSteerNow":"在工具间隙注入引导内容","followUpQueueRemove":"从队列移除","followUpQueueAttachmentsNote":"含附件的队列项无法使用 ✨ 引导注入,将按顺序作为整条消息发送。","followUpQueueMaxReached":"后续问题队列已满(最多 {{max}} 条)。请删除一条或等当前回复结束。","clarifyRegionAria":"助手澄清问题","clarifyResumeHint":"提交回答后,当前助手回复会从暂停处继续。","clarifyServerTimeout":"服务端约 {{minutes}} 分钟后会超时并收回此提问。","clarifyDefaultTimeoutNote":"若超时且提供了默认项,助手可能会采用该默认答案。","clarifySkipNote":"跳过会向助手发送空回答,以便对话继续。","clarifyChoicesGroupAria":"可选答案","clarifyCustomLabel":"或输入自定义回答","clarifyPlaceholder":"输入你的回答…","clarifySend":"发送","clarifyUseDefault":"使用默认","clarifyDefaultChoice":"默认:{{text}}","clarifySkip":"跳过","clarifyTimeRemaining":"剩余时间(约):{{time}}","memoryConsentAria":"个人理解使用授权","memoryConsentTitle":"需要时,可以参考这条理解吗?","memoryConsentPurpose":"与当前问题相关:{{purpose}}","memoryConsentHint":"这次我会先不使用;你的选择会安静地用于之后的回答。","memoryConsentDeny":"不要使用","memoryConsentOnce":"仅一次","memoryConsentSession":"当前对话","memoryConsentAlways":"以后可以","memoryConsentError":"没有保存成功,请重试。","memoryCaptured":"我会记住这一点","memoryCapturedHint":"之后可以随时在「You」中修改。","memoryCapturedUndo":"撤销","browserSetupRequiredTitle":"需要先配置浏览器","browserSetupRequiredCta":"去配置浏览器","browserSetupRequiredDetailToggle":"查看诊断详情","browserSetupRequiredReasons":{"generic":"当前浏览器后端尚未就绪,请到 设置 → 浏览器 完成配置后再继续。","extension_not_installed":"尚未安装 xopc 浏览器扩展。请到 设置 → 浏览器 一键安装后再使用。","extension_bridge_offline":"扩展桥接服务未启动。请到 设置 → 浏览器 启动桥接并保持 Chrome 打开。","extension_not_connected":"桥接已启动,但 Chrome 还没连上。请打开 Chrome 并启用 xopc 扩展。","local_chromium_missing":"本地 Chromium 尚未安装。请到 设置 → 浏览器 一键安装后再使用 local 后端。","cloakbrowser_not_installed":"CloakBrowser 二进制尚未下载。请到 设置 → 浏览器 一键下载。","cdp_unreachable":"配置的 CDP 调试地址无法访问。请到 设置 → 浏览器 确认地址,并确保 Chrome 以 --remote-debugging-port 模式启动。","cloud_api_key_missing":"云端浏览器缺少 API Key。请到 设置 → 浏览器 填入凭证。"},"providerSetupRequiredTitle":"模型服务商未配置","providerSetupRequiredBody":"未找到 {{provider}} 的 API Key。请到 设置 → 服务商 添加凭证后再开始对话。","providerSetupRequiredCta":"去配置服务商","providerSetupRequiredDetailToggle":"查看详情","agentRunErrorAuthInvalidTitle":"API Key 无效","agentRunErrorAuthInvalidBody":"服务商拒绝了 {{provider}} 的 API Key,请到 设置 → 服务商 更新凭证。","agentRunErrorRateLimitTitle":"请求过于频繁","agentRunErrorRateLimitBody":"模型服务商触发了限流,请稍后再试。","agentRunErrorTimeoutTitle":"请求超时","agentRunErrorTimeoutBody":"模型服务商响应超时,请检查网络后重试。","agentRunErrorBillingTitle":"余额或配额不足","agentRunErrorBillingBody":"服务商报告余额或配额不足,请检查账户后重试。","agentRunErrorUnknownTitle":"请求失败","agentRunErrorUnknownBody":"助手未能完成本轮对话。","agentRunErrorSendFailedTitle":"发送失败","agentRunErrorSendFailedBody":"无法连接网关,请检查网络后重试。","agentRunErrorUnknownProvider":"当前服务商","agentRunErrorDetailToggle":"查看详情","agentRunErrorCtaProviders":"去配置服务商","voicePlay":"播放语音","voicePause":"暂停","voiceLoading":"正在加载音频…","voiceAriaRegion":"语音播放","voiceAwaitingMeta":"正在读取时长","voiceMessage":"语音","loadOlder":"正在加载更早的消息…","scrollToBottom":"回到底部","attachmentPreviewClose":"关闭","attachmentPreviewDownload":"下载","attachmentPreviewRemove":"移除","attachmentPreviewLoading":"正在加载文件…","attachmentPreviewText":"文本","attachmentPreviewPdf":"PDF","attachmentPreviewDocument":"文档","attachmentPreviewPresentation":"演示文稿","attachmentPreviewSpreadsheet":"表格","attachmentPreviewNoText":"无可用文本","attachmentPreviewMissingData":"缺少文件数据","attachmentPreviewLoadError":"加载文件失败","attachmentPreviewMissingAuth":"缺少身份验证","attachmentPreviewFailedPdf":"无法加载 PDF","attachmentPreviewFailedDocx":"无法加载文档","attachmentPreviewFailedExcel":"无法加载表格","attachmentPreviewPdfRendering":"正在渲染 PDF…","attachmentPreviewPdfLoadMore":"向下滚动以加载更多页","attachmentPreviewExcelTruncated":"预览仅显示前 {rows} 行 × {cols} 列。请下载文件查看完整表格。","attachmentPreviewPptxTruncated":"为保护性能,文本预览已截断。请下载文件查看完整演示文稿。","attachmentPreviewPptxSlide":"第 {n} 页","attachmentPreviewPptxEmptySlide":"(本页无文本)","attachmentPreviewOpenElsewhereHint":"请下载文件后,使用本机上的其他应用打开。","attachmentPreviewOpenElsewhereTruncated":"此处仅显示部分内容。请下载完整文件后在本机其他应用中打开。","attachmentPreviewDownloadFull":"下载文件","attachmentPreviewImage":"预览图片","attachmentPreviewFullscreen":"全屏预览","attachmentPreviewExitFullscreen":"退出全屏","messageArtifactsHeading":"本消息输出","stepTimelineThinkingStreaming":"正在思考…","stepTimelineThinkingDone":"思考完成","stepTimelineToolSearchRunning":"搜索网络中…","stepTimelineToolSearchComplete":"搜索网络完成","stepTimelineToolSearchError":"搜索失败","stepTimelineToolGenericRunning":"{{name}}中…","stepTimelineToolGenericComplete":"{{name}}完成","stepTimelineToolGenericError":"{{name}}失败","searchSourcesHeading":"搜索来源 · {{count}}","executionDrawerTitle":"执行过程","executionDrawerClose":"关闭","executionDrawerEmpty":"暂无执行步骤。","executionProgressDone":"已完成思考","executionProgressRunning":"思考与工具执行中…","executionElapsedTitle":"本次执行已耗时","messageCopyPlainText":"复制纯文本","messageCopyMarkdown":"复制 Markdown 格式","messageReadAloud":"朗读回答","messageReadAloudTitle":"AI 回答","messageReadAloudPreparing":"正在生成语音…","messageReadAloudPause":"暂停朗读","messageReadAloudResume":"继续朗读","messageReadAloudRetry":"重新生成语音","messageHelpful":"这个回答有帮助","messageNotHelpful":"这个回答需要改进","messageFeedbackUnavailable":"无法将反馈关联到这个回答。","messageUnderstandingReviewQueued":"相关理解已暂停使用,并进入待审核。","messageWhyThisAnswer":"为什么这个回答考虑了你的情况","messageWhyThisAnswerHint":"这些允许使用的个人上下文影响了本次回答。","messageContextOrigins":{"told_by_you":"你亲自告诉我的","observed":"从多次协作中注意到的","inferred":"我的理解","connected_source":"来自 {{source}}"},"messageFeedbackReasonTitle":"哪里需要改进?","messageFeedbackReasonHint":"这会帮助我修正当前回答,也尽量不再重复同样的问题。","messageFeedbackReasons":{"misunderstood_intent":"没理解我的意思","incorrect":"事实或结论不对","did_not_act":"只说了,没有行动","tone_mismatch":"表达方式不舒服","too_verbose":"太长了","other":"其他问题"},"messageFeedbackRepair":"让助手修正","messageFeedbackRepairPrompts":{"misunderstood_intent":"你刚才没有理解我真正需要什么。请重新阅读我的请求,先用一句话说明你现在理解的目标,再修正回答。","incorrect":"你刚才的回答中有不准确的内容。请重新核对相关事实或证据,简要说明哪里需要纠正,然后给我正确结果。","did_not_act":"你刚才主要在解释或制定计划,没有真正推进事情。请现在直接行动,在合适时使用可用工具,最后给出结果或明确的阻塞原因。","tone_mismatch":"你刚才的表达方式让我感觉不太舒服。请更自然、平静地回应,克制地理解我的处境,然后帮助我继续往前推进。","too_verbose":"你刚才的回答太长了。请只保留最重要的结论和下一步,简洁回答。","other":"你刚才的回答没有帮到我。请只问一个最关键的问题,确认缺少什么,再根据我的回答修正。"},"messageSaveToNote":"保存到来源 Note","messageSavedToNote":"已保存到 Note","messageExtractTask":"提取为任务","messageTaskExtracted":"已创建任务","sourceNoteBanner":"当前对话来自 Note:{{title}}","sourceNoteOpen":"打开 Note","sourceNoteFallbackTitle":"未命名笔记","sourceNoteAppendHeading":"来自讨论的沉淀","sourceNoteTaskFallbackTitle":"来自讨论的任务","sourceNoteDigestAction":"沉淀到笔记","sourceNoteDigestQueued":"已加入待发送队列","sourceNoteDigestPrompt":"请基于我们最近的讨论,为当前关联 Note「{{title}}」整理一段简洁的 Markdown 笔记沉淀。只输出适合保存到笔记里的内容;如有必要,包含“结论”、“关键点”、“待决策/开放问题”、“下一步”。不要直接修改笔记。","sourceNoteSaveSuccess":"已保存到 Note","sourceNoteSaveFailed":"保存到 Note 失败","sourceNoteTaskSuccess":"已创建任务","sourceNoteTaskFailed":"创建任务失败","sourceNoteAppendSourceLine":"> 来源:AI 对话 · {{time}}","sourceNoteSaveDialogTitle":"保存到 Note","sourceNoteSaveDialogDescription":"确认将追加到「{{title}}」的内容。","sourceNoteSaveDialogHeadingLabel":"段落标题","sourceNoteSaveDialogContentLabel":"要追加的 Markdown","sourceNoteSaveDialogCancel":"取消","sourceNoteSaveDialogConfirm":"保存到 Note","sourceNoteSaveDialogSaving":"保存中…","workItemBanner":"正在推进:{{title}}","workItemNextStepAction":"下一步","workItemSummarizeAction":"总结进展","workItemOpenItem":"打开工作项","workItemOpenProject":"打开项目","workItemPriorityLabel":"优先级","workItemUpdatedLabel":"更新","workItemDescriptionLabel":"描述","workItemNextActionLabel":"下一步","workItemBlockedLabel":"阻塞","workItemNoDetails":"暂无描述、下一步或阻塞记录。","workItemNextStepPrompt":"请围绕当前工作项「{{title}}」给出最高价值的下一步。要求具体可执行;如有必要,请补充验收标准,并明确哪些工作项字段建议更新。","workItemSummarizePrompt":"请总结当前工作项「{{title}}」的推进情况,包括已经完成/变化的内容、当前状态、阻塞点和下一步。除非我确认,不要直接修改工作项。","workItemUpdateAction":"更新工作项","workItemUpdateDrafted":"已生成更新草案","workItemUpdateApplied":"工作项已更新","workItemUpdateFailed":"更新工作项失败","workItemUpdateDialogTitle":"更新工作项","workItemUpdateDialogDescription":"应用前请确认 AI 为「{{title}}」整理的更新。","workItemUpdateDialogDescriptionFallback":"应用前请确认 AI 整理的工作项更新。","workItemUpdateStatusLabel":"状态","workItemUpdateStatusUnchanged":"不修改状态","workItemUpdateNextActionLabel":"下一步","workItemUpdateBlockedReasonLabel":"阻塞原因","workItemUpdateProgressNoteLabel":"进展记录","workItemUpdateDialogCancel":"取消","workItemUpdateDialogApply":"应用更新","workItemUpdateDialogApplying":"应用中…","codeBlockCopy":"复制","messageCopied":"已复制","mermaidRenderError":"图表渲染失败","mermaidSourceLabel":"mermaid","userMessageCopy":"复制消息","userMessageRetry":"重试","userMessageEdit":"在输入框中编辑","userMessageExpand":"展开","userMessageCollapse":"收起","userMessageRetryDisabledHint":"仅可重试最新一条自己的消息。","userMessageActionsWait":"请等待发送或回复结束后再操作。","userMessageDelete":"删除本轮对话","userMessageDeleteConfirm":"将同时删除你的消息和 AI 的回复,确定要删除吗?","userMessageDeleteConfirmTitle":"删除本轮对话","userMessageDeleteCancel":"取消","userMessageDeleteOk":"删除","commandPalette":{"noResults":"没有匹配的命令或技能","placeholder":"搜索技能与命令…","skillsSection":"技能","commandsSection":"命令","agentsSection":"智能体","currentBadge":"当前","queueBadge":"排队","queueFullBadge":"队列已满","queueFullTooltip":"跟进队列已满,请先处理","skillUnavailableBadge":"不可用","skillAgentDeniedBadge":"不可用","skillUnavailableMessage":"技能“{{name}}”当前对智能体“{{agent}}”不可用。原因:{{reason}}。请在智能体设置 → 技能中启用后再使用。","skillAgentDeniedReason":"当前智能体不可用","skillDisabledReason":"技能已禁用或依赖不满足","skillAddToAllowlistConfirm":"是否现在让当前智能体可用此技能?","showGroupedMore":"显示另外 {{count}} 条"},"goal":{"heading":"持续目标","turns":"{{used}} / {{max}} 轮","checklistHeading":"验收清单","checklistProgress":"{{done}} / {{total}} 已完成","checklistEmpty":"首轮助手回复后会自动生成清单,也可手动添加。","addCriterionPlaceholder":"添加一条验收标准…","addCriterion":"添加","markDone":"完成","markBlocked":"无法完成","removeItem":"删除","resetChecklist":"重置清单","moreActions":"更多","moreHint":"重置轮次预算、取消关联目标或查看自动检查细节","statusActive":"进行中","statusPaused":"已暂停","statusDone":"已完成","agentRunning":"智能体运行中…","pause":"暂停","resume":"继续","details":"详情","detailsTitle":"目标详情","openFullGoal":"打开完整页面","closeDetails":"关闭目标详情","tabOverview":"概览","tabCriteria":"清单","tabRuns":"记录","currentState":"当前状态","noNextAction":"暂无下一步记录。","clear":"清除目标","restart":"重置预算","detach":"取消关联","detailsToggle":"检查详情","lastVerdict":"上次判定","verdictDone":"已完成","verdictContinue":"继续推进","verdictSkipped":"已跳过","verdictDecompose":"清单已就绪","lastReason":"说明","loadFailed":"无法加载目标状态。","collapseAria":"收起目标条","expandAria":"展开持久目标","pillTitle":"{{status}} · {{turns}} — 点击展开","elapsedLabel":"用时","runHistory":"运行记录","runHistoryEmpty":"暂无记录。目标为进行中时,每次助手回复后会追加一条。","runHistoryLoading":"加载中…","runHistoryLoadFailed":"无法加载运行记录。","runHistoryTurns":"{{used}} / {{max}} 轮","runHistoryContinue":"将继续","runHistoryStop":"不继续","verdictInactive":"未激活","missionHeading":"目标执行","phaseAgentRunning":"Agent 正在执行","phasePaused":"目标已暂停","phaseDone":"目标已完成","phaseJudged":"检查已更新","lastJudgementTitle":"最后检查","showDetails":"展开","hideDetails":"收起","pausedReason":"暂停原因","judgeModel":"检查模型","parseFailures":"检查失败次数","judgeGenerated":"自动添加","userAdded":"用户添加","evidenceLabel":"证据","composerHeading":"目标","composerNoGoalAttached":"未关联目标","composerStartGoal":"开始目标","composerGoalTitlePlaceholder":"完成时应当达成什么?","composerSwitchGoal":"切换目标","composerAttachGoal":"关联目标","composerNoOpenGoals":"暂无打开的目标","composerDetachCurrent":"取消关联当前目标","composerRunWorkflow":"运行任务模板","composerNoWorkflows":"暂无模板","composerGoalStarted":"已开始目标","composerGoalAttached":"已关联目标","composerGoalDetached":"已取消关联目标","composerWorkflowStarted":"任务已开始","composerLoadGoalsFailed":"加载目标失败","composerLoadWorkflowsFailed":"加载任务模板失败","composerStartGoalFailed":"开始目标失败","composerAttachGoalFailed":"关联目标失败","composerDetachGoalFailed":"取消关联目标失败","composerStartWorkflowFailed":"启动任务失败","pendingGroup":"待完成","completedGroup":"已完成","impossibleGroup":"不可行","latestRunTitle":"最近一次执行","nextStepContinue":"继续执行","nextStepStop":"停止执行"},"atMention":{"noResults":"无匹配项","placeholder":"搜索文件…","searchError":"搜索工作区失败","files":"文件","folders":"文件夹","recentFiles":"最近","recentBadge":"最近","shiftHint":"Shift+Enter 或 Shift+点击:继续添加 @ 引用。"}}`)},D={cron:JSON.parse('{"title":"定时任务","subtitle":"任务会按计划自动执行,也可随时手动触发。在任意对话里描述你想定期做的事,即可快速创建任务。","needToken":"请先保存网关访问令牌后再管理定时任务。","globals":{"title":"全局设置","hint":"所有任务的 Cron 调度器限制与默认值。部分更改可能需要重启网关。","loading":"加载中…","enabled":"启用 Cron 调度器","maxConcurrent":"最大并发任务数","timezone":"默认时区(IANA)","retentionDays":"运行历史保留(天)","metrics":"启用 Cron 指标","save":"保存","discard":"放弃","saving":"保存中…","saved":"已保存","saveError":"保存 Cron 设置失败"},"statsRegion":"概览","tabMyTasks":"我的定时任务","tabSystemTasks":"系统任务","tabRunHistory":"运行记录","systemTasksIntro":"由网关维护的内置计划:记忆整理(dreaming)相关 cron,以及独立计时的网关心跳。具体行为请在对应设置页调整。","systemHeartbeatTitle":"网关心跳","systemHeartbeatHint":"由网关进程内的定时器按间隔触发(不会出现在 cron 任务列表中)。存在 HEARTBEAT.md 时会一并参考。","systemHeartbeatSettingsLink":"心跳设置","systemHeartbeatStatus":"状态","systemHeartbeatInterval":"节奏","systemHeartbeatEvery":"约每 {{value}} 一次。","systemDreamingTitle":"记忆整理(dreaming)","systemDreamingHint":"三阶段后台任务,用于把短期信号写入长期记忆;计划表达式随智能体记忆配置由网关同步。","systemDreamingSettingsLink":"记忆与梦境设置","systemDreamingEmpty":"当前没有已注册的 dreaming 定时任务(可能已关闭 dreaming 或尚未完成同步)。","wakeBanner":"定时任务仅在设备保持唤醒时运行;系统或屏幕休眠时,执行可能会被跳过。","keepAwake":"保持屏幕常亮","wakeLockUnavailable":"当前浏览器或环境不支持屏幕唤醒锁。","sortCreatedDesc":"创建时间(新→旧)","sortCreatedAsc":"创建时间(旧→新)","historyRangeDay":"日","historyRangeWeek":"周","historyRangeMonth":"月","filterAllTasks":"全部任务","filterAllStatuses":"全部状态","emptyHistoryTitle":"暂无执行记录","emptyHistoryHint":"定时任务开始运行后,记录将显示在这里。","jobCardMenuAria":"任务操作","scheduleBadge":{"everyMinute":"每分钟","everyNMinutes":"每 {{n}} 分钟","everyNHours":"每 {{n}} 小时","hourly":"每小时","dailyAt":"每天 {{time}}","weekdaysAt":"工作日 {{time}}","weekendsAt":"周末 {{time}}","weeklyOn":"每{{day}} {{time}}","daysAt":"每{{days}} {{time}}","monthlyAt":"每月 {{day}} 日 {{time}}","customSchedule":"自定义计划","cronExpr":"{{expr}}"},"jobsHeading":"计划任务","addJob":"新建任务","editJob":"编辑任务","name":"名称 *","namePlaceholder":"我的定时任务","nameRequired":"请填写名称","schedule":"计划(cron 表达式)*","taskKind":"任务类型","taskKindMessage":"发送消息 / AI 处理","taskKindWorkflowRun":"运行 Workflow","workflowDefinition":"工作流模板 *","workflowDefinitionPlaceholder":"选择工作流…","workflowDefinitionsLoading":"正在加载工作流…","workflowDefinitionsEmpty":"未找到工作流。可在 ~/.xopc/workflows/ 添加,或使用内置模板。","workflowDefinitionCustom":"自定义","workflowDefinitionMissing":"该工作流 ID 不在当前目录中,请重新选择或修正 ID。","workflowDefinitionRequired":"请选择工作流模板","workflowArgsRequired":"请填写所有必填的工作流参数","workflowGoal":"运行目标","workflowGoalPlaceholder":"这次运行希望达成什么?","workflowLocalOnly":"仅本地(不投递到频道)","workflowLocalOnlyHint":"在网关完成运行,记录保存在工作流页面。取消勾选可在运行结束后将结果发送到频道。","workflowDeliveryHint":"工作流结束后,将向该收件人发送摘要与结果预览。","message":"消息 *","messagePlaceholder":"助手应该做什么?","messageEdit":"编辑","messagePreview":"预览","messageMarkdownHint":"支持 Markdown(标题、列表、代码块、链接等)。","create":"创建任务","runNow":"立即执行","runStarted":"已开始执行。","jobAlreadyRunning":"这个定时任务正在运行。","delete":"删除","edit":"编辑","enabled":"已启用","disabled":"已禁用","running":"运行中","nextRun":"下次执行","status":"状态","runHistoryTitle":"运行记录","runHistoryHint":"已完成的执行保存在 xopc.db(automation_runs 表)。点击刷新更新列表。","detailRunHistory":"最近执行","detailWhatItDoes":"任务内容","detailRunSettings":"运行配置","detailRunSettingsHint":"模式、投递、智能体与计划表达式","detailResizeColumns":"调整定时任务详情左右区域宽度","detailCronExpression":"Cron 表达式","detailCronTechnical":"Cron 表达式(高级)","detailCopySchedule":"复制计划","detailCopied":"已复制","detailLastRun":"上次执行","detailNoRecentRuns":"尚未执行","detailRunCount":"成功 {{success}} · 失败 {{failed}}","detailExpandRun":"展开详情","detailCollapseRun":"收起详情","colStarted":"开始时间","colJob":"任务","colDuration":"耗时","colDetail":"结果","colChat":"会话","openChat":"打开","openChatTitle":"在聊天中打开此次执行(仅 AI 智能体隔离会话)","openWorkflow":"工作流","openWorkflowTitle":"在工作流看板打开此次运行","colWorkflow":"工作流","execStatusRunning":"运行中","execStatusSuccess":"成功","execStatusFailed":"失败","execStatusCancelled":"已跳过","noRunsYet":"该时间范围内暂无执行记录。","confirmDelete":"确定要删除此定时任务吗?","confirmRun":"立即执行此定时任务?","scheduleLabel":"计划","messageLabel":"消息","totalJobs":"任务总数","emptyStateCta":"创建第一个任务","channel":"消息通道","channelLocal":"本地(不发出)","deliveryTargetLocalChannel":"本地消息通道 — 内容仅保存在本机","recipient":"接收方 *","recipientPlaceholder":"Telegram:填写数字形式的会话 ID,或从下方最近会话中选择","refreshList":"刷新","refreshRecipientHint":"从最近会话重新加载列表","selectRecipient":"— 请选择 —","noRecentChatsOption":"暂无最近会话","deliveryTarget":"投递目标","scheduleHintPreset":"选择预设或输入自定义 cron 表达式","schedulePicker":{"scheduleTimeLabel":"计划时间","modeNoRepeat":"不重复","modeInterval":"间隔","intervalKindMinutes":"分钟","intervalKindHours":"小时","modeHourly":"每小时","modeDaily":"每天","modeWeekly":"每周","modeMonthly":"每月","modeCustom":"自定义表达式","minuteUnit":"分","minuteAtHour":"分钟","intervalMinutes":"间隔分钟数","intervalHours":"间隔小时数","hourUnit":"小时","dayOfMonth":"日期","customCronHint":"标准五段 cron:分 时 日 月 周","weekdays":["一","二","三","四","五","六","日"]},"mode":"模式","modeDirect":"直接发送消息到消息通道,不经过 AI 处理","modeAgent":"由 AI 智能体处理消息并生成回复后发送","modeDirectOption":"直接发送(发到消息通道)","modeAgentOption":"AI 智能体(先由模型处理再发送)","agentLocalOnly":"仅本地运行(保存对话,不发送到消息通道)","agentLocalOnlyHint":"在本机运行智能体。对话以 cron 类型会话保存到默认或所选智能体下(任务 id 包含在会话键中);不向 Telegram/CLI 投递。","deliveryLocalOnly":"仅本地 — 对话以 cron 会话保存到该智能体目录","agentProfile":"智能体","agentProfileHint":"仅在「AI 智能体」模式下生效。选默认则使用网关配置的默认智能体。","agentProfileDefault":"默认智能体","workingDirectoryLabel":"工作目录","workingDirectoryHint":"可选。填写网关所在机器上的绝对路径;不填则使用该智能体的默认工作空间。","workingDirectoryReset":"使用智能体默认","model":"模型","save":"保存","failedToLoadJobs":"加载任务失败","scheduleRequired":"计划表达式和消息为必填项","chatIdRequired":"会话 ID 为必填项","failedToCreateJob":"创建任务失败","failedToUpdateJob":"保存任务失败","failedToToggleJob":"切换任务状态失败","actionFailed":"操作失败","enterManuallyOrSelect":"手动输入或从最近聊天中选择","noRecentChats":"未找到最近会话。请手动填写会话 ID(例如 Telegram 为 123456789)","refresh":"刷新","close":"关闭","cancel":"取消","loading":"加载中…","schedulePresets":{"custom":"-- 自定义(在下方输入) --","everyMinute":"每分钟","every5Minutes":"每 5 分钟(默认)","every10Minutes":"每 10 分钟","every15Minutes":"每 15 分钟","every30Minutes":"每 30 分钟","everyHour":"每小时","every2Hours":"每 2 小时","every4Hours":"每 4 小时","every6Hours":"每 6 小时","every12Hours":"每 12 小时","everyDayMidnight":"每天午夜","everyDay9AM":"每天早上 9 点","everyDay9PM":"每天晚上 9 点"},"timeLabels":{"overdue":"已过期","lessThanMinute":"不到 1 分钟","minutes":"{{count}} 分钟","hours":"{{count}} 小时"},"lastActiveLabels":{"justNow":"刚刚","minutesAgo":"{{count}} 分钟前","hoursAgo":"{{count}} 小时前","daysAgo":"{{count}} 天前"},"templateFilterAll":"全部","fromTemplate":"从模版创建","templatePickerHint":"按分类浏览模版,然后创建定时任务。","templateSearchPlaceholder":"搜索模版…","templatesEmptyHint":"没有匹配的模版。","templateCategories":{"daily":"每日","monitoring":"监控","reports":"报告","automation":"自动化"},"templates":{"morning_briefing":{"title":"早间简报","description":"天气/出行提示(无 API 则如实说明)、你关心领域要闻、今日优先三件事——在提示词里改主题列表。","prompt":"生成一份**早间简报**,几分钟内读完。\\n- **天气/出行**:若无真实预报接口,请说明限制;仅根据我写的地区/季节给**一条**穿衣或通勤提示,或跳过。\\n- **要闻**:我关心的领域(**请编辑**):**(例:本地、宏观、科技政策、球队等)**;有检索则概括约 24 小时内要点并标注来源类型;无检索则给出我应**依次打开哪些首页**。\\n- **今日优先 3 件**:尽量从工作区笔记/待办推断;否则请我在文末一次性补充。\\n- **不要编造链接、引语或具体气温数字**。"},"standup_prep":{"title":"站会准备","description":"根据近期 Git 与文件变动起草站会式更新,便于口头汇报。","prompt":"帮我准备**站会发言稿**:\\n- 若可访问 Git:概括**自上次站会或昨天以来**的提交主题(不要堆 hash),若有明显风险路径可点出。\\n- 若不可用:给出我本地应执行的**简短命令**以便下次自动生成。\\n- **文件/改动线索**:从工作区可见信息推断,不确定请标注「推断」。\\n- **阻塞**:最多 3 条,可写「暂无」。\\n- **今天打算做什么**:一句话。\\n- 控制在约 **90 秒**可念完。"},"meeting_prep":{"title":"会议准备","description":"会前运行 meeting_prep 工作流,生成议程、要点与风险。","prompt":"工作流 meeting_prep — 请在表单中填写会议主题与参会人。"},"end_of_day_wrap_up":{"title":"日终小结","description":"总结今日进展、未闭环与明日第一件事。","prompt":"做**工作日日终小结**:\\n- **已完成**:最多 5 条(推断请标注)。\\n- **未闭环/搁置**:最多 4 条,语气中性。\\n- **明日登录后第一件事**:仅一条,动作具体。\\n- 尽量引用工作区内任务/日志;若无则说明缺口。\\n- 不做价值评判。"},"inbox_triage":{"title":"收件箱式梳理","description":"优先列出紧急待跟进项;若工作区无邮件内容则给可执行的梳理流程。","prompt":"协助**收件箱/待处理**梳理(**不假设**能登录真实邮箱):\\n- 若工作区有导出邮件、`.eml`、或关于邮件的笔记:按**紧急跟进优先**列出条目及建议下一步。\\n- 若无材料:给出**五步梳理流程**(文件夹/标签、先处理谁、如何处理老邮件等),并请我在下列 **VIP 发件人或域名**(**请编辑**)基础上下次粘贴若干主题行。\\n- **不要声称已读取真实收件箱**。"},"competitor_watch":{"title":"竞品动态","description":"按你列出的竞品做新闻、产品更新与价格信号摘要;有检索才写细节。","prompt":"竞品或对标名单(**请编辑**):**(填写公司/产品名)**。\\n- 有网络检索:概括约**一周**内公开动态:新闻、产品/changelog、价格或套餐变化;区分**已核实**与**传闻**。\\n- 无检索:列出**应查看的官方入口**(官网、定价页、changelog)及建议核对顺序,**不要编造更新**。\\n- **禁止捏造报道引语、数字或链接**。"},"trending_topics_monitor":{"title":"热点话题追踪","description":"跟踪你列出的行业或社区讨论热度与要闻线索。","prompt":"我关注的行业/社区/话题(**请编辑**):**(例:金融科技、独立游戏、本城论坛、AI 工具)**。\\n- 有检索:用 **5~7 条**要点概括本周**讨论变热或异常活跃**的方向,并注明大致平台类型(新闻/论坛类/HN 类等),勿捏造具体帖子链接。\\n- 无检索:给出**检索词组合**与**建议浏览顺序**。\\n- 若有争议或易误传话题,用一行提示**核实风险**。"},"tech_radar_stack":{"title":"技术雷达","description":"关注你列出的技术栈近期的发版与官方安全通告入口,不臆造 CVE。","prompt":"技术栈清单(**请编辑**):**(例:Node LTS、Postgres、某云产品、Android SDK)**。\\n- 汇总约 **14 天**内值得注意的发版、弃用说明,信息来源限于**官方博客、changelog、注册表**。\\n- 安全相关只指向**官方安全公告渠道**;**严禁编造 CVE 编号**或虚假漏洞版本。\\n- 若可见锁文件可概括生态;信息不足则说明缺哪份文件。"},"dependency_check_audit":{"title":"依赖检查","description":"根据仓库生态建议审计命令与关注项,不假装已跑过扫描。","prompt":"从工作区识别包管理文件(`package.json`、`go.mod`、`pyproject.toml` 等)。\\n- 为每种生态给出**一条**文档中常见的审计/检查命令(若不存在则说明)。\\n- 用文字说明**应关注什么**(大版本、被撤回包、EOL 运行时等),**不要编造扫描结果**。\\n- **不要捏造 CVE**。"},"weekly_review":{"title":"周报式回顾","description":"一周提交主题、未闭环与下周三块重点。","prompt":"写一份**周末/周五周报式回顾**:\\n- **本周交付主题**(结合 git 与笔记,若 git 不可用则说明)。\\n- **仍挂心的事**(≤6 条)。\\n- **下周 3 个标题级重点**。\\n- **一条**「该停做或该委派」的建议(仅在过载迹象明显时)。\\n- 语气像给上级的短简报。"},"code_quality_report":{"title":"代码质量报告","description":"从脚本与 CI 配置推断如何跑 lint/类型检查,并说明如何阅读输出——不虚构错误数量。","prompt":"在工作区查找 **lint / 类型检查 / 格式化** 相关脚本(`package.json`、Makefile、CI 配置等)。\\n- 给出建议的**本地执行顺序**。\\n- 说明**如何扫一眼输出**(错误类别、易 flaky 测试、类型债热点),**不要编造错误条数**。\\n- 若项目无脚本,按识别出的语言给**最小**起步建议并注明局限。"},"git_activity_summary":{"title":"Git 活动摘要","description":"归纳近期提交、活跃分支与热点文件;此处不能跑 git 则只给命令。","prompt":"总结约 **最近 7 天** 的 Git 活动:提交**主题**、值得注意的**分支**、**热点文件**。\\n- 若当前环境不能执行 git:**不要虚构**,改为列出我本地可复制的命令以生成同样摘要。\\n- 避免罗列大量 hash,保持可扫读。"},"user_feedback_digest":{"title":"用户反馈摘要","description":"从工作区内的反馈笔记、工单导出等聚类主题与痛点;无材料则给收集模板。","prompt":"我存放反馈的位置或命名习惯(**请编辑**):**(例:`feedback/`、导出的 issues、问卷摘要)**。\\n- 从可读文本中聚类**重复主题**、**大致情绪**、**主要痛点**(≤5)。\\n- 注意**脱敏**:不展开无关个人信息。\\n- 若无内容:给出我下次应粘贴/保存的**简短结构模板**。"},"content_repurpose":{"title":"内容改写分发","description":"用 content_repurpose 工作流将一篇内容改写为多平台草稿。","prompt":"工作流 content_repurpose — 请在表单中粘贴源内容与目标平台。"},"stale_todo_or_issue_sweep":{"title":"陈旧待办清扫","description":"扫描 TODO/FIXME 或简易 issue 列表,建议保留/关闭/拆分,不自动改文件。","prompt":"扫描工作区中的 **TODO/FIXME/HACK** 或 Markdown 里的简易任务表。\\n- 列出最多 **10 条**「可能陈旧」的项(根据模糊措辞或文件很少再改动等启发式),每条给**建议动作**:关闭、拆分、排期。\\n- **仅建议,不修改文件**。\\n- 若扫描不完整,说明原因。"},"release_notes_or_changelog_draft":{"title":"发版说明草稿","description":"结合版本号文件与近期提交起草 changelog 草案,需人工核对后发布。","prompt":"为**下一次**版本发布起草 **changelog / 发版说明** 草案:\\n- 读取 `CHANGELOG`、以及 `package.json` / `Cargo.toml` 等版本字段(若存在)。\\n- 从可见提交归纳**面向用户**的变更;无法确定上次标签则退化为「最近一周」。\\n- 不确定条目请标注「待核实」。\\n- 语气克制,避免营销夸张。"},"client_proposal":{"title":"客户方案","description":"用 client_proposal 工作流根据简报起草客户方案。","prompt":"工作流 client_proposal — 请在表单中填写客户简报与报价要点。"},"offer_design":{"title":"产品/报价设计","description":"每月用 offer_design 工作流复盘能力与报价包装。","prompt":"工作流 offer_design — 请在表单中填写技能、受众与约束。"},"decision_compare":{"title":"方案对比","description":"用 decision_compare 工作流比较选项与权衡。","prompt":"工作流 decision_compare — 请在表单中填写决策问题与备选方案。"},"workspace_cleanup_suggestions":{"title":"工作区清理建议","description":"列出大体积构建产物、缓存、日志等供周末前审视,不自动删除。","prompt":"为**周末前清理**给建议:\\n- 尽量发现**构建产物、缓存、日志**等;用表格:路径 | 可能原因 | 风险 | 建议(仅审视/归档)。\\n- **禁止删除或移动**。\\n- 若无法读磁盘占用,说明限制并给通用模式。"},"smoke_or_ci_health_reminder":{"title":"冒烟 / CI 健康","description":"从 CI 与脚本提炼本周值得跑的检查及如何确认通过,不谎称 CI 已绿。","prompt":"根据 CI 配置与脚本,列出本周值得做的 **smoke / 健康检查**:每条含**命令**、**期望通过信号**、**建议频率**。\\n- 若无 CI 文件:按仓库类型给**最小手工冒烟**路径。\\n- **不要在没有证据时声称 CI 已通过**。"}}}')},O={logs:{title:`日志`,subtitle:`网关运行时的诊断与历史记录。`,needToken:`请先保存网关访问令牌后再查看日志。`,filters:`筛选`,level:`级别`,searchPlaceholder:`搜索消息或模块…`,module:`模块`,allModules:`全部模块`,timeRange:`时间范围`,from:`开始`,to:`结束`,clear:`清除`,refresh:`刷新`,autoRefresh:`自动刷新`,pause:`暂停`,liveHint:`通过 SSE 实时推送`,logFiles:`日志文件`,filesEmpty:`磁盘上暂无日志文件`,loadMore:`加载更多`,showingCount:`已加载 {{count}} 条`,moreAvailable:`可能还有更早的条目`,noLogs:`没有匹配的条目`,noLogsDescription:`请调整筛选或搜索,或稍后再试。`,loading:`加载中…`,loadError:`加载日志失败`,details:`日志详情`,close:`关闭`,time:`时间`,message:`消息`,metadata:`元数据`,statsRegion:`抽样(近期文件)`,statsHint:`数量为近期日志文件抽样统计,非全量。`,statsDetailTitle:`各级别数量`,logDir:`目录`,requestId:`请求 ID`,sessionKey:`会话 Key`,sessionId:`会话 ID`,phase:`阶段`,stackTrace:`堆栈跟踪`,filterByRequestId:`按请求筛选`,filterBySessionId:`按会话筛选`,openChat:`打开对话`,runtimeErrors:`错误(24h)`,logLevelTitle:`日志级别`,logLevelHint:`运行时网关日志详细程度(立即生效)。`,logLevelLoadError:`读取日志级别失败`,logLevelSaveError:`更新日志级别失败`,exportLogs:`导出`,exportHint:`下载当前已加载的条目。`,exportJson:`JSON`,exportCsv:`CSV`,errorSummaryTitle:`错误聚合`,errorSummaryHint:`按所选时间范围内近期 error/fatal 日志分组。`,presetAll:`全部`,presetErrors:`错误`,presetWarnPlus:`警告+`,presetInfoPlus:`信息+`,presetVerbose:`调试`,presetOther:`更多`,levelPresetAria:`按日志级别筛选`,refreshModeAria:`日志刷新方式`,refreshManual:`手动`,refreshLive:`实时`,filtersMore:`更多筛选`,filtersDialogTitle:`更多筛选`,filtersDialogDesc:`时间范围与自定义日志级别。`,filtersDone:`完成`,levelCustom:`自定义级别`,levelCustomHint:`点选以包含或排除;全部不选表示所有级别。`,copyMessage:`复制消息`,copyJson:`复制 JSON`,copied:`已复制`,levelNames:{trace:`跟踪`,debug:`调试`,info:`信息`,warn:`警告`,error:`错误`,fatal:`致命`}}},k={goalsPage:{title:`目标`,refresh:`刷新`,newGoalPlaceholder:`你想达成什么结果?`,searchPlaceholder:`搜索目标…`,create:`新建目标`,attempt:`尝试 {{attempts}}/{{max}}`,turns:`轮次 {{used}}/{{max}}`,checklistProgress:`清单 {{done}}/{{total}}`,checklist:`验收清单`,openDetails:`打开详情`,closeDetails:`关闭详情`,fullDetails:`查看详情`,currentBlocker:`当前阻塞`,nextAction:`下一步`,noNextAction:`尚未记录下一步。`,noChecklist:`暂无验收清单。`,prioritySummary:`{{priority}}优先级`,deadlineSummary:`截止 {{deadline}}`,priorities:{low:`低`,normal:`普通`,high:`高`},createDialog:{title:`新建目标`,description:`先写下想要达成的结果,xopc 可以帮你补充验收标准和完成证据。`,simpleStartTitle:`描述目标`,simpleStartHint:`说明想要达成的结果;验收标准和完成证据可以稍后补充。`,goalTitle:`目标`,goalFallback:`这个目标`,goalDescription:`上下文`,descriptionPlaceholder:`相关背景、限制条件、已有进展…`,addAttachment:`添加附件`,criteriaTitle:`验收标准`,criteriaHint:`xopc 会根据这些标准判断目标是否完成。`,checklistPolicyEmptyOnly:`如果已经填写验收标准,首次执行时不会再自动补充。`,checklistPolicySupplementExisting:`首次执行后,xopc 仍可补充不重复的验收标准。`,aiDraft:`完善完成方案`,drafting:`正在完善…`,draftFailed:`暂时无法完善目标,请稍后重试。`,criteriaPlaceholder:`验收标准 {{index}}`,addCriteria:`添加验收标准`,removeCriteria:`移除验收标准`,completionPlan:`完成计划`,completionPlanHint:`可选:说明如何判断这个目标已经完成。`,contractTitle:`完成约定`,contractHint:`明确预期结果、范围和所需证据,便于 xopc 判断目标是否完成。`,objective:`期望结果`,objectivePlaceholder:`目标完成时,什么结果应当可被观察和验证?`,scopeBoundary:`范围边界`,scopeBoundaryPlaceholder:`哪些内容在范围内,哪些内容不应改动?`,evidencePlan:`完成证据`,evidencePlanHint:`写明可证明成功的测试、产物、报告或人工确认。`,evidencePlanPlaceholder:`证据要求 {{index}}`,addEvidence:`添加证据要求`,removeEvidence:`移除证据要求`,defaultEvidencePlan:[`通过相关测试或可检查的交付产物验证验收标准。`],advanced:`执行设置`,priority:`优先级`,deadline:`完成期限`,deadlineNone:`不设置`,deadlineToday:`今天 23:59`,deadlineTomorrow:`明天 23:59`,deadlineFriday:`本周五 23:59`,deadlineCustom:`自定义`,deadlineAt:`具体时间`,maxTurns:`最大执行轮次`,agentId:`由谁执行`,defaultAgent:`默认`,agentPrimaryModel:`主模型:{{model}}`,judgeModel:`验收模型`,judgeModelPlaceholder:`使用系统默认`,agentModelRoles:`当前 Agent 的模型角色`,judgeRole:`验收`,configuredModels:`已配置模型`,titleRequired:`目标标题不能为空。`,cancel:`取消`,create:`创建目标`,aiChecklistTemplates:[`{{goal}} 的最终结果清晰且可验证。`,`完成 {{goal}} 所需的实现或操作步骤均已完成。`,`已有证据可以证明结果,例如测试、命令输出、文件、链接或说明。`,`{{goal}} 的已知阻塞和遗留问题已经解决或明确记录。`]},workbench:{pageDescription:`查看目标进展,处理需要关注的事项。`,tabs:{label:`目标视图`,workbench:`概览`,all:`进行中`,history:`历史`},hero:{eyebrow:`当前状态`,attentionOne:`有 1 个目标需要处理`,attentionMany:`有 {{count}} 个目标需要处理`,attentionDescription:`建议先处理最重要的问题,再继续执行。`,runningOne:`有 1 个目标正在处理中`,runningMany:`有 {{count}} 个目标正在处理中`,runningDescription:`这些目标正在执行、等待执行或等待重试。`,readyOne:`有 1 个目标可以继续`,readyMany:`有 {{count}} 个目标可以继续`,readyDescription:`选择一个目标继续执行。`,calm:`当前没有需要处理的目标`,calmDescription:`当前没有正在执行或待处理的目标。`,calmDescriptionWithPaused:`当前没有正在执行或待处理的目标。另有 {{paused}} 个目标已暂停。`,nextFocus:`建议优先处理`},status:{blocked:`当前受阻`,needsInput:`需要你补充`,executionFailed:`执行失败`,running:`正在执行`,queued:`等待执行`,retryWaiting:`已安排重试`,ready:`待继续`,paused:`已暂停`,done:`已完成`,archived:`已归档`},actions:{handle:`查看并处理`,review:`验收成果`,viewExecution:`查看进度`,continueExecution:`继续执行`,working:`处理中…`,retryLoad:`重试`},row:{inputNeeded:`打开目标并补充缺失的信息。`,reviewBlocker:`查看阻塞原因后再继续。`,executionFailed:`查看最近一次执行失败的原因,然后重试。`,executionInProgress:`xopc 正在执行下一步。`,pausedByUser:`这个目标已暂停,可以随时继续。`,completedReview:`目标已完成,可以验收成果。`,archived:`这个目标已归档,不再出现在进行中的目标中。`,highPriority:`高优先级`,lastSucceeded:`上次执行成功 · {{time}}`,lastFailed:`上次执行失败 · {{time}}`,lastFinished:`上次执行结束 · {{time}}`,latestExecution:`最近一次执行`},sections:{attention:{title:`需要处理`,description:`这些目标受阻、缺少信息或执行失败。`},running:{title:`正在处理`,description:`这些目标正在执行、等待执行或等待重试。`},ready:{title:`可以继续`,description:`这些目标已有明确的下一步,可以继续执行。`},later:{title:`已暂停`,description:`这些目标暂不执行,可以随时继续。`}},filters:{agent:`按 Agent 筛选`,status:`按状态筛选`,priority:`按优先级筛选`,allAgents:`全部 Agent`,allStatuses:`全部状态`,allPriorities:`全部优先级`,clear:`清除筛选`},empty:{healthyTitle:`当前没有需要处理的目标`,healthyDescription:`当前没有正在执行或待处理的目标。`,healthyDescriptionWithPaused:`当前没有正在执行或待处理的目标。另有 {{paused}} 个目标已暂停。`,noOpenTitle:`没有符合条件的目标`,noOpenDescription:`调整搜索或筛选条件,也可以新建目标。`,noHistoryTitle:`还没有历史目标`,noHistoryDescription:`已完成或已归档的目标会显示在这里。`},history:{title:`历史目标`,description:`查看已完成和已归档的目标,也可以重新打开。`},undo:{message:`“{{title}}”的状态已更新。`,action:`撤销`,dismiss:`关闭`}},actions:{continue:`继续`,pause:`暂停`,reopen:`重新打开`,complete:`完成`,archive:`归档`,unarchive:`取消归档`},errors:{load:`目标加载失败,请重试。`,create:`目标创建失败,请重试。`,action:`操作失败,请重试。`},statuses:{active:`进行中`,paused:`已暂停`,blocked:`受阻`,needs_input:`待补充`,done:`已完成`,archived:`已归档`,queued:`等待执行`,running:`执行中`,retry_waiting:`等待重试`,succeeded:`成功`,failed:`失败`,skipped:`已跳过`},sources:{manual:`手动`,cron:`定时`,workflow:`工作流`,api:`API`}},goalDetailPage:{back:`目标`,loading:`正在加载目标…`,notFound:`未找到目标。`,notSet:`未设置`,noDeadline:`无截止日期`,default:`默认`,agent:`Agent {{agentId}}`,turns:`轮次 {{used}}/{{max}}`,checklistProgress:`清单 {{done}}/{{total}}`,prioritySummary:`{{priority}}优先级`,currentBlocker:`当前阻塞`,nextAction:`下一步`,noNextAction:`尚未记录下一步。`,chat:`聊天`,refresh:`刷新`,pause:`暂停`,archive:`归档`,archiveConfirm:`归档后,这个目标将移至历史记录。仍要归档吗?`,goalBrief:`目标说明与完成约定`,progressPanel:{activeTitle:`可以继续执行`,blockedTitle:`目标暂时无法继续`,blockedFallback:`xopc 暂时无法安全地继续。请先查看阻塞原因,再继续执行或运行诊断工作流。`,needsInputTitle:`需要你补充信息`,needsInputFallback:`补充缺失信息后,再继续这个目标。`,pausedTitle:`目标已暂停`,pausedFallback:`需要时可以随时恢复并继续执行。`,doneTitle:`目标已完成`,doneFallback:`验收完成证据后,可以归档这个目标。`,executionFinishedTitle:`执行已结束,等待验收`,executionFinishedFallback:`执行结果已经生成,但完成证据或业务结果仍需确认。验收后才能将目标标记为完成。`,reviewPendingLabel:`待验收`,archivedTitle:`已归档`,archivedFallback:`这个目标保留在历史记录中,不再出现在进行中的目标里。`,lastCheck:`上次检查 {{time}}:{{reason}}`,evidenceNeeded:`完成前仍需补充的证据`,completion:`完成度`,execution:`执行进度`,evidence:`证据`,evidenceCount:`已记录 {{count}} 条`,reviewNeeded:`仍有证据待验收`,reviewComplete:`证据已验收`,outcome:`业务结果`,outcomeNotSet:`尚未设置`,outcomeNotSetHint:`设置基线、当前值和目标值`,outcomeSummary:`基线 {{baseline}} · 当前 {{current}} · 目标 {{target}}{{unit}}`,currentMissing:`待测量`,continueExecution:`继续执行下一步`,reviewEvidenceAction:`验收证据`,turnBudget:`轮次预算`},outcomeMetric:{title:`业务结果指标`,hint:`设置基线、当前值和目标值,用于确认目标是否真正产生了预期结果。`,achieved:`结果已达成`,notAchieved:`结果未达成`,name:`指标`,namePlaceholder:`例如 GitHub Stars`,baseline:`基线`,current:`当前值`,target:`目标值`,unit:`单位`,unitPlaceholder:`例如 stars`,source:`数据来源`,sourcePlaceholder:`链接或说明`,clear:`清除指标`,save:`保存结果指标`},actionRail:{nextTitle:`建议下一步`,continueAction:`让 xopc 继续`,needsYou:`待你处理`,defineOutcome:`补充可验证的业务结果指标`,reviewEvidenceCount:`有 {{count}} 项证据待验收`,latestCheckContinue:`上次检查建议继续执行`,setOutcome:`设置结果指标`,reviewEvidence:`验收证据`,automation:`自动执行与建议`},executionProgress:{runTitle:`第 {{number}} 次执行`,noRuns:`尚无执行记录。`,systemActivity:`系统活动与技术记录({{count}})`},acceptance:`验收`,acceptanceHint:`查看验收标准及相关证据。`,goalContract:`完成约定`,editContract:`编辑完成约定`,saveContract:`保存完成约定`,contractObjective:`期望结果`,contractObjectivePlaceholder:`描述用户可见的完成结果…`,scopeBoundaryPlaceholder:`说明范围内和范围外的内容…`,acceptanceCriteria:`验收标准`,contractLinesHint:`每行一项…`,scopeBoundary:`范围边界`,completionEvidence:`完成证据`,evidenceRequirements:`证据要求`,evidenceRequirementProgress:`已通过 {{approved}}/{{total}}`,linkedEvidenceCount:`已关联 {{count}} 条证据`,provesRequirement:`对应的证据要求`,reviewEvidence:`让 xopc 验证`,approveEvidence:`确认通过`,evidenceRequirementStatuses:{pending:`待验证`,ai_verified:`xopc 已验证,等待你确认`,approved:`已通过`,rejected:`未通过`},latestJudgement:`最近验收:{{status}}`,latestNext:`下一步:{{next}}`,checklist:`验收清单`,addAcceptancePlaceholder:`添加验收标准…`,add:`添加`,noChecklist:`暂无验收标准。下次执行时,xopc 可以自动生成。`,markPending:`标记为待处理`,markCompleted:`标记为完成`,markImpossible:`标记为不可行`,deleteChecklistItem:`删除清单项`,evidence:`证据`,kind:`类型`,title:`标题`,evidenceTitlePlaceholder:`证据标题…`,uriOrPath:`URI 或路径`,uriOrPathPlaceholder:`URI 或路径…`,summary:`摘要`,summaryPlaceholder:`摘要…`,addEvidence:`添加证据`,noEvidence:`还没有完成证据。`,timeline:`时间线`,timelineHint:`按时间查看目标执行、工作流、证据和系统事件。`,noTimeline:`当前视图暂无记录。`,goalSettings:`目标设置`,deadline:`截止日期`,judgeModel:`验收模型`,created:`创建时间`,updated:`更新时间`,editDetails:`编辑详情`,description:`描述`,priority:`优先级`,maxTurns:`最大轮次`,blockedReason:`阻塞原因`,saveDetails:`保存详情`,workflow:`工作流`,workflowHint:`使用预设流程执行这个目标。`,activeCount:`正在执行:{{count}}`,definition:`定义`,noWorkflows:`暂无工作流`,workflowGoal:`工作流目标`,runWorkflow:`运行工作流`,recentWorkflowRuns:`最近的工作流执行`,viewTimeline:`查看时间线`,cancel:`取消`,retry:`重试`,run:`运行`,recoveryNeeded:`需要恢复`,failedCount:`{{count}} 个失败`,exitCode:`退出码 {{code}}`,outputBytes:`{{bytes}} 字节`,fuzzyMatch:`模糊匹配`,primaryActions:{resolveBlocker:`处理阻塞`,resume:`恢复目标`,completed:`已完成`,archived:`已归档`,continue:`继续`},timelineFilters:{all:`全部`,queue:`队列`,goal_run:`目标运行`,workflow_run:`工作流运行`,event:`事件`,evidence:`证据`},evidenceKinds:{file:`文件`,diff:`差异`,command:`命令`,test:`测试`,link:`链接`,message:`消息`,artifact:`产物`},statuses:{active:`进行中`,paused:`已暂停`,blocked:`受阻`,needs_input:`待补充`,done:`已完成`,archived:`已归档`,queued:`等待执行`,running:`执行中`,succeeded:`成功`,failed:`失败`,timeout:`超时`,cancelled:`已取消`,continue:`继续执行`,decompose:`拆分任务`},priorities:{low:`低`,normal:`普通`,high:`高`},errors:{load:`目标加载失败,请重试。`,loadWorkflows:`工作流加载失败,请重试。`,continue:`无法继续目标,请重试。`,save:`目标保存失败,请重试。`,action:`操作失败,请重试。`,startWorkflow:`工作流启动失败,请重试。`,cancelWorkflow:`无法取消工作流,请重试。`,retryWorkflow:`无法重试工作流,请稍后再试。`,addChecklist:`验收标准添加失败,请重试。`,updateChecklist:`验收标准更新失败,请重试。`,deleteChecklist:`验收标准删除失败,请重试。`,addEvidence:`证据添加失败,请重试。`}}},A={notes:{title:`笔记`,needToken:`请先保存网关令牌以管理笔记。`,searchPlaceholder:`搜索笔记…`,searchDialogTitle:`搜索笔记`,searchClose:`关闭搜索`,searchClear:`清除搜索`,searchEmptyTitle:`搜索所有笔记`,searchEmptyDescription:`输入关键词查找标题、正文、标签和附件内容。`,searchNoResults:`没有找到相关笔记`,searchNoResultsDescription:`换一个关键词,或检查是否已经归档。`,searchResultsCount:`{{count}} 条结果`,quickCapturePlaceholder:`写下你的想法…`,createBlankNote:`新建空白笔记`,creatingBlankNote:`新建中…`,createBlankShortcut:`新建空白笔记 (⌘/Ctrl N)`,createBlankFailed:`无法新建笔记`,createBlankFailedHint:`请稍后再试。`,send:`发送`,filterAll:`全部`,filterInbox:`收件箱`,filterProcessed:`已处理`,filterArchived:`已归档`,kindAll:`所有类型`,kindThought:`想法`,kindTodo:`待办`,kindVoice:`语音`,kindMedia:`媒体`,kindBookmark:`书签`,libraryTitle:`资料库`,libraryDescription:`围绕捕获、整理和行动的专注视图。`,viewRecent:`最近`,viewRecentDescription:`最新笔记`,viewInboxDescription:`未处理捕获`,viewPinnedDescription:`重要笔记`,viewTasks:`任务`,viewTasksDescription:`行动项`,viewVoiceDescription:`语音捕获`,viewMediaDescription:`图片和文件`,viewBookmarksDescription:`保存的链接`,viewProcessedDescription:`已整理笔记`,viewArchiveDescription:`已收纳`,emptyEditorTitle:`选择一条笔记`,emptyEditorDescription:`从列表中选择笔记进行编辑、查看历史,或继续和 AI 讨论。`,noteOutsideCurrentView:`当前打开的笔记不在此视图中。你可以继续编辑,或切换左侧视图查看它。`,resizeNotesList:`调整笔记列表宽度`,collapseNotesList:`收起笔记列表`,expandNotesList:`展开笔记列表`,noNotes:`暂无笔记`,noNotesDescription:`使用上方输入框记录你的第一个想法。`,pinned:`已置顶`,delete:`删除`,archive:`归档`,pin:`置顶`,unpin:`取消置顶`,editTags:`编辑标签`,noteCount:`{{count}} 条笔记`,back:`返回`,modeEdit:`编辑`,modeSource:`源码`,modePreview:`预览`,saving:`保存中…`,emptyPreview:`空笔记 — 切换到编辑模式开始写作。`,imageUploadFailed:`图片上传失败`,imageUploadFailedHint:`请检查网络连接后重试。`,imageNote:`图片笔记`,noText:`无文字`,saveFailed:`笔记保存失败`,saveFailedHint:`最近的编辑可能尚未保存。`,voiceUploadFailed:`语音上传失败`,voiceUploadFailedHint:`请检查麦克风权限后重试。`,recording:`录音中 · {{seconds}}秒`,voicePlay:`播放`,voicePause:`暂停`,readAloud:`朗读`,readAloudPreparing:`生成中…`,readAloudPause:`暂停`,readAloudResume:`继续`,readAloudRetry:`重试`,lightboxClose:`关闭图片预览`,titlePlaceholder:`无标题`,notFoundTitle:`笔记不存在`,notFoundDescription:`这条笔记可能已被删除或移动。`,justNow:`刚刚`,minutesAgo:`{{n}}分钟前`,today:`今天`,yesterday:`昨天`,daysAgo:`{{n}}天前`,quickCaptureHintEnter:`保存并打开`,quickCaptureHintShift:`仅保存`,quickCaptureHintEsc:`取消`,history:`历史版本`,historyEmpty:`暂无历史版本`,historyEmptyDescription:`编辑笔记后将自动保存历史版本。`,restore:`恢复此版本`,restoreConfirm:`确定恢复到此版本?当前内容将被覆盖。`,restoreSuccess:`已恢复`,restoreFailed:`恢复失败`,triggerEdit:`编辑`,triggerAiEdit:`AI 编辑`,triggerSync:`同步`,triggerRestore:`恢复`,catalyzeButton:`拆解一下`,catalyzing:`拆解中`,openChatButton:`和 AI 讨论`,chatOpenFailedTitle:`无法打开讨论`,chatOpenFailedMessage:`请稍后再试`,catalysisSectionTitle:`AI 拆解`,catalysisSectionDescription:`把一个想法推进成问题、路径和下一步行动。`,contextStatusTitle:`AI 上下文`,contextStatusDetail:`已处理 {{attachments}} 个附件,约 {{tokens}} tokens。`,contextRebuild:`重新理解`,catalyzeAction:`拆解`,processing:`处理中`,recatalyze:`重新拆解`,noCatalysisReportHint:`还没有拆解报告。点击\\"拆解\\"生成第一版行动路径。`,valueHypothesis:`价值假设`,keyQuestions:`关键问题`,targetUsers:`目标用户`,mvpPathLabel:`MVP 路径`,risks:`风险`,nextActions:`下一步行动`,confidenceLabel:`置信度 {{percent}}%`,feedbackHelpfulAria:`拆解有帮助`,feedbackNotHelpfulAria:`拆解没帮助`,catalysisDone:`已完成拆解`,catalysisFailed:`拆解失败`,relatedThreadsTitle:`关联讨论`,relatedThreadsDescription:`围绕这条 Note 继续和 AI 共创。`,openThread:`继续`,newThread:`新建`,openingChat:`打开中`,noThreads:`暂无讨论线程。`,noteDiscussionFallback:`Note 讨论`,messageCount:`{{count}} 条消息`}},j={onboarding:{title:`欢迎使用 xopc`,subtitle:`一个会逐渐了解你,也会把事情持续推进到结果的个人助手。`,step0Title:`怎么称呼你?`,step0Subtitle:`告诉 xopc 你的名字或昵称,助手在对话中会这样称呼你。`,step1Title:`选择智能服务`,step1Subtitle:`选择为助手提供智能的服务,系统会自动采用推荐模型。`,step2Title:`输入你的 API 密钥`,step2Subtitle:`安全连接服务即可开始,之后可以在设置中调整高级模型选项。`,step2Placeholder:`在此粘贴你的 API 密钥`,step2SecurityNote:`🔒 密钥不会离开你的设备。`,step3Title:`选择默认模型`,step3Subtitle:`新对话会优先使用这个模型,你可以随时在设置中更改。`,profileCallNameLabel:`怎么称呼你`,profileCallNamePlaceholder:`例如:小明、Joyce、Mic`,modelSaveFailed:`默认对话模型保存失败,请稍后重试。`,back:`返回`,continue:`继续`,savingProfile:`正在记住…`,startChatting:`开始对话`,skipCallName:`跳过,稍后设置`,skipSetup:`跳过 — 稍后再设置`,setupComplete:`设置完成!在下方开始对话吧。`,stepOf:`第 {{current}} 步,共 {{total}} 步`,providerRecommended:`推荐`,workDiscovery:{title:`把最近的工作接进来`,selectProject:`选择一个项目`,recentProjects:`最近使用`,chooseWorkFolder:`选择一个工作文件夹`,chooseAnotherFolder:`选择其他文件夹`,resumeAnalysis:`查看分析进度`,projectStartFailed:`无法在这个项目中打开会话。`,subtitle:`选择一个本地文件夹。xopc 会只读了解当前进展,并整理几个可以继续推进的方向。通常需要不到一分钟。`,chooseFolder:`选择文件夹`,skip:`暂时跳过`,readOnlyNote:`不会修改文件。开始分析前,你可以查看读取范围。`,selectedTitle:`确认读取范围`,selectedSubtitle:`xopc 将了解项目结构、项目说明、最近的文本变更和 Git 状态。`,localFingerprint:`本地项目识别`,branchValue:`分支 {{branch}}`,noGitBranch:`未识别到 Git 分支`,recentActivity:`最近活动`,changedFiles:`{{count}} 个变更文件`,recentAreas:`近期变更区域`,willRead:`将会读取`,willReadValue:`项目结构、说明文件、最近的文本文件和 Git 状态`,willIgnore:`不会读取`,willIgnoreValue:`依赖、构建产物、二进制文件和常见密钥文件`,providerDisclosure:`相关文本片段可能发送至 {{provider}} 进行分析。原始凭据和已排除文件不会包含在内。`,localDisclosure:`分析使用当前配置的本地模型,已排除文件不会包含在内。`,startAnalysis:`开始分析`,changeFolder:`更改文件夹`,stages:{folder_structure:`识别项目结构`,recent_progress:`了解最近进展`,next_steps:`整理下一步建议`},analyzingTitle:`正在了解你最近的工作`,analyzingSubtitle:`你可以离开此页面,Gateway 会继续完成分析。`,cancelAnalysis:`取消分析`,foundTitle:`我看到的当前状态`,recognitionEyebrow:`我对当前工作的理解`,recognitionTitle:`这符合你正在做的事情吗?`,confirmUnderstanding:`对,继续`,notQuiteRight:`不完全对`,correctionLabel:`哪里需要调整?`,correctionPlaceholder:`例如:我今天想完成 onboarding 流程,而不是继续用户资料设置。`,useCorrection:`按这个理解继续`,differentGoal:`我今天要做别的`,continueWithCorrection:`带着这些背景继续`,understandingConfirmed:`已确认当前工作`,primaryRecommendationTitle:`一个值得先做的下一步`,estimatedMinutes:`约 {{count}} 分钟`,riskAnalysis:`仅分析`,riskCommand:`经确认后可能运行命令`,riskFileWrite:`可能提出文件修改`,expectedOutcome:`预期结果`,startRecommendedAction:`开始`,explainFirst:`先解释原因`,otherDirections:`其他方向`,doSomethingElse:`做其他事情`,correctUnderstanding:`纠正当前理解`,suggestionsTitle:`建议下一步`,continue:`继续推进`,discussFirst:`先聊一聊`,openConversation:`直接进入对话`,notAccurate:`这些建议不准确`,chooseDifferent:`选择其他文件夹`,errorTitle:`分析未能完成`,retry:`重试`,loading:`正在准备工作接入…`,codingProject:`软件项目`,generalProject:`通用工作目录`,unknownProject:`本地文件夹`,lowConfidenceTitle:`再补充一点背景会更准确`}}},M={providersSettings:{subtitle:`管理各服务商的 API Key 和 OAuth 授权,保存后写入本地网关配置。`,intro:`可搜索或展开分组,再展开具体服务商,粘贴新密钥后点「保存」。支持 OAuth 时,在浏览器中完成授权。`,quickStartIntro:`选择一个服务商,在展开后粘贴 API Key 即可开始。`,docsLink:`模型与服务商文档`,modelsLink:`自定义服务商(models.json)`,rotateHint:`日常轮换密钥:展开对应服务商 → 粘贴新密钥 → 保存,一般无需重启。`,needToken:`请先保存网关访问令牌后再管理服务商密钥。`,loadError:`加载服务商列表失败`,save:`保存`,saving:`保存中…`,saved:`已保存`,noChangesSaved:`没有需要保存的新密钥。`,saveError:`保存失败`,empty:`暂无可用服务商。`,searchPlaceholder:`搜索 OpenAI、Claude、Gemini…`,getApiKey:`获取 API Key`,getApiKeyIntl:`获取 API Key(国际站)`,getApiKeyCn:`获取 API Key(国内)`,savedModelsAvailable:`个可用模型`,savedNoModels:`已配置,暂无模型列表`,envVarAlt:`或通过环境变量配置`,moreOptions:`更多选项`,unconfiguredOnly:`仅显示未配置`,noMatches:`没有符合筛选条件的服务商。`,clearFilters:`清除筛选`,discard:`放弃`,unsavedHint:`有未保存的更改。`,runtimeLabelPrefix:`当前生效密钥:`,sourceAgent:`智能体私有密钥`,sourceGateway:`网关配置(本页保存)`,sourceOauth:`OAuth 授权`,sourceEnv:`环境变量`,sourceModelsJson:`models.json`,sourceExtension:`扩展提供方`,sourceNone:`无`,testKey:`测试输入值`,testingKey:`测试中…`,testOkLiteral:`格式有效(明文或文本)。`,testOkEnv:`环境变量可解析。`,testOkCommand:`命令解析成功。`,testFailed:`检查未通过。`,revokeFailed:`撤销失败。`,expandRowDetails:`展开密钥与操作`,categories:{common:`常用服务商`,domestic:`国内模型`,specialty:`其他服务商`,enterprise:`企业 / 云端`,oauth:`仅 OAuth`,extension:`扩展`},configuredCount:`已配置 {{count}} 个`,metaMasked:`已保存密钥,输入新 Key 可覆盖。`,metaWillSave:`保存后生效。`,metaNotConfigured:`未配置。`,placeholderKey:`API Key`,placeholderKeep:`留空则保留当前`,placeholderOverride:`输入新 Key 覆盖`,show:`显示`,hide:`隐藏`,copy:`复制`,copied:`已复制`,oauth:`OAuth 登录`,revoke:`撤销`,revokeConfirm:`撤销「{{name}}」的 OAuth 凭据?`,oauthStarting:`正在启动 OAuth…`,oauthProcessingCode:`正在处理授权…`,openAuthPage:`打开授权页`,cancelOAuth:`取消`,pasteRedirectUrl:`粘贴完整重定向 URL(含 code= 与 state=)`,submitCode:`提交`,envHint:`API Key 来自环境变量。在上方输入新 Key 可覆盖。`,maskedStoredHint:`已保存的密钥不会显示。在上方输入新 Key 可覆盖。`,oauthHint:`可使用 OAuth 授权登录,也可以手动填写 API Key。`,removeKey:`移除密钥`,removeKeyConfirm:`确定移除「{{name}}」的已保存 API Key?此操作不可撤销。`,removeKeySuccess:`API Key 已移除。`,removeKeyFailed:`移除失败。`},modelsSettings:{needToken:`请先保存网关访问令牌后再编辑 models.json。`,subtitle:`自定义服务商与模型(models.json)。保存后生效;重新加载可读取磁盘上的修改。`,docsLink:`模型与服务商文档`,loadError:`加载 models.json 失败`,loadFileWarning:`文件提示`,filePath:`路径`,addProvider:`添加服务商`,validate:`校验`,validating:`校验中…`,validateError:`校验请求失败`,save:`保存`,discard:`放弃`,saving:`保存中…`,saved:`已保存`,saveError:`保存失败`,reload:`重新加载`,reloading:`加载中…`,reloadError:`重新加载失败`,showJson:`显示 JSON`,hideJson:`隐藏 JSON`,modeGuided:`表单模式`,modeExpert:`JSON 模式`,modeGuidedHint:`通过表单添加服务商和模型,适合大多数配置场景。`,modeExpertHint:`直接编辑 models.json,适合需要精细配置的场景。`,statsProviders:`{{count}} 个服务商`,statsModels:`{{count}} 个模型`,unsavedHint:`有未保存的更改。`,loading:`加载中…`,jsonParseError:`JSON 无效`,jsonReset:`从编辑器还原`,jsonApply:`应用 JSON`,emptyTitle:`暂无自定义服务商`,emptyDesc:`可添加 OpenAI 兼容端点(Ollama、LM Studio、OpenRouter、vLLM 等)及可选的逐模型覆盖。`,emptyCta:`添加第一家服务商`,presetOllama:`Ollama`,presetLmStudio:`LM Studio`,presetOpenRouter:`OpenRouter`,presetZhipuCn:`智谱 GLM(国内 · Coding 端点)`,presetZaiGeneral:`智谱 GLM(国际 · 通用 API)`,presetLabel:`预设`,presetCustom:`自定义`,addProviderTitle:`添加服务商`,addProviderSubtitle:`服务商 ID 须唯一(如 ollama、my-openai)。`,providerIdLabel:`服务商 ID`,providerIdPlaceholder:`例如 ollama`,providerIdRequired:`请填写服务商 ID`,addProviderConfirm:`添加`,cancel:`取消`,close:`关闭`,baseUrl:`Base URL`,apiType:`API 类型`,apiKey:`API Key`,apiKeyPlaceholder:`sk-…、环境变量名 或 !命令`,apiKeyHint:`直接填写密钥、大写环境变量名,或以 ! 开头的 shell 命令`,authHeader:`自动发送 Authorization 头`,testKey:`测试`,show:`显示`,hide:`隐藏`,badgeShell:`shell`,badgeEnv:`env`,badgeLiteral:`字面量`,removeProvider:`删除服务商`,removeProviderConfirm:`删除服务商「{{id}}」及其模型?`,modelsSection:`模型`,modelsEmpty:`无自定义模型;在可用处将使用内置默认。`,addModel:`添加模型`,editModel:`编辑模型`,removeModel:`删除模型`,removeModelConfirm:`删除模型「{{id}}」?`,addModelTitle:`添加模型`,editModelTitle:`编辑模型`,modelProviderLabel:`服务商`,modelId:`模型 ID`,displayName:`显示名称`,inputTypes:`输入类型`,inputTextOnly:`仅文本`,inputTextVision:`文本 + 视觉`,reasoning:`支持推理`,contextWindow:`上下文窗口`,maxOutputTokens:`最大输出 Token 数`,costSection:`费用(每百万 token)`,costInput:`输入`,costOutput:`输出`,modelIdRequired:`请填写模型 ID`,mustBePositive:`必须大于 0`,addModelConfirm:`添加模型`,saveModelConfirm:`保存`,validationErrors:`校验问题`,validationWarnings:`警告`,testError:`错误`,testOk:`解析结果`}},N={projectsPage:{title:`工作台`,summary:`{{count}} 个工作空间 · 集中查看跨会话、目标和任务的持续工作`,searchPlaceholder:`搜索项目`,create:`创建`,createTitle:`创建项目`,createDescription:`把相关会话、目标和工作区上下文归到一起,不改变 agent 本身行为。`,projectName:`项目名称`,workspaceRoot:`项目工作区`,workspacePlaceholder:`Agent 默认工作区`,workspaceModeFollow:`跟随 Agent 默认工作区`,workspaceModeFixed:`使用指定项目文件夹`,workspaceModeGlobal:`使用全局默认工作区`,workspaceCurrent:`当前路径:{{workspace}}`,workspaceFollowHint:`切换项目默认 Agent 后,工作区会跟随新 Agent 的默认工作区。`,workspaceFixedHint:`保存为项目自己的固定路径,之后不受 Agent 切换影响。`,workspaceHint:`选择跟随 Agent 时不会保存固定路径。`,projectType:`项目类型`,projectTypes:{auto:`自动检测`,coding:`编程项目`,general:`通用项目`},workHome:{subtitle:`查看什么正在推进、什么需要你,以及接下来会发生什么。`,briefingTitle:`今日简报`,heroTitle:`让事情持续向前`,heroBody:`你只需要关注想要的结果,xopc 会在后台选择合适的 Agent、计划和工具。`,activeCount:`{{count}} 项正在推进`,attentionCount:`{{count}} 项需要关注`,needsYou:`需要你`,needsYouHint:`这里有等待你决定、补充信息或解除的阻塞。`,nothingNeedsYou:`现在没有事情需要你处理。`,decisionKinds:{work_item:`工作事项`,goal:`持续目标`,workflow_run:`工作流程`,automation_run:`自动化`,connector_approval:`连接器操作`,goal_evidence:`完成证据`},decisionReasons:{needs_input:`需要补充`,in_review:`等待确认`,blocked:`遇到阻塞`,overdue:`已经逾期`,due_soon:`即将到期`,run_failed:`执行失败`,approval_required:`等待批准`},approve:`批准`,deny:`拒绝`,winKinds:{work_item:`事项已完成`,workflow_run:`流程已完成`,automation_run:`自动化已完成`},continueTitle:`继续推进`,continueHint:`当前最值得接着处理的事情。`,noCurrentWork:`暂时没有正在推进的工作。`,processing:`正在处理`,running:`进行中`,nothingRunning:`现在没有后台任务正在运行。`,activityTitle:`最近活动`,activityHint:`集中查看后台工作、状态变化和可能需要你处理的事项。`,activityNew:`条新动态`,activityUnread:`未读活动`,activityViewRelated:`查看相关内容`,activityRemove:`移除活动`,activityMarkRead:`全部标为已读`,activityClearFinished:`清除已完成`,activityShowAll:`查看全部 {{count}} 条`,activityShowLess:`收起`,activityEmpty:`暂无最近活动`,activityEmptyBody:`工作推进中的重要状态变化会集中显示在这里。`,scheduled:`之后会自动发生`,noScheduled:`暂时没有定时事项。`,completed:`最近完成`,emptyTitle:`还没有事情在推进`,emptyBody:`先从一次对话开始。当事情需要持续跟进时,xopc 会把相关上下文和进展放在一起。`,startChat:`告诉 xopc 你需要什么`,startLongWork:`开始一件长期事项`,spacesTitle:`长期事项空间`,spacesHint:`当一件事跨越多次对话时,项目空间会帮助你保持上下文连续。`,openSpace:`打开空间`,noSpaces:`没有匹配的事项空间。`,outcomeLabel:`你希望持续推进什么?`,outcomePlaceholder:`例如:完成第三季度客户研究报告,包括访谈、分析和最终汇报。`,autoSetupHint:`xopc 会定义完成标准、选择合适的工作方式并立即开始。`,delegate:`交给 xopc`,delegateTitle:`把这件事交给 xopc`,delegateDescription:`描述你想要的结果。执行方式、持续跟进和完成验证由 xopc 处理。`,delegating:`正在接手…`,watch:`持续关注`,watchTitle:`让 xopc 持续关注`,watchDescription:`说清楚关注对象和什么变化值得告诉你。xopc 会先生成可审阅的监控方案。`,watchLabel:`你希望关注什么?`,watchPlaceholder:`例如:关注三家主要竞品的定价页,降价或推出新套餐时告诉我。`,watchSetupHint:`下一步可以检查触发条件、通知方式和风险。`,designWatch:`生成关注方案`,creating:`创建中…`,retry:`重试`},defaultAgent:`默认 Agent`,agentAuto:`自动`,agentGlobalDefault:`全局默认`,agentHintAuto:`检测为编程工作区时,会优先使用 coder。`,agentHintCoding:`检测到编程上下文,新项目会话将默认使用 {{agent}}。`,agentHintCoderUnavailable:`检测到编程上下文,但 coder 不可用,将使用全局默认。`,agentHintGeneral:`该项目将使用全局默认 agent。`,agentHintGlobal:`该项目将始终使用全局默认 agent。`,agentHintSelected:`该项目将默认使用 {{agent}}。`,workspaceConflictTitle:`工作区已绑定`,workspaceConflictDescription:`该工作区已经绑定到项目「{{projectName}}」。是否进入该项目?`,workspaceConflictPath:`工作区:{{workspace}}`,workspaceConflictOpen:`进入项目`,workspaceConflictBack:`返回编辑`,workspaceMissingTitle:`工作区目录不存在`,workspaceMissingDescription:`「{{workspace}}」还不存在。是否创建该文件夹并继续创建项目?`,workspaceMissingCreate:`创建文件夹`,workspaceMissingBack:`重新选择`,cancel:`取消`,noDescription:`暂无描述。`,workspaceLabel:`工作区:{{workspace}}`,agentDefault:`跟随 Agent 默认`,lastActive:`最近活动:{{time}}`,never:`从未`,all:`全部`,optionalContext:`可选上下文层`,loading:`正在加载项目…`,emptyTitle:`还没有正在推进的事`,emptyHint:`先从一次对话开始;当事情需要持续推进时,再把它收进工作空间。`,statuses:{active:`活跃`,paused:`已暂停`,archived:`已归档`},management:{title:`项目`,subtitle:`创建、查找和管理长期事项空间。`,filterLabel:`筛选项目`,pin:`置顶`,unpin:`取消置顶`,archive:`归档`,restore:`恢复`,descriptionLabel:`项目描述`,descriptionPlaceholder:`简要说明这个项目要持续推进什么。`,emptyTitle:`没有匹配的项目`,emptyHint:`调整筛选条件,或者创建一个新的项目。`,viewAll:`查看全部项目`}},projectDetailPage:JSON.parse(`{"surfaceTabs":{"overview":"概览","work":"工作","context":"上下文","details":"更多","workHint":"只需要看清下一步;执行细节在需要时仍然可用。","contextTitle":"这件事所知道的上下文","contextFallback":"与这件事相关的对话、文件、笔记和要求会汇集在这里。"},"tabs":{"overview":"概览","sessions":"会话","goals":"目标","workflows":"工作流","files":"文件","activity":"活动","automations":"自动化","notes":"笔记","settings":"设置"},"navAria":"项目导航","backToProjects":"项目","fallbackTitle":"项目","fallbackContext":"项目上下文","loading":"正在加载项目…","notFound":"未找到项目。","projectSwitcher":{"switchProject":"切换项目","searchPlaceholder":"搜索项目…","current":"当前项目","recent":"最近项目","loading":"正在加载项目…","noMatches":"没有找到项目","newProject":"新建项目","openDirectory":"打开本地目录…","manageProjects":"管理项目","createFromDirectoryTitle":"从本地目录创建项目","createFromDirectoryDescription":"选择一个目录并保存为项目,之后会使用这个目录作为项目工作区。"},"common":{"refresh":"刷新","new":"新建","open":"打开","retry":"重试","cancel":"取消","create":"创建","save":"保存","delete":"删除","continue":"继续推进","newChat":"新建会话","viewAll":"查看全部","agent":"agent","defaultAgent":"默认 agent","never":"从未","root":"根目录","parentDirectory":"上级目录","folder":"文件夹","notSet":"未设置","defaultWorkspace":"Agent 默认工作区","messages":"{{count}} 条消息","updated":"{{time}} 更新","lastRun":"{{trigger}} · {{action}} · 上次 {{time}}"},"overview":{"directionTitle":"项目方向","directionFallback":"补充项目简介或创建目标,让下一步更明确。","saveDigest":"保存摘要","savingDigest":"保存中","sessions":"会话","activeGoals":"活跃目标","recentWorkflowRuns":"近期工作流运行","nextActions":"下一步","goal":"目标","recommendedNext":"下一步:{{action}}","noNextActions":"还没有下一步。可以先创建目标,或继续项目会话来明确方向。","noNextAction":"尚未设置下一步。","staleGoals":"停滞目标","noActiveGoals":"当前项目暂无活跃目标。","recentSessions":"最近会话","noSessions":"暂无会话。","workflowRuns":"工作流运行","noWorkflowRuns":"暂无工作流运行。","timeline":"时间线","noTimeline":"暂无项目活动。","timelineKinds":{"session":"会话","goal":"目标","workflow":"工作流","memory":"记忆"},"workspace":"工作区","brief":"简介","noBrief":"暂无简介。","attention":"需关注","attentionKinds":{"blocked_goal":"受阻目标","stale_goal":"停滞目标","failed_workflow":"失败工作流"},"noBlockedGoals":"暂无受阻目标。","blockerTitlePlaceholder":"新增 blocker","blockerReasonPlaceholder":"原因或依赖","addBlocker":"添加 blocker","addingBlocker":"添加中"},"workItems":{"tab":"工作项","title":"工作项","boardAria":"工作项看板","viewAria":"工作项视图","views":{"list":"列表","board":"看板"},"refresh":"刷新工作项","refreshing":"正在刷新工作项","refreshShort":"刷新","empty":"暂无工作项。","emptyColumn":"这一列暂无工作项。","loadMore":"加载更多","noNextAction":"暂无下一步。","dragToUpdate":"拖拽以更新状态","markDone":"标记工作项为已完成","markTodo":"标记工作项为待处理","agent":"Agent","updated":"更新","nextAction":"下一步","blockedReason":"受阻原因","statuses":{"backlog":"待整理","todo":"待处理","in_progress":"进行中","blocked":"受阻","needs_input":"待补充","in_review":"待确认","done":"已完成","cancelled":"已取消"},"priorities":{"low":"低","normal":"普通","high":"高","urgent":"紧急"},"linkKinds":{"chat":"会话","goal":"目标","workflow_run":"工作流","automation":"自动化","note":"笔记"},"eventTypes":{"created":"已创建","updated":"已更新","status_changed":"状态已变更","archived":"已归档","attachment_added":"已添加附件","attachment_removed":"已移除附件","chat_started":"已启动会话","goal_created":"已创建目标","workflow_started":"已启动工作流","automation_added":"已添加自动化","link_added":"已关联记录","progress_note_added":"已添加进展记录","update_suggestion_created":"已生成更新建议","update_suggestion_applied":"已应用更新","update_suggestion_dismissed":"已忽略更新"},"feedback":{"createdTitle":"工作项已创建","createdNext":"下一步可以启动会话推进,或创建目标把它纳入持续跟进。","savedTitle":"修改已保存","savedNext":"下一步可以启动会话继续处理,或创建目标跟踪后续进展。"},"create":{"short":"新建","header":"新建工作项","title":"新建工作项","titleLabel":"标题","descriptionLabel":"描述","priorityLabel":"优先级","cancel":"取消","submit":"创建","addToColumn":"在{{status}}中新建工作项"},"attachments":{"title":"附件","add":"添加附件","empty":"暂无附件。","download":"下载附件","remove":"移除附件"},"detail":{"description":"围绕这个工作项持续推进,直到完成。","status":"状态","actions":"操作","project":"项目","archived":"已归档","loading":"正在加载工作项…","notFound":"未找到工作项。","backToProjects":"返回项目","backToProject":"返回 {{name}}","noDescription":"暂无描述。","noBlockedReason":"暂无阻塞记录。","save":"保存修改","openItem":"打开工作项","startChat":"启动会话","createGoal":"创建目标","workflowTitle":"任务模板","workflowHint":"用这个工作项的上下文启动工作流,运行记录会回写到关联工作。","workflowTemplate":"模板","recommendedWorkflows":"推荐模板","workflowGoal":"这次要推进的事情","startWorkflow":"启动模板","noWorkflowTemplates":"暂无可用任务模板。","links":"关联工作","noLinks":"还没有关联会话、目标或运行记录。","activity":"活动记录","noActivity":"暂无活动。"}},"workflows":{"runsTitle":"项目工作流运行","runsHint":"从这里启动的运行会使用当前项目上下文和工作区。","loadingRuns":"正在加载工作流运行…","runMeta":"{{definitionId}} · {{done}}/{{total}} 个 agent · {{time}}","emptyRuns":"这个项目和 agent 下还没有工作流运行。","startTitle":"启动工作流","startHint":"选择一个工作流,在当前项目内运行。","emptyDefinitions":"暂无可用工作流。","browseAll":"浏览全部工作流","contextTitle":"运行上下文","contextHint":"项目工作流会继承所选 agent、项目工作区、简介、指令和活跃目标。"},"automations":{"title":"项目自动化","hint":"绑定到当前项目的自动化会继承项目工作区上下文。","loading":"正在加载自动化…","enabled":"已启用","paused":"已暂停","run":"运行","pause":"暂停","resume":"恢复","empty":"当前项目还没有绑定自动化。","create":"创建自动化","recentRuns":"最近运行","emptyRuns":"暂无项目自动化运行记录。","contextTitle":"自动化上下文","contextHint":"Agent 自动化默认使用项目工作区;工作流自动化会把当前项目传入工作流运行。"},"activity":{"title":"项目活动","count":"{{count}} 条活动","loading":"正在加载活动…","empty":"暂无项目活动。","includeRelated":"包含相关活动","related":"相关","actor":"操作者","source":"来源","types":{"project.created":"项目已创建","project.updated":"项目已更新","project.status_changed":"项目状态已变更","project.workspace_changed":"项目工作区已变更","note.created":"笔记已创建","note.appended":"笔记已追加","note.updated":"笔记已更新","note.status_changed":"笔记状态已变更","work_item.created":"工作项已创建","work_item.updated":"工作项已更新","work_item.status_changed":"工作项状态已变更","work_item.archived":"工作项已归档","work_item.link_added":"工作项已关联记录","session.attached_to_project":"会话已绑定","session.detached_from_project":"会话已解绑","goal.created":"目标已创建","goal.status_changed":"目标状态已变更","workflow_run.started":"工作流运行已启动","workflow_run.completed":"工作流运行已完成","automation.run_started":"自动化运行已启动","automation.run_completed":"自动化运行已完成"},"objectKinds":{"project":"项目","note":"笔记","work_item":"工作项","session":"会话","goal":"目标","workflow_run":"工作流运行","automation":"自动化"}},"notes":{"title":"项目笔记","hint":"记录当前项目的决策、参考资料和工作上下文。","count":"{{count}} 条","openAll":"打开全部","searchPlaceholder":"搜索项目笔记…","categoryAll":"全部","categoryDecision":"决策","categoryReference":"参考","categoryTask":"待办","loading":"正在加载笔记…","untitled":"未命名笔记","noPreview":"暂无预览。","empty":"当前项目还没有关联笔记。","emptyTitle":"还没有项目笔记","emptyDescription":"记录一次决策、参考链接或下一步想法,它会自动绑定到这个项目。","noMatchesTitle":"没有匹配的项目笔记","noMatchesDescription":"换一个关键词,或切换分类查看其它项目笔记。","newTitle":"新建笔记","quickCaptureHint":"快速记录项目决策、参考资料或下一步想法。","addTitle":"添加标题","titleLabel":"标题","titlePlaceholder":"决策、参考资料或想法","contentLabel":"内容","contentPlaceholder":"记录项目上下文…","create":"创建笔记","bindingTitle":"绑定方式","bindingHint":"项目笔记会带上当前项目标签,因此也能在全局 Notes 页面继续检索。"},"files":{"title":"项目文件","noWorkspace":"未设置项目工作区","loading":"正在加载文件…","emptyDirectory":"当前目录没有文件。","search":"搜索文件","searchPlaceholder":"搜索文件名","clearSearch":"清除文件搜索","noSearchResults":"当前视图没有匹配的文件。","previewEmptyTitle":"选择文件预览","previewEmptyDescription":"点击左侧文件,会使用和会话里一致的预览方式打开。","resizeHandle":"调整文件浏览区宽度","needWorkspace":"先设置项目工作区,才能浏览项目文件。","openSettings":"打开设置","boundaryTitle":"工作区边界","boundaryHint":"这里只展示项目工作区内的文件。会话、目标和工作流运行也使用同一个根目录。","nextStepTitle":"下一步","nextStepHint":"需要 agent 检查或修改这个工作区时,可以启动项目工作流。"},"sessions":{"empty":"当前项目暂无会话。","emptyTitle":"还没有项目会话","emptyDescription":"从页面顶部的新建会话启动后,相关工作、目标和摘要会归在一起。","searchPlaceholder":"搜索会话","clearSearch":"清除会话搜索","noMatches":"没有匹配的会话","fallbackTitle":"会话","sessionKey":"会话 ID","agent":"Agent","updated":"更新","meta":"{{agent}} · {{messages}}","metaWithTime":"{{agent}} · {{messages}} · {{time}}"},"goals":{"title":"目标","hint":"从这里创建的目标会保持绑定到当前项目。","new":"新建目标","empty":"当前项目暂无目标。","noNextAction":"尚未设置下一步。"},"settings":{"contextTitle":"项目上下文","contextHint":"会话、目标、文件、工作流运行和自动化都会使用这份项目上下文。","detailsTitle":"项目信息","name":"名称","status":"状态","defaultAgent":"默认 Agent","globalDefaultAgent":"使用全局默认","description":"列表描述","descriptionHint":"显示在项目列表和搜索结果中,用来快速识别这个项目。","pinState":"置顶状态","pinned":"已置顶","notPinned":"未置顶","workspaceRoot":"项目工作区","workspacePlaceholder":"Agent 默认工作区","workspaceMode":"工作区模式","workspaceModeFollow":"跟随当前默认 Agent","workspaceModeFixed":"使用指定项目文件夹","workspaceCurrent":"当前路径:{{workspace}}","workspaceHint":"跟随模式下不保存固定路径,切换项目默认 Agent 后会使用新 Agent 的默认工作区。","openWorkspace":"打开文件夹","copyWorkspacePath":"复制路径","migrateWorkspace":"迁移工作区","workspaceMigrationHint":"项目会话、目标、文件、工作流运行和自动化默认使用这个目录。迁移工作区会影响之后的新上下文,历史记录不会自动改写。","workspaceMigrationTitle":"迁移项目工作区","workspaceMigrationDescription":"只有在项目确实移动到新目录,或需要改为跟随 Agent 默认工作区时才迁移。","workspaceMigrationFixedHint":"保存为项目自己的固定路径,之后不受 Agent 切换影响。","workspaceMigrationImpact":"迁移后,后续会话、目标和工作流将使用新目录;原目录中的文件不会移动,历史会话也不会自动改写。","workspaceMigrationConfirm":"确认迁移","createdAt":"创建时间","updatedAt":"更新时间","workspaceMissingTitle":"工作区目录不存在","workspaceMissingDescription":"「{{workspace}}」还不存在。是否创建该文件夹并迁移项目工作区?","workspaceMissingCreate":"创建文件夹","workspaceMissingBack":"重新选择","managementTitle":"项目管理","managementHint":"这里放影响项目列表呈现和生命周期的操作,不会修改项目文件。","pinTitle":"置顶项目","pinnedTitle":"项目已置顶","pinHint":"置顶后会在项目列表和侧边栏里优先显示,便于快速进入正在推进的工作。","pinProject":"置顶项目","unpinProject":"取消置顶","archiveTitle":"归档项目","archiveHint":"归档后项目会从活跃视图移出,但会话、目标和文件关联仍会保留。","archiveProject":"归档项目","restoreTitle":"恢复归档项目","restoreHint":"恢复后项目会回到活跃视图,并可继续创建会话、目标和工作流。","restoreProject":"恢复项目","dangerTitle":"危险操作","dangerHint":"移除项目会解除会话、目标、工作流、自动化和记忆的项目分组;本地文件不会被删除。","agentContextTitle":"Agent 上下文","agentContextHint":"这些内容会作为项目上下文提供给 Agent,帮助它更稳定地理解和推进这个项目。","brief":"项目背景","briefHint":"提供给 Agent 的项目摘要,帮助它理解目标、范围、现状和关键约束。","instructions":"Agent 工作指引","instructionsHint":"告诉 Agent 在这个项目中应遵守的偏好、流程和边界。","statuses":{"active":"活跃","paused":"已暂停","archived":"已归档"},"deleteConfirm":"确定删除项目「{{name}}」?会话和目标会保留,但不再归属该项目。","deleteConfirmTitle":"删除项目?","deleteConfirmFallback":"确定删除这个项目?会话和目标会保留,但不再归属该项目。","deleteConfirmAction":"删除项目"},"goalDialog":{"title":"新建项目目标","close":"关闭","titleLabel":"标题","descriptionLabel":"描述","priorityLabel":"优先级","priorities":{"low":"低","normal":"普通","high":"高"}},"statuses":{"active":"活跃","paused":"已暂停","blocked":"受阻","needs_input":"需要输入","done":"完成","archived":"已归档","queued":"排队中","running":"运行中","retry_waiting":"等待重试","succeeded":"已成功","failed":"失败","timeout":"已超时","cancelled":"已取消","skipped":"已跳过"}}`)},P={remoteAccess:{pageTitle:`远程访问`,pageSubtitle:`从其他设备连接此 Gateway。选择一种方式即可 — 同一时间只应启用一种对外暴露模式。`,docsLink:`阅读远程访问指南`,tabsAria:`远程访问方式`,tabs:{guide:`概览`,tailscale:`Tailscale`,public:`公网访问`,"reverse-proxy":`反向代理`,ssh:`SSH 隧道`,lan:`局域网`},tabIntro:{guide:`对比各方式并查看当前 Gateway 上的激活状态。`,tailscale:`适合 tailnet 内的个人设备。Gateway 仍绑定 loopback,由 Tailscale Serve 发布 HTTPS。`,public:`先在 Console 创建 Tunnel Registration Key 并保存,再启动隧道获取公网地址,然后扫码配对移动 App。`,"reverse-proxy":`用自己的 HTTPS 反向代理(Caddy / nginx / Cloudflare Tunnel)将 Gateway 暴露在自定义域名下,然后扫码配对移动 App。`,ssh:`无 VPN 或公网隧道时,通过 CLI 做 SSH 端口转发。`,lan:`在同一 Wi‑Fi 或局域网内,通过 Gateway 绑定地址访问,并扫码配对移动 App。`},guide:{pickMethod:`选择连接方式`,recommended:`推荐`,configure:`去配置`,statusActive:`已启用`,statusOff:`未启用`,statusConnecting:`连接中`,tailscaleCardTitle:`Tailscale Serve`,tailscaleCardDesc:`仅在 tailnet 内提供 HTTPS,不暴露到公网。`,publicCardTitle:`公网隧道`,publicCardDesc:`生成公网 URL,用于移动配对与远程访问。`,reverseProxyCardTitle:`反向代理`,reverseProxyCardDesc:`用自部署的 HTTPS 反代将 Gateway 暴露在自定义域名下。`,sshCardTitle:`SSH 隧道`,sshCardDesc:`无 VPN 或公网隧道时,通过 CLI 做端口转发。`,sshCardStatus:`CLI`,lanCardTitle:`同一 Wi‑Fi / 局域网`,lanCardDesc:`通过 Gateway 绑定地址在同一局域网内访问。`,lanCardStatus:`本地`,conflictsTitle:`配置冲突`,conflictsHint:`同一时间只应启用一种暴露方式。切换前请先关闭另一种。`,oneAtATimeHint:`Tailscale Serve 与公网隧道不能同时运行。切换前请在概览页查看状态。`,needToken:`请先使用有效的 Gateway token 登录后再管理远程访问。`,docsLink:`查看完整文档`},advanced:{proxyTitle:`反向代理与 remote URL`,proxyBody:`Gateway 位于 nginx、Caddy 等反向代理之后时,需配置可信头与可选的 gateway.remote,供 CLI 客户端使用。`,proxyDocs:`阅读远程访问文档`},lan:{title:`同一网络(局域网)`,subtitle:`在同一 Wi‑Fi 下的手机或笔记本访问 Gateway,无需暴露到公网。`,body:`将 Gateway 绑定地址设为局域网 IP(或 0.0.0.0),通过 http://<主机>:<端口> 连接。请注意防火墙规则。`,link:`打开 Gateway 设置`,pairTitle:`移动 App 配对`,pairSubtitle:`在同一 Wi‑Fi 下扫码连接手机。App 会用一次性配对密钥换取 Gateway token。`,pairBlockedNextSteps:`或使用「公网访问」标签通过隧道配对。`,pairPublicTabLink:`打开公网访问`},tailscale:{title:`Tailscale Serve(推荐)`,subtitle:`在 tailnet 上通过 HTTPS 暴露 Gateway,进程仍绑定 loopback。`,statusLabel:`Serve 状态`,stepInstallBefore:`在本机安装 `,stepInstallLink:`Tailscale`,stepInstallAfter:` 并登录 tailnet。`,stepEnable:`在下方启用 Serve,通过 tailnet 主机名发布 HTTPS。`,stepCopy:`在 tailnet 内任意设备打开或复制 HTTPS 地址。`,loading:`正在加载 Tailscale 状态…`,statusActive:`Tailscale Serve 已启用。`,statusOff:`Tailscale Serve 未启用。`,enableServe:`启用 Serve`,disableServe:`停用 Serve`,copyUrl:`复制 HTTPS 地址`,copied:`已复制`,hint:`需要本机已安装并登录 Tailscale。API 仍需要 gateway token。`,docsLink:`Tailscale Serve 文档`,cliMissingIntro:`本机未找到 Tailscale CLI。`,cliMissingDownloadLink:`前往 tailscale.com/download 下载`,cliMissingSuffix:`,安装并登录后重试。`},ssh:{title:`SSH 隧道(CLI)`,subtitle:`无 Tailscale 时,将远程 Gateway 的 loopback 端口转发到本机。`,hint:`将 user@your-host 替换为你的 SSH 登录。在需要使用 Gateway 控制台的机器上运行。`,copy:`复制命令`,copied:`已复制`},reverseProxy:{title:`反向代理(自部署 HTTPS)`,subtitle:`用自己部署的 Caddy / nginx / Cloudflare Tunnel 将 Gateway 暴露在自定义域名下。`,urlLabel:`公网 URL`,urlPlaceholder:`https://gateway.example.com`,urlHint:`不能包含路径。公网域名必须使用 https;http 仅限 RFC1918 / .local。`,probeButton:`测试`,probing:`测试中…`,autoDetectedTitle:`已自动识别当前浏览器地址`,autoDetectedHint:`下方 QR 已使用此 URL。点击「保存为默认」可持久化,让其他机器/重启后共用同一地址。`,saveAsDefault:`保存为默认`,saving:`保存中…`,clear:`清除已保存的 URL`,certWarning:`移动端需要系统信任根证书(Let's Encrypt / Cloudflare / 商业 CA)。v1 不支持自签证书。`,qrTitle:`移动 App 配对 QR`,qrSubtitle:`在 xopc 移动 App 中扫码即可通过反向代理完成配对。`,noUrlYet:`请先在上方输入反代公网 URL 以生成配对 QR。`,mintingSecret:`正在生成配对密钥…`,encoding:`正在生成 QR…`,refreshQr:`刷新 QR`,copyLink:`复制 deeplink`,copied:`已复制`,probeStatus:{ok:`可达`,mobileReady:`移动配对就绪`,codeUnknown:`测试失败`,code_TIMEOUT:`请求超时`,code_TLS_INVALID:`TLS / 证书错误`,code_DNS_OR_CONN_REFUSED:`DNS 解析失败或连接被拒`,code_NETWORK_ERROR:`网络错误`,code_AUTH_BLOCKED:`反代返回 401/403 — 请移除 /api/tunnel/pair/ping 前面的鉴权`,code_HTTP_ERROR:`HTTP 错误`,code_NOT_XOPC_GATEWAY:`URL 未识别为 xopc gateway`,code_invalid_url:`URL 不合法`,code_invalid_scheme:`Scheme 必须是 http(s)`,code_has_userinfo:`URL 不能包含用户名密码`,code_has_path:`URL 不能包含路径`,code_has_query_or_fragment:`URL 不能包含 query 或 fragment`,code_requires_https:`公网域名必须使用 https`,code_INVALID_JSON:`请求体 JSON 不合法`}}}},F={sessions:{title:`会话`,tabsAriaLabel:`会话分区`,tabsSessions:`会话`,tabsSessionsHint:`浏览、筛选、继续、归档、导出和删除对话会话。`,tabsSettings:`设置`,tabsSettingsHint:`配置会话键名范围和元数据清理策略。`,needToken:`请先保存网关访问令牌后再管理会话。`,searchPlaceholder:`搜索会话…`,filterAll:`全部`,filterActive:`活跃`,filterPinned:`置顶`,filterArchived:`归档`,filterChannelAll:`全部通道`,filterChannelLabel:`通道`,totalSessions:`总计`,activeSessions:`活跃`,pinnedSessions:`置顶`,archivedSessions:`归档`,sessionCount:`已显示 {{count}} 个`,loadMore:`加载更多`,noSessions:`暂无会话`,noSessionsDescription:`在「对话」中开始聊天后,会话将显示在这里。`,startNewChat:`开始新对话`,continueChat:`在对话中继续`,archive:`归档`,unarchive:`取消归档`,pin:`置顶`,unpin:`取消置顶`,export:`导出 JSON`,delete:`删除`,deleteSessionTitle:`删除会话?`,deleteSessionMessage:`确定删除「{{name}}」吗?此操作不可恢复。`,cancel:`取消`,loading:`加载中…`,loadError:`加载会话失败`,gridView:`网格`,listView:`列表`,layoutToggleGroup:`会话布局`,detailLoading:`加载会话…`,detailMessages:`消息`,detailExport:`导出`,close:`关闭`,config:{title:`会话存储`,hint:`私信会话的键名规则以及旧会话元数据的清理策略。`,save:`保存`,discard:`放弃`,saving:`保存中…`,saveError:`保存会话设置失败`,dmScope:`私信会话范围`,dmScopeHint:`控制跨通道与账号的私信如何映射到 session key。`,dmScopeMain:`主会话(单一私信)`,dmScopePerPeer:`按对端`,dmScopePerChannelPeer:`按通道 + 对端`,dmScopePerAccountChannelPeer:`按账号 + 通道 + 对端`,pruneAfterDays:`清理阈值(天)`,maxEntries:`最大会话条目数`,unsetPlaceholder:`留空使用默认值`}}},I={settingsSections:{overview:`系统状态`,appearance:`偏好设置`,"user-profile":`个人资料`,agent:`智能体`,"agent-browser":`浏览器`,"capability-presets":`能力方案`,connectors:`连接器`,providers:`服务商与密钥`,credentials:`模型与能力`,models:`自定义模型`,"image-models":`图片`,channels:`消息通道`,voice:`语音`,gateway:`网关`,heartbeat:`心跳`,tunnel:`远程访问`,"remote-access":`远程访问`,shares:`文件分享`,search:`网络搜索`,dreams:`后台反思`,goals:`目标模式`,agents:`智能体`,system:`系统授权`,"desktop-pet":`宠物`,"desktop-app":`应用数据`,cron:`定时任务`,skills:`技能`,"keyboard-shortcuts":`快捷键`},settingsPage:{comingSoon:`设置 · {{title}}(即将推出)。`},userProfileSettings:{title:`关于你`,subtitle:`帮助助手理解该如何与你协作;这些内容随时可以修改或删除。`,sectionTitle:`关于我`,sectionSubtitle:`记录稳定偏好、边界和沟通方式,让助手更懂你。`,loading:`加载中…`,loadError:`无法加载个人资料。`,save:`保存`,saving:`保存中…`,saved:`已保存`,saveError:`保存失败。`,callName:`姓名或称呼`,callNamePlaceholder:`希望助手如何称呼你?`,pronouns:`称谓`,pronounsPlaceholder:`选择或输入称谓`,timezone:`时区`,timezoneCustom:`自定义时区`,timezoneDetect:`检测`,notes:`备注`,notesPlaceholder:`沟通方式、稳定偏好、边界、近期重点,或任何希望助手理解的事情。`,custom:`自定义…`,note:`这些信息会在不同对话中共享;长期记忆仍可单独查看、修正和删除。`},capabilityPresetsSettings:{title:`能力方案`,subtitle:`组合可复用的模型、工具、技能、记忆与安全策略,再应用到一个或多个智能体。`,needToken:`请先保存网关访问令牌后再管理能力方案。`,loading:`加载中…`,saveError:`保存失败`,newPreset:`新建能力方案`,closeDialog:`关闭`,tabs:{overview:`概览`,models:`模型`,tools:`工具`,skills:`技能`,advanced:`高级策略`,impact:`影响`},starters:{blank:{title:`空白配置`,description:`从基础信息开始,只配置你确实需要复用的设置。`},"safe-coder":{title:`安全编码`,description:`适合编码智能体,预置模型角色、谨慎工具权限和工程技能。`},"read-only":{title:`只读研究`,description:`适合资料阅读和总结,默认限制写入、编辑和 Shell。`},"low-cost":{title:`低成本助手`,description:`适合轻量任务,把模型角色组织为快速、低成本优先。`}},listTitle:`可复用方案`,listHint:`使用数量包含直接应用和通过其他方案间接继承的智能体。`,empty:`暂无能力方案。创建后可在多个智能体间复用运行策略。`,summaryModels:`{{count}} 个模型角色`,summaryTools:`{{count}} 条工具规则`,summarySkills:`技能:{{mode}}`,summaryEmpty:`暂无显式覆盖`,globalDefaultsTitle:`全局基线`,globalDefaultsHint:`最先应用到所有智能体。这里只放每个智能体都应该具备的基础设置。`,globalDefaultsBadge:`全局基线`,globalDefaultsInherited:`所有智能体继承`,overviewTitle:`这个方案做什么`,overviewHint:`先明确名称、用途和影响范围,再进入具体设置。`,editorTitle:`基础信息`,editorHint:`按用途命名方案;保存前可以检查本次变更和受影响的智能体。`,idLabel:`方案 ID`,nameLabel:`名称`,namePlaceholder:`安全编码`,descriptionLabel:`描述`,descriptionPlaceholder:`说明这个方案适合哪些智能体,以及它会开启或限制哪些权限。`,versionLabel:`版本`,versionAutomatic:`当前修订 {{version}} · 每次保存后自动递增`,save:`保存`,delete:`删除`,usageTitle:`使用情况`,usageHint:`保存前确认哪些智能体会受到影响。`,noUsage:`当前没有智能体使用这个能力方案。`,usageDirect:`直接应用`,usageIndirect:`通过其他方案继承`,changePreviewTitle:`本次保存的变更`,changePreviewSections:`将更新:{{sections}}`,changePreviewEmpty:`没有需要保存的变更。`,modelsTitle:`模型策略`,modelsHint:`为这个方案声明可复用的模型用途。留空表示该方案不设置模型。`,modelRoleIdLabel:`角色 ID`,modelRoleDescriptionLabel:`描述`,modelPrimaryModelLabel:`主模型`,modelFallbackModelsLabel:`Fallback 顺序`,modelAddFallback:`添加 fallback`,modelRemoveFallback:`移除 fallback`,modelFallbackPlaceholder:`选择 fallback 模型`,modelFallbackEmptyHint:`暂无 fallback 模型。添加后会在主模型失败时按顺序尝试。`,addModelRole:`添加模型角色`,removeModelRole:`移除模型角色`,modelRecommendedTitle:`推荐用途`,modelCustomTitle:`自定义角色`,modelDefaultBadge:`默认`,modelVisionBadge:`视觉`,modelVisionAutoHint:`未手动配置图片理解模型时,支持图片输入的角色可在运行时自动用于图片理解。`,addModelPurpose:`添加{name}`,noCustomModelRoles:`暂无自定义角色。`,modelRoleDescriptionPlaceholder:`可选说明`,modelRoleNames:{deep:`深度模型`,fast:`快速模型`,cheap:`低成本模型`,code:`代码模型`,review:`审阅模型`},modelRoleDescriptions:{deep:`复杂推理、规划、长上下文任务。`,fast:`短回复、轻量判断、低延迟任务。`,cheap:`批处理、摘要、成本敏感任务。`,code:`代码理解、编辑、测试与架构分析。`,review:`复核、评审、风险检查与结论校验。`},invalidModelRoleId:`每个模型角色都需要合法 id(小写字母、数字、连字符、下划线)。`,duplicateModelRoleId:`模型角色 id 重复。`,invalidModelRef:`每个模型角色都需要 provider/model 格式的模型引用。`,modelAdvancedTitle:`图像模型与回退策略`,modelAdvancedHint:`可选。仅当此方案确实需要覆盖时,设置专用图像模型、回退策略或成本上限。`,imageUnderstandingTitle:`图像理解`,imageGenerationTitle:`图像生成`,modelToolPrimaryLabel:`主模型`,modelToolFallbacksLabel:`回退模型,每行一个`,modelToolFallbacksPlaceholder:`provider/model
|
|
5
|
-
provider/backup-model`,modelAutoProviderFallbackLabel:`自动切换供应商`,modelAllowFallbacksLabel:`允许模型回退`,modelMaxCostTierLabel:`最高成本等级`,policyInherit:`不覆盖`,policyEnabled:`启用`,policyDisabled:`禁用`,costTierLow:`低`,costTierMedium:`中`,costTierHigh:`高`,advancedPositiveIntegerError:`超时与限制必须是正整数。`,saveModels:`保存模型策略`,toolsTitle:`工具权限`,toolsHint:`只配置这个方案要覆盖的工具权限;未覆盖的工具交给智能体或其他方案决定。`,toolModes:{inherit:`不覆盖`,allow:`允许`,confirm:`每次确认`,deny:`拒绝`},toolsQuickActionsLabel:`快捷操作`,toolsQuickClearOverrides:`清空覆盖`,toolsQuickReadOnlyWorkspace:`工作区只读`,toolsQuickHighRiskOff:`关闭高危`,toolsQuickNoOutbound:`禁止出站`,toolsQuickResearchMode:`研究模式`,toolsQuickCodingMode:`编码模式`,toolsEmptyBuiltin:`网关暂未返回内置工具列表。`,toolsOverrideSummaryTitle:`当前显式覆盖`,toolsNoOverrides:`暂无覆盖。这个方案不会改变任何工具权限。`,toolScopeLabel:`访问范围`,toolScopeInherit:`不覆盖范围`,toolScopeReadonly:`只读`,toolScopeWorkspace:`工作区`,toolScopeUnrestricted:`不受限`,toolMaxCallsLabel:`每轮最多调用`,toolTimeoutLabel:`超时(毫秒)`,saveTools:`保存工具权限`,lockedByPreset:`已锁定`,skillsTitle:`可用技能`,skillsHint:`控制使用该方案的智能体能看到哪些技能。`,skillModeLabels:{inherit:`不覆盖`,all:`全部技能`,allowlist:`仅允许列表`,denylist:`排除列表`,off:`关闭技能`},skillsModeLabel:`技能模式`,skillsModeInherit:`不覆盖`,skillsModeAll:`全部技能`,skillsModeAllowlist:`仅允许列表`,skillsModeDenylist:`排除列表`,skillsModeOff:`关闭技能`,skillsListLabel:`技能列表`,skillsQuickActionsLabel:`快捷操作`,skillsQuickSelectAll:`全选`,skillsQuickClear:`清空`,skillsCatalogLoading:`正在加载技能目录…`,skillsEmptyCatalog:`目录中暂无技能。`,skillsNoDescription:`SKILL.md 元数据中暂无描述。`,skillsOverrideSummaryTitle:`当前技能覆盖`,skillsInheritSummary:`不覆盖可用技能。使用该方案的智能体将继续使用自身或其他方案的技能设置。`,skillsAllSummary:`显式允许全部技能。`,skillsOffSummary:`显式关闭技能。`,skillsAllowSummary:`仅允许 {{count}} 个已选择技能。`,skillsDenySummary:`排除 {{count}} 个已选择技能。`,saveSkills:`保存技能设置`,advancedTitle:`高级策略`,advancedHint:`组合多个能力方案,并配置不常修改的策略。留空表示继承前面的配置层。`,advancedInheritanceTitle:`继承其他能力方案`,advancedInheritanceHint:`所选方案会按顺序先于当前方案应用;全局基线已自动应用,无需重复选择。`,advancedInheritanceEmpty:`目前没有其他可继承的能力方案。`,advancedJsonTitle:`分区策略`,advancedJsonHint:`专家字段使用 JSON,确保所有运行时策略都可编辑。留空表示继承。`,advancedFieldLabels:{mcp:`MCP 服务与工具策略`,memory:`记忆策略`,workflows:`工作流策略`,boundaries:`安全边界`,runtime:`运行时限制`,locks:`锁定的策略路径`},advancedFieldHints:{mcp:`包含 servers 与 tools 映射的对象;每条规则支持模式、范围和限制。`,memory:`记忆模式、来源、写入、保留、隐私、供应商路由、梦境整理与用户理解。`,workflows:`默认、允许和建议的工作流。`,boundaries:`requiresConfirmation、forbidden 与 escalation 三组规则。`,runtime:`可设置 maxTurns、timeoutMs 与 maxToolFailuresPerTurn。`,locks:`JSON 数组,列出后续配置层不可修改的策略路径。`},advancedJsonError:`{{field}} 必须是有效的 JSON。`,unsavedTitle:`能力方案有未保存改动`,unsavedImpact:`保存后会影响 {{count}} 个智能体。`,unsavedNoImpact:`保存后暂不会影响任何智能体。`,noUnsavedTitle:`没有未保存改动`,noUnsavedHint:`当前能力方案已保存。`,discard:`丢弃`,discardConfirm:`要丢弃这个能力方案中尚未保存的修改吗?`,deleteConfirm:`确定删除“{{name}}”吗?此操作无法撤销。`,savePreset:`保存能力方案`},modelsHub:{subtitle:`配置服务商密钥、自定义模型、能力模型和默认使用状态。`,docsLink:`查看文档`,tabsAria:`模型与能力分区`,saveBar:{title:`未保存改动汇总`,cleanSummary:`所有分区都已保存。`,dirtySummary:`{{count}} 个分区有未保存改动。`,savedSummary:`所有改动已保存。`,failuresSummary:`{{count}} 个分区保存失败。`,saveAll:`全部保存`,discardAll:`全部丢弃`},tabs:{services:`模型服务`,imageModels:`图片`,voice:`语音`,search:`网络搜索`},servicesHint:`管理已接入的模型服务商,或接入新的服务。`,imageModelsHint:`配置图片理解、图片生成模型与相关服务商密钥。`,voiceHint:`配置语音识别、文字转语音服务商与触发模式。`,searchHint:`配置 web_search 工具使用的搜索服务商和限制规则。`,connectedProviders:{title:`已接入的服务`,titleCount:`已接入的服务 ({{count}})`,empty:`还没有接入任何模型服务`,emptyHint:`接入一个服务商,填写 API Key 即可开始使用。`,addProvider:`接入新的服务商`,manage:`管理`,models:`模型`,modelsCount:`{{count}} 个模型`,custom:`自定义`,loading:`加载中…`,noModels:`暂无模型`},addProviderDialog:{title:`接入新的服务商`,searchPlaceholder:`搜索服务商…`,builtinSection:`内置服务商`,customSection:`自定义服务`,customDescription:`接入 OpenAI 兼容的私有部署或第三方模型服务`,addCustom:`添加自定义模型服务`,configured:`已配置`,notConfigured:`未配置`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`输入 API Key…`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.example.com/v1`,providerIdLabel:`服务商 ID`,providerIdPlaceholder:`例如 my-provider`,save:`保存`,saving:`保存中…`,saved:`已保存`,cancel:`取消`,close:`关闭`,back:`返回`,getApiKey:`获取 API Key`,getApiKeyIntl:`获取 API Key (国际)`,getApiKeyCn:`获取 API Key (国内)`,saveError:`保存失败,请重试。`,addModel:`添加模型`,modelIdLabel:`模型 ID`,modelIdPlaceholder:`例如 gpt-4o`,discoverModels:`发现模型`,discoveringModels:`发现中…`,discoverModelsHint:`无法从该端点发现模型,请手动填写模型 ID。`,noResults:`没有匹配的服务商`,step1Title:`选择服务商`,step2BuiltinTitle:`配置服务商`,step2CustomTitle:`添加自定义模型服务`,presetLabel:`预设`,presetCustom:`自定义`,presetOllama:`Ollama`,presetLmStudio:`LM Studio`,presetOpenRouter:`OpenRouter`,presetZhipuCn:`智谱 GLM(国内 · Coding 端点)`,presetZaiGeneral:`智谱 GLM(国际 · 通用 API)`,apiTypeLabel:`API 类型`,providerIdRequired:`请填写服务商 ID。`,baseUrlRequired:`请填写 Base URL。`,categories:{common:`常用`,domestic:`国内模型`,specialty:`其他服务商`,enterprise:`企业`,oauth:`OAuth 授权`,extension:`扩展`}},manageProviderDialog:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`输入新的 API Key…`,apiUrlLabel:`API 地址`,apiUrlExtensionHint:`请求由扩展插件转发,无固定公开 API 地址。`,baseUrlLabel:`Base URL`,modelsLabel:`可用模型`,noModels:`该服务商下暂无模型`,modelsCount:`{{count}} 个模型`,save:`保存`,saving:`保存中…`,saved:`已保存`,cancel:`取消`,close:`关闭`,remove:`移除`,removeConfirmTitle:`移除服务商`,removeConfirmDescription:`确定移除 {{provider}} 的配置?移除后需要重新填写密钥才能使用。`,removeConfirmAction:`移除`,saveError:`保存失败,请重试。`,getApiKey:`获取 API Key`,getApiKeyIntl:`获取 API Key (国际)`,getApiKeyCn:`获取 API Key (国内)`,showKey:`显示密钥`,hideKey:`隐藏密钥`,copy:`复制`,copied:`已复制`,maskedHelp:`已保存的密钥默认隐藏。点击眼睛图标可从网关凭据或 models.json 读取(不含环境变量中的密钥)。`,notInConfigFile:`网关与 models.json 中未找到密钥 — 该服务商可能使用环境变量或 OAuth。`,extensionKeyHint:`此扩展服务商由插件自行管理凭据,无需在网关保存 API Key。如需可选密钥,请在扩展设置或环境变量中配置。`,openExtensionSettings:`打开扩展设置`,extensionSettingsLinkTitle:`在扩展设置页配置可选凭据`,loadFailed:`无法读取 API Key。`,custom:`自定义`}},setupStatus:{title:`系统状态`,subtitle:`查看当前配置进度,完成必要步骤后即可开始对话。`,refresh:`刷新`,loading:`正在加载状态…`,loadError:`无法加载系统状态,请检查网关连接后重试。`,summaryTitle:`概览`,summarySubtitle:`对话所需的核心服务。`,summaryGateway:`网关`,summaryProviders:`服务商`,summaryModel:`默认模型`,statusOnline:`在线`,statusOffline:`离线`,requiredCompleteMessage:`基础配置已完成,可以开始对话。`,requiredIncompleteMessage:`完成下方基础步骤后即可开始对话。`,health:{readyTitle:`可以开始对话`,readyBody:`核心配置已完成,Doctor 暂未发现阻塞问题。`,setupTitle:`继续完成核心配置`,setupBody:`先完成可用性步骤,再开始稳定的对话会话。`,attentionTitle:`需要处理`,attentionBody:`Doctor 发现了一些可能影响稳定性或后续运行的警告。`,blockedTitle:`需要修复`,blockedBody:`Doctor 发现至少一个阻塞问题,建议先处理。`,issueCount:`{{count}} 个问题需要关注。`,viewIssues:`查看问题`,continueSetup:`继续配置`,startChat:`开始对话`,runDoctor:`运行 Doctor`,runDoctorRunning:`正在运行…`,doctorIdleMessage:`点击「运行 Doctor」会重新检查配置、网关、通道、日志和浏览器诊断。`,doctorRunningMessage:`正在刷新诊断结果,请稍候。`,doctorCompleteMessage:`Doctor 已完成,页面状态已更新。`,doctorFailedMessage:`Doctor 运行失败,请检查网关连接后重试。`},issuesTitle:`需要处理`,issuesSubtitle:`Doctor 检查按严重程度排序。点击条目进入对应设置处理。`,noIssues:`暂未发现 Doctor 问题。`,fixIssue:`打开`,nextStepsTitle:`下一步`,nextStepsIssuesSubtitle:`先处理会影响可用性的项目;每一项都会打开对应设置。`,nextStepsReadySubtitle:`核心路径已整理为最少步骤,完成后即可稳定对话。`,readinessTitle:`对话可用性`,readinessSubtitle:`从网关连接到默认模型可用的最短路径。`,readinessLabels:{gateway:`网关`,provider:`模型服务商`,defaultModel:`默认模型`,ready:`可以对话`},diagnosticsTitle:`诊断信号`,diagnosticsSubtitle:`聚合安全、通道、浏览器工具、日志、网关和自动化状态。`,diagnosticsAllClear:`当前没有需要关注的诊断项。`,diagnosticsEmpty:`暂时没有可用的诊断信号。`,checklistTitle:`设置清单`,checklistSubtitle:`点击步骤进入对应设置。带「可选」标记的步骤可稍后再做。`,optionalBadge:`可选`,labels:{gatewayOnline:`已连接网关`,gatewayOffline:`未连接 — 请检查令牌与网关`,providersConfigured:`已配置 {{count}} 个服务商`,providersMetaReady:`{{configured}} / {{total}} 个服务商已就绪`,providersMissing:`尚未配置服务商`,modelConfigured:`{{model}}`,modelMissing:`尚未选择默认模型`,channelConfigured:`已连接至少一个消息通道`,channelMissing:`尚未配置消息通道`,skillsConfigured:`已有 {{count}} 个可用技能`,skillsMissing:`尚未安装技能`},items:{gateway:{title:`连接网关`,description:`确认网页控制台可以访问 xopc 网关。`},provider:{title:`配置 LLM 服务商`,description:`至少添加一家 AI 服务商的 API 密钥或 OAuth 令牌。`},defaultModel:{title:`选择默认模型`,description:`设置新对话使用的默认模型。`},channel:{title:`连接消息通道`,description:`关联 Telegram、微信或飞书,从即时通讯应用对话。`},skill:{title:`安装技能`,description:`从市场或目录安装技能,扩展智能体能力。`}},scenarios:{title:`快速场景向导`,subtitle:`按使用方式选择路径 — 每一步会打开对应设置页。`,dismiss:`隐藏`,steps:{stepProviders:`配置 LLM 服务商密钥`,stepDefaultModel:`选择默认对话模型`,stepChannel:`连接消息通道`,stepAutomation:`创建自动化`,stepSkills:`从目录安装技能`},presets:{lightChat:{title:`轻量对话`,description:`在网页控制台对话 — 配置一家服务商并选择默认模型即可。`},multiChannel:{title:`多频道助手`,description:`连接 Telegram 等通道,让同一个助手可以从网页和消息应用回复。`},automation:{title:`自动化工作流`,description:`结合技能与定时任务,完成周期性后台工作。`}}}},credentialsHub:{title:`密钥与授权`,subtitle:`集中管理对话、搜索、图像和语音所需的 API 密钥与 OAuth 授权。`,refresh:`刷新`,loading:`正在加载凭证状态…`,loadError:`无法加载凭证状态,请检查网关连接后重试。`,domainsTitle:`密钥分类`,domainsSubtitle:`在对应详情页管理密钥,保存后写入本地网关配置。`,footerHint:`LLM 密钥在「LLM 服务商」页管理。图像、语音和网页搜索密钥也可能来自环境变量;这里仅显示已写入配置的项目。`,status:{ready:`就绪`,partial:`部分`,missing:`缺失`,notNeeded:`可选`},labels:{llmMetaReady:`{{configured}} / {{total}} 个 LLM 服务商已就绪`,llmConfigured:`已配置 {{count}} 个 LLM 服务商`,llmMissing:`尚未配置 LLM 服务商`,webSearchDisabled:`网页搜索已关闭`,webSearchReady:`已设置 {{configured}} / {{total}} 个搜索 API 密钥`,webSearchNoProviders:`尚未配置搜索服务商`,imageReady:`已配置 {{configured}} / {{total}} 个图像服务商`,imageNoProviders:`尚未配置图像服务商`,voiceDisabled:`语音输入/输出已关闭`,voiceReadyNoKeys:`语音已启用 — 无需 API 密钥`,voiceKeysReady:`已设置 {{configured}} / {{total}} 个语音 API 密钥`,voiceMissing:`语音尚未配置`},domains:{llm:{title:`LLM 服务商`,description:`对话模型所需的 API 密钥与 OAuth 授权。`},webSearch:{title:`网页搜索`,description:`Brave、Tavily 等搜索 API 密钥。`},image:{title:`图像生成`,description:`视觉理解与图像生成服务商密钥。`},voice:{title:`语音(STT / TTS)`,description:`语音识别与文字转语音所需的密钥。`}}},dreamingSettings:{title:`梦境`,subtitle:`查看并维护后台记忆晋升(deep promotion)任务的运行状态。`,tabsAriaLabel:`梦境设置分类`,tabConfig:`设置`,tabRuntime:`运行状态`,tabInsights:`预览与日志`,tabMaintenance:`维护`,configTabHint:`管理后台记忆整理的开关、运行计划和整理阶段。`,runtimeTabHint:`查看当前生效调度、晋升锁、短期召回存储和最近运行结果。`,insightsTabHint:`预览可晋升候选,并查看各阶段运行审计日志。`,maintenanceTabHint:`重置短期 store 或清理卡住的晋升锁;不会修改 MEMORY.md。`,refresh:`刷新`,runNow:`立即执行`,runPhaseLabel:`阶段`,runNowHint:`立即执行一次当前阶段的记忆整理任务。`,runNowSaveFirstHint:`先保存更改再立即执行;立即执行会使用已生效配置。`,runQueued:`执行已完成。`,actionOk:`已完成。`,configSaved:`配置已保存。`,configLoading:`正在加载配置…`,saveConfig:`保存并生效`,enableAllAgentsDreaming:`一键开启全部 agent`,unsavedConfigTitle:`有未保存更改`,unsavedConfigHint:`当前页面显示的是待保存配置。保存后,调度任务和立即执行才会使用这些更改。`,phasePendingSave:`待保存`,phaseWillEnable:`保存后开启`,phaseWillDisable:`保存后关闭`,masterTitle:`后台记忆整理`,masterHint:`开启后会按下方阶段计划自动整理短期记忆,并同步到运行中的后台任务。`,masterOn:`已开启`,masterOff:`已关闭`,scheduleTitle:`运行计划`,phasesTitle:`整理阶段`,configEnabled:`启用 dreaming`,configFrequency:`全局 fallback 调度`,configTimezone:`时区(IANA)`,configPhaseLight:`浅睡眠(Light)`,configPhaseLightHint:`轻量去重扫描(默认每 6 小时)。`,configPhaseDeep:`深度睡眠(Deep)`,configPhaseDeepHint:`完整评分晋升,含时间衰减(每天凌晨 3 点)。`,configPhaseRem:`快速眼动(REM)`,configPhaseRemHint:`跨条目模式聚类与梦境日记(每周日凌晨 5 点)。`,configPhaseEnabled:`启用`,configPhaseCron:`运行时间`,configLightLookbackDays:`回溯天数`,configLightLimit:`条数上限`,configLightDedupe:`去重相似度`,configDeepMinScore:`最低分数`,configDeepMinRecallCount:`最低召回次数`,configDeepMinUniqueQueries:`最低唯一查询数`,configDeepLimit:`条数上限`,configDeepHalfLife:`时间衰减半衰期(天)`,configDeepMaxAge:`最大年龄(天)`,configRemLookbackDays:`回溯天数`,configRemLimit:`条数上限`,configRemMinStrength:`最低模式强度`,previewTitle:`预览(dry-run)`,previewHint:`展示经过 rehydrate、污染过滤、marker/hash 去重后的候选列表,不会写入任何文件。`,previewLoad:`加载预览`,previewNotLoaded:`尚未加载预览。`,previewEmpty:`没有可晋升的候选。`,previewEligible:`可晋升`,runtimeTitle:`运行状态`,runtimeHint:`只读:网关上当前生效的调度、短期 store 与最近一次扫描结果。`,subsectionSchedule:`调度与锁`,subsectionStore:`短期召回`,subsectionPhases:`三阶段配置(实际生效)`,subsectionDeep:`门控(实际生效)`,subsectionLastRun:`最近扫描(Deep)`,subsectionLightLastRun:`最近扫描(Light)`,subsectionRemLastRun:`最近扫描(REM)`,lastRunBlockHint:`数据文件:所选 agent 的 memories/.dreams/last-run.json`,phaseLastRunEmpty:`尚无运行记录。`,phaseLastRunOk:`成功`,phaseLastRunFailed:`失败`,lockValueLocked:`已锁定`,lockValueUnlocked:`未锁定`,statusTitle:`状态`,statusHint:`读取所选 agent 的 memories/.dreams 存储。`,enabled:`启用`,on:`开启`,off:`关闭`,schedule:`频率`,timezone:`时区`,lock:`晋升锁`,storeEntries:`信号条目数`,storePromoted:`已晋升条目数`,storeUpdatedAt:`存储更新时间`,storeLastPromotedAt:`最近晋升时间`,deepGate:`门控参数:`,deepGateValue:`minScore={{minScore}},minRecallCount={{minRecallCount}},limit={{limit}}`,lastRunTitle:`最近一次运行`,lastRunHint:`memories/.dreams/last-run.json:耗时、门控配置快照、候选/应用数量与跳过原因。下方可查看原始 JSON。`,lastRunEmpty:`尚无运行记录。`,lastRunDuration:`耗时`,lastRunStatus:`结果`,lastRunSuccess:`成功`,lastRunFailure:`失败`,lastRunReason:`原因`,lastRunError:`错误`,lastRunRanked:`进入排序的候选数`,lastRunApplied:`写入 MEMORY.md 条数`,lastRunSkipped:`跳过(计数)`,lastRunSkipKey:`键已在 MEMORY 中`,lastRunSkipRehydrate:`片段还原失败`,lastRunSkipContaminated:`内容污染`,lastRunSkipHash:`哈希去重`,lastRunParseError:`无法解析 last-run 文件`,lastRunRaw:`原始 JSON`,eventsTitle:`事件日志`,eventsHint:`记忆整理各阶段的运行审计记录(memories/.dreams/events.jsonl)。`,eventsLoad:`加载日志`,eventsNotLoaded:`尚未加载事件日志。`,eventsEmpty:`暂无事件记录。`,maintenanceTitle:`维护`,maintenanceHint:`仅影响 store/lock 文件,不会修改 MEMORY.md。`,resetStore:`重置 store`,clearLock:`清理锁文件`,confirmResetStore:`确认重置 dreaming store?这会清空短期召回信号。`,confirmClearLock:`确认删除晋升锁文件?仅在 sweep 卡住时使用。`},desktopPet:{loading:`加载中…`,idleMessage:`我在这里,有事点我。`,openApp:`打开 xopc`,settings:`设置`,menu:`收起/展开提示`,hide:`隐藏`,mute:`静音`,unmute:`取消静音`,toolUsing:`我正在{{action}}。`,toolActionSearch:`搜索网页`,toolActionReadFile:`读取文件`,toolActionEditFile:`编辑文件`,toolActionWriteFile:`写入文件`,toolActionRunCommand:`运行命令`,toolActionListDirectory:`查看目录`,toolActionOpenUrl:`打开链接`,toolActionFetchUrl:`读取网页`,toolActionUpdatePlan:`更新计划`,toolActionBrowse:`操作浏览器`,toolActionImage:`查询图片`,toolActionFinance:`查询行情`,toolActionWeather:`查询天气`,toolActionSports:`查询赛事`,toolActionTime:`查询时间`,toolActionMemory:`读取记忆`,toolActionAutomation:`处理自动化`,toolActionConnector:`调用连接器`,toolActionUnknown:`使用工具`,toolActionUnknownNamed:`使用 {{name}}`,fallbackSessionLabel:`新对话`,tipRunStart:`我在整理上下文,马上开工。`,tipTool:`我在{{action}}{{detail}}。`,tipProgress:`我在继续推进{{progress}}。`,tipValidate:`我在做最后检查{{progress}}。`,tipWaiting:`这里需要你确认。`,tipAssistantDelta:`我在组织答案。`,tipCommandDelta:`命令有新输出。`,tipAssistantDone:`我整理了几个要点,正在收尾。`,tipComplete:`收工,结果已经放回这段会话。`,tipCompleteSummary:`完成了:{{summary}}`,tipError:`这一步需要处理。`,tipTargetSuffix:`:{{detail}}`,tipProgressSuffix:` · {{completed}}/{{total}}`,tipLongRunning:`这项任务跑得有点久,我还在看住它。`,tipStaleSignal:`这步有点慢,我还在等新信号。`,petCtaNeedsInput:`去确认`,petCtaReviewIssue:`去处理`,idleTipTitle:`我在边上待命`,idleTipBody:`如果继续开工,我会帮你看住后台进度。`,taskInProgress:`任务进行中`,taskRecentActivity:`最近活动`,viewSession:`查看会话`,stopTask:`停止`,taskStopped:`任务已停止。`},desktopPetSettings:{title:`宠物`,subtitle:`可拖动、有动画的宠物,会显示重要反馈,并能跳回 xopc。`,loading:`正在加载宠物…`,refresh:`刷新`,openFolder:`打开文件夹`,enable:`启用宠物`,enableDesc:`在桌面上显示一个可拖动的宠物。`,showOnStartup:`启动时显示`,showOnStartupDesc:`xopc 启动后自动打开宠物。`,createTitle:`用对话创建自定义宠物`,createDesc:`打开一个新对话,让智能体根据你的描述创建宠物;之后也可以在同一段对话里继续调整。`,createNamePlaceholder:`名称`,createPromptPlaceholder:`例如:喜欢终端的蓝色困困机器人`,createPromptRequired:`请先描述你想创建的宠物。`,create:`创建`,createInChat:`新对话创建`,creating:`创建中…`,createSuccess:`{name} 已创建并选中。`,createChatDraft:`/skill:hatch-pet 我想创建一个新的 xopc 宠物。请先问我想要的宠物设定,等设定清楚后再调用 create_desktop_pet 创建。`,optimizeInChat:`优化`,optimizeChatDraft:`/skill:hatch-pet 我想优化已有宠物 {name}。petId 是 {id}。当前描述:{description}。原始设定:{sourcePrompt}。请先问我想怎么调整;当我给出修改要求后,调用 create_desktop_pet,并使用 mode=update、petId={id} 覆盖更新同一个宠物包。`,fixInChat:`修复`,fixChatDraft:`/skill:hatch-pet 我想修复一个无法加载的 xopc 宠物包。目录:{dir}。加载失败原因:{reason}。诊断细节:{details}。请先检查这个宠物包的问题,向我说明最小修复方案;确认后修复或重新生成同一个宠物包。`,noIssueDetails:`无更多诊断细节`,petList:`宠物列表`,petListDesc:`选择内置宠物,或在自定义文件夹中添加 manifest。`,selected:`已选`,select:`选择`,customBadge:`自定义`,customPets:`自定义宠物`,builtinPets:{ember:{name:`逐焰`,description:`给日常代理工作一点温热的推进感。`},relay:{name:`信铃`,description:`在不同应用和渠道之间传递消息。`},loom:{name:`织忆`,description:`把上下文、笔记和记忆织在一起。`},scout:{name:`探光`,description:`帮你从信息里找到真正有用的线索。`},forge:{name:`铸匠`,description:`陪你构建、修复和调用工具。`},sprout:{name:`新芽`,description:`给新的工作流和想法留出生长空间。`},atlas:{name:`叠境`,description:`为大型工作区提供清晰的结构感。`},pulse:{name:`脉点`,description:`感知网关、自动化和持续运行的状态。`},patch:{name:`补丁`,description:`适合陪你做细致改动和审阅差异。`}},invalidPets:`部分自定义宠物无法加载`,size:`宠物大小`,sizeDesc:`调整浮窗和宠物尺寸。`,alwaysOnTop:`始终置顶`,alwaysOnTopDesc:`让宠物保持在其他窗口之上。`,bubbles:`对话气泡`,bubblesDesc:`在宠物旁显示有用的智能体状态反馈。`,clickThrough:`空闲时点击穿透`,clickThroughDesc:`菜单关闭时,让透明区域的点击穿透到下方窗口。`,mute:`静音`,muteDesc:`保留视觉反馈,但不播放宠物声音。`,feedbackLevel:`反馈密度`,feedbackLevelDesc:`选择桌宠展示执行进度的密度。`,feedbackQuiet:`静默`,feedbackNormal:`简洁`,feedbackChatty:`进度`,resetPosition:`重置位置`},systemSettings:{title:`系统授权`,behaviorGroup:`应用行为`,desktopOnlyTitle:`仅桌面端`,desktopOnlyBody:`系统集成功能仅在 xopc Electron 桌面版中可用。在浏览器中请通过操作系统设置管理。`,toggles:{openAtLogin:`开机自动启动`,openAtLoginDesc:`登录本机用户时自动启动 xopc。`,keepAwake:`保持系统唤醒`,keepAwakeDesc:`开启后请求系统保持唤醒,减少因空闲睡眠中断长时间任务。`,notifyDesktop:`桌面通知`,notifyDesktopDesc:`应用在后台时显示系统通知(更新提醒、应用内提示、智能体错误等)。`,notifySound:`声音通知`,notifySoundDesc:`每条桌面通知播放短提示音。`},permissionsTitle:`系统权限`,permissionsHint:`状态为尽量检测,修改系统设置后请刷新或重新进入本页。`,permissionsHintDarwin:`macOS 的隐私/媒体状态为尽量检测。修改系统设置后请用「刷新状态」或再次进入本页。`,permissionsHintDevDarwin:`开发模式(electron:dev)在系统设置中显示为 Electron,而非 xopc。请用打包后的 .app 验证权限名称是否正确。`,permissionsHintWin:`在 Windows 上,麦克风和(如系统可报告)录屏等能力受系统级开关影响;每个按钮会打开系统「设置」中的相关页面。`,permissionsHintLinux:`Linux 上此处不显示各权限的准确状态。会尝试打开桌面环境设置,失败时打开说明文档。请在发行版/Flatpak/ portal 中授予「文件、麦克风、通知」等。`,status:{granted:`已授权`,denied:`未授权`,unknown:`未知`},openSettings:`去设置`,refresh:`刷新状态`,refreshing:`刷新中…`,refreshDone:`权限状态已更新。`,openSettingsDone:`已打开系统设置。`,openSettingsFailed:`无法打开系统设置,请从系统偏好设置中手动查找对应项。`,requestAccess:`请求访问`,permFeedback:{granted:`麦克风已授权。`,alreadyGranted:`麦克风此前已授权。`,openedSettings:`已在系统设置中打开麦克风页面,请启用 xopc 后点击「刷新状态」。`,denied:`麦克风未授权,请在系统设置中启用 xopc。`,rendererDenied:`浏览器层无法访问麦克风,请检查系统隐私设置。`,prompted:`若出现系统提示,请选择允许麦克风访问。`},screenFeedback:{granted:`录屏权限已授权。`,alreadyGranted:`录屏此前已授权。`,openedSettings:`已在系统设置中打开录屏页面,请启用 xopc 后点击「刷新状态」。`,denied:`录屏未授权,请在系统设置中启用 xopc。`,prompted:`若出现系统提示,请允许 xopc 进行屏幕录制。`},accessibilityFeedback:{granted:`辅助功能已授权。`,alreadyGranted:`辅助功能此前已授权。`,openedSettings:`已在系统设置中打开辅助功能页面,请启用 xopc 后点击「刷新状态」。`,denied:`辅助功能未授权,请在系统设置中启用 xopc。`},notificationsFeedback:{granted:`通知权限已授权。`,alreadyGranted:`通知此前已授权。`,openedSettings:`已在系统设置中打开通知页面,请启用 xopc 后点击「刷新状态」。`,denied:`通知权限被拒绝,请在系统设置中启用 xopc。`,prompted:`若出现系统提示,请允许 xopc 发送通知。`,default:`未选择通知权限,请重试或在系统设置中手动启用。`,unsupported:`当前环境不支持系统通知。`},desktopNotify:{testTitle:`桌面通知已开启`,testBody:`当 xopc 在后台运行时会在此显示提醒。`,testShown:`已发送测试通知。若未看到,请在系统设置中允许 xopc 的通知。`,denied:`通知权限被拒绝。请先在系统中允许 xopc 的通知,再重试。`,agentErrorTitle:`智能体运行失败`,agentErrorBody:`打开 xopc 查看详情。`},perm:{fullDisk:{title:`文件与磁盘访问`,desc:`在需要时访问工作区、用户目录等(具体名称因系统而异)。`},screen:{title:`录屏`,desc:`在应用内浏览器外进行整屏/窗口采集、供视觉类能力使用。`},microphone:{title:`麦克风`,desc:`在对话和语音能力中录音。`},accessibility:{title:`辅助功能`,desc:`使用全局快捷键及辅助功能相关能力。`},automation:{title:`自动操作 / 与系统集成`,desc:`与其他应用或系统能力协作(在 macOS 上对应自动化与隐私;在 Windows 上为默认应用等;Linux 为桌面/portal 能力)。`},notifications:{title:`通知`,desc:`在系统「通知」或本应用项中允许通知,以便任务完成时提示。`},location:{title:`位置`,desc:`在提供地理位置相关任务时获取位置信息。`}},permUnknown:{fullDisk:{darwin:`macOS 在真正访问前无法准确报告。若读取工作区失败,请在「完全磁盘访问权限」中启用 xopc。`,win32:`Windows 无法在此准确报告。若文件访问失败,请打开「存储」相关设置。`,linux:`若文件访问失败,请在发行版、Flatpak 或 desktop portal 中授予文件权限。`},screen:{darwin:`若录屏/截屏失败,请在「屏幕录制」中为 xopc 授权。`,win32:`若屏幕采集失败,请在「设置」中允许桌面应用的屏幕捕获。`,linux:`若屏幕采集失败,请在 desktop portal 或合成器设置中授权。`},microphone:{darwin:`若语音输入失败,请点「请求访问」或打开「麦克风」隐私设置。`,win32:`若语音输入失败,请点「请求访问」或打开「麦克风」隐私设置。`,linux:`若语音输入失败,请在桌面环境或 Flatpak 中授予麦克风权限。`},accessibility:{darwin:`全局快捷键需要辅助功能权限。请「请求访问」后在「辅助功能」中启用 xopc。`,win32:`若全局快捷键或集成失败,请打开「辅助功能」设置。`,linux:`若快捷键失败,请在桌面环境的辅助功能/权限设置中授权。`},automation:{darwin:`若控制其他应用失败,请在「自动化」/ Apple 事件中为 xopc 授权。`,win32:`若与其他应用集成失败,请在 Windows「设置」中配置默认应用与自动化。`,linux:`若自动化失败,请在 desktop portal 或会话设置中授权应用集成。`},notifications:{darwin:`请「请求访问」,然后在系统「通知」中为 xopc 开启通知。`,win32:`请「请求访问」,然后在「设置」中为 xopc 开启通知。`,linux:`请在桌面环境或 Flatpak 权限中允许通知。`},location:{darwin:`若位置功能失败,请在「定位服务」中为 xopc 授权。`,win32:`若位置功能失败,请在「设置」中允许桌面应用访问位置。`,linux:`若位置功能失败,请在 desktop portal 中授予位置权限。`}},desktopApp:{title:`应用数据`,loading:`加载中…`,devOnlyTitle:`开发模式`,devOnlyBody:`删除数据与卸载仅在打包后的桌面应用中可用。下方路径仅供参考。`,appPath:`安装位置`,dataPath:`共享数据目录`,dataSize:`数据大小`,dataSizeUnknown:`—`,copyPath:`复制`,copied:`已复制`,copyFailed:`无法复制到剪贴板,请手动选择路径复制。`,sharedDataWarning:`此目录由 Gateway、Electron 和 TUI 共用。删除会影响所有客户端;请先停止其他 xopc 进程,避免并发写入。`,pendingUpdateBlocked:`有待安装的更新时无法删除数据或卸载,请先完成或取消更新。`,clearData:`删除应用数据`,clearDataDesc:`永久删除共享配置、会话、工作区与缓存。Gateway、Electron 和 TUI 都会失去这些数据。`,clearDataConfirmTitle:`删除应用数据?`,clearDataConfirmDesc:`将永久删除共享数据目录中的 API 密钥、会话、对话记录与工作区文件。Gateway、Electron 和 TUI 都会受影响,且无法恢复。`,clearDataConfirmCheckbox:`我了解此操作不可恢复`,clearDataConfirmPhrase:`确认删除`,clearDataConfirmLabel:`请输入「确认删除」以继续`,clearDataConfirmHint:`必须输入「确认删除」后才会启用删除按钮。`,uninstall:`卸载应用`,uninstallDescDarwin:`将在 Finder 中选中 xopc 并退出应用。请将 xopc.app 拖入废纸篓以完成卸载。`,uninstallDescWin:`将打开 Windows 卸载向导并退出 xopc。`,uninstallDescLinuxAppImage:`将打开 AppImage 所在文件夹并退出 xopc。删除该 AppImage 文件即可完成卸载。`,uninstallDescLinuxDeb:`将退出 xopc 并打开安装目录。在终端执行:sudo dpkg -r {{package}}(或使用发行版软件中心卸载)。`,uninstallDescLinuxUnknown:`将打开安装位置并退出 xopc。请使用发行版工具删除应用文件或软件包。`,uninstallConfirmTitle:`卸载 xopc?`,removeUserDataCheckbox:`卸载前同时删除应用数据(会影响 Gateway、Electron 和 TUI)`,confirmClear:`删除数据`,confirmUninstall:`卸载`,cancel:`取消`,migrations:{title:`升级修复`,checking:`正在检查迁移状态…`,checkFailed:`无法检查迁移状态。`,upToDate:`配置已是最新。`,manualAttention:`部分升级修复需要手动处理。`,safeRepairs:`可应用 {{count}} 个安全升级修复。`,apply:`应用修复`,applying:`正在应用…`},errors:{pendingUpdate:`已有下载完成的更新等待安装。请先重启完成更新,再卸载。`,uninstallerNotFound:`未找到卸载程序。请在「设置 → 应用 → 已安装的应用」中移除 xopc。`,notPackaged:`开发模式下无法执行此操作,请使用打包后的桌面应用。`,generic:`操作失败。请重试或通过系统设置卸载。`}}},settingsMode:{toggleLabel:`显示高级选项`,toggleAria:`切换高级设置导航`},settingsNavGroups:{general:`通用`,system:`系统设置`,credentials:`模型与密钥`,agent:`智能体配置`,connection:`连接`,automation:`自动化`,diagnostics:`诊断`,extensions:`扩展`},cronSettingsPage:{title:`定时任务`,subtitle:`调度引擎开关、并发、时区与运行历史保留等全局参数。`,tasksLink:`管理任务与运行历史 →`},goalsSettingsPage:{title:`目标运行规则`,subtitle:`配置持久目标 /goal 的评判方式、执行限制与通知规则。`},imageModelsSettings:{title:`图像`,subtitle:`配置图像理解、图像生成的默认模型、运行参数和图像服务商密钥。`,refresh:`刷新`,crossLinkHint:`本页配置图片服务商。Agent 模型角色和文本模型请在「智能体」页面管理。`,loadError:`无法加载图片模型配置。`,understandingTitle:`图片理解`,understandingDescription:`用于读取上传图片、截图和 image 工具输入。支持图片输入的文本模型会自动出现在这里。`,runtimeUnderstandingTitle:`运行时图片理解模型`,runtimeUnderstandingExplicit:`当前使用手动配置。`,runtimeUnderstandingAutoRole:`已从模型角色 {role} 自动选择。若要固定图片理解模型,请在下方手动选择主模型并保存。`,runtimeUnderstandingAutoProvider:`已从已配置的 Provider 模型目录自动选择。若要固定图片理解模型,请在下方手动选择主模型并保存。`,runtimeUnderstandingNone:`当前没有可用的运行时图片理解模型。请配置支持图片输入的模型角色,或在下方手动选择主模型。`,runtimeUnderstandingFallbacks:`备用模型:{models}`,runtimeUnderstandingNoFallbacks:`没有运行时备用模型。`,runtimeAgentLabel:`预览智能体`,runtimeAgentHint:`该选择只影响上方运行时预览。下方手动图片模型配置仍保存到全局默认配置。`,generationTitle:`图片生成`,generationDescription:`用于 image_generate 工具生成或编辑图片。这里只显示已注册的图片生成 Provider 模型。`,primaryModelLabel:`主模型`,fallbackModelsLabel:`备用模型`,fallbackModelsPlaceholder:`未添加备用模型`,noModelSelected:`自动选择`,timeoutLabel:`超时(毫秒)`,timeoutHint:`单次生成的最大耗时,留空使用网关默认值(120000 毫秒)。`,autoFallbackLabel:`失败时尝试其他已配置服务商`,autoFallbackHint:`当前备用模型都失败后,会继续按顺序尝试其他已配置服务商。`,save:`保存`,discard:`放弃`,saving:`保存中…`,saved:`已保存。`,fallbackChainsTitle:`备用模型`,runtimeTuningTitle:`运行参数`,runtimeTuningHint:`这些选项只影响图片生成;图片理解使用模型调用自身的默认超时。`,providersTitle:`图像服务商`,providersEmpty:`尚未配置图像生成服务商。`,configured:`已配置`,missingKey:`缺少 API Key`,unsavedChanges:`未保存`,expandProvider:`展开服务商配置`,collapseProvider:`收起服务商配置`,defaultModel:`默认模型`,modelsLabel:`模型`,modelCountOne:`1 个模型`,modelCountMany:`{count} 个模型`,credentialsIntro:`在这里填写图像服务商的 API Key 和可选接口地址。密钥会保存在本地配置中,网关不会返回完整密钥。`,apiKeyLabel:`API Key`,regionLabel:`区域`,regionHint:`DashScope:在卡片中选择区域后,会自动写入 region 和官方图像接口地址;选择「自定义」后可手动填写。`,endpointPresetsHint:`如果卡片提供接口地址或集群预设,请选择一项;选择「自定义」后可手动填写 Base URL。`,baseUrlLabel:`Base URL`,imageBaseUrlLabel:`图像 Base URL`,optionalPlaceholder:`可选`,saveCredentials:`保存密钥`,savingCredentials:`保存中…`,credentialsSaved:`密钥已保存。`,discardCredentials:`放弃密钥修改`,credentialsSaveError:`无法保存服务商密钥。`,credentialsNothingToSave:`没有需要保存的密钥变更。`,regionPresetDefault:`默认(由网关自动选择)`,regionPresetCustom:`自定义区域 / 端点`,baseUrlPresetDefault:`默认(官方地址)`,baseUrlPresetCustom:`自定义 URL`,openExtensionSettings:`扩展设置页`,openImageModelsPage:`打开「图像」设置`,extensionSettingsLinkTitle:`打开该服务商的扩展设置`,imageModelsLinkTitle:`打开「图像」设置(全部 Provider)`,imageBaseUrlPresetHint:`由区域预设自动填入;选择「自定义」后可编辑。`,dashscopeRegion_beijing:`中国(北京)`,dashscopeRegion_singapore:`国际(新加坡)`,dashscopeRegion_us:`美国(弗吉尼亚)`,apiKeyMaskedHelp:`已保存的密钥默认隐藏。点击眼睛图标可从配置文件读取(仅 providers.<id>.apiKey,不含环境变量里的密钥)。`,apiKeyCopy:`复制`,apiKeyCopied:`已复制`,apiKeyShow:`显示密钥`,apiKeyHide:`隐藏密钥`,apiKeyNotInConfigFile:`配置文件里没有该 Provider 的 API Key(可能只通过环境变量提供)。`,apiKeyRevealFailed:`无法从网关读取密钥。`,minimaxClusterLabel:`MiniMax 集群(API 主机)`,minimaxClusterHint:`MiniMax 区分国内与国际靠的是不同主机名,配置里写在 providers.minimax.baseUrl,而不是像 DashScope 那样用 region 字段;DashScope 用 region 再映射到官方图像接口 URL。`,falQueueBaseLabel:`Fal 队列 / API 根地址`,falQueueBaseHint:`Fal 文生图请求挂在队列根地址上(默认 https://queue.fal.run),对应配置项 providers.fal.baseUrl。`},extensionImageGen:{banner:`API Key 与端点写入全局配置 providers.<id>(与「设置 → 图像」相同)。两个入口任选其一,保存后会保持一致。`,openImageModels:`打开「图像」设置(全部 Provider)`},extensionSttMedia:{banner:`STT 凭据写入 tools.media.audio.providers.<id>(与「设置 → 语音」相同)。两个入口任选其一,保存后会保持一致。`,openVoice:`打开「语音」设置(全部 STT Provider)`,credentialsTitle:`STT 凭据`,credentialsHint:`保存时会写入 tools.media.audio.providers.{providerId},并启用 STT。`,configured:`已配置`,notConfigured:`未配置`},appearanceSettings:{pageTitle:`偏好设置`,subtitle:`语言、界面外观与对话字号等日常使用的显示行为,仅保存在本浏览器。`,languageTitle:`语言`,languageDescription:`选择界面语言。`,themeTitle:`主题亮暗`,themeDescription:`浅色、深色,或跟随系统。`,colorSchemeTitle:`配色方案`,colorSchemeDescription:`界面的视觉风格。`,colorSchemeDefault:`沉静智能`,colorSchemeLightGreen:`浅绿`,colorSchemeModernMono:`mono/单色`,colorSchemeClay:`奶油 Clay`,fontScaleTitle:`对话字号`,fontScaleDescription:`调整对话与阅读区域的文字大小。`,fontScaleCompact:`小`,fontScaleDefault:`中`,fontScaleLarge:`大`,langOptionEn:`English`,langOptionZh:`中文`,themeOptionLight:`浅色`,themeOptionDark:`深色`,themeOptionSystem:`跟随系统`,openFullPreferences:`打开全部设置`,quickMenuHint:`语言、主题与字号`,showDesktopPet:`显示宠物`,hideDesktopPet:`隐藏宠物`,aboutApp:`关于`,developerGroupTitle:`开发者选项`,developerGroupDescription:`影响对话中工具调用结果的展示形式。`,showRawToolDataTitle:`显示工具调试数据`,showRawToolDataDescription:`在工具调用步骤中显示原始 JSON 输入与输出,便于排查问题。`},keyboardShortcutsSettings:{pageTitle:`快捷键`,subtitle:`应用中可用的所有快捷键。`,categoryGlobal:`全局`,categoryNavigation:`导航`,categoryChat:`对话`,categoryEditor:`笔记编辑器`,globalToggleWindow:`显示/隐藏应用窗口`,globalVoiceInput:`开始/结束语音输入`,globalVoiceInputMacNote:`单独轻按并松开 Fn。需要辅助功能权限;建议将 macOS 的 Fn 键操作设为“不执行任何操作”以避免冲突。`,globalVoiceInputWindowsNote:`单独轻按并松开 Alt。Alt 组合键不会触发;部分应用仍可能聚焦菜单栏。`,globalOpenSettings:`打开设置`,globalNewChat:`新建对话`,globalCommandPalette:`命令面板`,navCommandPalette:`打开命令面板`,navQuickCapture:`快速记录笔记`,navToggleSidebar:`切换侧栏`,navToggleFullscreen:`切换全屏`,navCloseDialog:`关闭弹窗/设置`,chatSend:`发送消息`,chatNewLine:`换行`,chatForceSend:`强制发送(编辑模式)`,chatVoiceInput:`开始/结束语音输入`,editorHeading1:`一级标题`,editorHeading2:`二级标题`,editorHeading3:`三级标题`,editorBulletList:`无序列表`,editorOrderedList:`有序列表`,editorTaskList:`任务列表`,desktopOnly:`仅桌面应用`,quickCaptureShortcutTitle:`快速记录快捷键`,quickCaptureShortcutDescription:`设置应用处于焦点时用于快速记录笔记的快捷键。`,quickCaptureShortcutChange:`更改快捷键`,quickCaptureShortcutReset:`恢复默认`,quickCaptureShortcutRecording:`请按下快捷键(Esc 取消)`,quickCaptureShortcutConflict:`该快捷键已被占用。`,voiceInputShortcutTitle:`语音输入备用快捷键`,voiceInputShortcutDescription:`应用处于焦点时可使用此快捷键。桌面端还支持下方所示的全局 Fn 或 Alt 快捷键,按 Esc 取消。`,voiceInputAccessibilityDescription:`全局 Fn 检测需要 macOS 辅助功能权限。`,voiceInputAccessibilityGranted:`已启用全局 Fn 输入所需的辅助功能权限。`,voiceInputAccessibilityEnable:`启用权限`,voiceInputAccessibilityRequesting:`正在打开设置…`},mcpSettings:{title:`外部工具 (MCP)`,subtitle:`配置出站 MCP 服务(stdio 或 HTTP),供嵌入式智能体运行时使用。工具权限由各智能体配置控制。`,loading:`正在加载 MCP 配置…`,saved:`MCP 配置已保存。`,save:`保存`,discard:`放弃更改`,saving:`保存中…`,globalTitle:`运行时`,globalHint:`会话空闲 TTL 控制未使用的 MCP 客户端何时被回收(0 = 永不回收)。`,idleTtlLabel:`会话空闲 TTL(分钟)`,idleTtlHint:`未设置时默认 10 分钟。设为 0 表示禁用空闲回收。`,idleTtlPlaceholder:`10`,serversTitle:`服务器`,serversHint:`每个 server id 会作为工具名前缀(server__tool)。扩展的 .mcp.json 会自动合并。`,customServersTitle:`自定义 MCP 服务器`,customServersHint:`添加 stdio 子进程或远程 HTTP/SSE 端点。上方目录安装的连接器单独管理。`,reservedServerId:`该名称已被已安装的连接器占用,请换一个 server id。`,serversEmpty:`尚未配置 MCP 服务器。`,addServer:`添加服务器`,removeServer:`删除`,serverIdPlaceholder:`server-id`,serverIdLabel:`服务器名称`,serverCardTitle:`MCP 服务器`,cardUntitled:`未命名服务器`,cardExpandAria:`展开服务器配置`,cardCollapseAria:`折叠服务器配置`,transportLabel:`服务器类型`,commandLabel:`命令`,argsLabel:`参数`,argsHint:`以空格分隔(不含 shell 引号)。`,cwdLabel:`工作目录`,envLabel:`环境变量(JSON 对象)`,envHint:"值可使用 ${ENV_VAR}。危险的主机环境变量会在启动时被过滤。",urlLabel:`服务器地址`,headersLabel:`Headers`,optionalSuffix:`(可选)`,headersHint:`远程 MCP 服务的 Bearer token 与自定义头。`,addHeader:`添加 Header`,removeHeader:`删除 Header`,pasteHeaders:`粘贴`,pasteHeadersFailed:`无法解析请求头。请粘贴 JSON 对象,或 "Authorization: Bearer token" 格式的多行文本。`,headerKeyPlaceholder:`Authorization`,headerValuePlaceholder:`Bearer your-token`,timeoutLabel:`超时时间(可选)`,timeoutHint:`连接、工具列表获取及工具调用的超时时间,单位为秒(1–600)。留空使用默认值(30 秒)。`,timeoutPlaceholder:`30`,testConnection:`测试`,toolsTitle:`MCP 工具({{count}})`,toolsSummary:`发现 {{count}} 个工具`,toolsLoading:`正在获取工具列表…`,toolsEmpty:`该服务器未返回任何工具。`,viewAllTools:`查看全部`,toolsDialogTitle:`MCP 工具列表`,toolsDialogSubtitle:`{{serverId}} · 共 {{count}} 个工具`,toolsDialogSearchPlaceholder:`按名称或描述搜索…`,toolsDialogSearchEmpty:`没有匹配的工具。`,toolsDialogClose:`关闭`,disableHint:`若需禁止某智能体使用 MCP,请在该智能体配置中拒绝对应 MCP 工具。`,transportLabels:{stdio:`stdio`,sse:`SSE`,"streamable-http":`Streamable HTTP`}},connectorsSettings:JSON.parse(`{"title":"连接器","subtitle":"管理现有连接,或发现能为 Agent 提供上下文和操作能力的新连接器。","tokenHint":"请先在「设置 → 网关」保存访问令牌,再配置连接器。","tabConnected":"我的连接","tabDiscover":"发现连接器","navAria":"连接器分区","registrySourceAria":"连接器来源","discoverSourceAll":"全部来源","discoverSourceBuiltin":"xopc 内置","storeSourceName":"xopc Store","connectedSearchPlaceholder":"搜索我的连接…","discoverSearchPlaceholder":"搜索 GitHub、Slack、Notion…","refreshConnections":"刷新连接状态","sortName":"按名称排序","sortSource":"按来源排序","sortAria":"连接器排序方式","discoverTitle":"找到适合你的连接器","discoverHint":"可按用途、名称或来源筛选,连接你需要的应用和能力。","integrationStrategyHint":"核心会话使用原生渠道,高频或关键服务使用 MCP,大量低频 SaaS 集成使用 Composio。","discoverEmpty":"没有符合当前条件的连接器,请调整用途、搜索词或来源。","loadMore":"加载更多","connectionsTitle":"连接器","connectionsHint":"需要处理的连接优先显示;打开连接器可查看能力、权限与运行状态。","connectionsEmpty":"还没有连接器。先从目录选择一个,让 xopc 获取上下文或执行操作。","connectionsSearchEmpty":"没有匹配此搜索的连接器。","connectionSummaryTitle":"连接状态","connectionSummaryHint":"先处理需要设置的连接,确保 Agent 可以正常使用相关能力。","connectionReady":"正常可用","connectionNeedsSetup":"需要处理","connectionChecking":"等待检查","loading":"正在加载连接器…","addConnection":"添加连接","addFromCatalog":"从连接器目录添加","addCustomServerAdvanced":"添加自定义 MCP 服务器(高级)","runtimeSettings":"运行设置","runtimeSettingsTitle":"连接器运行设置","runtimeSettingsHint":"管理所有连接器共享的 MCP 运行时行为。","editCustomServer":"编辑","customBadge":"自定义","addCustomServerTitle":"添加自定义 MCP 服务器","addCustomServerHint":"配置 stdio 子进程或远程 HTTP/SSE 端点。","editCustomServerTitle":"编辑自定义 MCP 服务器","editCustomServerHint":"更新此服务器的连接设置。","modalSave":"保存","modalCancel":"取消","modalClose":"关闭","duplicateServerId":"已存在相同 id 的自定义服务器。","connectorConfigLabel":"设置","connectorBenefitHeadings":{"understand":"理解你的工作","act":"替你采取行动","reach":"在常用渠道联系你"},"outcomeFilterAria":"按用途筛选连接器","outcomeAll":"全部","connectorBenefitHints":{"understand":"接入文档、数据和上下文,让帮助更贴近你的真实情况。","act":"让 xopc 能在你已经使用的工具里直接推进事情。","reach":"在你常用的渠道收到进展,并随时接着聊。"},"openConnectorDetails":"打开 {{name}} 的详情","connectorDetails":"详情","connectorCapabilityLabels":{"tools":"工具","resources":"资源","prompts":"提示词","context":"上下文","channel":"渠道","events":"事件","ui":"界面","memory_source":"记忆来源","workflows":"工作流","auth.apiKey":"API key 认证","auth.oauth":"OAuth","runtime.mcp.stdio":"MCP stdio","runtime.mcp.sse":"MCP SSE","runtime.mcp.streamableHttp":"MCP streamable HTTP"},"connectorPreviewUnknown":"探测后预览","connectorPreviewButton":"预览工具","connectorPreviewTitle":"能力预览","connectorPreviewToolsCount":"{{count}} 个工具","connectorRequiredInputs":"设置","connectorRequiredInputsCount":"{{count}} 项必填","connectorCapabilitiesTitle":"能力","connectorCapabilitiesHint":"这些是注册表声明的能力。若服务器允许连接,可在安装前或安装后探测具体工具名和 schema。","connectorSetupTitle":"所需设置","connectorSetupSecret":"密钥","connectorSetupConfig":"配置","connectorSetupRequired":"必填","connectorSetupNone":"安装前不需要密钥或配置字段。","connectorRuntimeTitle":"运行时","connectorRuntimeMcp":"MCP 服务器 {{serverId}}","connectorRuntimeGeneric":"{{runtime}} 运行时 {{id}}","connectorAuthNone":"无需认证","connectorAuthApiKey":"API key","connectorAuthOAuth":"OAuth","connectorBasicConfigTitle":"连接设置","connectorBasicConfigHint":"设置服务器标识,以及 XOPC 需要连接的端点或启动的命令。","connectorShowAdvancedConfig":"高级设置","connectorHideAdvancedConfig":"收起高级设置","connectedBadge":"已连接","connect":"连接","connectorVerified":"已验证","integrationStrategyNative":"原生","integrationStrategyMcp":"首选 MCP","integrationStrategyComposio":"Composio SaaS","integrationStrategyNativeHint":"此核心通信链路使用 xopc 原生渠道运行时。","integrationStrategyMcpHint":"此高频或关键集成直接通过 MCP 运行,以获得更强的控制力和可预测性。","integrationStrategyComposioHint":"此低频 SaaS 集成使用 Composio 托管认证和工具执行。","connectorBeta":"测试版","connectorExperimental":"实验性","connectDialogTitle":"连接 {{name}}","connectProgressAria":"连接进度","connectStepConfigure":"设置","connectStepVerify":"验证","connectStepReady":"可用","secretInputLabels":{"show":"显示","hide":"隐藏","copy":"复制","copied":"已复制"},"requiredPlaceholder":"必填","optionalPlaceholder":"可选","connectingTitle":"正在建立连接并执行健康检查…","connectingHint":"XOPC 会保存连接设置、生成运行时,并探测暴露的工具、资源和提示词。","connectedAs":"已连接为 {{target}}","runtimeLabel":"运行时:{{runtime}}","healthStatusPending":"健康检查待完成","healthStatusHealthy":"健康","healthStatusLabels":{"ok":"健康","server_not_found":"未找到服务器","missing_secret":"缺少密钥","startup_failed":"启动失败","tools_list_failed":"工具列表获取失败","timeout":"已超时","network_failed":"网络失败","unauthorized":"未授权","disabled":"已禁用","unknown_error":"未知错误"},"toolsMetric":"工具","resourcesMetric":"资源","promptsMetric":"提示词","promptArgumentCount":"{{count}} 个参数","installedWithoutHealth":"已安装。可在「已安装」中测试能力。","customCapabilitySummary":"发现 {{tools}} 个工具、{{resources}} 个资源、{{prompts}} 个提示词。","catalogBadge":"目录","mcpServerRuntime":"MCP 服务器:{{serverId}}","test":"测试","remove":"删除","detailHealth":"健康","detailTools":"工具","detailResources":"资源","detailPrompts":"提示词","detailPermissions":"权限","storeLocalExecDenied":"已禁止本地命令执行","healthNotTested":"未测试","statusLabel":"状态:","lastCheckLabel":"上次检查:","never":"从未","toolsAvailable":"此连接器有 {{count}} 个可用工具。","toolsLastCheckSummary":"上次健康检查发现 {{count}} 个工具。再次运行测试可加载工具详情。","toolsRunTestHint":"运行测试以列出工具。","resourcesRunTestHint":"运行测试以列出此 MCP 服务器暴露的资源。","promptsRunTestHint":"运行测试以列出此 MCP 服务器暴露的提示词。","secretsConfigured":"已配置密钥:{{count}}","runtimeServerLabel":"运行时:{{runtime}} 服务器 {{serverId}}","mcpPolicyHint":"工具调用会通过 MCP 执行,并遵循智能体工具策略和审批门禁。","connectorPolicyHint":"工具调用会遵循连接器作用域和精选允许列表门禁。","installedToolsDialogTitle":"{{name}} 工具","installedToolsDialogSubtitle":"{{serverId}} 暴露 {{count}} 个 MCP 工具。","composioApiKeyStored":"Composio API key 已保存。安装 toolkit 连接器后可管理 OAuth 连接和工具。","composioToolkitTitle":"Composio toolkit:{{toolkit}}","composioScopeHint":"精选动作在到达智能体前会按 read/write/admin 作用域过滤。","composioScopeRead":"读取","composioScopeWrite":"写入","composioScopeAdmin":"管理","connectOAuth":"连接 OAuth","refresh":"刷新","composioConnections":"连接","composioConnectionsEmpty":"未加载活动连接。","composioAgentTools":"智能体工具","composioUncuratedSuffix":"· 未精选","composioToolsEmpty":"当前作用域下没有可用动作。","composioRecentTriggers":"最近触发","composioTriggersEmpty":"尚未归档触发事件。","composioPendingApprovals":"待确认操作","composioApprovalExpires":"{{time}} 过期","approve":"允许","composioDeny":"拒绝","composioConfirmationPolicy":"执行前确认","composioConfirmWrites":"写入和管理操作","composioConfirmAlways":"每次操作","composioConfirmNever":"不确认","composioAllowedAgents":"可用智能体","composioAllowedAgentsAll":"所有智能体都可使用此应用。","composioAllowedAgentsSelected":"仅选中的智能体可使用此应用。","composioDefaultAccount":"默认","composioAccountAlias":"账户名称","composioMakeDefault":"设为默认","composioRevoke":"撤销连接","composioRevokeConfirm":"确定撤销此账户连接吗?智能体将无法继续使用它。","composioMemorySync":"将选定数据同步到记忆","composioMemorySyncHint":"执行一次已验证的只读操作,并将结果保存为需要复核的外部记忆。","composioMemoryReadAction":"读取操作","composioMemoryArguments":"操作参数(JSON)","composioMemoryArgumentsObject":"操作参数必须是 JSON 对象。","composioMemoryAgentMissing":"没有可用于记忆同步的授权智能体。","composioSyncNow":"立即同步","composioMemorySynced":"已保存为待复核记忆 {{id}}。","composioHealthConnected":"{{count}} 个活动账户连接","composioHealthReconnect":"账户连接已过期或失败,请重新连接以恢复智能体访问。","composioHealthDegraded":"健康检查失败,请检查 Composio 凭证和网络后重试。","composioHealthMissingCredential":"请先安装并配置 Composio API Key 连接器。","composioHealthUnauthorized":"Composio 拒绝了当前项目 API Key,请更换或轮换密钥。","composioHealthForbidden":"Composio 项目 API Key 缺少所需权限。","composioHealthNetwork":"网关无法访问 Composio API,请检查 DNS、代理和防火墙。","composioHealthTimeout":"Composio 健康检查请求超时,请检查网络后重试。","composioHealthDisconnected":"尚未连接活动账户。","composioRetry":"重试"}`)},L={appBrand:`XOPC`,sidebarCollapse:`收起侧边栏`,sidebarExpand:`展开侧边栏`,titleBarCommandPalette:`命令面板`,historyBack:`后退`,historyForward:`前进`,closeMenu:`关闭菜单`,openMenu:`打开菜单`,appBarPreferences:`语言与主题`,nav:{chat:`对话`,settings:`设置`,sessions:`会话管理`,automations:`自动化`,work:`工作台`,projects:`项目`,localApps:`应用工坊`,profile:`关于你`,goals:`目标`,notes:`笔记`,workflows:`工作流`,skills:`技能`,connectors:`连接器`,channels:`消息通道`,agents:`智能体`,extensions:`扩展`,logs:`诊断日志`,settingsAppearance:`偏好设置`,settingsOverview:`系统状态`,settingsCredentials:`模型与能力`,settingsProviders:`服务商与密钥`,settingsModels:`自定义模型`,settingsImageModels:`图片`,settingsChannels:`消息通道`,settingsVoice:`语音`,settingsGateway:`网关`,settingsHeartbeat:`心跳`,settingsTunnel:`远程访问`,settingsShares:`文件分享`,settingsSearch:`网络搜索`,settingsDreams:`梦境`,settingsCron:`定时任务`,settingsGoals:`目标运行规则`,settingsAgentBrowser:`浏览器`,settingsUserProfile:`个人资料`,settingsCapabilityPresets:`能力方案`,settingsAgents:`智能体`,settingsKeyboardShortcuts:`快捷键`,settingsSystem:`系统授权`,settingsDesktopPet:`宠物`,settingsDesktopApp:`应用数据`},token:{title:`需要身份验证`,description:`请输入网关访问令牌以继续。`,gatewayUrl:`网关地址`,tokenLabel:`访问令牌`,placeholder:`网关访问令牌(例如 ea4c67bf…)`,save:`连接`,connecting:`连接中…`,tokenRejected:`访问令牌被拒绝,请检查后重试。`,gatewayUnreachable:`无法连接网关,请确认网关正在运行后重试。`,tokenVerificationFailed:`无法验证访问令牌,请重试。`,show:`显示`,hide:`隐藏`},gatewayLanding:{headline:`输入网关访问令牌`,subline:`使用访问令牌连接此控制台与网关。`,sessionExpired:`登录已失效,请重新输入有效的网关访问令牌。`,tokenHelpSummary:`在哪里找到访问令牌?`,tokenHelpOnboard:`在终端运行 xopc onboard(或 xopc onboard --gateway),初始化输出中会包含访问令牌。`,tokenHelpLink:`直接打开以 ?token= 结尾的初始化链接,访问令牌会自动保存。`,docsGatewayLink:`网关说明`},electron:{setupBannerTitle:`完成设置后即可对话`,setupBannerBody:`请至少配置一家模型服务商的 API 密钥,并选择默认模型。之后可随时在设置中修改。`,setupBannerLinkProviders:`服务商与密钥`,setupBannerLinkModels:`默认模型`,setupBannerDismiss:`不再提示`,gatewayExitTitle:`本地网关已停止`,gatewayExitBody:`助手后端进程异常退出,请重启应用后再试。`},connection:{connecting:`连接中…`,online:`在线`,reconnecting:`重连中…`,offline:`离线`,error:`连接异常`,reconnect:`重连`},api:{errorBadGateway:`网关错误 (502)`,errorServiceUnavailable:`服务不可用 (503)`,errorGatewayTimeout:`网关超时 (504)`,errorInternal:`服务器内部错误 (500)`,errorServer:`服务器错误 ({{status}})`,errorNotFound:`未找到 (404)`,errorForbidden:`禁止访问 (403)`,errorRequest:`请求失败 ({{status}})`},sidebar:{newTask:`新建对话`,moreApps:`更多应用`,moreAppsAria:`更多应用`,resizeApps:`调整应用快捷方式区域高度`,navDragHandle:`拖动调整顺序`,tasksHeading:`对话`,projectsHeading:`项目`,inboxHeading:`对话`,projectOpen:`打开项目`,projectNewChat:`在项目中新建对话`,projectMenuAria:`项目操作`,projectPin:`置顶项目`,projectUnpin:`取消置顶`,projectOpenInExplorer:`在资源管理器中打开`,projectOpenInExplorerUnavailable:`项目工作区不可用`,projectOpenInExplorerFailed:`无法打开项目工作区`,projectRename:`重命名项目`,projectRenameTitle:`重命名项目`,projectRenamePlaceholder:`项目名称`,projectArchive:`归档项目`,projectRemove:`移除`,projectRemoveTitle:`移除项目`,projectRemoveMessage:`要从项目中移除「{{name}}」吗?本地文件会保留,但关联的会话、目标、工作流、自动化和记忆会解除项目分组。`,projectShowMore:`展开更多`,projectShowLess:`折叠显示`,viewAllSessions:`全部会话`,taskListEmpty:`暂无会话`,taskListNeedToken:`保存网关访问令牌后即可在此查看最近会话。`,taskListAddToken:`填写访问令牌`,taskListStartChat:`开始对话`,appMenuAria:`应用菜单与设置`,taskSessionMenuAria:`会话操作`,taskSessionAgentRunning:`助手仍在回复中`,taskRename:`重命名`,taskCopyChatId:`复制会话 ID`,taskChatIdCopied:`会话 ID 已复制`,taskDeleteTask:`删除对话`,taskRenameTitle:`重命名对话`,taskRenamePlaceholder:`会话名称`,taskRenameSave:`保存`,taskRenameCancel:`取消`,backToApp:`返回应用`,backToAgents:`返回智能体`,back:`返回`,helpDocs:`帮助文档`,sessionChannelFilterAria:`按来源筛选:网页对话或消息通道`,sessionTasksTab:`对话`,sessionChannelsTab:`消息通道`,resizeHandleAria:`调整左侧导航宽度`,timelinePinned:`置顶`,timelineToday:`今天`,timelineYesterday:`昨天`,timelineLast7Days:`最近 7 天`,timelineThisMonth:`本月`,timelineOlder:`更早`},aboutDialog:{windowTitle:`关于本应用`,close:`关闭`,versionLabel:`版本`,commitLabel:`提交`,buildDateLabel:`时间`,gatewayVersionLabel:`网关`,consoleBuildHint:`以上为控制台界面构建信息;网关为当前运行的 xopc 服务版本。`,checkUpdates:`检查更新`,checkUpdatesChecking:`检查中...`,checkUpdatesUpToDate:`已是最新版本`,checkUpdatesAvailable:`有新版本:v{version}`,checkUpdatesDownloading:`下载中... {percent}%`,checkUpdatesDownloaded:`已下载,可安装:v{version}`,checkUpdatesError:`检查失败`,gatewayUnavailable:`—`,repositoryLink:`View on GitHub`,copyright:`版权所有 © {year} xopcai`},updatePanel:{restartToUpdate:`重启以更新`,dismissAria:`关闭`,dismissHint:`不再提醒此版本`,reminderElectronReady:`新版本 v{{version}} 已就绪,重启应用以安装。`,reminderDownloading:`正在下载更新… {{percent}}%`,reminderElectronUpdateError:`桌面版更新失败:{{detail}}`,reminderNpm:`网关有新版本 v{{version}} 可用。`,updateNow:`立即更新`,updateRunning:`正在更新…`,updateSuccess:`已安装更新`,updateSuccessDetail:`请重启网关以使用新版本(例如:xopc gateway restart)。`,updateErrorGit:`无法一键更新`,updateErrorBusy:`已有更新任务在进行中`,updateErrorFailed:`更新失败`,restartRequired:`已安装 v{{version}}。请重启网关以使用新版本。`,restartGateway:`重启网关`,restartPolling:`网关正在重启,等待恢复中…`,restartPollTimeout:`网关在预期时间内未响应,可能仍在启动中。`,restartPollRetry:`重试`},commandPalette:{groups:{navigate:`导航`,projects:`项目`,quickSettings:`快捷设置`,extensions:`扩展`,sessions:`会话`,files:`文件`,commands:`命令`,skills:`技能`,actions:`操作`},routes:{chatSubtitle:`打开聊天`,agentsSubtitle:`管理智能体`,extensionsSubtitle:`发现和管理扩展`,localAppsSubtitle:`创建和管理你自己的 XOPC 应用`,sessionsSubtitle:`管理与搜索会话`,logsSubtitle:`网关诊断日志`,skillsSubtitle:`管理技能`,connectorsSubtitle:`连接工具与注册表`,channelsSubtitle:`消息通道设置`,cronSubtitle:`定时任务与调度`,cronSettingsSubtitle:`定时任务调度引擎全局设置`,goalsSettingsSubtitle:`/goal 目标运行规则`,dreamsSettingsSubtitle:`记忆整合(梦境)调度`,settingsSubtitle:`打开设置`,credentialsSubtitle:`服务商密钥、自定义模型、图片、语音与网络搜索`,providersSubtitle:`LLM 服务商密钥与 OAuth`,modelsSubtitle:`模型配置`,imageModelsSubtitle:`图片理解与生成设置`,voiceSubtitle:`语音设置`,searchSubtitle:`网络搜索设置`,gatewaySubtitle:`网关设置`,agentDefaultsSubtitle:`智能体默认配置`},quickSettings:{switchModel:`切换模型`,switchModelSubtitle:`更改默认 AI 模型`,switchAgent:`切换智能体`,switchAgentSubtitle:`更改新对话使用的智能体`,themeLight:`切换到浅色主题`,themeDark:`切换到深色主题`,themeSystem:`使用系统主题`,appearanceSubtitle:`外观`,languageSubtitle:`语言`,languageEn:`切换到 English`,languageZh:`切换到中文`},actions:{createCron:`创建定时任务`,createCronSubtitle:`新建 Cron 任务`,manageCron:`管理定时任务`,manageCronSubtitle:`查看和编辑 Cron`,createLocalApp:`创建应用`,createLocalAppSubtitle:`描述想法,让 Coder 开始构建`,manageSkills:`管理技能`,manageSkillsSubtitle:`启用或禁用技能`,reloadSkills:`重新加载技能`,reloadSkillsSubtitle:`从磁盘重新加载`}},clipboard:{copy:`复制`,copied:`已复制!`,copyFailed:`无法复制到剪贴板,文本已选中,请按 Ctrl/Cmd+C 手动复制。`}},R={sharesSettings:{title:`文件分享`,subtitle:`管理工作目录文件的临时公开下载链接。`,tabShares:`分享`,tabPolicy:`分享策略`,tabsAria:`文件分享配置标签`,needToken:`请先使用网关访问令牌登录,再管理文件分享。`,emptyState:`暂无分享链接。可从文件树创建,也可以通过 API 创建。`,createTitle:`创建分享`,createHint:`从工作区选择要分享的文件或目录,生成可分享的下载链接。`,pathLabel:`文件 / 目录`,pathPlaceholder:`如 reports/monthly.pdf`,pathBrowse:`选择…`,pathBrowseChange:`更改`,pathPickedFile:`已选文件`,pathPickedDirectory:`已选目录`,pickerTitle:`选择要分享的内容`,pickerConfirm:`确定`,pickerAgentLabel:`Agent`,pickerHintNone:`点选文件或目录后即可确认`,pickerHintNeedsFile:`请选择一个文件`,pickerHintNeedsDirectory:`请选择一个目录`,directoryModeLabel:`目录模式`,directoryModeBrowse:`可浏览目录`,directoryModeZipOnly:`仅 ZIP 下载`,ttlLabel:`有效期`,ttlOptions:{"1h":`1 小时`,"6h":`6 小时`,"24h":`24 小时`,"3d":`3 天`,"7d":`7 天`},maxViewsLabel:`最大下载次数`,maxViewsUnlimited:`不限`,descriptionLabel:`备注(可选)`,descriptionPlaceholder:`给接收者的简短说明`,createButton:`生成链接`,creating:`创建中…`,shareCreated:`分享链接已生成`,copyUrl:`复制链接`,copy:`复制`,publicUrlLabel:`公网(FRP)`,lanUrlLabel:`内网`,localUrlLabel:`本机`,expiresLabel:`过期时间`,copied:`已复制!`,copyFailed:`无法复制到剪贴板,请手动选择链接复制。`,listTitle:`活跃的分享`,allSharesTitle:`全部分享`,showExpired:`显示已过期/已撤销`,hideExpired:`隐藏已过期/已撤销`,fileName:`文件`,status:`状态`,statusActive:`有效`,statusExpired:`已过期`,statusRevoked:`已撤销`,statusFileGone:`文件已删除`,views:`下载次数`,viewsOf:`/`,expiresAt:`过期时间`,createdAt:`创建时间`,revoke:`撤销`,revokeConfirmTitle:`撤销分享?`,revokeConfirmBody:`此链接将立即失效,且无法恢复。`,revokeConfirmLabel:`撤销`,batchRevoke:`批量撤销`,cleanExpired:`清理过期`,cleanExpiredConfirmTitle:`清理过期分享?`,cleanExpiredConfirmBody:`这将永久撤销所有已过期和已撤销的分享记录。`,cleanExpiredConfirmLabel:`清理`,extend:`续期`,extendTitle:`延长有效期`,extendBy:`延长`,reachability:`可达性`,reachPublic:`公网可达(隧道已开启)`,reachLan:`仅局域网`,reachLocal:`仅本机`,reachLocalHint:`前往「远程访问」开启隧道后,分享链接即可从公网访问。`,noShareUrl:`外部不可达`,openTunnel:`打开远程访问`,loading:`加载中…`,error:`加载分享列表失败`,retry:`重试`,cancel:`取消`,policyTitle:`分享策略`,policyHint:`配置临时文件分享和站点分享的限制与默认值。`,policyEnabled:`启用文件分享`,policyDefaultTtlHours:`默认过期时间(小时)`,policyDefaultTtlHint:`新建分享的默认 TTL(1–168 小时)。`,policyMaxTtlDays:`最长过期时间(天)`,policyMaxTtlHint:`创建或延长分享时的上限(1–30 天)。`,policyMaxActiveShares:`最大活跃分享数`,policyMaxActiveSharesHint:`允许同时存在的未过期文件分享数量(1–10,000)。`,policyMaxActiveSites:`最大活跃站点分享数`,policyMaxActiveSitesHint:`HTML/站点发布允许同时存在的未过期站点分享数量(1–1,000)。`,policyMaxFileSizeMb:`最大文件大小(MB)`,policyMaxFileSizeHint:`创建分享时的单文件上限(1 MB–10 GB)。`,policyInlinePreviewMimes:`内联预览 MIME 类型`,policyInlinePreviewMimesHint:`允许通过 ?inline=1 在浏览器内预览的 MIME 类型。`,policyMimePlaceholder:`输入 MIME 类型后按 Enter(如 image/png)`,policySave:`保存策略`,policyDiscard:`放弃`,policySaving:`保存中…`,policySaved:`策略已保存`,policySaveError:`保存分享策略失败`,policyUnsaved:`有未保存的策略更改。`,policyRestartHint:`策略更改需要重启网关后生效。`,policyLoading:`加载分享策略中…`}},z={tunnelSettings:{title:`远程访问`,subtitle:`通过公网隧道,让手机 App 在外网也能连接本机网关。默认关闭以保护安全。`,needToken:`请先使用有效的网关访问令牌登录,再管理远程访问。`,riskBannerTitle:`安全提示`,riskBannerBody:`远程访问会把本机网关暴露到公网。仅在充分理解风险后开启。`,emptyStateTitle:`获取公网 HTTPS 地址`,emptyStateBody:`开启远程访问后,可从手机或任意网络连接此网关。`,publicUrlLabel:`公网地址`,showOptions:`更多选项`,hideOptions:`收起选项`,showAdvanced:`高级设置`,hideAdvanced:`收起高级设置`,pairWaitingForTunnel:`请先在上方开启远程访问,再在此扫描二维码配对移动 App。`,consentExpiredBanner:`远程访问安全说明已更新。请重新确认后再开启隧道或启用「启动时自动开启」。`,statusTitle:`状态`,loading:`正在加载隧道状态…`,statusConnected:`已连接`,statusConnecting:`连接中…`,statusReconnecting:`重新连接中…`,statusPreparingFrpc:`准备 frpc…`,statusRegistering:`注册隧道…`,statusProvisioningTls:`申请 HTTPS 证书…`,statusStartingFrpc:`连接 frp 服务器…`,statusError:`错误`,statusOff:`未开启`,frpcDownloading:`正在下载 frpc…`,frpcDownloadingPercent:`正在下载 frpc… {{percent}}%`,frpcDownloadingBytes:`正在下载 frpc… {{received}}`,frpcDownloadingUrlLabel:`下载地址`,frpcExtracting:`正在解压 frpc…`,startProgressTitle:`启动进度`,startProgressHint:`首次开启可能需要 2–4 分钟(DNS 传播 + HTTPS 证书)。DNS 验证失败会自动重试一次。公网地址会先显示,但隧道尚未完全就绪。`,startProgressElapsed:`当前步骤已进行 {{elapsed}}`,publicUrlPendingNotice:`公网地址已分配,请等待剩余步骤完成后再从外网访问。`,stepPrepareFrpc:`准备 frpc 客户端`,stepRegister:`向 Broker 注册`,stepRegisterDetail:`公网地址已分配,仍在申请 HTTPS 并连接 frp`,stepTls:`申请 HTTPS 证书`,stepTlsDetail:`正在为子域申请 TLS 证书`,stepTlsChecking:`检查已有证书`,stepTlsDnsChallenge:`发布 DNS 验证记录`,stepTlsDnsPropagation:`等待 DNS 在全球解析器生效(约 2–4 分钟)`,stepTlsCaValidation:`等待证书机构验证`,stepTlsIssuing:`签发证书中`,stepFrpcLogin:`连接 frpc 到 frp 服务器`,stepFrpcDetail:`等待 frpc 登录(最多约 60 秒)`,stepReconnectDetail:`frpc 中断后正在重连`,uptime:`运行时间`,lanHint:`若需同时生成局域网 + 隧道双地址 QR,请在「网关」设置中将 host 设为 0.0.0.0。`,pairTitle:`移动应用配对`,pairSubtitle:`使用移动客户端扫描后连接网关:应用会用一次性配对密钥换取访问令牌。`,pairTunnelActive:`远程访问已开启。二维码包含隧道地址、可用时的局域网地址,以及一次性配对密钥。`,pairBaseUrlLabel:`配对用的网关地址`,pairBaseUrlHint:`请填写手机能访问的地址(例如局域网 IP 与端口),可能与桌面浏览器当前地址不一致。`,pairBaseUrlPlaceholder:`http://192.168.x.x:28790`,pairBlockedTitle:`本机 localhost 尚无法配对`,pairBlockedLoopbackBody:`网关目前只监听本机(127.0.0.1),手机无法访问该地址。请先将网关暴露到局域网并使用下方 LAN 地址,或开启下方远程访问通过隧道配对。`,pairBlockedNextSteps:`或在下方开启远程访问,通过隧道配对。`,pairEnableLanButton:`开启局域网配对`,pairEnableLanConfirmTitle:`在局域网上暴露网关?`,pairEnableLanConfirmBody:`将把网关监听地址设为局域网(0.0.0.0)并重启网关。同一局域网内获得配对二维码或令牌的人可能访问你的助手。请仅在可信网络下继续。`,pairEnableLanEnabling:`正在开启局域网配对…`,pairEnableLanSecurityAuditLink:`查看网关安全审计`,pairSuggestedLanLabel:`本机检测到的局域网地址`,pairUseSuggestedUrl:`使用建议地址`,pairCandidatesTitle:`检测到的局域网地址`,pairSelectCandidateTitle:`选择局域网地址`,pairSelectCandidateHint:`请选择手机在本网络能访问的地址。移动应用可在配对前通过 GET /api/tunnel/pair/ping 探测连通性。`,pairMobileProbeHint:`移动应用:手动地址先用 POST /api/tunnel/pair/validate-url 校验,再用 GET /api/tunnel/pair/ping 探测,最后通过 POST /api/tunnel/exchange-token 用 ps 换取 token。`,pairQrDisabled:`在手机无法访问网关前,暂不提供可扫描的二维码。`,pairLocalhostWarning:`当前地址看起来像本机 localhost。局域网内的手机默认无法直连,请在网关监听局域网并改用 http://<本机局域网IP>:<端口>。`,pairSecurityNote:`二维码含一次性配对密钥(5 分钟有效、单次使用)。请在可信环境中展示,留意周围摄像头与他人。`,pairEncoding:`生成二维码中…`,pairImageError:`无法生成二维码,可复制配对链接。`,pairCopyLink:`复制配对链接`,pairCopied:`已复制配对链接`,pairSchemeHint:`应用注册的格式:xopc://gateway/mobile-connect?baseUrl=…&ps=…(通过 POST /api/tunnel/exchange-token 用 ps 换取 token)`,pairInvalidBaseUrl:`请输入以 http:// 或 https:// 开头的完整网关地址(无需路径)。`,pairTunnelPublicUrl:`隧道地址`,pairTunnelLanUrl:`局域网地址(已写入二维码)`,start:`开启远程访问`,stop:`断开连接`,release:`释放公网地址`,releaseHint:`在 Broker 上注销子域;下次开启将获得新的公网 URL。`,releaseConfirmTitle:`释放公网地址?`,releaseConfirmBody:`将在 frp.xopc.ai 注销隧道并清除本地凭证;再次开启远程访问时会分配新的子域。`,releaseConfirmLabel:`释放`,copyUrl:`复制公网地址`,copied:`已复制`,refreshQr:`刷新二维码`,optionsTitle:`选项`,autoStart:`网关启动时自动开启隧道`,autoStartHint:`需先成功开启一次远程访问并接受安全说明。`,autoStartConfirmTitle:`每次启动网关都开启隧道?`,autoStartConfirmBody:`只要网关在运行,就可能从公网访问。请确认你能接受该风险。`,autoStartConfirmLabel:`启用自动开启`,consentTitle:`开启远程访问`,consentIntro:`在暴露网关之前请仔细阅读:`,consentBullet1:`公网 URL 可能被他人用来访问你的网关 Bearer 令牌。`,consentBullet2:`流量经 frp.xopc.ai 转发(第三方基础设施)。`,consentBullet3:`请使用强令牌;不需要远程访问时请关闭隧道。`,consentCheckbox:`我已理解上述风险,并希望开启远程访问`,consentConfirm:`接受并开启`,consentReconfirm:`接受并继续`,consentCancel:`取消`,deeplinkTitle:`深链内容`,brokerNote:`流量经 frp.xopc.ai 转发,请妥善保管网关访问令牌。`,brokerDocsLink:`公网隧道安全文档`,brokerSecretTitle:`Tunnel Registration Key`,brokerSecretStepTitle:`步骤 1 · Tunnel Registration Key`,brokerSecretHint:`在 xopc Console 创建 Tunnel Registration Key,粘贴到下方并保存。密钥通过 X-Registration-Secret 向 frp.xopc.ai 注册,保存在本机 xopc.json 中。`,brokerSecretConsoleLink:`在 Console 创建 Tunnel Registration Key`,brokerSecretEnvHint:`当前通过旧版环境变量 XOPC_TUNNEL_REGISTRATION_SECRET 提供(优先级高于下方配置)。建议在 Console 创建新密钥并保存到此处后移除该环境变量。`,brokerSecretMaskedHelp:`密钥已保存在本机配置中。可查看、复制,或重新配置。`,brokerSecretPlaceholder:`粘贴 Tunnel Registration Key`,brokerSecretPlaceholderKeep:`粘贴新的 Tunnel Registration Key`,brokerSecretMissingHint:`请先在 Console 创建密钥,再粘贴到此处并保存。`,brokerSecretRequiredBeforeStart:`请先保存上方的 Tunnel Registration Key,再启动远程访问。`,brokerSecretSave:`保存密钥`,brokerSecretSaveAndContinue:`保存并继续`,brokerSecretClear:`清除已保存密钥`,brokerSecretSaved:`Tunnel Registration Key 已保存`,brokerSecretCleared:`已清除保存的 Tunnel Registration Key`,brokerSecretReadyTitle:`Tunnel Registration Key 已配置`,brokerSecretReadyHint:`可在下方启动远程访问;需要更换密钥时点击「重新配置」。`,brokerSecretReconfigure:`重新配置`,brokerSecretCancelReconfigure:`取消`,brokerSecretRevealFailed:`无法读取已保存的密钥`,brokerSecretNotInConfigFile:`密钥不在配置文件中,无法显示明文。`,copyKey:`复制密钥`,showKey:`显示密钥`,hideKey:`隐藏密钥`,flowStepStart:`步骤 2 · 启动远程访问`}},B={skills:{title:`技能`,needToken:`请先保存网关访问令牌后再管理技能。`,tagline:`安装和管理技能,让 xopc 在对话中完成更多任务。`,refresh:`刷新列表`,reloadRuntime:`从磁盘重载`,reloadDiskAria:`从磁盘重载技能`,skillsNavAria:`技能管理分区`,tabInstalled:`我的技能`,tabDiscover:`发现技能`,tabBuiltin:`内置`,tabUser:`用户安装`,tabMarketplace:`技能广场`,installedHeading:`我的技能`,installedHint:`管理智能体当前可以使用的技能;停用的技能不会进入对话。`,discoverHeading:`发现技能`,discoverHint:`从可信来源浏览新能力,安装后即可在对话中使用。`,summaryReady:`可用`,summaryNeedsAttention:`需要处理`,summaryAdded:`已添加`,sourceFilterAria:`按技能来源筛选`,statusFilterAria:`按技能状态筛选`,diagnosticsTitle:`{{count}} 条技能诊断需要处理`,diagnosticsHint:`部分技能可能无法加载或使用。打开技能详情或检查网关日志以继续排查。`,marketplacePlaceholder:`技能广场即将上线,敬请期待。`,sectionMarketplace:`技能商店`,marketplaceBrowseSkillhub:`SkillHub`,marketplaceBrowseClawhub:`ClawHub`,marketplaceBrowseStore:`XOPC 商店`,marketplaceBrowseSwitchAria:`技能广场来源`,marketplaceResultsTabsAria:`搜索结果来源`,marketplaceResultsTabAll:`全部`,marketplaceSortLabel:`排序`,marketplaceSortDownloads:`下载最多`,marketplaceSortNewest:`最新`,marketplaceCategoryAll:`全部`,marketplaceCategoriesAria:`技能市场分类`,marketplaceCategoriesFailed:`分类加载失败`,marketplaceSearchPackages:`搜索技能名称、描述或标签…`,marketplaceStars:`收藏`,marketplaceSource:`源自`,marketplaceLoadFailed:`无法加载技能市场`,marketplaceEmpty:`没有找到匹配的技能。`,marketplaceEmptySearch:`没有找到匹配「{{query}}」的技能。`,marketplaceEmptySearchTryProvider:`在 {{provider}} 中搜索`,marketplaceEmptySearchClear:`清除搜索`,marketplaceInstall:`安装`,previewUseInChat:`使用`,previewUseInChatBusy:`安装中…`,marketplaceReinstall:`重新安装`,marketplaceInstalled:`已安装`,marketplaceNotInstalled:`未安装`,marketplaceReinstallConfirm:`该技能已安装。是否用商店中的版本覆盖本地?`,marketplacePagePrev:`上一页`,marketplacePageNext:`下一页`,marketplacePageStatus:`第 {{page}} / {{totalPages}} 页 · 共 {{total}} 个技能`,marketplaceAuthor:`作者`,marketplaceOpenOnSkillhub:`在 SkillHub 打开`,marketplaceOpenOnSkillhubAria:`在新标签页打开 skillhub.cn 上的该技能`,marketplaceOpenExternal:`在源站打开`,marketplaceOpenExternalAria:`在新标签页打开该技能的源站页面`,marketplaceDownloads:`下载`,marketplaceVersion:`最新版本`,sectionBuiltinList:`内置技能`,categoryLabel:{business:`创业与商业`,creative:`创意与设计`,documents:`文档处理`,engineering:`工程与研发`,tools:`工具与实用程序`},filterAll:`全部`,filterInstalled:`我添加的`,filterEnabled:`仅可用`,filterDisabledOnly:`仅停用 ({{count}})`,filterDisabledOnlyAria:`只显示已停用的技能`,statusDisabled:`已停用`,statusEnabled:`已启用`,noDisabledSkills:`当前列表中没有停用的技能。`,filterGlobal:`全局`,filterWorkspace:`工作区`,filterExtra:`扩展`,sectionUser:`已安装`,installCta:`安装技能`,installModalTitle:`安装技能`,installModalDropHint:`拖放 .zip 或 SKILL.md 文件,或点击选择`,installModalReqTitle:`文件要求`,installModalReq1:`包含 SKILL.md 文件的 .zip 压缩包`,installModalReq2:`或直接拖入 SKILL.md 文件`,installAction:`安装`,installClose:`关闭`,searchPlaceholder:`搜索技能`,noSearchResults:`没有匹配的技能。`,uploading:`上传中…`,loading:`加载中…`,empty:`暂无技能。`,loadFailed:`加载技能失败`,reloadFailed:`重载失败`,skillToggleFailed:`更新技能状态失败`,uploadFailed:`上传失败`,installSuccess:`技能已安装。`,zipOnly:`请选择 .zip 文件`,invalidFile:`请选择 .zip 或 SKILL.md 文件`,delete:`删除`,deleteTitle:`删除技能`,deleteMessage:`确定删除已管理技能目录「{{id}}」?此操作不可恢复。`,deleteConfirm:`删除`,deleteFailed:`删除失败`,yes:`是`,no:`否`,cancel:`取消`,source:{builtin:`内置`,workspace:`工作区`,global:`全局`,extra:`扩展`},col:{name:`名称`,description:`描述`,source:`来源`,managed:`可管理`,actions:`操作`},detailModalBanner:`元数据来自 SKILL.md 的 YAML frontmatter;下方为去掉该段后的正文说明。`,detailModalBannerStore:`以下为技能商店中该包发布的 Markdown 正文(与商店中的包说明一致)。`,detailDisabledNotice:`该技能已安装,但已被你的设置停用;在启用前,智能体无法使用它。`,detailSummaryHeading:`概要`,detailInstructionsHeading:`使用说明`,detailNoInstructionsBody:`该技能暂无详细说明。`,detailHomepageLabel:`主页`,detailPlatformsLabel:`适用平台`,detailRequiresLabel:`运行要求`,detailRequiresBins:`依赖命令`,detailRequiresEnv:`环境变量`,detailRequiresAnyBins:`满足其一即可的命令`,detailInstallLabel:`安装步骤`,detailToolGatingLabel:`工具可见性`,detailToolsRequiresList:`依赖工具`,detailToolsetsRequiresList:`依赖工具集`,detailToolsFallbackList:`备用工具`,detailToolsetsFallbackList:`备用工具集`,detailEnvVarsLabel:`会话环境变量`,detailNotInjectedNote:`该技能不会注入到模型上下文(disable-model-invocation)。`,detailModalEnable:`启用`,detailModalDisable:`停用`,useRequiresEnabled:`请先启用该技能后再使用`,detailLoadFailed:`无法加载 SKILL.md`,detailCloseAria:`关闭`,hubRemote:`远程`,hubKindGit:`git`,hubKindArchive:`归档`},skillsMarketplaceSettings:{title:`市场来源`,hint:`技能市场标签页的默认提供商与商店 API 基础 URL。`,save:`保存`,discard:`放弃`,saving:`保存中…`,saveError:`保存市场设置失败`,provider:`提供商`,providerHint:`默认浏览的目录(store、skillhub、clawhub)。`,storeBaseUrl:`商店基础 URL`,storeBaseUrlHint:`包列表 REST 基础地址。可用环境变量 XOPC_SKILLS_STORE_URL 覆盖。`}},V={workflows:JSON.parse(`{"title":"工作流","runsSubtitle":"处理异常、跟踪进度并使用运行结果。","librarySubtitle":"选择、创建和管理可复用工作流。","needToken":"请先使用 token 连接网关,才能浏览工作流并监控运行。","refresh":"刷新","addWorkflow":"新建工作流","agentFilterAria":"选择 Agent","pageTabsAria":"工作流页面","pageTabs":{"runs":"运行记录","library":"工作流库"},"runFiltersAria":"筛选运行记录","runsSearchPlaceholder":"搜索运行记录…","statusFilterAria":"按运行状态筛选","runStatuses":{"all":"全部状态","attention":"需要处理","running":"运行中","queued":"排队中","succeeded":"已完成"},"layoutAria":"运行记录布局","runLayouts":{"list":"列表","board":"看板"},"clearFilters":"清除筛选","attentionTitle":"需要处理","attentionHint":"检查失败原因后重试,或打开详情继续处理。","attentionView":"查看原因","allRuns":"所有运行","allRunsHint":"需要处理的运行优先显示,其余按最近活动排序。","noRunsTitle":"还没有运行记录","noRunsStartHint":"从工作流库选择一个工作流,配置输入后开始第一次运行。","noRunResultsTitle":"没有匹配的运行","noRunResultsHint":"调整搜索或筛选条件,查看其他运行记录。","chooseWorkflow":"选择工作流","libraryTitle":"工作流库","libraryDescription":"选择适合当前工作的工作流,配置输入后开始运行;也可以创建自己的可复用流程。","librarySearchPlaceholder":"搜索工作流…","recentlyUsed":"最近使用","allWorkflows":"全部工作流","workflowCount":"{{count}} 个工作流","configureAndRun":"配置并运行","categoryFilterAria":"按分类筛选","sourceFilterAria":"按来源筛选","categories":{"all":"全部分类","code-review":"代码审查","planning":"规划决策","research":"调研与排障","writing":"写作与内容","productivity":"决策与会议","uncategorized":"其他"},"sources":{"all":"全部","builtin":"内置","user":"我的"},"badgeBuiltin":"内置","badgeUser":"自定义","runWorkflow":"开始运行","viewDetails":"详情","editWorkflow":"编辑","copyAndEditWorkflow":"复制后编辑","saveWorkflow":"保存工作流","savingWorkflow":"保存中…","saveWorkflowSuccess":"工作流已保存到 ~/.xopc/workflows/。","saveWorkflowFailed":"保存工作流失败。","noDefinitions":"没有匹配的工作流。","noDefinitionsHint":"调整来源、分类或搜索条件,查看其他工作流。","boardStart":"选择工作流","boardEmptyTitle":"还没有运行记录","boardEmptyHint":"从工作流库选择一个工作流,配置输入后开始运行。","templateBestFor":"适合用于","templateInputs":"需要输入","templateExpectedOutput":"预期产出","templateInputsGoalOnly":"目标或上下文","templateInputsStructured":"引导式输入表单","templateOutputReport":"摘要、发现与下一步","boardWorkflowFilterAria":"按工作流筛选","boardWorkflowFilterAll":"全部工作流","boardTriggerFilterAria":"按触发来源筛选","boardTriggerFilterAll":"全部来源","boardTriggerFilterAutomation":"自动化","boardTriggerFilterWebui":"控制台","boardTriggerFilterChat":"聊天","boardTriggerFilterApi":"API","boardColumnEmpty":"暂无运行","boardExpandSucceeded":"展开全部({{count}})","boardCollapseSucceeded":"收起","pickStartTitle":"选择工作流","pickStartHint":"选择一个工作场景,配置输入后开始运行。","pickStartClose":"关闭","taskNoSession":"该运行尚未关联 Chat 会话。","taskActionsAria":"运行操作","taskCloseMenu":"关闭菜单","taskOpenDetails":"查看运行","taskElapsed":"已运行 {{duration}}","taskArtifacts":"{{count}} 个产物","boardColumns":{"queued":"排队","running":"进行中","succeeded":"已完成","attention":"需关注"},"startTitle":"开始运行","runPlanPreview":"运行计划","readyToStart":"可启动","startPlanPhases":"计划阶段","runLimitsSummary":"{{concurrency}} 并发 · 最多 {{max}} 个","noInputSummary":"未填写输入时,将使用此工作流的默认目标。","goalLabel":"目标(可选)","goalPlaceholder":"描述本次运行要达成什么…","inputRequiredHint":"请先填写必填输入,再开始运行。","examplePrompts":"示例 prompt","advancedSettings":"高级设置","concurrencyPlaceholder":"并发数(默认 {{default}})","maxSubagentsPlaceholder":"最大检查项数(默认 {{default}})","timeoutSecondsPlaceholder":"超时秒数(默认 {{default}})","start":"开始运行","starting":"启动中…","startSuccess":"运行已开始。","cancelDialog":"取消","historyRunsHeading":"运行历史","runs":"最近运行","noRuns":"暂无已完成运行。","noRunsHint":"完成的运行会出现在这里,包含状态、耗时、产物和结果。","noActiveRuns":"当前没有正在运行的记录。","noActiveRunsHint":"从模板开始后,可在这里实时查看进度、检查项和结果。","browseCatalog":"浏览模板库","loading":"加载中…","selectRunHint":"选择一条运行记录,查看结果、过程和产物。","cancel":"取消运行","rerun":"重新运行","replayFailedAgents":"重试失败检查项","replayFailedPhases":"重试失败步骤","replayLineageTitle":"Replay 关系","replayLineageSummary":"{{scope}} replay · {{count}} 个目标检查项","replayScopeFailedAgents":"失败检查项","replayScopeFailedPhases":"失败阶段","replaySourceRun":"来源运行","replayTargetAgents":"目标检查项","replayOpenSource":"打开来源","replayFixedAgents":"已修复检查项","replayStillFailingAgents":"仍失败","replayDurationDelta":"耗时变化","contextRefsTitle":"已使用上下文","contextRefsHint":"执行前影响本次运行的对象。","noContextRefs":"没有记录绑定上下文。","contextRefKinds":{"project":"项目","goal":"目标","work_item":"工作项","session":"会话","attachment":"附件","memory":"记忆"},"writebackTitle":"回写计划","writebackHint":"终态结果会记录或建议到这些对象。","noWritebackTargets":"没有记录回写目标。","writebackTargetKinds":{"project":"项目","goal":"目标","work_item":"工作项"},"writebackModes":{"record":"记录","suggest":"建议更新","evaluate":"评估状态"},"retryFailed":"重新运行失败。","runSummaryTitle":"运行摘要","runSummaryActive":"已有 {{done}}/{{total}} 个检查项完成。保持此面板打开即可跟踪进度。","runSummarySucceeded":"已完成,共 {{agents}} 个检查项参与,产出 {{artifacts}} 个产物。","runSummaryFailedFallback":"运行在产出完整结果前停止。","runSummaryCancelled":"运行已在完成前取消。","diagnosticFailedHint":"请先查看失败原因。调整输入或模板后,可以只重试失败部分。","diagnosticTimeoutHint":"本次运行达到时间上限。建议收窄目标、降低并发或提高上限后再运行。","diagnosticCancelledHint":"后续检查项不会继续启动。准备好后可以重新执行。","diagnosticPartialHint":"运行已完成,但部分检查项报错。建议先检查过程再使用结果。","reliabilityTitle":"可信度与异常","reliabilityHint":"这些信号会影响你是否可以直接信任或复用本次结果。","nextActionsTitle":"下一步操作","primaryActionsTitle":"继续推进","recoveryActionsTitle":"恢复运行","resultActionsTitle":"使用结果","diagnosticsTitle":"问题","diagnosticsHint":"聚合本次运行中的关键失败信号。","diagnosticsRunError":"运行错误","diagnosticsRunErrorWithCode":"运行错误 · {{code}}","diagnosticsAgentError":"{{agent}} 检查失败","diagnosticsStepError":"{{agent}} · {{step}} 失败","diagnosticsAgentSkipped":"{{agent}} 已跳过","openAgentDetails":"查看检查项","process":"过程","expand":"展开","collapse":"收起","agentIoTitle":"检查项输入 / 输出","agentIoHint":"用于排障:查看每个检查项收到的输入和返回结果。","agentInputHeading":"输入","agentOutputHeading":"输出","agentNoOutput":"暂无输出。","agentInvocationModel":"模型","agentInvocationTools":"工具集","agentInvocationIterations":"迭代上限","agentInvocationSchema":"Schema","agentInvocationSchemaPresent":"已捕获","resultTitle":"结果","copyResult":"复制","copied":"已复制","exportResult":"导出","continueInChat":"继续对话","continueInChatPrompt":"{{workflow}} 工作流已完成,目标是:{{goal}}\\n\\n请帮我基于结果继续推进。","continueInChatResultHeading":"工作流结果:","runLinkRunning":"运行中","runLinkCompleted":"运行已完成","runLinkFinished":"运行已结束","runLinkOpenChat":"打开运行会话","metadataSession":"会话","metadataSource":"触发来源","metadataDefinition":"定义版本","metadataDefinitionHash":"定义 hash","metadataPermissions":"权限快照","metadataRetryOf":"重试来源","debugDetailsTitle":"高级调试信息","debugDetailsHint":"仅用于排障:检查项 prompt、输出、元数据和审计字段。","definitionHashMatches":"与当前一致","definitionHashDrifted":"当前已变化","definitionHashCurrentUnknown":"当前未知","definitionHashUnavailable":"不可用","closeResult":"关闭","noResult":"暂无结果。","phases":"阶段","phasesHeading":"阶段","subagents":"检查项","logs":"日志","whenToUseHeading":"适用场景","noPhases":"还没有阶段记录。","noSubagents":"还没有检查项记录。","noLogs":"还没有日志记录。","startFailed":"启动工作流失败。","cancelFailed":"取消运行失败。","agentProgress":"{{done}}/{{total}} 个检查项","runRowErrorSummary":"{{count}} 个检查项需要关注。","agentCount":"{{count}} 个检查项","agentScaleExact":"约 {{count}} 个检查项","agentScaleRange":"约 {{min}}–{{max}} 个检查项","phaseCount":"{{count}} 个步骤","morePhases":"+{{count}} 个阶段","templatePlan":"执行路线","templateExample":"可以这样开始","metrics":{"startedAt":"开始时间","duration":"耗时","agents":"检查项","artifacts":"产物"},"status":{"queued":"排队中","running":"运行中","succeeded":"已成功","failed":"失败","cancelled":"已取消","timeout":"已超时"},"phaseStatus":{"pending":"等待中","running":"运行中","completed":"已完成","failed":"失败"},"agentStatus":{"queued":"排队中","running":"运行中","done":"已完成","error":"失败","skipped":"已跳过"},"args":{"argQuestion":"研究问题","argQuestionPlaceholder":"要调研什么问题?","argTarget":"评审对象","argTargetPlaceholder":"PR、文件、方案或设计","argDiff":"PR / diff / 提交","argDiffPlaceholder":"描述要审查的变更范围","argError":"错误或现象","argErrorPlaceholder":"粘贴错误信息或堆栈","argContext":"补充上下文","argContextPlaceholder":"最近改了什么?何时开始出现问题?","argRequest":"实现需求","argRequestPlaceholder":"要规划的功能、重构或修复","argScope":"范围提示","argScopePlaceholder":"可选路径或子系统(默认仓库根目录)","argReleaseTargetPlaceholder":"发布候选、分支或功能摘要","argTopic":"主题","argTopicPlaceholder":"要写什么内容?","argAudience":"受众","argAudiencePlaceholder":"谁会阅读这份内容?","argFormat":"格式","argFormatPlaceholder":"邮件、帖子、公告、文档等","argDecisionQuestion":"决策问题","argDecisionQuestionPlaceholder":"你要做什么决定?","argOptions":"选项","argOptionsPlaceholder":"列出要对比的选项(可选)","argCriteria":"评判标准","argCriteriaPlaceholder":"这次决策最看重什么?","argMeetingTopic":"会议主题","argMeetingTopicPlaceholder":"会议是关于什么的?","argAttendees":"参会人","argAttendeesPlaceholder":"涉及哪些人?","argMeetingGoal":"目标","argMeetingGoalPlaceholder":"希望会议达成什么结果?","argWins":"本周成果","argWinsPlaceholder":"这周做得好的是什么?交付、收入、学习…","argBlockers":"卡点","argBlockersPlaceholder":"什么拖慢了进度或让你分心?","argCarryover":"未完成事项","argCarryoverPlaceholder":"需要带到下周的事项(可选)","argClientBrief":"客户需求","argClientBriefPlaceholder":"客户要什么?时间线、预算、背景…","argOffer":"你的交付","argOfferPlaceholder":"你提供什么服务或成果","argBudgetHint":"预算提示","argBudgetHintPlaceholder":"预算区间或约束(可选)","argSource":"源内容","argSourcePlaceholder":"粘贴文章、笔记或发言要点","argPlatforms":"目标平台","argPlatformsPlaceholder":"X 推文串、LinkedIn、短视频脚本…(可选,默认常用组合)","argMarket":"市场/产品","argMarketPlaceholder":"你在做什么产品或服务?","argCompetitors":"竞品","argCompetitorsPlaceholder":"要对比的名字(可选,可自动建议)","argFocus":"关注点","argFocusPlaceholder":"如定位、定价、功能","argSkills":"你的能力","argSkillsPlaceholder":"作为一人公司你能交付什么","argOfferAudience":"目标客户","argOfferAudiencePlaceholder":"谁会购买这个套餐?","argConstraints":"约束","argConstraintsPlaceholder":"时间、收入目标等(可选)","argInbox":"收件箱","argInboxPlaceholder":"粘贴邮件、消息、待办、灵感…","argPriorities":"本周重点","argPrioritiesPlaceholder":"这周最重要的事(可选)"},"versionLabel":"v{{version}}","inputSchemaBadge":"输入表单","outputSchemaBadge":"结构化输出","capabilitiesHeading":"能力说明","advancedTemplateDetails":"高级模板信息","inputsHeading":"输入","outputsHeading":"输出","resourcesHeading":"资源","permissionsTools":"工具","permissionsNetwork":"网络","permissionsFileSystem":"文件","permissionsApproval":"需要确认","resourcesSkills":"技能","resourcesContextFiles":"上下文文件","resourcesPromptTemplates":"Prompt 模板","capabilityNone":"未指定","networkEnabled":"启用","networkDisabled":"禁用","inputSchemaHeading":"输入参数","rawJson":"原始 JSON","rawJsonInvalid":"请输入 JSON 对象。","booleanTrue":"是","booleanFalse":"否","outcomeArtifacts":"产物","outcomeFollowUps":"后续行动","outcomeStructuredOutput":"结构化输出","downloadArtifact":"下载","downloadingArtifact":"下载中…","startFollowUp":"在 Chat 中打开","copyPrompt":"复制 prompt","noArtifacts":"暂无产物。","manifestLabel":"模板详情"}`)},H={workspace:{title:`项目文件`,currentWorkspace:`当前工作区`,openFiles:`项目文件`,preview:`预览`,download:`下载`,copyPath:`复制路径`,pathCopied:`路径已复制`,edit:`编辑`,wordWrap:`自动换行`,viewing:`查看中`,saved:`已保存`,saving:`保存中…`,emptyDir:`暂无文件`,search:`搜索文件`,searchPlaceholder:`搜索文件`,clearSearch:`清除文件搜索`,noSearchResults:`没有匹配的文件`,loadError:`加载失败`,close:`关闭`,resizeHandleAria:`调整项目文件区域宽度`,lastModified:`修改时间`,openElsewhereHint:`预览可能受限或不可用。请下载文件或使用其他应用打开。`,cannotPreviewType:`无法在预览中打开此类型的文件。`,openWith:`打开方式`,openLocation:`打开位置`,openInFileManager:`在资源管理器中打开`,openLocationFailed:`无法打开工作区位置`,copyPathFailed:`无法复制路径`,openSystemApp:`用默认应用打开`,chooseApp:`选择应用…`,recommendedApps:`推荐应用`,recentApps:`最近使用`,revealInFolder:`打开所在目录`,shareLink:`分享链接`,sharing:`正在创建分享…`,shareFailed:`创建分享链接失败`}},U={you:JSON.parse(`{"title":"关于你","subtitle":"xopc 怎样理解你、这些理解从哪里来,以及你可以控制什么。","tabs":{"overview":"概览","understanding":"对我的了解","sources":"信息来源","controls":"控制与隐私"},"attentionTitle":"需要你处理","sourceIssues":"{{count}} 个信息来源需要处理","completeProfile":"完善基本信息","knownSummary":"条正在使用的了解","currentTrust":"当前行动边界","memoryScope":"这里展示所有 Agent 在协助你时共同使用的理解与记忆。","heroTitle":"正在学习怎样更好地与你协作","heroBody":"xopc 只使用与当前事情相关的上下文,让帮助更准确、更贴近你。这里的任何内容都可以纠正或删除。","meetSuggestedTitle":"我可以叫你 {{name}} 吗?","meetSuggestedBody":"这是一个来自运行 xopc 的电脑的候选称呼。你可以直接确认,也可以改成更喜欢的名字或昵称。","meetTitle":"我们先认识一下","meetBody":"告诉 xopc 你希望怎样被称呼。只需要这一件小事,就能让之后的协作更自然。","meetPlaceholder":"例如:小明、Joyce、Mic","meetSave":"记住这个称呼","meetSaving":"正在记住…","meetLater":"以后再说","meetSource":"来自这台运行 xopc 的电脑;只有你确认后才会保存。","meetSaved":"好的,{{name}}。以后我会这样称呼你。","knownCount":"{{count}} 条有用的了解","reviewCount":"{{count}} 条需要你确认","upToDate":"目前无需你处理","insightsTitle":"从了解走向行动","insightsHint":"这些建议只来自较稳定的了解。由你决定是否让 xopc 开始推进。","insightReason":"基于一条已确认的长期了解","insightEvidence":"来自 {{count}} 次相关经历","insightActions":{"make_repeatable":"让它变得可重复","start_progress":"开始推进"},"notNow":"暂时不用","playbooksTitle":"xopc 与你的协作方式","playbooksHint":"这些规则会实际影响 Agent 怎样与你沟通和完成工作;你可以按组暂停或恢复。","playbookNames":{"communication":"沟通与边界","execution":"做事方式","routines":"固定习惯"},"playbookRuleCount":"{{count}} 条生效规则","playbookActive":"正在使用","playbookPaused":"已暂停","pausePlaybook":"暂停使用","resumePlaybook":"恢复使用","addRule":"添加","newRulePlaceholder":"添加一条协作规则…","enableRule":"启用","disableRule":"停用","deleteRule":"删除","moveUp":"上移","moveDown":"下移","profileTitle":"基本信息","profileHint":"由你主动告诉 xopc 的信息。","callName":"希望 xopc 怎么称呼你?","pronouns":"称谓","pronounsPlaceholder":"未设置","timezone":"时区","timezoneCustom":"自定义时区…","timezoneDetect":"检测当前时区","custom":"自定义…","notes":"还有什么值得了解","notesPlaceholder":"你的工作方式、当前重点、无障碍需求,或任何有助于协作的事情。","edit":"编辑","save":"保存","saving":"保存中…","cancel":"取消","understandingTitle":"xopc 目前怎样理解你","understandingHint":"能够让未来协作更合适的稳定偏好和上下文。","consentTitle":"允许引用已保存的了解","consentHint":"最近的请求匹配到一条必须由你授权后才能使用的了解。","consentPurpose":"请求用途:{{purpose}}","consentDeny":"不允许","consentOnce":"仅允许一次","consentSession":"本次对话允许","consentAlways":"以后都允许","addUnderstanding":"补充一条希望 xopc 了解的事","addUnderstandingHint":"适合记录偏好、边界、重要的人、习惯或当前重点。","understandingPlaceholder":"例如:当我需要做选择时,先说明取舍,再给建议。","understandingKind":"这属于哪类了解?","understandingKinds":{"preference":"偏好","boundary":"边界","relationship":"重要的人","routine":"习惯","current_state":"当前状态","long_term_goal":"长期方向"},"add":"添加","conflictsTitle":"选择现在真实的情况","conflictsHint":"我发现有些了解可能已经不一致。在你确认前,我不会使用相互冲突的版本。","useThis":"以这条为准","reviewAll":"全部确认","grantsTitle":"持续授权","grantsHint":"这些了解可以不再询问直接参考;你可以随时撤销。","revoke":"撤销","grantScopes":{"once":"仅一次","session":"当前对话","always":"持续允许"},"noGrants":"当前没有持续授权。","history":"历史","historyTitle":"之前的版本","reviewTitle":"请你确认","reviewHint":"这些是推断出的理解,或因为反馈需要重新确认。","nothingToReview":"目前没有需要你处理的内容","nothingToReviewHint":"不确定或时间较久的理解会来到这里,而不是在背后继续被默默使用。","showAll":"查看 xopc 对你的全部了解","hideAll":"收起已确认内容","emptyUnderstanding":"这里暂时还没有内容。随着共同工作,xopc 只会学习真正有用且相对稳定的信息。","facets":{"basics":"关于你","collaboration":"怎样与你协作","boundaries":"你的边界","priorities":"现在重要的事","people":"重要的人","current":"当前上下文"},"origins":{"told_by_you":"你亲自告诉我的","observed":"从多次协作中注意到的","inferred":"我的理解,可能需要确认","connected_source":"来自 {{source}}"},"stability":{"strong":"比较确定","working":"仍在了解","fragile":"需要谨慎"},"evidenceCount":"{{count}} 次相关经历","viewEvidence":"查看这条了解的依据","evidenceSource":"来源","evidencePath":"来源位置","evidenceUpdated":"最近更新","evidenceSupport":"支持依据","confirm":"这是对的","notTrue":"这不对","change":"纠正","forget":"忘记","updatePlaceholder":"写下正确的理解…","forgetTitle":"忘记这条理解?","forgetBody":"它会被删除,之后不再作为你的个人上下文使用。","sourcesTitle":"xopc 可以从哪里了解你","sourcesHint":"这里只展示能够提供个人上下文的信息来源。仅用于执行操作的工具仍然放在 Connector 中。","connected":"已连接","available":"可连接","paused":"已暂停","manageSources":"管理信息来源","sourceContext":"可以提供上下文","sourceMemory":"可以更新长期了解","sourceRead":"可读取","sourceWrite":"可能执行写操作","sourceHealth":"健康状态:{{status}}","sourceLastUsed":"最近活动:{{time}}","sourceDerivedCount":"形成了 {{count}} 条了解","sourceKnowledgeCount":"已索引 {{count}} 条来源信息","sourceLastSync":"最近同步:{{time}}","sourceSyncFailed":"最近同步失败:{{error}}","sourceNeverUsed":"尚无活动记录","healthOk":"正常","healthIssue":"需要处理","disconnect":"断开","disconnectTitle":"断开这个信息来源?","disconnectBody":"断开 {{source}} 后,xopc 不会再从这里获取新信息。请选择怎样处理已经形成的了解。","disconnectAccount":"账号:{{account}}","disconnectImpact":"这个账号目前包含 {{items}} 条源数据,并派生了 {{understandings}} 条了解。","disconnectKeepTitle":"断开,但保留已有了解","disconnectKeepBody":"已形成的了解继续保留,你仍可以逐条纠正或忘记。","disconnectDeleteTitle":"断开,并删除来源衍生的了解","disconnectDeleteBody":"删除来自这个来源的 {{count}} 条了解,包括已归档或被拒绝的记录。此操作不可撤销。","disconnectAction":"确认断开","disconnecting":"正在断开…","disconnectSuccess":"信息来源已断开。","disconnectDeleted":"信息来源已断开,并删除了 {{count}} 条了解。","observedAt":"最近依据:{{time}}","recommendationsTitle":"根据当前目标推荐","recommendationsHint":"只推荐可能帮助当前目标的信息来源;连接前仍会展示具体权限。","recommendationReason":"可能有助于“{{goal}}”","noSources":"暂时没有可用的个人信息来源。","trustTitle":"xopc 可以主动到哪一步","trustHint":"选择日常行动的默认边界。具体自动化和连接可以单独授权,但不会悄悄扩大权限。","trustLevels":{"observe":"只观察","suggest":"给出建议","confirm":"先问再做","auto":"自动执行"},"trustLevelHints":{"observe":"只形成上下文,不发起行动。","suggest":"说明建议和原因,由你决定。","confirm":"准备好动作,执行前请求批准。","auto":"按明确授权的边界自动完成。"},"defaultTrust":"默认","autoOptInPromise":"选择自动执行时,xopc 只会在已授权权限、工作流和可恢复边界内行动;高风险动作仍会请求确认。","autoConfirmTitle":"允许在授权边界内自动执行?","autoConfirmBody":"xopc 可能通过具有写权限的 Connector 或工作流自动完成日常操作。它不会扩大现有权限,高风险动作仍会请求确认。","autoConfirmAction":"确认自动执行","stableUnderstandings":"条较稳定的了解","connectedSources":"个已连接的上下文来源","waitingReview":"条等待确认","controlTitle":"你始终拥有控制权","controlHint":"决定 xopc 怎样学习,以及怎样处理敏感信息。","learningMode":"学习方式","learningModes":{"off":"不使用记忆","readOnly":"只使用我已确认的内容","confirmWrite":"记住之前先问我","auto":"自动学习有用且稳定的信息"},"sensitive":"敏感信息","sensitiveOptions":{"deny":"永远不要记住","confirm":"每次都先询问","allow":"在相关时允许使用"},"sharing":"在我的助手之间共享","sharingOptions":{"deny":"仅当前助手使用","readOnly":"其他助手可以读取","allow":"其他助手可以使用和更新"},"transientPromise":"短暂情绪只用于理解当下,不会自动成为关于你的长期标签。","transferTitle":"导入与导出","transferHint":"导出一份可读的个人上下文副本,或从 xopc 的 About You 导出文件中恢复了解。","exportAction":"导出个人上下文","exporting":"正在导出…","importAction":"导入个人上下文","importing":"正在导入…","importPromise":"导入不会覆盖基本信息。新的了解会先进入确认队列;重复或无效内容会跳过。文件上限为 2 MB、500 条了解。","importSuccess":"已导入 {{count}} 条了解,跳过 {{skipped}} 条;请逐条确认。","importError":"无法导入这个文件。请确认它来自 xopc About You 导出且未超过限制。","saved":"你的选择已保存。","loadError":"暂时无法加载 xopc 对你的了解。","saveError":"没有保存成功,请稍后重试。"}`)},W={en:{...e,...t,...n,...r,...i,...a,...o,...s,...c,...l,...u,...d,...f,...p,...m,...h,...g,..._,...v,...y,...b,...x},zh:{...S,...C,...w,...T,...E,...D,...O,...k,...A,...j,...M,...N,...P,...F,...I,...L,...R,...z,...B,...V,...H,...U}};function G(e){return W[e]}function K(e,t){let n=G(e);return t===`settingsAgents`?n.nav.agents:n.nav[t]}export{K as n,G as t};
|