localclawd 1.2.0 → 1.2.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +453 -240
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -87564,7 +87564,7 @@ var init_isEqual = __esm(() => {
87564
87564
 
87565
87565
  // src/utils/userAgent.ts
87566
87566
  function getClaudeCodeUserAgent() {
87567
- return `claude-code/${"1.2.0"}`;
87567
+ return `claude-code/${"1.2.2"}`;
87568
87568
  }
87569
87569
 
87570
87570
  // src/utils/workloadContext.ts
@@ -87586,7 +87586,7 @@ function getUserAgent() {
87586
87586
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
87587
87587
  const workload = getWorkload();
87588
87588
  const workloadSuffix = workload ? `, workload/${workload}` : "";
87589
- return `claude-cli/${"1.2.0"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87589
+ return `claude-cli/${"1.2.2"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87590
87590
  }
87591
87591
  function getMCPUserAgent() {
87592
87592
  const parts = [];
@@ -87600,7 +87600,7 @@ function getMCPUserAgent() {
87600
87600
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
87601
87601
  }
87602
87602
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
87603
- return `claude-code/${"1.2.0"}${suffix}`;
87603
+ return `claude-code/${"1.2.2"}${suffix}`;
87604
87604
  }
87605
87605
  function getWebFetchUserAgent() {
87606
87606
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -130791,7 +130791,7 @@ function getAttributionHeader(fingerprint) {
130791
130791
  if (!isAttributionHeaderEnabled()) {
130792
130792
  return "";
130793
130793
  }
130794
- const version = `${"1.2.0"}.${fingerprint}`;
130794
+ const version = `${"1.2.2"}.${fingerprint}`;
130795
130795
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
130796
130796
  const cch = "";
130797
130797
  const workload = getWorkload();
@@ -146980,7 +146980,7 @@ var init_metadata = __esm(() => {
146980
146980
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
146981
146981
  WHITESPACE_REGEX = /\s+/;
146982
146982
  getVersionBase = memoize_default(() => {
146983
- const match = "1.2.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
146983
+ const match = "1.2.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
146984
146984
  return match ? match[0] : undefined;
146985
146985
  });
146986
146986
  buildEnvContext = memoize_default(async () => {
@@ -147020,9 +147020,9 @@ var init_metadata = __esm(() => {
147020
147020
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
147021
147021
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
147022
147022
  isClaudeAiAuth: isClaudeAISubscriber(),
147023
- version: "1.2.0",
147023
+ version: "1.2.2",
147024
147024
  versionBase: getVersionBase(),
147025
- buildTime: "2026-04-14T18:16:06.737Z",
147025
+ buildTime: "2026-04-18T18:20:09.217Z",
147026
147026
  deploymentEnvironment: env3.detectDeploymentEnvironment(),
147027
147027
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
147028
147028
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -179501,7 +179501,7 @@ function getTelemetryAttributes() {
179501
179501
  attributes["session.id"] = sessionId;
179502
179502
  }
179503
179503
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
179504
- attributes["app.version"] = "1.2.0";
179504
+ attributes["app.version"] = "1.2.2";
179505
179505
  }
179506
179506
  const oauthAccount = getOauthAccountInfo();
179507
179507
  if (oauthAccount) {
@@ -180397,11 +180397,13 @@ function getEffectiveContextWindowSize(model) {
180397
180397
  if (autoCompactWindow) {
180398
180398
  contextWindow = Math.min(contextWindow, autoCompactWindow);
180399
180399
  }
180400
- return contextWindow - reservedTokensForSummary;
180400
+ const MIN_EFFECTIVE_TOKENS = 4000;
180401
+ return Math.max(contextWindow - reservedTokensForSummary, Math.max(Math.floor(contextWindow * 0.25), MIN_EFFECTIVE_TOKENS));
180401
180402
  }
180402
180403
  function getAutoCompactThreshold(model) {
180403
180404
  const effectiveContextWindow = getEffectiveContextWindowSize(model);
180404
- const autocompactThreshold = effectiveContextWindow - AUTOCOMPACT_BUFFER_TOKENS;
180405
+ const scaledBuffer = Math.min(AUTOCOMPACT_BUFFER_TOKENS, Math.floor(effectiveContextWindow * 0.1));
180406
+ const autocompactThreshold = effectiveContextWindow - scaledBuffer;
180405
180407
  const envPercent = process.env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE;
180406
180408
  if (envPercent) {
180407
180409
  const parsed = parseFloat(envPercent);
@@ -180627,6 +180629,39 @@ function objectGroupBy(items, keySelector) {
180627
180629
  }
180628
180630
 
180629
180631
  // src/utils/messageQueueManager.ts
180632
+ var exports_messageQueueManager = {};
180633
+ __export(exports_messageQueueManager, {
180634
+ subscribeToPendingNotifications: () => subscribeToPendingNotifications,
180635
+ subscribeToCommandQueue: () => subscribeToCommandQueue,
180636
+ resetPendingNotifications: () => resetPendingNotifications,
180637
+ resetCommandQueue: () => resetCommandQueue,
180638
+ removeByFilter: () => removeByFilter,
180639
+ remove: () => remove,
180640
+ recheckPendingNotifications: () => recheckPendingNotifications,
180641
+ recheckCommandQueue: () => recheckCommandQueue,
180642
+ popAllEditable: () => popAllEditable,
180643
+ peek: () => peek,
180644
+ isSlashCommand: () => isSlashCommand,
180645
+ isQueuedCommandVisible: () => isQueuedCommandVisible,
180646
+ isQueuedCommandEditable: () => isQueuedCommandEditable,
180647
+ isPromptInputModeEditable: () => isPromptInputModeEditable,
180648
+ hasPendingNotifications: () => hasPendingNotifications,
180649
+ hasCommandsInQueue: () => hasCommandsInQueue,
180650
+ getPendingNotificationsSnapshot: () => getPendingNotificationsSnapshot,
180651
+ getPendingNotificationsCount: () => getPendingNotificationsCount,
180652
+ getCommandsByMaxPriority: () => getCommandsByMaxPriority,
180653
+ getCommandQueueSnapshot: () => getCommandQueueSnapshot,
180654
+ getCommandQueueLength: () => getCommandQueueLength,
180655
+ getCommandQueue: () => getCommandQueue,
180656
+ enqueuePendingNotification: () => enqueuePendingNotification,
180657
+ enqueue: () => enqueue,
180658
+ dequeuePendingNotification: () => dequeuePendingNotification,
180659
+ dequeueAllMatching: () => dequeueAllMatching,
180660
+ dequeueAll: () => dequeueAll,
180661
+ dequeue: () => dequeue,
180662
+ clearPendingNotifications: () => clearPendingNotifications,
180663
+ clearCommandQueue: () => clearCommandQueue
180664
+ });
180630
180665
  function logOperation(operation, content) {
180631
180666
  const sessionId = getSessionId();
180632
180667
  const queueOp = {
@@ -180654,6 +180689,11 @@ function getCommandQueueLength() {
180654
180689
  function hasCommandsInQueue() {
180655
180690
  return commandQueue.length > 0;
180656
180691
  }
180692
+ function recheckCommandQueue() {
180693
+ if (commandQueue.length > 0) {
180694
+ notifySubscribers();
180695
+ }
180696
+ }
180657
180697
  function enqueue(command) {
180658
180698
  commandQueue.push({ ...command, priority: command.priority ?? "next" });
180659
180699
  notifySubscribers();
@@ -180687,6 +180727,18 @@ function dequeue(filter2) {
180687
180727
  logOperation("dequeue");
180688
180728
  return dequeued;
180689
180729
  }
180730
+ function dequeueAll() {
180731
+ if (commandQueue.length === 0) {
180732
+ return [];
180733
+ }
180734
+ const commands = [...commandQueue];
180735
+ commandQueue.length = 0;
180736
+ notifySubscribers();
180737
+ for (const _cmd of commands) {
180738
+ logOperation("dequeue");
180739
+ }
180740
+ return commands;
180741
+ }
180690
180742
  function peek(filter2) {
180691
180743
  if (commandQueue.length === 0) {
180692
180744
  return;
@@ -180767,6 +180819,10 @@ function clearCommandQueue() {
180767
180819
  commandQueue.length = 0;
180768
180820
  notifySubscribers();
180769
180821
  }
180822
+ function resetCommandQueue() {
180823
+ commandQueue.length = 0;
180824
+ snapshot = Object.freeze([]);
180825
+ }
180770
180826
  function isPromptInputModeEditable(mode) {
180771
180827
  return !NON_EDITABLE_MODES.has(mode);
180772
180828
  }
@@ -180837,6 +180893,12 @@ function popAllEditable(currentInput, currentCursorOffset) {
180837
180893
  notifySubscribers();
180838
180894
  return { text: newInput, cursorOffset, images };
180839
180895
  }
180896
+ function getPendingNotificationsSnapshot() {
180897
+ return snapshot;
180898
+ }
180899
+ function dequeuePendingNotification() {
180900
+ return dequeue();
180901
+ }
180840
180902
  function getCommandsByMaxPriority(maxPriority) {
180841
180903
  const threshold = PRIORITY_ORDER[maxPriority];
180842
180904
  return commandQueue.filter((cmd) => PRIORITY_ORDER[cmd.priority ?? "next"] <= threshold);
@@ -180844,7 +180906,7 @@ function getCommandsByMaxPriority(maxPriority) {
180844
180906
  function isSlashCommand(cmd) {
180845
180907
  return typeof cmd.value === "string" && cmd.value.trim().startsWith("/") && !cmd.skipSlashCommands;
180846
180908
  }
180847
- var commandQueue, snapshot, queueChanged, subscribeToCommandQueue, PRIORITY_ORDER, NON_EDITABLE_MODES;
180909
+ var commandQueue, snapshot, queueChanged, subscribeToCommandQueue, PRIORITY_ORDER, NON_EDITABLE_MODES, subscribeToPendingNotifications, hasPendingNotifications, getPendingNotificationsCount, recheckPendingNotifications, resetPendingNotifications, clearPendingNotifications;
180848
180910
  var init_messageQueueManager = __esm(() => {
180849
180911
  init_state();
180850
180912
  init_messages3();
@@ -180861,6 +180923,12 @@ var init_messageQueueManager = __esm(() => {
180861
180923
  NON_EDITABLE_MODES = new Set([
180862
180924
  "task-notification"
180863
180925
  ]);
180926
+ subscribeToPendingNotifications = subscribeToCommandQueue;
180927
+ hasPendingNotifications = hasCommandsInQueue;
180928
+ getPendingNotificationsCount = getCommandQueueLength;
180929
+ recheckPendingNotifications = recheckCommandQueue;
180930
+ resetPendingNotifications = resetCommandQueue;
180931
+ clearPendingNotifications = clearCommandQueue;
180864
180932
  });
180865
180933
 
180866
180934
  // src/utils/commandLifecycle.ts
@@ -242225,7 +242293,7 @@ function getInstallationEnv() {
242225
242293
  return;
242226
242294
  }
242227
242295
  function getClaudeCodeVersion() {
242228
- return "1.2.0";
242296
+ return "1.2.2";
242229
242297
  }
242230
242298
  async function getInstalledVSCodeExtensionVersion(command) {
242231
242299
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -247499,7 +247567,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
247499
247567
  const client4 = new Client({
247500
247568
  name: "localclawd",
247501
247569
  title: "localclawd",
247502
- version: "1.2.0",
247570
+ version: "1.2.2",
247503
247571
  description: "local-first AI coding tool",
247504
247572
  websiteUrl: PRODUCT_URL
247505
247573
  }, {
@@ -247841,7 +247909,7 @@ var init_client9 = __esm(() => {
247841
247909
  const client4 = new Client({
247842
247910
  name: "localclawd",
247843
247911
  title: "localclawd",
247844
- version: "1.2.0",
247912
+ version: "1.2.2",
247845
247913
  description: "local-first AI coding tool",
247846
247914
  websiteUrl: PRODUCT_URL
247847
247915
  }, {
@@ -262231,7 +262299,7 @@ function computeFingerprint(messageText, version) {
262231
262299
  }
262232
262300
  function computeFingerprintFromMessages(messages) {
262233
262301
  const firstMessageText = extractFirstMessageText(messages);
262234
- return computeFingerprint(firstMessageText, "1.2.0");
262302
+ return computeFingerprint(firstMessageText, "1.2.2");
262235
262303
  }
262236
262304
  var FINGERPRINT_SALT = "59cf53e54c78";
262237
262305
  var init_fingerprint = () => {};
@@ -262273,7 +262341,7 @@ async function sideQuery(opts) {
262273
262341
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
262274
262342
  }
262275
262343
  const messageText = extractFirstUserMessageText(messages);
262276
- const fingerprint = computeFingerprint(messageText, "1.2.0");
262344
+ const fingerprint = computeFingerprint(messageText, "1.2.2");
262277
262345
  const attributionHeader = getAttributionHeader(fingerprint);
262278
262346
  const systemBlocks = [
262279
262347
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -276071,7 +276139,7 @@ async function getMessagesForSlashCommand(commandName, args, setToolJSX, context
276071
276139
  }));
276072
276140
  const skipTranscript = isFullscreenEnvEnabled() && typeof result === "string" && result.endsWith(" dismissed");
276073
276141
  resolve28({
276074
- messages: options?.display === "system" ? skipTranscript ? metaMessages : [createCommandInputMessage(formatCommandInput(command, args)), createCommandInputMessage(`<local-command-stdout>${result}</local-command-stdout>`), ...metaMessages] : [createUserMessage({
276142
+ messages: options?.display === "system" ? skipTranscript ? metaMessages : [createCommandInputMessage(formatCommandInput(command, args)), ...result ? [createCommandInputMessage(`<local-command-stdout>${result}</local-command-stdout>`)] : [], ...metaMessages] : [createUserMessage({
276075
276143
  content: prepareUserContent({
276076
276144
  inputString: formatCommandInput(command, args),
276077
276145
  precedingInputBlocks
@@ -282997,7 +283065,7 @@ var init_user = __esm(() => {
282997
283065
  deviceId,
282998
283066
  sessionId: getSessionId(),
282999
283067
  email: getEmail(),
283000
- appVersion: "1.2.0",
283068
+ appVersion: "1.2.2",
283001
283069
  platform: getHostPlatformForAnalytics(),
283002
283070
  organizationUuid,
283003
283071
  accountUuid,
@@ -284062,7 +284130,7 @@ async function initializeBetaTracing(resource) {
284062
284130
  });
284063
284131
  logs.setGlobalLoggerProvider(loggerProvider);
284064
284132
  setLoggerProvider(loggerProvider);
284065
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.2.0");
284133
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.2.2");
284066
284134
  setEventLogger(eventLogger);
284067
284135
  process.on("beforeExit", async () => {
284068
284136
  await loggerProvider?.forceFlush();
@@ -284102,7 +284170,7 @@ async function initializeTelemetry() {
284102
284170
  const platform2 = getPlatform();
284103
284171
  const baseAttributes = {
284104
284172
  [ATTR_SERVICE_NAME4]: "claude-code",
284105
- [ATTR_SERVICE_VERSION4]: "1.2.0"
284173
+ [ATTR_SERVICE_VERSION4]: "1.2.2"
284106
284174
  };
284107
284175
  if (platform2 === "wsl") {
284108
284176
  const wslVersion = getWslVersion();
@@ -284147,7 +284215,7 @@ async function initializeTelemetry() {
284147
284215
  } catch {}
284148
284216
  };
284149
284217
  registerCleanup(shutdownTelemetry2);
284150
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.2.0");
284218
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.2.2");
284151
284219
  }
284152
284220
  const meterProvider = new MeterProvider4({
284153
284221
  resource,
@@ -284167,7 +284235,7 @@ async function initializeTelemetry() {
284167
284235
  });
284168
284236
  logs.setGlobalLoggerProvider(loggerProvider);
284169
284237
  setLoggerProvider(loggerProvider);
284170
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.2.0");
284238
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.2.2");
284171
284239
  setEventLogger(eventLogger);
284172
284240
  logForDebugging("[3P telemetry] Event logger set successfully");
284173
284241
  process.on("beforeExit", async () => {
@@ -284229,7 +284297,7 @@ Current timeout: ${timeoutMs}ms
284229
284297
  }
284230
284298
  };
284231
284299
  registerCleanup(shutdownTelemetry);
284232
- return meterProvider.getMeter("com.anthropic.claude_code", "1.2.0");
284300
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.2.2");
284233
284301
  }
284234
284302
  async function flushTelemetry() {
284235
284303
  const meterProvider = getMeterProvider();
@@ -285419,7 +285487,7 @@ function detectLinuxGlobPatternWarnings() {
285419
285487
  }
285420
285488
  async function getDoctorDiagnostic() {
285421
285489
  const installationType = await getCurrentInstallationType();
285422
- const version = typeof MACRO !== "undefined" ? "1.2.0" : "unknown";
285490
+ const version = typeof MACRO !== "undefined" ? "1.2.2" : "unknown";
285423
285491
  const installationPath = await getInstallationPath();
285424
285492
  const invokedBinary = getInvokedBinary();
285425
285493
  const multipleInstallations = await detectMultipleInstallations();
@@ -286360,8 +286428,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286360
286428
  const maxVersion = await getMaxVersion();
286361
286429
  if (maxVersion && gt(version, maxVersion)) {
286362
286430
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
286363
- if (gte("1.2.0", maxVersion)) {
286364
- logForDebugging(`Native installer: current version ${"1.2.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
286431
+ if (gte("1.2.2", maxVersion)) {
286432
+ logForDebugging(`Native installer: current version ${"1.2.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
286365
286433
  logEvent("tengu_native_update_skipped_max_version", {
286366
286434
  latency_ms: Date.now() - startTime,
286367
286435
  max_version: maxVersion,
@@ -286372,7 +286440,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286372
286440
  version = maxVersion;
286373
286441
  }
286374
286442
  }
286375
- if (!forceReinstall && version === "1.2.0" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286443
+ if (!forceReinstall && version === "1.2.2" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286376
286444
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
286377
286445
  logEvent("tengu_native_update_complete", {
286378
286446
  latency_ms: Date.now() - startTime,
@@ -288932,7 +289000,7 @@ function GlimmerMessage(t0) {
288932
289000
  const baseColorStr = theme[messageColor];
288933
289001
  const baseRGB = baseColorStr ? parseRGB(baseColorStr) : null;
288934
289002
  if (baseRGB) {
288935
- const interpolated = interpolateColor(baseRGB, ERROR_RED, stalledIntensity);
289003
+ const interpolated = interpolateColor(baseRGB, STALLED_DIM, stalledIntensity);
288936
289004
  const color2 = toRGBColor(interpolated);
288937
289005
  let t53;
288938
289006
  if ($2[17] !== color2) {
@@ -289243,7 +289311,7 @@ function GlimmerMessage(t0) {
289243
289311
  }
289244
289312
  return t7;
289245
289313
  }
289246
- var jsx_dev_runtime122, ERROR_RED;
289314
+ var jsx_dev_runtime122, STALLED_DIM;
289247
289315
  var init_GlimmerMessage = __esm(() => {
289248
289316
  init_stringWidth();
289249
289317
  init_ink2();
@@ -289251,10 +289319,10 @@ var init_GlimmerMessage = __esm(() => {
289251
289319
  init_theme();
289252
289320
  init_utils9();
289253
289321
  jsx_dev_runtime122 = __toESM(require_jsx_dev_runtime(), 1);
289254
- ERROR_RED = {
289255
- r: 171,
289256
- g: 43,
289257
- b: 63
289322
+ STALLED_DIM = {
289323
+ r: 55,
289324
+ g: 48,
289325
+ b: 140
289258
289326
  };
289259
289327
  });
289260
289328
 
@@ -289334,7 +289402,7 @@ function SpinnerGlyph(t0) {
289334
289402
  const baseColorStr = theme[messageColor];
289335
289403
  const baseRGB = baseColorStr ? parseRGB(baseColorStr) : null;
289336
289404
  if (baseRGB) {
289337
- const interpolated = interpolateColor(baseRGB, ERROR_RED2, stalledIntensity);
289405
+ const interpolated = interpolateColor(baseRGB, STALLED_DIM2, stalledIntensity);
289338
289406
  return /* @__PURE__ */ jsx_dev_runtime124.jsxDEV(ThemedBox_default, {
289339
289407
  flexWrap: "wrap",
289340
289408
  height: 1,
@@ -289384,7 +289452,7 @@ function SpinnerGlyph(t0) {
289384
289452
  }
289385
289453
  return t4;
289386
289454
  }
289387
- var jsx_dev_runtime124, DEFAULT_CHARACTERS, SPINNER_FRAMES, REDUCED_MOTION_DOT = "●", REDUCED_MOTION_CYCLE_MS = 2000, ERROR_RED2;
289455
+ var jsx_dev_runtime124, DEFAULT_CHARACTERS, SPINNER_FRAMES, REDUCED_MOTION_DOT = "●", REDUCED_MOTION_CYCLE_MS = 2000, STALLED_DIM2;
289388
289456
  var init_SpinnerGlyph = __esm(() => {
289389
289457
  init_ink2();
289390
289458
  init_theme();
@@ -289392,10 +289460,10 @@ var init_SpinnerGlyph = __esm(() => {
289392
289460
  jsx_dev_runtime124 = __toESM(require_jsx_dev_runtime(), 1);
289393
289461
  DEFAULT_CHARACTERS = getDefaultCharacters();
289394
289462
  SPINNER_FRAMES = [...DEFAULT_CHARACTERS, ...[...DEFAULT_CHARACTERS].reverse()];
289395
- ERROR_RED2 = {
289396
- r: 171,
289397
- g: 43,
289398
- b: 63
289463
+ STALLED_DIM2 = {
289464
+ r: 55,
289465
+ g: 48,
289466
+ b: 140
289399
289467
  };
289400
289468
  });
289401
289469
 
@@ -330761,7 +330829,7 @@ function getAnthropicEnvMetadata() {
330761
330829
  function getBuildAgeMinutes() {
330762
330830
  if (false)
330763
330831
  ;
330764
- const buildTime = new Date("2026-04-14T18:16:06.737Z").getTime();
330832
+ const buildTime = new Date("2026-04-18T18:20:09.217Z").getTime();
330765
330833
  if (isNaN(buildTime))
330766
330834
  return;
330767
330835
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -342113,7 +342181,7 @@ function ThinkNormalBanner({ onReady }) {
342113
342181
  }, undefined, false, undefined, this),
342114
342182
  /* @__PURE__ */ jsx_dev_runtime151.jsxDEV(ThemedText, {
342115
342183
  dimColor: true,
342116
- children: " Default pipeline. Lattice memory is fallback-only."
342184
+ children: " Default pipeline restored."
342117
342185
  }, undefined, false, undefined, this)
342118
342186
  ]
342119
342187
  }, undefined, true, undefined, this);
@@ -342202,8 +342270,7 @@ for the next change.`, THINKNORMAL_PROMPT = `[THINK HARDER DEACTIVATED — defau
342202
342270
 
342203
342271
  Resume standard operation:
342204
342272
  • Normal tool use and response pipeline.
342205
- Lattice memory scoring returns to fallback-only mode.
342206
- • Memory priming and 5-phase refinement are no longer required,
342273
+ 5-phase refinement is no longer required,
342207
342274
  though careful reasoning is always encouraged.`, call3 = async (onDone, _context, args) => {
342208
342275
  const { extractChain: extractChain2, validateCommandChain: validateCommandChain2, parseCommandChain: parseCommandChain2, chainWarning: chainWarning2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
342209
342276
  const { ownArgs: _ownArgs, nextCmd } = extractChain2(args ?? "");
@@ -342223,7 +342290,7 @@ Resume standard operation:
342223
342290
  return /* @__PURE__ */ jsx_dev_runtime151.jsxDEV(ThinkHarderBanner, {
342224
342291
  onReady: () => onDone(undefined, {
342225
342292
  display: "system",
342226
- shouldQuery: !nextCmd,
342293
+ shouldQuery: false,
342227
342294
  metaMessages: [THINKHARDER_PROMPT],
342228
342295
  nextInput: nextCmd ?? undefined,
342229
342296
  submitNextInput: nextCmd ? true : undefined
@@ -342236,7 +342303,7 @@ Resume standard operation:
342236
342303
  return /* @__PURE__ */ jsx_dev_runtime151.jsxDEV(ThinkNormalBanner, {
342237
342304
  onReady: () => onDone(undefined, {
342238
342305
  display: "system",
342239
- shouldQuery: !nextCmd,
342306
+ shouldQuery: false,
342240
342307
  metaMessages: [THINKNORMAL_PROMPT],
342241
342308
  nextInput: nextCmd ?? undefined,
342242
342309
  submitNextInput: nextCmd ? true : undefined
@@ -359087,7 +359154,7 @@ function Feedback({
359087
359154
  platform: env3.platform,
359088
359155
  gitRepo: envInfo.isGit,
359089
359156
  terminal: env3.terminal,
359090
- version: "1.2.0",
359157
+ version: "1.2.2",
359091
359158
  transcript: normalizeMessagesForAPI(messages),
359092
359159
  errors: sanitizedErrors,
359093
359160
  lastApiRequest: getLastAPIRequest(),
@@ -359279,7 +359346,7 @@ function Feedback({
359279
359346
  ", ",
359280
359347
  env3.terminal,
359281
359348
  ", v",
359282
- "1.2.0"
359349
+ "1.2.2"
359283
359350
  ]
359284
359351
  }, undefined, true, undefined, this)
359285
359352
  ]
@@ -359385,7 +359452,7 @@ ${sanitizedDescription}
359385
359452
  ` + `**Environment Info**
359386
359453
  ` + `- Platform: ${env3.platform}
359387
359454
  ` + `- Terminal: ${env3.terminal}
359388
- ` + `- Version: ${"1.2.0"}
359455
+ ` + `- Version: ${"1.2.2"}
359389
359456
  ` + `- Feedback ID: ${feedbackId}
359390
359457
  ` + `
359391
359458
  **Errors**
@@ -362013,7 +362080,7 @@ function buildPrimarySection() {
362013
362080
  }, undefined, false, undefined, this);
362014
362081
  return [{
362015
362082
  label: "Version",
362016
- value: "1.2.0"
362083
+ value: "1.2.2"
362017
362084
  }, {
362018
362085
  label: "Session name",
362019
362086
  value: nameValue
@@ -366612,7 +366679,7 @@ function Config({
366612
366679
  }
366613
366680
  }, undefined, false, undefined, this)
366614
366681
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime175.jsxDEV(ChannelDowngradeDialog, {
366615
- currentVersion: "1.2.0",
366682
+ currentVersion: "1.2.2",
366616
366683
  onChoice: (choice) => {
366617
366684
  setShowSubmenu(null);
366618
366685
  setTabsHidden(false);
@@ -366624,7 +366691,7 @@ function Config({
366624
366691
  autoUpdatesChannel: "stable"
366625
366692
  };
366626
366693
  if (choice === "stay") {
366627
- newSettings.minimumVersion = "1.2.0";
366694
+ newSettings.minimumVersion = "1.2.2";
366628
366695
  }
366629
366696
  updateSettingsForSource("userSettings", newSettings);
366630
366697
  setSettingsData((prev_27) => ({
@@ -372773,15 +372840,18 @@ var init_directorMemoryOps = __esm(() => {
372773
372840
  });
372774
372841
 
372775
372842
  // src/services/director/directorPrompts.ts
372776
- function buildDirectorTaskPrompt(task, projectContext, round, maxRounds) {
372843
+ function buildDirectorTaskPrompt(task, projectContext, round, maxRounds, medium) {
372777
372844
  const roundInfo = isFinite(maxRounds) ? `Round ${round} of ${maxRounds}` : `Round ${round} (unlimited)`;
372845
+ const mediumNote = medium === "telegram" ? `
372846
+ - The user is connected via Telegram — progress updates and the final report are sent there automatically` : `
372847
+ - The user is connected via CLI — progress updates are sent as desktop notifications`;
372778
372848
  return `[DIRECTOR MODE — Supervised Autonomous Operation — ${roundInfo}]
372779
372849
 
372780
372850
  You are operating under director supervision. The director:
372781
372851
  - Assigned you a specific task
372782
372852
  - Will review your work after each step
372783
372853
  - May re-prompt if work is incomplete
372784
- - Has persistent memory of this project and past tasks
372854
+ - Has persistent memory of this project and past tasks${mediumNote}
372785
372855
 
372786
372856
  ${projectContext}
372787
372857
 
@@ -372902,6 +372972,22 @@ var init_telegramKill = __esm(() => {
372902
372972
  });
372903
372973
 
372904
372974
  // src/services/telegram/telegramBot.ts
372975
+ var exports_telegramBot = {};
372976
+ __export(exports_telegramBot, {
372977
+ validateTelegramToken: () => validateTelegramToken,
372978
+ stopTypingIndicator: () => stopTypingIndicator,
372979
+ stopTelegram: () => stopTelegram,
372980
+ startTypingIndicator: () => startTypingIndicator,
372981
+ sendTypingIndicator: () => sendTypingIndicator,
372982
+ sendTelegramMessage: () => sendTelegramMessage,
372983
+ onTelegramMessage: () => onTelegramMessage,
372984
+ isTelegramConfigured: () => isTelegramConfigured,
372985
+ isTelegramActive: () => isTelegramActive,
372986
+ initTelegramWithCredentials: () => initTelegramWithCredentials,
372987
+ initTelegram: () => initTelegram,
372988
+ getTelegramChatId: () => getTelegramChatId,
372989
+ getPendingTelegramMessage: () => getPendingTelegramMessage
372990
+ });
372905
372991
  async function api(method, body = {}) {
372906
372992
  const url3 = `https://api.telegram.org/bot${_token}/${method}`;
372907
372993
  const res = await fetch(url3, {
@@ -372938,9 +373024,36 @@ async function sendTelegramMessage(text) {
372938
373024
  }
372939
373025
  }
372940
373026
  }
373027
+ async function sendTypingIndicator() {
373028
+ if (!_polling || !_chatId)
373029
+ return;
373030
+ try {
373031
+ await api("sendChatAction", { chat_id: _chatId, action: "typing" });
373032
+ } catch {}
373033
+ }
373034
+ function startTypingIndicator() {
373035
+ if (_typingInterval)
373036
+ return;
373037
+ sendTypingIndicator();
373038
+ _typingInterval = setInterval(() => void sendTypingIndicator(), 4000);
373039
+ }
373040
+ function stopTypingIndicator() {
373041
+ if (_typingInterval) {
373042
+ clearInterval(_typingInterval);
373043
+ _typingInterval = null;
373044
+ }
373045
+ }
372941
373046
  function getPendingTelegramMessage() {
372942
373047
  return _queue.shift() ?? null;
372943
373048
  }
373049
+ function onTelegramMessage(cb) {
373050
+ _listeners.push(cb);
373051
+ return () => {
373052
+ const i2 = _listeners.indexOf(cb);
373053
+ if (i2 !== -1)
373054
+ _listeners.splice(i2, 1);
373055
+ };
373056
+ }
372944
373057
  function getTelegramChatId() {
372945
373058
  return _chatId;
372946
373059
  }
@@ -373024,6 +373137,9 @@ Ready to receive commands.`);
373024
373137
  logForDebugging(`[telegram] Init failed: ${e}`, { level: "warn" });
373025
373138
  }
373026
373139
  }
373140
+ function stopTelegram() {
373141
+ _polling = false;
373142
+ }
373027
373143
  async function pollLoop() {
373028
373144
  while (_polling) {
373029
373145
  try {
@@ -373038,7 +373154,7 @@ async function pollLoop() {
373038
373154
  }
373039
373155
  for (const update of resp.result) {
373040
373156
  _lastUpdateId = Math.max(_lastUpdateId, update.update_id);
373041
- handleUpdate(update);
373157
+ await handleUpdate(update);
373042
373158
  }
373043
373159
  } catch (e) {
373044
373160
  if (_polling) {
@@ -373048,7 +373164,7 @@ async function pollLoop() {
373048
373164
  }
373049
373165
  }
373050
373166
  }
373051
- function handleUpdate(update) {
373167
+ async function handleUpdate(update) {
373052
373168
  const msg = update.message;
373053
373169
  if (!msg?.text)
373054
373170
  return;
@@ -373061,19 +373177,54 @@ function handleUpdate(update) {
373061
373177
  if (!text)
373062
373178
  return;
373063
373179
  logForDebugging(`[telegram] Message from ${sender}: ${text.slice(0, 80)}`);
373064
- if (text === "/stop") {
373065
- globalStopSignal.set(true);
373066
- sendTelegramMessage("Stopping current task...");
373180
+ if (text.startsWith("/")) {
373181
+ if (text === "/stop") {
373182
+ globalStopSignal.set(true);
373183
+ sendTelegramMessage("Stopping current task...");
373184
+ return;
373185
+ }
373186
+ if (text === "/kill") {
373187
+ sendTelegramMessage("Killing ALL localclawd instances...").then(async () => {
373188
+ const killed = await killAllIncludingSelf();
373189
+ sendTelegramMessage(`Killed ${killed} instance(s). Self-terminating.`);
373190
+ });
373191
+ return;
373192
+ }
373193
+ if (text === "/start") {
373194
+ sendTelegramMessage(`*localclawd ready*
373195
+ Send me a task and I'll start working on it.
373196
+
373197
+ Commands:
373198
+ /stop — stop current task
373199
+ /kill — kill all instances
373200
+ /status — show current status`);
373201
+ return;
373202
+ }
373203
+ if (text === "/status") {
373204
+ const { getDirectorStatus } = await Promise.resolve().then(() => (init_directorEngine(), exports_directorEngine));
373205
+ const status = await getDirectorStatus();
373206
+ sendTelegramMessage(`*Status*
373207
+ ${status}`);
373208
+ return;
373209
+ }
373210
+ sendTelegramMessage(`Unknown command: ${text}
373211
+
373212
+ Available: /stop /kill /status`);
373067
373213
  return;
373068
373214
  }
373069
- if (text === "/kill") {
373070
- sendTelegramMessage("Killing ALL localclawd instances...").then(async () => {
373071
- const killed = await killAllIncludingSelf();
373072
- sendTelegramMessage(`Killed ${killed} instance(s). Self-terminating.`);
373073
- });
373074
- return;
373215
+ if (isDirectorActive()) {
373216
+ _queue.push(text);
373217
+ } else {
373218
+ sendTelegramMessage(`Starting director mode...`);
373219
+ sendTypingIndicator();
373220
+ try {
373221
+ const { enqueue: enqueue2 } = await Promise.resolve().then(() => (init_messageQueueManager(), exports_messageQueueManager));
373222
+ enqueue2({ value: `/director ${text}`, mode: "prompt", priority: "now" });
373223
+ } catch (e) {
373224
+ _queue.push(text);
373225
+ logForDebugging(`[telegram] Failed to auto-start director: ${e}`);
373226
+ }
373075
373227
  }
373076
- _queue.push(text);
373077
373228
  for (const cb of _listeners) {
373078
373229
  try {
373079
373230
  cb(text);
@@ -373101,16 +373252,31 @@ function chunkText(text, maxLen) {
373101
373252
  function sleep5(ms) {
373102
373253
  return new Promise((resolve37) => setTimeout(resolve37, ms));
373103
373254
  }
373104
- var _token = "", _chatId = 0, _polling = false, _lastUpdateId = 0, _queue, _listeners;
373255
+ var _token = "", _chatId = 0, _polling = false, _lastUpdateId = 0, _queue, _listeners, _typingInterval = null;
373105
373256
  var init_telegramBot = __esm(() => {
373106
373257
  init_debug();
373107
373258
  init_telegramSignals();
373108
373259
  init_telegramKill();
373260
+ init_directorEngine();
373109
373261
  _queue = [];
373110
373262
  _listeners = [];
373111
373263
  });
373112
373264
 
373113
373265
  // src/services/director/directorEngine.ts
373266
+ var exports_directorEngine = {};
373267
+ __export(exports_directorEngine, {
373268
+ startDirectorTask: () => startDirectorTask,
373269
+ sendDirectorNotification: () => sendDirectorNotification,
373270
+ reviewAndContinue: () => reviewAndContinue,
373271
+ resetDirector: () => resetDirector,
373272
+ isDirectorActive: () => isDirectorActive,
373273
+ getNotifyMedium: () => getNotifyMedium,
373274
+ getDirectorTask: () => getDirectorTask,
373275
+ getDirectorStatus: () => getDirectorStatus,
373276
+ getDirectorRound: () => getDirectorRound,
373277
+ getChangeSummary: () => getChangeSummary,
373278
+ detectStopSignal: () => detectStopSignal
373279
+ });
373114
373280
  function getDirectorRound() {
373115
373281
  return _round;
373116
373282
  }
@@ -373120,6 +373286,9 @@ function getDirectorTask() {
373120
373286
  function isDirectorActive() {
373121
373287
  return _task !== "";
373122
373288
  }
373289
+ function getNotifyMedium() {
373290
+ return _notifyMedium;
373291
+ }
373123
373292
  function resetDirector() {
373124
373293
  _round = 0;
373125
373294
  _task = "";
@@ -373127,6 +373296,7 @@ function resetDirector() {
373127
373296
  _startGitRef = "";
373128
373297
  _projectPath = "";
373129
373298
  _taskStartTime = 0;
373299
+ _notifyMedium = "desktop";
373130
373300
  stopHeartbeat();
373131
373301
  }
373132
373302
  function detectStopSignal(text) {
@@ -373135,7 +373305,7 @@ function detectStopSignal(text) {
373135
373305
  return label;
373136
373306
  return null;
373137
373307
  }
373138
- async function startDirectorTask(task, projectPath, maxRounds) {
373308
+ async function startDirectorTask(task, projectPath, maxRounds, medium) {
373139
373309
  const state = await loadDirectorState();
373140
373310
  if (shouldPrune(state)) {
373141
373311
  pruneMemory(state);
@@ -373149,10 +373319,11 @@ async function startDirectorTask(task, projectPath, maxRounds) {
373149
373319
  _projectId = project.id;
373150
373320
  _maxRounds = maxRounds ?? 20;
373151
373321
  _projectPath = projectPath;
373322
+ _notifyMedium = medium ?? (isTelegramActive() ? "telegram" : "desktop");
373152
373323
  _startGitRef = await captureGitRef(projectPath);
373153
373324
  startHeartbeat();
373154
373325
  const context7 = getProjectContext(state, project.id);
373155
- const prompt = buildDirectorTaskPrompt(task, context7, _round, _maxRounds);
373326
+ const prompt = buildDirectorTaskPrompt(task, context7, _round, _maxRounds, _notifyMedium);
373156
373327
  logForDebugging(`[director] Starting task in ${project.id}: ${task.slice(0, 80)}`);
373157
373328
  return { prompt, projectId: project.id };
373158
373329
  }
@@ -373216,12 +373387,17 @@ async function sendHeartbeatUpdate() {
373216
373387
  Task: ${_task.slice(0, 100)}
373217
373388
  Round: ${_round}/${isFinite(_maxRounds) ? _maxRounds : "∞"}
373218
373389
  Elapsed: ${elapsed} min`;
373219
- if (isTelegramActive()) {
373220
- sendTelegramMessage(msg);
373221
- }
373222
- sendDesktopNotification("localclawd Director", msg);
373390
+ await sendDirectorNotification("localclawd Director — Heartbeat", msg);
373223
373391
  logForDebugging(`[director] Heartbeat sent at ${elapsed}min`);
373224
373392
  }
373393
+ async function sendDirectorNotification(title, message) {
373394
+ if (_notifyMedium === "telegram" && isTelegramActive()) {
373395
+ sendTelegramMessage(`*${title}*
373396
+ ${message}`);
373397
+ } else {
373398
+ sendDesktopNotification(title, message);
373399
+ }
373400
+ }
373225
373401
  async function sendDesktopNotification(title, message) {
373226
373402
  try {
373227
373403
  const { execFile: execFile6 } = await import("child_process");
@@ -373325,7 +373501,7 @@ ${status}`;
373325
373501
  return "Unable to generate change summary.";
373326
373502
  }
373327
373503
  }
373328
- var _round = 0, _task = "", _projectId = "", _maxRounds = 20, _startGitRef = "", _projectPath = "", _heartbeatTimer = null, _taskStartTime = 0, STOP_PATTERNS, HEARTBEAT_INTERVAL_MS2;
373504
+ var _round = 0, _task = "", _projectId = "", _maxRounds = 20, _startGitRef = "", _projectPath = "", _heartbeatTimer = null, _taskStartTime = 0, _notifyMedium = "desktop", STOP_PATTERNS, HEARTBEAT_INTERVAL_MS2;
373329
373505
  var init_directorEngine = __esm(() => {
373330
373506
  init_directorMemoryOps();
373331
373507
  init_debug();
@@ -373367,12 +373543,12 @@ function DirectorBanner({
373367
373543
  children: [
373368
373544
  /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(ThemedText, {
373369
373545
  bold: true,
373370
- color: "#f59e0b",
373546
+ color: "#818cf8",
373371
373547
  children: `◆ Director [round ${roundDisplay}]${badgeStr}`
373372
373548
  }, undefined, false, undefined, this),
373373
373549
  /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(ThemedText, {
373374
373550
  dimColor: true,
373375
- color: "#f59e0b",
373551
+ color: "#818cf8",
373376
373552
  children: ` ↳ Task: ${task.slice(0, 80)}${task.length > 80 ? "..." : ""}`
373377
373553
  }, undefined, false, undefined, this)
373378
373554
  ]
@@ -373434,7 +373610,7 @@ function DirectorStatus({
373434
373610
  children: [
373435
373611
  /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(ThemedText, {
373436
373612
  bold: true,
373437
- color: "#f59e0b",
373613
+ color: "#818cf8",
373438
373614
  children: "◆ Director Status"
373439
373615
  }, undefined, false, undefined, this),
373440
373616
  /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(ThemedBox_default, {
@@ -373471,11 +373647,12 @@ var React58, jsx_dev_runtime195, DEFAULT_MAX_ROUNDS = 20, call19 = async (onDone
373471
373647
  }
373472
373648
  if (task && !isDirectorActive()) {
373473
373649
  const cwd2 = getOriginalCwd();
373474
- const { prompt } = await startDirectorTask(task, cwd2, DEFAULT_MAX_ROUNDS);
373475
- if (isTelegramActive()) {
373476
- sendTelegramMessage(`◆ Director starting task:
373650
+ const medium = isTelegramActive() ? "telegram" : "desktop";
373651
+ const { prompt } = await startDirectorTask(task, cwd2, DEFAULT_MAX_ROUNDS, medium);
373652
+ sendDirectorNotification("Director", `Starting task:
373477
373653
  ${task.slice(0, 200)}`);
373478
- }
373654
+ if (isTelegramActive())
373655
+ startTypingIndicator();
373479
373656
  return /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(DirectorBanner, {
373480
373657
  round: 1,
373481
373658
  maxRounds: DEFAULT_MAX_ROUNDS,
@@ -373490,18 +373667,18 @@ ${task.slice(0, 200)}`);
373490
373667
  })
373491
373668
  }, undefined, false, undefined, this);
373492
373669
  }
373670
+ if (isTelegramActive())
373671
+ stopTypingIndicator();
373493
373672
  if (globalStopSignal.get()) {
373494
373673
  globalStopSignal.reset();
373495
373674
  const round2 = getDirectorRound();
373496
373675
  const changeSummary = await getChangeSummary();
373497
- resetDirector();
373498
- if (isTelegramActive()) {
373499
- const summaryMsg = changeSummary ? `
373676
+ const summaryMsg = changeSummary ? `
373500
373677
 
373501
373678
  Changes:
373502
373679
  ${changeSummary}` : "";
373503
- sendTelegramMessage(`Director stopped via /stop after ${round2} rounds${summaryMsg}`);
373504
- }
373680
+ sendDirectorNotification("Director Stopped", `Stopped via /stop after ${round2} rounds${summaryMsg}`);
373681
+ resetDirector();
373505
373682
  return /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(DirectorDone, {
373506
373683
  round: round2,
373507
373684
  reason: "stopped via /stop",
@@ -373514,28 +373691,31 @@ ${changeSummary}` : "";
373514
373691
  lastText = extractLastAssistantText(prev);
373515
373692
  return prev;
373516
373693
  });
373517
- if (isTelegramActive() && lastText.trim()) {
373694
+ if (lastText.trim()) {
373518
373695
  const round2 = getDirectorRound();
373519
373696
  const preview = lastText.slice(0, 1200);
373520
373697
  const suffix = lastText.length > 1200 ? `
373521
373698
  ...(truncated)` : "";
373522
- sendTelegramMessage(`Director round ${round2}:
373699
+ if (getNotifyMedium() === "telegram" && isTelegramActive()) {
373700
+ const { sendTelegramMessage: sendTelegramMessage2 } = await Promise.resolve().then(() => (init_telegramBot(), exports_telegramBot));
373701
+ sendTelegramMessage2(`Director round ${round2}:
373523
373702
  ${preview}${suffix}`);
373703
+ }
373524
373704
  }
373525
373705
  const telegramMsg = getPendingTelegramMessage();
373526
373706
  const result = await reviewAndContinue(lastText, telegramMsg);
373527
373707
  if (result.done) {
373708
+ if (isTelegramActive())
373709
+ stopTypingIndicator();
373528
373710
  const round2 = getDirectorRound();
373529
373711
  const reason = result.reason ?? "completed";
373530
373712
  const changeSummary = await getChangeSummary();
373531
- resetDirector();
373532
- if (isTelegramActive()) {
373533
- const summaryMsg = changeSummary ? `
373713
+ const summaryMsg = changeSummary ? `
373534
373714
 
373535
373715
  Changes:
373536
373716
  ${changeSummary}` : "";
373537
- sendTelegramMessage(`Director finished: ${reason} (${round2} rounds)${summaryMsg}`);
373538
- }
373717
+ sendDirectorNotification("Director — Complete", `Finished: ${reason} (${round2} rounds)${summaryMsg}`);
373718
+ resetDirector();
373539
373719
  return /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(DirectorDone, {
373540
373720
  round: round2,
373541
373721
  reason,
@@ -373545,6 +373725,8 @@ ${changeSummary}` : "";
373545
373725
  }
373546
373726
  const round = getDirectorRound();
373547
373727
  const currentTask = getDirectorTask();
373728
+ if (isTelegramActive())
373729
+ startTypingIndicator();
373548
373730
  return /* @__PURE__ */ jsx_dev_runtime195.jsxDEV(DirectorBanner, {
373549
373731
  round,
373550
373732
  maxRounds: DEFAULT_MAX_ROUNDS,
@@ -373576,9 +373758,7 @@ var init_director2 = __esm(() => {
373576
373758
  type: "local-jsx",
373577
373759
  name: "director",
373578
373760
  aliases: ["dir"],
373579
- description: "Director mode persistent memory, supervised autonomous operation",
373580
- isEnabled: true,
373581
- isHidden: false,
373761
+ description: "Supervised autonomous mode with persistent project memory. Usage: /director <task>",
373582
373762
  source: "builtin",
373583
373763
  load: () => Promise.resolve().then(() => (init_director(), exports_director))
373584
373764
  };
@@ -373861,7 +374041,7 @@ var init_keepgoing = __esm(() => {
373861
374041
  STOP_PATTERNS2 = [
373862
374042
  { pattern: /TASK[_ ]COMPLETE:/i, label: "task complete" },
373863
374043
  { pattern: /NEEDS[_ ]INPUT:/i, label: "paused — needs input" },
373864
- { pattern: /\bFINISHED\b/, label: "finished" },
374044
+ { pattern: /\bFINISHED\b/i, label: "finished" },
373865
374045
  { pattern: /ALL[_ ]DONE\b/i, label: "all done" },
373866
374046
  { pattern: /WORK[_ ]COMPLETE:/i, label: "work complete" }
373867
374047
  ];
@@ -374542,7 +374722,7 @@ var init_heartbeat2 = __esm(() => {
374542
374722
  type: "local-jsx",
374543
374723
  name: "heartbeat",
374544
374724
  aliases: ["hb"],
374545
- description: "Activate recurring autonomous mode: agent wakes every N minutes without stopping. " + "Only you can stop it (Ctrl+C). /thinkharder is auto-enabled. " + "Usage: /heartbeat <minutes> e.g. /heartbeat 5",
374725
+ description: "Periodic autonomous mode agent re-prompts every N minutes. Usage: /heartbeat 5",
374546
374726
  load: () => Promise.resolve().then(() => (init_heartbeat(), exports_heartbeat))
374547
374727
  };
374548
374728
  heartbeat_default = heartbeat;
@@ -374814,10 +374994,37 @@ var init_ctx2 = __esm(() => {
374814
374994
  ctx_default = ctx;
374815
374995
  });
374816
374996
 
374997
+ // src/commands/ctx/contextsize.tsx
374998
+ var exports_contextsize = {};
374999
+ __export(exports_contextsize, {
375000
+ call: () => call25
375001
+ });
375002
+ var call25 = async (onDone, context7, args) => {
375003
+ const value = (args ?? "").trim();
375004
+ const { call: ctxCall } = await Promise.resolve().then(() => (init_ctx(), exports_ctx));
375005
+ if (value) {
375006
+ return ctxCall(onDone, context7, `set ${value}`);
375007
+ }
375008
+ return ctxCall(onDone, context7, "");
375009
+ };
375010
+
375011
+ // src/commands/ctx/contextsize-index.ts
375012
+ var contextsize, contextsize_index_default;
375013
+ var init_contextsize_index = __esm(() => {
375014
+ contextsize = {
375015
+ type: "local-jsx",
375016
+ name: "contextsize",
375017
+ aliases: ["ctxsize"],
375018
+ description: "Set context window size. Usage: /contextsize 200k | /contextsize auto",
375019
+ load: () => Promise.resolve().then(() => exports_contextsize)
375020
+ };
375021
+ contextsize_index_default = contextsize;
375022
+ });
375023
+
374817
375024
  // src/commands/research/research.tsx
374818
375025
  var exports_research = {};
374819
375026
  __export(exports_research, {
374820
- call: () => call25
375027
+ call: () => call26
374821
375028
  });
374822
375029
  function buildResearchPrompt(topic, thinkHarder) {
374823
375030
  const thinkHarderSection = thinkHarder ? `
@@ -374926,7 +375133,7 @@ function ResearchWarning({
374926
375133
  }, undefined, false, undefined, this)
374927
375134
  }, undefined, false, undefined, this);
374928
375135
  }
374929
- var React64, jsx_dev_runtime201, call25 = async (onDone, _context, args) => {
375136
+ var React64, jsx_dev_runtime201, call26 = async (onDone, _context, args) => {
374930
375137
  const rawArgs = args?.trim() ?? "";
374931
375138
  const { ownArgs: topic, nextCmd } = extractChain(rawArgs);
374932
375139
  if (!topic) {
@@ -374995,7 +375202,7 @@ var init_thinkharder2 = __esm(() => {
374995
375202
  type: "local-jsx",
374996
375203
  name: "thinkharder",
374997
375204
  aliases: ["th"],
374998
- description: "Enable careful mode: model double-checks its work at each step and queries memory more frequently. Use /thinknormal to return to default.",
375205
+ description: "Enable careful mode: 5-phase verification pipeline (ORIENT DRAFT CRITIQUE REFINE → VERIFY). Use /thinknormal to return to default.",
374999
375206
  load: () => Promise.resolve().then(() => (init_thinkharder(), exports_thinkharder))
375000
375207
  };
375001
375208
  thinkharder_default = thinkharder;
@@ -375008,7 +375215,7 @@ var init_thinknormal_index = __esm(() => {
375008
375215
  type: "local-jsx",
375009
375216
  name: "thinknormal",
375010
375217
  aliases: ["tn"],
375011
- description: "Return to default pipeline. Disables /thinkharder careful mode and lattice memory is fallback-only.",
375218
+ description: "Return to default pipeline. Disables /thinkharder careful mode.",
375012
375219
  load: async () => {
375013
375220
  const mod = await Promise.resolve().then(() => (init_thinkharder(), exports_thinkharder));
375014
375221
  return { call: mod.callNormal };
@@ -375733,7 +375940,7 @@ var init_promptEditor = __esm(() => {
375733
375940
  // src/commands/memory/memory.tsx
375734
375941
  var exports_memory = {};
375735
375942
  __export(exports_memory, {
375736
- call: () => call26
375943
+ call: () => call27
375737
375944
  });
375738
375945
  import { mkdir as mkdir30, writeFile as writeFile31 } from "fs/promises";
375739
375946
  function MemoryCommand({
@@ -375813,7 +376020,7 @@ ${editorHint}`, {
375813
376020
  }, undefined, true, undefined, this)
375814
376021
  }, undefined, false, undefined, this);
375815
376022
  }
375816
- var React65, jsx_dev_runtime204, call26 = async (onDone) => {
376023
+ var React65, jsx_dev_runtime204, call27 = async (onDone) => {
375817
376024
  clearMemoryFileCaches();
375818
376025
  await getMemoryFiles();
375819
376026
  return /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(MemoryCommand, {
@@ -376669,7 +376876,7 @@ function Help(t0) {
376669
376876
  let t6;
376670
376877
  if ($2[31] !== tabs) {
376671
376878
  t6 = /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(Tabs, {
376672
- title: `localclawd v${"1.2.0"}`,
376879
+ title: `localclawd v${"1.2.2"}`,
376673
376880
  color: "professionalBlue",
376674
376881
  defaultTab: "general",
376675
376882
  children: tabs
@@ -376775,9 +376982,9 @@ var init_Help = __esm(() => {
376775
376982
  // src/commands/help/help.tsx
376776
376983
  var exports_help = {};
376777
376984
  __export(exports_help, {
376778
- call: () => call27
376985
+ call: () => call28
376779
376986
  });
376780
- var jsx_dev_runtime209, call27 = async (onDone, {
376987
+ var jsx_dev_runtime209, call28 = async (onDone, {
376781
376988
  options: {
376782
376989
  commands
376783
376990
  }
@@ -376984,7 +377191,7 @@ var init_IdeAutoConnectDialog = __esm(() => {
376984
377191
  var exports_ide = {};
376985
377192
  __export(exports_ide, {
376986
377193
  formatWorkspaceFolders: () => formatWorkspaceFolders,
376987
- call: () => call28
377194
+ call: () => call29
376988
377195
  });
376989
377196
  import * as path12 from "path";
376990
377197
  function IDEScreen(t0) {
@@ -377462,7 +377669,7 @@ function InstallOnMount(t0) {
377462
377669
  import_react113.useEffect(t1, t2);
377463
377670
  return null;
377464
377671
  }
377465
- async function call28(onDone, context7, args) {
377672
+ async function call29(onDone, context7, args) {
377466
377673
  logEvent("tengu_ext_ide_command", {});
377467
377674
  const {
377468
377675
  options: {
@@ -378045,11 +378252,11 @@ var init_template = __esm(() => {
378045
378252
  // src/commands/keybindings/keybindings.ts
378046
378253
  var exports_keybindings = {};
378047
378254
  __export(exports_keybindings, {
378048
- call: () => call29
378255
+ call: () => call30
378049
378256
  });
378050
378257
  import { mkdir as mkdir31, writeFile as writeFile32 } from "fs/promises";
378051
378258
  import { dirname as dirname47 } from "path";
378052
- async function call29() {
378259
+ async function call30() {
378053
378260
  if (!isKeybindingCustomizationEnabled()) {
378054
378261
  return {
378055
378262
  type: "text",
@@ -392580,7 +392787,7 @@ var init_PluginSettings = __esm(() => {
392580
392787
  // src/commands/mcp/mcp.tsx
392581
392788
  var exports_mcp = {};
392582
392789
  __export(exports_mcp, {
392583
- call: () => call30
392790
+ call: () => call31
392584
392791
  });
392585
392792
  function MCPToggle(t0) {
392586
392793
  const $2 = c3(7);
@@ -392633,7 +392840,7 @@ function _temp239(c5) {
392633
392840
  function _temp100(s) {
392634
392841
  return s.mcp.clients;
392635
392842
  }
392636
- async function call30(onDone, _context, args) {
392843
+ async function call31(onDone, _context, args) {
392637
392844
  if (args) {
392638
392845
  const parts = args.trim().split(/\s+/);
392639
392846
  if (parts[0] === "no-redirect") {
@@ -392902,7 +393109,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
392902
393109
  return [];
392903
393110
  }
392904
393111
  }
392905
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.0") {
393112
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.2") {
392906
393113
  if (process.env.USER_TYPE === "ant") {
392907
393114
  const changelog = MACRO.VERSION_CHANGELOG;
392908
393115
  if (changelog) {
@@ -392929,7 +393136,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.0") {
392929
393136
  releaseNotes
392930
393137
  };
392931
393138
  }
392932
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.2.0") {
393139
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.2.2") {
392933
393140
  if (process.env.USER_TYPE === "ant") {
392934
393141
  const changelog = MACRO.VERSION_CHANGELOG;
392935
393142
  if (changelog) {
@@ -392965,7 +393172,7 @@ var init_releaseNotes = __esm(() => {
392965
393172
  // src/commands/release-notes/release-notes.ts
392966
393173
  var exports_release_notes = {};
392967
393174
  __export(exports_release_notes, {
392968
- call: () => call31
393175
+ call: () => call32
392969
393176
  });
392970
393177
  function formatReleaseNotes(notes) {
392971
393178
  return notes.map(([version, notes2]) => {
@@ -392978,7 +393185,7 @@ ${bulletPoints}`;
392978
393185
 
392979
393186
  `);
392980
393187
  }
392981
- async function call31() {
393188
+ async function call32() {
392982
393189
  let freshNotes = [];
392983
393190
  try {
392984
393191
  const timeoutPromise = new Promise((_2, reject2) => {
@@ -393490,9 +393697,9 @@ var init_createSession = __esm(() => {
393490
393697
  // src/commands/rename/rename.ts
393491
393698
  var exports_rename = {};
393492
393699
  __export(exports_rename, {
393493
- call: () => call32
393700
+ call: () => call33
393494
393701
  });
393495
- async function call32(onDone, context7, args) {
393702
+ async function call33(onDone, context7, args) {
393496
393703
  if (isTeammate()) {
393497
393704
  onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
393498
393705
  return null;
@@ -394187,7 +394394,7 @@ function getRecentActivitySync() {
394187
394394
  return cachedActivity;
394188
394395
  }
394189
394396
  function getLogoDisplayData() {
394190
- const version = process.env.DEMO_VERSION ?? "1.2.0";
394397
+ const version = process.env.DEMO_VERSION ?? "1.2.2";
394191
394398
  const serverUrl = getDirectConnectServerUrl();
394192
394399
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
394193
394400
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -395294,7 +395501,7 @@ function Logo() {
395294
395501
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
395295
395502
  t2 = () => {
395296
395503
  const currentConfig = getGlobalConfig();
395297
- if (currentConfig.lastReleaseNotesSeen === "1.2.0") {
395504
+ if (currentConfig.lastReleaseNotesSeen === "1.2.2") {
395298
395505
  return;
395299
395506
  }
395300
395507
  saveGlobalConfig(_temp326);
@@ -395953,12 +396160,12 @@ function Logo() {
395953
396160
  return t41;
395954
396161
  }
395955
396162
  function _temp326(current) {
395956
- if (current.lastReleaseNotesSeen === "1.2.0") {
396163
+ if (current.lastReleaseNotesSeen === "1.2.2") {
395957
396164
  return current;
395958
396165
  }
395959
396166
  return {
395960
396167
  ...current,
395961
- lastReleaseNotesSeen: "1.2.0"
396168
+ lastReleaseNotesSeen: "1.2.2"
395962
396169
  };
395963
396170
  }
395964
396171
  function _temp241(s_0) {
@@ -401851,7 +402058,7 @@ var init_crossProjectResume = __esm(() => {
401851
402058
  var exports_resume = {};
401852
402059
  __export(exports_resume, {
401853
402060
  filterResumableSessions: () => filterResumableSessions,
401854
- call: () => call33
402061
+ call: () => call34
401855
402062
  });
401856
402063
  function resumeHelpMessage(result) {
401857
402064
  switch (result.resultType) {
@@ -402036,7 +402243,7 @@ function ResumeCommand({
402036
402243
  function filterResumableSessions(logs2, currentSessionId) {
402037
402244
  return logs2.filter((l) => !l.isSidechain && getSessionIdFromLog(l) !== currentSessionId);
402038
402245
  }
402039
- var React90, jsx_dev_runtime260, call33 = async (onDone, context7, args) => {
402246
+ var React90, jsx_dev_runtime260, call34 = async (onDone, context7, args) => {
402040
402247
  const onResume = async (sessionId, log2, entrypoint) => {
402041
402248
  try {
402042
402249
  await context7.resume?.(sessionId, log2, entrypoint);
@@ -402526,7 +402733,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
402526
402733
  // src/commands/review/ultrareviewCommand.tsx
402527
402734
  var exports_ultrareviewCommand = {};
402528
402735
  __export(exports_ultrareviewCommand, {
402529
- call: () => call34
402736
+ call: () => call35
402530
402737
  });
402531
402738
  function contentBlocksToString(blocks) {
402532
402739
  return blocks.map((b3) => b3.type === "text" ? b3.text : "").filter(Boolean).join(`
@@ -402546,7 +402753,7 @@ async function launchAndDone(args, context7, onDone, billingNote, signal) {
402546
402753
  });
402547
402754
  }
402548
402755
  }
402549
- var jsx_dev_runtime262, call34 = async (onDone, context7, args) => {
402756
+ var jsx_dev_runtime262, call35 = async (onDone, context7, args) => {
402550
402757
  const gate = await checkOverageGate();
402551
402758
  if (gate.kind === "not-enabled") {
402552
402759
  onDone("Free ultrareviews used. This feature requires a cloud subscription.", {
@@ -406872,7 +407079,7 @@ var init_server = __esm(() => {
406872
407079
  // src/commands/session/session.tsx
406873
407080
  var exports_session = {};
406874
407081
  __export(exports_session, {
406875
- call: () => call35
407082
+ call: () => call36
406876
407083
  });
406877
407084
  function SessionInfo(t0) {
406878
407085
  const $2 = c3(19);
@@ -407045,7 +407252,7 @@ function _temp247(e) {
407045
407252
  function _temp119(s) {
407046
407253
  return s.remoteSessionUrl;
407047
407254
  }
407048
- var import_react150, jsx_dev_runtime263, call35 = async (onDone) => {
407255
+ var import_react150, jsx_dev_runtime263, call36 = async (onDone) => {
407049
407256
  return /* @__PURE__ */ jsx_dev_runtime263.jsxDEV(SessionInfo, {
407050
407257
  onDone
407051
407258
  }, undefined, false, undefined, this);
@@ -407401,9 +407608,9 @@ var init_SkillsMenu = __esm(() => {
407401
407608
  // src/commands/skills/skills.tsx
407402
407609
  var exports_skills2 = {};
407403
407610
  __export(exports_skills2, {
407404
- call: () => call36
407611
+ call: () => call37
407405
407612
  });
407406
- async function call36(onDone, context7) {
407613
+ async function call37(onDone, context7) {
407407
407614
  return /* @__PURE__ */ jsx_dev_runtime265.jsxDEV(SkillsMenu, {
407408
407615
  onExit: onDone,
407409
407616
  commands: context7.options.commands
@@ -407430,9 +407637,9 @@ var init_skills3 = __esm(() => {
407430
407637
  // src/commands/status/status.tsx
407431
407638
  var exports_status = {};
407432
407639
  __export(exports_status, {
407433
- call: () => call37
407640
+ call: () => call38
407434
407641
  });
407435
- async function call37(onDone, context7) {
407642
+ async function call38(onDone, context7) {
407436
407643
  return /* @__PURE__ */ jsx_dev_runtime266.jsxDEV(Settings, {
407437
407644
  onClose: onDone,
407438
407645
  context: context7,
@@ -408043,7 +408250,7 @@ ${reasons}`,
408043
408250
  } : prev);
408044
408251
  }
408045
408252
  }
408046
- var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://github.com/chromebookwiz/localclawd", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call38 = async (onDone, context7, args) => {
408253
+ var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://github.com/chromebookwiz/localclawd", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call39 = async (onDone, context7, args) => {
408047
408254
  const blurb = args.trim();
408048
408255
  if (!blurb) {
408049
408256
  const msg = await launchUltraplan2({
@@ -408104,7 +408311,7 @@ var init_ultraplan = __esm(() => {
408104
408311
  argumentHint: "<prompt>",
408105
408312
  isEnabled: () => false,
408106
408313
  load: () => Promise.resolve({
408107
- call: call38
408314
+ call: call39
408108
408315
  })
408109
408316
  };
408110
408317
  });
@@ -412866,9 +413073,9 @@ var init_BackgroundTasksDialog = __esm(() => {
412866
413073
  // src/commands/tasks/tasks.tsx
412867
413074
  var exports_tasks = {};
412868
413075
  __export(exports_tasks, {
412869
- call: () => call39
413076
+ call: () => call40
412870
413077
  });
412871
- async function call39(onDone, context7) {
413078
+ async function call40(onDone, context7) {
412872
413079
  return /* @__PURE__ */ jsx_dev_runtime277.jsxDEV(BackgroundTasksDialog, {
412873
413080
  toolUseContext: context7,
412874
413081
  onDone
@@ -413159,9 +413366,9 @@ var init_terminalSetup2 = __esm(() => {
413159
413366
  // src/commands/usage/usage.tsx
413160
413367
  var exports_usage = {};
413161
413368
  __export(exports_usage, {
413162
- call: () => call40
413369
+ call: () => call41
413163
413370
  });
413164
- var jsx_dev_runtime278, call40 = async (onDone, context7) => {
413371
+ var jsx_dev_runtime278, call41 = async (onDone, context7) => {
413165
413372
  return /* @__PURE__ */ jsx_dev_runtime278.jsxDEV(Settings, {
413166
413373
  onClose: onDone,
413167
413374
  context: context7,
@@ -413192,7 +413399,7 @@ var init_usage3 = __esm(() => {
413192
413399
  // src/commands/theme/theme.tsx
413193
413400
  var exports_theme = {};
413194
413401
  __export(exports_theme, {
413195
- call: () => call41
413402
+ call: () => call42
413196
413403
  });
413197
413404
  function ThemePickerCommand(t0) {
413198
413405
  const $2 = c3(8);
@@ -413242,7 +413449,7 @@ function ThemePickerCommand(t0) {
413242
413449
  }
413243
413450
  return t3;
413244
413451
  }
413245
- var jsx_dev_runtime279, call41 = async (onDone, _context) => {
413452
+ var jsx_dev_runtime279, call42 = async (onDone, _context) => {
413246
413453
  return /* @__PURE__ */ jsx_dev_runtime279.jsxDEV(ThemePickerCommand, {
413247
413454
  onDone
413248
413455
  }, undefined, false, undefined, this);
@@ -413269,9 +413476,9 @@ var init_theme3 = __esm(() => {
413269
413476
  // src/commands/vim/vim.ts
413270
413477
  var exports_vim = {};
413271
413478
  __export(exports_vim, {
413272
- call: () => call42
413479
+ call: () => call43
413273
413480
  });
413274
- var call42 = async () => {
413481
+ var call43 = async () => {
413275
413482
  const config2 = getGlobalConfig();
413276
413483
  let currentMode = config2.editorMode || "normal";
413277
413484
  if (currentMode === "emacs") {
@@ -413312,7 +413519,7 @@ var init_vim2 = __esm(() => {
413312
413519
  var exports_thinkback = {};
413313
413520
  __export(exports_thinkback, {
413314
413521
  playAnimation: () => playAnimation,
413315
- call: () => call43
413522
+ call: () => call44
413316
413523
  });
413317
413524
  import { execa as execa11 } from "execa";
413318
413525
  import { readFile as readFile43 } from "fs/promises";
@@ -413850,7 +414057,7 @@ function ThinkbackFlow(t0) {
413850
414057
  }
413851
414058
  return t8;
413852
414059
  }
413853
- async function call43(onDone) {
414060
+ async function call44(onDone) {
413854
414061
  return /* @__PURE__ */ jsx_dev_runtime280.jsxDEV(ThinkbackFlow, {
413855
414062
  onDone
413856
414063
  }, undefined, false, undefined, this);
@@ -413895,14 +414102,14 @@ var init_thinkback2 = __esm(() => {
413895
414102
  // src/commands/thinkback-play/thinkback-play.ts
413896
414103
  var exports_thinkback_play = {};
413897
414104
  __export(exports_thinkback_play, {
413898
- call: () => call44
414105
+ call: () => call45
413899
414106
  });
413900
414107
  import { join as join117 } from "path";
413901
414108
  function getPluginId2() {
413902
414109
  const marketplaceName = process.env.USER_TYPE === "ant" ? INTERNAL_MARKETPLACE_NAME : OFFICIAL_MARKETPLACE_NAME;
413903
414110
  return `thinkback@${marketplaceName}`;
413904
414111
  }
413905
- async function call44() {
414112
+ async function call45() {
413906
414113
  const v2Data = loadInstalledPluginsV2();
413907
414114
  const pluginId = getPluginId2();
413908
414115
  const installations = v2Data.plugins[pluginId];
@@ -416390,9 +416597,9 @@ var init_PermissionRuleList = __esm(() => {
416390
416597
  // src/commands/permissions/permissions.tsx
416391
416598
  var exports_permissions = {};
416392
416599
  __export(exports_permissions, {
416393
- call: () => call45
416600
+ call: () => call46
416394
416601
  });
416395
- var jsx_dev_runtime288, call45 = async (onDone, context7) => {
416602
+ var jsx_dev_runtime288, call46 = async (onDone, context7) => {
416396
416603
  return /* @__PURE__ */ jsx_dev_runtime288.jsxDEV(PermissionRuleList, {
416397
416604
  onExit: onDone,
416398
416605
  onRetryDenials: (commands) => {
@@ -416422,7 +416629,7 @@ var init_permissions4 = __esm(() => {
416422
416629
  // src/commands/plan/plan.tsx
416423
416630
  var exports_plan = {};
416424
416631
  __export(exports_plan, {
416425
- call: () => call46
416632
+ call: () => call47
416426
416633
  });
416427
416634
  function PlanDisplay(t0) {
416428
416635
  const $2 = c3(11);
@@ -416510,7 +416717,7 @@ function PlanDisplay(t0) {
416510
416717
  }
416511
416718
  return t5;
416512
416719
  }
416513
- async function call46(onDone, context7, args) {
416720
+ async function call47(onDone, context7, args) {
416514
416721
  const {
416515
416722
  getAppState,
416516
416723
  setAppState
@@ -416652,7 +416859,7 @@ var init_FastIcon = __esm(() => {
416652
416859
  // src/commands/fast/fast.tsx
416653
416860
  var exports_fast = {};
416654
416861
  __export(exports_fast, {
416655
- call: () => call47,
416862
+ call: () => call48,
416656
416863
  FastModePicker: () => FastModePicker
416657
416864
  });
416658
416865
  function applyFastMode(enable, setAppState) {
@@ -416967,7 +417174,7 @@ async function handleFastModeShortcut(enable, getAppState, setAppState) {
416967
417174
  return `Fast mode OFF`;
416968
417175
  }
416969
417176
  }
416970
- async function call47(onDone, context7, args) {
417177
+ async function call48(onDone, context7, args) {
416971
417178
  if (!isFastModeEnabled()) {
416972
417179
  return null;
416973
417180
  }
@@ -417275,9 +417482,9 @@ var init_Passes = __esm(() => {
417275
417482
  // src/commands/passes/passes.tsx
417276
417483
  var exports_passes = {};
417277
417484
  __export(exports_passes, {
417278
- call: () => call48
417485
+ call: () => call49
417279
417486
  });
417280
- async function call48(onDone) {
417487
+ async function call49(onDone) {
417281
417488
  const config2 = getGlobalConfig();
417282
417489
  const isFirstVisit = !config2.hasVisitedPasses;
417283
417490
  if (isFirstVisit) {
@@ -418039,9 +418246,9 @@ var init_Grove = __esm(() => {
418039
418246
  // src/commands/privacy-settings/privacy-settings.tsx
418040
418247
  var exports_privacy_settings = {};
418041
418248
  __export(exports_privacy_settings, {
418042
- call: () => call49
418249
+ call: () => call50
418043
418250
  });
418044
- async function call49(onDone) {
418251
+ async function call50(onDone) {
418045
418252
  const qualified = await isQualifiedForGrove();
418046
418253
  if (!qualified) {
418047
418254
  onDone(FALLBACK_MESSAGE);
@@ -419881,9 +420088,9 @@ var init_HooksConfigMenu = __esm(() => {
419881
420088
  // src/commands/hooks/hooks.tsx
419882
420089
  var exports_hooks = {};
419883
420090
  __export(exports_hooks, {
419884
- call: () => call50
420091
+ call: () => call51
419885
420092
  });
419886
- var jsx_dev_runtime301, call50 = async (onDone, context7) => {
420093
+ var jsx_dev_runtime301, call51 = async (onDone, context7) => {
419887
420094
  logEvent("tengu_hooks_command", {});
419888
420095
  const appState = context7.getAppState();
419889
420096
  const permissionContext = appState.toolPermissionContext;
@@ -419915,10 +420122,10 @@ var init_hooks3 = __esm(() => {
419915
420122
  // src/commands/files/files.ts
419916
420123
  var exports_files2 = {};
419917
420124
  __export(exports_files2, {
419918
- call: () => call51
420125
+ call: () => call52
419919
420126
  });
419920
420127
  import { relative as relative26 } from "path";
419921
- async function call51(_args, context7) {
420128
+ async function call52(_args, context7) {
419922
420129
  const files = context7.readFileState ? cacheKeys(context7.readFileState) : [];
419923
420130
  if (files.length === 0) {
419924
420131
  return { type: "text", value: "No files in context" };
@@ -419951,7 +420158,7 @@ var init_files4 = __esm(() => {
419951
420158
  var exports_branch = {};
419952
420159
  __export(exports_branch, {
419953
420160
  deriveFirstPrompt: () => deriveFirstPrompt,
419954
- call: () => call52
420161
+ call: () => call53
419955
420162
  });
419956
420163
  import { randomUUID as randomUUID27 } from "crypto";
419957
420164
  import { mkdir as mkdir33, readFile as readFile44, writeFile as writeFile36 } from "fs/promises";
@@ -420057,7 +420264,7 @@ async function getUniqueForkName(baseName) {
420057
420264
  }
420058
420265
  return `${baseName} (Branch ${nextNumber})`;
420059
420266
  }
420060
- async function call52(onDone, context7, args) {
420267
+ async function call53(onDone, context7, args) {
420061
420268
  const customTitle = args?.trim() || undefined;
420062
420269
  const originalSessionId = getSessionId();
420063
420270
  try {
@@ -426072,9 +426279,9 @@ var init_AgentsMenu = __esm(() => {
426072
426279
  // src/commands/agents/agents.tsx
426073
426280
  var exports_agents = {};
426074
426281
  __export(exports_agents, {
426075
- call: () => call53
426282
+ call: () => call54
426076
426283
  });
426077
- async function call53(onDone, context7) {
426284
+ async function call54(onDone, context7) {
426078
426285
  const appState = context7.getAppState();
426079
426286
  const permissionContext = appState.toolPermissionContext;
426080
426287
  const tools = getTools(permissionContext);
@@ -426105,9 +426312,9 @@ var init_agents2 = __esm(() => {
426105
426312
  // src/commands/plugin/plugin.tsx
426106
426313
  var exports_plugin = {};
426107
426314
  __export(exports_plugin, {
426108
- call: () => call54
426315
+ call: () => call55
426109
426316
  });
426110
- async function call54(onDone, _context, args) {
426317
+ async function call55(onDone, _context, args) {
426111
426318
  return /* @__PURE__ */ jsx_dev_runtime327.jsxDEV(PluginSettings, {
426112
426319
  onComplete: onDone,
426113
426320
  args
@@ -426272,12 +426479,12 @@ var init_refresh = __esm(() => {
426272
426479
  // src/commands/reload-plugins/reload-plugins.ts
426273
426480
  var exports_reload_plugins = {};
426274
426481
  __export(exports_reload_plugins, {
426275
- call: () => call55
426482
+ call: () => call56
426276
426483
  });
426277
426484
  function n(count3, noun) {
426278
426485
  return `${count3} ${plural(count3, noun)}`;
426279
426486
  }
426280
- var call55 = async (_args, context7) => {
426487
+ var call56 = async (_args, context7) => {
426281
426488
  if (false) {}
426282
426489
  const r = await refreshActivePlugins(context7.setAppState);
426283
426490
  const parts = [
@@ -426320,9 +426527,9 @@ var init_reload_plugins2 = __esm(() => {
426320
426527
  // src/commands/rewind/rewind.ts
426321
426528
  var exports_rewind = {};
426322
426529
  __export(exports_rewind, {
426323
- call: () => call56
426530
+ call: () => call57
426324
426531
  });
426325
- async function call56(_args, context7) {
426532
+ async function call57(_args, context7) {
426326
426533
  if (context7.openMessageSelector) {
426327
426534
  context7.openMessageSelector();
426328
426535
  }
@@ -426437,7 +426644,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
426437
426644
  smapsRollup,
426438
426645
  platform: process.platform,
426439
426646
  nodeVersion: process.version,
426440
- ccVersion: "1.2.0"
426647
+ ccVersion: "1.2.2"
426441
426648
  };
426442
426649
  }
426443
426650
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -426507,9 +426714,9 @@ var init_heapDumpService = __esm(() => {
426507
426714
  // src/commands/heapdump/heapdump.ts
426508
426715
  var exports_heapdump = {};
426509
426716
  __export(exports_heapdump, {
426510
- call: () => call57
426717
+ call: () => call58
426511
426718
  });
426512
- async function call57() {
426719
+ async function call58() {
426513
426720
  const result = await performHeapDump();
426514
426721
  if (!result.success) {
426515
426722
  return {
@@ -426880,7 +427087,7 @@ var USAGE = `/bridge-kick <subcommand>
426880
427087
  reconnect-session fail next POST /bridge/reconnect fails
426881
427088
  heartbeat <status> next heartbeat throws BridgeFatalError(status)
426882
427089
  reconnect call reconnectEnvironmentWithSession directly
426883
- status print bridge state`, call58 = async (args) => {
427090
+ status print bridge state`, call59 = async (args) => {
426884
427091
  const h = getBridgeDebugHandle();
426885
427092
  if (!h) {
426886
427093
  return {
@@ -427013,16 +427220,16 @@ var init_bridge_kick = __esm(() => {
427013
427220
  description: "Inject bridge failure states for manual recovery testing",
427014
427221
  isEnabled: () => process.env.USER_TYPE === "ant",
427015
427222
  supportsNonInteractive: false,
427016
- load: () => Promise.resolve({ call: call58 })
427223
+ load: () => Promise.resolve({ call: call59 })
427017
427224
  };
427018
427225
  bridge_kick_default = bridgeKick;
427019
427226
  });
427020
427227
 
427021
427228
  // src/commands/version.ts
427022
- var call59 = async () => {
427229
+ var call60 = async () => {
427023
427230
  return {
427024
427231
  type: "text",
427025
- value: `${"1.2.0"} (built ${"2026-04-14T18:16:06.737Z"})`
427232
+ value: `${"1.2.2"} (built ${"2026-04-18T18:20:09.217Z"})`
427026
427233
  };
427027
427234
  }, version, version_default;
427028
427235
  var init_version = __esm(() => {
@@ -427032,7 +427239,7 @@ var init_version = __esm(() => {
427032
427239
  description: "Print the version this session is running (not what autoupdate downloaded)",
427033
427240
  isEnabled: () => process.env.USER_TYPE === "ant",
427034
427241
  supportsNonInteractive: true,
427035
- load: () => Promise.resolve({ call: call59 })
427242
+ load: () => Promise.resolve({ call: call60 })
427036
427243
  };
427037
427244
  version_default = version;
427038
427245
  });
@@ -428188,10 +428395,10 @@ var init_SandboxSettings = __esm(() => {
428188
428395
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
428189
428396
  var exports_sandbox_toggle = {};
428190
428397
  __export(exports_sandbox_toggle, {
428191
- call: () => call60
428398
+ call: () => call61
428192
428399
  });
428193
428400
  import { relative as relative27 } from "path";
428194
- async function call60(onDone, _context, args) {
428401
+ async function call61(onDone, _context, args) {
428195
428402
  const settings = getSettings_DEPRECATED();
428196
428403
  const themeName = settings.theme || "light";
428197
428404
  const platform3 = getPlatform();
@@ -428296,7 +428503,7 @@ var init_sandbox_toggle2 = __esm(() => {
428296
428503
  });
428297
428504
 
428298
428505
  // src/commands/advisor.ts
428299
- var call61 = async (args, context7) => {
428506
+ var call62 = async (args, context7) => {
428300
428507
  const arg = args.trim().toLowerCase();
428301
428508
  const baseModel = parseUserSpecifiedModel(context7.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
428302
428509
  if (!arg) {
@@ -428382,7 +428589,7 @@ var init_advisor2 = __esm(() => {
428382
428589
  return !canUserConfigureAdvisor();
428383
428590
  },
428384
428591
  supportsNonInteractive: true,
428385
- load: () => Promise.resolve({ call: call61 })
428592
+ load: () => Promise.resolve({ call: call62 })
428386
428593
  };
428387
428594
  advisor_default = advisor;
428388
428595
  });
@@ -428794,12 +429001,12 @@ var init_ExitFlow = __esm(() => {
428794
429001
  // src/commands/exit/exit.tsx
428795
429002
  var exports_exit = {};
428796
429003
  __export(exports_exit, {
428797
- call: () => call62
429004
+ call: () => call63
428798
429005
  });
428799
429006
  function getRandomGoodbyeMessage2() {
428800
429007
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
428801
429008
  }
428802
- async function call62(onDone) {
429009
+ async function call63(onDone) {
428803
429010
  if (false) {}
428804
429011
  const showWorktree = getCurrentWorktreeSession() !== null;
428805
429012
  if (showWorktree) {
@@ -429093,7 +429300,7 @@ var exports_export = {};
429093
429300
  __export(exports_export, {
429094
429301
  sanitizeFilename: () => sanitizeFilename,
429095
429302
  extractFirstPrompt: () => extractFirstPrompt,
429096
- call: () => call63
429303
+ call: () => call64
429097
429304
  });
429098
429305
  import { join as join122 } from "path";
429099
429306
  function formatTimestamp(date2) {
@@ -429134,7 +429341,7 @@ async function exportWithReactRenderer(context7) {
429134
429341
  const tools = context7.options.tools || [];
429135
429342
  return renderMessagesToPlainText(context7.messages, tools);
429136
429343
  }
429137
- async function call63(onDone, context7, args) {
429344
+ async function call64(onDone, context7, args) {
429138
429345
  const content = await exportWithReactRenderer(context7);
429139
429346
  const filename = args.trim();
429140
429347
  if (filename) {
@@ -429194,7 +429401,7 @@ var init_export2 = __esm(() => {
429194
429401
  // src/commands/model/model.tsx
429195
429402
  var exports_model2 = {};
429196
429403
  __export(exports_model2, {
429197
- call: () => call64
429404
+ call: () => call65
429198
429405
  });
429199
429406
  function ModelPickerWrapper(t0) {
429200
429407
  const $2 = c3(17);
@@ -429442,7 +429649,7 @@ function renderModelLabel(model) {
429442
429649
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
429443
429650
  return model === null ? `${rendered} (default)` : rendered;
429444
429651
  }
429445
- var React109, jsx_dev_runtime339, call64 = async (onDone, _context, args) => {
429652
+ var React109, jsx_dev_runtime339, call65 = async (onDone, _context, args) => {
429446
429653
  args = args?.trim() || "";
429447
429654
  if (COMMON_INFO_ARGS.includes(args)) {
429448
429655
  logEvent("tengu_model_command_inline_help", {
@@ -429509,7 +429716,7 @@ var init_model3 = __esm(() => {
429509
429716
  // src/commands/tag/tag.tsx
429510
429717
  var exports_tag = {};
429511
429718
  __export(exports_tag, {
429512
- call: () => call65
429719
+ call: () => call66
429513
429720
  });
429514
429721
  function ConfirmRemoveTag(t0) {
429515
429722
  const $2 = c3(11);
@@ -429733,7 +429940,7 @@ Examples:
429733
429940
  React110.useEffect(t1, t2);
429734
429941
  return null;
429735
429942
  }
429736
- async function call65(onDone, _context, args) {
429943
+ async function call66(onDone, _context, args) {
429737
429944
  args = args?.trim() || "";
429738
429945
  if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
429739
429946
  return /* @__PURE__ */ jsx_dev_runtime340.jsxDEV(ShowHelp, {
@@ -429780,9 +429987,9 @@ var init_tag2 = __esm(() => {
429780
429987
  // src/commands/output-style/output-style.tsx
429781
429988
  var exports_output_style = {};
429782
429989
  __export(exports_output_style, {
429783
- call: () => call66
429990
+ call: () => call67
429784
429991
  });
429785
- async function call66(onDone) {
429992
+ async function call67(onDone) {
429786
429993
  onDone("/output-style has been deprecated. Use /config to change your output style, or set it in your settings file. Changes take effect on the next session.", {
429787
429994
  display: "system"
429788
429995
  });
@@ -429804,7 +430011,7 @@ var init_output_style = __esm(() => {
429804
430011
  // src/commands/provider/provider.tsx
429805
430012
  var exports_provider = {};
429806
430013
  __export(exports_provider, {
429807
- call: () => call67
430014
+ call: () => call68
429808
430015
  });
429809
430016
  function formatProviderSavedMessage(config2) {
429810
430017
  const providerLabel = getLocalLLMProviderLabel(config2.provider);
@@ -429818,7 +430025,7 @@ function formatProviderSavedMessage(config2) {
429818
430025
  ].join(`
429819
430026
  `);
429820
430027
  }
429821
- var jsx_dev_runtime341, call67 = async (onDone) => {
430028
+ var jsx_dev_runtime341, call68 = async (onDone) => {
429822
430029
  const config2 = getGlobalConfig();
429823
430030
  function handleComplete(nextConfig) {
429824
430031
  saveGlobalConfig((current) => ({
@@ -430374,9 +430581,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
430374
430581
  // src/commands/remote-env/remote-env.tsx
430375
430582
  var exports_remote_env = {};
430376
430583
  __export(exports_remote_env, {
430377
- call: () => call68
430584
+ call: () => call69
430378
430585
  });
430379
- async function call68(onDone) {
430586
+ async function call69(onDone) {
430380
430587
  return /* @__PURE__ */ jsx_dev_runtime343.jsxDEV(RemoteEnvironmentDialog, {
430381
430588
  onDone
430382
430589
  }, undefined, false, undefined, this);
@@ -430456,7 +430663,7 @@ var exports_effort = {};
430456
430663
  __export(exports_effort, {
430457
430664
  showCurrentEffort: () => showCurrentEffort,
430458
430665
  executeEffort: () => executeEffort,
430459
- call: () => call69
430666
+ call: () => call70
430460
430667
  });
430461
430668
  function setEffortValue(effortValue) {
430462
430669
  const persistable = toPersistableEffort(effortValue);
@@ -430607,7 +430814,7 @@ function ApplyEffortAndClose(t0) {
430607
430814
  React111.useEffect(t1, t2);
430608
430815
  return null;
430609
430816
  }
430610
- async function call69(onDone, _context, args) {
430817
+ async function call70(onDone, _context, args) {
430611
430818
  args = args?.trim() || "";
430612
430819
  if (COMMON_HELP_ARGS2.includes(args)) {
430613
430820
  onDone(`Usage: /effort [low|medium|high|max|auto]
@@ -433439,9 +433646,9 @@ var init_Stats = __esm(() => {
433439
433646
  // src/commands/stats/stats.tsx
433440
433647
  var exports_stats = {};
433441
433648
  __export(exports_stats, {
433442
- call: () => call70
433649
+ call: () => call71
433443
433650
  });
433444
- var jsx_dev_runtime346, call70 = async (onDone) => {
433651
+ var jsx_dev_runtime346, call71 = async (onDone) => {
433445
433652
  return /* @__PURE__ */ jsx_dev_runtime346.jsxDEV(Stats2, {
433446
433653
  onClose: onDone
433447
433654
  }, undefined, false, undefined, this);
@@ -434966,7 +435173,7 @@ function generateHtmlReport(data, insights) {
434966
435173
  </html>`;
434967
435174
  }
434968
435175
  function buildExportData(data, insights, facets, remoteStats) {
434969
- const version2 = typeof MACRO !== "undefined" ? "1.2.0" : "unknown";
435176
+ const version2 = typeof MACRO !== "undefined" ? "1.2.2" : "unknown";
434970
435177
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
434971
435178
  const facets_summary = {
434972
435179
  total: facets.size,
@@ -435913,6 +436120,7 @@ var init_commands2 = __esm(() => {
435913
436120
  init_heartbeat2();
435914
436121
  init_sysprompt2();
435915
436122
  init_ctx2();
436123
+ init_contextsize_index();
435916
436124
  init_research2();
435917
436125
  init_thinkharder2();
435918
436126
  init_thinknormal_index();
@@ -436048,6 +436256,7 @@ var init_commands2 = __esm(() => {
436048
436256
  copy_default,
436049
436257
  context6,
436050
436258
  contextNonInteractive,
436259
+ contextsize_index_default,
436051
436260
  cost_default,
436052
436261
  diff_default,
436053
436262
  director_default,
@@ -439112,7 +439321,7 @@ var init_sessionStorage = __esm(() => {
439112
439321
  init_settings2();
439113
439322
  init_slowOperations();
439114
439323
  init_uuid();
439115
- VERSION6 = typeof MACRO !== "undefined" ? "1.2.0" : "unknown";
439324
+ VERSION6 = typeof MACRO !== "undefined" ? "1.2.2" : "unknown";
439116
439325
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
439117
439326
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
439118
439327
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -440314,7 +440523,7 @@ var init_filesystem = __esm(() => {
440314
440523
  });
440315
440524
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
440316
440525
  const nonce = randomBytes19(16).toString("hex");
440317
- return join129(getClaudeTempDir(), "bundled-skills", "1.2.0", nonce);
440526
+ return join129(getClaudeTempDir(), "bundled-skills", "1.2.2", nonce);
440318
440527
  });
440319
440528
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
440320
440529
  });
@@ -449599,7 +449808,7 @@ function buildSystemInitMessage(inputs) {
449599
449808
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
449600
449809
  apiKeySource: getAnthropicApiKeyWithSource().source,
449601
449810
  betas: getSdkBetas(),
449602
- claude_code_version: "1.2.0",
449811
+ claude_code_version: "1.2.2",
449603
449812
  output_style: outputStyle2,
449604
449813
  agents: inputs.agents.map((agent) => agent.agentType),
449605
449814
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -464178,7 +464387,7 @@ var init_useVoiceEnabled = __esm(() => {
464178
464387
  function getSemverPart(version2) {
464179
464388
  return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
464180
464389
  }
464181
- function useUpdateNotification(updatedVersion, initialVersion = "1.2.0") {
464390
+ function useUpdateNotification(updatedVersion, initialVersion = "1.2.2") {
464182
464391
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
464183
464392
  if (!updatedVersion) {
464184
464393
  return null;
@@ -464218,7 +464427,7 @@ function AutoUpdater({
464218
464427
  return;
464219
464428
  }
464220
464429
  if (false) {}
464221
- const currentVersion = "1.2.0";
464430
+ const currentVersion = "1.2.2";
464222
464431
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
464223
464432
  let latestVersion = await getLatestVersion(channel);
464224
464433
  const isDisabled = isAutoUpdaterDisabled();
@@ -464429,12 +464638,12 @@ function NativeAutoUpdater({
464429
464638
  logEvent("tengu_native_auto_updater_start", {});
464430
464639
  try {
464431
464640
  const maxVersion = await getMaxVersion();
464432
- if (maxVersion && gt("1.2.0", maxVersion)) {
464641
+ if (maxVersion && gt("1.2.2", maxVersion)) {
464433
464642
  const msg = await getMaxVersionMessage();
464434
464643
  setMaxVersionIssue(msg ?? "affects your version");
464435
464644
  }
464436
464645
  const result = await installLatest(channel);
464437
- const currentVersion = "1.2.0";
464646
+ const currentVersion = "1.2.2";
464438
464647
  const latencyMs = Date.now() - startTime;
464439
464648
  if (result.lockFailed) {
464440
464649
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -464569,17 +464778,17 @@ function PackageManagerAutoUpdater(t0) {
464569
464778
  const maxVersion = await getMaxVersion();
464570
464779
  if (maxVersion && latest && gt(latest, maxVersion)) {
464571
464780
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
464572
- if (gte("1.2.0", maxVersion)) {
464573
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.2.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
464781
+ if (gte("1.2.2", maxVersion)) {
464782
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.2.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
464574
464783
  setUpdateAvailable(false);
464575
464784
  return;
464576
464785
  }
464577
464786
  latest = maxVersion;
464578
464787
  }
464579
- const hasUpdate = latest && !gte("1.2.0", latest) && !shouldSkipVersion(latest);
464788
+ const hasUpdate = latest && !gte("1.2.2", latest) && !shouldSkipVersion(latest);
464580
464789
  setUpdateAvailable(!!hasUpdate);
464581
464790
  if (hasUpdate) {
464582
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.2.0"} -> ${latest}`);
464791
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.2.2"} -> ${latest}`);
464583
464792
  }
464584
464793
  };
464585
464794
  $2[0] = t1;
@@ -464613,7 +464822,7 @@ function PackageManagerAutoUpdater(t0) {
464613
464822
  wrap: "truncate",
464614
464823
  children: [
464615
464824
  "currentVersion: ",
464616
- "1.2.0"
464825
+ "1.2.2"
464617
464826
  ]
464618
464827
  }, undefined, true, undefined, this);
464619
464828
  $2[3] = verbose;
@@ -468434,7 +468643,7 @@ function useTypeahead({
468434
468643
  const debouncedFetchSlackChannels = useDebounceCallback(fetchSlackChannels, 150);
468435
468644
  const updateSuggestions = import_react227.useCallback(async (value, inputCursorOffset) => {
468436
468645
  const effectiveCursorOffset = inputCursorOffset ?? cursorOffsetRef.current;
468437
- if (suppressSuggestions) {
468646
+ if (suppressSuggestions && !(mode === "prompt" && isCommandInput(value))) {
468438
468647
  debouncedFetchFileSuggestions.cancel();
468439
468648
  clearSuggestions();
468440
468649
  return;
@@ -472171,7 +472380,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
472171
472380
  project_dir: getOriginalCwd(),
472172
472381
  added_dirs: addedDirs
472173
472382
  },
472174
- version: "1.2.0",
472383
+ version: "1.2.2",
472175
472384
  output_style: {
472176
472385
  name: outputStyleName
472177
472386
  },
@@ -479380,6 +479589,9 @@ function CancelRequestHandler(props) {
479380
479589
  if (abortSignal !== undefined && !abortSignal.aborted) {
479381
479590
  logEvent("tengu_cancel", cancelProps);
479382
479591
  setToolUseConfirmQueue(() => []);
479592
+ if (hasCommandsInQueue()) {
479593
+ globalStopSignal.set(true);
479594
+ }
479383
479595
  onCancel();
479384
479596
  return;
479385
479597
  }
@@ -479501,6 +479713,7 @@ var init_useCancelRequest = __esm(() => {
479501
479713
  init_teammateViewHelpers();
479502
479714
  init_LocalAgentTask();
479503
479715
  init_messageQueueManager();
479716
+ init_telegramSignals();
479504
479717
  init_sdkEventQueue();
479505
479718
  import_react260 = __toESM(require_react(), 1);
479506
479719
  });
@@ -483739,7 +483952,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
483739
483952
  } catch {}
483740
483953
  const data = {
483741
483954
  trigger,
483742
- version: "1.2.0",
483955
+ version: "1.2.2",
483743
483956
  platform: process.platform,
483744
483957
  transcript,
483745
483958
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -500204,7 +500417,7 @@ function appendToLog(path17, message) {
500204
500417
  cwd: getFsImplementation().cwd(),
500205
500418
  userType: process.env.USER_TYPE,
500206
500419
  sessionId: getSessionId(),
500207
- version: "1.2.0"
500420
+ version: "1.2.2"
500208
500421
  };
500209
500422
  getLogWriter(path17).write(messageWithTimestamp);
500210
500423
  }
@@ -504203,8 +504416,8 @@ async function getEnvLessBridgeConfig() {
504203
504416
  }
504204
504417
  async function checkEnvLessBridgeMinVersion() {
504205
504418
  const cfg = await getEnvLessBridgeConfig();
504206
- if (cfg.min_version && lt("1.2.0", cfg.min_version)) {
504207
- return `Your version of localclawd (${"1.2.0"}) is too old for Remote Control.
504419
+ if (cfg.min_version && lt("1.2.2", cfg.min_version)) {
504420
+ return `Your version of localclawd (${"1.2.2"}) is too old for Remote Control.
504208
504421
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
504209
504422
  }
504210
504423
  return null;
@@ -504676,7 +504889,7 @@ async function initBridgeCore(params) {
504676
504889
  const rawApi = createBridgeApiClient({
504677
504890
  baseUrl,
504678
504891
  getAccessToken,
504679
- runnerVersion: "1.2.0",
504892
+ runnerVersion: "1.2.2",
504680
504893
  onDebug: logForDebugging,
504681
504894
  onAuth401,
504682
504895
  getTrustedDeviceToken
@@ -510395,7 +510608,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
510395
510608
  setCwd(cwd3);
510396
510609
  const server = new Server({
510397
510610
  name: "claude/tengu",
510398
- version: "1.2.0"
510611
+ version: "1.2.2"
510399
510612
  }, {
510400
510613
  capabilities: {
510401
510614
  tools: {}
@@ -511476,7 +511689,7 @@ function WelcomeLogo() {
511476
511689
  dimColor: true,
511477
511690
  children: [
511478
511691
  "v",
511479
- "1.2.0"
511692
+ "1.2.2"
511480
511693
  ]
511481
511694
  }, undefined, true, undefined, this)
511482
511695
  ]
@@ -511667,7 +511880,7 @@ __export(exports_update, {
511667
511880
  });
511668
511881
  async function update() {
511669
511882
  logEvent("tengu_update_check", {});
511670
- writeToStdout(`Current version: ${"1.2.0"}
511883
+ writeToStdout(`Current version: ${"1.2.2"}
511671
511884
  `);
511672
511885
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
511673
511886
  writeToStdout(`Checking for updates to ${channel} version...
@@ -511742,8 +511955,8 @@ async function update() {
511742
511955
  writeToStdout(`localclawd is managed by Homebrew.
511743
511956
  `);
511744
511957
  const latest = await getLatestVersion(channel);
511745
- if (latest && !gte("1.2.0", latest)) {
511746
- writeToStdout(`Update available: ${"1.2.0"} → ${latest}
511958
+ if (latest && !gte("1.2.2", latest)) {
511959
+ writeToStdout(`Update available: ${"1.2.2"} → ${latest}
511747
511960
  `);
511748
511961
  writeToStdout(`
511749
511962
  `);
@@ -511759,8 +511972,8 @@ async function update() {
511759
511972
  writeToStdout(`localclawd is managed by winget.
511760
511973
  `);
511761
511974
  const latest = await getLatestVersion(channel);
511762
- if (latest && !gte("1.2.0", latest)) {
511763
- writeToStdout(`Update available: ${"1.2.0"} → ${latest}
511975
+ if (latest && !gte("1.2.2", latest)) {
511976
+ writeToStdout(`Update available: ${"1.2.2"} → ${latest}
511764
511977
  `);
511765
511978
  writeToStdout(`
511766
511979
  `);
@@ -511774,8 +511987,8 @@ async function update() {
511774
511987
  writeToStdout(`localclawd is managed by apk.
511775
511988
  `);
511776
511989
  const latest = await getLatestVersion(channel);
511777
- if (latest && !gte("1.2.0", latest)) {
511778
- writeToStdout(`Update available: ${"1.2.0"} → ${latest}
511990
+ if (latest && !gte("1.2.2", latest)) {
511991
+ writeToStdout(`Update available: ${"1.2.2"} → ${latest}
511779
511992
  `);
511780
511993
  writeToStdout(`
511781
511994
  `);
@@ -511840,11 +512053,11 @@ async function update() {
511840
512053
  `);
511841
512054
  await gracefulShutdown(1);
511842
512055
  }
511843
- if (result.latestVersion === "1.2.0") {
511844
- writeToStdout(source_default.green(`localclawd is up to date (${"1.2.0"})`) + `
512056
+ if (result.latestVersion === "1.2.2") {
512057
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.2.2"})`) + `
511845
512058
  `);
511846
512059
  } else {
511847
- writeToStdout(source_default.green(`Successfully updated from ${"1.2.0"} to version ${result.latestVersion}`) + `
512060
+ writeToStdout(source_default.green(`Successfully updated from ${"1.2.2"} to version ${result.latestVersion}`) + `
511848
512061
  `);
511849
512062
  await regenerateCompletionCache();
511850
512063
  }
@@ -511904,12 +512117,12 @@ async function update() {
511904
512117
  `);
511905
512118
  await gracefulShutdown(1);
511906
512119
  }
511907
- if (latestVersion === "1.2.0") {
511908
- writeToStdout(source_default.green(`localclawd is up to date (${"1.2.0"})`) + `
512120
+ if (latestVersion === "1.2.2") {
512121
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.2.2"})`) + `
511909
512122
  `);
511910
512123
  await gracefulShutdown(0);
511911
512124
  }
511912
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.2.0"})
512125
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.2.2"})
511913
512126
  `);
511914
512127
  writeToStdout(`Installing update...
511915
512128
  `);
@@ -511954,7 +512167,7 @@ async function update() {
511954
512167
  logForDebugging(`update: Installation status: ${status2}`);
511955
512168
  switch (status2) {
511956
512169
  case "success":
511957
- writeToStdout(source_default.green(`Successfully updated from ${"1.2.0"} to version ${latestVersion}`) + `
512170
+ writeToStdout(source_default.green(`Successfully updated from ${"1.2.2"} to version ${latestVersion}`) + `
511958
512171
  `);
511959
512172
  await regenerateCompletionCache();
511960
512173
  break;
@@ -513196,7 +513409,7 @@ Run with --debug for more details.
513196
513409
  }
513197
513410
  }
513198
513411
  logForDiagnosticsNoPII("info", "started", {
513199
- version: "1.2.0",
513412
+ version: "1.2.2",
513200
513413
  is_native_binary: isInBundledMode()
513201
513414
  });
513202
513415
  registerCleanup(async () => {
@@ -513980,7 +514193,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
513980
514193
  pendingHookMessages
513981
514194
  }, renderAndRun);
513982
514195
  }
513983
- }).version("1.2.0 (localclawd)", "-v, --version", "Output the version number");
514196
+ }).version("1.2.2 (localclawd)", "-v, --version", "Output the version number");
513984
514197
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
513985
514198
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
513986
514199
  if (canUserConfigureAdvisor()) {
@@ -514480,7 +514693,7 @@ if (false) {}
514480
514693
  async function main2() {
514481
514694
  const args = process.argv.slice(2);
514482
514695
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
514483
- console.log(`${"1.2.0"} (localclawd)`);
514696
+ console.log(`${"1.2.2"} (localclawd)`);
514484
514697
  return;
514485
514698
  }
514486
514699
  const {
@@ -514563,4 +514776,4 @@ localclawd crashed: ${msg}
514563
514776
  process.exit(1);
514564
514777
  });
514565
514778
 
514566
- //# debugId=0699A41E241B05D864756E2164756E21
514779
+ //# debugId=38E1293AFF56160C64756E2164756E21