* feat: open useful USER_TYPE-gated features to all users Remove 13 process.env.USER_TYPE === 'ant' gates that restricted useful features to Anthropic employees. These features work without Anthropic infrastructure and are now available to all open-build users. Features opened: - Agent nesting (sub-agents can spawn sub-agents) - Effort 'max' persistence in settings - Plan mode interview phase (controlled by feature flags) - Sandbox disabled commands (via ~/.claude/feature-flags.json) - All tips visible to all users (plan mode, feedback, shift-tab) Simplified: - Fullscreen defaults to off (use /config to enable) - Explore agent always uses haiku model - Plan mode tool uses conservative prompt for all users Continues the USER_TYPE cleanup from #637 (dead code) and builds on #639 (local feature flags). * fix: address Copilot review comments — remove residual dead code 1. bridgeConfig.ts: ungate bridge override functions — return env vars directly instead of hardcoded undefined 2. bridgeMain.ts + initReplBridge.ts: ungate sessionIngressUrl — read CLAUDE_BRIDGE_SESSION_INGRESS_URL without USER_TYPE check 3. tools.ts: remove dead ConfigTool/TungstenTool imports, narrow eslint-disable scope, stub REPLTool/SuggestBackgroundPRTool to null 4. readOnlyValidation.ts: remove orphaned ANT_ONLY_COMMAND_ALLOWLIST and unused GH_READ_ONLY_COMMANDS import 5. insights.ts: remove entire remote collection plumbing (types, functions, options, display logic) 6. osc.ts: hardcode supportsTabStatus() to false (internal-only feature) 7. state.ts: simplify addSlowOperation/getSlowOperations to no-ops, remove dead constants * fix: address Copilot review on PR #644 1. settings/types.ts: allow 'max' effort level for all users in Zod schema — was still gated behind USER_TYPE=ant, causing 'max' to be silently dropped on settings reload 2. shouldUseSandbox.ts: defensively normalize disabledCommands from feature flag config with Array.isArray() guards * fix: address second round of Copilot review on PR #644 1. shouldUseSandbox.ts: validate top-level shape of disabledCommands before accessing properties (handles null/primitive from feature flag) 2. fullscreen.ts: update JSDoc to reflect removal of USER_TYPE default 3. osc.ts: update JSDoc — "Ant-only" → "Currently disabled"
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
/**
|
|
* Shared bridge auth/URL resolution. Consolidates the internal-only
|
|
* CLAUDE_BRIDGE_* dev overrides that were previously copy-pasted across
|
|
* a dozen files — inboundAttachments, BriefTool/upload, bridgeMain,
|
|
* initReplBridge, remoteBridgeCore, daemon workers, /rename,
|
|
* /remote-control.
|
|
*
|
|
* Two layers: *Override() returns the internal-only env var (or undefined);
|
|
* the non-Override versions fall through to the real OAuth store/config.
|
|
* Callers that compose with a different auth source (e.g. daemon workers
|
|
* using IPC auth) use the Override getters directly.
|
|
*/
|
|
|
|
import { getOauthConfig } from '../constants/oauth.js'
|
|
import { getClaudeAIOAuthTokens } from '../utils/auth.js'
|
|
|
|
/** Dev override: CLAUDE_BRIDGE_OAUTH_TOKEN, else undefined. */
|
|
export function getBridgeTokenOverride(): string | undefined {
|
|
return process.env.CLAUDE_BRIDGE_OAUTH_TOKEN || undefined
|
|
}
|
|
|
|
/** Dev override: CLAUDE_BRIDGE_BASE_URL, else undefined. */
|
|
export function getBridgeBaseUrlOverride(): string | undefined {
|
|
return process.env.CLAUDE_BRIDGE_BASE_URL || undefined
|
|
}
|
|
|
|
/**
|
|
* Access token for bridge API calls: dev override first, then the OAuth
|
|
* keychain. Undefined means "not logged in".
|
|
*/
|
|
export function getBridgeAccessToken(): string | undefined {
|
|
return getBridgeTokenOverride() ?? getClaudeAIOAuthTokens()?.accessToken
|
|
}
|
|
|
|
/**
|
|
* Base URL for bridge API calls: dev override first, then the production
|
|
* OAuth config. Always returns a URL.
|
|
*/
|
|
export function getBridgeBaseUrl(): string {
|
|
return getBridgeBaseUrlOverride() ?? getOauthConfig().BASE_API_URL
|
|
}
|