@harness-mix/cli 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/NOTICE +14 -0
- package/README.md +4 -24
- package/docs/multi-agent-collaboration.md +1 -1
- package/licenses/anthropic-codex-theme-MIT.txt +21 -0
- package/licenses/codex-dream-skin-MIT.txt +21 -0
- package/output/native-build/renderer-extension.js +703 -58
- package/package.json +192 -189
- package/scripts/collaboration-test.cjs +262 -200
- package/scripts/collaboration-ui-smoke.cjs +85 -77
- package/scripts/core-concurrency-test.cjs +23 -1
- package/scripts/e2e-pi-cancel.cjs +99 -0
- package/scripts/native-file-change-test.cjs +42 -2
- package/scripts/native-sidebar-test.cjs +8 -0
- package/scripts/native-vendor-adapters-test.cjs +67 -1
- package/scripts/pets-test.cjs +63 -0
- package/scripts/pi-cancel-race-test.cjs +102 -0
- package/scripts/stuck-turn-test.cjs +73 -0
- package/scripts/workspace-test.cjs +9 -0
- package/src/assets/skins/dream-skin/NOTICE.md +13 -0
- package/src/assets/skins/dream-skin/themes/gothic-void-crusade/hero.webp +0 -0
- package/src/assets/skins/dream-skin/themes/gothic-void-crusade/theme.json +34 -0
- package/src/main/adapters/claude.js +9 -6
- package/src/main/adapters/pi-family.js +41 -8
- package/src/main/harness-adapter/event-normalizer.js +270 -258
- package/src/main/host/collaboration-mcp.cjs +8 -1
- package/src/main/host/collaboration-tools.js +1 -1
- package/src/main/host/collaboration.js +81 -11
- package/src/main/host/runtime.js +1462 -1341
- package/src/main/native/pets.js +79 -2
- package/src/main/native/protocol.js +1164 -1145
- package/src/main/native/thread-list.js +6 -1
- package/src/main/workspace/core-review.js +75 -0
- package/src/main/workspace/diff.js +5 -1
- package/src/main/workspace/file-changes.js +9 -4
- package/src/main/workspace/review-controller.js +115 -102
- package/src/main/workspace/review.js +90 -88
- package/src/native-ui/renderer-extension/dist/contract-audit.js +16637 -0
- package/src/native-ui/renderer-extension/dist/index.js +34853 -0
- package/src/native-ui/renderer-extension/dist/production.js +34263 -0
- package/src/native-ui/renderer-extension/dist/renderer-binding-probe.js +34254 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +11 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-pet-switcher.d.ts +73 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-pet-switcher.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/collaboration-page.d.ts +12 -0
- package/src/native-ui/renderer-extension/dist/types/settings/collaboration-page.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +5 -3
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pet-market.d.ts +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pet-market.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pets-client.d.ts +9 -0
- package/src/native-ui/renderer-extension/dist/types/settings/pets-client.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/skin-runtime.d.ts +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/skin-runtime.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +3181 -3171
- package/src/native-ui/renderer-extension/src/renderer-model-client.ts +14 -0
- package/src/native-ui/renderer-extension/src/renderer-pet-switcher.ts +308 -0
- package/src/native-ui/renderer-extension/src/renderer-settings-lifecycle.ts +2 -0
- package/src/native-ui/renderer-extension/src/renderer-team-cards.ts +76 -21
- package/src/native-ui/renderer-extension/src/settings/collaboration-page.ts +139 -0
- package/src/native-ui/renderer-extension/src/settings/icons.ts +155 -153
- package/src/native-ui/renderer-extension/src/settings/localization.ts +785 -783
- package/src/native-ui/renderer-extension/src/settings/pages.ts +694 -681
- package/src/native-ui/renderer-extension/src/settings/pet-market.css +110 -1
- package/src/native-ui/renderer-extension/src/settings/pet-market.ts +276 -22
- package/src/native-ui/renderer-extension/src/settings/pets-client.ts +32 -0
- package/src/native-ui/renderer-extension/src/settings/shell.css +2294 -2255
- package/src/native-ui/renderer-extension/src/settings/skin-runtime.ts +51 -1
- package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +2 -0
- package/src/native-ui/renderer-extension/test/renderer-pet-switcher.test.ts +400 -0
- package/src/native-ui/renderer-extension/test/settings/localization.test.ts +80 -79
- package/src/native-ui/renderer-extension/test/settings/pet-market.test.ts +378 -0
- package/src/native-ui/renderer-extension/test/settings/pets-client.test.ts +83 -0
- package/src/native-ui/renderer-extension/test/settings/shell.test.ts +3 -0
- package/src/native-ui/renderer-extension/test/settings/skin-runtime.test.ts +15 -1
|
@@ -1,515 +1,516 @@
|
|
|
1
|
-
import type { DefaultRendererSettingsPageId } from "./pages.js";
|
|
2
|
-
|
|
3
|
-
export const RENDERER_SETTINGS_LOCALES = ["en", "zh-CN"] as const;
|
|
4
|
-
export type RendererSettingsLocale = (typeof RENDERER_SETTINGS_LOCALES)[number];
|
|
5
|
-
|
|
6
|
-
export const RENDERER_SETTINGS_LANGUAGE_SELECTIONS = ["automatic", "en", "zh-CN", "other"] as const;
|
|
7
|
-
export type RendererSettingsLanguageSelection =
|
|
8
|
-
(typeof RENDERER_SETTINGS_LANGUAGE_SELECTIONS)[number];
|
|
9
|
-
export type RendererSettingsWritableLanguageSelection = Exclude<
|
|
10
|
-
RendererSettingsLanguageSelection,
|
|
11
|
-
"other"
|
|
12
|
-
>;
|
|
13
|
-
|
|
14
|
-
export interface RendererSettingsLanguageControl {
|
|
15
|
-
readonly available: boolean;
|
|
16
|
-
readonly selection: RendererSettingsLanguageSelection;
|
|
17
|
-
setSelection(selection: RendererSettingsWritableLanguageSelection): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface RendererSettingsMessages {
|
|
21
|
-
readonly locale: RendererSettingsLocale;
|
|
22
|
-
readonly title: string;
|
|
23
|
-
readonly close: string;
|
|
24
|
-
readonly starOnGitHub: string;
|
|
25
|
-
readonly sectionsLabel: string;
|
|
26
|
-
readonly generalSection: string;
|
|
27
|
-
readonly otherSection: string;
|
|
28
|
-
readonly pageUnavailable: string;
|
|
29
|
-
readonly inDevelopment: string;
|
|
30
|
-
readonly notAvailable: string;
|
|
31
|
-
readonly runtimeCapabilityNotInstalled: string;
|
|
32
|
-
readonly sessionImportHarness: string;
|
|
33
|
-
readonly sessionImportDescription: string;
|
|
34
|
-
readonly sessionImportAvailabilityNote: string;
|
|
35
|
-
readonly sessionImportRefresh: string;
|
|
36
|
-
readonly sessionImportRefreshing: string;
|
|
37
|
-
readonly sessionImportUnavailable: string;
|
|
38
|
-
readonly sessionImportEmpty: string;
|
|
39
|
-
readonly sessionImportSearch: string;
|
|
40
|
-
readonly sessionImportSearchPlaceholder: string;
|
|
41
|
-
readonly sessionImportNoMatches: string;
|
|
42
|
-
readonly sessionImportPageSize: string;
|
|
43
|
-
readonly sessionImportPrevious: string;
|
|
44
|
-
readonly sessionImportNext: string;
|
|
45
|
-
readonly sessionImportPageSummary: string;
|
|
46
|
-
readonly sessionImportLoadFailed: string;
|
|
47
|
-
readonly sessionImportFailed: string;
|
|
48
|
-
readonly sessionImportUntitled: string;
|
|
49
|
-
readonly sessionImportUpdatedAt: string;
|
|
50
|
-
readonly sessionImportSessionId: string;
|
|
51
|
-
readonly sessionImportRunning: string;
|
|
52
|
-
readonly sessionImportRunningUnknown: string;
|
|
53
|
-
readonly sessionImportRunningHint: string;
|
|
54
|
-
readonly sessionImportAction: string;
|
|
55
|
-
readonly sessionImportImporting: string;
|
|
56
|
-
readonly sessionImportImported: string;
|
|
57
|
-
readonly sessionImportOpenFailed: string;
|
|
58
|
-
readonly sessionImportCopyProjectPath: string;
|
|
59
|
-
readonly sessionImportPathCopied: string;
|
|
60
|
-
readonly sessionImportPathCopyFailed: string;
|
|
61
|
-
readonly sessionImportRetryOpen: string;
|
|
62
|
-
readonly sessionImportRetrying: string;
|
|
63
|
-
readonly connectionsDescription: string;
|
|
64
|
-
readonly accountsDescription: string;
|
|
65
|
-
readonly accountAdd: string;
|
|
66
|
-
readonly accountColumnAccount: string;
|
|
67
|
-
readonly accountTaskHint: string;
|
|
68
|
-
readonly accountConnected: string;
|
|
69
|
-
readonly accountDefaultBadge: string;
|
|
70
|
-
readonly accountColumnUsage: string;
|
|
71
|
-
readonly accountColumnActions: string;
|
|
72
|
-
readonly accountSearch: string;
|
|
73
|
-
readonly accountEmpty: string;
|
|
74
|
-
readonly accountNoMatches: string;
|
|
75
|
-
readonly accountLoginHelp: string;
|
|
76
|
-
readonly harnessAccountsTitle: string;
|
|
77
|
-
readonly accountCreditsRemaining: string;
|
|
78
|
-
readonly accountCreditsLoading: string;
|
|
79
|
-
readonly accountCreditsEmpty: string;
|
|
80
|
-
readonly accountCreditsFailed: string;
|
|
81
|
-
readonly accountCreditsRetry: string;
|
|
82
|
-
readonly accountCreditsRefresh: string;
|
|
83
|
-
readonly accountResetCreditsUnknown: string;
|
|
84
|
-
readonly accountCreateFailed: string;
|
|
85
|
-
readonly accountDelete: string;
|
|
86
|
-
readonly accountDeleteConfirm: string;
|
|
87
|
-
readonly accountDeleting: string;
|
|
88
|
-
readonly accountDeleteFailed: string;
|
|
89
|
-
readonly accountActive: string;
|
|
90
|
-
readonly accountUse: string;
|
|
1
|
+
import type { DefaultRendererSettingsPageId } from "./pages.js";
|
|
2
|
+
|
|
3
|
+
export const RENDERER_SETTINGS_LOCALES = ["en", "zh-CN"] as const;
|
|
4
|
+
export type RendererSettingsLocale = (typeof RENDERER_SETTINGS_LOCALES)[number];
|
|
5
|
+
|
|
6
|
+
export const RENDERER_SETTINGS_LANGUAGE_SELECTIONS = ["automatic", "en", "zh-CN", "other"] as const;
|
|
7
|
+
export type RendererSettingsLanguageSelection =
|
|
8
|
+
(typeof RENDERER_SETTINGS_LANGUAGE_SELECTIONS)[number];
|
|
9
|
+
export type RendererSettingsWritableLanguageSelection = Exclude<
|
|
10
|
+
RendererSettingsLanguageSelection,
|
|
11
|
+
"other"
|
|
12
|
+
>;
|
|
13
|
+
|
|
14
|
+
export interface RendererSettingsLanguageControl {
|
|
15
|
+
readonly available: boolean;
|
|
16
|
+
readonly selection: RendererSettingsLanguageSelection;
|
|
17
|
+
setSelection(selection: RendererSettingsWritableLanguageSelection): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface RendererSettingsMessages {
|
|
21
|
+
readonly locale: RendererSettingsLocale;
|
|
22
|
+
readonly title: string;
|
|
23
|
+
readonly close: string;
|
|
24
|
+
readonly starOnGitHub: string;
|
|
25
|
+
readonly sectionsLabel: string;
|
|
26
|
+
readonly generalSection: string;
|
|
27
|
+
readonly otherSection: string;
|
|
28
|
+
readonly pageUnavailable: string;
|
|
29
|
+
readonly inDevelopment: string;
|
|
30
|
+
readonly notAvailable: string;
|
|
31
|
+
readonly runtimeCapabilityNotInstalled: string;
|
|
32
|
+
readonly sessionImportHarness: string;
|
|
33
|
+
readonly sessionImportDescription: string;
|
|
34
|
+
readonly sessionImportAvailabilityNote: string;
|
|
35
|
+
readonly sessionImportRefresh: string;
|
|
36
|
+
readonly sessionImportRefreshing: string;
|
|
37
|
+
readonly sessionImportUnavailable: string;
|
|
38
|
+
readonly sessionImportEmpty: string;
|
|
39
|
+
readonly sessionImportSearch: string;
|
|
40
|
+
readonly sessionImportSearchPlaceholder: string;
|
|
41
|
+
readonly sessionImportNoMatches: string;
|
|
42
|
+
readonly sessionImportPageSize: string;
|
|
43
|
+
readonly sessionImportPrevious: string;
|
|
44
|
+
readonly sessionImportNext: string;
|
|
45
|
+
readonly sessionImportPageSummary: string;
|
|
46
|
+
readonly sessionImportLoadFailed: string;
|
|
47
|
+
readonly sessionImportFailed: string;
|
|
48
|
+
readonly sessionImportUntitled: string;
|
|
49
|
+
readonly sessionImportUpdatedAt: string;
|
|
50
|
+
readonly sessionImportSessionId: string;
|
|
51
|
+
readonly sessionImportRunning: string;
|
|
52
|
+
readonly sessionImportRunningUnknown: string;
|
|
53
|
+
readonly sessionImportRunningHint: string;
|
|
54
|
+
readonly sessionImportAction: string;
|
|
55
|
+
readonly sessionImportImporting: string;
|
|
56
|
+
readonly sessionImportImported: string;
|
|
57
|
+
readonly sessionImportOpenFailed: string;
|
|
58
|
+
readonly sessionImportCopyProjectPath: string;
|
|
59
|
+
readonly sessionImportPathCopied: string;
|
|
60
|
+
readonly sessionImportPathCopyFailed: string;
|
|
61
|
+
readonly sessionImportRetryOpen: string;
|
|
62
|
+
readonly sessionImportRetrying: string;
|
|
63
|
+
readonly connectionsDescription: string;
|
|
64
|
+
readonly accountsDescription: string;
|
|
65
|
+
readonly accountAdd: string;
|
|
66
|
+
readonly accountColumnAccount: string;
|
|
67
|
+
readonly accountTaskHint: string;
|
|
68
|
+
readonly accountConnected: string;
|
|
69
|
+
readonly accountDefaultBadge: string;
|
|
70
|
+
readonly accountColumnUsage: string;
|
|
71
|
+
readonly accountColumnActions: string;
|
|
72
|
+
readonly accountSearch: string;
|
|
73
|
+
readonly accountEmpty: string;
|
|
74
|
+
readonly accountNoMatches: string;
|
|
75
|
+
readonly accountLoginHelp: string;
|
|
76
|
+
readonly harnessAccountsTitle: string;
|
|
77
|
+
readonly accountCreditsRemaining: string;
|
|
78
|
+
readonly accountCreditsLoading: string;
|
|
79
|
+
readonly accountCreditsEmpty: string;
|
|
80
|
+
readonly accountCreditsFailed: string;
|
|
81
|
+
readonly accountCreditsRetry: string;
|
|
82
|
+
readonly accountCreditsRefresh: string;
|
|
83
|
+
readonly accountResetCreditsUnknown: string;
|
|
84
|
+
readonly accountCreateFailed: string;
|
|
85
|
+
readonly accountDelete: string;
|
|
86
|
+
readonly accountDeleteConfirm: string;
|
|
87
|
+
readonly accountDeleting: string;
|
|
88
|
+
readonly accountDeleteFailed: string;
|
|
89
|
+
readonly accountActive: string;
|
|
90
|
+
readonly accountUse: string;
|
|
91
91
|
readonly accountSignIn: string;
|
|
92
92
|
readonly accountSignOut: string;
|
|
93
93
|
readonly accountSignOutConfirm: string;
|
|
94
94
|
readonly accountSigningOut: string;
|
|
95
95
|
readonly accountSignedOut: string;
|
|
96
96
|
readonly accountSignOutFailed: string;
|
|
97
|
-
readonly accountSigningIn: string;
|
|
98
|
-
readonly accountDeviceCodePrerequisite: string;
|
|
99
|
-
readonly accountVerificationDescription: string;
|
|
100
|
-
readonly accountCopyCode: string;
|
|
101
|
-
readonly accountCopied: string;
|
|
102
|
-
readonly accountLoginCancel: string;
|
|
103
|
-
readonly accountLoginSucceeded: string;
|
|
104
|
-
readonly accountLoginFailed: string;
|
|
105
|
-
readonly accountLoadFailed: string;
|
|
106
|
-
readonly accountCreditsUsed: string;
|
|
107
|
-
readonly accountCreditsReset: string;
|
|
108
|
-
readonly accountCreditsPeriodWeekly: string;
|
|
109
|
-
readonly accountCreditsPeriodMonthly: string;
|
|
110
|
-
readonly accountCreditsPeriodFiveHour: string;
|
|
111
|
-
readonly accountCreditsPeriodSevenDay: string;
|
|
112
|
-
readonly accountCreditsPeriodUnknown: string;
|
|
113
|
-
readonly accountCreditsBuild: string;
|
|
114
|
-
readonly accountResetCredits: string;
|
|
115
|
-
readonly accountResetCreditsUse: string;
|
|
116
|
-
readonly accountResetCreditsConfirm: string;
|
|
117
|
-
readonly accountResetCreditsUsing: string;
|
|
118
|
-
readonly accountResetCreditsFailed: string;
|
|
119
|
-
readonly accountResetCreditsNothingToReset: string;
|
|
120
|
-
readonly accountResetCreditsNoCredit: string;
|
|
121
|
-
readonly accountResetCreditsAlreadyRedeemed: string;
|
|
122
|
-
readonly accountResetCreditsSucceeded: string;
|
|
123
|
-
readonly accountResetCreditsDetails: string;
|
|
124
|
-
readonly accountResetCreditsCardExpiry: string;
|
|
125
|
-
readonly connectionAdapter: string;
|
|
126
|
-
readonly connectionHosts: string;
|
|
127
|
-
readonly connectionLocalHost: string;
|
|
128
|
-
readonly connectionRemoteHost: string;
|
|
129
|
-
readonly connectionActiveHost: string;
|
|
130
|
-
readonly connectionReason: string;
|
|
131
|
-
readonly connectionRefresh: string;
|
|
132
|
-
readonly connectionRefreshing: string;
|
|
133
|
-
readonly connectionViewError: string;
|
|
134
|
-
readonly connectionCopyDetails: string;
|
|
135
|
-
readonly connectionCopied: string;
|
|
136
|
-
readonly connectionCopyFailed: string;
|
|
137
|
-
readonly connectionErrorCode: string;
|
|
138
|
-
readonly connectionErrorMessage: string;
|
|
139
|
-
readonly connectionRetryable: string;
|
|
140
|
-
readonly connectionFailureStage: string;
|
|
141
|
-
readonly connectionDuration: string;
|
|
142
|
-
readonly connectionDiagnostic: string;
|
|
143
|
-
readonly connectionNoRuntime: string;
|
|
144
|
-
readonly connectionStatusReady: string;
|
|
145
|
-
readonly connectionStatusChecking: string;
|
|
146
|
-
readonly connectionStatusNotInstalled: string;
|
|
147
|
-
readonly connectionStatusUnavailable: string;
|
|
148
|
-
readonly connectionStatusError: string;
|
|
149
|
-
readonly connectionStatusInstalling: string;
|
|
150
|
-
readonly connectionStatusUnsupported: string;
|
|
151
|
-
readonly connectionComponent: string;
|
|
152
|
-
readonly connectionStatus: string;
|
|
153
|
-
readonly connectionHostsScrollLeft: string;
|
|
154
|
-
readonly connectionHostsScrollRight: string;
|
|
155
|
-
readonly connectionOpenInstallation: string;
|
|
156
|
-
readonly connectionOpenHarnessWeb: string;
|
|
157
|
-
readonly connectionInstall: string;
|
|
158
|
-
readonly connectionInstallDescription: string;
|
|
159
|
-
readonly connectionErrorTitle: string;
|
|
160
|
-
readonly connectionErrorLog: string;
|
|
161
|
-
readonly connectionOpenIssue: string;
|
|
162
|
-
readonly connectionIssueDescription: string;
|
|
163
|
-
readonly connectionReadyDescription: string;
|
|
164
|
-
readonly connectionUnavailableDescription: string;
|
|
165
|
-
readonly modelConfigurationTitle: string;
|
|
166
|
-
readonly modelConfigurationDescription: string;
|
|
167
|
-
readonly modelSelectLabel: string;
|
|
168
|
-
readonly thinkingSelectLabel: string;
|
|
169
|
-
readonly thinkingOptionDefault: string;
|
|
170
|
-
readonly saveModelPreference: string;
|
|
171
|
-
readonly resetModelPreference: string;
|
|
172
|
-
readonly preferenceSaved: string;
|
|
173
|
-
readonly preferenceReset: string;
|
|
174
|
-
readonly loadingModels: string;
|
|
175
|
-
readonly noModelsAvailable: string;
|
|
176
|
-
readonly oneClickInstall: string;
|
|
177
|
-
readonly oneClickInstalling: string;
|
|
178
|
-
readonly oneClickInstallSuccess: string;
|
|
179
|
-
readonly oneClickInstallFailed: string;
|
|
180
|
-
readonly installInTerminal: string;
|
|
181
|
-
readonly terminalInstalling: string;
|
|
182
|
-
readonly manualInstallTitle: string;
|
|
183
|
-
readonly manualInstallNotice: string;
|
|
184
|
-
readonly manualInstallStep1: string;
|
|
185
|
-
readonly manualInstallStep2: string;
|
|
186
|
-
readonly manualInstallStep3: string;
|
|
187
|
-
readonly harnessAccountsPageTitle: string;
|
|
188
|
-
readonly harnessAccountsPageDescription: string;
|
|
189
|
-
readonly harnessAccountLogin: string;
|
|
190
|
-
readonly harnessAccountLoginStarted: string;
|
|
191
|
-
readonly harnessAccountConfigGuide: string;
|
|
192
|
-
readonly harnessAccountStatusReady: string;
|
|
193
|
-
readonly harnessAccountStatusUnconfigured: string;
|
|
194
|
-
readonly harnessAccountStatusNotInstalled: string;
|
|
195
|
-
readonly checkUpdateNow: string;
|
|
196
|
-
readonly installCommandLabel: string;
|
|
197
|
-
readonly copyInstallCommand: string;
|
|
198
|
-
readonly installCommandCopied: string;
|
|
199
|
-
readonly officialDownload: string;
|
|
200
|
-
readonly refreshDetection: string;
|
|
201
|
-
readonly connectionGroupMoreLabel: string;
|
|
202
|
-
readonly connectionGroupMoreHintTitle: string;
|
|
203
|
-
readonly connectionGroupMoreHintBody: string;
|
|
204
|
-
readonly connectionGroupMoveToMore: string;
|
|
205
|
-
readonly connectionGroupMoveToMain: string;
|
|
206
|
-
readonly connectionGroupDragHandle: string;
|
|
207
|
-
readonly connectionGroupReset: string;
|
|
208
|
-
readonly pickerMoreAgentsLabel: string;
|
|
209
|
-
readonly pickerManageLink: string;
|
|
210
|
-
readonly pickerHideUnusedAgentsCta: string;
|
|
211
|
-
readonly enabled: string;
|
|
212
|
-
readonly disabled: string;
|
|
213
|
-
readonly openSettings: string;
|
|
214
|
-
readonly settingsButtonTitle: string;
|
|
215
|
-
readonly settingsUnavailableTitle: string;
|
|
216
|
-
readonly updateCurrentVersion: string;
|
|
217
|
-
readonly updateInstallation: string;
|
|
218
|
-
readonly updateInstallationNpm: string;
|
|
219
|
-
readonly updateInstallationWindowsInstaller: string;
|
|
220
|
-
readonly updateInstallationMacOsDmg: string;
|
|
221
|
-
readonly updateInstallationUnknown: string;
|
|
222
|
-
readonly updateLatestVersion: string;
|
|
223
|
-
readonly updateUpToDate: string;
|
|
224
|
-
readonly updateAvailable: string;
|
|
225
|
-
readonly updateWindowsManualRequired: string;
|
|
226
|
-
readonly updateAndRestart: string;
|
|
227
|
-
readonly updateChecking: string;
|
|
228
|
-
readonly updateDownloading: string;
|
|
229
|
-
readonly updatePreparing: string;
|
|
230
|
-
readonly updateWaitingForExit: string;
|
|
231
|
-
readonly updateInstalling: string;
|
|
232
|
-
readonly updateInstallingNpm: string;
|
|
233
|
-
readonly updateRequestTimeout: string;
|
|
234
|
-
readonly updateRestarting: string;
|
|
235
|
-
readonly updateSucceeded: string;
|
|
236
|
-
readonly updateFailed: string;
|
|
237
|
-
readonly updateRetry: string;
|
|
238
|
-
readonly updateManualNpmDescription: string;
|
|
239
|
-
readonly updateWindowsNpmDescription: string;
|
|
240
|
-
readonly updateWindowsInstallerDescription: string;
|
|
241
|
-
readonly updateManualTitle: string;
|
|
242
|
-
readonly updateManualFallbackDescription: string;
|
|
243
|
-
readonly updateCopyCommand: string;
|
|
244
|
-
readonly updateCommandCopied: string;
|
|
245
|
-
readonly updateCopyFailed: string;
|
|
246
|
-
readonly updateDownloadFromReleases: string;
|
|
247
|
-
readonly updateDownloadWindowsInstaller: string;
|
|
248
|
-
readonly aboutTagline: string;
|
|
249
|
-
readonly aboutParagraphs: readonly string[];
|
|
250
|
-
readonly aboutOpenSource: string;
|
|
251
|
-
readonly aboutStarCallout: string;
|
|
252
|
-
readonly aboutRepository: string;
|
|
253
|
-
readonly pageLabels: Readonly<Record<DefaultRendererSettingsPageId, string>>;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
const ENGLISH_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
257
|
-
locale: "en",
|
|
258
|
-
title: "Settings",
|
|
259
|
-
close: "Close settings",
|
|
260
|
-
starOnGitHub: "Give us a Star~",
|
|
261
|
-
sectionsLabel: "Settings sections",
|
|
262
|
-
generalSection: "General",
|
|
263
|
-
otherSection: "Other",
|
|
264
|
-
pageUnavailable: "Page unavailable",
|
|
265
|
-
inDevelopment: "In development",
|
|
266
|
-
notAvailable: "Not available",
|
|
267
|
-
runtimeCapabilityNotInstalled: "This runtime capability is not installed yet.",
|
|
268
|
-
sessionImportHarness: "Harness",
|
|
269
|
-
sessionImportDescription:
|
|
270
|
-
"Sessions keep their original project path. If a folder is not in the Codex sidebar, add it as a project first. Original history remains managed by the Harness.",
|
|
271
|
-
sessionImportAvailabilityNote:
|
|
272
|
-
"Available Harnesses come from the local Host. If activity is unknown, close the session in its native client before importing to avoid concurrent writes.",
|
|
273
|
-
sessionImportRefresh: "Refresh",
|
|
274
|
-
sessionImportRefreshing: "Loading local sessions...",
|
|
275
|
-
sessionImportUnavailable:
|
|
276
|
-
"Session import is unavailable for this local Harness or its current protocol. Update the Host/plugin or choose another Harness.",
|
|
277
|
-
sessionImportEmpty: "No local sessions are available to import.",
|
|
278
|
-
sessionImportSearch: "Search",
|
|
279
|
-
sessionImportSearchPlaceholder: "Search titles, session IDs or project paths",
|
|
280
|
-
sessionImportNoMatches: "No sessions match your search.",
|
|
281
|
-
sessionImportPageSize: "Per page",
|
|
282
|
-
sessionImportPrevious: "Previous",
|
|
283
|
-
sessionImportNext: "Next",
|
|
284
|
-
sessionImportPageSummary: "Page {page} of {pages} · {total} sessions",
|
|
285
|
-
sessionImportLoadFailed:
|
|
286
|
-
"Local sessions could not be loaded. Check directory access or duplicate session IDs, then retry.",
|
|
287
|
-
sessionImportFailed: "The session could not be imported.",
|
|
288
|
-
sessionImportUntitled: "Untitled session",
|
|
289
|
-
sessionImportUpdatedAt: "Updated",
|
|
290
|
-
sessionImportSessionId: "Session ID",
|
|
291
|
-
sessionImportRunning: "Running",
|
|
292
|
-
sessionImportRunningUnknown: "Activity unknown",
|
|
293
|
-
sessionImportRunningHint:
|
|
294
|
-
"Close this session in its native client before importing, then refresh.",
|
|
295
|
-
sessionImportAction: "Import and open",
|
|
296
|
-
sessionImportImporting: "Importing...",
|
|
297
|
-
sessionImportImported: "Session imported",
|
|
298
|
-
sessionImportOpenFailed:
|
|
299
|
-
"The Codex sidebar has not shown it yet. Make sure the folder below is added as a project, then try opening it again.",
|
|
300
|
-
sessionImportCopyProjectPath: "Copy project path",
|
|
301
|
-
sessionImportPathCopied: "Copied",
|
|
302
|
-
sessionImportPathCopyFailed: "Copy failed",
|
|
303
|
-
sessionImportRetryOpen: "Try opening again",
|
|
304
|
-
sessionImportRetrying: "Opening...",
|
|
305
|
-
connectionsDescription:
|
|
306
|
-
"View runtime status by Host. Select an item to inspect details or complete its setup.",
|
|
97
|
+
readonly accountSigningIn: string;
|
|
98
|
+
readonly accountDeviceCodePrerequisite: string;
|
|
99
|
+
readonly accountVerificationDescription: string;
|
|
100
|
+
readonly accountCopyCode: string;
|
|
101
|
+
readonly accountCopied: string;
|
|
102
|
+
readonly accountLoginCancel: string;
|
|
103
|
+
readonly accountLoginSucceeded: string;
|
|
104
|
+
readonly accountLoginFailed: string;
|
|
105
|
+
readonly accountLoadFailed: string;
|
|
106
|
+
readonly accountCreditsUsed: string;
|
|
107
|
+
readonly accountCreditsReset: string;
|
|
108
|
+
readonly accountCreditsPeriodWeekly: string;
|
|
109
|
+
readonly accountCreditsPeriodMonthly: string;
|
|
110
|
+
readonly accountCreditsPeriodFiveHour: string;
|
|
111
|
+
readonly accountCreditsPeriodSevenDay: string;
|
|
112
|
+
readonly accountCreditsPeriodUnknown: string;
|
|
113
|
+
readonly accountCreditsBuild: string;
|
|
114
|
+
readonly accountResetCredits: string;
|
|
115
|
+
readonly accountResetCreditsUse: string;
|
|
116
|
+
readonly accountResetCreditsConfirm: string;
|
|
117
|
+
readonly accountResetCreditsUsing: string;
|
|
118
|
+
readonly accountResetCreditsFailed: string;
|
|
119
|
+
readonly accountResetCreditsNothingToReset: string;
|
|
120
|
+
readonly accountResetCreditsNoCredit: string;
|
|
121
|
+
readonly accountResetCreditsAlreadyRedeemed: string;
|
|
122
|
+
readonly accountResetCreditsSucceeded: string;
|
|
123
|
+
readonly accountResetCreditsDetails: string;
|
|
124
|
+
readonly accountResetCreditsCardExpiry: string;
|
|
125
|
+
readonly connectionAdapter: string;
|
|
126
|
+
readonly connectionHosts: string;
|
|
127
|
+
readonly connectionLocalHost: string;
|
|
128
|
+
readonly connectionRemoteHost: string;
|
|
129
|
+
readonly connectionActiveHost: string;
|
|
130
|
+
readonly connectionReason: string;
|
|
131
|
+
readonly connectionRefresh: string;
|
|
132
|
+
readonly connectionRefreshing: string;
|
|
133
|
+
readonly connectionViewError: string;
|
|
134
|
+
readonly connectionCopyDetails: string;
|
|
135
|
+
readonly connectionCopied: string;
|
|
136
|
+
readonly connectionCopyFailed: string;
|
|
137
|
+
readonly connectionErrorCode: string;
|
|
138
|
+
readonly connectionErrorMessage: string;
|
|
139
|
+
readonly connectionRetryable: string;
|
|
140
|
+
readonly connectionFailureStage: string;
|
|
141
|
+
readonly connectionDuration: string;
|
|
142
|
+
readonly connectionDiagnostic: string;
|
|
143
|
+
readonly connectionNoRuntime: string;
|
|
144
|
+
readonly connectionStatusReady: string;
|
|
145
|
+
readonly connectionStatusChecking: string;
|
|
146
|
+
readonly connectionStatusNotInstalled: string;
|
|
147
|
+
readonly connectionStatusUnavailable: string;
|
|
148
|
+
readonly connectionStatusError: string;
|
|
149
|
+
readonly connectionStatusInstalling: string;
|
|
150
|
+
readonly connectionStatusUnsupported: string;
|
|
151
|
+
readonly connectionComponent: string;
|
|
152
|
+
readonly connectionStatus: string;
|
|
153
|
+
readonly connectionHostsScrollLeft: string;
|
|
154
|
+
readonly connectionHostsScrollRight: string;
|
|
155
|
+
readonly connectionOpenInstallation: string;
|
|
156
|
+
readonly connectionOpenHarnessWeb: string;
|
|
157
|
+
readonly connectionInstall: string;
|
|
158
|
+
readonly connectionInstallDescription: string;
|
|
159
|
+
readonly connectionErrorTitle: string;
|
|
160
|
+
readonly connectionErrorLog: string;
|
|
161
|
+
readonly connectionOpenIssue: string;
|
|
162
|
+
readonly connectionIssueDescription: string;
|
|
163
|
+
readonly connectionReadyDescription: string;
|
|
164
|
+
readonly connectionUnavailableDescription: string;
|
|
165
|
+
readonly modelConfigurationTitle: string;
|
|
166
|
+
readonly modelConfigurationDescription: string;
|
|
167
|
+
readonly modelSelectLabel: string;
|
|
168
|
+
readonly thinkingSelectLabel: string;
|
|
169
|
+
readonly thinkingOptionDefault: string;
|
|
170
|
+
readonly saveModelPreference: string;
|
|
171
|
+
readonly resetModelPreference: string;
|
|
172
|
+
readonly preferenceSaved: string;
|
|
173
|
+
readonly preferenceReset: string;
|
|
174
|
+
readonly loadingModels: string;
|
|
175
|
+
readonly noModelsAvailable: string;
|
|
176
|
+
readonly oneClickInstall: string;
|
|
177
|
+
readonly oneClickInstalling: string;
|
|
178
|
+
readonly oneClickInstallSuccess: string;
|
|
179
|
+
readonly oneClickInstallFailed: string;
|
|
180
|
+
readonly installInTerminal: string;
|
|
181
|
+
readonly terminalInstalling: string;
|
|
182
|
+
readonly manualInstallTitle: string;
|
|
183
|
+
readonly manualInstallNotice: string;
|
|
184
|
+
readonly manualInstallStep1: string;
|
|
185
|
+
readonly manualInstallStep2: string;
|
|
186
|
+
readonly manualInstallStep3: string;
|
|
187
|
+
readonly harnessAccountsPageTitle: string;
|
|
188
|
+
readonly harnessAccountsPageDescription: string;
|
|
189
|
+
readonly harnessAccountLogin: string;
|
|
190
|
+
readonly harnessAccountLoginStarted: string;
|
|
191
|
+
readonly harnessAccountConfigGuide: string;
|
|
192
|
+
readonly harnessAccountStatusReady: string;
|
|
193
|
+
readonly harnessAccountStatusUnconfigured: string;
|
|
194
|
+
readonly harnessAccountStatusNotInstalled: string;
|
|
195
|
+
readonly checkUpdateNow: string;
|
|
196
|
+
readonly installCommandLabel: string;
|
|
197
|
+
readonly copyInstallCommand: string;
|
|
198
|
+
readonly installCommandCopied: string;
|
|
199
|
+
readonly officialDownload: string;
|
|
200
|
+
readonly refreshDetection: string;
|
|
201
|
+
readonly connectionGroupMoreLabel: string;
|
|
202
|
+
readonly connectionGroupMoreHintTitle: string;
|
|
203
|
+
readonly connectionGroupMoreHintBody: string;
|
|
204
|
+
readonly connectionGroupMoveToMore: string;
|
|
205
|
+
readonly connectionGroupMoveToMain: string;
|
|
206
|
+
readonly connectionGroupDragHandle: string;
|
|
207
|
+
readonly connectionGroupReset: string;
|
|
208
|
+
readonly pickerMoreAgentsLabel: string;
|
|
209
|
+
readonly pickerManageLink: string;
|
|
210
|
+
readonly pickerHideUnusedAgentsCta: string;
|
|
211
|
+
readonly enabled: string;
|
|
212
|
+
readonly disabled: string;
|
|
213
|
+
readonly openSettings: string;
|
|
214
|
+
readonly settingsButtonTitle: string;
|
|
215
|
+
readonly settingsUnavailableTitle: string;
|
|
216
|
+
readonly updateCurrentVersion: string;
|
|
217
|
+
readonly updateInstallation: string;
|
|
218
|
+
readonly updateInstallationNpm: string;
|
|
219
|
+
readonly updateInstallationWindowsInstaller: string;
|
|
220
|
+
readonly updateInstallationMacOsDmg: string;
|
|
221
|
+
readonly updateInstallationUnknown: string;
|
|
222
|
+
readonly updateLatestVersion: string;
|
|
223
|
+
readonly updateUpToDate: string;
|
|
224
|
+
readonly updateAvailable: string;
|
|
225
|
+
readonly updateWindowsManualRequired: string;
|
|
226
|
+
readonly updateAndRestart: string;
|
|
227
|
+
readonly updateChecking: string;
|
|
228
|
+
readonly updateDownloading: string;
|
|
229
|
+
readonly updatePreparing: string;
|
|
230
|
+
readonly updateWaitingForExit: string;
|
|
231
|
+
readonly updateInstalling: string;
|
|
232
|
+
readonly updateInstallingNpm: string;
|
|
233
|
+
readonly updateRequestTimeout: string;
|
|
234
|
+
readonly updateRestarting: string;
|
|
235
|
+
readonly updateSucceeded: string;
|
|
236
|
+
readonly updateFailed: string;
|
|
237
|
+
readonly updateRetry: string;
|
|
238
|
+
readonly updateManualNpmDescription: string;
|
|
239
|
+
readonly updateWindowsNpmDescription: string;
|
|
240
|
+
readonly updateWindowsInstallerDescription: string;
|
|
241
|
+
readonly updateManualTitle: string;
|
|
242
|
+
readonly updateManualFallbackDescription: string;
|
|
243
|
+
readonly updateCopyCommand: string;
|
|
244
|
+
readonly updateCommandCopied: string;
|
|
245
|
+
readonly updateCopyFailed: string;
|
|
246
|
+
readonly updateDownloadFromReleases: string;
|
|
247
|
+
readonly updateDownloadWindowsInstaller: string;
|
|
248
|
+
readonly aboutTagline: string;
|
|
249
|
+
readonly aboutParagraphs: readonly string[];
|
|
250
|
+
readonly aboutOpenSource: string;
|
|
251
|
+
readonly aboutStarCallout: string;
|
|
252
|
+
readonly aboutRepository: string;
|
|
253
|
+
readonly pageLabels: Readonly<Record<DefaultRendererSettingsPageId, string>>;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const ENGLISH_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
257
|
+
locale: "en",
|
|
258
|
+
title: "Settings",
|
|
259
|
+
close: "Close settings",
|
|
260
|
+
starOnGitHub: "Give us a Star~",
|
|
261
|
+
sectionsLabel: "Settings sections",
|
|
262
|
+
generalSection: "General",
|
|
263
|
+
otherSection: "Other",
|
|
264
|
+
pageUnavailable: "Page unavailable",
|
|
265
|
+
inDevelopment: "In development",
|
|
266
|
+
notAvailable: "Not available",
|
|
267
|
+
runtimeCapabilityNotInstalled: "This runtime capability is not installed yet.",
|
|
268
|
+
sessionImportHarness: "Harness",
|
|
269
|
+
sessionImportDescription:
|
|
270
|
+
"Sessions keep their original project path. If a folder is not in the Codex sidebar, add it as a project first. Original history remains managed by the Harness.",
|
|
271
|
+
sessionImportAvailabilityNote:
|
|
272
|
+
"Available Harnesses come from the local Host. If activity is unknown, close the session in its native client before importing to avoid concurrent writes.",
|
|
273
|
+
sessionImportRefresh: "Refresh",
|
|
274
|
+
sessionImportRefreshing: "Loading local sessions...",
|
|
275
|
+
sessionImportUnavailable:
|
|
276
|
+
"Session import is unavailable for this local Harness or its current protocol. Update the Host/plugin or choose another Harness.",
|
|
277
|
+
sessionImportEmpty: "No local sessions are available to import.",
|
|
278
|
+
sessionImportSearch: "Search",
|
|
279
|
+
sessionImportSearchPlaceholder: "Search titles, session IDs or project paths",
|
|
280
|
+
sessionImportNoMatches: "No sessions match your search.",
|
|
281
|
+
sessionImportPageSize: "Per page",
|
|
282
|
+
sessionImportPrevious: "Previous",
|
|
283
|
+
sessionImportNext: "Next",
|
|
284
|
+
sessionImportPageSummary: "Page {page} of {pages} · {total} sessions",
|
|
285
|
+
sessionImportLoadFailed:
|
|
286
|
+
"Local sessions could not be loaded. Check directory access or duplicate session IDs, then retry.",
|
|
287
|
+
sessionImportFailed: "The session could not be imported.",
|
|
288
|
+
sessionImportUntitled: "Untitled session",
|
|
289
|
+
sessionImportUpdatedAt: "Updated",
|
|
290
|
+
sessionImportSessionId: "Session ID",
|
|
291
|
+
sessionImportRunning: "Running",
|
|
292
|
+
sessionImportRunningUnknown: "Activity unknown",
|
|
293
|
+
sessionImportRunningHint:
|
|
294
|
+
"Close this session in its native client before importing, then refresh.",
|
|
295
|
+
sessionImportAction: "Import and open",
|
|
296
|
+
sessionImportImporting: "Importing...",
|
|
297
|
+
sessionImportImported: "Session imported",
|
|
298
|
+
sessionImportOpenFailed:
|
|
299
|
+
"The Codex sidebar has not shown it yet. Make sure the folder below is added as a project, then try opening it again.",
|
|
300
|
+
sessionImportCopyProjectPath: "Copy project path",
|
|
301
|
+
sessionImportPathCopied: "Copied",
|
|
302
|
+
sessionImportPathCopyFailed: "Copy failed",
|
|
303
|
+
sessionImportRetryOpen: "Try opening again",
|
|
304
|
+
sessionImportRetrying: "Opening...",
|
|
305
|
+
connectionsDescription:
|
|
306
|
+
"View runtime status by Host. Select an item to inspect details or complete its setup.",
|
|
307
307
|
accountsDescription: "Manage isolated native Codex accounts and compare each account's live limits.",
|
|
308
308
|
accountTaskHint:
|
|
309
309
|
"Signing in or switching accounts does not affect tasks already running. New tasks use the selected account.",
|
|
310
|
-
accountConnected: "Connected accounts",
|
|
311
|
-
accountDefaultBadge: "Default",
|
|
312
|
-
accountAdd: "Add Account",
|
|
313
|
-
accountColumnAccount: "Account",
|
|
314
|
-
accountColumnUsage: "Limits",
|
|
315
|
-
accountColumnActions: "Actions",
|
|
316
|
-
accountSearch: "Search accounts…",
|
|
317
|
-
accountEmpty: "No accounts yet. Add an account to get started.",
|
|
318
|
-
accountNoMatches: "No matching accounts.",
|
|
319
|
-
accountLoginHelp: "Before signing in",
|
|
320
|
-
harnessAccountsTitle: "Other detected accounts",
|
|
321
|
-
accountCreditsRemaining: "Remaining",
|
|
322
|
-
accountCreditsLoading: "Loading limits…",
|
|
323
|
-
accountCreditsEmpty: "No limit data available",
|
|
324
|
-
accountCreditsFailed: "Could not load limits",
|
|
325
|
-
accountCreditsRetry: "Retry",
|
|
326
|
-
accountCreditsRefresh: "Refresh limits",
|
|
327
|
-
accountResetCreditsUnknown: "No reset card data available",
|
|
328
|
-
accountCreateFailed: "Could not add the Account.",
|
|
329
|
-
accountDelete: "Delete",
|
|
330
|
-
accountDeleteConfirm: "Delete this Account and its local data? This cannot be undone.",
|
|
331
|
-
accountDeleting: "Deleting Account...",
|
|
332
|
-
accountDeleteFailed: "Could not delete the Account.",
|
|
333
|
-
accountActive: "Default",
|
|
334
|
-
accountUse: "Set as default",
|
|
310
|
+
accountConnected: "Connected accounts",
|
|
311
|
+
accountDefaultBadge: "Default",
|
|
312
|
+
accountAdd: "Add Account",
|
|
313
|
+
accountColumnAccount: "Account",
|
|
314
|
+
accountColumnUsage: "Limits",
|
|
315
|
+
accountColumnActions: "Actions",
|
|
316
|
+
accountSearch: "Search accounts…",
|
|
317
|
+
accountEmpty: "No accounts yet. Add an account to get started.",
|
|
318
|
+
accountNoMatches: "No matching accounts.",
|
|
319
|
+
accountLoginHelp: "Before signing in",
|
|
320
|
+
harnessAccountsTitle: "Other detected accounts",
|
|
321
|
+
accountCreditsRemaining: "Remaining",
|
|
322
|
+
accountCreditsLoading: "Loading limits…",
|
|
323
|
+
accountCreditsEmpty: "No limit data available",
|
|
324
|
+
accountCreditsFailed: "Could not load limits",
|
|
325
|
+
accountCreditsRetry: "Retry",
|
|
326
|
+
accountCreditsRefresh: "Refresh limits",
|
|
327
|
+
accountResetCreditsUnknown: "No reset card data available",
|
|
328
|
+
accountCreateFailed: "Could not add the Account.",
|
|
329
|
+
accountDelete: "Delete",
|
|
330
|
+
accountDeleteConfirm: "Delete this Account and its local data? This cannot be undone.",
|
|
331
|
+
accountDeleting: "Deleting Account...",
|
|
332
|
+
accountDeleteFailed: "Could not delete the Account.",
|
|
333
|
+
accountActive: "Default",
|
|
334
|
+
accountUse: "Set as default",
|
|
335
335
|
accountSignIn: "Sign in",
|
|
336
336
|
accountSignOut: "Sign out",
|
|
337
337
|
accountSignOutConfirm: "Sign out of the current official Codex account?",
|
|
338
338
|
accountSigningOut: "Signing out of official Codex...",
|
|
339
339
|
accountSignedOut: "Signed out of official Codex.",
|
|
340
340
|
accountSignOutFailed: "Could not sign out of official Codex.",
|
|
341
|
-
accountSigningIn: "Starting device sign-in...",
|
|
342
|
-
accountDeviceCodePrerequisite:
|
|
343
|
-
"Before signing in, enable “Enable device code authorization for Codex” in Web Settings → Account security & sign-in.",
|
|
344
|
-
accountVerificationDescription: "Open the verification page and enter this one-time code:",
|
|
345
|
-
accountCopyCode: "Copy code",
|
|
346
|
-
accountCopied: "Copied",
|
|
347
|
-
accountLoginCancel: "Cancel sign-in",
|
|
348
|
-
accountLoginSucceeded: "Sign-in completed.",
|
|
349
|
-
accountLoginFailed: "Sign-in failed.",
|
|
350
|
-
accountLoadFailed: "Could not load Codex Accounts.",
|
|
351
|
-
accountCreditsUsed: "Used",
|
|
352
|
-
accountCreditsReset: "reset",
|
|
353
|
-
accountCreditsPeriodWeekly: "Weekly limit",
|
|
354
|
-
accountCreditsPeriodMonthly: "Monthly limit",
|
|
355
|
-
accountCreditsPeriodFiveHour: "5-hour",
|
|
356
|
-
accountCreditsPeriodSevenDay: "7-day",
|
|
357
|
-
accountCreditsPeriodUnknown: "Limit",
|
|
358
|
-
accountCreditsBuild: "Build",
|
|
359
|
-
accountResetCredits: "Reset cards",
|
|
360
|
-
accountResetCreditsUse: "Use reset",
|
|
361
|
-
accountResetCreditsConfirm:
|
|
362
|
-
"This uses 1 reset card and resets both the 5-hour and 7-day limits. This cannot be undone.",
|
|
363
|
-
accountResetCreditsUsing: "Using reset card...",
|
|
364
|
-
accountResetCreditsFailed: "Could not use the reset card.",
|
|
365
|
-
accountResetCreditsNothingToReset: "Usage does not need a reset right now.",
|
|
366
|
-
accountResetCreditsNoCredit: "No reset cards are available.",
|
|
367
|
-
accountResetCreditsAlreadyRedeemed: "That reset card was already used.",
|
|
368
|
-
accountResetCreditsSucceeded: "Limits were reset.",
|
|
369
|
-
accountResetCreditsDetails: "Reset card details",
|
|
370
|
-
accountResetCreditsCardExpiry: "Card {index} · expires {time}",
|
|
371
|
-
connectionAdapter: "Renderer adapter",
|
|
372
|
-
connectionHosts: "Hosts",
|
|
373
|
-
connectionLocalHost: "Local",
|
|
374
|
-
connectionRemoteHost: "Remote Host",
|
|
375
|
-
connectionActiveHost: "Current",
|
|
376
|
-
connectionReason: "Reason",
|
|
377
|
-
connectionRefresh: "Run connection diagnostics",
|
|
378
|
-
connectionRefreshing: "Running diagnostics...",
|
|
379
|
-
connectionViewError: "View error",
|
|
380
|
-
connectionCopyDetails: "Copy diagnostics",
|
|
381
|
-
connectionCopied: "Copied",
|
|
382
|
-
connectionCopyFailed: "Copy failed",
|
|
383
|
-
connectionErrorCode: "Error code",
|
|
384
|
-
connectionErrorMessage: "Error message",
|
|
385
|
-
connectionRetryable: "Retryable",
|
|
386
|
-
connectionFailureStage: "Failure stage",
|
|
387
|
-
connectionDuration: "Duration",
|
|
388
|
-
connectionDiagnostic: "Diagnostic",
|
|
389
|
-
connectionNoRuntime: "The renderer request bridge is not available yet.",
|
|
390
|
-
connectionStatusReady: "Ready",
|
|
391
|
-
connectionStatusChecking: "Checking",
|
|
392
|
-
connectionStatusNotInstalled: "Not installed",
|
|
393
|
-
connectionStatusUnavailable: "Unavailable",
|
|
394
|
-
connectionStatusError: "Error",
|
|
395
|
-
connectionStatusInstalling: "Installing",
|
|
396
|
-
connectionStatusUnsupported: "Unsupported",
|
|
397
|
-
connectionComponent: "Component",
|
|
398
|
-
connectionStatus: "Status",
|
|
399
|
-
connectionHostsScrollLeft: "Show previous Hosts",
|
|
400
|
-
connectionHostsScrollRight: "Show more Hosts",
|
|
401
|
-
connectionOpenInstallation: "Open official installation page",
|
|
402
|
-
connectionOpenHarnessWeb: "Open DeepSeek Harness Web",
|
|
403
|
-
connectionInstall: "Install",
|
|
404
|
-
connectionInstallDescription:
|
|
405
|
-
"This Harness was not detected. Follow its official installation guide, then return here and run the check again.",
|
|
406
|
-
connectionErrorTitle: "Connection check failed",
|
|
407
|
-
connectionErrorLog: "Error log",
|
|
408
|
-
connectionOpenIssue: "Open GitHub Issue",
|
|
409
|
-
connectionIssueDescription:
|
|
410
|
-
"Copy the error log and include the Host and reproduction steps when reporting the issue.",
|
|
411
|
-
connectionReadyDescription: "This component is available on the selected Host.",
|
|
412
|
-
connectionUnavailableDescription:
|
|
413
|
-
"This component is not currently available on the selected Host.",
|
|
414
|
-
modelConfigurationTitle: "Model & Thinking Configuration",
|
|
415
|
-
modelConfigurationDescription:
|
|
416
|
-
"Configure the default model and reasoning effort for new threads with this Harness.",
|
|
417
|
-
modelSelectLabel: "Default Model",
|
|
418
|
-
thinkingSelectLabel: "Reasoning Effort",
|
|
419
|
-
thinkingOptionDefault: "Default (Harness configured)",
|
|
420
|
-
saveModelPreference: "Save as Default for New Threads",
|
|
421
|
-
resetModelPreference: "Reset to Harness Default",
|
|
422
|
-
preferenceSaved: "Saved as default configuration for new threads!",
|
|
423
|
-
preferenceReset: "Reset to default configuration.",
|
|
424
|
-
loadingModels: "Detecting available models...",
|
|
425
|
-
noModelsAvailable: "No models detected for this Harness.",
|
|
426
|
-
oneClickInstall: "One-Click Install",
|
|
427
|
-
oneClickInstalling: "Installing Harness in background...",
|
|
428
|
-
oneClickInstallSuccess: "Installed successfully! Status refreshed.",
|
|
429
|
-
oneClickInstallFailed: "Installation failed. Please try running the command manually.",
|
|
430
|
-
installInTerminal: "Install in Terminal",
|
|
431
|
-
terminalInstalling: "Installation launched in a visible terminal window. Click Refresh when done.",
|
|
432
|
-
manualInstallTitle: "Standalone Application / Manual Install",
|
|
433
|
-
manualInstallNotice: "This Harness is a standalone desktop application or binary and must be installed via its official installer.",
|
|
434
|
-
manualInstallStep1: "1. Click the button below to visit the official website and download the installer.",
|
|
435
|
-
manualInstallStep2: "2. Run the application and complete its authentication login.",
|
|
436
|
-
manualInstallStep3: "3. Ensure its CLI executable is in your PATH environment variable, then click Refresh.",
|
|
437
|
-
harnessAccountsPageTitle: "Harness Account Management",
|
|
438
|
-
harnessAccountsPageDescription: "View and manage login status, credentials, and usage quotas for each native harness. Credentials remain stored locally by each harness.",
|
|
439
|
-
harnessAccountLogin: "Log In / Authorize",
|
|
440
|
-
harnessAccountLoginStarted: "Login launched in terminal window. Click Refresh when done.",
|
|
441
|
-
harnessAccountConfigGuide: "Credential Guide",
|
|
442
|
-
harnessAccountStatusReady: "Ready",
|
|
443
|
-
harnessAccountStatusUnconfigured: "Needs Config / Not Logged In",
|
|
444
|
-
harnessAccountStatusNotInstalled: "Not Installed",
|
|
445
|
-
checkUpdateNow: "Check for Updates Now",
|
|
446
|
-
installCommandLabel: "Install Command",
|
|
447
|
-
copyInstallCommand: "Copy Command",
|
|
448
|
-
installCommandCopied: "Command Copied",
|
|
449
|
-
officialDownload: "Official Website / Download",
|
|
450
|
-
refreshDetection: "Refresh & Detect",
|
|
451
|
-
connectionGroupMoreLabel: "More",
|
|
452
|
-
connectionGroupMoreHintTitle: "Drag Agents here to collapse the ones you rarely use",
|
|
453
|
-
connectionGroupMoreHintBody: "They fold into the picker's “More Agents” group",
|
|
454
|
-
connectionGroupMoveToMore: "Move to More",
|
|
455
|
-
connectionGroupMoveToMain: "Move back to Main",
|
|
456
|
-
connectionGroupDragHandle: "Drag to reorder",
|
|
457
|
-
connectionGroupReset: "Reset order",
|
|
458
|
-
pickerMoreAgentsLabel: "More agents",
|
|
459
|
-
pickerManageLink: "Manage",
|
|
460
|
-
pickerHideUnusedAgentsCta: "Hide unused agents",
|
|
461
|
-
enabled: "Enabled",
|
|
462
|
-
disabled: "Disabled",
|
|
463
|
-
openSettings: "Open Harness Mix settings",
|
|
464
|
-
settingsButtonTitle: "Harness Mix settings",
|
|
465
|
-
settingsUnavailableTitle: "Harness Mix settings unavailable",
|
|
466
|
-
updateCurrentVersion: "Current version",
|
|
467
|
-
updateInstallation: "Installation method",
|
|
468
|
-
updateInstallationNpm: "npm",
|
|
469
|
-
updateInstallationWindowsInstaller: "Windows installer",
|
|
470
|
-
updateInstallationMacOsDmg: "macOS DMG",
|
|
471
|
-
updateInstallationUnknown: "Unknown",
|
|
472
|
-
updateLatestVersion: "Latest version",
|
|
473
|
-
updateUpToDate: "You are up to date.",
|
|
474
|
-
updateAvailable: "A new version is available.",
|
|
475
|
-
updateWindowsManualRequired:
|
|
476
|
-
"Automatic updates are unavailable on Windows. Update manually below.",
|
|
477
|
-
updateAndRestart: "Update",
|
|
478
|
-
updateChecking: "Checking for updates...",
|
|
479
|
-
updateDownloading: "Downloading update...",
|
|
480
|
-
updatePreparing: "Preparing update...",
|
|
481
|
-
updateWaitingForExit: "Waiting for the application to close...",
|
|
482
|
-
updateInstalling: "Installing update...",
|
|
483
|
-
updateInstallingNpm: "Installing update through npm...",
|
|
484
|
-
updateRequestTimeout: "The update service did not respond. Try again.",
|
|
485
|
-
updateRestarting: "Restarting to finish the update...",
|
|
486
|
-
updateSucceeded: "Update installed successfully.",
|
|
487
|
-
updateFailed: "Update failed.",
|
|
488
|
-
updateRetry: "Retry",
|
|
489
|
-
updateManualNpmDescription: "To update manually, quit Harness Mix and run this command:",
|
|
490
|
-
updateWindowsNpmDescription:
|
|
491
|
-
"Automatic updates are unavailable on Windows. Quit Harness Mix and run this command in a terminal:",
|
|
492
|
-
updateWindowsInstallerDescription:
|
|
493
|
-
"Automatic updates are unavailable on Windows. Download and run the installer for this system.",
|
|
494
|
-
updateManualTitle: "Manual update",
|
|
495
|
-
updateManualFallbackDescription:
|
|
496
|
-
"The automatic update did not complete. Run this command in a terminal instead, then quit Codex and relaunch it with Harness Mix.",
|
|
497
|
-
updateCopyCommand: "Copy",
|
|
498
|
-
updateCommandCopied: "Copied",
|
|
499
|
-
updateCopyFailed: "Copy failed",
|
|
500
|
-
updateDownloadFromReleases: "Download from GitHub Releases",
|
|
501
|
-
updateDownloadWindowsInstaller: "Download Windows installer",
|
|
502
|
-
aboutTagline: "Run native harnesses in Codex Desktop",
|
|
503
|
-
aboutParagraphs: Object.freeze([
|
|
504
|
-
"We believe Codex Desktop offers the best desktop development experience available today.",
|
|
505
|
-
"But Codex is not the only excellent Agent Harness. Some developers prefer Claude Code, DeepSeek Harness, CodeBuddy, Kiro, Cursor, or Pi Agent.",
|
|
506
|
-
"Harness Mix lets you choose the Agent that actually executes tasks inside Codex Desktop, while preserving the native Codex experience and enabling them to collaborate.",
|
|
507
|
-
]),
|
|
508
|
-
aboutOpenSource: "Harness Mix is an open-source project. The source code is available at:",
|
|
509
|
-
aboutStarCallout: "⭐ If this project helps you, please give us a Star! ⭐",
|
|
510
|
-
aboutRepository: "Open-source repository",
|
|
341
|
+
accountSigningIn: "Starting device sign-in...",
|
|
342
|
+
accountDeviceCodePrerequisite:
|
|
343
|
+
"Before signing in, enable “Enable device code authorization for Codex” in Web Settings → Account security & sign-in.",
|
|
344
|
+
accountVerificationDescription: "Open the verification page and enter this one-time code:",
|
|
345
|
+
accountCopyCode: "Copy code",
|
|
346
|
+
accountCopied: "Copied",
|
|
347
|
+
accountLoginCancel: "Cancel sign-in",
|
|
348
|
+
accountLoginSucceeded: "Sign-in completed.",
|
|
349
|
+
accountLoginFailed: "Sign-in failed.",
|
|
350
|
+
accountLoadFailed: "Could not load Codex Accounts.",
|
|
351
|
+
accountCreditsUsed: "Used",
|
|
352
|
+
accountCreditsReset: "reset",
|
|
353
|
+
accountCreditsPeriodWeekly: "Weekly limit",
|
|
354
|
+
accountCreditsPeriodMonthly: "Monthly limit",
|
|
355
|
+
accountCreditsPeriodFiveHour: "5-hour",
|
|
356
|
+
accountCreditsPeriodSevenDay: "7-day",
|
|
357
|
+
accountCreditsPeriodUnknown: "Limit",
|
|
358
|
+
accountCreditsBuild: "Build",
|
|
359
|
+
accountResetCredits: "Reset cards",
|
|
360
|
+
accountResetCreditsUse: "Use reset",
|
|
361
|
+
accountResetCreditsConfirm:
|
|
362
|
+
"This uses 1 reset card and resets both the 5-hour and 7-day limits. This cannot be undone.",
|
|
363
|
+
accountResetCreditsUsing: "Using reset card...",
|
|
364
|
+
accountResetCreditsFailed: "Could not use the reset card.",
|
|
365
|
+
accountResetCreditsNothingToReset: "Usage does not need a reset right now.",
|
|
366
|
+
accountResetCreditsNoCredit: "No reset cards are available.",
|
|
367
|
+
accountResetCreditsAlreadyRedeemed: "That reset card was already used.",
|
|
368
|
+
accountResetCreditsSucceeded: "Limits were reset.",
|
|
369
|
+
accountResetCreditsDetails: "Reset card details",
|
|
370
|
+
accountResetCreditsCardExpiry: "Card {index} · expires {time}",
|
|
371
|
+
connectionAdapter: "Renderer adapter",
|
|
372
|
+
connectionHosts: "Hosts",
|
|
373
|
+
connectionLocalHost: "Local",
|
|
374
|
+
connectionRemoteHost: "Remote Host",
|
|
375
|
+
connectionActiveHost: "Current",
|
|
376
|
+
connectionReason: "Reason",
|
|
377
|
+
connectionRefresh: "Run connection diagnostics",
|
|
378
|
+
connectionRefreshing: "Running diagnostics...",
|
|
379
|
+
connectionViewError: "View error",
|
|
380
|
+
connectionCopyDetails: "Copy diagnostics",
|
|
381
|
+
connectionCopied: "Copied",
|
|
382
|
+
connectionCopyFailed: "Copy failed",
|
|
383
|
+
connectionErrorCode: "Error code",
|
|
384
|
+
connectionErrorMessage: "Error message",
|
|
385
|
+
connectionRetryable: "Retryable",
|
|
386
|
+
connectionFailureStage: "Failure stage",
|
|
387
|
+
connectionDuration: "Duration",
|
|
388
|
+
connectionDiagnostic: "Diagnostic",
|
|
389
|
+
connectionNoRuntime: "The renderer request bridge is not available yet.",
|
|
390
|
+
connectionStatusReady: "Ready",
|
|
391
|
+
connectionStatusChecking: "Checking",
|
|
392
|
+
connectionStatusNotInstalled: "Not installed",
|
|
393
|
+
connectionStatusUnavailable: "Unavailable",
|
|
394
|
+
connectionStatusError: "Error",
|
|
395
|
+
connectionStatusInstalling: "Installing",
|
|
396
|
+
connectionStatusUnsupported: "Unsupported",
|
|
397
|
+
connectionComponent: "Component",
|
|
398
|
+
connectionStatus: "Status",
|
|
399
|
+
connectionHostsScrollLeft: "Show previous Hosts",
|
|
400
|
+
connectionHostsScrollRight: "Show more Hosts",
|
|
401
|
+
connectionOpenInstallation: "Open official installation page",
|
|
402
|
+
connectionOpenHarnessWeb: "Open DeepSeek Harness Web",
|
|
403
|
+
connectionInstall: "Install",
|
|
404
|
+
connectionInstallDescription:
|
|
405
|
+
"This Harness was not detected. Follow its official installation guide, then return here and run the check again.",
|
|
406
|
+
connectionErrorTitle: "Connection check failed",
|
|
407
|
+
connectionErrorLog: "Error log",
|
|
408
|
+
connectionOpenIssue: "Open GitHub Issue",
|
|
409
|
+
connectionIssueDescription:
|
|
410
|
+
"Copy the error log and include the Host and reproduction steps when reporting the issue.",
|
|
411
|
+
connectionReadyDescription: "This component is available on the selected Host.",
|
|
412
|
+
connectionUnavailableDescription:
|
|
413
|
+
"This component is not currently available on the selected Host.",
|
|
414
|
+
modelConfigurationTitle: "Model & Thinking Configuration",
|
|
415
|
+
modelConfigurationDescription:
|
|
416
|
+
"Configure the default model and reasoning effort for new threads with this Harness.",
|
|
417
|
+
modelSelectLabel: "Default Model",
|
|
418
|
+
thinkingSelectLabel: "Reasoning Effort",
|
|
419
|
+
thinkingOptionDefault: "Default (Harness configured)",
|
|
420
|
+
saveModelPreference: "Save as Default for New Threads",
|
|
421
|
+
resetModelPreference: "Reset to Harness Default",
|
|
422
|
+
preferenceSaved: "Saved as default configuration for new threads!",
|
|
423
|
+
preferenceReset: "Reset to default configuration.",
|
|
424
|
+
loadingModels: "Detecting available models...",
|
|
425
|
+
noModelsAvailable: "No models detected for this Harness.",
|
|
426
|
+
oneClickInstall: "One-Click Install",
|
|
427
|
+
oneClickInstalling: "Installing Harness in background...",
|
|
428
|
+
oneClickInstallSuccess: "Installed successfully! Status refreshed.",
|
|
429
|
+
oneClickInstallFailed: "Installation failed. Please try running the command manually.",
|
|
430
|
+
installInTerminal: "Install in Terminal",
|
|
431
|
+
terminalInstalling: "Installation launched in a visible terminal window. Click Refresh when done.",
|
|
432
|
+
manualInstallTitle: "Standalone Application / Manual Install",
|
|
433
|
+
manualInstallNotice: "This Harness is a standalone desktop application or binary and must be installed via its official installer.",
|
|
434
|
+
manualInstallStep1: "1. Click the button below to visit the official website and download the installer.",
|
|
435
|
+
manualInstallStep2: "2. Run the application and complete its authentication login.",
|
|
436
|
+
manualInstallStep3: "3. Ensure its CLI executable is in your PATH environment variable, then click Refresh.",
|
|
437
|
+
harnessAccountsPageTitle: "Harness Account Management",
|
|
438
|
+
harnessAccountsPageDescription: "View and manage login status, credentials, and usage quotas for each native harness. Credentials remain stored locally by each harness.",
|
|
439
|
+
harnessAccountLogin: "Log In / Authorize",
|
|
440
|
+
harnessAccountLoginStarted: "Login launched in terminal window. Click Refresh when done.",
|
|
441
|
+
harnessAccountConfigGuide: "Credential Guide",
|
|
442
|
+
harnessAccountStatusReady: "Ready",
|
|
443
|
+
harnessAccountStatusUnconfigured: "Needs Config / Not Logged In",
|
|
444
|
+
harnessAccountStatusNotInstalled: "Not Installed",
|
|
445
|
+
checkUpdateNow: "Check for Updates Now",
|
|
446
|
+
installCommandLabel: "Install Command",
|
|
447
|
+
copyInstallCommand: "Copy Command",
|
|
448
|
+
installCommandCopied: "Command Copied",
|
|
449
|
+
officialDownload: "Official Website / Download",
|
|
450
|
+
refreshDetection: "Refresh & Detect",
|
|
451
|
+
connectionGroupMoreLabel: "More",
|
|
452
|
+
connectionGroupMoreHintTitle: "Drag Agents here to collapse the ones you rarely use",
|
|
453
|
+
connectionGroupMoreHintBody: "They fold into the picker's “More Agents” group",
|
|
454
|
+
connectionGroupMoveToMore: "Move to More",
|
|
455
|
+
connectionGroupMoveToMain: "Move back to Main",
|
|
456
|
+
connectionGroupDragHandle: "Drag to reorder",
|
|
457
|
+
connectionGroupReset: "Reset order",
|
|
458
|
+
pickerMoreAgentsLabel: "More agents",
|
|
459
|
+
pickerManageLink: "Manage",
|
|
460
|
+
pickerHideUnusedAgentsCta: "Hide unused agents",
|
|
461
|
+
enabled: "Enabled",
|
|
462
|
+
disabled: "Disabled",
|
|
463
|
+
openSettings: "Open Harness Mix settings",
|
|
464
|
+
settingsButtonTitle: "Harness Mix settings",
|
|
465
|
+
settingsUnavailableTitle: "Harness Mix settings unavailable",
|
|
466
|
+
updateCurrentVersion: "Current version",
|
|
467
|
+
updateInstallation: "Installation method",
|
|
468
|
+
updateInstallationNpm: "npm",
|
|
469
|
+
updateInstallationWindowsInstaller: "Windows installer",
|
|
470
|
+
updateInstallationMacOsDmg: "macOS DMG",
|
|
471
|
+
updateInstallationUnknown: "Unknown",
|
|
472
|
+
updateLatestVersion: "Latest version",
|
|
473
|
+
updateUpToDate: "You are up to date.",
|
|
474
|
+
updateAvailable: "A new version is available.",
|
|
475
|
+
updateWindowsManualRequired:
|
|
476
|
+
"Automatic updates are unavailable on Windows. Update manually below.",
|
|
477
|
+
updateAndRestart: "Update",
|
|
478
|
+
updateChecking: "Checking for updates...",
|
|
479
|
+
updateDownloading: "Downloading update...",
|
|
480
|
+
updatePreparing: "Preparing update...",
|
|
481
|
+
updateWaitingForExit: "Waiting for the application to close...",
|
|
482
|
+
updateInstalling: "Installing update...",
|
|
483
|
+
updateInstallingNpm: "Installing update through npm...",
|
|
484
|
+
updateRequestTimeout: "The update service did not respond. Try again.",
|
|
485
|
+
updateRestarting: "Restarting to finish the update...",
|
|
486
|
+
updateSucceeded: "Update installed successfully.",
|
|
487
|
+
updateFailed: "Update failed.",
|
|
488
|
+
updateRetry: "Retry",
|
|
489
|
+
updateManualNpmDescription: "To update manually, quit Harness Mix and run this command:",
|
|
490
|
+
updateWindowsNpmDescription:
|
|
491
|
+
"Automatic updates are unavailable on Windows. Quit Harness Mix and run this command in a terminal:",
|
|
492
|
+
updateWindowsInstallerDescription:
|
|
493
|
+
"Automatic updates are unavailable on Windows. Download and run the installer for this system.",
|
|
494
|
+
updateManualTitle: "Manual update",
|
|
495
|
+
updateManualFallbackDescription:
|
|
496
|
+
"The automatic update did not complete. Run this command in a terminal instead, then quit Codex and relaunch it with Harness Mix.",
|
|
497
|
+
updateCopyCommand: "Copy",
|
|
498
|
+
updateCommandCopied: "Copied",
|
|
499
|
+
updateCopyFailed: "Copy failed",
|
|
500
|
+
updateDownloadFromReleases: "Download from GitHub Releases",
|
|
501
|
+
updateDownloadWindowsInstaller: "Download Windows installer",
|
|
502
|
+
aboutTagline: "Run native harnesses in Codex Desktop",
|
|
503
|
+
aboutParagraphs: Object.freeze([
|
|
504
|
+
"We believe Codex Desktop offers the best desktop development experience available today.",
|
|
505
|
+
"But Codex is not the only excellent Agent Harness. Some developers prefer Claude Code, DeepSeek Harness, CodeBuddy, Kiro, Cursor, or Pi Agent.",
|
|
506
|
+
"Harness Mix lets you choose the Agent that actually executes tasks inside Codex Desktop, while preserving the native Codex experience and enabling them to collaborate.",
|
|
507
|
+
]),
|
|
508
|
+
aboutOpenSource: "Harness Mix is an open-source project. The source code is available at:",
|
|
509
|
+
aboutStarCallout: "⭐ If this project helps you, please give us a Star! ⭐",
|
|
510
|
+
aboutRepository: "Open-source repository",
|
|
511
511
|
pageLabels: Object.freeze({
|
|
512
512
|
connections: "Connections",
|
|
513
|
+
collaboration: "Collaboration",
|
|
513
514
|
accounts: "Accounts",
|
|
514
515
|
mcp: 'MCP',
|
|
515
516
|
skills: 'Skills',
|
|
@@ -518,258 +519,259 @@ const ENGLISH_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
|
518
519
|
skins: "Skins",
|
|
519
520
|
pets: "Pets",
|
|
520
521
|
updates: "Updates",
|
|
521
|
-
about: "About",
|
|
522
|
-
}),
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
const CHINESE_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
526
|
-
locale: "zh-CN",
|
|
527
|
-
title: "设置",
|
|
528
|
-
close: "关闭设置",
|
|
529
|
-
starOnGitHub: "点个 Star~",
|
|
530
|
-
sectionsLabel: "设置分类",
|
|
531
|
-
generalSection: "通用",
|
|
532
|
-
otherSection: "其他",
|
|
533
|
-
pageUnavailable: "页面不可用",
|
|
534
|
-
inDevelopment: "开发中",
|
|
535
|
-
notAvailable: "暂不可用",
|
|
536
|
-
runtimeCapabilityNotInstalled: "运行时尚未安装该项能力,因此暂不可用。",
|
|
537
|
-
sessionImportHarness: "Harness",
|
|
538
|
-
sessionImportDescription:
|
|
539
|
-
"会话将保留原始项目路径;若该文件夹尚未出现在 Codex 侧栏,请先将其添加为项目。原始历史仍由 Harness 管理。",
|
|
540
|
-
sessionImportAvailabilityNote:
|
|
541
|
-
"可选 Harness 来自本地 Host。运行状态未知时,请先在原生客户端关闭该会话再导入,避免同时写入。",
|
|
542
|
-
sessionImportRefresh: "刷新",
|
|
543
|
-
sessionImportRefreshing: "正在读取本地会话……",
|
|
544
|
-
sessionImportUnavailable:
|
|
545
|
-
"本地 Harness 或当前协议暂不支持会话导入,请更新 Host/插件或选择其他 Harness。",
|
|
546
|
-
sessionImportEmpty: "没有可导入的本地会话。",
|
|
547
|
-
sessionImportSearch: "搜索",
|
|
548
|
-
sessionImportSearchPlaceholder: "搜索标题、会话 ID 或项目路径",
|
|
549
|
-
sessionImportNoMatches: "没有匹配的会话。",
|
|
550
|
-
sessionImportPageSize: "每页",
|
|
551
|
-
sessionImportPrevious: "上一页",
|
|
552
|
-
sessionImportNext: "下一页",
|
|
553
|
-
sessionImportPageSummary: "第 {page} / {pages} 页 · 共 {total} 条",
|
|
554
|
-
sessionImportLoadFailed: "无法读取本地会话,请检查目录访问权限或重复的会话 ID 后重试。",
|
|
555
|
-
sessionImportFailed: "无法导入该会话。",
|
|
556
|
-
sessionImportUntitled: "未命名会话",
|
|
557
|
-
sessionImportUpdatedAt: "更新时间",
|
|
558
|
-
sessionImportSessionId: "会话 ID",
|
|
559
|
-
sessionImportRunning: "运行中",
|
|
560
|
-
sessionImportRunningUnknown: "运行状态未知",
|
|
561
|
-
sessionImportRunningHint: "请先在原生客户端关闭该会话,再刷新并导入。",
|
|
562
|
-
sessionImportAction: "导入并打开",
|
|
563
|
-
sessionImportImporting: "正在导入……",
|
|
564
|
-
sessionImportImported: "会话已导入",
|
|
565
|
-
sessionImportOpenFailed: "Codex 侧栏尚未显示该会话。请确认以下文件夹已添加为项目,然后重试打开。",
|
|
566
|
-
sessionImportCopyProjectPath: "复制项目路径",
|
|
567
|
-
sessionImportPathCopied: "已复制",
|
|
568
|
-
sessionImportPathCopyFailed: "复制失败",
|
|
569
|
-
sessionImportRetryOpen: "重试打开",
|
|
570
|
-
sessionImportRetrying: "正在打开……",
|
|
571
|
-
connectionsDescription: "按 Host 查看运行时状态。选择一项,在右侧检查详情或完成配置。",
|
|
522
|
+
about: "About",
|
|
523
|
+
}),
|
|
524
|
+
});
|
|
525
|
+
|
|
526
|
+
const CHINESE_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
527
|
+
locale: "zh-CN",
|
|
528
|
+
title: "设置",
|
|
529
|
+
close: "关闭设置",
|
|
530
|
+
starOnGitHub: "点个 Star~",
|
|
531
|
+
sectionsLabel: "设置分类",
|
|
532
|
+
generalSection: "通用",
|
|
533
|
+
otherSection: "其他",
|
|
534
|
+
pageUnavailable: "页面不可用",
|
|
535
|
+
inDevelopment: "开发中",
|
|
536
|
+
notAvailable: "暂不可用",
|
|
537
|
+
runtimeCapabilityNotInstalled: "运行时尚未安装该项能力,因此暂不可用。",
|
|
538
|
+
sessionImportHarness: "Harness",
|
|
539
|
+
sessionImportDescription:
|
|
540
|
+
"会话将保留原始项目路径;若该文件夹尚未出现在 Codex 侧栏,请先将其添加为项目。原始历史仍由 Harness 管理。",
|
|
541
|
+
sessionImportAvailabilityNote:
|
|
542
|
+
"可选 Harness 来自本地 Host。运行状态未知时,请先在原生客户端关闭该会话再导入,避免同时写入。",
|
|
543
|
+
sessionImportRefresh: "刷新",
|
|
544
|
+
sessionImportRefreshing: "正在读取本地会话……",
|
|
545
|
+
sessionImportUnavailable:
|
|
546
|
+
"本地 Harness 或当前协议暂不支持会话导入,请更新 Host/插件或选择其他 Harness。",
|
|
547
|
+
sessionImportEmpty: "没有可导入的本地会话。",
|
|
548
|
+
sessionImportSearch: "搜索",
|
|
549
|
+
sessionImportSearchPlaceholder: "搜索标题、会话 ID 或项目路径",
|
|
550
|
+
sessionImportNoMatches: "没有匹配的会话。",
|
|
551
|
+
sessionImportPageSize: "每页",
|
|
552
|
+
sessionImportPrevious: "上一页",
|
|
553
|
+
sessionImportNext: "下一页",
|
|
554
|
+
sessionImportPageSummary: "第 {page} / {pages} 页 · 共 {total} 条",
|
|
555
|
+
sessionImportLoadFailed: "无法读取本地会话,请检查目录访问权限或重复的会话 ID 后重试。",
|
|
556
|
+
sessionImportFailed: "无法导入该会话。",
|
|
557
|
+
sessionImportUntitled: "未命名会话",
|
|
558
|
+
sessionImportUpdatedAt: "更新时间",
|
|
559
|
+
sessionImportSessionId: "会话 ID",
|
|
560
|
+
sessionImportRunning: "运行中",
|
|
561
|
+
sessionImportRunningUnknown: "运行状态未知",
|
|
562
|
+
sessionImportRunningHint: "请先在原生客户端关闭该会话,再刷新并导入。",
|
|
563
|
+
sessionImportAction: "导入并打开",
|
|
564
|
+
sessionImportImporting: "正在导入……",
|
|
565
|
+
sessionImportImported: "会话已导入",
|
|
566
|
+
sessionImportOpenFailed: "Codex 侧栏尚未显示该会话。请确认以下文件夹已添加为项目,然后重试打开。",
|
|
567
|
+
sessionImportCopyProjectPath: "复制项目路径",
|
|
568
|
+
sessionImportPathCopied: "已复制",
|
|
569
|
+
sessionImportPathCopyFailed: "复制失败",
|
|
570
|
+
sessionImportRetryOpen: "重试打开",
|
|
571
|
+
sessionImportRetrying: "正在打开……",
|
|
572
|
+
connectionsDescription: "按 Host 查看运行时状态。选择一项,在右侧检查详情或完成配置。",
|
|
572
573
|
accountsDescription: "管理相互隔离的原生 Codex 账号,并对比每个账号的实时额度。",
|
|
573
574
|
accountTaskHint: "登录或切换账号不会影响已开始的任务;新任务使用当前选中的账号。",
|
|
574
|
-
accountConnected: "已连接账号",
|
|
575
|
-
accountDefaultBadge: "默认",
|
|
576
|
-
accountAdd: "添加账号",
|
|
577
|
-
accountColumnAccount: "账号",
|
|
578
|
-
accountColumnUsage: "额度",
|
|
579
|
-
accountColumnActions: "操作",
|
|
580
|
-
accountSearch: "搜索账号…",
|
|
581
|
-
accountEmpty: "还没有账号,添加一个账号即可开始。",
|
|
582
|
-
accountNoMatches: "没有匹配的账号。",
|
|
583
|
-
accountLoginHelp: "登录前须知",
|
|
584
|
-
harnessAccountsTitle: "其他已识别账号",
|
|
585
|
-
accountCreditsRemaining: "剩余",
|
|
586
|
-
accountCreditsLoading: "正在读取额度…",
|
|
587
|
-
accountCreditsEmpty: "暂无额度数据",
|
|
588
|
-
accountCreditsFailed: "额度读取失败",
|
|
589
|
-
accountCreditsRetry: "重试",
|
|
590
|
-
accountCreditsRefresh: "刷新额度",
|
|
591
|
-
accountResetCreditsUnknown: "暂无重置卡数据",
|
|
592
|
-
accountCreateFailed: "添加账号失败。",
|
|
593
|
-
accountDelete: "删除",
|
|
594
|
-
accountDeleteConfirm: "删除此账号及其本地数据?此操作无法撤销。",
|
|
595
|
-
accountDeleting: "正在删除账号...",
|
|
596
|
-
accountDeleteFailed: "删除账号失败。",
|
|
597
|
-
accountActive: "默认账号",
|
|
598
|
-
accountUse: "设为默认",
|
|
575
|
+
accountConnected: "已连接账号",
|
|
576
|
+
accountDefaultBadge: "默认",
|
|
577
|
+
accountAdd: "添加账号",
|
|
578
|
+
accountColumnAccount: "账号",
|
|
579
|
+
accountColumnUsage: "额度",
|
|
580
|
+
accountColumnActions: "操作",
|
|
581
|
+
accountSearch: "搜索账号…",
|
|
582
|
+
accountEmpty: "还没有账号,添加一个账号即可开始。",
|
|
583
|
+
accountNoMatches: "没有匹配的账号。",
|
|
584
|
+
accountLoginHelp: "登录前须知",
|
|
585
|
+
harnessAccountsTitle: "其他已识别账号",
|
|
586
|
+
accountCreditsRemaining: "剩余",
|
|
587
|
+
accountCreditsLoading: "正在读取额度…",
|
|
588
|
+
accountCreditsEmpty: "暂无额度数据",
|
|
589
|
+
accountCreditsFailed: "额度读取失败",
|
|
590
|
+
accountCreditsRetry: "重试",
|
|
591
|
+
accountCreditsRefresh: "刷新额度",
|
|
592
|
+
accountResetCreditsUnknown: "暂无重置卡数据",
|
|
593
|
+
accountCreateFailed: "添加账号失败。",
|
|
594
|
+
accountDelete: "删除",
|
|
595
|
+
accountDeleteConfirm: "删除此账号及其本地数据?此操作无法撤销。",
|
|
596
|
+
accountDeleting: "正在删除账号...",
|
|
597
|
+
accountDeleteFailed: "删除账号失败。",
|
|
598
|
+
accountActive: "默认账号",
|
|
599
|
+
accountUse: "设为默认",
|
|
599
600
|
accountSignIn: "登录",
|
|
600
601
|
accountSignOut: "退出登录",
|
|
601
602
|
accountSignOutConfirm: "确定退出当前官方 Codex 账号吗?",
|
|
602
603
|
accountSigningOut: "正在退出官方 Codex...",
|
|
603
604
|
accountSignedOut: "已退出官方 Codex。",
|
|
604
605
|
accountSignOutFailed: "退出官方 Codex 失败。",
|
|
605
|
-
accountSigningIn: "正在启动设备登录...",
|
|
606
|
-
accountDeviceCodePrerequisite:
|
|
607
|
-
"登录前,请先在 Web 端的“设置 → 账号安全与登录”中开启“为 Codex 启用设备代码授权”。",
|
|
608
|
-
accountVerificationDescription: "打开验证页面并输入以下一次性代码:",
|
|
609
|
-
accountCopyCode: "复制代码",
|
|
610
|
-
accountCopied: "已复制",
|
|
611
|
-
accountLoginCancel: "取消登录",
|
|
612
|
-
accountLoginSucceeded: "登录成功。",
|
|
613
|
-
accountLoginFailed: "登录失败。",
|
|
614
|
-
accountLoadFailed: "无法加载 Codex 账号。",
|
|
615
|
-
accountCreditsUsed: "已用",
|
|
616
|
-
accountCreditsReset: "重置",
|
|
617
|
-
accountCreditsPeriodWeekly: "周额度",
|
|
618
|
-
accountCreditsPeriodMonthly: "月额度",
|
|
619
|
-
accountCreditsPeriodFiveHour: "5 小时",
|
|
620
|
-
accountCreditsPeriodSevenDay: "7 天",
|
|
621
|
-
accountCreditsPeriodUnknown: "额度",
|
|
622
|
-
accountCreditsBuild: "Build",
|
|
623
|
-
accountResetCredits: "重置卡",
|
|
624
|
-
accountResetCreditsUse: "使用重置",
|
|
625
|
-
accountResetCreditsConfirm: "将消耗 1 张重置卡,同时重置 5 小时和 7 天额度。此操作无法撤销。",
|
|
626
|
-
accountResetCreditsUsing: "正在使用重置卡...",
|
|
627
|
-
accountResetCreditsFailed: "使用重置卡失败。",
|
|
628
|
-
accountResetCreditsNothingToReset: "当前额度不需要重置。",
|
|
629
|
-
accountResetCreditsNoCredit: "没有可用的重置卡。",
|
|
630
|
-
accountResetCreditsAlreadyRedeemed: "这张重置卡已经使用过。",
|
|
631
|
-
accountResetCreditsSucceeded: "额度已重置。",
|
|
632
|
-
accountResetCreditsDetails: "重置卡详情",
|
|
633
|
-
accountResetCreditsCardExpiry: "第 {index} 张 · {time}到期",
|
|
634
|
-
connectionAdapter: "Renderer 适配器",
|
|
635
|
-
connectionHosts: "Host 列表",
|
|
636
|
-
connectionLocalHost: "本地",
|
|
637
|
-
connectionRemoteHost: "远程 Host",
|
|
638
|
-
connectionActiveHost: "当前",
|
|
639
|
-
connectionReason: "原因",
|
|
640
|
-
connectionRefresh: "重新诊断连接",
|
|
641
|
-
connectionRefreshing: "正在诊断...",
|
|
642
|
-
connectionViewError: "查看错误",
|
|
643
|
-
connectionCopyDetails: "复制诊断信息",
|
|
644
|
-
connectionCopied: "已复制",
|
|
645
|
-
connectionCopyFailed: "复制失败",
|
|
646
|
-
connectionErrorCode: "错误码",
|
|
647
|
-
connectionErrorMessage: "错误信息",
|
|
648
|
-
connectionRetryable: "可重试",
|
|
649
|
-
connectionFailureStage: "失败阶段",
|
|
650
|
-
connectionDuration: "检查耗时",
|
|
651
|
-
connectionDiagnostic: "诊断信息",
|
|
652
|
-
connectionNoRuntime: "Renderer 请求桥尚未可用。",
|
|
653
|
-
connectionStatusReady: "正常",
|
|
654
|
-
connectionStatusChecking: "检查中",
|
|
655
|
-
connectionStatusNotInstalled: "未安装",
|
|
656
|
-
connectionStatusUnavailable: "不可用",
|
|
657
|
-
connectionStatusError: "错误",
|
|
658
|
-
connectionStatusInstalling: "安装中",
|
|
659
|
-
connectionStatusUnsupported: "不支持",
|
|
660
|
-
connectionComponent: "组件",
|
|
661
|
-
connectionStatus: "状态",
|
|
662
|
-
connectionHostsScrollLeft: "查看前面的 Host",
|
|
663
|
-
connectionHostsScrollRight: "查看更多 Host",
|
|
664
|
-
connectionOpenInstallation: "前往官方安装页面",
|
|
665
|
-
connectionOpenHarnessWeb: "打开 DeepSeek Harness Web",
|
|
666
|
-
connectionInstall: "安装",
|
|
667
|
-
connectionInstallDescription:
|
|
668
|
-
"尚未检测到该 Harness。请按照官方安装指南完成安装,然后返回此页面重新检查。",
|
|
669
|
-
connectionErrorTitle: "连接检查失败",
|
|
670
|
-
connectionErrorLog: "错误日志",
|
|
671
|
-
connectionOpenIssue: "提交 GitHub Issue",
|
|
672
|
-
connectionIssueDescription: "提交前请复制错误日志,并在 Issue 中说明当前 Host 与复现步骤。",
|
|
673
|
-
connectionReadyDescription: "该组件在当前 Host 上可用。",
|
|
674
|
-
connectionUnavailableDescription: "该组件当前无法在所选 Host 上使用。",
|
|
675
|
-
modelConfigurationTitle: "模型与思考档位配置",
|
|
676
|
-
modelConfigurationDescription: "配置此 Harness 新建会话时默认使用的模型与思考档位。",
|
|
677
|
-
modelSelectLabel: "默认模型",
|
|
678
|
-
thinkingSelectLabel: "思考档位",
|
|
679
|
-
thinkingOptionDefault: "跟随 Harness 默认",
|
|
680
|
-
saveModelPreference: "设为新会话默认",
|
|
681
|
-
resetModelPreference: "恢复 Harness 默认",
|
|
682
|
-
preferenceSaved: "已保存为默认配置!新建该 Harness 会话时将默认生效。",
|
|
683
|
-
preferenceReset: "已恢复为 Harness 原生默认。",
|
|
684
|
-
loadingModels: "正在探测可用模型……",
|
|
685
|
-
noModelsAvailable: "未探测到可用模型。",
|
|
686
|
-
oneClickInstall: "一键安装",
|
|
687
|
-
oneClickInstalling: "正在后台安装 Harness……",
|
|
688
|
-
oneClickInstallSuccess: "安装成功!状态已自动刷新。",
|
|
689
|
-
oneClickInstallFailed: "安装失败,请尝试复制下方命令在终端手动运行。",
|
|
690
|
-
installInTerminal: "在终端中打开安装",
|
|
691
|
-
terminalInstalling: "已在独立终端窗口启动安装,请在终端完成后点击刷新检测。",
|
|
692
|
-
manualInstallTitle: "独立安装程序 / 手动安装指引",
|
|
693
|
-
manualInstallNotice: "此 Harness 为独立客户端程序或二进制工具,不支持通过 npm 一键安装。",
|
|
694
|
-
manualInstallStep1: "1. 点击下方按钮前往官网下载安装包并完成安装;",
|
|
695
|
-
manualInstallStep2: "2. 运行应用并在终端中完成该 Harness 的认证登录;",
|
|
696
|
-
manualInstallStep3: "3. 确保该 CLI 可执行文件已加入系统 PATH 环境变量,然后点击【刷新检测】。",
|
|
697
|
-
harnessAccountsPageTitle: "Harness 账号与授权管理",
|
|
698
|
-
harnessAccountsPageDescription: "查看与管理各原生 Harness 的登录状态、授权凭据与模型用量配额。所有认证均保存在本地原生 Harness 中,Harness Mix 绝不代存您的账号密码。",
|
|
699
|
-
harnessAccountLogin: "登录 / 授权",
|
|
700
|
-
harnessAccountLoginStarted: "已在终端窗口启动登录认证,请在终端完成后点击刷新状态。",
|
|
701
|
-
harnessAccountConfigGuide: "凭据配置指引",
|
|
702
|
-
harnessAccountStatusReady: "已就绪",
|
|
703
|
-
harnessAccountStatusUnconfigured: "待配置 / 未登录",
|
|
704
|
-
harnessAccountStatusNotInstalled: "未安装",
|
|
705
|
-
checkUpdateNow: "立即检查更新",
|
|
706
|
-
installCommandLabel: "推荐安装命令",
|
|
707
|
-
copyInstallCommand: "复制安装命令",
|
|
708
|
-
installCommandCopied: "已复制命令",
|
|
709
|
-
officialDownload: "前往官网 / 下载安装包",
|
|
710
|
-
refreshDetection: "刷新检测",
|
|
711
|
-
connectionGroupMoreLabel: "更多",
|
|
712
|
-
connectionGroupMoreHintTitle: "拖到这里可以收起不常用的 Agent",
|
|
713
|
-
connectionGroupMoreHintBody: "它们会折叠进选择器的「更多」分组",
|
|
714
|
-
connectionGroupMoveToMore: "移到更多",
|
|
715
|
-
connectionGroupMoveToMain: "移回常用",
|
|
716
|
-
connectionGroupDragHandle: "拖动排序",
|
|
717
|
-
connectionGroupReset: "恢复默认排列",
|
|
718
|
-
pickerMoreAgentsLabel: "更多 Agent",
|
|
719
|
-
pickerManageLink: "管理",
|
|
720
|
-
pickerHideUnusedAgentsCta: "收起不常用的 Agent",
|
|
721
|
-
enabled: "已开启",
|
|
722
|
-
disabled: "已关闭",
|
|
723
|
-
openSettings: "打开 Harness Mix 设置",
|
|
724
|
-
settingsButtonTitle: "Harness Mix 设置",
|
|
725
|
-
settingsUnavailableTitle: "Harness Mix 设置不可用",
|
|
726
|
-
updateCurrentVersion: "当前版本",
|
|
727
|
-
updateInstallation: "安装方式",
|
|
728
|
-
updateInstallationNpm: "npm",
|
|
729
|
-
updateInstallationWindowsInstaller: "Windows 安装程序",
|
|
730
|
-
updateInstallationMacOsDmg: "macOS DMG",
|
|
731
|
-
updateInstallationUnknown: "未知",
|
|
732
|
-
updateLatestVersion: "最新版本",
|
|
733
|
-
updateUpToDate: "当前已是最新版本。",
|
|
734
|
-
updateAvailable: "有新版本可用。",
|
|
735
|
-
updateWindowsManualRequired: "Windows 暂不支持自动更新,请在下方手动更新。",
|
|
736
|
-
updateAndRestart: "更新",
|
|
737
|
-
updateChecking: "正在检查更新...",
|
|
738
|
-
updateDownloading: "正在下载更新...",
|
|
739
|
-
updatePreparing: "正在准备更新...",
|
|
740
|
-
updateWaitingForExit: "正在等待应用退出...",
|
|
741
|
-
updateInstalling: "正在安装更新...",
|
|
742
|
-
updateInstallingNpm: "正在通过 npm 安装...",
|
|
743
|
-
updateRequestTimeout: "更新服务未响应,请重试。",
|
|
744
|
-
updateRestarting: "正在重启以完成更新...",
|
|
745
|
-
updateSucceeded: "更新安装成功。",
|
|
746
|
-
updateFailed: "更新失败。",
|
|
747
|
-
updateRetry: "重试",
|
|
748
|
-
updateManualNpmDescription:
|
|
749
|
-
"如需手动更新,请在终端运行以下命令。更新完成后,请退出 Codex 并通过 Harness Mix 重新启动。",
|
|
750
|
-
updateWindowsNpmDescription:
|
|
751
|
-
"Windows 暂不支持自动更新。请退出 Harness Mix,在终端运行以下命令完成更新。",
|
|
752
|
-
updateWindowsInstallerDescription:
|
|
753
|
-
"Windows 暂不支持自动更新。请下载并运行适用于当前系统的安装包。",
|
|
754
|
-
updateManualTitle: "手动更新",
|
|
755
|
-
updateManualFallbackDescription:
|
|
756
|
-
"自动更新未能完成,请改用下列命令在终端手动更新。完成后请退出 Codex 并通过 Harness Mix 重新启动。",
|
|
757
|
-
updateCopyCommand: "复制",
|
|
758
|
-
updateCommandCopied: "已复制",
|
|
759
|
-
updateCopyFailed: "复制失败",
|
|
760
|
-
updateDownloadFromReleases: "前往 GitHub Releases 下载",
|
|
761
|
-
updateDownloadWindowsInstaller: "下载 Windows 安装包",
|
|
762
|
-
aboutTagline: "在 Codex Desktop 中运行各类原生 Harness",
|
|
763
|
-
aboutParagraphs: Object.freeze([
|
|
764
|
-
"我们认为 Codex Desktop 提供了目前最好的桌面开发交互体验。",
|
|
765
|
-
"但 Codex 并不是唯一优秀的 Agent Harness,也有人偏好 Claude Code、DeepSeek Harness、CodeBuddy、Kiro、Cursor 或 Pi Agent。",
|
|
766
|
-
"Harness Mix 让你在 Codex Desktop 中选择真正执行任务的 Agent,同时保留 Codex 的原生体验,并让它们协作完成任务。",
|
|
767
|
-
]),
|
|
768
|
-
aboutOpenSource: "Harness Mix 是一个开源项目,开源地址:",
|
|
769
|
-
aboutStarCallout: "⭐ 如果这个项目对你有帮助,请给我们一个 Star!⭐",
|
|
770
|
-
aboutRepository: "开源仓库",
|
|
606
|
+
accountSigningIn: "正在启动设备登录...",
|
|
607
|
+
accountDeviceCodePrerequisite:
|
|
608
|
+
"登录前,请先在 Web 端的“设置 → 账号安全与登录”中开启“为 Codex 启用设备代码授权”。",
|
|
609
|
+
accountVerificationDescription: "打开验证页面并输入以下一次性代码:",
|
|
610
|
+
accountCopyCode: "复制代码",
|
|
611
|
+
accountCopied: "已复制",
|
|
612
|
+
accountLoginCancel: "取消登录",
|
|
613
|
+
accountLoginSucceeded: "登录成功。",
|
|
614
|
+
accountLoginFailed: "登录失败。",
|
|
615
|
+
accountLoadFailed: "无法加载 Codex 账号。",
|
|
616
|
+
accountCreditsUsed: "已用",
|
|
617
|
+
accountCreditsReset: "重置",
|
|
618
|
+
accountCreditsPeriodWeekly: "周额度",
|
|
619
|
+
accountCreditsPeriodMonthly: "月额度",
|
|
620
|
+
accountCreditsPeriodFiveHour: "5 小时",
|
|
621
|
+
accountCreditsPeriodSevenDay: "7 天",
|
|
622
|
+
accountCreditsPeriodUnknown: "额度",
|
|
623
|
+
accountCreditsBuild: "Build",
|
|
624
|
+
accountResetCredits: "重置卡",
|
|
625
|
+
accountResetCreditsUse: "使用重置",
|
|
626
|
+
accountResetCreditsConfirm: "将消耗 1 张重置卡,同时重置 5 小时和 7 天额度。此操作无法撤销。",
|
|
627
|
+
accountResetCreditsUsing: "正在使用重置卡...",
|
|
628
|
+
accountResetCreditsFailed: "使用重置卡失败。",
|
|
629
|
+
accountResetCreditsNothingToReset: "当前额度不需要重置。",
|
|
630
|
+
accountResetCreditsNoCredit: "没有可用的重置卡。",
|
|
631
|
+
accountResetCreditsAlreadyRedeemed: "这张重置卡已经使用过。",
|
|
632
|
+
accountResetCreditsSucceeded: "额度已重置。",
|
|
633
|
+
accountResetCreditsDetails: "重置卡详情",
|
|
634
|
+
accountResetCreditsCardExpiry: "第 {index} 张 · {time}到期",
|
|
635
|
+
connectionAdapter: "Renderer 适配器",
|
|
636
|
+
connectionHosts: "Host 列表",
|
|
637
|
+
connectionLocalHost: "本地",
|
|
638
|
+
connectionRemoteHost: "远程 Host",
|
|
639
|
+
connectionActiveHost: "当前",
|
|
640
|
+
connectionReason: "原因",
|
|
641
|
+
connectionRefresh: "重新诊断连接",
|
|
642
|
+
connectionRefreshing: "正在诊断...",
|
|
643
|
+
connectionViewError: "查看错误",
|
|
644
|
+
connectionCopyDetails: "复制诊断信息",
|
|
645
|
+
connectionCopied: "已复制",
|
|
646
|
+
connectionCopyFailed: "复制失败",
|
|
647
|
+
connectionErrorCode: "错误码",
|
|
648
|
+
connectionErrorMessage: "错误信息",
|
|
649
|
+
connectionRetryable: "可重试",
|
|
650
|
+
connectionFailureStage: "失败阶段",
|
|
651
|
+
connectionDuration: "检查耗时",
|
|
652
|
+
connectionDiagnostic: "诊断信息",
|
|
653
|
+
connectionNoRuntime: "Renderer 请求桥尚未可用。",
|
|
654
|
+
connectionStatusReady: "正常",
|
|
655
|
+
connectionStatusChecking: "检查中",
|
|
656
|
+
connectionStatusNotInstalled: "未安装",
|
|
657
|
+
connectionStatusUnavailable: "不可用",
|
|
658
|
+
connectionStatusError: "错误",
|
|
659
|
+
connectionStatusInstalling: "安装中",
|
|
660
|
+
connectionStatusUnsupported: "不支持",
|
|
661
|
+
connectionComponent: "组件",
|
|
662
|
+
connectionStatus: "状态",
|
|
663
|
+
connectionHostsScrollLeft: "查看前面的 Host",
|
|
664
|
+
connectionHostsScrollRight: "查看更多 Host",
|
|
665
|
+
connectionOpenInstallation: "前往官方安装页面",
|
|
666
|
+
connectionOpenHarnessWeb: "打开 DeepSeek Harness Web",
|
|
667
|
+
connectionInstall: "安装",
|
|
668
|
+
connectionInstallDescription:
|
|
669
|
+
"尚未检测到该 Harness。请按照官方安装指南完成安装,然后返回此页面重新检查。",
|
|
670
|
+
connectionErrorTitle: "连接检查失败",
|
|
671
|
+
connectionErrorLog: "错误日志",
|
|
672
|
+
connectionOpenIssue: "提交 GitHub Issue",
|
|
673
|
+
connectionIssueDescription: "提交前请复制错误日志,并在 Issue 中说明当前 Host 与复现步骤。",
|
|
674
|
+
connectionReadyDescription: "该组件在当前 Host 上可用。",
|
|
675
|
+
connectionUnavailableDescription: "该组件当前无法在所选 Host 上使用。",
|
|
676
|
+
modelConfigurationTitle: "模型与思考档位配置",
|
|
677
|
+
modelConfigurationDescription: "配置此 Harness 新建会话时默认使用的模型与思考档位。",
|
|
678
|
+
modelSelectLabel: "默认模型",
|
|
679
|
+
thinkingSelectLabel: "思考档位",
|
|
680
|
+
thinkingOptionDefault: "跟随 Harness 默认",
|
|
681
|
+
saveModelPreference: "设为新会话默认",
|
|
682
|
+
resetModelPreference: "恢复 Harness 默认",
|
|
683
|
+
preferenceSaved: "已保存为默认配置!新建该 Harness 会话时将默认生效。",
|
|
684
|
+
preferenceReset: "已恢复为 Harness 原生默认。",
|
|
685
|
+
loadingModels: "正在探测可用模型……",
|
|
686
|
+
noModelsAvailable: "未探测到可用模型。",
|
|
687
|
+
oneClickInstall: "一键安装",
|
|
688
|
+
oneClickInstalling: "正在后台安装 Harness……",
|
|
689
|
+
oneClickInstallSuccess: "安装成功!状态已自动刷新。",
|
|
690
|
+
oneClickInstallFailed: "安装失败,请尝试复制下方命令在终端手动运行。",
|
|
691
|
+
installInTerminal: "在终端中打开安装",
|
|
692
|
+
terminalInstalling: "已在独立终端窗口启动安装,请在终端完成后点击刷新检测。",
|
|
693
|
+
manualInstallTitle: "独立安装程序 / 手动安装指引",
|
|
694
|
+
manualInstallNotice: "此 Harness 为独立客户端程序或二进制工具,不支持通过 npm 一键安装。",
|
|
695
|
+
manualInstallStep1: "1. 点击下方按钮前往官网下载安装包并完成安装;",
|
|
696
|
+
manualInstallStep2: "2. 运行应用并在终端中完成该 Harness 的认证登录;",
|
|
697
|
+
manualInstallStep3: "3. 确保该 CLI 可执行文件已加入系统 PATH 环境变量,然后点击【刷新检测】。",
|
|
698
|
+
harnessAccountsPageTitle: "Harness 账号与授权管理",
|
|
699
|
+
harnessAccountsPageDescription: "查看与管理各原生 Harness 的登录状态、授权凭据与模型用量配额。所有认证均保存在本地原生 Harness 中,Harness Mix 绝不代存您的账号密码。",
|
|
700
|
+
harnessAccountLogin: "登录 / 授权",
|
|
701
|
+
harnessAccountLoginStarted: "已在终端窗口启动登录认证,请在终端完成后点击刷新状态。",
|
|
702
|
+
harnessAccountConfigGuide: "凭据配置指引",
|
|
703
|
+
harnessAccountStatusReady: "已就绪",
|
|
704
|
+
harnessAccountStatusUnconfigured: "待配置 / 未登录",
|
|
705
|
+
harnessAccountStatusNotInstalled: "未安装",
|
|
706
|
+
checkUpdateNow: "立即检查更新",
|
|
707
|
+
installCommandLabel: "推荐安装命令",
|
|
708
|
+
copyInstallCommand: "复制安装命令",
|
|
709
|
+
installCommandCopied: "已复制命令",
|
|
710
|
+
officialDownload: "前往官网 / 下载安装包",
|
|
711
|
+
refreshDetection: "刷新检测",
|
|
712
|
+
connectionGroupMoreLabel: "更多",
|
|
713
|
+
connectionGroupMoreHintTitle: "拖到这里可以收起不常用的 Agent",
|
|
714
|
+
connectionGroupMoreHintBody: "它们会折叠进选择器的「更多」分组",
|
|
715
|
+
connectionGroupMoveToMore: "移到更多",
|
|
716
|
+
connectionGroupMoveToMain: "移回常用",
|
|
717
|
+
connectionGroupDragHandle: "拖动排序",
|
|
718
|
+
connectionGroupReset: "恢复默认排列",
|
|
719
|
+
pickerMoreAgentsLabel: "更多 Agent",
|
|
720
|
+
pickerManageLink: "管理",
|
|
721
|
+
pickerHideUnusedAgentsCta: "收起不常用的 Agent",
|
|
722
|
+
enabled: "已开启",
|
|
723
|
+
disabled: "已关闭",
|
|
724
|
+
openSettings: "打开 Harness Mix 设置",
|
|
725
|
+
settingsButtonTitle: "Harness Mix 设置",
|
|
726
|
+
settingsUnavailableTitle: "Harness Mix 设置不可用",
|
|
727
|
+
updateCurrentVersion: "当前版本",
|
|
728
|
+
updateInstallation: "安装方式",
|
|
729
|
+
updateInstallationNpm: "npm",
|
|
730
|
+
updateInstallationWindowsInstaller: "Windows 安装程序",
|
|
731
|
+
updateInstallationMacOsDmg: "macOS DMG",
|
|
732
|
+
updateInstallationUnknown: "未知",
|
|
733
|
+
updateLatestVersion: "最新版本",
|
|
734
|
+
updateUpToDate: "当前已是最新版本。",
|
|
735
|
+
updateAvailable: "有新版本可用。",
|
|
736
|
+
updateWindowsManualRequired: "Windows 暂不支持自动更新,请在下方手动更新。",
|
|
737
|
+
updateAndRestart: "更新",
|
|
738
|
+
updateChecking: "正在检查更新...",
|
|
739
|
+
updateDownloading: "正在下载更新...",
|
|
740
|
+
updatePreparing: "正在准备更新...",
|
|
741
|
+
updateWaitingForExit: "正在等待应用退出...",
|
|
742
|
+
updateInstalling: "正在安装更新...",
|
|
743
|
+
updateInstallingNpm: "正在通过 npm 安装...",
|
|
744
|
+
updateRequestTimeout: "更新服务未响应,请重试。",
|
|
745
|
+
updateRestarting: "正在重启以完成更新...",
|
|
746
|
+
updateSucceeded: "更新安装成功。",
|
|
747
|
+
updateFailed: "更新失败。",
|
|
748
|
+
updateRetry: "重试",
|
|
749
|
+
updateManualNpmDescription:
|
|
750
|
+
"如需手动更新,请在终端运行以下命令。更新完成后,请退出 Codex 并通过 Harness Mix 重新启动。",
|
|
751
|
+
updateWindowsNpmDescription:
|
|
752
|
+
"Windows 暂不支持自动更新。请退出 Harness Mix,在终端运行以下命令完成更新。",
|
|
753
|
+
updateWindowsInstallerDescription:
|
|
754
|
+
"Windows 暂不支持自动更新。请下载并运行适用于当前系统的安装包。",
|
|
755
|
+
updateManualTitle: "手动更新",
|
|
756
|
+
updateManualFallbackDescription:
|
|
757
|
+
"自动更新未能完成,请改用下列命令在终端手动更新。完成后请退出 Codex 并通过 Harness Mix 重新启动。",
|
|
758
|
+
updateCopyCommand: "复制",
|
|
759
|
+
updateCommandCopied: "已复制",
|
|
760
|
+
updateCopyFailed: "复制失败",
|
|
761
|
+
updateDownloadFromReleases: "前往 GitHub Releases 下载",
|
|
762
|
+
updateDownloadWindowsInstaller: "下载 Windows 安装包",
|
|
763
|
+
aboutTagline: "在 Codex Desktop 中运行各类原生 Harness",
|
|
764
|
+
aboutParagraphs: Object.freeze([
|
|
765
|
+
"我们认为 Codex Desktop 提供了目前最好的桌面开发交互体验。",
|
|
766
|
+
"但 Codex 并不是唯一优秀的 Agent Harness,也有人偏好 Claude Code、DeepSeek Harness、CodeBuddy、Kiro、Cursor 或 Pi Agent。",
|
|
767
|
+
"Harness Mix 让你在 Codex Desktop 中选择真正执行任务的 Agent,同时保留 Codex 的原生体验,并让它们协作完成任务。",
|
|
768
|
+
]),
|
|
769
|
+
aboutOpenSource: "Harness Mix 是一个开源项目,开源地址:",
|
|
770
|
+
aboutStarCallout: "⭐ 如果这个项目对你有帮助,请给我们一个 Star!⭐",
|
|
771
|
+
aboutRepository: "开源仓库",
|
|
771
772
|
pageLabels: Object.freeze({
|
|
772
|
-
connections: "连接",
|
|
773
|
+
connections: "连接",
|
|
774
|
+
collaboration: "协作",
|
|
773
775
|
accounts: "账号",
|
|
774
776
|
mcp: 'MCP',
|
|
775
777
|
skills: 'Skills',
|
|
@@ -778,48 +780,48 @@ const CHINESE_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
|
778
780
|
skins: "皮肤",
|
|
779
781
|
pets: "桌宠",
|
|
780
782
|
updates: "更新",
|
|
781
|
-
about: "关于",
|
|
782
|
-
}),
|
|
783
|
-
});
|
|
784
|
-
|
|
785
|
-
export const DEFAULT_RENDERER_SETTINGS_MESSAGES = ENGLISH_MESSAGES;
|
|
786
|
-
|
|
787
|
-
function languageFromTag(tag: string): string | undefined {
|
|
788
|
-
try {
|
|
789
|
-
return new Intl.Locale(tag).language.toLowerCase();
|
|
790
|
-
} catch {
|
|
791
|
-
return undefined;
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
export function resolveRendererSettingsLocale(
|
|
796
|
-
languageTags: readonly string[],
|
|
797
|
-
): RendererSettingsLocale {
|
|
798
|
-
for (const tag of languageTags) {
|
|
799
|
-
const language = languageFromTag(tag);
|
|
800
|
-
if (language === "zh") return "zh-CN";
|
|
801
|
-
if (language === "en") return "en";
|
|
802
|
-
}
|
|
803
|
-
return "en";
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
export function rendererSettingsMessages(locale: RendererSettingsLocale): RendererSettingsMessages {
|
|
807
|
-
return locale === "zh-CN" ? CHINESE_MESSAGES : ENGLISH_MESSAGES;
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
export function rendererSettingsLanguageSelection(
|
|
811
|
-
localeOverride: string | null | undefined,
|
|
812
|
-
): RendererSettingsLanguageSelection {
|
|
813
|
-
if (localeOverride == null) return "automatic";
|
|
814
|
-
const language = languageFromTag(localeOverride);
|
|
815
|
-
if (language === "zh") return "zh-CN";
|
|
816
|
-
if (language === "en") return "en";
|
|
817
|
-
return "other";
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
export function codexLocaleOverrideForSettingsSelection(
|
|
821
|
-
selection: RendererSettingsWritableLanguageSelection,
|
|
822
|
-
): "en-US" | "zh-CN" | null {
|
|
823
|
-
if (selection === "automatic") return null;
|
|
824
|
-
return selection === "en" ? "en-US" : "zh-CN";
|
|
825
|
-
}
|
|
783
|
+
about: "关于",
|
|
784
|
+
}),
|
|
785
|
+
});
|
|
786
|
+
|
|
787
|
+
export const DEFAULT_RENDERER_SETTINGS_MESSAGES = ENGLISH_MESSAGES;
|
|
788
|
+
|
|
789
|
+
function languageFromTag(tag: string): string | undefined {
|
|
790
|
+
try {
|
|
791
|
+
return new Intl.Locale(tag).language.toLowerCase();
|
|
792
|
+
} catch {
|
|
793
|
+
return undefined;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
export function resolveRendererSettingsLocale(
|
|
798
|
+
languageTags: readonly string[],
|
|
799
|
+
): RendererSettingsLocale {
|
|
800
|
+
for (const tag of languageTags) {
|
|
801
|
+
const language = languageFromTag(tag);
|
|
802
|
+
if (language === "zh") return "zh-CN";
|
|
803
|
+
if (language === "en") return "en";
|
|
804
|
+
}
|
|
805
|
+
return "en";
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
export function rendererSettingsMessages(locale: RendererSettingsLocale): RendererSettingsMessages {
|
|
809
|
+
return locale === "zh-CN" ? CHINESE_MESSAGES : ENGLISH_MESSAGES;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
export function rendererSettingsLanguageSelection(
|
|
813
|
+
localeOverride: string | null | undefined,
|
|
814
|
+
): RendererSettingsLanguageSelection {
|
|
815
|
+
if (localeOverride == null) return "automatic";
|
|
816
|
+
const language = languageFromTag(localeOverride);
|
|
817
|
+
if (language === "zh") return "zh-CN";
|
|
818
|
+
if (language === "en") return "en";
|
|
819
|
+
return "other";
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
export function codexLocaleOverrideForSettingsSelection(
|
|
823
|
+
selection: RendererSettingsWritableLanguageSelection,
|
|
824
|
+
): "en-US" | "zh-CN" | null {
|
|
825
|
+
if (selection === "automatic") return null;
|
|
826
|
+
return selection === "en" ? "en-US" : "zh-CN";
|
|
827
|
+
}
|