mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-13 14:15:56 +00:00
fix(codex): align cliproxy guidance with runtime behavior
This commit is contained in:
1 parent
0ffde4f3a2
commit
bd1ff02521
22 files changed
+342
-64
No files matched your search
@@ -1,9 +1,19 @@
|
||||
const { stripTargetFlag } = require('../targets/target-resolver');
|
||||
const { fail } = require('../utils/ui');
|
||||
|
||||
process.env.CCS_INTERNAL_ENTRY_TARGET = 'codex';
|
||||
|
||||
// ccsxp is an opinionated shortcut for the built-in Codex-on-Codex route.
|
||||
// Strip user-supplied target overrides before forcing the shortcut target.
|
||||
const forwardedArgs = stripTargetFlag(process.argv.slice(2));
|
||||
const forwardedArgs = (() => {
|
||||
try {
|
||||
return stripTargetFlag(process.argv.slice(2));
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
console.error(fail(message));
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
|
||||
process.argv.splice(2, process.argv.length - 2, 'codex', '--target', 'codex', ...forwardedArgs);
|
||||
require('../ccs');
|
||||
@@ -177,9 +177,7 @@ function showHelp(): void {
|
||||
console.log(
|
||||
` $ ${color('ccs config channels --clear-token discord', 'command')} ${dim('# Clear one token')}`
|
||||
);
|
||||
console.log(
|
||||
` ${dim('Official Channels only work on native Claude default/account sessions, not on ccs glm or other API/OAuth/Droid targets.')}`
|
||||
);
|
||||
console.log(` ${dim(getOfficialChannelsSupportMessage())}`);
|
||||
console.log('');
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { extractOption, hasAnyFlag, scanCommandArgs } from './arg-extractor';
|
||||
import { getOfficialChannelsSupportMessage } from '../channels/official-channels-runtime';
|
||||
|
||||
const CONFIG_COMMAND_FLAGS = ['--help', '-h', '--port', '-p', '--host', '-H', '--dev'] as const;
|
||||
|
||||
@@ -92,8 +93,7 @@ export function showConfigCommandHelp(): void {
|
||||
console.log(' --set-token <s> Save channel token (telegram=<t> or discord=<t>)');
|
||||
console.log(' --clear-token Remove all saved channel tokens');
|
||||
console.log(' --clear-token <c> Remove one saved channel token');
|
||||
console.log(' Works only for native Claude default/account sessions');
|
||||
console.log(' Not for ccs glm, other API/OAuth profiles, or Droid targets');
|
||||
console.log(` ${getOfficialChannelsSupportMessage()}`);
|
||||
console.log('');
|
||||
console.log(' auth Manage dashboard authentication');
|
||||
console.log(' auth setup Configure username and password');
|
||||
|
||||
@@ -4,6 +4,7 @@ import { initUI, box, color, dim, sectionHeader, subheader } from '../utils/ui';
|
||||
import { isUnifiedMode } from '../config/unified-config-loader';
|
||||
import { getCcsDir, getCcsDirSource } from '../utils/config-manager';
|
||||
import { CLIPROXY_DEFAULT_PORT } from '../cliproxy/config/port-manager';
|
||||
import { getOfficialChannelsSupportMessage } from '../channels/official-channels-runtime';
|
||||
|
||||
type HelpWriter = (line: string) => void;
|
||||
|
||||
@@ -608,8 +609,7 @@ Run ${color('ccs config', 'command')} for web dashboard`.trim();
|
||||
['ccs config channels --clear-token [channel]', 'Remove one or all saved channel tokens'],
|
||||
['', ''],
|
||||
['', 'Fastest path: turn on the channel, save the token if needed, then run ccs.'],
|
||||
['Note:', 'Runtime-only. Applies to native Claude default/account sessions only.'],
|
||||
['', 'Not supported for ccs glm, other API/OAuth profiles, or Droid targets.'],
|
||||
['Note:', getOfficialChannelsSupportMessage()],
|
||||
['', 'Telegram/Discord tokens live in ~/.claude/channels/<channel>/.env.'],
|
||||
['', 'Current-process TELEGRAM_BOT_TOKEN / DISCORD_BOT_TOKEN also work for that launch.'],
|
||||
['', 'iMessage is macOS-only and requires local OS permissions instead of a bot token.'],
|
||||
|
||||
@@ -72,6 +72,7 @@ const SANDBOX_MODE_VALUES = new Set(['read-only', 'workspace-write', 'danger-ful
|
||||
const WEB_SEARCH_VALUES = new Set(['cached', 'live', 'disabled']);
|
||||
const PERSONALITY_VALUES = new Set(['none', 'friendly', 'pragmatic']);
|
||||
const PROJECT_TRUST_LEVEL_VALUES = new Set(['trusted', 'untrusted']);
|
||||
const BUILT_IN_CODEX_MODEL_PROVIDERS = new Set(['openai', 'oss']);
|
||||
|
||||
function isObject(value: unknown): value is Record<string, unknown> {
|
||||
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
||||
@@ -572,6 +573,10 @@ export function summarizeCodexModelProviders(value: unknown): CodexModelProvider
|
||||
.sort((left, right) => left.name.localeCompare(right.name));
|
||||
}
|
||||
|
||||
function isBuiltInCodexModelProvider(name: string | null): boolean {
|
||||
return name !== null && BUILT_IN_CODEX_MODEL_PROVIDERS.has(name);
|
||||
}
|
||||
|
||||
export function summarizeCodexFeatureFlags(value: unknown): {
|
||||
all: CodexFeatureFlagDiagnostics[];
|
||||
enabled: CodexFeatureFlagDiagnostics[];
|
||||
@@ -729,15 +734,15 @@ export async function getCodexDashboardDiagnostics(): Promise<CodexDashboardDiag
|
||||
}
|
||||
if (activeModelProvider) {
|
||||
const activeProvider = modelProviders.find((provider) => provider.name === activeModelProvider);
|
||||
if (!activeProvider) {
|
||||
if (!activeProvider && !isBuiltInCodexModelProvider(activeModelProvider)) {
|
||||
warnings.push(
|
||||
`Active model provider "${activeModelProvider}" is selected but missing from [model_providers].`
|
||||
);
|
||||
} else {
|
||||
} else if (activeProvider) {
|
||||
if (!activeProvider.baseUrl) {
|
||||
warnings.push(`Active model provider "${activeProvider.name}" is missing base_url.`);
|
||||
}
|
||||
if (!activeProvider.envKey) {
|
||||
if (!activeProvider.envKey && !activeProvider.requiresOpenaiAuth) {
|
||||
warnings.push(`Active model provider "${activeProvider.name}" is missing env_key.`);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user