@kaitranntt/ccs 8.2.0-dev.1 → 8.2.0-dev.11
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 +12 -0
- package/config/base-claude.settings.json +1 -5
- package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
- package/dist/api/services/cliproxy-profile-bridge.js +6 -0
- package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
- package/dist/api/services/profile-writer.d.ts.map +1 -1
- package/dist/api/services/profile-writer.js +18 -8
- package/dist/api/services/profile-writer.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts.map +1 -1
- package/dist/auth/commands/create-command.js +11 -0
- package/dist/auth/commands/create-command.js.map +1 -1
- package/dist/cliproxy/accounts/account-safety-cross-lane.d.ts +41 -0
- package/dist/cliproxy/accounts/account-safety-cross-lane.d.ts.map +1 -0
- package/dist/cliproxy/accounts/account-safety-cross-lane.js +177 -0
- package/dist/cliproxy/accounts/account-safety-cross-lane.js.map +1 -0
- package/dist/cliproxy/accounts/account-safety.d.ts +29 -1
- package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
- package/dist/cliproxy/accounts/account-safety.js +41 -7
- package/dist/cliproxy/accounts/account-safety.js.map +1 -1
- package/dist/cliproxy/accounts/drain-order.d.ts +277 -0
- package/dist/cliproxy/accounts/drain-order.d.ts.map +1 -0
- package/dist/cliproxy/accounts/drain-order.js +575 -0
- package/dist/cliproxy/accounts/drain-order.js.map +1 -0
- package/dist/cliproxy/accounts/pool-state.d.ts +132 -0
- package/dist/cliproxy/accounts/pool-state.d.ts.map +1 -0
- package/dist/cliproxy/accounts/pool-state.js +201 -0
- package/dist/cliproxy/accounts/pool-state.js.map +1 -0
- package/dist/cliproxy/accounts/registry.d.ts +17 -1
- package/dist/cliproxy/accounts/registry.d.ts.map +1 -1
- package/dist/cliproxy/accounts/registry.js +47 -1
- package/dist/cliproxy/accounts/registry.js.map +1 -1
- package/dist/cliproxy/accounts/types.d.ts +20 -0
- package/dist/cliproxy/accounts/types.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +29 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/claude-shadow-warning.d.ts +39 -0
- package/dist/cliproxy/claude-shadow-warning.d.ts.map +1 -0
- package/dist/cliproxy/claude-shadow-warning.js +187 -0
- package/dist/cliproxy/claude-shadow-warning.js.map +1 -0
- package/dist/cliproxy/config/base-config-loader.d.ts +6 -5
- package/dist/cliproxy/config/base-config-loader.d.ts.map +1 -1
- package/dist/cliproxy/config/base-config-loader.js +19 -12
- package/dist/cliproxy/config/base-config-loader.js.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts +3 -0
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +158 -20
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/generator.d.ts +2 -1
- package/dist/cliproxy/config/generator.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.js +66 -9
- package/dist/cliproxy/config/generator.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +2 -0
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/account-resolution.d.ts.map +1 -1
- package/dist/cliproxy/executor/account-resolution.js +5 -0
- package/dist/cliproxy/executor/account-resolution.js.map +1 -1
- package/dist/cliproxy/executor/auth-coordinator.d.ts +4 -0
- package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -1
- package/dist/cliproxy/executor/auth-coordinator.js +5 -1
- package/dist/cliproxy/executor/auth-coordinator.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +20 -0
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/model-catalog.d.ts.map +1 -1
- package/dist/cliproxy/model-catalog.js +15 -0
- package/dist/cliproxy/model-catalog.js.map +1 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.d.ts.map +1 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.js +8 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.js.map +1 -1
- package/dist/cliproxy/quota/quota-manager.d.ts +7 -0
- package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-manager.js +19 -1
- package/dist/cliproxy/quota/quota-manager.js.map +1 -1
- package/dist/cliproxy/routing/pool-onboarding-hint.d.ts +95 -0
- package/dist/cliproxy/routing/pool-onboarding-hint.d.ts.map +1 -0
- package/dist/cliproxy/routing/pool-onboarding-hint.js +172 -0
- package/dist/cliproxy/routing/pool-onboarding-hint.js.map +1 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.d.ts +50 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.d.ts.map +1 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.js +232 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.js.map +1 -0
- package/dist/cliproxy/routing/routing-strategy.d.ts +132 -0
- package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
- package/dist/cliproxy/routing/routing-strategy.js +342 -5
- package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
- package/dist/commands/bar/help-subcommand.d.ts +2 -0
- package/dist/commands/bar/help-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/help-subcommand.js +63 -0
- package/dist/commands/bar/help-subcommand.js.map +1 -0
- package/dist/commands/bar/index.d.ts +1 -1
- package/dist/commands/bar/index.d.ts.map +1 -1
- package/dist/commands/bar/index.js +11 -2
- package/dist/commands/bar/index.js.map +1 -1
- package/dist/commands/bar/install-subcommand.d.ts +54 -12
- package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/install-subcommand.js +291 -69
- package/dist/commands/bar/install-subcommand.js.map +1 -1
- package/dist/commands/bar/launch-subcommand.d.ts +26 -0
- package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/launch-subcommand.js +107 -12
- package/dist/commands/bar/launch-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +20 -1
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +20 -0
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/cliproxy/order-subcommand.d.ts +16 -0
- package/dist/commands/cliproxy/order-subcommand.d.ts.map +1 -0
- package/dist/commands/cliproxy/order-subcommand.js +520 -0
- package/dist/commands/cliproxy/order-subcommand.js.map +1 -0
- package/dist/commands/cliproxy/pool-state-renderer.d.ts +40 -0
- package/dist/commands/cliproxy/pool-state-renderer.d.ts.map +1 -0
- package/dist/commands/cliproxy/pool-state-renderer.js +220 -0
- package/dist/commands/cliproxy/pool-state-renderer.js.map +1 -0
- package/dist/commands/cliproxy/pool-subcommand.d.ts +10 -0
- package/dist/commands/cliproxy/pool-subcommand.d.ts.map +1 -0
- package/dist/commands/cliproxy/pool-subcommand.js +112 -0
- package/dist/commands/cliproxy/pool-subcommand.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +7 -0
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/routing-subcommand.js +19 -0
- package/dist/commands/cliproxy/routing-subcommand.js.map +1 -1
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +1 -0
- package/dist/commands/command-catalog.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +6 -1
- package/dist/commands/help-command.js.map +1 -1
- package/dist/config/schemas/cliproxy.d.ts +37 -0
- package/dist/config/schemas/cliproxy.d.ts.map +1 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +3 -0
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/dispatcher/flows/account-flow.d.ts.map +1 -1
- package/dist/dispatcher/flows/account-flow.js +9 -0
- package/dist/dispatcher/flows/account-flow.js.map +1 -1
- package/dist/glmt/delta-accumulator.d.ts.map +1 -1
- package/dist/glmt/delta-accumulator.js +1 -0
- package/dist/glmt/delta-accumulator.js.map +1 -1
- package/dist/management/doctor.d.ts.map +1 -1
- package/dist/management/doctor.js +10 -0
- package/dist/management/doctor.js.map +1 -1
- package/dist/proxy/profile-router.d.ts +14 -0
- package/dist/proxy/profile-router.d.ts.map +1 -1
- package/dist/proxy/profile-router.js +1 -0
- package/dist/proxy/profile-router.js.map +1 -1
- package/dist/proxy/server/http-helpers.d.ts +5 -0
- package/dist/proxy/server/http-helpers.d.ts.map +1 -1
- package/dist/proxy/server/http-helpers.js +40 -1
- package/dist/proxy/server/http-helpers.js.map +1 -1
- package/dist/proxy/server/messages-route.d.ts.map +1 -1
- package/dist/proxy/server/messages-route.js +173 -10
- package/dist/proxy/server/messages-route.js.map +1 -1
- package/dist/proxy/upstream-url.d.ts +42 -2
- package/dist/proxy/upstream-url.d.ts.map +1 -1
- package/dist/proxy/upstream-url.js +83 -4
- package/dist/proxy/upstream-url.js.map +1 -1
- package/dist/ui/assets/{Trans-BkttMZOY.js → Trans-RG_sMDEu.js} +1 -1
- package/dist/ui/assets/accounts-yTXURc-q.js +1 -0
- package/dist/ui/assets/{alert-dialog-Dgbg5gJ1.js → alert-dialog-DjvPgzFs.js} +1 -1
- package/dist/ui/assets/api-Ck1dtNEM.js +4 -0
- package/dist/ui/assets/{auth-section-DV1ImDLn.js → auth-section-DBnY_LPz.js} +1 -1
- package/dist/ui/assets/{backups-section-D7r-Huo_.js → backups-section-Ci-uL4Of.js} +1 -1
- package/dist/ui/assets/{channels-CKUk3W1L.js → channels-BeS9O5q0.js} +1 -1
- package/dist/ui/assets/{checkbox-B6j6PA4N.js → checkbox-DFeFDZBp.js} +1 -1
- package/dist/ui/assets/{claude-extension-B9phgEGW.js → claude-extension-DS5qN19Z.js} +1 -1
- package/dist/ui/assets/{cliproxy-CjZiufaQ.js → cliproxy-D7HJH4mZ.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-J_8Tg44E.js → cliproxy-ai-providers-oJQZXrtc.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-DOxGnabX.js → cliproxy-control-panel-2mRPEcRj.js} +1 -1
- package/dist/ui/assets/codex-D0AUQ6jA.js +30 -0
- package/dist/ui/assets/{confirm-dialog-CjwyQ3AU.js → confirm-dialog-B37-CVuq.js} +1 -1
- package/dist/ui/assets/{copilot-Nhs4PdOq.js → copilot-KaaW-mko.js} +2 -2
- package/dist/ui/assets/{cursor-DqFROSqy.js → cursor-BKiTgYi5.js} +1 -1
- package/dist/ui/assets/{droid-CBwAiZcv.js → droid-DHdqGnFw.js} +2 -2
- package/dist/ui/assets/{globalenv-section-D9WhcK3S.js → globalenv-section-SfZO97nU.js} +1 -1
- package/dist/ui/assets/health-CSRS9O0D.js +1 -0
- package/dist/ui/assets/{icons-gI6odJjU.js → icons-DSLG1YsC.js} +1 -1
- package/dist/ui/assets/{index-DFYK4jw3.js → index-CGgavq2X.js} +37 -37
- package/dist/ui/assets/{index-D--xE6Kq.js → index-ChTYEBCZ.js} +1 -1
- package/dist/ui/assets/index-Cu_F55_O.js +1 -0
- package/dist/ui/assets/{index-bJvDY0e2.js → index-DJ66NrBH.js} +1 -1
- package/dist/ui/assets/index-DWUuSBUe.js +1 -0
- package/dist/ui/assets/{index-vK0cF4_0.js → index-DycwEe96.js} +1 -1
- package/dist/ui/assets/index-DzFlVVV3.css +1 -0
- package/dist/ui/assets/{index-Bssd99Pa.js → index-iQuEEGbH.js} +1 -1
- package/dist/ui/assets/{logs-BUA9GCN2.js → logs-tiZ_51mo.js} +1 -1
- package/dist/ui/assets/{masked-input-BZdCgWmH.js → masked-input-D9FVoeMA.js} +1 -1
- package/dist/ui/assets/proxy-status-widget-2k26d8pS.js +1 -0
- package/dist/ui/assets/{raw-json-settings-editor-panel-DuL_4ncA.js → raw-json-settings-editor-panel-CguBh93H.js} +1 -1
- package/dist/ui/assets/{searchable-select-BleLprBy.js → searchable-select-C4wShshD.js} +1 -1
- package/dist/ui/assets/{separator-De5-VTtx.js → separator-mvGlDdEW.js} +1 -1
- package/dist/ui/assets/{shared-Bu81YVUK.js → shared-Ck0yAwbs.js} +1 -1
- package/dist/ui/assets/{table-DsXaM2jg.js → table-DrUJOxKL.js} +1 -1
- package/dist/ui/assets/updates-BVHBFcq8.js +1 -0
- package/dist/ui/assets/{use-accounts-C2OmaTJU.js → use-accounts-DLtuaniS.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/browser/mcp-installer.d.ts.map +1 -1
- package/dist/utils/browser/mcp-installer.js +5 -34
- package/dist/utils/browser/mcp-installer.js.map +1 -1
- package/dist/utils/claude-user-config-lock.d.ts +9 -0
- package/dist/utils/claude-user-config-lock.d.ts.map +1 -0
- package/dist/utils/claude-user-config-lock.js +96 -0
- package/dist/utils/claude-user-config-lock.js.map +1 -0
- package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
- package/dist/utils/image-analysis/mcp-installer.js +5 -34
- package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
- package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
- package/dist/utils/websearch/mcp-installer.js +112 -78
- package/dist/utils/websearch/mcp-installer.js.map +1 -1
- package/dist/web-server/model-pricing.d.ts.map +1 -1
- package/dist/web-server/model-pricing.js +7 -0
- package/dist/web-server/model-pricing.js.map +1 -1
- package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -1
- package/dist/web-server/usage/codex-local-quota-collector.js +11 -9
- package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -1
- package/package.json +1 -1
- package/scripts/run-test-bucket.js +183 -17
- package/dist/ui/assets/accounts-CMnafyvZ.js +0 -1
- package/dist/ui/assets/api-VhuWZte1.js +0 -4
- package/dist/ui/assets/codex-BJuDLXfe.js +0 -30
- package/dist/ui/assets/health-CE3lFqFV.js +0 -1
- package/dist/ui/assets/index-C6D81JHk.js +0 -1
- package/dist/ui/assets/index-DGsfFqiO.js +0 -1
- package/dist/ui/assets/index-UEdhhar4.css +0 -1
- package/dist/ui/assets/proxy-status-widget-I35xB9u9.js +0 -1
- package/dist/ui/assets/updates-C2bOO3Fo.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-local-quota-collector.js","sourceRoot":"","sources":["../../../src/web-server/usage/codex-local-quota-collector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-local-quota-collector.js","sourceRoot":"","sources":["../../../src/web-server/usage/codex-local-quota-collector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -44,8 +44,15 @@ const slowTests = [
|
|
|
44
44
|
// CommonJS-heavy JS suites stay slow by default because many of them mutate
|
|
45
45
|
// module cache or process state. Opt them into `test:fast` only after they are
|
|
46
46
|
// proven stable in the mixed fast bucket.
|
|
47
|
-
const fastJsTests = new Set([
|
|
48
|
-
|
|
47
|
+
const fastJsTests = new Set(['tests/unit/flag-parsing-simple.test.js']);
|
|
48
|
+
|
|
49
|
+
const isolatedTests = new Set([
|
|
50
|
+
'tests/unit/targets/codex-adapter-exec.test.ts',
|
|
51
|
+
'tests/unit/targets/codex-adapter.test.ts',
|
|
52
|
+
'tests/unit/targets/droid-adapter.test.ts',
|
|
53
|
+
'tests/unit/targets/target-registry.test.ts',
|
|
54
|
+
'tests/unit/utils/fetch-proxy-setup.test.ts',
|
|
55
|
+
'tests/unit/web-server/usage/account-attribution.test.ts',
|
|
49
56
|
]);
|
|
50
57
|
|
|
51
58
|
const filePattern = /(\.test\.(c|m)?[jt]s|\.spec\.(c|m)?[jt]s|-test\.(c|m)?[jt]s)$/;
|
|
@@ -89,6 +96,11 @@ function shouldForceSlow(file) {
|
|
|
89
96
|
return readsBuiltDist(file);
|
|
90
97
|
}
|
|
91
98
|
|
|
99
|
+
function usesBunTestRunner(relativePath) {
|
|
100
|
+
const source = fs.readFileSync(path.join(rootDir, relativePath), 'utf8');
|
|
101
|
+
return source.includes('bun:test') || /(^|[^\w.])(?:describe|it)\s*\(/m.test(source);
|
|
102
|
+
}
|
|
103
|
+
|
|
92
104
|
function getSlowSet() {
|
|
93
105
|
const discovered = getDiscoveredTests();
|
|
94
106
|
const forceSlow = discovered.filter((file) => shouldForceSlow(file));
|
|
@@ -99,9 +111,101 @@ function selectBucket(name) {
|
|
|
99
111
|
const discovered = getDiscoveredTests();
|
|
100
112
|
const slowSet = getSlowSet();
|
|
101
113
|
|
|
102
|
-
return name === 'slow'
|
|
103
|
-
|
|
104
|
-
|
|
114
|
+
return name === 'slow' ? [...slowSet].sort() : discovered.filter((file) => !slowSet.has(file));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function toBunTestPath(relativePath) {
|
|
118
|
+
if (
|
|
119
|
+
relativePath.startsWith('./') ||
|
|
120
|
+
relativePath.startsWith('../') ||
|
|
121
|
+
path.isAbsolute(relativePath)
|
|
122
|
+
) {
|
|
123
|
+
return relativePath;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return `./${relativePath}`;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function getBunArgs(name, selected = selectBucket(name)) {
|
|
130
|
+
const testPaths = selected.map(toBunTestPath);
|
|
131
|
+
|
|
132
|
+
// Slow bucket forces sequential execution because it spawns subprocesses,
|
|
133
|
+
// binds ports, and touches shared state — parallelism causes flakes.
|
|
134
|
+
// Fast bucket keeps bun's default parallelism for speed.
|
|
135
|
+
return name === 'slow' ? ['test', '--max-concurrency=1', ...testPaths] : ['test', ...testPaths];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function shouldRunIsolated(file) {
|
|
139
|
+
return file.startsWith('src/') || isolatedTests.has(file) || !usesBunTestRunner(file);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function getBunRuns(name, selected = selectBucket(name)) {
|
|
143
|
+
const shared = selected.filter((file) => !shouldRunIsolated(file));
|
|
144
|
+
const isolated = selected.filter(shouldRunIsolated);
|
|
145
|
+
const runs = [];
|
|
146
|
+
|
|
147
|
+
if (shared.length > 0) {
|
|
148
|
+
runs.push({
|
|
149
|
+
label: 'shared',
|
|
150
|
+
selected: shared,
|
|
151
|
+
bunArgs: getBunArgs(name, shared),
|
|
152
|
+
quietOnPass: false,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
for (const file of isolated) {
|
|
157
|
+
runs.push({
|
|
158
|
+
label: file,
|
|
159
|
+
selected: [file],
|
|
160
|
+
bunArgs: getBunArgs(name, [file]),
|
|
161
|
+
quietOnPass: true,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return runs;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function stripAnsi(value) {
|
|
169
|
+
return value.replace(/\x1b\[[0-9;]*m/g, '');
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function parseBunFileCount(output) {
|
|
173
|
+
const match = stripAnsi(output).match(/Ran\s+\d+\s+tests?\s+across\s+(\d+)\s+files?/i);
|
|
174
|
+
return match ? Number(match[1]) : null;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function verifyReportedFileCount(selectedCount, output) {
|
|
178
|
+
const reportedCount = parseBunFileCount(output);
|
|
179
|
+
|
|
180
|
+
if (reportedCount === null) {
|
|
181
|
+
return {
|
|
182
|
+
ok: false,
|
|
183
|
+
message: '[X] Could not find Bun test file count in output.',
|
|
184
|
+
reportedCount,
|
|
185
|
+
selectedCount,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (reportedCount !== selectedCount) {
|
|
190
|
+
return {
|
|
191
|
+
ok: false,
|
|
192
|
+
message:
|
|
193
|
+
`[X] Bun ran ${reportedCount} files, but the bucket selected ${selectedCount} files. ` +
|
|
194
|
+
'Check test path arguments for filter/path ambiguity.',
|
|
195
|
+
reportedCount,
|
|
196
|
+
selectedCount,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return {
|
|
201
|
+
ok: true,
|
|
202
|
+
reportedCount,
|
|
203
|
+
selectedCount,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function shouldVerifyRunFileCount(run) {
|
|
208
|
+
return run.selected.every((file) => usesBunTestRunner(file));
|
|
105
209
|
}
|
|
106
210
|
|
|
107
211
|
function ensureBuildForSlowBucket() {
|
|
@@ -118,6 +222,54 @@ function ensureBuildForSlowBucket() {
|
|
|
118
222
|
return build.status ?? 1;
|
|
119
223
|
}
|
|
120
224
|
|
|
225
|
+
function runBunTest(run) {
|
|
226
|
+
const result = spawnSync('bun', run.bunArgs, {
|
|
227
|
+
cwd: rootDir,
|
|
228
|
+
encoding: 'utf8',
|
|
229
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
230
|
+
shell: process.platform === 'win32',
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
const output = `${result.stdout ?? ''}\n${result.stderr ?? ''}`;
|
|
234
|
+
const writeOutput = () => {
|
|
235
|
+
if (result.stdout) {
|
|
236
|
+
process.stdout.write(result.stdout);
|
|
237
|
+
}
|
|
238
|
+
if (result.stderr) {
|
|
239
|
+
process.stderr.write(result.stderr);
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
if (result.error) {
|
|
244
|
+
writeOutput();
|
|
245
|
+
console.error(`[X] Failed to run bun test: ${result.error.message}`);
|
|
246
|
+
return 1;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const exitCode = result.status ?? 1;
|
|
250
|
+
if (exitCode !== 0) {
|
|
251
|
+
writeOutput();
|
|
252
|
+
return exitCode;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (shouldVerifyRunFileCount(run)) {
|
|
256
|
+
const countCheck = verifyReportedFileCount(run.selected.length, output);
|
|
257
|
+
if (!countCheck.ok) {
|
|
258
|
+
writeOutput();
|
|
259
|
+
console.error(countCheck.message);
|
|
260
|
+
return 1;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (run.quietOnPass) {
|
|
265
|
+
console.log(`[OK] ${run.label}`);
|
|
266
|
+
} else {
|
|
267
|
+
writeOutput();
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return 0;
|
|
271
|
+
}
|
|
272
|
+
|
|
121
273
|
function runBucket(name) {
|
|
122
274
|
const selected = selectBucket(name);
|
|
123
275
|
|
|
@@ -133,20 +285,25 @@ function runBucket(name) {
|
|
|
133
285
|
}
|
|
134
286
|
}
|
|
135
287
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
: ['test', ...selected];
|
|
288
|
+
const runs = getBunRuns(name, selected);
|
|
289
|
+
const isolatedCount = runs.filter((run) => run.quietOnPass).length;
|
|
290
|
+
if (isolatedCount > 0) {
|
|
291
|
+
console.log(`[i] Running ${isolatedCount} test file(s) in isolated Bun processes.`);
|
|
292
|
+
}
|
|
142
293
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
294
|
+
let exitCode = 0;
|
|
295
|
+
for (const run of runs) {
|
|
296
|
+
const status = runBunTest(run);
|
|
297
|
+
if (status !== 0) {
|
|
298
|
+
exitCode = status;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (exitCode === 0) {
|
|
303
|
+
console.log(`[OK] Bucket '${name}' ran ${selected.length} selected test files.`);
|
|
304
|
+
}
|
|
148
305
|
|
|
149
|
-
return
|
|
306
|
+
return exitCode;
|
|
150
307
|
}
|
|
151
308
|
|
|
152
309
|
function main(args = process.argv.slice(2)) {
|
|
@@ -180,10 +337,19 @@ if (require.main === module) {
|
|
|
180
337
|
module.exports = {
|
|
181
338
|
slowTests,
|
|
182
339
|
fastJsTests,
|
|
340
|
+
isolatedTests,
|
|
183
341
|
readsBuiltDist,
|
|
184
342
|
shouldForceSlow,
|
|
185
343
|
getDiscoveredTests,
|
|
186
344
|
getSlowSet,
|
|
187
345
|
selectBucket,
|
|
346
|
+
toBunTestPath,
|
|
347
|
+
getBunArgs,
|
|
348
|
+
usesBunTestRunner,
|
|
349
|
+
shouldRunIsolated,
|
|
350
|
+
getBunRuns,
|
|
351
|
+
parseBunFileCount,
|
|
352
|
+
verifyReportedFileCount,
|
|
353
|
+
shouldVerifyRunFileCount,
|
|
188
354
|
main,
|
|
189
355
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./radix-ui-nu4wz29m.js";import{r as k,e as Ae}from"./react-vendor-Bjx91N7w.js";import{e as Pe,f as se,g as De}from"./tanstack-bhJxV1h8.js";import{T as Te,a as Se,b as te,c as Re,d as _e,e as Oe}from"./table-DsXaM2jg.js";import{a as R,ai as q,aj as W,ak as Q,al as J,am as Y,L as S,I as E,z as P,aE as pe,e as p,j as Ge,k as Me,l as ze,m as Le,n as ae,bi as ne,bj as re,bk as ce,B as C,c as $e,C as O,s as M,t as z,a0 as F,b as G,f as Ie,g as He,h as Fe,x as Be}from"./index-DFYK4jw3.js";import{A as Ue,a as Ke,b as Ee,c as Ze,d as Ve,e as Xe,f as qe,g as We}from"./alert-dialog-Dgbg5gJ1.js";import{a as fe,b as Qe,c as Je,d as Ye,e as es,u as ss,f as ts}from"./use-accounts-C2OmaTJU.js";import{b2 as Z,b3 as L,b4 as ee,aI as be,_ as je,b5 as Ne,ai as ye,w as as,b6 as ns,b7 as rs,m as V,at as cs,Q as os,b8 as ds,a7 as ls,$ as ve,a6 as B,T as X,x as is,o as oe,U as xs,a9 as de,Z as le}from"./icons-gI6odJjU.js";import{C as ie}from"./checkbox-B6j6PA4N.js";import"./notifications-B4_o8bcr.js";import"./utils-CzKF5WmX.js";import"./form-utils-CuHzLhJZ.js";import"./charts-eIPy2oG6.js";const xe=64,us=/^[a-zA-Z][a-zA-Z0-9_-]*$/;function ms({account:a,groupSummaries:x,plainCcsLane:t,onClose:m}){const{t:s}=R(),u=fe(),[r,l]=k.useState(a.context_mode==="shared"?"shared":"isolated"),[g,b]=k.useState(a.context_group||"default"),[h,v]=k.useState(a.continuity_mode==="deeper"?"deeper":"standard"),d=k.useMemo(()=>g.trim().toLowerCase().replace(/\s+/g,"-"),[g]),c=k.useMemo(()=>x.find(f=>f.group===d),[x,d]),N=d.length>0&&d.length<=xe&&us.test(d),j=r==="isolated"||N,y=r==="shared"?Math.max((c?.sharedCount??0)-(a.context_mode==="shared"&&a.context_group===d?1:0),0):0,n=r==="shared"?Math.max((c?.deeperCount??0)-(a.continuity_mode==="deeper"&&a.context_group===d?1:0),0):0,o=t?.account_name===a.name,i=!!t&&!o,w=`ccs auth default ${a.name}`,D=`ccs auth backup ${a.name}`,A=(f,I,_,H)=>{if(!["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(f.key))return;f.preventDefault();const ke=_.indexOf(I),we=f.key==="ArrowLeft"||f.key==="ArrowUp"?-1:1,Ce=(ke+we+_.length)%_.length;H(_[Ce])},$=t?t.kind==="native"?s("continuityOverview.lane.native"):t.kind==="account-default"?s("continuityOverview.lane.accountDefault",{name:t.account_name||""}):t.kind==="account-inherited"?s("continuityOverview.lane.accountInherited",{name:t.account_name||""}):t.kind==="profile-default"?s("continuityOverview.lane.profileDefault",{name:t.profile_name||"default"}):t.label:"",T=()=>{j&&u.mutate({name:a.name,context_mode:r,context_group:r==="shared"?d:void 0,continuity_mode:r==="shared"?h:void 0},{onSuccess:()=>{m()}})},U=f=>{f||m()};return e.jsx(q,{open:!0,onOpenChange:U,children:e.jsxs(W,{className:"sm:max-w-md",children:[e.jsxs(Q,{children:[e.jsx(J,{children:s("editAccountContext.title")}),e.jsx(Y,{children:s("editAccountContext.description",{name:a.name})})]}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(S,{className:"text-sm font-semibold",children:s("editAccountContext.syncMode")})}),e.jsxs("div",{className:"flex p-0.5 bg-muted/60 hover:bg-muted/80 transition-colors rounded-xl border border-border/40 w-full",role:"radiogroup","aria-label":s("editAccountContext.syncMode"),children:[e.jsxs("button",{type:"button",role:"radio","aria-checked":r==="isolated",tabIndex:r==="isolated"?0:-1,onClick:()=>l("isolated"),onKeyDown:f=>A(f,r,["isolated","shared"],l),className:`flex-1 flex justify-center items-center gap-2 px-3 py-1.5 rounded-[10px] text-sm font-medium transition-all duration-200 overflow-hidden ${r==="isolated"?"bg-background text-blue-600 dark:text-blue-400 shadow-sm ring-1 ring-border/50":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[e.jsx(Z,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"truncate",children:s("editAccountContext.isolatedOption")})]}),e.jsxs("button",{type:"button",role:"radio","aria-checked":r==="shared",tabIndex:r==="shared"?0:-1,onClick:()=>l("shared"),onKeyDown:f=>A(f,r,["isolated","shared"],l),className:`flex-1 flex justify-center items-center gap-2 px-3 py-1.5 rounded-[10px] text-sm font-medium transition-all duration-200 overflow-hidden ${r==="shared"?"bg-background text-emerald-600 dark:text-emerald-400 shadow-sm ring-1 ring-border/50":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[e.jsx(L,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"truncate",children:s("editAccountContext.sharedOption")})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground pt-1 px-1",children:s(r==="isolated"?"editAccountContext.isolatedModeHint":"editAccountContext.sharedModeHint")})]}),r==="shared"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(S,{htmlFor:"context-group",children:s("editAccountContext.historySyncGroup")}),e.jsx(E,{id:"context-group",value:g,onChange:f=>b(f.target.value),placeholder:s("editAccountContext.groupPlaceholder"),autoComplete:"off"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("editAccountContext.groupHint",{max:xe})}),!N&&e.jsx("p",{className:"text-xs text-destructive",children:s("editAccountContext.invalidGroup")})]}),r==="shared"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(S,{className:"text-sm font-semibold",children:s("editAccountContext.continuityDepth")})}),e.jsxs("div",{className:"flex p-0.5 bg-muted/60 hover:bg-muted/80 transition-colors rounded-xl border border-border/40 w-full",role:"radiogroup","aria-label":s("editAccountContext.continuityDepth"),children:[e.jsxs("button",{type:"button",role:"radio","aria-checked":h==="standard",tabIndex:h==="standard"?0:-1,onClick:()=>v("standard"),onKeyDown:f=>A(f,h,["standard","deeper"],v),className:`flex-1 flex justify-center items-center gap-2 px-3 py-1.5 rounded-[10px] text-sm font-medium transition-all duration-200 overflow-hidden ${h==="standard"?"bg-background text-emerald-600 dark:text-emerald-400 shadow-sm ring-1 ring-border/50":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[e.jsx(L,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"truncate",children:s("editAccountContext.standardOption")})]}),e.jsxs("button",{type:"button",role:"radio","aria-checked":h==="deeper",tabIndex:h==="deeper"?0:-1,onClick:()=>v("deeper"),onKeyDown:f=>A(f,h,["standard","deeper"],v),className:`flex-1 flex justify-center items-center gap-2 px-3 py-1.5 rounded-[10px] text-sm font-medium transition-all duration-200 overflow-hidden ${h==="deeper"?"bg-background text-indigo-600 dark:text-indigo-400 shadow-sm ring-1 ring-border/50":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[e.jsx(ee,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"truncate",children:s("editAccountContext.deeperOption")})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground pt-1 px-1",children:s(h==="standard"?"editAccountContext.standardHint":"editAccountContext.deeperHint")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("editAccountContext.credentialsIsolated")}),i&&e.jsx("div",{className:"rounded-[14px] border border-amber-200 bg-amber-50/50 p-4 text-xs shadow-sm dark:border-amber-900/40 dark:bg-amber-900/10",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"font-medium text-foreground",children:s("continuityOverview.plainLaneTitle")}),e.jsx("p",{className:"text-muted-foreground leading-relaxed",children:s("continuityOverview.plainLaneDescription",{lane:$||"plain ccs",name:a.name})}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:"ccs -r"}),e.jsx(P,{value:"ccs -r",size:"icon"})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:"ccs auth backup default"}),e.jsx(P,{value:"ccs auth backup default",size:"icon"})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:D}),e.jsx(P,{value:D,size:"icon"})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:w}),e.jsx(P,{value:w,size:"icon"})]})]})]})}),e.jsx("div",{className:`rounded-[14px] border p-4 text-xs shadow-sm transition-colors ${r==="isolated"?"bg-blue-50/50 border-blue-200 dark:bg-blue-900/10 dark:border-blue-800/40":"bg-muted/40 border-border/60"}`,children:e.jsxs("div",{className:"flex items-start gap-3",children:[r==="isolated"?e.jsx(be,{className:"h-4 w-4 text-blue-500 mt-0.5 shrink-0"}):e.jsx(je,{className:"h-4 w-4 text-muted-foreground mt-0.5 shrink-0"}),e.jsxs("div",{className:"space-y-1.5 flex-1 text-muted-foreground leading-relaxed",children:[r==="isolated"?e.jsx("p",{className:"text-foreground font-medium selection:bg-blue-200",children:s("editAccountContext.isolatedImplication")}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{children:[e.jsx("span",{className:"text-foreground font-medium",children:s("editAccountContext.sameGroupRule",{group:d})})," ",y>0?s("editAccountContext.sameGroupPeerCount",{count:y}):s("editAccountContext.noSameGroupPeer")]}),h==="deeper"&&e.jsx("p",{children:n>0?s("editAccountContext.deeperReady",{count:n}):e.jsx("span",{className:"text-amber-600 dark:text-amber-500",children:s("editAccountContext.deeperNeedsPeers")})})]}),e.jsx("p",{className:`pt-1.5 text-[11px] ${r==="isolated"?"text-blue-700/70 dark:text-blue-300/60":"text-muted-foreground/70"}`,children:s("editAccountContext.resumeOriginalWarning")})]})]})})]}),e.jsxs(pe,{children:[e.jsx(p,{variant:"outline",onClick:m,disabled:u.isPending,children:s("editAccountContext.cancel")}),e.jsx(p,{onClick:T,disabled:!j||u.isPending,children:u.isPending?s("editAccountContext.saving"):s("editAccountContext.save")})]})]})})}function hs({account:a,onClose:x}){const{t}=R(),m=Qe(),[s,u]=k.useState(a.shared_resource_mode||"shared"),r=()=>{m.mutate({name:a.name,shared_resource_mode:s},{onSuccess:()=>{x()}})};return e.jsx(q,{open:!0,onOpenChange:x,children:e.jsxs(W,{className:"sm:max-w-[425px]",children:[e.jsxs(Q,{children:[e.jsx(J,{children:t("editAccountSharedResources.title")}),e.jsx(Y,{children:t("editAccountSharedResources.description",{name:a.name})})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(S,{htmlFor:"resource-mode",children:t("editAccountSharedResources.resourceMode")}),e.jsxs(Ge,{value:s,onValueChange:l=>u(l),children:[e.jsx(Me,{id:"resource-mode",className:"w-full",children:e.jsx(ze,{placeholder:t("editAccountSharedResources.selectResourceMode")})}),e.jsxs(Le,{children:[e.jsx(ae,{value:"shared",children:e.jsxs("div",{className:"flex flex-col items-start py-1",children:[e.jsx("span",{className:"font-medium text-sm",children:t("editAccountSharedResources.sharedOption")}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:t("editAccountSharedResources.sharedHint")})]})}),e.jsx(ae,{value:"profile-local",children:e.jsxs("div",{className:"flex flex-col items-start py-1",children:[e.jsx("span",{className:"font-medium text-sm",children:t("editAccountSharedResources.profileLocalOption")}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:t("editAccountSharedResources.profileLocalHint")})]})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-wide text-muted-foreground",children:t("editAccountSharedResources.implicationTitle")}),s==="shared"?e.jsxs(ne,{className:"border-emerald-500/20 bg-emerald-500/5",children:[e.jsx(Ne,{className:"h-4 w-4 text-emerald-600 dark:text-emerald-400"}),e.jsx(re,{className:"text-xs font-semibold text-emerald-800 dark:text-emerald-300",children:t("editAccountSharedResources.sharedOption")}),e.jsx(ce,{className:"text-xs text-emerald-700/80 dark:text-emerald-400/80",children:t("editAccountSharedResources.sharedImplication")})]}):e.jsxs(ne,{className:"border-amber-500/20 bg-amber-500/5",children:[e.jsx(ye,{className:"h-4 w-4 text-amber-600 dark:text-amber-400"}),e.jsx(re,{className:"text-xs font-semibold text-amber-800 dark:text-amber-300",children:t("editAccountSharedResources.profileLocalOption")}),e.jsx(ce,{className:"text-xs text-amber-700/80 dark:text-amber-400/80",children:t("editAccountSharedResources.profileLocalImplication")})]})]}),a.shared_resource_inferred&&e.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-muted/50 p-3",children:[e.jsx(as,{className:"h-4 w-4 mt-0.5 text-muted-foreground shrink-0"}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:t("accountsTable.legacyReview")})]})]}),e.jsxs(pe,{children:[e.jsx(p,{variant:"outline",onClick:x,children:t("editAccountSharedResources.cancel")}),e.jsx(p,{onClick:r,disabled:m.isPending,children:m.isPending?t("editAccountSharedResources.saving"):t("editAccountSharedResources.save")})]})]})})}function ue({data:a,defaultAccount:x,groupSummaries:t,plainCcsLane:m}){const{t:s}=R(),u=Je(),r=Ye(),l=es(),g=fe(),[b,h]=k.useState(null),[v,d]=k.useState(null),[c,N]=k.useState(null),j=[{accessorKey:"name",header:s("accountsTable.name"),size:200,cell:({row:n})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:n.original.name}),n.original.name===x&&e.jsx("span",{className:"text-xs bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20",children:s("accountsTable.defaultBadge")})]})},{accessorKey:"type",header:s("accountsTable.type"),size:100,cell:({row:n})=>e.jsx("span",{className:"capitalize text-muted-foreground",children:n.original.type||"oauth"})},{accessorKey:"created",header:s("accountsTable.created"),size:150,cell:({row:n})=>{const o=new Date(n.original.created);return e.jsx("span",{className:"text-muted-foreground",children:o.toLocaleDateString()})}},{accessorKey:"last_used",header:s("accountsTable.lastUsed"),size:150,cell:({row:n})=>{if(!n.original.last_used)return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});const o=new Date(n.original.last_used);return e.jsx("span",{className:"text-muted-foreground",children:o.toLocaleDateString()})}},{id:"context",header:s("accountsTable.historySync"),size:170,cell:({row:n})=>{if(n.original.type==="cliproxy")return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});if((n.original.context_mode||"isolated")==="shared"){const i=n.original.context_group||"default",w=n.original.continuity_mode==="deeper";return e.jsxs("div",{className:"flex flex-col items-start gap-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap",children:[e.jsx(C,{variant:"outline",className:`font-mono text-[10px] uppercase px-1.5 py-0 border ${w?"text-indigo-700 border-indigo-300/60 bg-indigo-50/50 dark:text-indigo-300 dark:border-indigo-900/40 dark:bg-indigo-900/20":"text-emerald-700 border-emerald-300/60 bg-emerald-50/50 dark:text-emerald-300 dark:border-emerald-900/40 dark:bg-emerald-900/20"}`,children:s(w?"accountsTable.badges.deeper":"accountsTable.badges.shared")}),e.jsx("span",{className:"text-xs font-semibold text-foreground/80",children:i})]}),e.jsx("p",{className:"text-[10px] text-muted-foreground whitespace-nowrap",children:n.original.sameGroupPeerCount>0?s("accountsTable.sameGroupPeerCount",{count:n.original.sameGroupPeerCount}):s("accountsTable.noSameGroupPeer")})]})}return n.original.context_inferred?e.jsxs("div",{className:"flex flex-col items-start gap-1",children:[e.jsx(C,{variant:"outline",className:"text-amber-700 border-amber-300/60 bg-amber-50/50 dark:text-amber-400 dark:border-amber-900/40 dark:bg-amber-900/20 font-mono text-[10px] uppercase px-1.5 py-0",children:s("accountsTable.badges.legacy")}),e.jsx("p",{className:"text-[10px] text-amber-700/80 dark:text-amber-400/80 whitespace-nowrap",children:s("accountsTable.legacyReview")})]}):e.jsx("div",{className:"flex flex-col items-start gap-1.5",children:e.jsx(C,{variant:"secondary",className:"font-mono text-[10px] uppercase px-1.5 py-0 text-muted-foreground bg-muted/60 border-transparent shadow-none",children:s("accountsTable.badges.isolated")})})}},{id:"resources",header:s("accountsTable.sharedResources"),size:150,cell:({row:n})=>{if(n.original.type==="cliproxy")return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});const o=n.original.shared_resource_mode||"shared",i=n.original.shared_resource_inferred;return e.jsxs("div",{className:"flex flex-col items-start gap-1",children:[e.jsx(C,{variant:o==="shared"?"outline":"secondary",className:$e("font-mono text-[10px] uppercase px-1.5 py-0",o==="shared"?"text-emerald-700 border-emerald-300/60 bg-emerald-50/50 dark:text-emerald-300 dark:border-emerald-900/40 dark:bg-emerald-900/20":"text-muted-foreground bg-muted/60 border-transparent shadow-none"),children:s(o==="shared"?"accountsTable.resourcesShared":"accountsTable.resourcesProfileLocal")}),i&&e.jsx("p",{className:"text-[10px] text-amber-700/80 dark:text-amber-400/80 whitespace-nowrap",children:s("accountsTable.legacyReview")})]})}},{id:"actions",header:s("accountsTable.actions"),size:220,cell:({row:n})=>{const o=n.original.name===x,i=u.isPending||r.isPending||g.isPending,w=n.original.type==="cliproxy",D=n.original.context_inferred||n.original.continuity_inferred;return e.jsxs("div",{className:"flex items-center gap-1",children:[!w&&e.jsxs(p,{variant:"outline",size:"sm",className:"h-8 px-2",disabled:i,onClick:()=>d(n.original),title:s("accountsTable.syncTitle"),children:[e.jsx(ns,{className:"w-3.5 h-3.5 mr-1"}),s("accountsTable.sync")]}),!w&&e.jsxs(p,{variant:"outline",size:"sm",className:"h-8 px-2",disabled:i,onClick:()=>N(n.original),title:s("accountsTable.resourcesTitle"),children:[e.jsx(Ne,{className:"w-3.5 h-3.5 mr-1"}),s("accountsTable.sharedResources")]}),!w&&D&&e.jsxs(p,{variant:"ghost",size:"sm",className:"h-8 px-2 text-amber-700 hover:text-amber-700 hover:bg-amber-500/10 dark:text-amber-400 dark:hover:text-amber-400",disabled:i,onClick:()=>g.mutate({name:n.original.name,context_mode:n.original.context_mode==="shared"?"shared":"isolated",context_group:n.original.context_mode==="shared"?n.original.context_group||"default":void 0,continuity_mode:n.original.context_mode==="shared"?n.original.continuity_mode==="deeper"?"deeper":"standard":void 0}),title:s("accountsTable.confirmLegacyTitle"),children:[e.jsx(rs,{className:"w-3 h-3 mr-1"}),s("accountsTable.confirm")]}),e.jsxs(p,{variant:o?"secondary":"default",size:"sm",className:"h-8 px-2",disabled:o||i,onClick:()=>u.mutate(n.original.name),children:[e.jsx(V,{className:`w-3 h-3 mr-1 ${o?"opacity-50":""}`}),s(o?"accountsTable.active":"accountsTable.setDefault")]}),e.jsx(p,{variant:"ghost",size:"sm",className:"h-8 px-2 text-destructive hover:text-destructive hover:bg-destructive/10",disabled:o||i,onClick:()=>h(n.original.name),title:s(o?"accountsTable.cannotDeleteDefault":"accountsTable.deleteAccount"),children:e.jsx(cs,{className:"w-4 h-4"})})]})}}],y=Pe({data:a,columns:j,getCoreRowModel:De()});return a.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:s("accountsTable.noAccounts")}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"border rounded-md",children:e.jsxs(Te,{children:[e.jsx(Se,{children:y.getHeaderGroups().map(n=>e.jsx(te,{children:n.headers.map(o=>{const i={name:"w-[180px]",type:"w-[80px]",created:"w-[120px]",last_used:"w-[120px]",context:"w-[150px]",resources:"w-[120px]",actions:"w-[320px]"}[o.id]||"w-auto";return e.jsx(Re,{className:i,children:o.isPlaceholder?null:se(o.column.columnDef.header,o.getContext())},o.id)})},n.id))}),e.jsx(_e,{children:y.getRowModel().rows.map(n=>e.jsx(te,{children:n.getVisibleCells().map(o=>e.jsx(Oe,{children:se(o.column.columnDef.cell,o.getContext())},o.id))},n.id))})]})}),x&&e.jsx("div",{className:"flex justify-end",children:e.jsxs(p,{variant:"outline",size:"sm",onClick:()=>l.mutate(),disabled:l.isPending,children:[e.jsx(os,{className:"w-4 h-4 mr-2"}),s("accountsTable.resetToDefault")]})})]}),v&&e.jsx(ms,{account:v,groupSummaries:t,plainCcsLane:m,onClose:()=>d(null)}),c&&e.jsx(hs,{account:c,onClose:()=>N(null)}),e.jsx(Ue,{open:!!b,onOpenChange:n=>!n&&h(null),children:e.jsxs(Ke,{children:[e.jsxs(Ee,{children:[e.jsx(Ze,{children:s("accountsTable.deleteDialogTitle")}),e.jsx(Ve,{children:s("accountsTable.deleteDialogDesc",{name:b??""})})]}),e.jsxs(Xe,{children:[e.jsx(qe,{children:s("accountsTable.cancel")}),e.jsx(We,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{b&&(r.mutate(b),h(null))},children:s("accountsTable.delete")})]})]})})]})}function me({totalAccounts:a,isolatedCount:x,sharedPeerGroups:t,deeperReadyGroups:m}){const{t:s}=R(),u=m[0]||t[0]||"daily",r=a<2?"empty":m.length>0?"deeper":t.length>0?"shared":a>=2&&x===a?"isolated":a===0?"empty":"mixed",l=`ccs auth create work2 --share-context --context-group ${u} --deeper-continuity`;return e.jsxs(O,{className:"overflow-hidden",children:[e.jsx(M,{className:"pb-3",children:e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(z,{className:"text-lg",children:s("accountRouteGuide.title")}),e.jsx(F,{children:s("accountRouteGuide.description")})]}),e.jsx(C,{variant:r==="deeper"?"default":"secondary",children:s(`accountRouteGuide.status.${r}`)})]})}),e.jsxs(G,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-3 md:grid-cols-2 xl:grid-cols-4",children:[e.jsxs("section",{className:"rounded-md border bg-blue-50/50 p-3 text-sm dark:bg-blue-900/10",children:[e.jsxs("div",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(ye,{className:"h-4 w-4 text-blue-600 dark:text-blue-400"}),s("accountRouteGuide.cards.isolated.title")]}),e.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-muted-foreground",children:s("accountRouteGuide.cards.isolated.desc")})]}),e.jsxs("section",{className:"rounded-md border bg-emerald-50/50 p-3 text-sm dark:bg-emerald-900/10",children:[e.jsxs("div",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(ds,{className:"h-4 w-4 text-emerald-600 dark:text-emerald-400"}),s("accountRouteGuide.cards.select.title")]}),e.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-muted-foreground",children:s("accountRouteGuide.cards.select.desc")})]}),e.jsxs("section",{className:"rounded-md border bg-sky-50/50 p-3 text-sm dark:bg-sky-900/10",children:[e.jsxs("div",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(ls,{className:"h-4 w-4 text-sky-600 dark:text-sky-400"}),s("accountRouteGuide.cards.settings.title")]}),e.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-muted-foreground",children:s("accountRouteGuide.cards.settings.desc")})]}),e.jsxs("section",{className:"rounded-md border bg-indigo-50/50 p-3 text-sm dark:bg-indigo-900/10",children:[e.jsxs("div",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(L,{className:"h-4 w-4 text-indigo-600 dark:text-indigo-400"}),s("accountRouteGuide.cards.sync.title")]}),e.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-muted-foreground",children:s("accountRouteGuide.cards.sync.desc")})]})]}),e.jsxs("div",{className:"grid gap-3 lg:grid-cols-2",children:[e.jsxs("div",{className:"rounded-md border bg-background p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsx(ve,{className:"h-3.5 w-3.5"}),s("accountRouteGuide.commands.isolated")]}),["ccs auth create work","ccs auth create personal","ccs work","ccs personal"].map(g=>e.jsxs("div",{className:"mt-2 flex items-start gap-2 rounded-md bg-muted px-2 py-2 font-mono text-[11px]",children:[e.jsx("span",{className:"flex-1 break-all",children:g}),e.jsx(P,{value:g,size:"icon"})]},g))]}),e.jsxs("div",{className:"rounded-md border bg-background p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsx(ee,{className:"h-3.5 w-3.5"}),s("accountRouteGuide.commands.sync")]}),e.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-muted px-2 py-2 font-mono text-[11px]",children:[e.jsx("span",{className:"flex-1 break-all",children:l}),e.jsx(P,{value:l,size:"icon"})]}),e.jsx("p",{className:"mt-2 text-xs leading-relaxed text-muted-foreground",children:s("accountRouteGuide.commands.syncDesc",{group:u})})]})]})]})]})}const K=({titleKey:a,descKey:x})=>{const{t}=R();return e.jsxs(Ie,{children:[e.jsx(He,{asChild:!0,children:e.jsx(p,{variant:"ghost",size:"icon","aria-label":t(a),className:"h-5 w-5 rounded-full hover:bg-muted text-muted-foreground/70 transition-colors",children:e.jsx(je,{className:"h-3 w-3"})})}),e.jsxs(Fe,{className:"w-72 p-4 rounded-xl shadow-lg border-border/50 text-sm",side:"top",align:"center",children:[e.jsx("p",{className:"font-semibold tracking-tight",children:t(a)}),e.jsx("p",{className:"mt-1.5 text-muted-foreground leading-relaxed",children:t(x)})]})]})};function he({totalAccounts:a,primaryAccountName:x,isolatedCount:t,sharedStandardCount:m,deeperSharedCount:s,sharedAloneCount:u,sharedPeerAccountCount:r,deeperReadyAccountCount:l,sharedPeerGroups:g,deeperReadyGroups:b,legacyTargetCount:h,cliproxyCount:v,plainCcsLane:d}){const{t:c}=R(),N=d?d.kind==="native"?c("continuityOverview.lane.native"):d.kind==="account-default"?c("continuityOverview.lane.accountDefault",{name:d.account_name||""}):d.kind==="account-inherited"?c("continuityOverview.lane.accountInherited",{name:d.account_name||""}):d.kind==="profile-default"?c("continuityOverview.lane.profileDefault",{name:d.profile_name||"default"}):d.label:"",j=a<2?"single":g.length===0?t===a?"isolated":"shared-alone":b.length===0?"shared-standard":t>0||u>0||l<r||b.length<g.length?"partial":"ready",y=b[0]||g[0]||"default",n=b.length>0&&(t>0||m>0||g.length>b.length),i={ready:e.jsx(is,{className:"h-6 w-6 text-emerald-600 dark:text-emerald-400"}),"shared-standard":e.jsx(L,{className:"h-6 w-6 text-blue-600 dark:text-blue-400"}),single:e.jsx(be,{className:"h-6 w-6 text-stone-400"}),isolated:e.jsx(Z,{className:"h-6 w-6 text-amber-600 dark:text-amber-400"}),"shared-alone":e.jsx(X,{className:"h-6 w-6 text-amber-600 dark:text-amber-400"}),partial:e.jsx(X,{className:"h-6 w-6 text-amber-600 dark:text-amber-400"})}[j],w=!!x&&d?.account_name===x,D=a>0&&!!d&&(!x||!w),A=a>1&&j!=="ready";return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(O,{className:"flex flex-col justify-between overflow-hidden relative group p-0 border-border bg-card shadow-sm hover:shadow-md transition-shadow duration-300",children:e.jsxs(G,{className:"p-6 flex flex-col h-full bg-gradient-to-br from-card to-muted/20 space-y-4",children:[e.jsx("div",{className:"flex items-start justify-between gap-4",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start gap-4",children:[e.jsx("div",{className:"rounded-2xl bg-background p-3 shadow-sm ring-1 ring-border/50 self-start shrink-0",children:i}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h3",{className:"text-lg font-semibold tracking-tight",children:c(`continuityReadiness.messages.${j}.title`,{group:y})}),e.jsx(C,{variant:j==="ready"?"default":"secondary",className:"rounded-full px-2.5 py-0.5 font-medium shadow-sm",children:c(`continuityReadiness.state.${j}`)})]}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-lg leading-relaxed",children:c(`continuityReadiness.messages.${j}.description`,{group:y,count:u})})]})]})}),e.jsxs("div",{className:"mt-auto pt-4 flex flex-wrap items-center gap-2",children:[v>0&&e.jsx(C,{variant:"outline",className:"text-blue-700 bg-blue-50/50 border-blue-200/60 dark:border-blue-900/40 dark:bg-blue-900/20 dark:text-blue-300",children:c("historySyncLearningMap.cliproxyManaged",{count:v})}),h>0&&e.jsx(C,{variant:"outline",className:"text-amber-700 bg-amber-50/50 border-amber-200/60 dark:border-amber-900/40 dark:bg-amber-900/20 dark:text-amber-300",children:c("historySyncLearningMap.legacyConfirmation",{count:h})}),g.length>0&&b.length===0&&e.jsx(C,{variant:"secondary",className:"font-mono text-[11px] px-2 bg-muted/50 text-muted-foreground border-transparent",children:c("continuityOverview.recommendBadge",{group:y})}),n&&e.jsx(C,{variant:"secondary",className:"font-mono text-[11px] px-2 bg-muted/50 text-muted-foreground border-transparent",children:c("continuityOverview.partialBadge",{group:y})})]})]})}),(D||A)&&e.jsx(O,{className:"border-dashed",children:e.jsxs(G,{className:"p-5 space-y-4",children:[D&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:c("continuityOverview.plainLaneTitle")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c("continuityOverview.plainLaneDescription",{lane:N||"plain ccs"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:"ccs -r"}),e.jsx(P,{value:"ccs -r",size:"icon"})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:"ccs auth backup default"}),e.jsx(P,{value:"ccs auth backup default",size:"icon"})]}),x?e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:`ccs auth default ${x}`}),e.jsx(P,{value:`ccs auth default ${x}`,size:"icon"})]}):e.jsx("p",{className:"text-xs text-muted-foreground",children:c("continuityOverview.setDefaultHint")})]})]}),A&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:c("continuityReadiness.stepsTitle")}),e.jsxs("ol",{className:"space-y-1 pl-5 text-sm text-muted-foreground",children:[e.jsx("li",{children:c("continuityReadiness.steps.syncBoth")}),e.jsx("li",{children:c("continuityReadiness.steps.sameGroup",{group:y})}),e.jsx("li",{children:c("continuityReadiness.steps.enableDeeper")}),e.jsx("li",{children:c("continuityReadiness.steps.resumeOriginal")})]})]})]})}),e.jsxs("div",{className:"flex flex-col md:flex-row items-center gap-3",children:[e.jsxs("div",{className:"flex-1 w-full flex items-center justify-between p-3.5 rounded-xl border border-blue-300/40 bg-blue-50/50 dark:border-blue-900/30 dark:bg-blue-900/10 shadow-sm transition-colors hover:bg-blue-100/40 dark:hover:bg-blue-900/20",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{className:"h-4 w-4 text-blue-700/80 dark:text-blue-400/80"}),e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-blue-900 dark:text-blue-200",children:c("historySyncLearningMap.isolated")}),e.jsx(K,{titleKey:"accountsPage.isolated",descKey:"accountsPage.isolatedDesc"})]}),e.jsx("span",{className:"text-lg font-mono font-bold text-blue-900 dark:text-blue-200",children:t})]}),e.jsx(B,{className:"hidden md:block h-4 w-4 text-muted-foreground/40 shrink-0"}),e.jsxs("div",{className:"flex-1 w-full flex items-center justify-between p-3.5 rounded-xl border border-emerald-300/40 bg-emerald-50/50 dark:border-emerald-900/30 dark:bg-emerald-900/10 shadow-sm transition-colors hover:bg-emerald-100/40 dark:hover:bg-emerald-900/20",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(L,{className:"h-4 w-4 text-emerald-700/80 dark:text-emerald-400/80"}),e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-emerald-900 dark:text-emerald-200",children:c("historySyncLearningMap.shared")}),e.jsx(K,{titleKey:"accountsPage.sharedStandard",descKey:"accountsPage.sharedStandardDesc"})]}),e.jsx("span",{className:"text-lg font-mono font-bold text-emerald-900 dark:text-emerald-200",children:m})]}),e.jsx(B,{className:"hidden md:block h-4 w-4 text-muted-foreground/40 shrink-0"}),e.jsxs("div",{className:"flex-1 w-full flex items-center justify-between p-3.5 rounded-xl border border-indigo-300/40 bg-indigo-50/50 dark:border-indigo-900/30 dark:bg-indigo-900/10 shadow-sm transition-colors hover:bg-indigo-100/40 dark:hover:bg-indigo-900/20",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ee,{className:"h-4 w-4 text-indigo-700/80 dark:text-indigo-400/80"}),e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-indigo-900 dark:text-indigo-200",children:c("historySyncLearningMap.deeper")}),e.jsx(K,{titleKey:"accountsPage.sharedDeeper",descKey:"accountsPage.sharedDeeperDesc"})]}),e.jsx("span",{className:"text-lg font-mono font-bold text-indigo-900 dark:text-indigo-200",children:s})]})]})]})}const ge=64;function gs({open:a,onClose:x}){const{t}=R(),[m,s]=k.useState(""),[u,r]=k.useState(!1),[l,g]=k.useState(""),[b,h]=k.useState(!1),[v,d]=k.useState(!1),c=/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(m),N=l.trim().toLowerCase().replace(/\s+/g,"-"),j=N.length===0||N.length<=ge&&/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(N),y=m&&c?[`ccs auth create ${m}`,u?N.length>0?`--context-group ${N}`:"--share-context":"",u&&b?"--deeper-continuity":""].filter(Boolean).join(" "):t("createAuthProfileDialog.commandFallback"),n=async()=>{!c||u&&!j||(await navigator.clipboard.writeText(y),d(!0),setTimeout(()=>d(!1),2e3))},o=()=>{s(""),r(!1),g(""),h(!1),d(!1),x()};return e.jsx(q,{open:a,onOpenChange:i=>!i&&o(),children:e.jsxs(W,{className:"sm:max-w-md",children:[e.jsxs(Q,{children:[e.jsx(J,{children:t("createAuthProfileDialog.title")}),e.jsx(Y,{children:t("createAuthProfileDialog.description")})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(S,{htmlFor:"profile-name",children:t("createAuthProfileDialog.profileName")}),e.jsx(E,{id:"profile-name",value:m,onChange:i=>s(i.target.value),placeholder:t("createAuthProfileDialog.profileNamePlaceholder"),autoComplete:"off"}),m&&!c&&e.jsx("p",{className:"text-xs text-destructive",children:t("createAuthProfileDialog.invalidProfileName")})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ie,{id:"share-context",checked:u,onCheckedChange:i=>r(i===!0)}),e.jsx(S,{htmlFor:"share-context",className:"cursor-pointer",children:t("createAuthProfileDialog.enableSharedHistory")})]}),u&&e.jsxs("div",{className:"space-y-2 pl-6",children:[e.jsx(S,{htmlFor:"context-group",children:t("createAuthProfileDialog.historySyncGroupOptional")}),e.jsx(E,{id:"context-group",value:l,onChange:i=>g(i.target.value),placeholder:t("createAuthProfileDialog.historySyncGroupPlaceholder"),autoComplete:"off"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("createAuthProfileDialog.historySyncGroupHint")}),e.jsxs("div",{className:"flex items-center gap-2 pt-1",children:[e.jsx(ie,{id:"deeper-continuity",checked:b,onCheckedChange:i=>h(i===!0)}),e.jsx(S,{htmlFor:"deeper-continuity",className:"cursor-pointer",children:t("createAuthProfileDialog.deeperContinuity")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("createAuthProfileDialog.deeperContinuityHint")}),l.trim().length>0&&!j&&e.jsx("p",{className:"text-xs text-destructive",children:t("createAuthProfileDialog.invalidContextGroup",{max:ge})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(S,{children:t("createAuthProfileDialog.command")}),e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-md font-mono text-sm",children:[e.jsx(ve,{className:"w-4 h-4 text-muted-foreground shrink-0"}),e.jsx("code",{className:"flex-1 break-all",children:y}),e.jsx(p,{variant:"ghost",size:"sm",className:"shrink-0 h-8 px-2",onClick:n,disabled:!c||u&&!j,children:v?e.jsx(V,{className:"w-4 h-4 text-green-500"}):e.jsx(oe,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground space-y-1",children:[e.jsx("p",{children:t("createAuthProfileDialog.afterRunPrefix")}),e.jsxs("ol",{className:"list-decimal list-inside pl-2 space-y-0.5",children:[e.jsx("li",{children:t("createAuthProfileDialog.afterRunStep1")}),e.jsx("li",{children:t("createAuthProfileDialog.afterRunStep2")})]}),e.jsx("p",{className:"pt-1",children:t("createAuthProfileDialog.poolingHint")})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[e.jsx(p,{variant:"ghost",onClick:o,children:t("createAuthProfileDialog.close")}),e.jsx(p,{onClick:n,disabled:!c||u&&!j,children:v?e.jsxs(e.Fragment,{children:[e.jsx(V,{className:"w-4 h-4 mr-2"}),t("createAuthProfileDialog.copied")]}):e.jsxs(e.Fragment,{children:[e.jsx(oe,{className:"w-4 h-4 mr-2"}),t("createAuthProfileDialog.copyCommand")]})})]})]})]})})}function Ts(){const{t:a}=R(),x=Ae(),{data:t,isLoading:m}=ss(),s=ts(),[u,r]=k.useState(!1),l=t?.accounts||[],g=t?.cliproxyCount||0,b=t?.legacyContextCount||0,h=t?.legacyContinuityCount||0,v=t?.sharedCount||0,d=t?.sharedStandardCount||0,c=t?.deeperSharedCount||0,N=t?.isolatedCount||0,j=t?.sharedAloneCount||0,y=t?.sharedPeerAccountCount||0,n=t?.deeperReadyAccountCount||0,o=t?.sharedPeerGroups||[],i=t?.deeperReadyGroups||[],w=t?.sharedGroups||[],D=t?.groupSummaries||[],A=t?.plainCcsLane||null,$=l.filter(H=>H.context_inferred||H.continuity_inferred),T=$.length,U=T>0,f=()=>x("/cliproxy?provider=claude"),I=()=>x("/cliproxy?provider=claude&action=auth"),_=()=>s.mutate($);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden h-full min-h-0 lg:flex",children:[e.jsxs("div",{className:"w-80 border-r flex flex-col bg-muted/20 shrink-0",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xs,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"font-semibold",children:a("accountsPage.title")})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[a("accountsPage.managePrefix"),e.jsx("code",{className:"mx-1 rounded bg-muted px-1 py-0.5",children:"ccs auth"}),a("accountsPage.manageSuffix")]})]}),e.jsx(Be,{className:"flex-1",children:e.jsxs("div",{className:"p-4 space-y-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-wide text-muted-foreground",children:a("accountsPage.primaryActions")}),e.jsxs(p,{size:"sm",className:"w-full justify-start",onClick:()=>r(!0),children:[e.jsx(de,{className:"w-4 h-4 mr-2"}),a("accountsPage.createAccount")]}),e.jsxs(p,{size:"sm",className:"w-full justify-start",onClick:I,children:[e.jsx(le,{className:"w-4 h-4 mr-2"}),a("accountsPage.authClaudeInPool")]}),e.jsxs(p,{variant:"outline",size:"sm",className:"w-full justify-start",onClick:f,children:[a("accountsPage.openClaudePoolSettings"),e.jsx(B,{className:"w-4 h-4 ml-auto"})]})]}),U?e.jsxs("section",{className:"space-y-2",children:[e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-wide text-muted-foreground",children:a("accountsPage.migrationFollowup")}),e.jsxs("div",{className:"rounded-md border border-amber-500/50 bg-amber-500/10 p-3 space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(X,{className:"h-4 w-4 mt-0.5 text-amber-700 dark:text-amber-400 shrink-0"}),e.jsxs("div",{className:"space-y-1 text-xs",children:[b>0&&e.jsx("p",{className:"text-amber-800 dark:text-amber-300",children:a("accountsPage.legacyContextPending",{count:b})}),h>0&&e.jsx("p",{className:"text-amber-800 dark:text-amber-300",children:a("accountsPage.legacyContinuityPending",{count:h})})]})]}),e.jsx(p,{variant:"secondary",size:"sm",className:"w-full justify-start",onClick:_,disabled:s.isPending||T===0,children:s.isPending?a("accountsPage.confirmingLegacy"):a("accountsPage.confirmLegacy",{count:T})})]})]}):e.jsx("div",{className:"rounded-md border bg-background px-3 py-2 text-xs text-muted-foreground",children:a("accountsPage.noLegacyFollowup")}),e.jsxs(O,{children:[e.jsxs(M,{className:"pb-2",children:[e.jsx(z,{className:"text-sm",children:a("accountsPage.quickCommands")}),e.jsx(F,{children:a("accountsPage.quickCommandsDesc")})]}),e.jsxs(G,{className:"space-y-2",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:"ccs auth create work --share-context --context-group sprint-a --deeper-continuity"}),e.jsx(P,{value:"ccs auth create work --share-context --context-group sprint-a --deeper-continuity",size:"icon"})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-2 font-mono text-[11px] flex items-start gap-2",children:[e.jsx("span",{className:"flex-1 break-all",children:"ccs cliproxy auth claude"}),e.jsx(P,{value:"ccs cliproxy auth claude",size:"icon"})]})]})]})]})})]}),e.jsxs("div",{className:"flex-1 min-w-0 flex flex-col bg-background",children:[e.jsxs("div",{className:"px-5 py-4 border-b bg-background",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C,{variant:"outline",children:a("accountsPage.workspaceBadge")}),e.jsx(C,{variant:"secondary",children:a("accountsPage.historySyncBadge")}),e.jsx(C,{variant:"secondary",children:a("accountsPage.resourcesBadge")})]}),e.jsx("h2",{className:"mt-2 text-xl font-semibold tracking-tight",children:a("accountsPage.authAccounts")}),e.jsxs("p",{className:"mt-1 text-sm text-muted-foreground",children:[a("accountsPage.tableScopePrefix"),e.jsx("code",{className:"mx-1 rounded bg-muted px-1 py-0.5",children:"ccs auth"}),a("accountsPage.tableScopeMiddle"),e.jsx("code",{className:"mx-1 rounded bg-muted px-1 py-0.5",children:a("accountsTable.sync")}),a("accountsPage.tableScopeSuffix")]})]}),e.jsxs("div",{className:"flex-1 min-h-0 p-5 space-y-4 overflow-y-auto",children:[e.jsx(he,{totalAccounts:l.length,primaryAccountName:l.length===1?l[0]?.name:null,isolatedCount:N,sharedStandardCount:d,deeperSharedCount:c,sharedAloneCount:j,sharedPeerAccountCount:y,deeperReadyAccountCount:n,sharedGroups:w,sharedPeerGroups:o,deeperReadyGroups:i,legacyTargetCount:T,cliproxyCount:g,plainCcsLane:A}),e.jsx(me,{totalAccounts:l.length,isolatedCount:N,sharedPeerGroups:o,deeperReadyGroups:i}),e.jsxs(O,{className:"flex flex-col",children:[e.jsxs(M,{className:"pb-3",children:[e.jsx(z,{className:"text-lg",children:a("accountsPage.accountMatrix")}),e.jsx(F,{children:a("accountsPage.sharedTotalDesc",{count:v})})]}),e.jsx(G,{children:m?e.jsx("div",{className:"text-muted-foreground",children:a("accountsPage.loadingAccounts")}):e.jsx(ue,{data:l,defaultAccount:t?.default??null,groupSummaries:D,plainCcsLane:A})})]})]})]})]}),e.jsxs("div",{className:"p-4 space-y-4 lg:hidden",children:[e.jsxs(O,{children:[e.jsxs(M,{children:[e.jsx(z,{className:"text-lg",children:a("accountsPage.title")}),e.jsxs(F,{children:[a("accountsPage.managePrefix"),e.jsx("code",{className:"mx-1 rounded bg-muted px-1 py-0.5",children:"ccs auth"}),a("accountsPage.mobileManageSuffix")]})]}),e.jsxs(G,{className:"space-y-2",children:[e.jsxs(p,{className:"w-full",onClick:()=>r(!0),children:[e.jsx(de,{className:"w-4 h-4 mr-2"}),a("accountsPage.createAccount")]}),e.jsxs(p,{variant:"outline",className:"w-full",onClick:f,children:[a("accountsPage.openCliProxyClaudePool"),e.jsx(B,{className:"w-4 h-4 ml-2"})]}),e.jsxs(p,{variant:"outline",className:"w-full",onClick:I,children:[a("accountsPage.authClaudeInPool"),e.jsx(le,{className:"w-4 h-4 ml-2"})]}),e.jsx(p,{variant:"outline",className:"w-full",onClick:_,disabled:s.isPending||T===0,children:s.isPending?a("accountsPage.confirmingLegacy"):a("accountsPage.confirmLegacy",{count:T})})]})]}),e.jsx(he,{totalAccounts:l.length,primaryAccountName:l.length===1?l[0]?.name:null,isolatedCount:N,sharedStandardCount:d,deeperSharedCount:c,sharedAloneCount:j,sharedPeerAccountCount:y,deeperReadyAccountCount:n,sharedGroups:w,sharedPeerGroups:o,deeperReadyGroups:i,legacyTargetCount:T,cliproxyCount:g,plainCcsLane:A}),e.jsx(me,{totalAccounts:l.length,isolatedCount:N,sharedPeerGroups:o,deeperReadyGroups:i}),e.jsxs(O,{children:[e.jsx(M,{className:"pb-3",children:e.jsx(z,{className:"text-base",children:a("accountsPage.accountMatrix")})}),e.jsx(G,{children:m?e.jsx("div",{className:"text-muted-foreground",children:a("accountsPage.loadingAccounts")}):e.jsx(ue,{data:l,defaultAccount:t?.default??null,groupSummaries:D,plainCcsLane:A})})]})]}),e.jsx(gs,{open:u,onClose:()=>r(!1)})]})}export{Ts as AccountsPage};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./radix-ui-nu4wz29m.js";import{r as m,e as Xe}from"./react-vendor-Bjx91N7w.js";import{a as _,B as Q,c as I,o as Ze,p as es,q as ss,j as ts,k as as,l as rs,m as ns,n as pe,e as N,x as le,L,I as B,z as Y,A as Ae,D as is,E as os,F as ls,G as cs,S as we,H as te,J as fe,K as Me,M as ds,N as ms,O as Le,Q as Qe,R as Fe,U as us,V as xs,W as Ce,X as ke,Y as ae,Z as hs,_ as Ie,$ as be,C as He,b as Ue,s as ps,t as gs,a0 as fs,d as js,a1 as Ns,a2 as vs,a3 as bs,a4 as ws,a5 as Cs,a6 as ks,a7 as ys,a8 as Ss}from"./index-DFYK4jw3.js";import{a as Ps,u as je,b as ye}from"./tanstack-bhJxV1h8.js";import{C as Ne}from"./confirm-dialog-CjwyQ3AU.js";import{t as T}from"./notifications-B4_o8bcr.js";import{L as re,R as Z,at as Be,au as Os,a9 as ne,_ as Es,av as ze,aa as ie,C as Ke,aw as Ts,a7 as Rs,ax as Ds,p as oe,X as $e,ay as _s,Z as Je,az as qe,n as Se,aA as Pe,aB as As,aC as ge,a6 as Ms,aD as ve,ae as Ls,aE as Qs,w as Ye,aF as Fs,x as We,o as Is,aG as Hs}from"./icons-gI6odJjU.js";import{M as Ge}from"./masked-input-BZdCgWmH.js";import"./utils-CzKF5WmX.js";import"./form-utils-CuHzLhJZ.js";import"./charts-eIPy2oG6.js";import"./alert-dialog-Dgbg5gJ1.js";function Us({className:s,showTooltip:a=!0}){const{t:r}=_(),n=e.jsxs(Q,{variant:"outline",className:I("bg-accent/10 border-accent/30 text-accent","dark:bg-accent/20 dark:border-accent/40 dark:text-accent-foreground",s),children:[e.jsx("img",{src:"/icons/openrouter.svg",alt:"OpenRouter",className:"mr-1 h-3 w-3"}),"OpenRouter"]});return a?e.jsxs(Ze,{children:[e.jsx(es,{asChild:!0,children:n}),e.jsx(ss,{children:e.jsx("p",{children:r("openrouterBadge.integration")})})]}):n}function Oe(s){return[/^ANTHROPIC_AUTH_TOKEN$/,/_API_KEY$/,/_AUTH_TOKEN$/,/^API_KEY$/,/^AUTH_TOKEN$/,/_SECRET$/,/^SECRET$/].some(r=>r.test(s))}function Ve(s){return s?.env?(s.env.ANTHROPIC_BASE_URL||"").toLowerCase().includes("openrouter.ai"):!1}function Bs(s){return{opus:s.ANTHROPIC_DEFAULT_OPUS_MODEL||void 0,sonnet:s.ANTHROPIC_DEFAULT_SONNET_MODEL||void 0,haiku:s.ANTHROPIC_DEFAULT_HAIKU_MODEL||void 0}}function zs(s,a){const r={...s};return a.opus?r.ANTHROPIC_DEFAULT_OPUS_MODEL=a.opus:delete r.ANTHROPIC_DEFAULT_OPUS_MODEL,a.sonnet?r.ANTHROPIC_DEFAULT_SONNET_MODEL=a.sonnet:delete r.ANTHROPIC_DEFAULT_SONNET_MODEL,a.haiku?r.ANTHROPIC_DEFAULT_HAIKU_MODEL=a.haiku:delete r.ANTHROPIC_DEFAULT_HAIKU_MODEL,r}function Ks({profileName:s,target:a,data:r,settings:n,isLoading:i,isSaving:p,isTargetSaving:f,hasChanges:g,isRawJsonValid:t,onTargetChange:u,onRefresh:x,onDelete:j,onSave:P}){const{t:w}=_(),O=p||f,k=i||O;return e.jsxs("div",{className:"px-6 py-4 border-b bg-background flex items-center justify-between shrink-0",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{className:"text-lg font-semibold",children:s}),r?.path&&e.jsx(Q,{variant:"outline",className:"text-xs",children:r.path.replace(/^.*\//,"")}),Ve(n)&&e.jsx(Us,{className:"ml-1"})]}),r&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5",children:[w("profileEditor.lastModified"),": ",new Date(r.mtime).toLocaleString()]}),e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:[w("profileEditor.defaultTarget"),":"]}),e.jsxs(ts,{value:a,onValueChange:y=>{k||u(y)},disabled:k,children:[e.jsx(as,{className:"h-7 w-[170px] text-xs",disabled:k,children:e.jsx(rs,{})}),e.jsxs(ns,{children:[e.jsx(pe,{value:"claude",children:w("profileEditor.targetClaude")}),e.jsx(pe,{value:"droid",children:w("profileEditor.targetDroid")}),e.jsx(pe,{value:"codex",children:w("profileEditor.targetCodex")})]})]}),f&&e.jsx(re,{className:"w-3.5 h-3.5 animate-spin text-muted-foreground"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"ghost",size:"sm",onClick:x,disabled:k,children:e.jsx(Z,{className:`w-4 h-4 ${i?"animate-spin":""}`})}),j&&e.jsx(N,{variant:"ghost",size:"sm",onClick:j,disabled:O,children:e.jsx(Be,{className:"w-4 h-4 text-destructive"})}),e.jsx(N,{size:"sm",onClick:P,disabled:O||!g||!t,children:p?e.jsxs(e.Fragment,{children:[e.jsx(re,{className:"w-4 h-4 mr-1 animate-spin"}),w("profileEditor.saving")]}):e.jsxs(e.Fragment,{children:[e.jsx(Os,{className:"w-4 h-4 mr-1"}),w("settingsAuth.save")]})})]})]})}function $s({currentSettings:s,newEnvKey:a,newEnvValue:r,onNewEnvKeyChange:n,onNewEnvValueChange:i,onEnvValueChange:p,onAddEnvVar:f}){const{t:g}=_();return e.jsxs(e.Fragment,{children:[e.jsx(le,{className:"flex-1",children:e.jsx("div",{className:"p-4 space-y-4",children:s?.env&&Object.keys(s.env).length>0?e.jsx(e.Fragment,{children:Object.entries(s.env).map(([t,u])=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(L,{className:"text-xs font-medium flex items-center gap-2 text-muted-foreground",children:[t,Oe(t)&&e.jsx(Q,{variant:"secondary",className:"text-[10px] px-1 py-0 h-4",children:g("envEditor.sensitive")})]}),Oe(t)?e.jsx(Ge,{value:u,onChange:x=>p(t,x.target.value),className:"font-mono text-sm h-8"}):e.jsx(B,{value:u,onChange:x=>p(t,x.target.value),className:"font-mono text-sm h-8"})]},t))}):e.jsxs("div",{className:"py-8 text-center text-muted-foreground bg-muted/30 rounded-lg border border-dashed text-sm",children:[e.jsx("p",{children:g("envEditor.none")}),e.jsx("p",{className:"text-xs mt-1 opacity-70",children:g("envEditor.noneHint")})]})})}),e.jsxs("div",{className:"p-4 border-t bg-background shrink-0",children:[e.jsx(L,{className:"text-xs font-medium text-muted-foreground",children:g("envEditor.addVariable")}),e.jsxs("div",{className:"flex gap-2 mt-2",children:[e.jsx(B,{placeholder:g("envEditor.keyPlaceholder"),value:a,onChange:t=>n(t.target.value.toUpperCase()),className:"font-mono text-sm h-8 w-2/5",onKeyDown:t=>t.key==="Enter"&&a.trim()&&f()}),e.jsx(B,{placeholder:g("envEditor.valuePlaceholder"),value:r,onChange:t=>i(t.target.value),className:"font-mono text-sm h-8 flex-1",onKeyDown:t=>t.key==="Enter"&&a.trim()&&f()}),e.jsx(N,{variant:"outline",size:"sm",className:"h-8",onClick:f,disabled:!a.trim(),children:e.jsx(ne,{className:"w-4 h-4"})})]})]})]})}function Js({profileName:s,target:a,data:r}){const{t:n}=_(),i=a==="droid";return e.jsx(le,{className:"h-full",children:e.jsxs("div",{className:"p-4 space-y-6",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"text-sm font-medium flex items-center gap-2 mb-3",children:[e.jsx(Es,{className:"w-4 h-4"}),n("profileEditor.profileInfo")]}),e.jsx("div",{className:"space-y-3 bg-card rounded-lg border p-4 shadow-sm",children:r&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-[100px_1fr] gap-2 text-sm items-center",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:n("profileEditor.profileName")}),e.jsx("span",{className:"font-mono",children:r.profile})]}),e.jsxs("div",{className:"grid grid-cols-[100px_1fr] gap-2 text-sm items-center",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:n("profileEditor.filePath")}),e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-xs break-all",children:r.path}),e.jsx(Y,{value:r.path,size:"icon",className:"h-5 w-5"})]})]}),e.jsxs("div",{className:"grid grid-cols-[100px_1fr] gap-2 text-sm items-center",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:n("profileEditor.lastModified")}),e.jsx("span",{className:"text-xs",children:new Date(r.mtime).toLocaleString()})]}),e.jsxs("div",{className:"grid grid-cols-[100px_1fr] gap-2 text-sm items-center",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:n("profileEditor.defaultTarget")}),e.jsx("span",{className:"font-mono",children:a})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium mb-3",children:n("profileEditor.quickUsage")}),e.jsxs("div",{className:"space-y-3 bg-card rounded-lg border p-4 shadow-sm",children:[e.jsxs("div",{children:[e.jsx(L,{className:"text-xs text-muted-foreground",children:n("profileEditor.runWithProfile")}),e.jsxs("div",{className:"mt-1 flex gap-2",children:[e.jsxs("code",{className:"flex-1 px-2 py-1.5 bg-muted rounded text-xs font-mono truncate",children:["ccs ",s,' "prompt"']}),e.jsx(Y,{value:`ccs ${s} "prompt"`,size:"icon",className:"h-6 w-6"})]})]}),e.jsxs("div",{children:[e.jsx(L,{className:"text-xs text-muted-foreground",children:n(i?"profileEditor.droidAliasExplicit":"profileEditor.runOnDroid")}),e.jsxs("div",{className:"mt-1 flex gap-2",children:[e.jsx("code",{className:"flex-1 px-2 py-1.5 bg-muted rounded text-xs font-mono truncate",children:`ccs-droid ${s} "prompt"`}),e.jsx(Y,{value:`ccs-droid ${s} "prompt"`,size:"icon",className:"h-6 w-6"})]})]}),e.jsxs("div",{children:[e.jsx(L,{className:"text-xs text-muted-foreground",children:n(i?"profileEditor.overrideToClaude":"profileEditor.runOnDroidWithFlag")}),e.jsxs("div",{className:"mt-1 flex gap-2",children:[e.jsxs("code",{className:"flex-1 px-2 py-1.5 bg-muted rounded text-xs font-mono truncate",children:["ccs ",s," --target ",i?"claude":"droid",' "prompt"']}),e.jsx(Y,{value:`ccs ${s} --target ${i?"claude":"droid"} "prompt"`,size:"icon",className:"h-6 w-6"})]})]}),e.jsxs("div",{children:[e.jsx(L,{className:"text-xs text-muted-foreground",children:n("profileEditor.setAsDefault")}),e.jsxs("div",{className:"mt-1 flex gap-2",children:[e.jsxs("code",{className:"flex-1 px-2 py-1.5 bg-muted rounded text-xs font-mono truncate",children:["ccs default ",s]}),e.jsx(Y,{value:`ccs default ${s}`,size:"icon",className:"h-6 w-6"})]})]})]})]})]})})}function qs({value:s,onChange:a,placeholder:r,className:n}){const{t:i}=_(),[p,f]=m.useState(""),[g,t]=m.useState(null),{models:u,isLoading:x,isError:j,isFetching:P}=Ae(),w=is(),O=m.useMemo(()=>os(u,p,{category:g??void 0}),[u,p,g]),k=m.useMemo(()=>ls(u,2),[u]),y=!p.trim()&&!g,v=m.useMemo(()=>{const l={anthropic:[],openai:[],google:[],meta:[],mistral:[],opensource:[],other:[]};O.forEach(h=>{l[h.category].push(h)});for(const h of Object.keys(l))l[h]=cs(l[h]);return l},[O]),R=m.useCallback(()=>{w()},[w]),b=u.find(l=>l.id===s);return x&&u.length===0?e.jsxs("div",{className:I("space-y-2",n),children:[e.jsx(we,{className:"h-10 w-full"}),e.jsx(we,{className:"h-32 w-full"})]}):e.jsxs("div",{className:I("space-y-2 w-full min-w-0 overflow-hidden",n),children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ze,{className:"text-muted-foreground absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2"}),e.jsx(B,{value:p,onChange:l=>f(l.target.value),placeholder:r??i("openrouterModelPicker.searchModels"),className:"pl-9"})]}),e.jsx(N,{variant:"outline",size:"icon",onClick:R,disabled:P,title:"Refresh models",children:P?e.jsx(re,{className:"h-4 w-4 animate-spin"}):e.jsx(Z,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs(Q,{variant:g===null?"default":"outline",className:"cursor-pointer",onClick:()=>t(null),children:["All (",u.length,")"]}),Object.keys(te).map(l=>{const h=v[l].length;return h===0?null:e.jsxs(Q,{variant:g===l?"default":"outline",className:"cursor-pointer",onClick:()=>t(l),children:[te[l]," (",h,")"]},l)})]}),b&&e.jsxs("div",{className:"bg-muted rounded-md p-2 text-sm",children:[e.jsx("span",{className:"font-medium",children:b.name}),e.jsxs("span",{className:"text-muted-foreground ml-2",children:[fe(b.pricing)," |"," ",Me(b.context_length)]})]}),e.jsx(le,{className:"h-72 w-full rounded-md border",children:j?e.jsxs("div",{className:"text-destructive p-4 text-center",children:["Failed to load models."," ",e.jsx(N,{variant:"link",onClick:R,children:"Retry"})]}):O.length===0?e.jsxs("div",{className:"text-muted-foreground p-4 text-center",children:['No models found matching "',p,'"']}):e.jsxs("div",{className:"space-y-6 p-3",children:[y&&k.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"text-muted-foreground bg-background sticky top-0 mb-2 flex items-center gap-1.5 py-1.5 text-xs font-semibold border-b pb-2",children:[e.jsx(ie,{className:"h-3 w-3 text-accent"}),e.jsx("span",{children:i("openrouterModelPicker.newestModels")})]}),e.jsx("div",{className:"space-y-1",children:k.map(l=>e.jsx(Ee,{model:l,isSelected:l.id===s,onClick:()=>a(l.id),showAge:!0},l.id))})]}),Object.keys(te).map(l=>{const h=v[l];return h.length===0?null:e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground bg-background sticky top-0 mb-2 py-1.5 text-xs font-semibold border-b pb-2",children:te[l]}),e.jsx("div",{className:"space-y-1",children:h.map(c=>e.jsx(Ee,{model:c,isSelected:c.id===s,onClick:()=>a(c.id)},c.id))})]},l)})]})})]})}function Ee({model:s,isSelected:a,onClick:r,showAge:n=!1}){return e.jsxs("button",{type:"button",onClick:r,className:I("group flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm transition-colors","hover:bg-accent hover:text-accent-foreground",a&&"bg-accent text-accent-foreground"),children:[e.jsx("span",{className:"flex-1 min-w-0 truncate font-medium",children:s.name}),e.jsxs("span",{className:I("flex shrink-0 items-center gap-1 text-xs whitespace-nowrap",a?"text-accent-foreground/80":"text-muted-foreground group-hover:text-accent-foreground/80"),children:[n&&s.created&&e.jsx(Q,{variant:"outline",className:I("text-[10px] px-1",a?"border-accent-foreground/30 text-accent-foreground/80":"text-accent border-accent/30 group-hover:text-accent-foreground/80 group-hover:border-accent-foreground/30"),children:ds(s.created)}),s.isFree?e.jsx(Q,{variant:"secondary",className:I("text-[10px] px-1",a?"bg-accent-foreground/20 text-accent-foreground":"group-hover:bg-accent-foreground/20 group-hover:text-accent-foreground"),children:"Free"}):s.isExacto?e.jsxs(e.Fragment,{children:[e.jsx(Q,{variant:"outline",className:I("text-[10px] px-1 border-emerald-500/50 text-emerald-600",a?"border-accent-foreground/30 text-accent-foreground/80":"group-hover:border-accent-foreground/30 group-hover:text-accent-foreground/80"),children:"Exacto"}),e.jsx("span",{className:"tabular-nums",children:fe(s.pricing)})]}):e.jsx("span",{className:"tabular-nums",children:fe(s.pricing)}),e.jsx("span",{className:"tabular-nums",children:Me(s.context_length)})]})]})}function Ys({selectedModel:s,value:a,onChange:r,className:n}){const{t:i}=_(),{models:p}=Ae(),f=m.useMemo(()=>s?ms(s,p):{},[s,p]),g=()=>{r(f)},t=(x,j)=>{r({...a,[x]:j||void 0})},u=s&&Object.keys(f).length>0;return e.jsxs(Le,{className:I("group",n),children:[e.jsxs(Qe,{className:"flex items-center gap-2 text-sm font-medium hover:underline",children:[e.jsx(Ke,{className:"h-4 w-4 transition-transform group-data-[state=open]:rotate-90"}),i("modelTierMapping.title"),e.jsxs("span",{className:"text-muted-foreground font-normal",children:["(",i("modelTierMapping.advanced"),")"]})]}),e.jsxs(Fe,{className:"space-y-3 pt-3",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:i("modelTierMapping.description")}),u&&e.jsxs(N,{type:"button",variant:"outline",size:"sm",onClick:g,children:[e.jsx(Ts,{className:"mr-1 h-4 w-4"}),i("modelTierMapping.autoSuggest",{provider:s?.split("/")[0]})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"grid grid-cols-[80px_1fr] items-center gap-2",children:[e.jsx(L,{htmlFor:"tier-opus",className:"text-right",children:"Opus"}),e.jsx(B,{id:"tier-opus",value:a.opus??"",onChange:x=>t("opus",x.target.value),placeholder:i("modelTierMapping.opusPlaceholder")})]}),e.jsxs("div",{className:"grid grid-cols-[80px_1fr] items-center gap-2",children:[e.jsx(L,{htmlFor:"tier-sonnet",className:"text-right",children:"Sonnet"}),e.jsx(B,{id:"tier-sonnet",value:a.sonnet??"",onChange:x=>t("sonnet",x.target.value),placeholder:i("modelTierMapping.sonnetPlaceholder")})]}),e.jsxs("div",{className:"grid grid-cols-[80px_1fr] items-center gap-2",children:[e.jsx(L,{htmlFor:"tier-haiku",className:"text-right",children:"Haiku"}),e.jsx(B,{id:"tier-haiku",value:a.haiku??"",onChange:x=>t("haiku",x.target.value),placeholder:i("modelTierMapping.haikuPlaceholder")})]})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:i("modelTierMapping.footer")})]})]})}function Ws({profileName:s,target:a,data:r,currentSettings:n,newEnvKey:i,newEnvValue:p,onNewEnvKeyChange:f,onNewEnvValueChange:g,onEnvValueChange:t,onAddEnvVar:u,onEnvBulkChange:x}){const{t:j}=_(),P=Ve(n),w=n?.env,O=m.useMemo(()=>Bs(w??{}),[w]),k=w??{},y=c=>{if(x){const H={...k,ANTHROPIC_MODEL:c,ANTHROPIC_DEFAULT_OPUS_MODEL:c,ANTHROPIC_DEFAULT_SONNET_MODEL:c,ANTHROPIC_DEFAULT_HAIKU_MODEL:c};x(H)}else t("ANTHROPIC_MODEL",c),t("ANTHROPIC_DEFAULT_OPUS_MODEL",c),t("ANTHROPIC_DEFAULT_SONNET_MODEL",c),t("ANTHROPIC_DEFAULT_HAIKU_MODEL",c);T.success(ae.t("commonToast.appliedModelAllTiers"),{duration:2e3})},v=c=>{if(x){const H=zs(k,c);x(H)}else c.opus!==void 0&&t("ANTHROPIC_DEFAULT_OPUS_MODEL",c.opus||""),c.sonnet!==void 0&&t("ANTHROPIC_DEFAULT_SONNET_MODEL",c.sonnet||""),c.haiku!==void 0&&t("ANTHROPIC_DEFAULT_HAIKU_MODEL",c.haiku||"")},[R,b]=m.useState(!1),l=new Set(["ANTHROPIC_AUTH_TOKEN"]),h=Object.entries(k).filter(([c])=>!l.has(c));return e.jsx("div",{className:"h-full w-full min-w-0 flex flex-col",children:e.jsxs(us,{defaultValue:"env",className:"h-full w-full min-w-0 flex flex-col",children:[e.jsx("div",{className:"px-4 pt-4 shrink-0",children:e.jsxs(xs,{className:"w-full",children:[e.jsx(Ce,{value:"env",className:"flex-1",children:P?"Configuration":j("settingsDialog.envTab")}),e.jsx(Ce,{value:"info",className:"flex-1",children:"Info & Usage"})]})}),e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-col min-w-0",children:[e.jsx(ke,{value:"env",className:"flex-1 mt-0 border-0 p-0 data-[state=inactive]:hidden flex flex-col overflow-hidden min-w-0",children:P?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsxs("div",{className:"h-full overflow-y-auto overflow-x-hidden p-4 space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(L,{className:"text-sm font-medium",children:"Model Selection"}),e.jsx(qs,{value:k.ANTHROPIC_MODEL,onChange:y,placeholder:"Search OpenRouter models..."})]}),e.jsx(Ys,{selectedModel:k.ANTHROPIC_MODEL,value:O,onChange:v}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(L,{className:"text-sm font-medium",children:j("profileDialog.apiKey")}),e.jsx(Ge,{value:k.ANTHROPIC_AUTH_TOKEN||"",onChange:c=>t("ANTHROPIC_AUTH_TOKEN",c.target.value),placeholder:"sk-or-v1-...",className:"font-mono text-sm"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Get your API key from"," ",e.jsx("a",{href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"openrouter.ai/keys"})]})]}),h.length>0&&e.jsxs(Le,{open:R,onOpenChange:b,children:[e.jsxs(Qe,{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors group",children:[e.jsx(Ke,{className:I("h-4 w-4 transition-transform",R&&"rotate-90")}),e.jsx(Rs,{className:"h-4 w-4"}),e.jsx("span",{children:"Additional Variables"}),e.jsxs("span",{className:"text-xs font-normal opacity-70",children:["(",h.length,")"]})]}),e.jsx(Fe,{className:"pt-4",children:e.jsx("div",{className:"space-y-3 border rounded-lg p-3 bg-muted/30",children:h.map(([c,H])=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs text-muted-foreground",children:c}),e.jsx(B,{value:H,onChange:J=>t(c,J.target.value),className:"font-mono text-xs h-8"})]},c))})})]})]})}),e.jsxs("div",{className:"p-4 border-t bg-background shrink-0",children:[e.jsx(L,{className:"text-xs font-medium text-muted-foreground",children:j("envEditor.addVariable")}),e.jsxs("div",{className:"flex gap-2 mt-2",children:[e.jsx(B,{placeholder:j("envEditor.keyPlaceholder"),value:i,onChange:c=>f(c.target.value.toUpperCase()),className:"font-mono text-sm h-8 w-2/5",onKeyDown:c=>c.key==="Enter"&&i.trim()&&u()}),e.jsx(B,{placeholder:j("envEditor.valuePlaceholder"),value:p,onChange:c=>g(c.target.value),className:"font-mono text-sm h-8 flex-1",onKeyDown:c=>c.key==="Enter"&&i.trim()&&u()}),e.jsx(N,{variant:"outline",size:"sm",className:"h-8",onClick:u,disabled:!i.trim(),children:e.jsx(ne,{className:"w-4 h-4"})})]})]})]}):e.jsx($s,{currentSettings:n,newEnvKey:i,newEnvValue:p,onNewEnvKeyChange:f,onNewEnvValueChange:g,onEnvValueChange:t,onAddEnvVar:u})}),e.jsx(ke,{value:"info",className:"h-full mt-0 border-0 p-0 data-[state=inactive]:hidden",children:e.jsx(Js,{profileName:s,target:a,data:r})})]})]})})}function Gs({profileName:s,profileTarget:a,onDelete:r,onHasChangesUpdate:n}){const{t:i}=_(),[p,f]=m.useState({}),[g,t]=m.useState(!1),[u,x]=m.useState(null),[j,P]=m.useState(""),[w,O]=m.useState(""),k=Ps(),{data:y,isLoading:v,isError:R,refetch:b}=je({queryKey:["settings",s],queryFn:async()=>{const d=await fetch(`/api/settings/${s}/raw`);if(!d.ok)throw new Error(`Failed to load settings: ${d.status}`);return d.json()}}),l=y?.settings,h=m.useMemo(()=>{if(u!==null)try{return JSON.parse(u)}catch{}if(l)return{...l,env:{...l.env,...p}}},[l,p,u]),c=m.useMemo(()=>u!==null?u:l?JSON.stringify(l,null,2):"",[u,l]),H=m.useCallback(d=>{x(d)},[]),J=m.useCallback(d=>{const C={...h??{}},M=C.ccs_image&&typeof C.ccs_image=="object"?{...C.ccs_image}:{};d?M.native_read=!0:delete M.native_read,Object.keys(M).length>0?C.ccs_image=M:delete C.ccs_image,x(JSON.stringify(C,null,2))},[h]),q=(d,C)=>{const M={...h?.env||{},[d]:C};f(V=>({...V,[d]:C})),x(JSON.stringify({...h,env:M},null,2))},ee=d=>{const C={...h?.env||{},...d};f(M=>({...M,...d})),x(JSON.stringify({...h,env:C},null,2))},U=()=>{if(!j.trim())return;const d=j.trim(),C=w,M={...h?.env||{},[d]:C};f(V=>({...V,[d]:C})),x(JSON.stringify({...h,env:M},null,2)),P(""),O("")},z=m.useMemo(()=>{try{return JSON.parse(c),!0}catch{return!1}},[c]),S=m.useMemo(()=>u!==null?u!==JSON.stringify(l,null,2):Object.keys(p).length>0,[u,p,l]),$=m.useDeferredValue(c),se=m.useMemo(()=>{if(!S||!z)return null;try{return JSON.parse($)}catch{return null}},[S,z,$]),{data:W,isFetching:ce,isError:G,isPlaceholderData:de}=je({queryKey:["settings",s,"image-analysis-status-preview",$],enabled:se!==null,placeholderData:d=>d,queryFn:async()=>{const d=await fetch(`/api/settings/${s}/image-analysis-status`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:se})});if(!d.ok)throw new Error(`Failed to preview image-analysis status: ${d.status}`);return d.json()}}),me=S&&z&&!G?W?.imageAnalysisStatus??y?.imageAnalysisStatus:y?.imageAnalysisStatus,ue=S&&z&&!G&&W?.imageAnalysisStatus?"editor":"saved",xe=S?z?G?"saved":ce&&(!W?.imageAnalysisStatus||de)?"refreshing":"preview":"invalid":"saved",he=h?.ccs_image?.native_read===!0,o=m.useMemo(()=>{const d=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],C=h?.env||{};return d.filter(M=>!C[M]?.trim())},[h]);m.useEffect(()=>{n?.(S)},[S,n]);const D=ye({mutationFn:async()=>{let d;try{d=JSON.parse(c)}catch{d={...y?.settings,env:{...y?.settings?.env,...p}}}const C=await fetch(`/api/settings/${s}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:d,expectedMtime:y?.mtime})});if(C.status===409)throw new Error("CONFLICT");if(!C.ok)throw new Error("Failed to save");return C.json()},onSuccess:()=>{k.invalidateQueries({queryKey:["settings",s]}),k.invalidateQueries({queryKey:["profiles"]}),f({}),x(null),T.success(ae.t("commonToast.settingsSaved"))},onError:d=>{d.message==="CONFLICT"?t(!0):T.error(d.message)}}),E=ye({mutationFn:async d=>(await Ie.profiles.update(s,{target:d}),d),onSuccess:()=>{k.invalidateQueries({queryKey:["profiles"]}),T.success(ae.t("commonToast.defaultTargetUpdated"))},onError:(d,C)=>{const M=C==="droid"?"Factory Droid":C==="codex"?"Codex CLI":"Claude Code",V=d.message.trim()?`: ${d.message}`:"";T.error(ae.t("commonToast.failedUpdateDefaultTarget",{target:M,suffix:V}))}}),F=a||"claude",A=D.isPending||E.isPending,K=async d=>{t(!1),d?(await b(),D.mutate()):(f({}),x(null))};return e.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[e.jsx(Ks,{profileName:s,target:F,data:y,settings:h,isLoading:v,isSaving:D.isPending,isTargetSaving:E.isPending,hasChanges:S,isRawJsonValid:z,onTargetChange:d=>{A||d!==F&&E.mutate(d)},onRefresh:()=>{A||b()},onDelete:r,onSave:()=>{A||D.mutate()}}),v?e.jsxs("div",{className:"flex-1 flex items-center justify-center",children:[e.jsx(re,{className:"w-8 h-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:i("settingsDialog.loadingSettings")})]}):R?e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"text-center space-y-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:i("settingsPage.failedLoad")}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>b(),children:[e.jsx(Z,{className:"w-4 h-4 mr-1"}),i("apiProfiles.retry")]})]})}):e.jsxs("div",{className:"min-h-0 flex-1 grid grid-cols-[40%_60%] divide-x overflow-hidden",children:[e.jsx("div",{className:"flex min-h-0 min-w-0 flex-col overflow-hidden bg-muted/5",children:e.jsx(Ws,{profileName:s,target:F,data:y,currentSettings:h,newEnvKey:j,newEnvValue:w,onNewEnvKeyChange:P,onNewEnvValueChange:O,onEnvValueChange:q,onEnvBulkChange:ee,onAddEnvVar:U})}),e.jsxs("div",{className:"flex min-h-0 min-w-0 flex-col overflow-hidden",children:[e.jsxs("div",{className:"px-6 py-2 bg-muted/30 border-b flex items-center gap-2 shrink-0 h-[45px]",children:[e.jsx(Ds,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:i("rawEditorSection.rawConfig")})]}),e.jsx(hs,{rawJsonContent:c,isRawJsonValid:z,rawJsonEdits:u,settings:l,profileTarget:F,imageAnalysisStatus:me,imageAnalysisStatusSource:ue,imageAnalysisStatusPreviewState:xe,nativeReadPreferenceOverride:he,onToggleNativeRead:J,onChange:H,missingRequiredFields:o})]})]}),e.jsx(Ne,{open:g,title:i("settingsDialog.conflictTitle"),description:i("settingsDialog.conflictDesc"),confirmText:i("settingsDialog.overwrite"),variant:"destructive",onConfirm:()=>K(!0),onCancel:()=>K(!1)})]},s)}const Te="ccs:openrouter-banner-dismissed";function Vs({onCreateClick:s}){const{t:a}=_(),[r,n]=m.useState(!0),{modelCount:i,isLoading:p}=be();m.useEffect(()=>{const g=localStorage.getItem(Te)==="true";n(g)},[]);const f=()=>{localStorage.setItem(Te,"true"),n(!0)};return r?null:e.jsx("div",{className:"bg-gradient-to-r from-accent to-accent/90 text-white px-4 py-3 relative shrink-0",children:e.jsxs("div",{className:"flex items-center justify-between gap-4 max-w-screen-xl mx-auto",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:"p-1.5 bg-white/20 rounded-md shrink-0",children:e.jsx(ie,{className:"w-4 h-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"font-medium text-sm",children:[a("openrouterBadge.new"),": ",a("openrouterBadge.integration")]}),e.jsx("p",{className:"text-xs text-white/80 truncate",children:a("openrouterBanner.accessModels",{count:p?300:i})})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s&&e.jsx(N,{size:"sm",variant:"secondary",onClick:s,className:"bg-white text-accent hover:bg-white/90 h-8",children:a("openrouterBanner.add")}),e.jsxs("a",{href:"https://openrouter.ai",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-white/80 hover:text-white hidden sm:flex items-center gap-1",children:["Learn more",e.jsx(oe,{className:"w-3 h-3"})]}),e.jsxs(N,{size:"icon",variant:"ghost",onClick:f,className:"h-7 w-7 text-white/70 hover:text-white hover:bg-white/20",children:[e.jsx($e,{className:"w-4 h-4"}),e.jsx("span",{className:"sr-only",children:"Dismiss"})]})]})]})})}function Xs(){return je({queryKey:["profiles","local-runtime-readiness"],queryFn:()=>Ie.profiles.getLocalRuntimeReadiness(),staleTime:15e3,refetchOnWindowFocus:!1})}function X({badge:s,badgeClassName:a,className:r,title:n,description:i,visual:p,highlights:f,actionLabel:g,actionClassName:t,onAction:u,footer:x}){return e.jsxs(He,{className:I("flex h-full flex-col border shadow-sm",r),children:[e.jsxs(ps,{className:"space-y-3 pb-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[p,e.jsx(Q,{variant:"secondary",className:a,children:s})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(gs,{className:"text-base",children:n}),e.jsx(fs,{className:"text-sm leading-6",children:i})]})]}),e.jsxs(Ue,{className:"mt-auto flex flex-1 flex-col gap-4 pt-0",children:[e.jsx("div",{className:"space-y-2 text-xs text-muted-foreground",children:f.map(j=>e.jsxs("div",{className:"flex items-center gap-2",children:[j.icon,e.jsx("span",{children:j.label})]},j.label))}),e.jsxs(N,{onClick:u,className:t,children:[g,e.jsx(Ms,{className:"ml-2 h-4 w-4"})]}),x?e.jsx("div",{className:"text-xs text-muted-foreground",children:x}):null]})]})}function Re(s,a,r){return s?s.status==="ready"?{badge:r("openrouterQuickStart.localRuntimeReadyBadge"),badgeClassName:"bg-emerald-500/10 text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200",actionLabel:r("openrouterQuickStart.localRuntimeUseAction",{label:a}),description:r("openrouterQuickStart.localRuntimeReadyDescription"),footer:r("openrouterQuickStart.localRuntimeReadyFooter",{endpoint:s.endpoint})}:s.status==="missing-model"?{badge:r("openrouterQuickStart.localRuntimeNeedsModelBadge"),badgeClassName:"bg-amber-500/10 text-amber-700 dark:bg-amber-500/20 dark:text-amber-200",actionLabel:r("openrouterQuickStart.localRuntimeFinishAction",{label:a}),description:r("openrouterQuickStart.localRuntimeNeedsModelDescription"),footer:r("openrouterQuickStart.localRuntimeMissingModelFooter",{command:s.commandHint})}:{badge:r("openrouterQuickStart.localRuntimeOfflineBadge"),badgeClassName:"bg-muted text-muted-foreground",actionLabel:r("openrouterQuickStart.localRuntimeSetupAction",{label:a}),description:r("openrouterQuickStart.localRuntimeOfflineDescription"),footer:r("openrouterQuickStart.localRuntimeOfflineFooter",{command:s.commandHint})}:{badge:r("openrouterQuickStart.localRuntimeCheckingBadge"),badgeClassName:"bg-muted text-muted-foreground",actionLabel:r("openrouterQuickStart.localRuntimeSetupAction",{label:a}),description:r("openrouterQuickStart.localRuntimeCheckingDescription"),footer:r("openrouterQuickStart.localRuntimeCheckingFooter")}}function Zs({hasProfiles:s,profileCount:a,onOpenRouterClick:r,onAlibabaCodingPlanClick:n,onCliproxyClick:i,onCustomClick:p,onOllamaClick:f,onLlamacppClick:g}){const{t}=_(),{modelCount:u,isLoading:x}=be(),{data:j}=Xs(),P=x?"300+":`${u}+`,w=s?t("openrouterQuickStart.profileSummaryCount",{count:a}):t("openrouterQuickStart.profileSummaryEmpty"),O=t(s?"openrouterQuickStart.summaryExistingTitle":"openrouterQuickStart.summaryEmptyTitle"),k=s?t("openrouterQuickStart.summaryExistingDescription",{count:a}):t("openrouterQuickStart.summaryEmptyDescription"),y=j?.runtimes.find(l=>l.id==="ollama"),v=j?.runtimes.find(l=>l.id==="llamacpp"),R=Re(y,t("openrouterQuickStart.localOllamaLabel"),t),b=Re(v,t("openrouterQuickStart.localLlamacppLabel"),t);return e.jsx("div",{className:"flex h-full min-h-0 flex-col overflow-auto bg-muted/20 p-4 sm:p-6",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-7xl flex-col gap-5",children:[e.jsx(He,{className:"border-dashed bg-background/90 shadow-sm",children:e.jsxs(Ue,{className:"flex flex-col gap-4 p-5 lg:flex-row lg:items-center lg:justify-between",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Q,{variant:"secondary",children:w}),e.jsx(Q,{variant:"outline",children:t("openrouterQuickStart.summaryBadgeDefaultQuality")}),e.jsx(Q,{variant:"outline",children:t("openrouterQuickStart.summaryBadgeLocalLane")})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("h2",{className:"text-xl font-semibold",children:O}),e.jsx("p",{className:"max-w-3xl text-sm leading-6 text-muted-foreground",children:k})]})]}),e.jsx(N,{variant:"outline",onClick:p,className:"shrink-0",children:t("openrouterQuickStart.createCustomProfile")})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(_s,{className:"h-4 w-4 text-accent"}),e.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.12em] text-foreground/70",children:t("openrouterQuickStart.qualityLanesTitle")})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx(X,{badge:t("openrouterQuickStart.recommended"),title:t("openrouterQuickStart.title"),description:t("openrouterQuickStart.description",{modelCountLabel:P}),visual:e.jsx("div",{className:"rounded-lg bg-accent/10 p-2",children:e.jsx("img",{src:"/icons/openrouter.svg",alt:"OpenRouter",className:"h-5 w-5"})}),highlights:[{icon:e.jsx(Je,{className:"h-3.5 w-3.5 text-accent"}),label:t("openrouterQuickStart.featureOneApi")},{icon:e.jsx(ie,{className:"h-3.5 w-3.5 text-accent"}),label:t("openrouterQuickStart.qualityLaneHighlightDefaultQuality")}],actionLabel:t("openrouterQuickStart.createOpenRouterProfile"),actionClassName:"w-full bg-accent text-white hover:bg-accent/90",onAction:r,footer:e.jsxs(e.Fragment,{children:[t("openrouterQuickStart.getApiKeyAt")," ",e.jsxs("a",{href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-accent hover:underline",children:["openrouter.ai/keys",e.jsx(oe,{className:"h-3 w-3"})]})]})}),e.jsx(X,{badge:t("alibabaCodingPlanQuickStart.recommended"),badgeClassName:"bg-orange-500/10 text-orange-700 dark:bg-orange-500/20 dark:text-orange-200",title:t("alibabaCodingPlanQuickStart.title"),description:t("openrouterQuickStart.alibabaLaneDescription"),visual:e.jsx("div",{className:"rounded-lg bg-orange-500/10 p-2",children:e.jsx("img",{src:"/assets/providers/alibabacloud-color.svg",alt:"Alibaba Coding Plan",className:"h-5 w-5"})}),highlights:[{icon:e.jsx(qe,{className:"h-3.5 w-3.5 text-orange-600"}),label:t("alibabaCodingPlanQuickStart.featureEndpoint")},{icon:e.jsx(Se,{className:"h-3.5 w-3.5 text-orange-600"}),label:t("openrouterQuickStart.alibabaLaneHighlightQuality")}],actionLabel:t("alibabaCodingPlanQuickStart.createAlibabaProfile"),actionClassName:"w-full bg-orange-600 text-white hover:bg-orange-600/90",onAction:n,footer:e.jsxs(e.Fragment,{children:[t("alibabaCodingPlanQuickStart.readGuideAt")," ",e.jsxs("a",{href:"https://www.alibabacloud.com/help/en/model-studio/coding-plan",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-orange-700 hover:underline dark:text-orange-400",children:["Alibaba Cloud Model Studio",e.jsx(oe,{className:"h-3 w-3"})]})]})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Pe,{className:"h-4 w-4 text-emerald-600"}),e.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.12em] text-foreground/70",children:t("openrouterQuickStart.localRuntimesTitle")})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx(X,{badge:R.badge,badgeClassName:R.badgeClassName,title:t("openrouterQuickStart.localOllamaTitle"),description:R.description,visual:e.jsx("div",{className:"rounded-lg bg-emerald-500/10 p-2",children:e.jsx("img",{src:"/icons/ollama.svg",alt:"Ollama",className:"h-5 w-5"})}),highlights:[{icon:e.jsx(As,{className:"h-3.5 w-3.5 text-emerald-600"}),label:t("openrouterQuickStart.localOllamaHighlight")},{icon:e.jsx(ie,{className:"h-3.5 w-3.5 text-emerald-600"}),label:y?.detectedModelCount&&y.detectedModelCount>0?t("openrouterQuickStart.localDetectedModels",{count:y.detectedModelCount}):t("openrouterQuickStart.localNoModelsDetected")}],actionLabel:R.actionLabel,actionClassName:"w-full bg-emerald-600 text-white hover:bg-emerald-600/90",onAction:f,footer:e.jsx("span",{children:R.footer})}),e.jsx(X,{badge:b.badge,badgeClassName:b.badgeClassName,title:t("openrouterQuickStart.localLlamacppTitle"),description:b.description,visual:e.jsx("div",{className:"rounded-lg bg-sky-500/10 p-2",children:e.jsx("img",{src:"/assets/providers/llama-cpp.svg",alt:"llama.cpp",className:"h-5 w-5"})}),highlights:[{icon:e.jsx(ge,{className:"h-3.5 w-3.5 text-sky-600"}),label:t("openrouterQuickStart.localLlamacppHighlight")},{icon:e.jsx(Pe,{className:"h-3.5 w-3.5 text-sky-600"}),label:v?.detectedModelCount&&v.detectedModelCount>0?t("openrouterQuickStart.localDetectedModels",{count:v.detectedModelCount}):t("openrouterQuickStart.localWaitingServer")}],actionLabel:b.actionLabel,actionClassName:"w-full bg-sky-600 text-white hover:bg-sky-600/90",onAction:g,footer:e.jsx("span",{children:b.footer})})]})]}),e.jsx("div",{className:"grid gap-4 lg:grid-cols-2",children:e.jsx(X,{badge:t("openrouterQuickStart.runtimeProviderBadge"),badgeClassName:"bg-emerald-500/10 text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200",title:t("openrouterQuickStart.runtimeProviderTitle"),description:t("openrouterQuickStart.runtimeProviderManagedDescription"),visual:e.jsx("div",{className:"rounded-lg bg-emerald-500/10 p-2",children:e.jsx(ge,{className:"h-5 w-5 text-emerald-700 dark:text-emerald-300"})}),highlights:[{icon:e.jsx(ge,{className:"h-3.5 w-3.5 text-emerald-600"}),label:t("openrouterQuickStart.runtimeProviderFeatureConnectors")},{icon:e.jsx(Se,{className:"h-3.5 w-3.5 text-emerald-600"}),label:t("openrouterQuickStart.runtimeProviderFeatureSecrets")}],actionLabel:t("openrouterQuickStart.runtimeProviderTitle"),actionClassName:"w-full bg-emerald-600 text-white hover:bg-emerald-600/90",onAction:i,footer:e.jsx("span",{children:t("openrouterQuickStart.runtimeProviderFooter")})})})]})})}function et({onCreateClick:s}){const{t:a}=_();return be(),e.jsx("div",{className:"p-3 border-t bg-gradient-to-r from-accent/5 to-accent/10 dark:from-accent/10 dark:to-accent/15",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-1.5 bg-accent/10 dark:bg-accent/20 rounded shrink-0",children:e.jsx("img",{src:"/icons/openrouter.svg",alt:"",className:"w-4 h-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-accent dark:text-accent-foreground",children:a("openrouterPromoCard.title")}),e.jsx("p",{className:"text-[10px] text-muted-foreground truncate",children:a("openrouterPromoCard.description")})]}),e.jsxs(N,{size:"sm",variant:"ghost",onClick:s,className:"h-7 px-2 text-accent hover:text-accent hover:bg-accent/10 dark:hover:bg-accent/20",children:[e.jsx(Je,{className:"w-3 h-3 mr-1"}),e.jsx("span",{className:"text-xs",children:a("openrouterBanner.add")})]})]})})}function st({onCreateClick:s}){const{t:a}=_();return e.jsx("div",{className:"p-3 border-t bg-gradient-to-r from-orange-500/5 to-orange-500/10 dark:from-orange-500/10 dark:to-orange-500/15",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-1.5 bg-orange-500/10 dark:bg-orange-500/20 rounded shrink-0",children:e.jsx("img",{src:"/assets/providers/alibabacloud-color.svg",alt:"",className:"w-4 h-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-orange-700 dark:text-orange-300",children:a("alibabaCodingPlanPromo.title")}),e.jsx("p",{className:"text-[10px] text-muted-foreground truncate",children:a("alibabaCodingPlanPromo.subtitle")})]}),e.jsxs(N,{size:"sm",variant:"ghost",onClick:s,className:"h-7 px-2 text-orange-700 dark:text-orange-300 hover:text-orange-700 hover:bg-orange-500/10 dark:hover:bg-orange-500/20",children:[e.jsx(qe,{className:"w-3 h-3 mr-1"}),e.jsx("span",{className:"text-xs",children:a("alibabaCodingPlanPromo.add")})]})]})})}const De="ccs:ccs-bar-banner-dismissed",tt="https://github.com/kaitranntt/ccs/blob/main/docs/ccs-bar.md",at=typeof navigator<"u"&&/Mac|iPhone|iPad/i.test(navigator.userAgent||navigator.platform||"");function rt({onInstallClick:s}){const{t:a}=_(),[r,n]=m.useState(!0);m.useEffect(()=>{const p=localStorage.getItem(De)==="true";n(p)},[]);const i=()=>{localStorage.setItem(De,"true"),n(!0)};return!at||r?null:e.jsx("div",{className:"bg-gradient-to-r from-accent to-accent/90 text-white px-4 py-3 relative shrink-0",children:e.jsxs("div",{className:"flex items-center justify-between gap-4 max-w-screen-xl mx-auto",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:"p-1.5 bg-white/20 rounded-md shrink-0",children:e.jsx(ve,{className:"w-4 h-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"font-medium text-sm",children:[a("ccsBarBanner.new"),": ",a("ccsBarBanner.title")]}),e.jsxs("p",{className:"text-xs text-white/80 truncate",children:[a("ccsBarBanner.description")," ",e.jsx("code",{className:"bg-white/15 rounded px-1 py-0.5 font-mono text-[11px]",children:"ccs bar install"})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[s&&e.jsx(N,{size:"sm",variant:"secondary",onClick:s,className:"bg-white text-accent hover:bg-white/90 h-8",children:a("ccsBarBanner.install")}),e.jsxs("a",{href:tt,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-white/80 hover:text-white hidden sm:flex items-center gap-1",children:["Learn more",e.jsx(oe,{className:"w-3 h-3"})]}),e.jsxs(N,{size:"icon",variant:"ghost",onClick:i,className:"h-7 w-7 text-white/70 hover:text-white hover:bg-white/20",children:[e.jsx($e,{className:"w-4 h-4"}),e.jsx("span",{className:"sr-only",children:"Dismiss"})]})]})]})})}const nt=typeof navigator<"u"&&/Mac|iPhone|iPad/i.test(navigator.userAgent||navigator.platform||"");function it({onInstallClick:s}){const{t:a}=_();return nt?e.jsx("div",{className:"p-3 border-t bg-gradient-to-r from-accent/5 to-accent/10 dark:from-accent/10 dark:to-accent/15",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-1.5 bg-accent/10 dark:bg-accent/20 rounded shrink-0",children:e.jsx(ve,{className:"w-4 h-4 text-accent"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-accent dark:text-accent-foreground",children:a("ccsBarPromo.title")}),e.jsx("p",{className:"text-[10px] text-muted-foreground truncate",children:a("ccsBarPromo.description")})]}),e.jsxs(N,{size:"sm",variant:"ghost",onClick:s,className:"h-7 px-2 text-accent hover:text-accent hover:bg-accent/10 dark:hover:bg-accent/20",children:[e.jsx(ve,{className:"w-3 h-3 mr-1"}),e.jsx("span",{className:"text-xs",children:a("ccsBarPromo.install")})]})]})}):null}const ot="https://github.com/kaitranntt/ccs/blob/main/docs/ccs-bar.md";function _e(){window.open(ot,"_blank","noopener,noreferrer")}function bt(){const{t:s}=_(),a=Xe(),{data:r,isLoading:n,isError:i,refetch:p}=js(),f=Ns(),g=vs(),t=bs(),u=ws(),x=Cs(),j=ks(),[P,w]=m.useState(null),[O,k]=m.useState(""),[y,v]=m.useState(!1),[R,b]=m.useState("normal"),[l,h]=m.useState(null),[c,H]=m.useState(!1),[J,q]=m.useState(null),ee=m.useRef(null);ys();const U=m.useMemo(()=>r?.profiles||[],[r?.profiles]),z=m.useMemo(()=>U.filter(o=>o.name.toLowerCase().includes(O.toLowerCase())),[U,O]),S=P?U.find(o=>o.name===P):null,$=o=>{c&&P!==o?q(o):w(o)},se=o=>{f.mutate(o,{onSuccess:()=>{P===o&&(w(null),H(!1),q(null)),h(null)}})},W=o=>{v(!1),$(o)},ce=o=>{$(o)},G=(o,D)=>{const E=JSON.stringify(D,null,2)+`
|
|
2
|
-
`,F=new Blob([E],{type:"application/json"}),A=URL.createObjectURL(F),K=document.createElement("a");K.href=A,K.download=o,document.body.appendChild(K),K.click(),K.remove(),URL.revokeObjectURL(A)},de=async()=>{try{const o=await g.mutateAsync();if(o.orphans.length===0){T.success(s("apiProfiles.noOrphansFound"));return}const D=o.orphans.filter(K=>K.validation.valid).length;if(!window.confirm(s("apiProfiles.confirmRegisterOrphans",{total:o.orphans.length,valid:D})))return;const F=await t.mutateAsync({}),A=F.skipped.length>0?s("apiProfiles.registeredWithSkipped",{count:F.skipped.length}):"";T.success(s("apiProfiles.registeredProfiles",{count:F.registered.length})+A)}catch(o){T.error(o.message)}},me=async()=>{if(!S)return;const o=window.prompt(s("apiProfiles.copyPrompt",{name:S.name}),`${S.name}-copy`);if(!o)return;const D=o.trim();if(!D){T.error(s("apiProfiles.destinationEmpty"));return}try{const E=await u.mutateAsync({name:S.name,data:{destination:D}});$(D),E.warnings&&E.warnings.length>0&&T.info(E.warnings.join(`
|
|
3
|
-
`))}catch(E){T.error(E.message)}},ue=async()=>{if(S)try{const o=await x.mutateAsync({name:S.name});G(`${S.name}.ccs-profile.json`,o.bundle),o.redacted?T.info(s("apiProfiles.exportRedacted")):T.success(s("apiProfiles.exportDownloaded"))}catch(o){T.error(o.message)}},xe=()=>{ee.current?.click()},he=async o=>{const D=o.target.files?.[0];if(o.target.value="",!!D)try{const E=await D.text(),F=JSON.parse(E),A=await j.mutateAsync({bundle:F});A.name&&$(A.name),A.warnings&&A.warnings.length>0&&T.info(A.warnings.join(`
|
|
4
|
-
`))}catch(E){T.error(E.message||s("apiProfiles.importFailed"))}};return e.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[e.jsx(Vs,{onCreateClick:()=>v(!0)}),e.jsx(rt,{onInstallClick:()=>_e()}),e.jsxs("div",{className:"flex-1 flex min-h-0 overflow-hidden",children:[e.jsxs("div",{className:"w-80 border-r flex flex-col bg-muted/30",children:[e.jsxs("div",{className:"p-4 border-b bg-background",children:[e.jsxs("div",{className:"mb-3 flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ls,{className:"w-5 h-5 text-primary"}),e.jsx("div",{className:"min-w-0",children:e.jsx("h1",{className:"font-semibold",children:s("apiProfiles.sidebarTitle")})})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[e.jsx(N,{size:"sm",variant:"outline",onClick:()=>void de(),disabled:g.isPending||t.isPending,"aria-label":s("apiProfiles.discoverOrphans"),title:s("apiProfiles.discoverOrphans"),children:e.jsx(Z,{className:`w-4 h-4 ${g.isPending?"animate-spin":""}`})}),e.jsx(N,{size:"sm",variant:"outline",onClick:xe,disabled:j.isPending,"aria-label":s("apiProfiles.importProfileBundle"),title:s("apiProfiles.importProfileBundle"),children:e.jsx(Qs,{className:"w-4 h-4"})}),e.jsxs(N,{size:"sm",onClick:()=>{v(!0)},children:[e.jsx(ne,{className:"w-4 h-4 mr-1"}),s("apiProfiles.new")]})]})]}),e.jsx("p",{className:"mb-3 text-xs leading-4 text-muted-foreground",children:s("apiProfiles.sidebarSubtitle")}),e.jsxs("div",{className:"relative",children:[e.jsx(ze,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(B,{placeholder:s("apiProfiles.searchPlaceholder"),className:"pl-8 h-9",value:O,onChange:o=>k(o.target.value)})]})]}),e.jsx(le,{className:"flex-1 min-h-0",children:n?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("apiProfiles.loadingProfiles")}):i?e.jsx("div",{className:"p-4 text-center",children:e.jsxs("div",{className:"space-y-3 py-8",children:[e.jsx(Ye,{className:"w-12 h-12 mx-auto text-destructive/50"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s("apiProfiles.failedLoadTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:s("apiProfiles.failedLoadDesc")})]}),e.jsxs(N,{size:"sm",variant:"outline",onClick:()=>p(),children:[e.jsx(Z,{className:"w-4 h-4 mr-1"}),s("apiProfiles.retry")]})]})}):z.length===0?e.jsx("div",{className:"p-4 text-center",children:U.length===0?e.jsxs("div",{className:"space-y-3 py-8",children:[e.jsx(Fs,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s("apiProfiles.noProfilesYet")}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:s("apiProfiles.noProfilesDesc")})]}),e.jsxs(N,{size:"sm",variant:"outline",onClick:()=>{v(!0)},children:[e.jsx(ne,{className:"w-4 h-4 mr-1"}),s("apiProfiles.createProfile")]})]}):e.jsx("p",{className:"text-sm text-muted-foreground py-4",children:s("apiProfiles.noProfileMatch",{query:O})})}):e.jsx("div",{className:"p-2 space-y-1",children:z.map(o=>e.jsx(lt,{profile:o,isSelected:P===o.name,onSelect:()=>ce(o.name),onDelete:()=>h(o.name)},o.name))})}),U.length>0&&e.jsx("div",{className:"p-3 border-t bg-background text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{children:s("apiProfiles.profileCount",{count:U.length})}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(We,{className:"w-3 h-3 text-green-600"}),s("apiProfiles.configuredCount",{count:U.filter(o=>o.configured).length})]})]})}),e.jsx(et,{onCreateClick:()=>{b("openrouter"),v(!0)}}),e.jsx(st,{onCreateClick:()=>{b("alibaba-coding-plan"),v(!0)}}),e.jsx(it,{onInstallClick:()=>_e()})]}),e.jsx("div",{className:"flex min-h-0 flex-1 flex-col min-w-0 overflow-hidden",children:S?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"px-4 py-2 border-b bg-background flex items-center justify-end gap-2",children:[e.jsxs(N,{size:"sm",variant:"outline",onClick:()=>void me(),disabled:u.isPending,children:[e.jsx(Is,{className:"w-4 h-4 mr-1"}),"Copy"]}),e.jsxs(N,{size:"sm",variant:"outline",onClick:()=>void ue(),disabled:x.isPending,children:[e.jsx(Hs,{className:"w-4 h-4 mr-1"}),"Export"]})]}),e.jsx(Gs,{profileName:S.name,profileTarget:S.target,onDelete:()=>h(S.name),onHasChangesUpdate:H},S.name)]}):e.jsx(Zs,{hasProfiles:U.length>0,profileCount:U.length,onCliproxyClick:()=>{a("/cliproxy/ai-providers")},onOpenRouterClick:()=>{b("openrouter"),v(!0)},onAlibabaCodingPlanClick:()=>{b("alibaba-coding-plan"),v(!0)},onOllamaClick:()=>{b("ollama"),v(!0)},onLlamacppClick:()=>{b("llamacpp"),v(!0)},onCustomClick:()=>{b("normal"),v(!0)}})})]}),e.jsx("input",{ref:ee,type:"file",accept:".json,application/json",className:"hidden",onChange:o=>void he(o)}),e.jsx(Ss,{open:y,onOpenChange:v,onSuccess:W,initialMode:R}),e.jsx(Ne,{open:!!l,title:s("apiProfiles.deleteProfileTitle"),description:s("apiProfiles.deleteProfileDesc",{name:l??""}),confirmText:s("apiProfiles.delete"),variant:"destructive",onConfirm:()=>l&&se(l),onCancel:()=>h(null)}),e.jsx(Ne,{open:!!J,title:s("apiProfiles.unsavedChangesTitle"),description:s("apiProfiles.unsavedChangesDesc",{current:P??"",next:J??""}),confirmText:s("apiProfiles.discardSwitch"),variant:"destructive",onConfirm:()=>{H(!1),w(J),q(null)},onCancel:()=>q(null)})]})}function lt({profile:s,isSelected:a,onSelect:r,onDelete:n}){return e.jsxs("div",{className:I("group flex items-center gap-2 px-3 py-2.5 rounded-md cursor-pointer transition-colors",a?"bg-primary/10 border border-primary/20":"hover:bg-muted border border-transparent"),onClick:r,children:[s.configured?e.jsx(We,{className:"w-4 h-4 text-green-600 shrink-0"}):e.jsx(Ye,{className:"w-4 h-4 text-yellow-600 shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:s.name}),e.jsx(Q,{variant:"outline",className:"text-[10px] h-4 px-1.5 uppercase",children:s.target||"claude"})]}),e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("div",{className:"text-xs text-muted-foreground truncate flex-1",children:s.settingsPath}),e.jsx(Y,{value:s.settingsPath,size:"icon",className:"h-5 w-5 opacity-0 group-hover:opacity-100 transition-opacity"})]})]}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-7 w-7 opacity-0 group-hover:opacity-100 transition-opacity",onClick:i=>{i.stopPropagation(),n()},children:e.jsx(Be,{className:"w-3.5 h-3.5 text-destructive"})})]})}export{bt as ApiPage};
|