@atlasharness/atlascode 0.1.15 → 0.1.16

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 +112 -46
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -20052,6 +20052,17 @@ var init_openai = __esm(() => {
20052
20052
  init_bedrock2();
20053
20053
  });
20054
20054
 
20055
+ // src/modelprovider/constants.ts
20056
+ var API_IMAGE_MAX_BASE64_SIZE, IMAGE_TARGET_RAW_SIZE, PDF_TARGET_RAW_SIZE, API_PDF_MAX_PAGES = 100, LLM_TIMEOUT_DEFAULT_MS = 600000, LLM_TIMEOUT_CAP_MS = 1800000, SUMMARIZE_CONNECTOR_TEXT_BETA_HEADER, AFK_MODE_BETA_HEADER;
20057
+ var init_constants2 = __esm(() => {
20058
+ init_shared();
20059
+ API_IMAGE_MAX_BASE64_SIZE = 5 * 1024 * 1024;
20060
+ IMAGE_TARGET_RAW_SIZE = API_IMAGE_MAX_BASE64_SIZE * 3 / 4;
20061
+ PDF_TARGET_RAW_SIZE = 20 * 1024 * 1024;
20062
+ SUMMARIZE_CONNECTOR_TEXT_BETA_HEADER = feature("CONNECTOR_TEXT") ? "summarize-connector-text-2026-03-13" : "";
20063
+ AFK_MODE_BETA_HEADER = feature("TRANSCRIPT_CLASSIFIER") ? "afk-mode-2026-01-31" : "";
20064
+ });
20065
+
20055
20066
  // src/modelprovider/clients.ts
20056
20067
  function clientCacheKey(provider, baseURL, apiKey) {
20057
20068
  return provider + "|" + (baseURL || "") + "|" + (apiKey || "");
@@ -20066,7 +20077,7 @@ function getClientForEntry(entry) {
20066
20077
  baseURL: entry.baseURL,
20067
20078
  apiKey: entry.apiKey,
20068
20079
  maxRetries: 0,
20069
- timeout: 120000
20080
+ timeout: LLM_TIMEOUT_DEFAULT_MS
20070
20081
  });
20071
20082
  clientCache.set(key, client);
20072
20083
  return client;
