@atlasharness/atlascode 0.1.33 → 0.1.34

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 (3) hide show
  1. package/README.md +6 -5
  2. package/dist/cli.js +149 -44
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -10,13 +10,14 @@
10
10
 
11
11
  ## 安装
12
12
 
13
- 两种通道,命令名均为 `atlas`:
13
+ 两种通道,装好后得双命令:`atlascode`(正名,与包名 / 品牌全名一致)/ `atlas`
14
+ (别名,更短)——二者同起 TUI,行为等价(O-3,0.1.34):
14
15
 
15
16
  **① npm 一行(推荐,仅需 [node](https://nodejs.org) ≥ 20,无需 bun/源码构建)**
16
17
 
17
18
  ```bash
18
19
  npm install -g @atlasharness/atlascode
19
- atlas --help
20
+ atlascode --help # 别名 `atlas` 同效
20
21
  ```
21
22
 
22
23
  **② git 源码**(前置:`git` + [bun](https://bun.sh)(构建)+ `node`(运行))
@@ -30,9 +31,9 @@ atlas --help
30
31
  可覆盖 env:`ATLAS_INSTALL_ROOT`(默认 `~/.atlas/atlascode`)/ `ATLAS_BIN_DIR`
31
32
  (默认 `~/.atlas/bin`)/ `ATLAS_BIN_NAME`(默认 `atlas`)。
32
33
 
33
- > P-1 占位:发布仓 `vincentlau2046/AtlasCode` 尚未 push(P-1 未解除),git 通道
34
- > 缺省 REPO 为预期地址——远端未建前请显式传参(本地仓路径或 `ATLAS_REPO`);
35
- > npm 通道不依赖 git 远端,发布后即可用。
34
+ > git 通道缺省 REPO = 公开发布仓 `vincentlau2046/AtlasCode`(P-1 已解除);
35
+ > 本地开发可显式传参(本地仓路径或 `ATLAS_REPO`);npm 通道不依赖 git 远端,
36
+ > 发布后即可用。
36
37
  > 装好后远端升级:git 通道跑 `atlas update`(= `git pull --ff-only` + `bun install`
37
38
  > + build,原地重建符号链接即刻生效);npm 通道跑 `npm install -g
38
39
  > @atlasharness/atlascode@latest`。本地 dev loop 见 `docs/dev-loop.md`。
package/dist/cli.js CHANGED
@@ -83531,10 +83531,18 @@ var init_setup = __esm(() => {
83531
83531
  // src/cli/dispatch.ts
83532
83532
  async function main() {
83533
83533
  enforceNoDebugGuard();
83534
- process.stderr.write(`[${PRODUCT_BRAND}] main() starting...
83534
+ const debugGate = isEnvTruthy(process.env.DEBUG) || process.argv.includes("--debug") || process.argv.includes("-d") || process.argv.some((arg) => arg.startsWith("--debug="));
83535
+ if (debugGate) {
83536
+ process.stderr.write(`[${PRODUCT_BRAND}] main() starting...
83535
83537
  `);
83538
+ }
83536
83539
  process.env.NoDefaultCurrentDirectoryInExePath = "1";
83537
- process.on("exit", () => {});
83540
+ process.on("exit", () => {
83541
+ try {
83542
+ process.stderr.write(`[atlas][exit] code=${process.exitCode ?? 0}
83543
+ `);
83544
+ } catch {}
83545
+ });
83538
83546
  process.on("SIGINT", () => {
83539
83547
  if (process.argv.includes("-p") || process.argv.includes("--print")) {
83540
83548
  return;
@@ -158762,8 +158770,8 @@ var init_theme = __esm(() => {
158762
158770
  brand_mark_bg: "rgb(0,0,0)",
158763
158771
  ascendBlue: "rgb(0,102,255)",
158764
158772
  ascendViolet: "rgb(155,58,138)",
158765
- ascendAmber: "rgb(255,184,0)",
158766
- ascendFlame: "rgb(255,140,66)",
158773
+ ascendAmber: "rgb(180,83,9)",
158774
+ ascendFlame: "rgb(194,65,12)",
158767
158775
  userMessageBackground: "rgb(240, 240, 240)",
158768
158776
  userMessageBackgroundHover: "rgb(252, 252, 252)",
158769
158777
  messageActionsBackground: "rgb(232, 236, 244)",
@@ -158981,8 +158989,8 @@ var init_theme = __esm(() => {
158981
158989
  brand_mark_bg: "rgb(0,0,0)",
158982
158990
  ascendBlue: "rgb(0,102,255)",
158983
158991
  ascendViolet: "rgb(155,58,138)",
158984
- ascendAmber: "rgb(255,184,0)",
158985
- ascendFlame: "rgb(255,140,66)",
158992
+ ascendAmber: "rgb(180,83,9)",
158993
+ ascendFlame: "rgb(194,65,12)",
158986
158994
  userMessageBackground: "rgb(220, 220, 220)",
158987
158995
  userMessageBackgroundHover: "rgb(232, 232, 232)",
158988
158996
  messageActionsBackground: "rgb(210, 216, 226)",
@@ -309210,6 +309218,9 @@ function forceExit(exitCode) {
309210
309218
  process.exit(exitCode);
309211
309219
  } catch (e) {
309212
309220
  if (false) {}
309221
+ logForDiagnosticsNoPII("error", "exit_force_sigkill", {
309222
+ exit_code: exitCode
309223
+ });
309213
309224
  process.kill(process.pid, "SIGKILL");
309214
309225
  }
309215
309226
  if (true) {
@@ -309234,9 +309245,16 @@ async function gracefulShutdown(exitCode = 0, reason = "other", options) {
309234
309245
  return;
309235
309246
  }
309236
309247
  shutdownInProgress = true;
309248
+ logForDiagnosticsNoPII("info", "exit_reason", {
309249
+ exit_code: exitCode,
309250
+ reason: String(reason)
309251
+ });
309237
309252
  await Promise.resolve().then(() => init_hooks7());
309238
309253
  const sessionEndTimeoutMs = getSessionEndHookTimeoutMs();
309239
309254
  failsafeTimer = setTimeout((code) => {
309255
+ logForDiagnosticsNoPII("warn", "shutdown_failsafe", {
309256
+ exit_code: code
309257
+ });
309240
309258
  cleanupTerminalModes();
309241
309259
  printResumeHint();
309242
309260
  forceExit(code);
@@ -371035,6 +371053,71 @@ var init_logoV2Utils = __esm(() => {
371035
371053
  cachedActivity = [];
371036
371054
  });
371037
371055
 
371056
+ // src/tui/components/LogoV2/markDegrade.ts
371057
+ function getBeamArt(tier) {
371058
+ switch (tier) {
371059
+ case 2:
371060
+ return BEAM_ART_T2;
371061
+ case 1:
371062
+ return BEAM_ART_T1;
371063
+ default:
371064
+ return BEAM_ART_T0;
371065
+ }
371066
+ }
371067
+ function resolveMarkTier(input = {}, blocklist = MARK_BLOCKLIST) {
371068
+ const envTier = input.degradeEnv?.trim();
371069
+ if (envTier === "2")
371070
+ return 2;
371071
+ if (envTier === "1")
371072
+ return 1;
371073
+ if (input.terminal) {
371074
+ const hit = blocklist.find((b) => b.terminal === input.terminal && (!b.font || !input.font || b.font === input.font));
371075
+ if (hit)
371076
+ return hit.tier;
371077
+ }
371078
+ const probe = input.probeAdvance;
371079
+ if (probe) {
371080
+ if (probe.solid != null && probe.solid !== 1)
371081
+ return 2;
371082
+ if (probe.half != null && probe.half !== 1)
371083
+ return 1;
371084
+ }
371085
+ return 0;
371086
+ }
371087
+ function resolveMarkTierFromEnv() {
371088
+ return resolveMarkTier({
371089
+ degradeEnv: process.env[MARK_DEGRADE_ENV],
371090
+ terminal: env5.terminal,
371091
+ probeAdvance: null
371092
+ });
371093
+ }
371094
+ var MARK_DEGRADE_ENV = "ATLAS_MARK_DEGRADE", BEAM_ART_T0, BEAM_ART_T1, BEAM_ART_T2, MARK_BLOCKLIST;
371095
+ var init_markDegrade = __esm(() => {
371096
+ init_env2();
371097
+ BEAM_ART_T0 = [
371098
+ { chars: " ▄█▄ ", color: "ascendAmber" },
371099
+ { chars: " ▓███▓ ", color: "ascendAmber" },
371100
+ { chars: " █▓▓▓▓▓█ ", color: "ascendFlame" },
371101
+ { chars: " ▓█ █▓ ", color: "ascendViolet" },
371102
+ { chars: "█▓█ █▓█", color: "ascendBlue" }
371103
+ ];
371104
+ BEAM_ART_T1 = [
371105
+ { chars: " ███ ", color: "ascendAmber" },
371106
+ { chars: " ▓███▓ ", color: "ascendAmber" },
371107
+ { chars: " █▓▓▓▓▓█ ", color: "ascendFlame" },
371108
+ { chars: " ▓█ █▓ ", color: "ascendViolet" },
371109
+ { chars: "█▓█ █▓█", color: "ascendBlue" }
371110
+ ];
371111
+ BEAM_ART_T2 = [
371112
+ { chars: " *** ", color: "ascendAmber" },
371113
+ { chars: " * * ", color: "ascendAmber" },
371114
+ { chars: " * *** * ", color: "ascendFlame" },
371115
+ { chars: "* * *", color: "ascendViolet" },
371116
+ { chars: "* *", color: "ascendBlue" }
371117
+ ];
371118
+ MARK_BLOCKLIST = [];
371119
+ });
371120
+
371038
371121
  // src/tui/components/LogoV2/Beam.tsx
371039
371122
  function wordmarkParts() {
371040
371123
  const family = PRODUCT_FAMILY;
@@ -371072,10 +371155,11 @@ function Beam() {
371072
371155
  if (env5.terminal === "Apple_Terminal") {
371073
371156
  return /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(AppleTerminalBeam, {}, undefined, false, undefined, this);
371074
371157
  }
371158
+ const art = getBeamArt(resolveMarkTierFromEnv());
371075
371159
  return /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(ThemedBox_default, {
371076
371160
  flexDirection: "column",
371077
371161
  children: [
371078
- BEAM_ART.map((row, i) => /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(ThemedText, {
371162
+ art.map((row, i) => /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(ThemedText, {
371079
371163
  color: row.color,
371080
371164
  children: row.chars
371081
371165
  }, i, false, undefined, this)),
@@ -371084,11 +371168,12 @@ function Beam() {
371084
371168
  }, undefined, true, undefined, this);
371085
371169
  }
371086
371170
  function AppleTerminalBeam() {
371171
+ const art = getBeamArt(resolveMarkTierFromEnv());
371087
371172
  return /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(ThemedBox_default, {
371088
371173
  flexDirection: "column",
371089
371174
  alignItems: "center",
371090
371175
  children: [
371091
- BEAM_ART.map((row, i) => /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(ThemedText, {
371176
+ art.map((row, i) => /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(ThemedText, {
371092
371177
  color: "brand_mark",
371093
371178
  children: row.chars
371094
371179
  }, i, false, undefined, this)),
@@ -371096,19 +371181,14 @@ function AppleTerminalBeam() {
371096
371181
  ]
371097
371182
  }, undefined, true, undefined, this);
371098
371183
  }
371099
- var jsx_dev_runtime200, BEAM_ART;
371184
+ var jsx_dev_runtime200;
371100
371185
  var init_Beam = __esm(() => {
371101
371186
  init_ink2();
371102
371187
  init_env2();
371103
371188
  init_shared();
371189
+ init_markDegrade();
371190
+ init_markDegrade();
371104
371191
  jsx_dev_runtime200 = __toESM(require_jsx_dev_runtime(), 1);
371105
- BEAM_ART = [
371106
- { chars: " ▄█▄ ", color: "ascendAmber" },
371107
- { chars: " ▓███▓ ", color: "ascendAmber" },
371108
- { chars: " █▓▓▓▓▓█ ", color: "ascendFlame" },
371109
- { chars: " ▓█ █▓ ", color: "ascendViolet" },
371110
- { chars: "█▓█ █▓█", color: "ascendBlue" }
371111
- ];
371112
371192
  });
371113
371193
 
371114
371194
  // src/tui/components/LogoV2/Feed.tsx
@@ -371392,10 +371472,17 @@ var init_feedConfigs = __esm(() => {
371392
371472
  });
371393
371473
 
371394
371474
  // src/tui/components/LogoV2/AnimatedBeam.tsx
371475
+ function nextPulseStep(beats, pulseOn) {
371476
+ if (beats >= PULSE_MAX_BEATS) {
371477
+ return { beats, pulseOn: true, done: true };
371478
+ }
371479
+ return { beats: beats + 1, pulseOn: !pulseOn, done: false };
371480
+ }
371395
371481
  function AnimatedBeam() {
371396
371482
  const [reducedMotion] = import_react118.useState(() => getInitialSettings2().prefersReducedMotion ?? false);
371397
371483
  const [revealed, setRevealed] = import_react118.useState(reducedMotion ? ROW_COUNT : 1);
371398
371484
  const [pulseOn, setPulseOn] = import_react118.useState(true);
371485
+ const [pulseBeats, setPulseBeats] = import_react118.useState(0);
371399
371486
  import_react118.useEffect(() => {
371400
371487
  if (reducedMotion) {
371401
371488
  return;
@@ -371404,13 +371491,23 @@ function AnimatedBeam() {
371404
371491
  const t = setTimeout(() => setRevealed((r) => r + 1), REVEAL_MS);
371405
371492
  return () => clearTimeout(t);
371406
371493
  }
371407
- const t = setTimeout(() => setPulseOn((p) => !p), PULSE_MS);
371494
+ const s = nextPulseStep(pulseBeats, pulseOn);
371495
+ if (s.done) {
371496
+ if (pulseOn !== s.pulseOn) {
371497
+ setPulseOn(s.pulseOn);
371498
+ }
371499
+ return;
371500
+ }
371501
+ const t = setTimeout(() => {
371502
+ setPulseBeats(s.beats);
371503
+ setPulseOn(s.pulseOn);
371504
+ }, PULSE_MS);
371408
371505
  return () => clearTimeout(t);
371409
- }, [revealed, reducedMotion]);
371506
+ }, [revealed, reducedMotion, pulseBeats, pulseOn]);
371410
371507
  return /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(ThemedBox_default, {
371411
371508
  height: ROW_COUNT,
371412
371509
  flexDirection: "column",
371413
- children: BEAM_ART.map((row, i) => {
371510
+ children: BEAM_ART2.map((row, i) => {
371414
371511
  const depthFromBottom = ROW_COUNT - 1 - i;
371415
371512
  if (depthFromBottom >= revealed) {
371416
371513
  return /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(ThemedText, {
@@ -371430,14 +371527,16 @@ function AnimatedBeam() {
371430
371527
  })
371431
371528
  }, undefined, false, undefined, this);
371432
371529
  }
371433
- var import_react118, jsx_dev_runtime203, ROW_COUNT, REVEAL_MS = 120, PULSE_MS = 800;
371530
+ var import_react118, jsx_dev_runtime203, MARK_TIER, BEAM_ART2, ROW_COUNT, REVEAL_MS = 120, PULSE_MS = 800, PULSE_MAX_BEATS = 4;
371434
371531
  var init_AnimatedBeam = __esm(() => {
371435
371532
  init_ink2();
371436
371533
  init_settings3();
371437
- init_Beam();
371534
+ init_markDegrade();
371438
371535
  import_react118 = __toESM(require_react(), 1);
371439
371536
  jsx_dev_runtime203 = __toESM(require_jsx_dev_runtime(), 1);
371440
- ROW_COUNT = BEAM_ART.length;
371537
+ MARK_TIER = resolveMarkTierFromEnv();
371538
+ BEAM_ART2 = getBeamArt(MARK_TIER);
371539
+ ROW_COUNT = BEAM_ART2.length;
371441
371540
  });
371442
371541
 
371443
371542
  // src/tui/components/LogoV2/CondensedLogo.tsx
@@ -372059,7 +372158,7 @@ function LogoV2() {
372059
372158
  children: /* @__PURE__ */ jsx_dev_runtime207.jsxDEV(ThemedBox_default, {
372060
372159
  flexDirection: "column",
372061
372160
  borderStyle: "round",
372062
- borderColor: "brand",
372161
+ borderColor: "inactive",
372063
372162
  borderText: t11,
372064
372163
  paddingX: 1,
372065
372164
  paddingY: 1,
@@ -417343,7 +417442,7 @@ RESPOND WITH ONLY A VALID JSON OBJECT matching this schema:
417343
417442
  return null;
417344
417443
  }
417345
417444
  }
417346
- function detectMultiClauding(sessions) {
417445
+ function detectParallelSessions(sessions) {
417347
417446
  const OVERLAP_WINDOW_MS = 30 * 60000;
417348
417447
  const allSessionMessages = [];
417349
417448
  for (const session of sessions) {
@@ -417355,8 +417454,8 @@ function detectMultiClauding(sessions) {
417355
417454
  }
417356
417455
  }
417357
417456
  allSessionMessages.sort((a, b) => a.ts - b.ts);
417358
- const multiClaudeSessionPairs = new Set;
417359
- const messagesDuringMulticlaude = new Set;
417457
+ const parallelSessionPairs = new Set;
417458
+ const messagesDuringParallel = new Set;
417360
417459
  let windowStart = 0;
417361
417460
  const sessionLastIndex = new Map;
417362
417461
  for (let i = 0;i < allSessionMessages.length; i++) {
@@ -417374,10 +417473,10 @@ function detectMultiClauding(sessions) {
417374
417473
  const between = allSessionMessages[j];
417375
417474
  if (between.sessionId !== msg.sessionId) {
417376
417475
  const pair = [msg.sessionId, between.sessionId].sort().join(":");
417377
- multiClaudeSessionPairs.add(pair);
417378
- messagesDuringMulticlaude.add(`${allSessionMessages[prevIndex].ts}:${msg.sessionId}`);
417379
- messagesDuringMulticlaude.add(`${between.ts}:${between.sessionId}`);
417380
- messagesDuringMulticlaude.add(`${msg.ts}:${msg.sessionId}`);
417476
+ parallelSessionPairs.add(pair);
417477
+ messagesDuringParallel.add(`${allSessionMessages[prevIndex].ts}:${msg.sessionId}`);
417478
+ messagesDuringParallel.add(`${between.ts}:${between.sessionId}`);
417479
+ messagesDuringParallel.add(`${msg.ts}:${msg.sessionId}`);
417381
417480
  break;
417382
417481
  }
417383
417482
  }
@@ -417385,7 +417484,7 @@ function detectMultiClauding(sessions) {
417385
417484
  sessionLastIndex.set(msg.sessionId, i);
417386
417485
  }
417387
417486
  const sessionsWithOverlaps = new Set;
417388
- for (const pair of multiClaudeSessionPairs) {
417487
+ for (const pair of parallelSessionPairs) {
417389
417488
  const [s1, s2] = pair.split(":");
417390
417489
  if (s1)
417391
417490
  sessionsWithOverlaps.add(s1);
@@ -417393,9 +417492,9 @@ function detectMultiClauding(sessions) {
417393
417492
  sessionsWithOverlaps.add(s2);
417394
417493
  }
417395
417494
  return {
417396
- overlap_events: multiClaudeSessionPairs.size,
417495
+ overlap_events: parallelSessionPairs.size,
417397
417496
  sessions_involved: sessionsWithOverlaps.size,
417398
- user_messages_during: messagesDuringMulticlaude.size
417497
+ user_messages_during: messagesDuringParallel.size
417399
417498
  };
417400
417499
  }
417401
417500
  function aggregateData(sessions, facets) {
@@ -417436,7 +417535,7 @@ function aggregateData(sessions, facets) {
417436
417535
  days_active: 0,
417437
417536
  messages_per_day: 0,
417438
417537
  message_hours: [],
417439
- multi_clauding: {
417538
+ parallel_sessions: {
417440
417539
  overlap_events: 0,
417441
417540
  sessions_involved: 0,
417442
417541
  user_messages_during: 0
@@ -417526,7 +417625,7 @@ function aggregateData(sessions, facets) {
417526
417625
  result.days_active = uniqueDays.size;
417527
417626
  result.messages_per_day = result.days_active > 0 ? Math.round(result.total_messages / result.days_active * 10) / 10 : 0;
417528
417627
  result.message_hours = allMessageHours;
417529
- result.multi_clauding = detectMultiClauding(sessions);
417628
+ result.parallel_sessions = detectParallelSessions(sessions);
417530
417629
  return result;
417531
417630
  }
417532
417631
  async function generateSectionInsight(section, dataContext) {
@@ -418264,25 +418363,25 @@ function generateHtmlReport(data, insights) {
418264
418363
  </div>
418265
418364
  </div>
418266
418365
 
418267
- <!-- Parallel Sessions section (matching Python reference) -->
418366
+ <!-- Parallel Sessions section (D-10 de-claude) -->
418268
418367
  <div class="chart-card" style="margin: 24px 0;">
418269
418368
  <div class="chart-title">Parallel Sessions</div>
418270
- ${data.multi_clauding.overlap_events === 0 ? `
418369
+ ${data.parallel_sessions.overlap_events === 0 ? `
418271
418370
  <p style="font-size: 14px; color: #64748b; padding: 8px 0;">
418272
418371
  No parallel session usage detected. You typically work with one Atlas session at a time.
418273
418372
  </p>
418274
418373
  ` : `
418275
418374
  <div style="display: flex; gap: 24px; margin: 12px 0;">
418276
418375
  <div style="text-align: center;">
418277
- <div style="font-size: 24px; font-weight: 700; color: #7c3aed;">${data.multi_clauding.overlap_events}</div>
418376
+ <div style="font-size: 24px; font-weight: 700; color: #7c3aed;">${data.parallel_sessions.overlap_events}</div>
418278
418377
  <div style="font-size: 11px; color: #64748b; text-transform: uppercase;">Overlap Events</div>
418279
418378
  </div>
418280
418379
  <div style="text-align: center;">
418281
- <div style="font-size: 24px; font-weight: 700; color: #7c3aed;">${data.multi_clauding.sessions_involved}</div>
418380
+ <div style="font-size: 24px; font-weight: 700; color: #7c3aed;">${data.parallel_sessions.sessions_involved}</div>
418282
418381
  <div style="font-size: 11px; color: #64748b; text-transform: uppercase;">Sessions Involved</div>
418283
418382
  </div>
418284
418383
  <div style="text-align: center;">
418285
- <div style="font-size: 24px; font-weight: 700; color: #7c3aed;">${data.total_messages > 0 ? Math.round(100 * data.multi_clauding.user_messages_during / data.total_messages) : 0}%</div>
418384
+ <div style="font-size: 24px; font-weight: 700; color: #7c3aed;">${data.total_messages > 0 ? Math.round(100 * data.parallel_sessions.user_messages_during / data.total_messages) : 0}%</div>
418286
418385
  <div style="font-size: 11px; color: #64748b; text-transform: uppercase;">Of Messages</div>
418287
418386
  </div>
418288
418387
  </div>
@@ -458439,6 +458538,7 @@ var init_useDynamicTips = __esm(() => {
458439
458538
  // src/tui/components/PromptInput/PersistentFooterIndicator.tsx
458440
458539
  function PersistentFooterIndicator({ messagesRef }) {
458441
458540
  const effortValue = useAppState((s) => s.effortValue);
458541
+ const npmHintActive = useAppState((s) => s.notifications.current?.key === "npm-deprecation-warning");
458442
458542
  const mainLoopModel = useMainLoopModel();
458443
458543
  const tip = useDynamicTip(messagesRef);
458444
458544
  const effortText = getEffortNotificationText(effortValue, mainLoopModel);
@@ -458452,6 +458552,9 @@ function PersistentFooterIndicator({ messagesRef }) {
458452
458552
  const timer = setTimeout(() => setShowEffort(false), EFFORT_DISPLAY_MS);
458453
458553
  return () => clearTimeout(timer);
458454
458554
  }, [effortText]);
458555
+ if (npmHintActive) {
458556
+ return null;
458557
+ }
458455
458558
  if (showEffort && effortText) {
458456
458559
  return /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedBox_default, {
458457
458560
  flexShrink: 0,
@@ -459952,7 +460055,7 @@ function PromptInputFooter({
459952
460055
  children: [
459953
460056
  /* @__PURE__ */ jsx_dev_runtime398.jsxDEV(ThemedBox_default, {
459954
460057
  flexDirection: "column",
459955
- flexShrink: isNarrow ? 0 : 1,
460058
+ flexShrink: 0,
459956
460059
  children: [
459957
460060
  mode === "prompt" && !isShort && !exitMessage.show && !isPasting && statusLineShouldDisplay(settings) && /* @__PURE__ */ jsx_dev_runtime398.jsxDEV(StatusLine, {
459958
460061
  messagesRef,
@@ -472285,11 +472388,11 @@ async function _temp188() {
472285
472388
  timeoutMs: 15000,
472286
472389
  key: "npm-deprecation-warning",
472287
472390
  text: NPM_DEPRECATION_MESSAGE,
472288
- color: "warning",
472391
+ color: "inactive",
472289
472392
  priority: "high"
472290
472393
  };
472291
472394
  }
472292
- var NPM_DEPRECATION_MESSAGE = "AtlasCode is installed via npm (npm install -g @atlasharness/atlascode). See https://github.com/vincentlau2046/AtlasCode/blob/master/docs/reference/overview.md for install and update options.";
472395
+ var NPM_DEPRECATION_MESSAGE = "AtlasCode is installed via npm (npm install -g @atlasharness/atlascode; run `atlascode` or alias `atlas`). See https://github.com/vincentlau2046/AtlasCode/blob/master/docs/reference/overview.md for install and update options.";
472293
472396
  var init_useNpmDeprecationNotification = __esm(() => {
472294
472397
  init_doctorDiagnostic();
472295
472398
  init_envUtils2();
@@ -489231,8 +489334,10 @@ function initializeEntrypoint2(isNonInteractive) {
489231
489334
  process.env.ATLAS_ENTRYPOINT = isNonInteractive ? "sdk-cli" : "cli";
489232
489335
  }
489233
489336
  async function main2() {
489234
- process.stderr.write(`[${PRODUCT_BRAND}] main() starting...
489337
+ if (isDebugMode()) {
489338
+ process.stderr.write(`[${PRODUCT_BRAND}] main() starting...
489235
489339
  `);
489340
+ }
489236
489341
  profileCheckpoint("main_function_start");
489237
489342
  process.env.NoDefaultCurrentDirectoryInExePath = "1";
489238
489343
  initializeWarningHandler();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlasharness/atlascode",
3
- "version": "0.1.33",
3
+ "version": "0.1.34",
4
4
  "description": "AtlasCode — Coding Agent for the domestic computing ecosystem (Ascend NPU + domestic LLM backends)",
5
5
  "bin": {
6
6
  "atlas": "dist/cli.js",