@atlasharness/atlascode 0.1.73 → 0.1.74

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.
Files changed (2) hide show
  1. package/dist/cli.js +149 -236
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -166835,7 +166835,7 @@ var init_addDirPluginSettings = __esm(() => {
166835
166835
  });
166836
166836
 
166837
166837
  // src/tui/entrypoints/sdk/coreSchemas.ts
166838
- var ModelUsageSchema, OutputFormatTypeSchema, BaseOutputFormatSchema, JsonSchemaOutputFormatSchema, OutputFormatSchema, ApiKeySourceSchema, ConfigScopeSchema2, SdkBetaSchema, ThinkingAdaptiveSchema, ThinkingEnabledSchema, ThinkingDisabledSchema, ThinkingConfigSchema, McpStdioServerConfigSchema2, McpSSEServerConfigSchema2, McpHttpServerConfigSchema, McpSdkServerConfigSchema, McpServerConfigForProcessTransportSchema, McpClaudeAIProxyServerConfigSchema, McpServerStatusConfigSchema, McpServerStatusSchema, McpSetServersResultSchema, PermissionUpdateDestinationSchema, PermissionBehaviorSchema, PreToolUsePermissionDecisionSchema, PermissionRuleValueSchema, PermissionUpdateSchema, PermissionDecisionClassificationSchema, PermissionResultSchema, PermissionModeSchema2, HOOK_EVENTS2, HookEventSchema, BaseHookInputSchema, PreToolUseHookInputSchema, PermissionRequestHookInputSchema, PostToolUseHookInputSchema, PostToolUseFailureHookInputSchema, PermissionDeniedHookInputSchema, NotificationHookInputSchema, UserPromptSubmitHookInputSchema, SessionStartHookInputSchema, PreModelSwitchHookInputSchema, PostModelSwitchHookInputSchema, SetupHookInputSchema, StopHookInputSchema, StopFailureHookInputSchema, SubagentStartHookInputSchema, SubagentStopHookInputSchema, PreCompactHookInputSchema, PostCompactHookInputSchema, TeammateIdleHookInputSchema, TaskCreatedHookInputSchema, TaskCompletedHookInputSchema, ElicitationHookInputSchema, ElicitationResultHookInputSchema, CONFIG_CHANGE_SOURCES, ConfigChangeHookInputSchema, INSTRUCTIONS_LOAD_REASONS, INSTRUCTIONS_MEMORY_TYPES, InstructionsLoadedHookInputSchema, WorktreeCreateHookInputSchema, WorktreeRemoveHookInputSchema, CwdChangedHookInputSchema, FileChangedHookInputSchema, EXIT_REASONS, ExitReasonSchema, SessionEndHookInputSchema, HookInputSchema, AsyncHookJSONOutputSchema, PreToolUseHookSpecificOutputSchema, UserPromptSubmitHookSpecificOutputSchema, SessionStartHookSpecificOutputSchema, SetupHookSpecificOutputSchema, SubagentStartHookSpecificOutputSchema, PostToolUseHookSpecificOutputSchema, PostToolUseFailureHookSpecificOutputSchema, PermissionDeniedHookSpecificOutputSchema, NotificationHookSpecificOutputSchema, PermissionRequestHookSpecificOutputSchema, CwdChangedHookSpecificOutputSchema, FileChangedHookSpecificOutputSchema, SyncHookJSONOutputSchema, ElicitationHookSpecificOutputSchema, ElicitationResultHookSpecificOutputSchema, WorktreeCreateHookSpecificOutputSchema, HookJSONOutputSchema, PromptRequestOptionSchema, PromptRequestSchema, PromptResponseSchema, SlashCommandSchema, AgentInfoSchema, ModelInfoSchema, AccountInfoSchema, AgentMcpServerSpecSchema, AgentDefinitionSchema, SettingSourceSchema, SdkPluginConfigSchema, RewindFilesResultSchema, APIUserMessagePlaceholder, APIAssistantMessagePlaceholder, RawMessageStreamEventPlaceholder, UUIDPlaceholder, NonNullableUsagePlaceholder, SDKAssistantMessageErrorSchema, SDKStatusSchema, SDKUserMessageContentSchema, SDKUserMessageSchema, SDKUserMessageReplaySchema, SDKRateLimitInfoSchema, SDKAssistantMessageSchema, SDKRateLimitEventSchema, SDKStreamlinedTextMessageSchema, SDKStreamlinedToolUseSummaryMessageSchema, SDKPermissionDenialSchema, SDKResultSuccessSchema, SDKResultErrorSchema, SDKResultMessageSchema, SDKSystemMessageSchema, SDKPartialAssistantMessageSchema, SDKCompactBoundaryMessageSchema, SDKStatusMessageSchema, SDKPostTurnSummaryMessageSchema, SDKAPIRetryMessageSchema, SDKLocalCommandOutputMessageSchema, SDKHookStartedMessageSchema, SDKHookProgressMessageSchema, SDKHookResponseMessageSchema, SDKToolProgressMessageSchema, SDKAuthStatusMessageSchema, SDKFilesPersistedEventSchema, SDKTaskNotificationMessageSchema, SDKTaskStartedMessageSchema, SDKSessionStateChangedMessageSchema, SDKTaskProgressMessageSchema, SDKToolUseSummaryMessageSchema, SDKElicitationCompleteMessageSchema, SDKPromptSuggestionMessageSchema, SDKSessionInfoSchema, SDKMessageSchema, FastModeStateSchema;
166838
+ var ModelUsageSchema, OutputFormatTypeSchema, BaseOutputFormatSchema, JsonSchemaOutputFormatSchema, OutputFormatSchema, ApiKeySourceSchema, ConfigScopeSchema2, SdkBetaSchema, ThinkingAdaptiveSchema, ThinkingEnabledSchema, ThinkingDisabledSchema, ThinkingConfigSchema, McpStdioServerConfigSchema2, McpSSEServerConfigSchema2, McpHttpServerConfigSchema, McpSdkServerConfigSchema, McpServerConfigForProcessTransportSchema, McpServerStatusConfigSchema, McpServerStatusSchema, McpSetServersResultSchema, PermissionUpdateDestinationSchema, PermissionBehaviorSchema, PreToolUsePermissionDecisionSchema, PermissionRuleValueSchema, PermissionUpdateSchema, PermissionDecisionClassificationSchema, PermissionResultSchema, PermissionModeSchema2, HOOK_EVENTS2, HookEventSchema, BaseHookInputSchema, PreToolUseHookInputSchema, PermissionRequestHookInputSchema, PostToolUseHookInputSchema, PostToolUseFailureHookInputSchema, PermissionDeniedHookInputSchema, NotificationHookInputSchema, UserPromptSubmitHookInputSchema, SessionStartHookInputSchema, PreModelSwitchHookInputSchema, PostModelSwitchHookInputSchema, SetupHookInputSchema, StopHookInputSchema, StopFailureHookInputSchema, SubagentStartHookInputSchema, SubagentStopHookInputSchema, PreCompactHookInputSchema, PostCompactHookInputSchema, TeammateIdleHookInputSchema, TaskCreatedHookInputSchema, TaskCompletedHookInputSchema, ElicitationHookInputSchema, ElicitationResultHookInputSchema, CONFIG_CHANGE_SOURCES, ConfigChangeHookInputSchema, INSTRUCTIONS_LOAD_REASONS, INSTRUCTIONS_MEMORY_TYPES, InstructionsLoadedHookInputSchema, WorktreeCreateHookInputSchema, WorktreeRemoveHookInputSchema, CwdChangedHookInputSchema, FileChangedHookInputSchema, EXIT_REASONS, ExitReasonSchema, SessionEndHookInputSchema, HookInputSchema, AsyncHookJSONOutputSchema, PreToolUseHookSpecificOutputSchema, UserPromptSubmitHookSpecificOutputSchema, SessionStartHookSpecificOutputSchema, SetupHookSpecificOutputSchema, SubagentStartHookSpecificOutputSchema, PostToolUseHookSpecificOutputSchema, PostToolUseFailureHookSpecificOutputSchema, PermissionDeniedHookSpecificOutputSchema, NotificationHookSpecificOutputSchema, PermissionRequestHookSpecificOutputSchema, CwdChangedHookSpecificOutputSchema, FileChangedHookSpecificOutputSchema, SyncHookJSONOutputSchema, ElicitationHookSpecificOutputSchema, ElicitationResultHookSpecificOutputSchema, WorktreeCreateHookSpecificOutputSchema, HookJSONOutputSchema, PromptRequestOptionSchema, PromptRequestSchema, PromptResponseSchema, SlashCommandSchema, AgentInfoSchema, ModelInfoSchema, AccountInfoSchema, AgentMcpServerSpecSchema, AgentDefinitionSchema, SettingSourceSchema, SdkPluginConfigSchema, RewindFilesResultSchema, APIUserMessagePlaceholder, APIAssistantMessagePlaceholder, RawMessageStreamEventPlaceholder, UUIDPlaceholder, NonNullableUsagePlaceholder, SDKAssistantMessageErrorSchema, SDKStatusSchema, SDKUserMessageContentSchema, SDKUserMessageSchema, SDKUserMessageReplaySchema, SDKRateLimitInfoSchema, SDKAssistantMessageSchema, SDKRateLimitEventSchema, SDKStreamlinedTextMessageSchema, SDKStreamlinedToolUseSummaryMessageSchema, SDKPermissionDenialSchema, SDKResultSuccessSchema, SDKResultErrorSchema, SDKResultMessageSchema, SDKSystemMessageSchema, SDKPartialAssistantMessageSchema, SDKCompactBoundaryMessageSchema, SDKStatusMessageSchema, SDKPostTurnSummaryMessageSchema, SDKAPIRetryMessageSchema, SDKLocalCommandOutputMessageSchema, SDKHookStartedMessageSchema, SDKHookProgressMessageSchema, SDKHookResponseMessageSchema, SDKToolProgressMessageSchema, SDKAuthStatusMessageSchema, SDKFilesPersistedEventSchema, SDKTaskNotificationMessageSchema, SDKTaskStartedMessageSchema, SDKSessionStateChangedMessageSchema, SDKTaskProgressMessageSchema, SDKToolUseSummaryMessageSchema, SDKElicitationCompleteMessageSchema, SDKPromptSuggestionMessageSchema, SDKSessionInfoSchema, SDKMessageSchema, FastModeStateSchema;
166839
166839
  var init_coreSchemas = __esm(() => {
166840
166840
  init_v4();
166841
166841
  ModelUsageSchema = lazySchema2(() => object({
@@ -166900,15 +166900,7 @@ var init_coreSchemas = __esm(() => {
166900
166900
  McpHttpServerConfigSchema(),
166901
166901
  McpSdkServerConfigSchema()
166902
166902
  ]));
166903
- McpClaudeAIProxyServerConfigSchema = lazySchema2(() => object({
166904
- type: literal("claudeai-proxy"),
166905
- url: string2(),
166906
- id: string2()
166907
- }));
166908
- McpServerStatusConfigSchema = lazySchema2(() => union([
166909
- McpServerConfigForProcessTransportSchema(),
166910
- McpClaudeAIProxyServerConfigSchema()
166911
- ]));
166903
+ McpServerStatusConfigSchema = lazySchema2(() => McpServerConfigForProcessTransportSchema());
166912
166904
  McpServerStatusSchema = lazySchema2(() => object({
166913
166905
  name: string2().describe("Server name as configured"),
166914
166906
  status: _enum(["connected", "failed", "needs-auth", "pending", "disabled"]).describe("Current connection status"),
@@ -167965,7 +167957,7 @@ var init_hooks3 = __esm(() => {
167965
167957
  });
167966
167958
 
167967
167959
  // src/tui/services/mcp/types.ts
167968
- var ConfigScopeSchema3, TransportSchema2, McpStdioServerConfigSchema3, McpXaaConfigSchema2, McpOAuthConfigSchema2, McpSSEServerConfigSchema3, McpSSEIDEServerConfigSchema, McpWebSocketIDEServerConfigSchema, McpHTTPServerConfigSchema2, McpWebSocketServerConfigSchema2, McpSdkServerConfigSchema2, McpClaudeAIProxyServerConfigSchema2, McpServerConfigSchema2, McpJsonConfigSchema2;
167960
+ var ConfigScopeSchema3, TransportSchema2, McpStdioServerConfigSchema3, McpXaaConfigSchema2, McpOAuthConfigSchema2, McpSSEServerConfigSchema3, McpSSEIDEServerConfigSchema, McpWebSocketIDEServerConfigSchema, McpHTTPServerConfigSchema2, McpWebSocketServerConfigSchema2, McpSdkServerConfigSchema2, McpServerConfigSchema2, McpJsonConfigSchema2;
167969
167961
  var init_types9 = __esm(() => {
167970
167962
  init_v4();
167971
167963
  ConfigScopeSchema3 = lazySchema2(() => _enum([
@@ -167991,6 +167983,9 @@ var init_types9 = __esm(() => {
167991
167983
  authServerMetadataUrl: string2().url().startsWith("https://", {
167992
167984
  message: "authServerMetadataUrl must use https://"
167993
167985
  }).optional(),
167986
+ clientMetadataUrl: string2().url().startsWith("https://", {
167987
+ message: "clientMetadataUrl must use https://"
167988
+ }).optional(),
167994
167989
  xaa: McpXaaConfigSchema2().optional()
167995
167990
  }));
167996
167991
  McpSSEServerConfigSchema3 = lazySchema2(() => object({
@@ -168030,11 +168025,6 @@ var init_types9 = __esm(() => {
168030
168025
  type: literal("sdk"),
168031
168026
  name: string2()
168032
168027
  }));
168033
- McpClaudeAIProxyServerConfigSchema2 = lazySchema2(() => object({
168034
- type: literal("claudeai-proxy"),
168035
- url: string2(),
168036
- id: string2()
168037
- }));
168038
168028
  McpServerConfigSchema2 = lazySchema2(() => union([
168039
168029
  McpStdioServerConfigSchema3(),
168040
168030
  McpSSEServerConfigSchema3(),
@@ -168042,8 +168032,7 @@ var init_types9 = __esm(() => {
168042
168032
  McpWebSocketIDEServerConfigSchema(),
168043
168033
  McpHTTPServerConfigSchema2(),
168044
168034
  McpWebSocketServerConfigSchema2(),
168045
- McpSdkServerConfigSchema2(),
168046
- McpClaudeAIProxyServerConfigSchema2()
168035
+ McpSdkServerConfigSchema2()
168047
168036
  ]));
168048
168037
  McpJsonConfigSchema2 = lazySchema2(() => object({
168049
168038
  mcpServers: record(string2(), McpServerConfigSchema2())
@@ -187932,20 +187921,6 @@ var init_p_map = __esm(() => {
187932
187921
  pMapSkip = Symbol("skip");
187933
187922
  });
187934
187923
 
187935
- // src/tui/constants/oauth.ts
187936
- function getOauthConfig() {
187937
- return PROD_OAUTH_CONFIG;
187938
- }
187939
- var PROD_OAUTH_CONFIG, MCP_CLIENT_METADATA_URL = undefined;
187940
- var init_oauth = __esm(() => {
187941
- PROD_OAUTH_CONFIG = {
187942
- BASE_API_URL: undefined,
187943
- CLAUDE_AI_ORIGIN: undefined,
187944
- MCP_PROXY_URL: undefined,
187945
- MCP_PROXY_PATH: "/v1/mcp/{server_id}"
187946
- };
187947
- });
187948
-
187949
187924
  // src/tui/keybindings/defaultBindings.ts
187950
187925
  var IMAGE_PASTE_KEY, SUPPORTS_TERMINAL_VT_MODE, MODE_CYCLE_KEY, DEFAULT_BINDINGS;
187951
187926
  var init_defaultBindings = __esm(() => {
@@ -193435,7 +193410,6 @@ function resolvePluginMcpEnvironment(config, plugin, userConfig, errors, pluginN
193435
193410
  case "sse-ide":
193436
193411
  case "ws-ide":
193437
193412
  case "sdk":
193438
- case "claudeai-proxy":
193439
193413
  resolved = config;
193440
193414
  break;
193441
193415
  }
@@ -193833,9 +193807,6 @@ function expandEnvVars(config) {
193833
193807
  case "sdk":
193834
193808
  expanded = config;
193835
193809
  break;
193836
- case "claudeai-proxy":
193837
- expanded = config;
193838
- break;
193839
193810
  }
193840
193811
  return {
193841
193812
  expanded,
@@ -195907,12 +195878,34 @@ class ClaudeAuthProvider {
195907
195878
  return metadata;
195908
195879
  }
195909
195880
  get clientMetadataUrl() {
195881
+ const describe = (raw) => {
195882
+ try {
195883
+ const u = new URL(raw);
195884
+ return `${u.protocol}//${u.host}${u.pathname}`;
195885
+ } catch {
195886
+ return `<invalid url, ${raw.length} chars>`;
195887
+ }
195888
+ };
195910
195889
  const override = process.env.MCP_OAUTH_CLIENT_METADATA_URL;
195911
195890
  if (override) {
195912
- logMCPDebug(this.serverName, `Using CIMD URL from env: ${override}`);
195913
- return override;
195891
+ let valid = false;
195892
+ try {
195893
+ valid = new URL(override).protocol === "https:";
195894
+ } catch {
195895
+ valid = false;
195896
+ }
195897
+ if (valid) {
195898
+ logMCPDebug(this.serverName, `Using CIMD URL from env: ${describe(override)}`);
195899
+ return override;
195900
+ }
195901
+ logMCPDebug(this.serverName, `Ignoring invalid MCP_OAUTH_CLIENT_METADATA_URL env value: ${describe(override)}`);
195914
195902
  }
195915
- return MCP_CLIENT_METADATA_URL;
195903
+ const perServer = this.serverConfig.oauth?.clientMetadataUrl;
195904
+ if (perServer) {
195905
+ logMCPDebug(this.serverName, `Using CIMD URL from server config: ${describe(perServer)}`);
195906
+ return perServer;
195907
+ }
195908
+ return;
195916
195909
  }
195917
195910
  setMetadata(metadata) {
195918
195911
  this._metadata = metadata;
@@ -196528,7 +196521,6 @@ var init_auth3 = __esm(() => {
196528
196521
  init_errors5();
196529
196522
  init_auth();
196530
196523
  init_axios2();
196531
- init_oauth();
196532
196524
  init_browser();
196533
196525
  init_envUtils2();
196534
196526
  init_errors4();
@@ -196597,14 +196589,6 @@ function createMcpAuthTool(serverName, config) {
196597
196589
  return { behavior: "allow", updatedInput: input };
196598
196590
  },
196599
196591
  async call(_input, context) {
196600
- if (config.type === "claudeai-proxy") {
196601
- return {
196602
- data: {
196603
- status: "unsupported",
196604
- message: `This is a claude.ai MCP connector. Ask the user to run /mcp and select "${serverName}" to authenticate.`
196605
- }
196606
- };
196607
- }
196608
196592
  if (config.type !== "sse" && config.type !== "http") {
196609
196593
  return {
196610
196594
  data: {
@@ -197312,6 +197296,53 @@ function createChildAbortController2(parent, maxListeners) {
197312
197296
  var DEFAULT_MAX_LISTENERS2 = 50;
197313
197297
  var init_abortController2 = () => {};
197314
197298
 
197299
+ // src/tui/utils/codeIndexing.ts
197300
+ function detectCodeIndexingFromMcpServerName(serverName) {
197301
+ for (const { pattern, tool } of MCP_SERVER_PATTERNS) {
197302
+ if (pattern.test(serverName)) {
197303
+ return tool;
197304
+ }
197305
+ }
197306
+ return;
197307
+ }
197308
+ var MCP_SERVER_PATTERNS;
197309
+ var init_codeIndexing = __esm(() => {
197310
+ MCP_SERVER_PATTERNS = [
197311
+ { pattern: /^sourcegraph$/i, tool: "sourcegraph" },
197312
+ { pattern: /^cody$/i, tool: "cody" },
197313
+ { pattern: /^openctx$/i, tool: "openctx" },
197314
+ { pattern: /^aider$/i, tool: "aider" },
197315
+ { pattern: /^continue$/i, tool: "continue" },
197316
+ { pattern: /^github[-_]?copilot$/i, tool: "github-copilot" },
197317
+ { pattern: /^copilot$/i, tool: "github-copilot" },
197318
+ { pattern: /^cursor$/i, tool: "cursor" },
197319
+ { pattern: /^tabby$/i, tool: "tabby" },
197320
+ { pattern: /^codeium$/i, tool: "codeium" },
197321
+ { pattern: /^tabnine$/i, tool: "tabnine" },
197322
+ { pattern: /^augment[-_]?code$/i, tool: "augment" },
197323
+ { pattern: /^augment$/i, tool: "augment" },
197324
+ { pattern: /^windsurf$/i, tool: "windsurf" },
197325
+ { pattern: /^aide$/i, tool: "aide" },
197326
+ { pattern: /^codestory$/i, tool: "aide" },
197327
+ { pattern: /^pieces$/i, tool: "pieces" },
197328
+ { pattern: /^qodo$/i, tool: "qodo" },
197329
+ { pattern: /^amazon[-_]?q$/i, tool: "amazon-q" },
197330
+ { pattern: /^gemini[-_]?code[-_]?assist$/i, tool: "gemini" },
197331
+ { pattern: /^gemini$/i, tool: "gemini" },
197332
+ { pattern: /^hound$/i, tool: "hound" },
197333
+ { pattern: /^seagoat$/i, tool: "seagoat" },
197334
+ { pattern: /^bloop$/i, tool: "bloop" },
197335
+ { pattern: /^gitloop$/i, tool: "gitloop" },
197336
+ { pattern: /^claude[-_]?context$/i, tool: "claude-context" },
197337
+ { pattern: /^code[-_]?index[-_]?mcp$/i, tool: "code-index-mcp" },
197338
+ { pattern: /^code[-_]?index$/i, tool: "code-index-mcp" },
197339
+ { pattern: /^local[-_]?code[-_]?search$/i, tool: "local-code-search" },
197340
+ { pattern: /^codebase$/i, tool: "autodev-codebase" },
197341
+ { pattern: /^autodev[-_]?codebase$/i, tool: "autodev-codebase" },
197342
+ { pattern: /^code[-_]?context$/i, tool: "claude-context" }
197343
+ ];
197344
+ });
197345
+
197315
197346
  // src/tui/utils/authFileDescriptor.ts
197316
197347
  import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync5 } from "fs";
197317
197348
  import { join as join82 } from "path";
@@ -197764,53 +197795,6 @@ var init_auth4 = __esm(() => {
197764
197795
  DEFAULT_OTEL_HEADERS_DEBOUNCE_MS = 29 * 60 * 1000;
197765
197796
  });
197766
197797
 
197767
- // src/tui/utils/codeIndexing.ts
197768
- function detectCodeIndexingFromMcpServerName(serverName) {
197769
- for (const { pattern, tool } of MCP_SERVER_PATTERNS) {
197770
- if (pattern.test(serverName)) {
197771
- return tool;
197772
- }
197773
- }
197774
- return;
197775
- }
197776
- var MCP_SERVER_PATTERNS;
197777
- var init_codeIndexing = __esm(() => {
197778
- MCP_SERVER_PATTERNS = [
197779
- { pattern: /^sourcegraph$/i, tool: "sourcegraph" },
197780
- { pattern: /^cody$/i, tool: "cody" },
197781
- { pattern: /^openctx$/i, tool: "openctx" },
197782
- { pattern: /^aider$/i, tool: "aider" },
197783
- { pattern: /^continue$/i, tool: "continue" },
197784
- { pattern: /^github[-_]?copilot$/i, tool: "github-copilot" },
197785
- { pattern: /^copilot$/i, tool: "github-copilot" },
197786
- { pattern: /^cursor$/i, tool: "cursor" },
197787
- { pattern: /^tabby$/i, tool: "tabby" },
197788
- { pattern: /^codeium$/i, tool: "codeium" },
197789
- { pattern: /^tabnine$/i, tool: "tabnine" },
197790
- { pattern: /^augment[-_]?code$/i, tool: "augment" },
197791
- { pattern: /^augment$/i, tool: "augment" },
197792
- { pattern: /^windsurf$/i, tool: "windsurf" },
197793
- { pattern: /^aide$/i, tool: "aide" },
197794
- { pattern: /^codestory$/i, tool: "aide" },
197795
- { pattern: /^pieces$/i, tool: "pieces" },
197796
- { pattern: /^qodo$/i, tool: "qodo" },
197797
- { pattern: /^amazon[-_]?q$/i, tool: "amazon-q" },
197798
- { pattern: /^gemini[-_]?code[-_]?assist$/i, tool: "gemini" },
197799
- { pattern: /^gemini$/i, tool: "gemini" },
197800
- { pattern: /^hound$/i, tool: "hound" },
197801
- { pattern: /^seagoat$/i, tool: "seagoat" },
197802
- { pattern: /^bloop$/i, tool: "bloop" },
197803
- { pattern: /^gitloop$/i, tool: "gitloop" },
197804
- { pattern: /^claude[-_]?context$/i, tool: "claude-context" },
197805
- { pattern: /^code[-_]?index[-_]?mcp$/i, tool: "code-index-mcp" },
197806
- { pattern: /^code[-_]?index$/i, tool: "code-index-mcp" },
197807
- { pattern: /^local[-_]?code[-_]?search$/i, tool: "local-code-search" },
197808
- { pattern: /^codebase$/i, tool: "autodev-codebase" },
197809
- { pattern: /^autodev[-_]?codebase$/i, tool: "autodev-codebase" },
197810
- { pattern: /^code[-_]?context$/i, tool: "claude-context" }
197811
- ];
197812
- });
197813
-
197814
197798
  // src/tui/utils/workloadContext.ts
197815
197799
  import { AsyncLocalStorage as AsyncLocalStorage4 } from "async_hooks";
197816
197800
  function getWorkload() {
@@ -209270,43 +209254,12 @@ function clearMcpAuthCache() {
209270
209254
  function handleRemoteAuthFailure(name, serverRef, transportType) {
209271
209255
  const label = {
209272
209256
  sse: "SSE",
209273
- http: "HTTP",
209274
- "claudeai-proxy": "claude.ai proxy"
209257
+ http: "HTTP"
209275
209258
  };
209276
209259
  logMCPDebug(name, `Authentication required for ${label[transportType]} server`);
209277
209260
  setMcpAuthCacheEntry(name);
209278
209261
  return { name, type: "needs-auth", config: serverRef };
209279
209262
  }
209280
- function createClaudeAiProxyFetch(innerFetch) {
209281
- return async (url, init) => {
209282
- const doRequest = async () => {
209283
- const currentTokens = getOAuthTokens();
209284
- if (!currentTokens) {
209285
- throw new Error("No claude.ai OAuth token available");
209286
- }
209287
- const headers = new Headers(init?.headers);
209288
- headers.set("Authorization", `Bearer ${currentTokens.accessToken}`);
209289
- const response = await innerFetch(url, { ...init, headers });
209290
- return { response, sentToken: currentTokens.accessToken };
209291
- };
209292
- const { response, sentToken } = await doRequest();
209293
- if (response.status !== 401) {
209294
- return response;
209295
- }
209296
- const tokenChanged = false;
209297
- if (!tokenChanged) {
209298
- const now = getOAuthTokens()?.accessToken;
209299
- if (!now || now === sentToken) {
209300
- return response;
209301
- }
209302
- }
209303
- try {
209304
- return (await doRequest()).response;
209305
- } catch {
209306
- return response;
209307
- }
209308
- };
209309
- }
209310
209263
  async function createNodeWsClient(url, options) {
209311
209264
  const wsModule = await Promise.resolve().then(() => (init_wrapper2(), {}));
209312
209265
  const WS = wrapper_default;
@@ -209496,7 +209449,7 @@ async function getMcpToolsCommandsAndResources(onConnectionAttempt, mcpConfigs)
209496
209449
  });
209497
209450
  return;
209498
209451
  }
209499
- if ((config.type === "claudeai-proxy" || config.type === "http" || config.type === "sse") && (await isMcpAuthCached(name) || (config.type === "http" || config.type === "sse") && hasMcpDiscoveryButNoToken(name, config))) {
209452
+ if ((config.type === "http" || config.type === "sse") && (await isMcpAuthCached(name) || hasMcpDiscoveryButNoToken(name, config))) {
209500
209453
  logMCPDebug(name, `Skipping connection (cached needs-auth)`);
209501
209454
  onConnectionAttempt({
209502
209455
  client: { name, type: "needs-auth", config },
@@ -209978,7 +209931,7 @@ async function callMCPTool({
209978
209931
  throw new McpAuthError(name, `MCP server "${name}" requires re-authorization (token expired)`);
209979
209932
  }
209980
209933
  const isSessionExpired = isMcpSessionExpiredError(e);
209981
- const isConnectionClosedOnHttp = "code" in e && e.code === -32000 && e.message.includes("Connection closed") && (config.type === "http" || config.type === "claudeai-proxy");
209934
+ const isConnectionClosedOnHttp = "code" in e && e.code === -32000 && e.message.includes("Connection closed") && config.type === "http";
209982
209935
  if (isSessionExpired || isConnectionClosedOnHttp) {
209983
209936
  logMCPDebug(name, `MCP session expired during tool call (${isSessionExpired ? "404/-32001" : "connection closed"}), clearing connection cache for re-initialization`);
209984
209937
  await clearServerCache(name, config);
@@ -210014,14 +209967,12 @@ var init_client4 = __esm(() => {
210014
209967
  init_zipObject();
210015
209968
  init_p_map();
210016
209969
  init_bootstrap();
210017
- init_oauth();
210018
209970
  init_Tool();
210019
209971
  init_ListMcpResourcesTool();
210020
209972
  init_MCPTool();
210021
209973
  init_McpAuthTool();
210022
209974
  init_ReadMcpResourceTool();
210023
209975
  init_abortController2();
210024
- init_auth4();
210025
209976
  init_cleanupRegistry3();
210026
209977
  init_codeIndexing();
210027
209978
  init_debug();
@@ -210242,29 +210193,6 @@ var init_client4 = __esm(() => {
210242
210193
  logMCPDebug(name, `HTTP transport created successfully`);
210243
210194
  } else if (serverRef.type === "sdk") {
210244
210195
  throw new Error("SDK servers should be handled in print.ts");
210245
- } else if (serverRef.type === "claudeai-proxy") {
210246
- logMCPDebug(name, `Initializing claude.ai proxy transport for server ${serverRef.id}`);
210247
- const tokens = getOAuthTokens();
210248
- if (!tokens) {
210249
- throw new Error("No claude.ai OAuth token found");
210250
- }
210251
- const oauthConfig = getOauthConfig();
210252
- const proxyUrl = `${oauthConfig.MCP_PROXY_URL}${oauthConfig.MCP_PROXY_PATH.replace("{server_id}", serverRef.id)}`;
210253
- logMCPDebug(name, `Using claude.ai proxy at ${proxyUrl}`);
210254
- const fetchWithAuth = createClaudeAiProxyFetch(globalThis.fetch);
210255
- const proxyOptions = getProxyFetchOptions();
210256
- const transportOptions = {
210257
- fetch: wrapFetchWithTimeout(fetchWithAuth),
210258
- requestInit: {
210259
- ...proxyOptions,
210260
- headers: {
210261
- "User-Agent": getMCPUserAgent(),
210262
- "X-Mcp-Client-Session-Id": getSessionId()
210263
- }
210264
- }
210265
- };
210266
- transport = new StreamableHTTPClientTransport(new URL(proxyUrl), transportOptions);
210267
- logMCPDebug(name, `claude.ai proxy transport created successfully`);
210268
210196
  } else if (feature("CHICAGO_MCP") && (serverRef.type === "stdio" || !serverRef.type) && isComputerUseMCPServer2(name)) {
210269
210197
  await Promise.resolve().then(() => init_mcpServer());
210270
210198
  await Promise.resolve();
@@ -210386,13 +210314,6 @@ var init_client4 = __esm(() => {
210386
210314
  if (error instanceof UnauthorizedError) {
210387
210315
  return handleRemoteAuthFailure(name, serverRef, "http");
210388
210316
  }
210389
- } else if (serverRef.type === "claudeai-proxy" && error instanceof Error) {
210390
- logMCPDebug(name, `claude.ai proxy connection failed after ${elapsed}ms: ${error.message}`);
210391
- logMCPError(name, error);
210392
- const errorCode = error.code;
210393
- if (errorCode === 401) {
210394
- return handleRemoteAuthFailure(name, serverRef, "claudeai-proxy");
210395
- }
210396
210317
  } else if (serverRef.type === "sse-ide" || serverRef.type === "ws-ide") {}
210397
210318
  if (inProcessServer) {
210398
210319
  inProcessServer.close().catch(() => {});
@@ -210474,7 +210395,7 @@ var init_client4 = __esm(() => {
210474
210395
  logMCPDebug(name, `Connection error: ${error.message}`);
210475
210396
  }
210476
210397
  }
210477
- if ((transportType === "http" || transportType === "claudeai-proxy") && isMcpSessionExpiredError(error)) {
210398
+ if (transportType === "http" && isMcpSessionExpiredError(error)) {
210478
210399
  logMCPDebug(name, `MCP session expired (server returned 404 with session-not-found), triggering reconnection`);
210479
210400
  closeTransportAndRejectPending("session expired");
210480
210401
  if (originalOnerror) {
@@ -210482,7 +210403,7 @@ var init_client4 = __esm(() => {
210482
210403
  }
210483
210404
  return;
210484
210405
  }
210485
- if (transportType === "sse" || transportType === "http" || transportType === "claudeai-proxy") {
210406
+ if (transportType === "sse" || transportType === "http") {
210486
210407
  if (error.message.includes("Maximum reconnection attempts")) {
210487
210408
  closeTransportAndRejectPending("SSE reconnection exhausted");
210488
210409
  if (originalOnerror) {
@@ -347307,6 +347228,18 @@ var init_fileSuggestions = __esm(() => {
347307
347228
  cachedTrackedDirs = [];
347308
347229
  });
347309
347230
 
347231
+ // src/tui/constants/oauth.ts
347232
+ function getOauthConfig() {
347233
+ return PROD_OAUTH_CONFIG;
347234
+ }
347235
+ var PROD_OAUTH_CONFIG;
347236
+ var init_oauth = __esm(() => {
347237
+ PROD_OAUTH_CONFIG = {
347238
+ BASE_API_URL: undefined,
347239
+ CLAUDE_AI_ORIGIN: undefined
347240
+ };
347241
+ });
347242
+
347310
347243
  // src/tui/services/api/sessionIngress.ts
347311
347244
  function getOrCreateSequentialAppend(sessionId) {
347312
347245
  let sequentialAppend = sequentialAppendBySession.get(sessionId);
@@ -368996,11 +368929,11 @@ function _temp419(a_0, b_0) {
368996
368929
  function _temp323(a, b) {
368997
368930
  return a.name.localeCompare(b.name);
368998
368931
  }
368999
- function _temp231(s_0) {
369000
- return s_0.client.config.type === "claudeai-proxy";
368932
+ function _temp231(_s_0) {
368933
+ return false;
369001
368934
  }
369002
- function _temp85(s) {
369003
- return s.client.config.type !== "claudeai-proxy";
368935
+ function _temp85(_s) {
368936
+ return true;
369004
368937
  }
369005
368938
  var import_compiler_runtime154, import_react109, jsx_dev_runtime189, SCOPE_ORDER;
369006
368939
  var init_MCPListPanel = __esm(() => {
@@ -370148,8 +370081,6 @@ function MCPRemoteServerMenu({
370148
370081
  }
370149
370082
  }, [server.client.type, server.name, toggleMcpServer, onCancel, onComplete]);
370150
370083
  const handleAuthenticate = import_react113.default.useCallback(async () => {
370151
- if (server.config.type === "claudeai-proxy")
370152
- return;
370153
370084
  setIsAuthenticating(true);
370154
370085
  setError(null);
370155
370086
  const controller = new AbortController;
@@ -370189,8 +370120,6 @@ function MCPRemoteServerMenu({
370189
370120
  }
370190
370121
  }, [server.isAuthenticated, server.config, server.name, onComplete, reconnectMcpServer, isEffectivelyAuthenticated]);
370191
370122
  const handleClearAuth = async () => {
370192
- if (server.config.type === "claudeai-proxy")
370193
- return;
370194
370123
  if (server.config) {
370195
370124
  await revokeServerTokens(server.name, server.config);
370196
370125
  await clearServerCache(server.name, {
@@ -370360,23 +370289,21 @@ function MCPRemoteServerMenu({
370360
370289
  value: "tools"
370361
370290
  });
370362
370291
  }
370363
- if (server.config.type !== "claudeai-proxy") {
370364
- if (isEffectivelyAuthenticated) {
370365
- menuOptions.push({
370366
- label: "Re-authenticate",
370367
- value: "reauth"
370368
- });
370369
- menuOptions.push({
370370
- label: "Clear authentication",
370371
- value: "clear-auth"
370372
- });
370373
- }
370374
- if (!isEffectivelyAuthenticated) {
370375
- menuOptions.push({
370376
- label: "Authenticate",
370377
- value: "auth"
370378
- });
370379
- }
370292
+ if (isEffectivelyAuthenticated) {
370293
+ menuOptions.push({
370294
+ label: "Re-authenticate",
370295
+ value: "reauth"
370296
+ });
370297
+ menuOptions.push({
370298
+ label: "Clear authentication",
370299
+ value: "clear-auth"
370300
+ });
370301
+ }
370302
+ if (!isEffectivelyAuthenticated) {
370303
+ menuOptions.push({
370304
+ label: "Authenticate",
370305
+ value: "auth"
370306
+ });
370380
370307
  }
370381
370308
  if (server.client.type !== "disabled") {
370382
370309
  if (server.client.type !== "needs-auth") {
@@ -370457,7 +370384,7 @@ function MCPRemoteServerMenu({
370457
370384
  }, undefined, true, undefined, this)
370458
370385
  ]
370459
370386
  }, undefined, true, undefined, this),
370460
- server.transport !== "claudeai-proxy" && /* @__PURE__ */ jsx_dev_runtime193.jsxDEV(ThemedBox_default, {
370387
+ /* @__PURE__ */ jsx_dev_runtime193.jsxDEV(ThemedBox_default, {
370461
370388
  children: [
370462
370389
  /* @__PURE__ */ jsx_dev_runtime193.jsxDEV(ThemedText, {
370463
370390
  bold: true,
@@ -371468,7 +371395,6 @@ function MCPSettings(t0) {
371468
371395
  const scope = client_0.config.scope;
371469
371396
  const isSSE = client_0.config.type === "sse";
371470
371397
  const isHTTP = client_0.config.type === "http";
371471
- const isClaudeAIProxy = client_0.config.type === "claudeai-proxy";
371472
371398
  let isAuthenticated = undefined;
371473
371399
  if (isSSE || isHTTP) {
371474
371400
  const authProvider = new ClaudeAuthProvider(client_0.name, client_0.config);
@@ -371482,36 +371408,27 @@ function MCPSettings(t0) {
371482
371408
  client: client_0,
371483
371409
  scope
371484
371410
  };
371485
- if (isClaudeAIProxy) {
371411
+ if (isSSE) {
371486
371412
  return {
371487
371413
  ...baseInfo,
371488
- transport: "claudeai-proxy",
371489
- isAuthenticated: false,
371414
+ transport: "sse",
371415
+ isAuthenticated,
371490
371416
  config: client_0.config
371491
371417
  };
371492
371418
  } else {
371493
- if (isSSE) {
371419
+ if (isHTTP) {
371494
371420
  return {
371495
371421
  ...baseInfo,
371496
- transport: "sse",
371422
+ transport: "http",
371497
371423
  isAuthenticated,
371498
371424
  config: client_0.config
371499
371425
  };
371500
371426
  } else {
371501
- if (isHTTP) {
371502
- return {
371503
- ...baseInfo,
371504
- transport: "http",
371505
- isAuthenticated,
371506
- config: client_0.config
371507
- };
371508
- } else {
371509
- return {
371510
- ...baseInfo,
371511
- transport: "stdio",
371512
- config: client_0.config
371513
- };
371514
- }
371427
+ return {
371428
+ ...baseInfo,
371429
+ transport: "stdio",
371430
+ config: client_0.config
371431
+ };
371515
371432
  }
371516
371433
  }
371517
371434
  }));
@@ -371608,7 +371525,7 @@ function MCPSettings(t0) {
371608
371525
  t9 = $[25];
371609
371526
  }
371610
371527
  const serverTools_0 = t9;
371611
- const defaultTab = viewState.server.transport === "claudeai-proxy" ? "Atlas Web" : "Atlas";
371528
+ const defaultTab = "Atlas";
371612
371529
  if (viewState.server.transport === "stdio") {
371613
371530
  let t10;
371614
371531
  if ($[26] !== viewState.server) {
@@ -408873,23 +408790,6 @@ function ManagePlugins({
408873
408790
  onComplete: handleMcpComplete,
408874
408791
  borderless: true
408875
408792
  }, undefined, false, undefined, this);
408876
- } else if (configType === "claudeai-proxy") {
408877
- const server_2 = {
408878
- name: client_3.name,
408879
- client: client_3,
408880
- scope: scope_5,
408881
- transport: "claudeai-proxy",
408882
- isAuthenticated: undefined,
408883
- config: client_3.config
408884
- };
408885
- return /* @__PURE__ */ jsx_dev_runtime291.jsxDEV(MCPRemoteServerMenu, {
408886
- server: server_2,
408887
- serverToolsCount,
408888
- onViewTools: handleMcpViewTools,
408889
- onCancel: handleMcpCancel,
408890
- onComplete: handleMcpComplete,
408891
- borderless: true
408892
- }, undefined, false, undefined, this);
408893
408793
  }
408894
408794
  setViewState("plugin-list");
408895
408795
  return null;
@@ -408930,7 +408830,7 @@ function ManagePlugins({
408930
408830
  name: client_4.name,
408931
408831
  client: client_4,
408932
408832
  scope: scope_6,
408933
- transport: "claudeai-proxy",
408833
+ transport: "http",
408934
408834
  isAuthenticated: undefined,
408935
408835
  config: client_4.config
408936
408836
  };
@@ -408989,7 +408889,7 @@ function ManagePlugins({
408989
408889
  name: client_5.name,
408990
408890
  client: client_5,
408991
408891
  scope: scope_7,
408992
- transport: "claudeai-proxy",
408892
+ transport: "http",
408993
408893
  isAuthenticated: undefined,
408994
408894
  config: client_5.config
408995
408895
  };
@@ -434804,8 +434704,19 @@ function withoutCcdSpawnEnvKeys(env) {
434804
434704
  }
434805
434705
  return out;
434806
434706
  }
434707
+ function withoutMcpOauthCimdVars(env) {
434708
+ if (!env)
434709
+ return {};
434710
+ const out = {};
434711
+ for (const [key, value] of Object.entries(env)) {
434712
+ if (key.toUpperCase() !== "MCP_OAUTH_CLIENT_METADATA_URL") {
434713
+ out[key] = value;
434714
+ }
434715
+ }
434716
+ return out;
434717
+ }
434807
434718
  function filterSettingsEnv(env) {
434808
- return withoutCcdSpawnEnvKeys(withoutHostManagedProviderVars(withoutSSHTunnelVars(env)));
434719
+ return withoutCcdSpawnEnvKeys(withoutMcpOauthCimdVars(withoutHostManagedProviderVars(withoutSSHTunnelVars(env))));
434809
434720
  }
434810
434721
  function applySafeConfigEnvironmentVariables2() {
434811
434722
  if (ccdSpawnEnvKeys === undefined) {
@@ -473529,13 +473440,13 @@ function _temp436(client_2) {
473529
473440
  return false;
473530
473441
  }
473531
473442
  function _temp350(client_1) {
473532
- return client_1.type === "needs-auth" && client_1.config.type !== "claudeai-proxy";
473443
+ return client_1.type === "needs-auth";
473533
473444
  }
473534
473445
  function _temp279(client_0) {
473535
473446
  return false;
473536
473447
  }
473537
473448
  function _temp181(client) {
473538
- return client.type === "failed" && client.config.type !== "sse-ide" && client.config.type !== "ws-ide" && client.config.type !== "claudeai-proxy";
473449
+ return client.type === "failed" && client.config.type !== "sse-ide" && client.config.type !== "ws-ide";
473539
473450
  }
473540
473451
  var import_compiler_runtime307, import_react264, jsx_dev_runtime418, EMPTY_MCP_CLIENTS;
473541
473452
  var init_useMcpConnectivityStatus = __esm(() => {
@@ -490411,8 +490322,6 @@ async function mcpListHandler2() {
490411
490322
  console.log(`${name}: ${server.url} (SSE) - ${status}`);
490412
490323
  } else if (server.type === "http") {
490413
490324
  console.log(`${name}: ${server.url} (HTTP) - ${status}`);
490414
- } else if (server.type === "claudeai-proxy") {
490415
- console.log(`${name}: ${server.url} - ${status}`);
490416
490325
  } else if (!server.type || server.type === "stdio") {
490417
490326
  const stdioServer = server;
490418
490327
  const args = Array.isArray(stdioServer.args) ? stdioServer.args : [];
@@ -490440,7 +490349,7 @@ async function mcpGetHandler2(name) {
490440
490349
  console.log(` ${key}: ${value}`);
490441
490350
  }
490442
490351
  }
490443
- if (server.oauth?.clientId || server.oauth?.callbackPort) {
490352
+ if (server.oauth?.clientId || server.oauth?.callbackPort || server.oauth?.clientMetadataUrl) {
490444
490353
  const parts = [];
490445
490354
  if (server.oauth.clientId) {
490446
490355
  parts.push("client_id configured");
@@ -490450,6 +490359,8 @@ async function mcpGetHandler2(name) {
490450
490359
  }
490451
490360
  if (server.oauth.callbackPort)
490452
490361
  parts.push(`callback_port ${server.oauth.callbackPort}`);
490362
+ if (server.oauth.clientMetadataUrl)
490363
+ parts.push(`client_metadata_url ${server.oauth.clientMetadataUrl}`);
490453
490364
  console.log(` OAuth: ${parts.join(", ")}`);
490454
490365
  }
490455
490366
  } else if (server.type === "http") {
@@ -490461,7 +490372,7 @@ async function mcpGetHandler2(name) {
490461
490372
  console.log(` ${key}: ${value}`);
490462
490373
  }
490463
490374
  }
490464
- if (server.oauth?.clientId || server.oauth?.callbackPort) {
490375
+ if (server.oauth?.clientId || server.oauth?.callbackPort || server.oauth?.clientMetadataUrl) {
490465
490376
  const parts = [];
490466
490377
  if (server.oauth.clientId) {
490467
490378
  parts.push("client_id configured");
@@ -490471,6 +490382,8 @@ async function mcpGetHandler2(name) {
490471
490382
  }
490472
490383
  if (server.oauth.callbackPort)
490473
490384
  parts.push(`callback_port ${server.oauth.callbackPort}`);
490385
+ if (server.oauth.clientMetadataUrl)
490386
+ parts.push(`client_metadata_url ${server.oauth.clientMetadataUrl}`);
490474
490387
  console.log(` OAuth: ${parts.join(", ")}`);
490475
490388
  }
490476
490389
  } else if (server.type === "stdio") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlasharness/atlascode",
3
- "version": "0.1.73",
3
+ "version": "0.1.74",
4
4
  "description": "AtlasCode \u2014 Coding Agent for the domestic computing ecosystem (Ascend NPU + domestic LLM backends)",
5
5
  "bin": {
6
6
  "atlas": "dist/cli.js",