@@ -20074,6 +20085,7 @@ function getClientForEntry(entry) {
20074
20085
  var clientCache;
20075
20086
  var init_clients = __esm(() => {
20076
20087
  init_openai();
20088
+ init_constants2();
20077
20089
  clientCache = new Map;
20078
20090
  });
20079
20091
 
@@ -27007,6 +27019,27 @@ var init_params = __esm(() => {
27007
27019
  init_effort();
27008
27020
  });
27009
27021
 
27022
+ // src/modelprovider/types.ts
27023
+ var APIError2, APIConnectionError2, APIConnectionTimeoutError2;
27024
+ var init_types2 = __esm(() => {
27025
+ APIError2 = class APIError2 extends Error {
27026
+ status;
27027
+ error;
27028
+ constructor(message, status, error) {
27029
+ super(message);
27030
+ this.name = "APIError";
27031
+ if (status !== undefined)
27032
+ this.status = status;
27033
+ if (error !== undefined)
27034
+ this.error = error;
27035
+ }
27036
+ };
27037
+ APIConnectionError2 = class APIConnectionError2 extends APIError2 {
27038
+ };
27039
+ APIConnectionTimeoutError2 = class APIConnectionTimeoutError2 extends APIConnectionError2 {
27040
+ };
27041
+ });
27042
+
27010
27043
  // src/modelprovider/modelprovider.ts
27011
27044
  import { randomUUID } from "crypto";
27012
27045
  function mapOpenAIUsage(u) {
@@ -27025,6 +27058,29 @@ function isRetryableError(err) {
27025
27058
  const msg = String(err?.message || err?.code || "");
27026
27059
  return /timeout|ECONN|EPIPE|fetch failed|socket|aborted/i.test(msg);
27027
27060
  }
27061
+ function isClientRequestTimeout(err) {
27062
+ if (!err || typeof err !== "object")
27063
+ return false;
27064
+ const e = err;
27065
+ if (err instanceof APIConnectionTimeoutError2)
27066
+ return true;
27067
+ if (e.name === "APIConnectionTimeoutError" || e.name === "APITimeoutError")
27068
+ return true;
27069
+ return false;
27070
+ }
27071
+ function shouldRetryModelError(err, signal) {
27072
+ if (signal?.aborted)
27073
+ return false;
27074
+ if (isClientRequestTimeout(err))
27075
+ return false;
27076
+ return isRetryableError(err);
27077
+ }
27078
+ function llmTimeoutRemediationHint(error, currentTimeoutMs) {
27079
+ if (!isClientRequestTimeout(error))
27080
+ return null;
27081
+ const head = typeof currentTimeoutMs === "number" && currentTimeoutMs > 0 ? `当前超时 ${Math.round(currentTimeoutMs / 1000)}s` : "慢模型长生成可能超过缺省超时";
27082
+ return `LLM 请求超时(${head})。可调大:env ATLAS_LLM_TIMEOUT=<毫秒> 或 settings.json llmTimeoutMs 键(上限 ${Math.round(LLM_TIMEOUT_CAP_MS / 60000)}min)。`;
27083
+ }
27028
27084
  function startLlmWaitHeartbeat(modelId, attempt, totalRetries) {
27029
27085
  const startedAt = Date.now();
27030
27086
  const id = setInterval(() => {
@@ -27038,10 +27094,13 @@ function startLlmWaitHeartbeat(modelId, attempt, totalRetries) {
27038
27094
  class OpenAIProvider {
27039
27095
  maxRetriesPerModel;
27040
27096
  timeoutMs;
27041
- constructor(maxRetriesPerModel = 3, timeoutMs = 120000) {
27097
+ constructor(maxRetriesPerModel = 3, timeoutMs = LLM_TIMEOUT_DEFAULT_MS) {
27042
27098
  this.maxRetriesPerModel = maxRetriesPerModel;
27043
27099
  this.timeoutMs = timeoutMs;
27044
27100
  }
27101
+ getTimeoutMs() {
27102
+ return this.timeoutMs;
27103
+ }
27045
27104
  async chat(args) {
27046
27105
  const refs = getRoleModels(args.role, args.sessionModel, args.fallbackModel);
27047
27106
  if (refs.length === 0) {
@@ -27128,7 +27187,7 @@ class OpenAIProvider {
27128
27187
  };
27129
27188
  } catch (err) {
27130
27189
  lastErr = err;
27131
- if (!isRetryableError(err) || args.signal?.aborted)
27190
+ if (!shouldRetryModelError(err, args.signal))
27132
27191
  break;
27133
27192
  }
27134
27193
  }
@@ -27178,7 +27237,7 @@ class OpenAIProvider {
27178
27237
  break;
27179
27238
  } catch (err) {
27180
27239
  lastErr = err;
27181
- if (!isRetryableError(err) || args.signal?.aborted)
27240
+ if (!shouldRetryModelError(err, args.signal))
27182
27241
  break;
27183
27242
  }
27184
27243
  }
@@ -27188,7 +27247,7 @@ class OpenAIProvider {
27188
27247
  if (lastErr) {
27189
27248
  const message = lastErr instanceof Error ? lastErr.message || lastErr.name : String(lastErr);
27190
27249
  const code = lastErr?.name === "TimeoutError" ? "TIMEOUT" : "API_ERROR";
27191
- yield { type: "error", code, message, retryable: isRetryableError(lastErr) };
27250
+ yield { type: "error", code, message, retryable: shouldRetryModelError(lastErr, args.signal) };
27192
27251
  return;
27193
27252
  }
27194
27253
  throw new Error(`No models configured for role '${args.role}'.`);
@@ -27434,15 +27493,15 @@ class OpenAIProvider {
27434
27493
  var init_modelprovider = __esm(() => {
27435
27494
  init_openai();
27436
27495
  init_clients();
27496
+ init_constants2();
27437
27497
  init_roles7();
27438
27498
  init_shared();
27439
27499
  init_shared();
27440
27500
  init_params();
27501
+ init_types2();
27502
+ init_constants2();
27441
27503
  });
27442
27504
 
27443
- // src/modelprovider/types.ts
27444
- var init_types2 = () => {};
27445
-
27446
27505
  // src/modelprovider/errorUtils.ts
27447
27506
  function extractConnectionErrorDetails(error) {
27448
27507
  if (!error || typeof error !== "object") {
@@ -27581,17 +27640,6 @@ var init_errorUtils = __esm(() => {
27581
27640
  ]);
27582
27641
  });
27583
27642
 
27584
- // src/modelprovider/constants.ts
27585
- var API_IMAGE_MAX_BASE64_SIZE, IMAGE_TARGET_RAW_SIZE, PDF_TARGET_RAW_SIZE, API_PDF_MAX_PAGES = 100, SUMMARIZE_CONNECTOR_TEXT_BETA_HEADER, AFK_MODE_BETA_HEADER;
27586
- var init_constants2 = __esm(() => {
27587
- init_shared();
27588
- API_IMAGE_MAX_BASE64_SIZE = 5 * 1024 * 1024;
27589
- IMAGE_TARGET_RAW_SIZE = API_IMAGE_MAX_BASE64_SIZE * 3 / 4;
27590
- PDF_TARGET_RAW_SIZE = 20 * 1024 * 1024;
27591
- SUMMARIZE_CONNECTOR_TEXT_BETA_HEADER = feature("CONNECTOR_TEXT") ? "summarize-connector-text-2026-03-13" : "";
27592
- AFK_MODE_BETA_HEADER = feature("TRANSCRIPT_CLASSIFIER") ? "afk-mode-2026-01-31" : "";
27593
- });
27594
-
27595
27643
  // src/modelprovider/errorMessaging.ts
27596
27644
  function registerErrorMessagingPorts(p) {
27597
27645
  ports = p;
@@ -27731,10 +27779,22 @@ var init_queryWithRoleFallback = __esm(() => {
27731
27779
 
27732
27780
  // src/modelprovider/index.ts
27733
27781
  function getModelProvider() {
27734
- return _provider ??= new OpenAIProvider(3, resolveLlmTimeoutMs());
27782
+ return _provider ??= new OpenAIProvider(3, resolveLlmTimeoutMs(process.env.ATLAS_LLM_TIMEOUT, llmTimeoutSettingsSource?.()));
27783
+ }
27784
+ function setLlmTimeoutSettingsSource(next) {
27785
+ llmTimeoutSettingsSource = next;
27786
+ }
27787
+ function getCurrentLlmTimeoutMs() {
27788
+ return resolveLlmTimeoutMs(process.env.ATLAS_LLM_TIMEOUT, llmTimeoutSettingsSource?.());
27735
27789
  }
27736
- function resolveLlmTimeoutMs() {
27737
- return parseBoundedIntEnv("ATLAS_LLM_TIMEOUT", process.env.ATLAS_LLM_TIMEOUT, 120000, 1800000, 1).effective;
27790
+ function resolveLlmTimeoutMs(envRaw = process.env.ATLAS_LLM_TIMEOUT, settingsMs) {
27791
+ const fromSettings = () => typeof settingsMs === "number" && Number.isInteger(settingsMs) && settingsMs >= 1 ? Math.min(settingsMs, LLM_TIMEOUT_CAP_MS) : LLM_TIMEOUT_DEFAULT_MS;
27792
+ if (envRaw === undefined || envRaw === "")
27793
+ return fromSettings();
27794
+ const env = parseBoundedIntEnv("ATLAS_LLM_TIMEOUT", envRaw, LLM_TIMEOUT_DEFAULT_MS, LLM_TIMEOUT_CAP_MS, 1);
27795
+ if (env.status !== "invalid")
27796
+ return env.effective;
27797
+ return fromSettings();
27738
27798
  }
27739
27799
  function lazyProxy(resolve) {
27740
27800
  return new Proxy({}, {
@@ -27745,13 +27805,16 @@ function lazyProxy(resolve) {
27745
27805
  }
27746
27806
  });
27747
27807
  }
27748
- var _provider, modelProvider;
27808
+ var _provider, llmTimeoutSettingsSource = null, modelProvider;
27749
27809
  var init_modelprovider2 = __esm(() => {
27750
27810
  init_modelprovider();
27811
+ init_constants2();
27751
27812
  init_shared();
27813
+ init_constants2();
27752
27814
  init_modelprovider();
27753
27815
  init_types2();
27754
27816
  init_modelErrors();
27817
+ init_modelprovider();
27755
27818
  init_params();
27756
27819
  init_roles7();
27757
27820
  init_errorUtils();
@@ -76317,7 +76380,7 @@ Important:
76317
76380
  // src/engine/tools/skill/skillTool.ts
76318
76381
  import { randomUUID as randomUUID14 } from "crypto";
76319
76382
  async function getAllCommands() {
76320
- return getCommands(getProjectRoot());
76383
+ return getCommands(process.cwd());
76321
76384
  }
76322
76385
  function getToolUseIDFromParentMessage(parentMessage, toolName) {
76323
76386
  if (!parentMessage)
@@ -76388,7 +76451,6 @@ function skillHasOnlySafeProperties(command) {
76388
76451
  }
76389
76452
  var SKILL_TOOL_INPUT_SCHEMA, SAFE_SKILL_PROPERTIES, SkillTool;
76390
76453
  var init_skillTool = __esm(() => {
76391
- init_bootstrap();
76392
76454
  init_shared();
76393
76455
  init_permissions3();
76394
76456
  init_modelprovider2();
@@ -76455,7 +76517,7 @@ var init_skillTool = __esm(() => {
76455
76517
  return skill ?? "";
76456
76518
  },
76457
76519
  async description() {
76458
- return getSkillPrompt(getProjectRoot());
76520
+ return getSkillPrompt(process.cwd());
76459
76521
  },
76460
76522
  async checkPermissions(input, context) {
76461
76523
  const { skill, args } = input;
@@ -121613,6 +121675,7 @@ var isMcpServerCommandEntry = () => ({}), isMcpServerNameEntry = () => ({}), isM
121613
121675
  object({ kind: literal("window"), tokens: number2().int().min(1000) }),
121614
121676
  object({ kind: literal("pct"), pct: number2().min(1).max(100) })
121615
121677
  ]).optional(),
121678
+ llmTimeoutMs: number2().int().positive().optional(),
121616
121679
  prefersReducedMotion: boolean2().optional(),
121617
121680
  syntaxHighlightingDisabled: boolean2().optional(),
121618
121681
  spinnerTipsEnabled: boolean2().optional(),
@@ -148277,28 +148340,28 @@ function getEventPriority(eventType) {
148277
148340
  case "focus":
148278
148341
  case "blur":
148279
148342
  case "paste":
148280
- return import_constants48.DiscreteEventPriority;
148343
+ return import_constants53.DiscreteEventPriority;
148281
148344
  case "resize":
148282
148345
  case "scroll":
148283
148346
  case "mousemove":
148284
- return import_constants48.ContinuousEventPriority;
148347
+ return import_constants53.ContinuousEventPriority;
148285
148348
  default:
148286
- return import_constants48.DefaultEventPriority;
148349
+ return import_constants53.DefaultEventPriority;
148287
148350
  }
148288
148351
  }
148289
148352
 
148290
148353
  class Dispatcher {
148291
148354
  currentEvent = null;
148292
- currentUpdatePriority = import_constants48.DefaultEventPriority;
148355
+ currentUpdatePriority = import_constants53.DefaultEventPriority;
148293
148356
  discreteUpdates = null;
148294
148357
  resolveEventPriority() {
148295
- if (this.currentUpdatePriority !== import_constants48.NoEventPriority) {
148358
+ if (this.currentUpdatePriority !== import_constants53.NoEventPriority) {
148296
148359
  return this.currentUpdatePriority;
148297
148360
  }
148298
148361
  if (this.currentEvent) {
148299
148362
  return getEventPriority(this.currentEvent.type);
148300
148363
  }
148301
- return import_constants48.DefaultEventPriority;
148364
+ return import_constants53.DefaultEventPriority;
148302
148365
  }
148303
148366
  dispatch(target, event) {
148304
148367
  const previousEvent = this.currentEvent;
@@ -148323,18 +148386,18 @@ class Dispatcher {
148323
148386
  dispatchContinuous(target, event) {
148324
148387
  const previousPriority = this.currentUpdatePriority;
148325
148388
  try {
148326
- this.currentUpdatePriority = import_constants48.ContinuousEventPriority;
148389
+ this.currentUpdatePriority = import_constants53.ContinuousEventPriority;
148327
148390
  return this.dispatch(target, event);
148328
148391
  } finally {
148329
148392
  this.currentUpdatePriority = previousPriority;
148330
148393
  }
148331
148394
  }
148332
148395
  }
148333
- var import_constants48;
148396
+ var import_constants53;
148334
148397
  var init_dispatcher = __esm(() => {
148335
148398
  init_log5();
148336
148399
  init_event_handlers();
148337
- import_constants48 = __toESM(require_constants2(), 1);
148400
+ import_constants53 = __toESM(require_constants2(), 1);
148338
148401
  });
148339
148402
 
148340
148403
  // src/tui/ink/events/terminal-event.ts
@@ -157141,7 +157204,7 @@ function applyPositionedHighlight(screen, stylePool, positions, rowOffset, curre
157141
157204
  }
157142
157205
  return true;
157143
157206
  }
157144
- var import_constants50, timing;
157207
+ var import_constants55, timing;
157145
157208
  var init_render_to_screen = __esm(() => {
157146
157209
  init_debug();
157147
157210
  init_dom();
@@ -157150,7 +157213,7 @@ var init_render_to_screen = __esm(() => {
157150
157213
  init_reconciler();
157151
157214
  init_render_node_to_output();
157152
157215
  init_screen();
157153
- import_constants50 = __toESM(require_constants2(), 1);
157216
+ import_constants55 = __toESM(require_constants2(), 1);
157154
157217
  timing = { reconcile: 0, yoga: 0, paint: 0, scan: 0, calls: 0 };
157155
157218
  });
157156
157219
 
@@ -157456,7 +157519,7 @@ class Ink {
157456
157519
  };
157457
157520
  }
157458
157521
  };
157459
- this.container = reconciler_default.createContainer(this.rootNode, import_constants51.ConcurrentRoot, null, false, null, "id", noop_default, noop_default, noop_default, noop_default);
157522
+ this.container = reconciler_default.createContainer(this.rootNode, import_constants56.ConcurrentRoot, null, false, null, "id", noop_default, noop_default, noop_default, noop_default);
157460
157523
  if (false) {}
157461
157524
  }
157462
157525
  handleResume = () => {
@@ -158269,7 +158332,7 @@ function drainStdin(stdin = process.stdin) {
158269
158332
  }
158270
158333
  }
158271
158334
  }
158272
- var import_constants51, jsx_dev_runtime8, ALT_SCREEN_ANCHOR_CURSOR, CURSOR_HOME_PATCH, ERASE_THEN_HOME_PATCH, CONSOLE_STDOUT_METHODS, CONSOLE_STDERR_METHODS;
158335
+ var import_constants56, jsx_dev_runtime8, ALT_SCREEN_ANCHOR_CURSOR, CURSOR_HOME_PATCH, ERASE_THEN_HOME_PATCH, CONSOLE_STDOUT_METHODS, CONSOLE_STDERR_METHODS;
158273
158336
  var init_ink = __esm(() => {
158274
158337
  init_noop();
158275
158338
  init_throttle2();
@@ -158302,7 +158365,7 @@ var init_ink = __esm(() => {
158302
158365
  init_dec();
158303
158366
  init_osc();
158304
158367
  init_useTerminalNotification();
158305
- import_constants51 = __toESM(require_constants2(), 1);
158368
+ import_constants56 = __toESM(require_constants2(), 1);
158306
158369
  jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
158307
158370
  ALT_SCREEN_ANCHOR_CURSOR = Object.freeze({
158308
158371
  x: 0,
@@ -271660,7 +271723,7 @@ async function* runAgent2({
271660
271723
  }
271661
271724
  const skillsToPreload = agentDefinition.skills ?? [];
271662
271725
  if (skillsToPreload.length > 0) {
271663
- const allSkills = await getSkillToolCommands2(getProjectRoot());
271726
+ const allSkills = await getSkillToolCommands2(process.cwd());
271664
271727
  const validSkills = [];
271665
271728
  for (const skillName of skillsToPreload) {
271666
271729
  const resolvedName = resolveSkillName(skillName, allSkills, agentDefinition);
@@ -274526,8 +274589,8 @@ var init_UI10 = __esm(() => {
274526
274589
  async function getAllCommands2(context) {
274527
274590
  const mcpSkills = context.getAppState().mcp.commands.filter((cmd) => cmd.type === "prompt" && cmd.loadedFrom === "mcp");
274528
274591
  if (mcpSkills.length === 0)
274529
- return getCommands2(getProjectRoot());
274530
- const localCommands = await getCommands2(getProjectRoot());
274592
+ return getCommands2(process.cwd());
274593
+ const localCommands = await getCommands2(process.cwd());
274531
274594
  return uniqBy_default([...localCommands, ...mcpSkills], "name");
274532
274595
  }
274533
274596
  async function executeForkedSkill2(command, commandName, args, context, canUseTool, parentMessage, onProgress) {
@@ -274623,7 +274686,6 @@ function isOfficialMarketplaceSkill(command) {
274623
274686
  var inputSchema14, outputSchema12, SkillTool2, SAFE_SKILL_PROPERTIES2;
274624
274687
  var init_SkillTool = __esm(() => {
274625
274688
  init_uniqBy();
274626
- init_bootstrap();
274627
274689
  init_commands5();
274628
274690
  init_Tool();
274629
274691
  init_debug();
@@ -274673,7 +274735,7 @@ var init_SkillTool = __esm(() => {
274673
274735
  return outputSchema12();
274674
274736
  },
274675
274737
  description: async ({ skill }) => `Execute skill: ${skill}`,
274676
- prompt: async () => getPrompt20(getProjectRoot()),
274738
+ prompt: async () => getPrompt20(process.cwd()),
274677
274739
  toAutoClassifierInput: ({ skill }) => skill ?? "",
274678
274740
  async validateInput({ skill }, context) {
274679
274741
  const trimmed = skill.trim();
@@ -430263,6 +430325,7 @@ function wireContextHostPorts() {
430263
430325
  });
430264
430326
  setAutoCompactSettingsSource(() => getGlobalConfig().autoCompactEnabled);
430265
430327
  setAutoCompactWindowSettingsSource(() => getInitialSettings2().autoCompactWindow);
430328
+ setLlmTimeoutSettingsSource(() => getInitialSettings2().llmTimeoutMs);
430266
430329
  setTimeBasedMCConfigSource(() => getFeatureValue_CACHED_MAY_BE_STALE("atlas_slate_heron", TIME_BASED_MC_CONFIG_DEFAULTS));
430267
430330
  clearPostCompactResetsForTesting();
430268
430331
  if (feature("CONTEXT_COLLAPSE")) {
@@ -430291,6 +430354,7 @@ function wireContextHostPorts() {
430291
430354
  }
430292
430355
  var init_contextHostWiring = __esm(() => {
430293
430356
  init_shared();
430357
+ init_modelprovider2();
430294
430358
  init_engine();
430295
430359
  init_config6();
430296
430360
  init_settings3();
@@ -475922,7 +475986,8 @@ Error: sandbox required but unavailable: ${reason}
475922
475986
  await onQueryImpl(latestMessages, newMessages, abortController, shouldQuery, additionalAllowedTools, mainLoopModelParam, effort);
475923
475987
  } catch (error) {
475924
475988
  logError3(error);
475925
- setMessages((prev) => [...prev, createSystemMessage(`本轮执行出错:${errorMessage2(error)}。请重试。`, "error")]);
475989
+ const llmTimeoutHint = llmTimeoutRemediationHint(error, getCurrentLlmTimeoutMs());
475990
+ setMessages((prev) => [...prev, createSystemMessage(`本轮执行出错:${errorMessage2(error)}。${llmTimeoutHint ? `${llmTimeoutHint} ` : ""}请重试。`, "error")]);
475926
475991
  } finally {
475927
475992
  if (queryGuard.end(thisGeneration)) {
475928
475993
  setLastQueryCompletionTime(Date.now());
@@ -477601,6 +477666,7 @@ Note: ctrl + z now suspends AtlasHarness, ctrl + _ undoes input.
477601
477666
  var import_compiler_runtime323, React137, import_react280, jsx_dev_runtime427, UltraplanChoiceDialog = () => null, UltraplanLaunchDialog = () => null, launchUltraplan2 = null, useVoiceIntegration2, VoiceKeybindingHandler2, useAntOrgWarningNotification = () => {}, getCoordinatorUserContext3, SUGGEST_BG_PR_NOOP = (_p, _n) => false, useScheduledTasks2, EMPTY_MCP_CLIENTS2, RECENT_SCROLL_REPIN_WINDOW_MS = 3000, TITLE_ANIMATION_FRAMES, TITLE_STATIC_PREFIX = "✳", TITLE_ANIMATION_INTERVAL_MS = 960;
477602
477667
  var init_REPL = __esm(() => {
477603
477668
  init_shared();
477669
+ init_modelprovider2();
477604
477670
  init_bootstrap();
477605
477671
  init_bootstrapState();
477606
477672
  init_tokenBudget();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlasharness/atlascode",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
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",