anygate 0.6.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ import { join } from "path";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "anygate",
10
- version: "0.6.1",
10
+ version: "0.6.2",
11
11
  publishConfig: {
12
12
  access: "public"
13
13
  },
@@ -189,4 +189,4 @@ export {
189
189
  classifyModelFormat,
190
190
  VERSION
191
191
  };
192
- //# sourceMappingURL=chunk-UE2I2ETX.js.map
192
+ //# sourceMappingURL=chunk-S5WL3M5G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config/constants.ts","../package.json"],"sourcesContent":["// src/constants.ts\nimport { homedir } from 'node:os'\nimport { join } from 'node:path'\nimport pkg from '../../package.json' with { type: 'json' }\nimport type { BackendConfig, ModelFormat } from '../types/index.js'\n\nexport const BACKENDS: Record<'zen' | 'go', BackendConfig> = {\n zen: {\n id: 'zen',\n name: 'OpenCode Zen',\n // No /v1 suffix — the Anthropic SDK appends /v1/messages automatically\n baseUrl: 'https://opencode.ai/zen',\n },\n go: {\n id: 'go',\n name: 'OpenCode Go',\n baseUrl: 'https://opencode.ai/zen/go',\n },\n}\n\n// ChatGPT Codex Responses-Lite WebSocket transport (used by models the backend\n// flags with prefer_websockets, e.g. gpt-5.6-luna).\nexport const CODEX_RESPONSES_LITE_WS_URL = 'wss://chatgpt.com/backend-api/codex/responses'\n// `version` header the Codex backend expects on Responses-Lite requests. The\n// official Codex CLI sends its own version here; OpenAI may require this to be\n// bumped over time — confirm via --trace if Luna requests start failing.\nexport const CODEX_RESPONSES_LITE_VERSION = '0.144.1'\n// OpenAI-Beta opt-in for the WebSocket Responses transport.\nexport const CODEX_RESPONSES_WEBSOCKETS_BETA = 'responses_websockets=2026-02-06'\n\n// These must be removed from the child process environment to avoid conflicts\n// with Vertex AI, Bedrock, AWS, Foundry, and any stale Anthropic config.\nexport const CONFLICTING_ENV_VARS = [\n 'CLAUDE_CODE_USE_VERTEX',\n 'ANTHROPIC_VERTEX_PROJECT_ID',\n 'ANTHROPIC_VERTEX_BASE_URL',\n 'CLOUD_ML_REGION',\n 'ANTHROPIC_BEDROCK_BASE_URL',\n 'ANTHROPIC_AWS_BASE_URL',\n 'ANTHROPIC_AWS_API_KEY',\n 'ANTHROPIC_AWS_WORKSPACE_ID',\n 'ANTHROPIC_FOUNDRY_API_KEY',\n 'ANTHROPIC_FOUNDRY_BASE_URL',\n 'ANTHROPIC_AUTH_TOKEN',\n 'ANTHROPIC_API_KEY',\n 'ANTHROPIC_BASE_URL',\n 'ANTHROPIC_MODEL',\n 'ANTHROPIC_DEFAULT_OPUS_MODEL',\n 'ANTHROPIC_DEFAULT_SONNET_MODEL',\n 'ANTHROPIC_DEFAULT_HAIKU_MODEL',\n] as const\n\nexport type ConflictingEnvVar = (typeof CONFLICTING_ENV_VARS)[number]\n\n// Optional enrichment from OpenCode CLI (~/.cache/opencode/models.json) — not a runtime dependency.\nexport const OPENCODE_CACHE_PATH = join(homedir(), '.cache', 'opencode', 'models.json')\n\n/** Max models in favorites list and mid-session /model switch catalog. */\nexport const MAX_MODEL_CATALOG = 20\n\n// Fixed port the `anygate server` gateway binds to. The doctor command probes\n// this same port so users catch clashes before launching the server.\nexport const GATEWAY_PORT = 17645\n\n/** Gateway rate limiting: max requests per client per window. */\nexport const RATE_LIMIT_MAX_REQUESTS = 120\n\n/** Gateway rate limiting: time window in milliseconds. */\nexport const RATE_LIMIT_WINDOW_MS = 60_000\n\n/** Maximum request body size in bytes (10 MB). */\nexport const MAX_REQUEST_BODY_BYTES = 10 * 1024 * 1024\n\n/** Vercel AI SDK package for Anthropic Claude models on Google Vertex AI (ADC auth). */\nexport const VERTEX_ANTHROPIC_NPM = '@ai-sdk/google-vertex/anthropic'\n\n// Classify a model's API format based on cache provider data or ID heuristics.\n// Used to decide whether to route directly or through the translation proxy.\nexport function classifyModelFormat(modelId: string, providerNpm: string | undefined): ModelFormat {\n if (providerNpm === '@ai-sdk/anthropic') return 'anthropic'\n if (providerNpm === '@ai-sdk/openai') return 'unsupported'\n if (providerNpm === '@ai-sdk/google') return 'unsupported'\n\n // Fallback: ID-prefix heuristics for models not in cache\n const lower = modelId.toLowerCase()\n if (lower.startsWith('claude-')) return 'anthropic'\n if (lower.startsWith('gpt-')) return 'unsupported'\n if (lower.startsWith('gemini-')) return 'unsupported'\n\n return 'openai'\n}\n\nexport const VERSION = pkg.version\n","{\n \"name\": \"anygate\",\n \"version\": \"0.6.1\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"description\": \"Route any model into any coding agent — launch Claude Code, Codex, and more with multi-provider gateways\",\n \"author\": \"ramananbuilds\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/ramananbuilds/anygate.git\"\n },\n \"homepage\": \"https://github.com/ramananbuilds/anygate#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/ramananbuilds/anygate/issues\"\n },\n \"keywords\": [\n \"claude\",\n \"claude-code\",\n \"codex\",\n \"ai\",\n \"llm\",\n \"cli\",\n \"gateway\",\n \"vertex\"\n ],\n \"type\": \"module\",\n \"bin\": {\n \"anygate\": \"dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n },\n \"scripts\": {\n \"build\": \"tsup && npm run ui:build && node scripts/copy-ui-assets.mjs\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\",\n \"typecheck\": \"tsc --noEmit\",\n \"refresh:models-dev\": \"node scripts/refresh-models-dev-cache.mjs\",\n \"audit:context-windows\": \"tsx scripts/audit-context-windows.ts\",\n \"generate:context-rules\": \"tsx scripts/generate-context-rules.ts\",\n \"lint\": \"eslint src/ --ext .ts\",\n \"lint:fix\": \"eslint src/ --ext .ts --fix\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\"\",\n \"prepublishOnly\": \"node -e \\\"if (require('./package.json').version !== require('./package-lock.json').version) { console.error('Error: package.json and package-lock.json versions are out of sync! Run npm install to sync.'); process.exit(1); }\\\" && npm run build\",\n \"ui:dev\": \"npm --prefix src/ui/app run dev\",\n \"ui:build\": \"npm --prefix src/ui/app run build\",\n \"prepare\": \"husky\"\n },\n \"dependencies\": {\n \"@ai-sdk/alibaba\": \"^1.0.26\",\n \"@ai-sdk/amazon-bedrock\": \"^4.0.113\",\n \"@ai-sdk/anthropic\": \"^3.0.81\",\n \"@ai-sdk/azure\": \"^3.0.70\",\n \"@ai-sdk/cerebras\": \"^2.0.54\",\n \"@ai-sdk/cohere\": \"^3.0.36\",\n \"@ai-sdk/deepinfra\": \"^2.0.52\",\n \"@ai-sdk/gateway\": \"^3.0.125\",\n \"@ai-sdk/google\": \"^3.0.80\",\n \"@ai-sdk/google-vertex\": \"^4.0.142\",\n \"@ai-sdk/groq\": \"^3.0.39\",\n \"@ai-sdk/mistral\": \"^3.0.37\",\n \"@ai-sdk/openai\": \"^3.0.68\",\n \"@ai-sdk/openai-compatible\": \"^2.0.48\",\n \"@ai-sdk/perplexity\": \"^3.0.33\",\n \"@ai-sdk/provider-utils\": \"^4.0.27\",\n \"@ai-sdk/togetherai\": \"^2.0.53\",\n \"@ai-sdk/vercel\": \"^2.0.50\",\n \"@ai-sdk/xai\": \"^3.0.93\",\n \"@clack/prompts\": \"^0.9.1\",\n \"@openrouter/ai-sdk-provider\": \"^2.9.0\",\n \"ai\": \"^6.0.197\",\n \"gitlab-ai-provider\": \"^6.8.0\",\n \"ipaddr.js\": \"^2.4.0\",\n \"open\": \"^11.0.0\",\n \"picocolors\": \"^1.1.1\",\n \"smol-toml\": \"^1.6.1\",\n \"venice-ai-sdk-provider\": \"^2.0.2\",\n \"ws\": \"^8.21.0\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.0.0\",\n \"@types/ws\": \"^8.18.1\",\n \"@typescript-eslint/eslint-plugin\": \"^8.0.0\",\n \"@typescript-eslint/parser\": \"^8.0.0\",\n \"@vitest/coverage-v8\": \"^2.1.9\",\n \"eslint\": \"^9.0.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"husky\": \"^9.1.7\",\n \"lint-staged\": \"^16.4.0\",\n \"prettier\": \"^3.3.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.5.0\",\n \"typescript-eslint\": \"^8.65.0\",\n \"vitest\": \"^2.0.0\"\n },\n \"optionalDependencies\": {\n \"@napi-rs/keyring\": \"^1.3.0\"\n },\n \"overrides\": {\n \"ws\": \"^8.21.0\"\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/config/constants.ts","../package.json"],"sourcesContent":["// src/constants.ts\nimport { homedir } from 'node:os'\nimport { join } from 'node:path'\nimport pkg from '../../package.json' with { type: 'json' }\nimport type { BackendConfig, ModelFormat } from '../types/index.js'\n\nexport const BACKENDS: Record<'zen' | 'go', BackendConfig> = {\n zen: {\n id: 'zen',\n name: 'OpenCode Zen',\n // No /v1 suffix — the Anthropic SDK appends /v1/messages automatically\n baseUrl: 'https://opencode.ai/zen',\n },\n go: {\n id: 'go',\n name: 'OpenCode Go',\n baseUrl: 'https://opencode.ai/zen/go',\n },\n}\n\n// ChatGPT Codex Responses-Lite WebSocket transport (used by models the backend\n// flags with prefer_websockets, e.g. gpt-5.6-luna).\nexport const CODEX_RESPONSES_LITE_WS_URL = 'wss://chatgpt.com/backend-api/codex/responses'\n// `version` header the Codex backend expects on Responses-Lite requests. The\n// official Codex CLI sends its own version here; OpenAI may require this to be\n// bumped over time — confirm via --trace if Luna requests start failing.\nexport const CODEX_RESPONSES_LITE_VERSION = '0.144.1'\n// OpenAI-Beta opt-in for the WebSocket Responses transport.\nexport const CODEX_RESPONSES_WEBSOCKETS_BETA = 'responses_websockets=2026-02-06'\n\n// These must be removed from the child process environment to avoid conflicts\n// with Vertex AI, Bedrock, AWS, Foundry, and any stale Anthropic config.\nexport const CONFLICTING_ENV_VARS = [\n 'CLAUDE_CODE_USE_VERTEX',\n 'ANTHROPIC_VERTEX_PROJECT_ID',\n 'ANTHROPIC_VERTEX_BASE_URL',\n 'CLOUD_ML_REGION',\n 'ANTHROPIC_BEDROCK_BASE_URL',\n 'ANTHROPIC_AWS_BASE_URL',\n 'ANTHROPIC_AWS_API_KEY',\n 'ANTHROPIC_AWS_WORKSPACE_ID',\n 'ANTHROPIC_FOUNDRY_API_KEY',\n 'ANTHROPIC_FOUNDRY_BASE_URL',\n 'ANTHROPIC_AUTH_TOKEN',\n 'ANTHROPIC_API_KEY',\n 'ANTHROPIC_BASE_URL',\n 'ANTHROPIC_MODEL',\n 'ANTHROPIC_DEFAULT_OPUS_MODEL',\n 'ANTHROPIC_DEFAULT_SONNET_MODEL',\n 'ANTHROPIC_DEFAULT_HAIKU_MODEL',\n] as const\n\nexport type ConflictingEnvVar = (typeof CONFLICTING_ENV_VARS)[number]\n\n// Optional enrichment from OpenCode CLI (~/.cache/opencode/models.json) — not a runtime dependency.\nexport const OPENCODE_CACHE_PATH = join(homedir(), '.cache', 'opencode', 'models.json')\n\n/** Max models in favorites list and mid-session /model switch catalog. */\nexport const MAX_MODEL_CATALOG = 20\n\n// Fixed port the `anygate server` gateway binds to. The doctor command probes\n// this same port so users catch clashes before launching the server.\nexport const GATEWAY_PORT = 17645\n\n/** Gateway rate limiting: max requests per client per window. */\nexport const RATE_LIMIT_MAX_REQUESTS = 120\n\n/** Gateway rate limiting: time window in milliseconds. */\nexport const RATE_LIMIT_WINDOW_MS = 60_000\n\n/** Maximum request body size in bytes (10 MB). */\nexport const MAX_REQUEST_BODY_BYTES = 10 * 1024 * 1024\n\n/** Vercel AI SDK package for Anthropic Claude models on Google Vertex AI (ADC auth). */\nexport const VERTEX_ANTHROPIC_NPM = '@ai-sdk/google-vertex/anthropic'\n\n// Classify a model's API format based on cache provider data or ID heuristics.\n// Used to decide whether to route directly or through the translation proxy.\nexport function classifyModelFormat(modelId: string, providerNpm: string | undefined): ModelFormat {\n if (providerNpm === '@ai-sdk/anthropic') return 'anthropic'\n if (providerNpm === '@ai-sdk/openai') return 'unsupported'\n if (providerNpm === '@ai-sdk/google') return 'unsupported'\n\n // Fallback: ID-prefix heuristics for models not in cache\n const lower = modelId.toLowerCase()\n if (lower.startsWith('claude-')) return 'anthropic'\n if (lower.startsWith('gpt-')) return 'unsupported'\n if (lower.startsWith('gemini-')) return 'unsupported'\n\n return 'openai'\n}\n\nexport const VERSION = pkg.version\n","{\n \"name\": \"anygate\",\n \"version\": \"0.6.2\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"description\": \"Route any model into any coding agent — launch Claude Code, Codex, and more with multi-provider gateways\",\n \"author\": \"ramananbuilds\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/ramananbuilds/anygate.git\"\n },\n \"homepage\": \"https://github.com/ramananbuilds/anygate#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/ramananbuilds/anygate/issues\"\n },\n \"keywords\": [\n \"claude\",\n \"claude-code\",\n \"codex\",\n \"ai\",\n \"llm\",\n \"cli\",\n \"gateway\",\n \"vertex\"\n ],\n \"type\": \"module\",\n \"bin\": {\n \"anygate\": \"dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n },\n \"scripts\": {\n \"build\": \"tsup && npm run ui:build && node scripts/copy-ui-assets.mjs\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\",\n \"typecheck\": \"tsc --noEmit\",\n \"refresh:models-dev\": \"node scripts/refresh-models-dev-cache.mjs\",\n \"audit:context-windows\": \"tsx scripts/audit-context-windows.ts\",\n \"generate:context-rules\": \"tsx scripts/generate-context-rules.ts\",\n \"lint\": \"eslint src/ --ext .ts\",\n \"lint:fix\": \"eslint src/ --ext .ts --fix\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\"\",\n \"prepublishOnly\": \"node -e \\\"if (require('./package.json').version !== require('./package-lock.json').version) { console.error('Error: package.json and package-lock.json versions are out of sync! Run npm install to sync.'); process.exit(1); }\\\" && npm run build\",\n \"ui:dev\": \"npm --prefix src/ui/app run dev\",\n \"ui:build\": \"npm --prefix src/ui/app run build\",\n \"prepare\": \"husky\"\n },\n \"dependencies\": {\n \"@ai-sdk/alibaba\": \"^1.0.26\",\n \"@ai-sdk/amazon-bedrock\": \"^4.0.113\",\n \"@ai-sdk/anthropic\": \"^3.0.81\",\n \"@ai-sdk/azure\": \"^3.0.70\",\n \"@ai-sdk/cerebras\": \"^2.0.54\",\n \"@ai-sdk/cohere\": \"^3.0.36\",\n \"@ai-sdk/deepinfra\": \"^2.0.52\",\n \"@ai-sdk/gateway\": \"^3.0.125\",\n \"@ai-sdk/google\": \"^3.0.80\",\n \"@ai-sdk/google-vertex\": \"^4.0.142\",\n \"@ai-sdk/groq\": \"^3.0.39\",\n \"@ai-sdk/mistral\": \"^3.0.37\",\n \"@ai-sdk/openai\": \"^3.0.68\",\n \"@ai-sdk/openai-compatible\": \"^2.0.48\",\n \"@ai-sdk/perplexity\": \"^3.0.33\",\n \"@ai-sdk/provider-utils\": \"^4.0.27\",\n \"@ai-sdk/togetherai\": \"^2.0.53\",\n \"@ai-sdk/vercel\": \"^2.0.50\",\n \"@ai-sdk/xai\": \"^3.0.93\",\n \"@clack/prompts\": \"^0.9.1\",\n \"@openrouter/ai-sdk-provider\": \"^2.9.0\",\n \"ai\": \"^6.0.197\",\n \"gitlab-ai-provider\": \"^6.8.0\",\n \"ipaddr.js\": \"^2.4.0\",\n \"open\": \"^11.0.0\",\n \"picocolors\": \"^1.1.1\",\n \"smol-toml\": \"^1.6.1\",\n \"venice-ai-sdk-provider\": \"^2.0.2\",\n \"ws\": \"^8.21.0\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.0.0\",\n \"@types/ws\": \"^8.18.1\",\n \"@typescript-eslint/eslint-plugin\": \"^8.0.0\",\n \"@typescript-eslint/parser\": \"^8.0.0\",\n \"@vitest/coverage-v8\": \"^2.1.9\",\n \"eslint\": \"^9.0.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"husky\": \"^9.1.7\",\n \"lint-staged\": \"^16.4.0\",\n \"prettier\": \"^3.3.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.5.0\",\n \"typescript-eslint\": \"^8.65.0\",\n \"vitest\": \"^2.0.0\"\n },\n \"optionalDependencies\": {\n \"@napi-rs/keyring\": \"^1.3.0\"\n },\n \"overrides\": {\n \"ws\": \"^8.21.0\"\n }\n}\n"],"mappings":"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","names":[]}
package/dist/cli.js CHANGED
@@ -32,6 +32,7 @@ import {
32
32
  confirmLaunchMessage,
33
33
  createGatewayModelCatalog,
34
34
  createLanguageModel,
35
+ dedupeByKey,
35
36
  deepMergeProviderOptions,
36
37
  detectConflicts,
37
38
  effectiveProviderBaseUrl,
@@ -172,7 +173,7 @@ import {
172
173
  validateModels,
173
174
  writeSecureLogLine,
174
175
  zenRegistryStub
175
- } from "./chunk-BY4AKT2X.js";
176
+ } from "./chunk-EMBABL33.js";
176
177
  import {
177
178
  BACKENDS,
178
179
  CONFLICTING_ENV_VARS,
@@ -180,7 +181,7 @@ import {
180
181
  MAX_MODEL_CATALOG,
181
182
  VERSION,
182
183
  VERTEX_ANTHROPIC_NPM
183
- } from "./chunk-UE2I2ETX.js";
184
+ } from "./chunk-S5WL3M5G.js";
184
185
  import {
185
186
  filterTemplates,
186
187
  getTemplateById,
@@ -2209,11 +2210,11 @@ async function runProvidersRemove(id, interactive = false) {
2209
2210
  return 1;
2210
2211
  }
2211
2212
  if (interactive) {
2212
- const confirm11 = await p5.confirm({
2213
+ const confirm12 = await p5.confirm({
2213
2214
  message: `Remove ${provider.name} (${id})?`,
2214
2215
  initialValue: false
2215
2216
  });
2216
- if (p5.isCancel(confirm11) || !confirm11) {
2217
+ if (p5.isCancel(confirm12) || !confirm12) {
2217
2218
  p5.cancel("Cancelled.");
2218
2219
  return 0;
2219
2220
  }
@@ -2806,6 +2807,7 @@ async function handleClaudeCommand(parsed) {
2806
2807
  const { dryRun, setup, trace, launchProvider } = parsed;
2807
2808
  const launchAllModels = parsed.launchAllModels || parsed.launchModel === "All";
2808
2809
  const launchModel = launchAllModels && !parsed.launchModel ? "All" : parsed.launchModel;
2810
+ const launchWithClaude = Boolean(parsed.launchWithClaude);
2809
2811
  const claudeArgs = normalizeClaudeAgentArgs(parsed.claudeArgs);
2810
2812
  const agentStdout = wantsCleanAgentStdout("claude", claudeArgs);
2811
2813
  setAgentStdoutMode(agentStdout);
@@ -3039,6 +3041,71 @@ Error: ${launchPlan.error}
3039
3041
  }
3040
3042
  }
3041
3043
  const localProviders = catalog.length > 0 ? catalog : null;
3044
+ const claudeCodeProvider = allProviders.find(
3045
+ (lp) => lp.id === "claude-code" && lp.inRegistry && lp.models.length > 0
3046
+ );
3047
+ const claudeMixEligible = catalogMode === false && activeProvider.id !== "claude-code" && Boolean(claudeCodeProvider);
3048
+ if (claudeMixEligible && launchWithClaude) {
3049
+ catalogMode = "provider-plus-claude";
3050
+ } else if (claudeMixEligible && !agentStdout && !dryRun && !launchPlan.skip) {
3051
+ const keepClaude = await p6.confirm({
3052
+ message: "Keep your normal Claude models available too?",
3053
+ active: `Yes \u2014 add ${claudeCodeProvider.models.length} Anthropic-subscription models to /model`,
3054
+ inactive: "No \u2014 launch with the anygate model only",
3055
+ initialValue: true
3056
+ });
3057
+ if (p6.isCancel(keepClaude)) {
3058
+ p6.cancel("Cancelled.");
3059
+ return 0;
3060
+ }
3061
+ if (keepClaude) catalogMode = "provider-plus-claude";
3062
+ } else if (launchWithClaude && !claudeCodeProvider && !agentStdout) {
3063
+ p6.log.warn(
3064
+ "Ignoring --with-claude: no authenticated Claude Code provider found. Run `anygate providers auth claude-code` first."
3065
+ );
3066
+ }
3067
+ if (catalogMode === "provider-plus-claude") {
3068
+ const resolveRoute = makeRouteResolver(localProviders);
3069
+ const startingRoute = resolveRoute(activeProvider.id, selectedModel.id) ?? null;
3070
+ if (!startingRoute) {
3071
+ p6.log.error("Could not resolve a proxy route for the selected model.");
3072
+ return 1;
3073
+ }
3074
+ const claudeRoutes = (claudeCodeProvider?.models ?? []).map((m) => resolveRoute("claude-code", m.id)).filter((r) => r !== void 0);
3075
+ const { routes: favoriteRoutes } = buildCatalogRoutes(startingRoute, favorites, resolveRoute);
3076
+ const catalogRoutes = dedupeByKey(
3077
+ [
3078
+ startingRoute,
3079
+ ...claudeRoutes,
3080
+ ...favoriteRoutes.filter((r) => r.aliasId !== startingRoute.aliasId)
3081
+ ],
3082
+ (r) => r.aliasId,
3083
+ MAX_MODEL_CATALOG
3084
+ );
3085
+ if (dryRun) {
3086
+ console.log("");
3087
+ console.log(pc5.bold(pc5.cyan(" DRY RUN \u2014 would execute (Anthropic + anygate mixed mode):")));
3088
+ console.log("");
3089
+ console.log(` ${pc5.bold("Provider:")} ${activeProvider.name}`);
3090
+ console.log(` ${pc5.bold("Starting model:")} ${selectedModel.id}`);
3091
+ console.log(
3092
+ ` ${pc5.bold("Claude models:")} ${claudeRoutes.length} (from your Anthropic subscription)`
3093
+ );
3094
+ console.log(` ${pc5.bold("/model catalog:")} ${catalogRoutes.length} model(s)`);
3095
+ catalogRoutes.forEach((r) => console.log(` ${pc5.dim(r.displayName)}`));
3096
+ console.log("");
3097
+ console.log(pc5.dim(" (dry run complete \u2014 Claude Code was NOT launched)"));
3098
+ console.log("");
3099
+ return 0;
3100
+ }
3101
+ return launchClaudeViaCatalog(
3102
+ catalogRoutes,
3103
+ startingRoute,
3104
+ selectedModel.contextWindow,
3105
+ trace ?? false,
3106
+ claudeArgs
3107
+ );
3108
+ }
3042
3109
  if (catalogMode === "favorites") {
3043
3110
  const resolveRoute = makeRouteResolver(localProviders);
3044
3111
  const startingRoute = resolveRoute(activeProvider.id, selectedModel.id) ?? null;
@@ -3215,11 +3282,32 @@ Error: ${launchPlan.error}
3215
3282
  selectedModel.contextWindow
3216
3283
  );
3217
3284
  } else if (selectedModel.modelFormat === "anthropic") {
3285
+ try {
3286
+ proxyHandle = await startProxy(
3287
+ selectedModel.baseUrl ?? "https://api.anthropic.com",
3288
+ selectedModel.id,
3289
+ trace ?? false,
3290
+ selectedModel.contextWindow,
3291
+ {
3292
+ providerId: activeProvider.id,
3293
+ authType: activeProvider.authType,
3294
+ providerData: activeProvider.providerData,
3295
+ modelFormat: "anthropic",
3296
+ headers: activeProvider.headers,
3297
+ app: "Claude"
3298
+ },
3299
+ launchApiKey
3300
+ );
3301
+ if (!isAgentStdoutMode()) p6.log.info(`Proxy started on port ${proxyHandle.port}`);
3302
+ } catch (err) {
3303
+ p6.log.error(`Failed to start proxy: ${err instanceof Error ? err.message : String(err)}`);
3304
+ return 1;
3305
+ }
3218
3306
  childEnv = buildChildEnv(
3219
- selectedModel.baseUrl,
3307
+ `http://127.0.0.1:${proxyHandle.port}`,
3220
3308
  selectedModel.id,
3221
- launchApiKey,
3222
- void 0,
3309
+ proxyHandle.token,
3310
+ proxyHandle.port,
3223
3311
  selectedModel.contextWindow
3224
3312
  );
3225
3313
  } else {
@@ -3264,12 +3352,31 @@ Error: ${launchPlan.error}
3264
3352
  selectedModel.contextWindow
3265
3353
  );
3266
3354
  }
3267
- if (selectedModel.modelFormat === "anthropic" && !isOAuthAnthropic) {
3268
- childEnv["CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS"] = "1";
3269
- }
3270
3355
  const debugLogPath = prepareClaudeTraceLog();
3271
3356
  const traceArgs = trace ? ["--debug-file", debugLogPath] : [];
3272
3357
  if (trace) p6.log.info(`Debug log: ${debugLogPath}`);
3358
+ if (trace) {
3359
+ writeSecureLogLine(
3360
+ debugLogPath,
3361
+ `childEnv: ANTHROPIC_BASE_URL=${childEnv["ANTHROPIC_BASE_URL"] ?? "(unset)"}`
3362
+ );
3363
+ writeSecureLogLine(
3364
+ debugLogPath,
3365
+ `childEnv: ANTHROPIC_API_KEY set=${Boolean(childEnv["ANTHROPIC_API_KEY"])}`
3366
+ );
3367
+ writeSecureLogLine(
3368
+ debugLogPath,
3369
+ `childEnv: ANTHROPIC_AUTH_TOKEN set=${Boolean(childEnv["ANTHROPIC_AUTH_TOKEN"])}`
3370
+ );
3371
+ writeSecureLogLine(
3372
+ debugLogPath,
3373
+ `childEnv: ANTHROPIC_MODEL=${childEnv["ANTHROPIC_MODEL"] ?? "(unset)"}`
3374
+ );
3375
+ writeSecureLogLine(
3376
+ debugLogPath,
3377
+ `childEnv: CLAUDE_CODE_MAX_CONTEXT_TOKENS=${childEnv["CLAUDE_CODE_MAX_CONTEXT_TOKENS"] ?? "(unset)"}`
3378
+ );
3379
+ }
3273
3380
  const exitCode = await launchClaude(
3274
3381
  childEnv,
3275
3382
  claudeCodeClientModelId(selectedModel.id, selectedModel.contextWindow),
@@ -6703,7 +6810,7 @@ Error: ${launchPlan.error}
6703
6810
  // src/cli/codex.ts
6704
6811
  async function handleCodexCommand(parsed) {
6705
6812
  if (parsed.showVersion) {
6706
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
6813
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
6707
6814
  console.log(VERSION2);
6708
6815
  return 0;
6709
6816
  }
@@ -7846,7 +7953,7 @@ async function runCodexAppCommand(args, opts = {}) {
7846
7953
  // src/cli/codex-app.ts
7847
7954
  async function handleCodexAppCommand(parsed) {
7848
7955
  if (parsed.showVersion) {
7849
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
7956
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
7850
7957
  console.log(VERSION2);
7851
7958
  return 0;
7852
7959
  }
@@ -8471,7 +8578,7 @@ ${pc10.bold("Claude Desktop 3P Mode Active")}`);
8471
8578
  // src/cli/claude-app.ts
8472
8579
  async function handleClaudeAppCommand(parsed) {
8473
8580
  if (parsed.showVersion) {
8474
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
8581
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
8475
8582
  console.log(VERSION2);
8476
8583
  return 0;
8477
8584
  }
@@ -9696,7 +9803,7 @@ Error: ${launchPlan.error}
9696
9803
  // src/cli/gemini.ts
9697
9804
  async function handleGeminiCommand(parsed) {
9698
9805
  if (parsed.showVersion) {
9699
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
9806
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
9700
9807
  console.log(VERSION2);
9701
9808
  return 0;
9702
9809
  }
@@ -13155,7 +13262,7 @@ Examples:
13155
13262
  `;
13156
13263
  async function handleAgyCommand(parsed) {
13157
13264
  if (parsed.showVersion) {
13158
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
13265
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
13159
13266
  console.log(VERSION2);
13160
13267
  return 0;
13161
13268
  }
@@ -13171,7 +13278,7 @@ async function handleAgyCommand(parsed) {
13171
13278
  }
13172
13279
  async function handleAntigravityAppCommand(parsed) {
13173
13280
  if (parsed.showVersion) {
13174
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
13281
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
13175
13282
  console.log(VERSION2);
13176
13283
  return 0;
13177
13284
  }
@@ -13187,7 +13294,7 @@ async function handleAntigravityAppCommand(parsed) {
13187
13294
  }
13188
13295
  async function handleAntigravityIdeCommand(parsed) {
13189
13296
  if (parsed.showVersion) {
13190
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
13297
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
13191
13298
  console.log(VERSION2);
13192
13299
  return 0;
13193
13300
  }
@@ -13293,7 +13400,7 @@ Options:
13293
13400
  `);
13294
13401
  return 0;
13295
13402
  }
13296
- const { runUiCommand } = await import("./command-XIDZGWNR.js");
13403
+ const { runUiCommand } = await import("./command-N3R2ZVVS.js");
13297
13404
  return runUiCommand({ trace: parsed.trace });
13298
13405
  }
13299
13406
 
@@ -13722,7 +13829,7 @@ async function runValidateSubcommand(parsed) {
13722
13829
  // src/cli/providers.ts
13723
13830
  async function handleProvidersCommand(parsed) {
13724
13831
  if (parsed.showVersion) {
13725
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
13832
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
13726
13833
  console.log(VERSION2);
13727
13834
  return 0;
13728
13835
  }
@@ -13835,7 +13942,7 @@ async function runDoctorCommand(_dryRun) {
13835
13942
  // src/cli/doctor.ts
13836
13943
  async function handleDoctorCommand(parsed) {
13837
13944
  if (parsed.showVersion) {
13838
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
13945
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
13839
13946
  console.log(VERSION2);
13840
13947
  return 0;
13841
13948
  }
@@ -13975,7 +14082,7 @@ function runCompletionsCommand(shellArg) {
13975
14082
  // src/cli/completions.ts
13976
14083
  async function handleCompletionsCommand(parsed) {
13977
14084
  if (parsed.showVersion) {
13978
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
14085
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
13979
14086
  console.log(VERSION2);
13980
14087
  return 0;
13981
14088
  }
@@ -14067,7 +14174,7 @@ async function runUpdateCommand(dryRun) {
14067
14174
  // src/cli/update.ts
14068
14175
  async function handleUpdateCommand(parsed) {
14069
14176
  if (parsed.showVersion) {
14070
- const { VERSION: VERSION2 } = await import("./constants-WLMOLKEO.js");
14177
+ const { VERSION: VERSION2 } = await import("./constants-U356SKNS.js");
14071
14178
  console.log(VERSION2);
14072
14179
  return 0;
14073
14180
  }
@@ -14131,12 +14238,16 @@ var STARTER_CLAUDE_FLAGS = /* @__PURE__ */ new Set([
14131
14238
  "--version",
14132
14239
  "-v"
14133
14240
  ]);
14134
- var GATEWAY_LAUNCH_FLAGS = /* @__PURE__ */ new Set(["--provider", "--model"]);
14241
+ var GATEWAY_LAUNCH_FLAGS = /* @__PURE__ */ new Set(["--provider", "--model", "--all-models", "--with-claude"]);
14135
14242
  function parseGatewayLaunchFlag(arg, rest, index, parsed) {
14136
14243
  if (arg === "--all-models") {
14137
14244
  parsed.launchAllModels = true;
14138
14245
  return index;
14139
14246
  }
14247
+ if (arg === "--with-claude") {
14248
+ parsed.launchWithClaude = true;
14249
+ return index;
14250
+ }
14140
14251
  if (arg === "--provider" || arg === "--model") {
14141
14252
  const value = rest[index + 1];
14142
14253
  if (!value || value.startsWith("-")) {
@@ -14649,6 +14760,8 @@ ${pc18.bold("Options:")}
14649
14760
  --trace Write debug logs to ~/.anygate/logs/ and show errors on exit
14650
14761
  --provider Boot provider id (skip wizard when paired with --model or in print mode)
14651
14762
  --model Boot model id (skip wizard when paired with --provider or in print mode)
14763
+ --all-models Launch with every model from --provider in the /model switcher
14764
+ --with-claude Keep your Anthropic-subscription models in /model alongside the anygate model
14652
14765
  --help Show this command help
14653
14766
  --version Show version
14654
14767