langcli-com 0.1.0 → 0.1.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.js +142 -129
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -3466,7 +3466,7 @@ var getClaudeConfigHomeDir, VERTEX_REGION_OVERRIDES;
3466
3466
  var init_envUtils = __esm(() => {
3467
3467
  init_memoize();
3468
3468
  getClaudeConfigHomeDir = memoize_default(() => {
3469
- return (process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".foxcli")).normalize("NFC");
3469
+ return (process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".langcli")).normalize("NFC");
3470
3470
  }, () => process.env.CLAUDE_CONFIG_DIR);
3471
3471
  VERTEX_REGION_OVERRIDES = [
3472
3472
  ["claude-haiku-4-5", "VERTEX_REGION_CLAUDE_HAIKU_4_5"],
@@ -130665,7 +130665,7 @@ var init_bedrock = __esm(() => {
130665
130665
  });
130666
130666
 
130667
130667
  // src/utils/model/configs.ts
130668
- var LANGROUTER_AUTO_CONFIG = "langrouter/auto", LANGROUTER_AUTO_FREE_CONFIG = "langrouter/auto-free", DEEPSEEK_V3_2_CONFIG = "deepseek-v3.2", DEEPSEEK_V3_2_THINK_CONFIG = "deepseek-v3.2-think", MOONSHOT_KIMI_K2_5_CONFIG = "kimi-k2.5", MINIMAX_M2_5_CONFIG = "minimax-m2.5", CLAUDE_OPUS_4_6_CONFIG = "claude-opus-4-6", GLM_5_1_CONFIG = "glm-5.1", ALL_MODEL_CONFIGS, CANONICAL_MODEL_IDS, CANONICAL_ID_TO_KEY;
130668
+ var LANGROUTER_AUTO_CONFIG = "langrouter/auto", LANGROUTER_AUTO_FREE_CONFIG = "langrouter/auto-free", DEEPSEEK_V3_2_CONFIG = "deepseek-v3.2", DEEPSEEK_V3_2_THINK_CONFIG = "deepseek-v3.2-think", MOONSHOT_KIMI_K2_5_CONFIG = "kimi-k2.5", MINIMAX_M2_5_CONFIG = "minimax-m2.5", CLAUDE_OPUS_4_6_CONFIG = "claude-opus-4-6", GLM_5_1_CONFIG = "glm-5.1", GPT_5_3_CODEX_CONFIG = "gpt-5.3-codex", ALL_MODEL_CONFIGS, CANONICAL_MODEL_IDS, CANONICAL_ID_TO_KEY;
130669
130669
  var init_configs = __esm(() => {
130670
130670
  ALL_MODEL_CONFIGS = {
130671
130671
  langrouterAuto: LANGROUTER_AUTO_CONFIG,
@@ -130675,7 +130675,8 @@ var init_configs = __esm(() => {
130675
130675
  moonshot: MOONSHOT_KIMI_K2_5_CONFIG,
130676
130676
  minimax: MINIMAX_M2_5_CONFIG,
130677
130677
  claudeOpus: CLAUDE_OPUS_4_6_CONFIG,
130678
- glm51: GLM_5_1_CONFIG
130678
+ glm51: GLM_5_1_CONFIG,
130679
+ gptCodex: GPT_5_3_CODEX_CONFIG
130679
130680
  };
130680
130681
  CANONICAL_MODEL_IDS = Object.values(ALL_MODEL_CONFIGS);
130681
130682
  CANONICAL_ID_TO_KEY = Object.fromEntries(Object.entries(ALL_MODEL_CONFIGS).map(([key, cfg]) => [cfg, key]));
@@ -134856,6 +134857,9 @@ function parseUserSpecifiedModel(modelInput) {
134856
134857
  if (modelInputTrimmed === "glm-5.1") {
134857
134858
  return GLM_5_1_CONFIG;
134858
134859
  }
134860
+ if (modelInputTrimmed === "gpt-5.3-codex") {
134861
+ return GPT_5_3_CODEX_CONFIG;
134862
+ }
134859
134863
  return modelInputTrimmed;
134860
134864
  }
134861
134865
  function modelDisplayString(model) {
@@ -189418,7 +189422,7 @@ var init_auth2 = __esm(() => {
189418
189422
 
189419
189423
  // src/utils/userAgent.ts
189420
189424
  function getClaudeCodeUserAgent() {
189421
- return `claude-code/${"2.1.888"}`;
189425
+ return `claude-code/${"0.1.2"}`;
189422
189426
  }
189423
189427
 
189424
189428
  // src/utils/workloadContext.ts
@@ -189440,7 +189444,7 @@ function getUserAgent() {
189440
189444
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
189441
189445
  const workload = getWorkload();
189442
189446
  const workloadSuffix = workload ? `, workload/${workload}` : "";
189443
- return `foxcli/${"2.1.888"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
189447
+ return `langcli/${"0.1.2"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
189444
189448
  }
189445
189449
  function getMCPUserAgent() {
189446
189450
  const parts = [];
@@ -189454,7 +189458,7 @@ function getMCPUserAgent() {
189454
189458
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
189455
189459
  }
189456
189460
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
189457
- return `claude-code/${"2.1.888"}${suffix}`;
189461
+ return `claude-code/${"0.1.2"}${suffix}`;
189458
189462
  }
189459
189463
  function getWebFetchUserAgent() {
189460
189464
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -189592,7 +189596,7 @@ var init_user = __esm(() => {
189592
189596
  deviceId,
189593
189597
  sessionId: getSessionId(),
189594
189598
  email: getEmail(),
189595
- appVersion: "2.1.888",
189599
+ appVersion: "0.1.2",
189596
189600
  platform: getHostPlatformForAnalytics(),
189597
189601
  organizationUuid,
189598
189602
  accountUuid,
@@ -197286,7 +197290,7 @@ var init_metadata = __esm(() => {
197286
197290
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
197287
197291
  WHITESPACE_REGEX = /\s+/;
197288
197292
  getVersionBase = memoize_default(() => {
197289
- const match = "2.1.888".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
197293
+ const match = "0.1.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
197290
197294
  return match ? match[0] : undefined;
197291
197295
  });
197292
197296
  buildEnvContext = memoize_default(async () => {
@@ -197326,9 +197330,9 @@ var init_metadata = __esm(() => {
197326
197330
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
197327
197331
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
197328
197332
  isClaudeAiAuth: isClaudeAISubscriber(),
197329
- version: "2.1.888",
197333
+ version: "0.1.2",
197330
197334
  versionBase: getVersionBase(),
197331
- buildTime: "2026-04-10T03:30:47.565Z",
197335
+ buildTime: "2026-04-10T08:52:33.446Z",
197332
197336
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
197333
197337
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
197334
197338
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -197996,7 +198000,7 @@ function initialize1PEventLogging() {
197996
198000
  const platform4 = getPlatform();
197997
198001
  const attributes = {
197998
198002
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "claude-code",
197999
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "2.1.888"
198003
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "0.1.2"
198000
198004
  };
198001
198005
  if (platform4 === "wsl") {
198002
198006
  const wslVersion = getWslVersion();
@@ -198023,7 +198027,7 @@ function initialize1PEventLogging() {
198023
198027
  })
198024
198028
  ]
198025
198029
  });
198026
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "2.1.888");
198030
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "0.1.2");
198027
198031
  }
198028
198032
  async function reinitialize1PEventLoggingIfConfigChanged() {
198029
198033
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -199966,7 +199970,7 @@ function getAttributionHeader(fingerprint) {
199966
199970
  if (!isAttributionHeaderEnabled()) {
199967
199971
  return "";
199968
199972
  }
199969
- const version6 = `${"2.1.888"}.${fingerprint}`;
199973
+ const version6 = `${"0.1.2"}.${fingerprint}`;
199970
199974
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
199971
199975
  const cch = "";
199972
199976
  const workload = getWorkload();
@@ -383167,7 +383171,7 @@ function getTelemetryAttributes() {
383167
383171
  attributes["session.id"] = sessionId;
383168
383172
  }
383169
383173
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
383170
- attributes["app.version"] = "2.1.888";
383174
+ attributes["app.version"] = "0.1.2";
383171
383175
  }
383172
383176
  const oauthAccount = getOauthAccountInfo();
383173
383177
  if (oauthAccount) {
@@ -406144,7 +406148,7 @@ function IdeOnboardingDialog({
406144
406148
  }, undefined, false, undefined, this),
406145
406149
  /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
406146
406150
  children: [
406147
- "Welcome to Foxcli for ",
406151
+ "Welcome to Langcli for ",
406148
406152
  ideName
406149
406153
  ]
406150
406154
  }, undefined, true, undefined, this)
@@ -406160,7 +406164,7 @@ function IdeOnboardingDialog({
406160
406164
  children: [
406161
406165
  /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
406162
406166
  children: [
406163
- "• Foxcli has context of ",
406167
+ "• Langcli has context of ",
406164
406168
  /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
406165
406169
  color: "suggestion",
406166
406170
  children: "⧉ open files"
@@ -406175,7 +406179,7 @@ function IdeOnboardingDialog({
406175
406179
  }, undefined, true, undefined, this),
406176
406180
  /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
406177
406181
  children: [
406178
- "• Review Foxcli's changes",
406182
+ "• Review Langcli's changes",
406179
406183
  " ",
406180
406184
  /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
406181
406185
  color: "diffAddedWord",
@@ -406665,7 +406669,7 @@ function getInstallationEnv() {
406665
406669
  return;
406666
406670
  }
406667
406671
  function getClaudeCodeVersion() {
406668
- return "2.1.888";
406672
+ return "0.1.2";
406669
406673
  }
406670
406674
  async function getInstalledVSCodeExtensionVersion(command) {
406671
406675
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -409388,7 +409392,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
409388
409392
  const client5 = new Client({
409389
409393
  name: "claude-code",
409390
409394
  title: "Claude Code",
409391
- version: "2.1.888",
409395
+ version: "0.1.2",
409392
409396
  description: "Anthropic's agentic coding tool",
409393
409397
  websiteUrl: PRODUCT_URL
409394
409398
  }, {
@@ -409743,7 +409747,7 @@ var init_client9 = __esm(() => {
409743
409747
  const client5 = new Client({
409744
409748
  name: "claude-code",
409745
409749
  title: "Claude Code",
409746
- version: "2.1.888",
409750
+ version: "0.1.2",
409747
409751
  description: "Anthropic's agentic coding tool",
409748
409752
  websiteUrl: PRODUCT_URL
409749
409753
  }, {
@@ -448203,7 +448207,7 @@ function initSentry() {
448203
448207
  }
448204
448208
  init3({
448205
448209
  dsn,
448206
- release: typeof MACRO !== "undefined" ? "2.1.888" : undefined,
448210
+ release: typeof MACRO !== "undefined" ? "0.1.2" : undefined,
448207
448211
  environment: typeof BUILD_ENV !== "undefined" ? BUILD_ENV : "development",
448208
448212
  maxBreadcrumbs: 20,
448209
448213
  sampleRate: 1,
@@ -487127,7 +487131,7 @@ async function initializeBetaTracing(resource) {
487127
487131
  });
487128
487132
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
487129
487133
  setLoggerProvider(loggerProvider);
487130
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "2.1.888");
487134
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "0.1.2");
487131
487135
  setEventLogger(eventLogger);
487132
487136
  process.on("beforeExit", async () => {
487133
487137
  await loggerProvider?.forceFlush();
@@ -487167,7 +487171,7 @@ async function initializeTelemetry() {
487167
487171
  const platform7 = getPlatform();
487168
487172
  const baseAttributes = {
487169
487173
  [import_semantic_conventions11.ATTR_SERVICE_NAME]: "claude-code",
487170
- [import_semantic_conventions11.ATTR_SERVICE_VERSION]: "2.1.888"
487174
+ [import_semantic_conventions11.ATTR_SERVICE_VERSION]: "0.1.2"
487171
487175
  };
487172
487176
  if (platform7 === "wsl") {
487173
487177
  const wslVersion = getWslVersion();
@@ -487212,7 +487216,7 @@ async function initializeTelemetry() {
487212
487216
  } catch {}
487213
487217
  };
487214
487218
  registerCleanup(shutdownTelemetry2);
487215
- return meterProvider2.getMeter("com.anthropic.claude_code", "2.1.888");
487219
+ return meterProvider2.getMeter("com.anthropic.claude_code", "0.1.2");
487216
487220
  }
487217
487221
  const meterProvider = new import_sdk_metrics2.MeterProvider({
487218
487222
  resource,
@@ -487232,7 +487236,7 @@ async function initializeTelemetry() {
487232
487236
  });
487233
487237
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
487234
487238
  setLoggerProvider(loggerProvider);
487235
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "2.1.888");
487239
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "0.1.2");
487236
487240
  setEventLogger(eventLogger);
487237
487241
  logForDebugging("[3P telemetry] Event logger set successfully");
487238
487242
  process.on("beforeExit", async () => {
@@ -487294,7 +487298,7 @@ Current timeout: ${timeoutMs}ms
487294
487298
  }
487295
487299
  };
487296
487300
  registerCleanup(shutdownTelemetry);
487297
- return meterProvider.getMeter("com.anthropic.claude_code", "2.1.888");
487301
+ return meterProvider.getMeter("com.anthropic.claude_code", "0.1.2");
487298
487302
  }
487299
487303
  async function flushTelemetry() {
487300
487304
  const meterProvider = getMeterProvider();
@@ -487958,9 +487962,9 @@ async function assertMinVersion() {
487958
487962
  if (false) {}
487959
487963
  try {
487960
487964
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
487961
- if (versionConfig.minVersion && lt("2.1.888", versionConfig.minVersion)) {
487965
+ if (versionConfig.minVersion && lt("0.1.2", versionConfig.minVersion)) {
487962
487966
  console.error(`
487963
- It looks like your version of Claude Code (${"2.1.888"}) needs an update.
487967
+ It looks like your version of Claude Code (${"0.1.2"}) needs an update.
487964
487968
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
487965
487969
 
487966
487970
  To update, please run:
@@ -488176,7 +488180,7 @@ async function installGlobalPackage(specificVersion) {
488176
488180
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
488177
488181
  logEvent("tengu_auto_updater_lock_contention", {
488178
488182
  pid: process.pid,
488179
- currentVersion: "2.1.888"
488183
+ currentVersion: "0.1.2"
488180
488184
  });
488181
488185
  return "in_progress";
488182
488186
  }
@@ -488185,7 +488189,7 @@ async function installGlobalPackage(specificVersion) {
488185
488189
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
488186
488190
  logError2(new Error("Windows NPM detected in WSL environment"));
488187
488191
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
488188
- currentVersion: "2.1.888"
488192
+ currentVersion: "0.1.2"
488189
488193
  });
488190
488194
  console.error(`
488191
488195
  Error: Windows NPM detected in WSL
@@ -488718,7 +488722,7 @@ function detectLinuxGlobPatternWarnings() {
488718
488722
  }
488719
488723
  async function getDoctorDiagnostic() {
488720
488724
  const installationType = await getCurrentInstallationType();
488721
- const version6 = typeof MACRO !== "undefined" ? "2.1.888" : "unknown";
488725
+ const version6 = typeof MACRO !== "undefined" ? "0.1.2" : "unknown";
488722
488726
  const installationPath = await getInstallationPath();
488723
488727
  const invokedBinary = getInvokedBinary();
488724
488728
  const multipleInstallations = await detectMultipleInstallations();
@@ -489651,8 +489655,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
489651
489655
  const maxVersion = await getMaxVersion();
489652
489656
  if (maxVersion && gt(version6, maxVersion)) {
489653
489657
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version6} to ${maxVersion}`);
489654
- if (gte("2.1.888", maxVersion)) {
489655
- logForDebugging(`Native installer: current version ${"2.1.888"} is already at or above maxVersion ${maxVersion}, skipping update`);
489658
+ if (gte("0.1.2", maxVersion)) {
489659
+ logForDebugging(`Native installer: current version ${"0.1.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
489656
489660
  logEvent("tengu_native_update_skipped_max_version", {
489657
489661
  latency_ms: Date.now() - startTime,
489658
489662
  max_version: maxVersion,
@@ -489663,7 +489667,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
489663
489667
  version6 = maxVersion;
489664
489668
  }
489665
489669
  }
489666
- if (!forceReinstall && version6 === "2.1.888" && await versionIsAvailable(version6) && await isPossibleClaudeBinary(executablePath)) {
489670
+ if (!forceReinstall && version6 === "0.1.2" && await versionIsAvailable(version6) && await isPossibleClaudeBinary(executablePath)) {
489667
489671
  logForDebugging(`Found ${version6} at ${executablePath}, skipping install`);
489668
489672
  logEvent("tengu_native_update_complete", {
489669
489673
  latency_ms: Date.now() - startTime,
@@ -507099,7 +507103,7 @@ function ConsoleOAuthFlow({
507099
507103
  state: "success"
507100
507104
  });
507101
507105
  sendNotification({
507102
- message: "Foxcli login successful",
507106
+ message: "Langcli login successful",
507103
507107
  notificationType: "auth_success"
507104
507108
  }, terminal);
507105
507109
  }
@@ -507293,7 +507297,7 @@ function OAuthStatusMessage({
507293
507297
  children: [
507294
507298
  /* @__PURE__ */ jsx_dev_runtime60.jsxDEV(ThemedText, {
507295
507299
  bold: true,
507296
- children: startingMessage || "Welcome to Foxcli"
507300
+ children: startingMessage || "Welcome to Langcli"
507297
507301
  }, undefined, false, undefined, this),
507298
507302
  /* @__PURE__ */ jsx_dev_runtime60.jsxDEV(ThemedText, {
507299
507303
  children: "Please input langRouter api-key and press enter to continue:"
@@ -565310,6 +565314,14 @@ function getGlm51Option() {
565310
565314
  descriptionForModel: "GLM 5.1 - Z.ai flagship model"
565311
565315
  };
565312
565316
  }
565317
+ function getGptCodexOption() {
565318
+ return {
565319
+ value: GPT_5_3_CODEX_CONFIG,
565320
+ label: "GPT 5.3 codex",
565321
+ description: "GPT 5.3 codex · openai flagship coding model",
565322
+ descriptionForModel: "GPT 5.3 codex · openai flagship coding model"
565323
+ };
565324
+ }
565313
565325
  function getModelOptionsBase() {
565314
565326
  return [
565315
565327
  getDefaultOptionForUser(),
@@ -565318,7 +565330,8 @@ function getModelOptionsBase() {
565318
565330
  getGlm51Option(),
565319
565331
  getDeepSeekOption(),
565320
565332
  getDeepSeekThinkOption(),
565321
- getClaudeOpusOption()
565333
+ getClaudeOpusOption(),
565334
+ getGptCodexOption()
565322
565335
  ];
565323
565336
  }
565324
565337
  function getModelOptions(_fastMode = false) {
@@ -579510,7 +579523,7 @@ function getAnthropicEnvMetadata() {
579510
579523
  function getBuildAgeMinutes() {
579511
579524
  if (false)
579512
579525
  ;
579513
- const buildTime = new Date("2026-04-10T03:30:47.565Z").getTime();
579526
+ const buildTime = new Date("2026-04-10T08:52:33.446Z").getTime();
579514
579527
  if (isNaN(buildTime))
579515
579528
  return;
579516
579529
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -598475,14 +598488,14 @@ function getSteps() {
598475
598488
  return [
598476
598489
  {
598477
598490
  key: "workspace",
598478
- text: "Ask Foxcli to create a new app or clone a repository",
598491
+ text: "Ask Langcli to create a new app or clone a repository",
598479
598492
  isComplete: false,
598480
598493
  isCompletable: true,
598481
598494
  isEnabled: isWorkspaceDirEmpty
598482
598495
  },
598483
598496
  {
598484
598497
  key: "claudemd",
598485
- text: "Run /init to create a CLAUDE.md file with instructions for Foxcli",
598498
+ text: "Run /init to create a CLAUDE.md file with instructions for Langcli",
598486
598499
  isComplete: hasClaudeMd,
598487
598500
  isCompletable: true,
598488
598501
  isEnabled: !isWorkspaceDirEmpty
@@ -602604,7 +602617,7 @@ function Feedback({
602604
602617
  platform: env4.platform,
602605
602618
  gitRepo: envInfo.isGit,
602606
602619
  terminal: env4.terminal,
602607
- version: "2.1.888",
602620
+ version: "0.1.2",
602608
602621
  transcript: normalizeMessagesForAPI(messages),
602609
602622
  errors: sanitizedErrors,
602610
602623
  lastApiRequest: getLastAPIRequest(),
@@ -602789,7 +602802,7 @@ function Feedback({
602789
602802
  ", ",
602790
602803
  env4.terminal,
602791
602804
  ", v",
602792
- "2.1.888"
602805
+ "0.1.2"
602793
602806
  ]
602794
602807
  }, undefined, true, undefined, this)
602795
602808
  ]
@@ -602895,7 +602908,7 @@ ${sanitizedDescription}
602895
602908
  ` + `**Environment Info**
602896
602909
  ` + `- Platform: ${env4.platform}
602897
602910
  ` + `- Terminal: ${env4.terminal}
602898
- ` + `- Version: ${"2.1.888"}
602911
+ ` + `- Version: ${"0.1.2"}
602899
602912
  ` + `- Feedback ID: ${feedbackId}
602900
602913
  ` + `
602901
602914
  **Errors**
@@ -603119,7 +603132,7 @@ var init_feedback2 = __esm(() => {
603119
603132
  aliases: ["bug"],
603120
603133
  type: "local-jsx",
603121
603134
  name: "feedback",
603122
- description: `Submit feedback about Foxcli`,
603135
+ description: `Submit feedback about Langcli`,
603123
603136
  argumentHint: "[report]",
603124
603137
  isEnabled: () => !(isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) || isEnvTruthy(process.env.DISABLE_FEEDBACK_COMMAND) || isEnvTruthy(process.env.DISABLE_BUG_COMMAND) || isEssentialTrafficOnly() || process.env.USER_TYPE === "ant" || !isPolicyAllowed("allow_product_feedback")),
603125
603138
  load: () => Promise.resolve().then(() => (init_feedback(), exports_feedback))
@@ -604747,7 +604760,7 @@ var init_copy2 = __esm(() => {
604747
604760
  copy = {
604748
604761
  type: "local-jsx",
604749
604762
  name: "copy",
604750
- description: "Copy Foxcli's last response to clipboard (or /copy N for the Nth-latest)",
604763
+ description: "Copy Langcli's last response to clipboard (or /copy N for the Nth-latest)",
604751
604764
  load: () => Promise.resolve().then(() => (init_copy(), exports_copy))
604752
604765
  };
604753
604766
  copy_default = copy;
@@ -605629,7 +605642,7 @@ function buildPrimarySection() {
605629
605642
  children: "/rename to add a name"
605630
605643
  }, undefined, false, undefined, this);
605631
605644
  return [
605632
- { label: "Version", value: "2.1.888" },
605645
+ { label: "Version", value: "0.1.2" },
605633
605646
  { label: "Session name", value: nameValue },
605634
605647
  { label: "Session ID", value: sessionId },
605635
605648
  { label: "cwd", value: getCwd() },
@@ -606155,7 +606168,7 @@ function ModelPicker({
606155
606168
  }, undefined, false, undefined, this),
606156
606169
  /* @__PURE__ */ jsx_dev_runtime169.jsxDEV(ThemedText, {
606157
606170
  dimColor: true,
606158
- children: headerText ?? "Switch between LLM models. Applies to this session and future Foxcli sessions. For other/previous model names, specify with --model."
606171
+ children: headerText ?? "Switch between LLM models. Applies to this session and future Langcli sessions. For other/previous model names, specify with --model."
606159
606172
  }, undefined, false, undefined, this),
606160
606173
  sessionModel && /* @__PURE__ */ jsx_dev_runtime169.jsxDEV(ThemedText, {
606161
606174
  dimColor: true,
@@ -606428,7 +606441,7 @@ function ClaudeMdExternalIncludesDialog({
606428
606441
  /* @__PURE__ */ jsx_dev_runtime170.jsxDEV(ThemedText, {
606429
606442
  dimColor: true,
606430
606443
  children: [
606431
- "Important: Only use Foxcli with files you trust. Accessing untrusted files may pose security risks",
606444
+ "Important: Only use Langcli with files you trust. Accessing untrusted files may pose security risks",
606432
606445
  " ",
606433
606446
  /* @__PURE__ */ jsx_dev_runtime170.jsxDEV(Link, {
606434
606447
  url: "https://code.claude.com/docs/en/security"
@@ -608387,7 +608400,7 @@ function Config({
608387
608400
  }
608388
608401
  }, undefined, false, undefined, this)
608389
608402
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime175.jsxDEV(ChannelDowngradeDialog, {
608390
- currentVersion: "2.1.888",
608403
+ currentVersion: "0.1.2",
608391
608404
  onChoice: (choice) => {
608392
608405
  setShowSubmenu(null);
608393
608406
  setTabsHidden(false);
@@ -608399,7 +608412,7 @@ function Config({
608399
608412
  autoUpdatesChannel: "stable"
608400
608413
  };
608401
608414
  if (choice === "stay") {
608402
- newSettings.minimumVersion = "2.1.888";
608415
+ newSettings.minimumVersion = "0.1.2";
608403
608416
  }
608404
608417
  updateSettingsForSource("userSettings", newSettings);
608405
608418
  setSettingsData((prev) => ({
@@ -612375,7 +612388,7 @@ function Doctor({ onDone }) {
612375
612388
  })();
612376
612389
  }, [toolPermissionContext, tools, agentDefinitions]);
612377
612390
  const handleDismiss = import_react122.useCallback(() => {
612378
- onDone("Foxcli diagnostics dismissed", { display: "system" });
612391
+ onDone("Langcli diagnostics dismissed", { display: "system" });
612379
612392
  }, [onDone]);
612380
612393
  useKeybindings({
612381
612394
  "confirm:yes": handleDismiss,
@@ -612861,7 +612874,7 @@ var init_doctor2 = __esm(() => {
612861
612874
  init_envUtils();
612862
612875
  doctor = {
612863
612876
  name: "doctor",
612864
- description: "Diagnose and verify your Foxcli installation and settings",
612877
+ description: "Diagnose and verify your Langcli installation and settings",
612865
612878
  isEnabled: () => !isEnvTruthy(process.env.DISABLE_DOCTOR_COMMAND),
612866
612879
  type: "local-jsx",
612867
612880
  load: () => Promise.resolve().then(() => (init_doctor(), exports_doctor))
@@ -612928,7 +612941,7 @@ function MemoryFileSelector({
612928
612941
  let description;
612929
612942
  const isGit = projectIsInGitRepo(getOriginalCwd());
612930
612943
  if (file2.type === "User" && !file2.isNested) {
612931
- description = "Saved in ~/.foxcli/CLAUDE.md";
612944
+ description = "Saved in ~/.langcli/CLAUDE.md";
612932
612945
  } else if (file2.type === "Project" && !file2.isNested && file2.path === projectMemoryPath) {
612933
612946
  description = `${isGit ? "Checked in at" : "Saved in"} ./CLAUDE.md`;
612934
612947
  } else if (file2.parent) {
@@ -613439,7 +613452,7 @@ var init_memory2 = __esm(() => {
613439
613452
  memory = {
613440
613453
  type: "local-jsx",
613441
613454
  name: "memory",
613442
- description: "Edit Foxcli memory files",
613455
+ description: "Edit Langcli memory files",
613443
613456
  load: () => Promise.resolve().then(() => (init_memory(), exports_memory))
613444
613457
  };
613445
613458
  memory_default = memory;
@@ -613735,7 +613748,7 @@ function General() {
613735
613748
  children: [
613736
613749
  /* @__PURE__ */ jsx_dev_runtime201.jsxDEV(ThemedBox_default, {
613737
613750
  children: /* @__PURE__ */ jsx_dev_runtime201.jsxDEV(ThemedText, {
613738
- children: "Foxcli understands your codebase, makes edits with your permission, and executes commands — right from your terminal."
613751
+ children: "Langcli understands your codebase, makes edits with your permission, and executes commands — right from your terminal."
613739
613752
  }, undefined, false, undefined, this)
613740
613753
  }, undefined, false, undefined, this),
613741
613754
  /* @__PURE__ */ jsx_dev_runtime201.jsxDEV(ThemedBox_default, {
@@ -613827,7 +613840,7 @@ function HelpV2({ onClose, commands }) {
613827
613840
  color: "professionalBlue",
613828
613841
  children: [
613829
613842
  /* @__PURE__ */ jsx_dev_runtime202.jsxDEV(Tabs, {
613830
- title: process.env.USER_TYPE === "ant" ? "/help" : `Foxcli v${"2.1.888"}`,
613843
+ title: process.env.USER_TYPE === "ant" ? "/help" : `Langcli v${"0.1.2"}`,
613831
613844
  color: "professionalBlue",
613832
613845
  defaultTab: "general",
613833
613846
  children: tabs
@@ -613839,7 +613852,7 @@ function HelpV2({ onClose, commands }) {
613839
613852
  "For more help:",
613840
613853
  " ",
613841
613854
  /* @__PURE__ */ jsx_dev_runtime202.jsxDEV(Link, {
613842
- url: "https://foxcli.com/docs"
613855
+ url: "https://langcli.com/docs"
613843
613856
  }, undefined, false, undefined, this)
613844
613857
  ]
613845
613858
  }, undefined, true, undefined, this)
@@ -633885,7 +633898,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
633885
633898
  return [];
633886
633899
  }
633887
633900
  }
633888
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.1.888") {
633901
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "0.1.2") {
633889
633902
  if (process.env.USER_TYPE === "ant") {
633890
633903
  const changelog = "";
633891
633904
  if (changelog) {
@@ -633912,7 +633925,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.1.888")
633912
633925
  releaseNotes
633913
633926
  };
633914
633927
  }
633915
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.1.888") {
633928
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "0.1.2") {
633916
633929
  if (process.env.USER_TYPE === "ant") {
633917
633930
  const changelog = "";
633918
633931
  if (changelog) {
@@ -636995,7 +637008,7 @@ function getRecentActivitySync() {
636995
637008
  return cachedActivity;
636996
637009
  }
636997
637010
  function getLogoDisplayData() {
636998
- const version6 = process.env.DEMO_VERSION ?? "2.1.888";
637011
+ const version6 = process.env.DEMO_VERSION ?? "0.1.2";
636999
637012
  const serverUrl = getDirectConnectServerUrl();
637000
637013
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
637001
637014
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -637739,7 +637752,7 @@ function CondensedLogo() {
637739
637752
  }
637740
637753
  }, [showOverageCreditUpsell, showGuestPassesUpsell]);
637741
637754
  const textWidth = Math.max(columns - 15, 20);
637742
- const versionPrefix = "Foxcli v";
637755
+ const versionPrefix = "Langcli v";
637743
637756
  const truncatedVersion = truncate(version6, Math.max(textWidth - versionPrefix.length, 6));
637744
637757
  const effortSuffix = getEffortSuffix(model, effortValue);
637745
637758
  const { shouldSplit, truncatedModel, truncatedBilling } = formatModelAndBilling(modelDisplayName + effortSuffix, billingType, textWidth);
@@ -637761,7 +637774,7 @@ function CondensedLogo() {
637761
637774
  children: [
637762
637775
  /* @__PURE__ */ jsx_dev_runtime249.jsxDEV(ThemedText, {
637763
637776
  bold: true,
637764
- children: "Foxcli"
637777
+ children: "Langcli"
637765
637778
  }, undefined, false, undefined, this),
637766
637779
  " ",
637767
637780
  /* @__PURE__ */ jsx_dev_runtime249.jsxDEV(ThemedText, {
@@ -638003,13 +638016,13 @@ function LogoV2() {
638003
638016
  const { hasReleaseNotes } = checkForReleaseNotesSync(config7.lastReleaseNotesSeen);
638004
638017
  import_react161.useEffect(() => {
638005
638018
  const currentConfig = getGlobalConfig();
638006
- if (currentConfig.lastReleaseNotesSeen === "2.1.888") {
638019
+ if (currentConfig.lastReleaseNotesSeen === "0.1.2") {
638007
638020
  return;
638008
638021
  }
638009
638022
  saveGlobalConfig((current) => {
638010
- if (current.lastReleaseNotesSeen === "2.1.888")
638023
+ if (current.lastReleaseNotesSeen === "0.1.2")
638011
638024
  return current;
638012
- return { ...current, lastReleaseNotesSeen: "2.1.888" };
638025
+ return { ...current, lastReleaseNotesSeen: "0.1.2" };
638013
638026
  });
638014
638027
  if (showOnboarding) {
638015
638028
  incrementProjectOnboardingSeenCount();
@@ -638147,8 +638160,8 @@ function LogoV2() {
638147
638160
  }
638148
638161
  const layoutMode = getLayoutMode(columns);
638149
638162
  const userTheme = resolveThemeSetting(getGlobalConfig().theme);
638150
- const borderTitle = ` ${color("claude", userTheme)("Foxcli")} ${color("inactive", userTheme)(`v${version6}`)} `;
638151
- const compactBorderTitle = color("claude", userTheme)(" Foxcli ");
638163
+ const borderTitle = ` ${color("claude", userTheme)("Langcli")} ${color("inactive", userTheme)(`v${version6}`)} `;
638164
+ const compactBorderTitle = color("claude", userTheme)(" Langcli ");
638152
638165
  if (layoutMode === "compact") {
638153
638166
  const layoutWidth = 4;
638154
638167
  let welcomeMessage2 = formatWelcomeMessage(username);
@@ -643554,7 +643567,7 @@ var init_status3 = __esm(() => {
643554
643567
  status = {
643555
643568
  type: "local-jsx",
643556
643569
  name: "status",
643557
- description: "Show Foxcli status including version, model, account, API connectivity, and tool statuses",
643570
+ description: "Show Langcli status including version, model, account, API connectivity, and tool statuses",
643558
643571
  immediate: true,
643559
643572
  load: () => Promise.resolve().then(() => (init_status2(), exports_status))
643560
643573
  };
@@ -648283,7 +648296,7 @@ function RemoveWorkspaceDirectory({
648283
648296
  }, undefined, false, undefined, this)
648284
648297
  }, undefined, false, undefined, this),
648285
648298
  /* @__PURE__ */ jsx_dev_runtime293.jsxDEV(ThemedText, {
648286
- children: "Foxcli will no longer have access to files in this directory."
648299
+ children: "Langcli will no longer have access to files in this directory."
648287
648300
  }, undefined, false, undefined, this),
648288
648301
  /* @__PURE__ */ jsx_dev_runtime293.jsxDEV(Select, {
648289
648302
  onChange: handleSelect,
@@ -655039,7 +655052,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
655039
655052
  smapsRollup,
655040
655053
  platform: process.platform,
655041
655054
  nodeVersion: process.version,
655042
- ccVersion: "2.1.888"
655055
+ ccVersion: "0.1.2"
655043
655056
  };
655044
655057
  }
655045
655058
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -655625,7 +655638,7 @@ var init_bridge_kick = __esm(() => {
655625
655638
  var call53 = async () => {
655626
655639
  return {
655627
655640
  type: "text",
655628
- value: `${"2.1.888"} (built ${"2026-04-10T03:30:47.565Z"})`
655641
+ value: `${"0.1.2"} (built ${"2026-04-10T08:52:33.446Z"})`
655629
655642
  };
655630
655643
  }, version6, version_default;
655631
655644
  var init_version2 = __esm(() => {
@@ -658113,7 +658126,7 @@ var init_model3 = __esm(() => {
658113
658126
  type: "local-jsx",
658114
658127
  name: "model",
658115
658128
  get description() {
658116
- return `Set the AI model for Foxcli (currently ${renderModelName(getMainLoopModel())})`;
658129
+ return `Set the AI model for Langcli (currently ${renderModelName(getMainLoopModel())})`;
658117
658130
  },
658118
658131
  argumentHint: "[model]",
658119
658132
  get immediate() {
@@ -658810,7 +658823,7 @@ var init_statusline = __esm(() => {
658810
658823
  init_constants3();
658811
658824
  statusline = {
658812
658825
  type: "prompt",
658813
- description: "Set up Foxcli's status line UI",
658826
+ description: "Set up Langcli's status line UI",
658814
658827
  contentLength: 0,
658815
658828
  aliases: [],
658816
658829
  name: "statusline",
@@ -661461,7 +661474,7 @@ var init_stats3 = __esm(() => {
661461
661474
  stats = {
661462
661475
  type: "local-jsx",
661463
661476
  name: "stats",
661464
- description: "Show your Foxcli usage statistics and activity",
661477
+ description: "Show your Langcli usage statistics and activity",
661465
661478
  load: () => Promise.resolve().then(() => (init_stats2(), exports_stats))
661466
661479
  };
661467
661480
  stats_default = stats;
@@ -662973,7 +662986,7 @@ function generateHtmlReport(data, insights) {
662973
662986
  </html>`;
662974
662987
  }
662975
662988
  function buildExportData(data, insights, facets, remoteStats) {
662976
- const version7 = typeof MACRO !== "undefined" ? "2.1.888" : "unknown";
662989
+ const version7 = typeof MACRO !== "undefined" ? "0.1.2" : "unknown";
662977
662990
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
662978
662991
  const facets_summary = {
662979
662992
  total: facets.size,
@@ -667076,7 +667089,7 @@ var init_sessionStorage = __esm(() => {
667076
667089
  init_settings2();
667077
667090
  init_slowOperations();
667078
667091
  init_uuid();
667079
- VERSION6 = typeof MACRO !== "undefined" ? "2.1.888" : "unknown";
667092
+ VERSION6 = typeof MACRO !== "undefined" ? "0.1.2" : "unknown";
667080
667093
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
667081
667094
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
667082
667095
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -668282,7 +668295,7 @@ var init_filesystem = __esm(() => {
668282
668295
  });
668283
668296
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
668284
668297
  const nonce = randomBytes19(16).toString("hex");
668285
- return join142(getClaudeTempDir(), "bundled-skills", "2.1.888", nonce);
668298
+ return join142(getClaudeTempDir(), "bundled-skills", "0.1.2", nonce);
668286
668299
  });
668287
668300
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
668288
668301
  });
@@ -674312,7 +674325,7 @@ function computeFingerprint(messageText, version7) {
674312
674325
  }
674313
674326
  function computeFingerprintFromMessages(messages) {
674314
674327
  const firstMessageText = extractFirstMessageText(messages);
674315
- return computeFingerprint(firstMessageText, "2.1.888");
674328
+ return computeFingerprint(firstMessageText, "0.1.2");
674316
674329
  }
674317
674330
  var FINGERPRINT_SALT = "59cf53e54c78";
674318
674331
  var init_fingerprint = () => {};
@@ -683238,7 +683251,7 @@ async function sideQuery(opts) {
683238
683251
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
683239
683252
  }
683240
683253
  const messageText = extractFirstUserMessageText(messages);
683241
- const fingerprint = computeFingerprint(messageText, "2.1.888");
683254
+ const fingerprint = computeFingerprint(messageText, "0.1.2");
683242
683255
  const attributionHeader = getAttributionHeader(fingerprint);
683243
683256
  const systemBlocks = [
683244
683257
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -687811,7 +687824,7 @@ function buildSystemInitMessage(inputs) {
687811
687824
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
687812
687825
  apiKeySource: getAnthropicApiKeyWithSource().source,
687813
687826
  betas: getSdkBetas(),
687814
- claude_code_version: "2.1.888",
687827
+ claude_code_version: "0.1.2",
687815
687828
  output_style: outputStyle2,
687816
687829
  agents: inputs.agents.map((agent) => agent.agentType),
687817
687830
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -694635,7 +694648,7 @@ function buildPlanApprovalOptions({
694635
694648
  });
694636
694649
  if (showUltraplan) {
694637
694650
  options.push({
694638
- label: "No, refine with Ultraplan on Foxcli on the web",
694651
+ label: "No, refine with Ultraplan on Langcli on the web",
694639
694652
  value: "ultraplan"
694640
694653
  });
694641
694654
  }
@@ -696557,16 +696570,16 @@ function permissionComponentForTool(tool) {
696557
696570
  function getNotificationMessage(toolUseConfirm) {
696558
696571
  const toolName = toolUseConfirm.tool.userFacingName(toolUseConfirm.input);
696559
696572
  if (toolUseConfirm.tool === ExitPlanModeV2Tool) {
696560
- return "Foxcli needs your approval for the plan";
696573
+ return "Langcli needs your approval for the plan";
696561
696574
  }
696562
696575
  if (toolUseConfirm.tool === EnterPlanModeTool) {
696563
- return "Foxcli wants to enter plan mode";
696576
+ return "Langcli wants to enter plan mode";
696564
696577
  }
696565
696578
  if (false) {}
696566
696579
  if (!toolName || toolName.trim() === "") {
696567
- return "Foxcli needs your attention";
696580
+ return "Langcli needs your attention";
696568
696581
  }
696569
- return `Foxcli needs your permission to use ${toolName}`;
696582
+ return `Langcli needs your permission to use ${toolName}`;
696570
696583
  }
696571
696584
  function PermissionRequest({
696572
696585
  toolUseConfirm,
@@ -698979,7 +698992,7 @@ var init_useVoiceEnabled = __esm(() => {
698979
698992
  function getSemverPart(version7) {
698980
698993
  return `${import_semver13.major(version7, { loose: true })}.${import_semver13.minor(version7, { loose: true })}.${import_semver13.patch(version7, { loose: true })}`;
698981
698994
  }
698982
- function useUpdateNotification(updatedVersion, initialVersion = "2.1.888") {
698995
+ function useUpdateNotification(updatedVersion, initialVersion = "0.1.2") {
698983
698996
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react250.useState(() => getSemverPart(initialVersion));
698984
698997
  if (!updatedVersion) {
698985
698998
  return null;
@@ -699019,7 +699032,7 @@ function AutoUpdater({
699019
699032
  return;
699020
699033
  }
699021
699034
  if (false) {}
699022
- const currentVersion = "2.1.888";
699035
+ const currentVersion = "0.1.2";
699023
699036
  const channel3 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
699024
699037
  let latestVersion = await getLatestVersion(channel3);
699025
699038
  const isDisabled = isAutoUpdaterDisabled();
@@ -699226,12 +699239,12 @@ function NativeAutoUpdater({
699226
699239
  logEvent("tengu_native_auto_updater_start", {});
699227
699240
  try {
699228
699241
  const maxVersion = await getMaxVersion();
699229
- if (maxVersion && gt("2.1.888", maxVersion)) {
699242
+ if (maxVersion && gt("0.1.2", maxVersion)) {
699230
699243
  const msg = await getMaxVersionMessage();
699231
699244
  setMaxVersionIssue(msg ?? "affects your version");
699232
699245
  }
699233
699246
  const result = await installLatest(channel3);
699234
- const currentVersion = "2.1.888";
699247
+ const currentVersion = "0.1.2";
699235
699248
  const latencyMs = Date.now() - startTime;
699236
699249
  if (result.lockFailed) {
699237
699250
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -699376,17 +699389,17 @@ function PackageManagerAutoUpdater({ verbose }) {
699376
699389
  const maxVersion = await getMaxVersion();
699377
699390
  if (maxVersion && latest && gt(latest, maxVersion)) {
699378
699391
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
699379
- if (gte("2.1.888", maxVersion)) {
699380
- logForDebugging(`PackageManagerAutoUpdater: current version ${"2.1.888"} is already at or above maxVersion ${maxVersion}, skipping update`);
699392
+ if (gte("0.1.2", maxVersion)) {
699393
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.1.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
699381
699394
  setUpdateAvailable(false);
699382
699395
  return;
699383
699396
  }
699384
699397
  latest = maxVersion;
699385
699398
  }
699386
- const hasUpdate = latest && !gte("2.1.888", latest) && !shouldSkipVersion(latest);
699399
+ const hasUpdate = latest && !gte("0.1.2", latest) && !shouldSkipVersion(latest);
699387
699400
  setUpdateAvailable(!!hasUpdate);
699388
699401
  if (hasUpdate) {
699389
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.1.888"} -> ${latest}`);
699402
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.1.2"} -> ${latest}`);
699390
699403
  }
699391
699404
  }, []);
699392
699405
  React152.useEffect(() => {
@@ -699404,7 +699417,7 @@ function PackageManagerAutoUpdater({ verbose }) {
699404
699417
  wrap: "truncate",
699405
699418
  children: [
699406
699419
  "currentVersion: ",
699407
- "2.1.888"
699420
+ "0.1.2"
699408
699421
  ]
699409
699422
  }, undefined, true, undefined, this),
699410
699423
  /* @__PURE__ */ jsx_dev_runtime405.jsxDEV(ThemedText, {
@@ -704765,7 +704778,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
704765
704778
  project_dir: getOriginalCwd(),
704766
704779
  added_dirs: addedDirs
704767
704780
  },
704768
- version: "2.1.888",
704781
+ version: "0.1.2",
704769
704782
  output_style: {
704770
704783
  name: outputStyleName
704771
704784
  },
@@ -723678,7 +723691,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
723678
723691
  } catch {}
723679
723692
  const data = {
723680
723693
  trigger,
723681
- version: "2.1.888",
723694
+ version: "0.1.2",
723682
723695
  platform: process.platform,
723683
723696
  transcript,
723684
723697
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -730426,7 +730439,7 @@ function REPL({
730426
730439
  const [haikuTitle, setHaikuTitle] = import_react344.useState();
730427
730440
  const haikuTitleAttemptedRef = import_react344.useRef((initialMessages?.length ?? 0) > 0);
730428
730441
  const agentTitle = mainThreadAgentDefinition?.agentType;
730429
- const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? "Foxcli";
730442
+ const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? "Langcli";
730430
730443
  const isWaitingForApproval = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || pendingWorkerRequest || pendingSandboxRequest;
730431
730444
  const isShowingLocalJSXCommand = toolJSX?.isLocalJSXCommand === true && toolJSX?.jsx != null;
730432
730445
  const titleIsAnimating = isLoading && !isWaitingForApproval && !isShowingLocalJSXCommand;
@@ -732397,8 +732410,8 @@ ${fileList}`);
732397
732410
  import_react344.useEffect(() => {
732398
732411
  const handleSuspend = () => {
732399
732412
  process.stdout.write(`
732400
- Foxcli has been suspended. Run \`fg\` to bring Foxcli back.
732401
- Note: ctrl + z now suspends Foxcli, ctrl + _ undoes input.
732413
+ Langcli has been suspended. Run \`fg\` to bring Langcli back.
732414
+ Note: ctrl + z now suspends Langcli, ctrl + _ undoes input.
732402
732415
  `);
732403
732416
  };
732404
732417
  const handleResume = () => {
@@ -734175,7 +734188,7 @@ var init_ApproveApiKey = __esm(() => {
734175
734188
  // src/components/LogoV2/WelcomeV2.tsx
734176
734189
  function WelcomeV2() {
734177
734190
  const [theme2] = useTheme();
734178
- const welcomeMessage = "Welcome to Foxcli";
734191
+ const welcomeMessage = "Welcome to Langcli";
734179
734192
  if (env4.terminal === "Apple_Terminal") {
734180
734193
  return /* @__PURE__ */ jsx_dev_runtime474.jsxDEV(AppleTerminalWelcomeV2, {
734181
734194
  theme: theme2,
@@ -734200,7 +734213,7 @@ function WelcomeV2() {
734200
734213
  dimColor: true,
734201
734214
  children: [
734202
734215
  "v",
734203
- "2.1.888",
734216
+ "0.1.2",
734204
734217
  " "
734205
734218
  ]
734206
734219
  }, undefined, true, undefined, this)
@@ -734317,7 +734330,7 @@ function WelcomeV2() {
734317
734330
  dimColor: true,
734318
734331
  children: [
734319
734332
  "v",
734320
- "2.1.888",
734333
+ "0.1.2",
734321
734334
  " "
734322
734335
  ]
734323
734336
  }, undefined, true, undefined, this)
@@ -734453,7 +734466,7 @@ function AppleTerminalWelcomeV2({
734453
734466
  dimColor: true,
734454
734467
  children: [
734455
734468
  "v",
734456
- "2.1.888",
734469
+ "0.1.2",
734457
734470
  " "
734458
734471
  ]
734459
734472
  }, undefined, true, undefined, this)
@@ -734598,7 +734611,7 @@ function AppleTerminalWelcomeV2({
734598
734611
  dimColor: true,
734599
734612
  children: [
734600
734613
  "v",
734601
- "2.1.888",
734614
+ "0.1.2",
734602
734615
  " "
734603
734616
  ]
734604
734617
  }, undefined, true, undefined, this)
@@ -735570,7 +735583,7 @@ function completeOnboarding() {
735570
735583
  saveGlobalConfig((current) => ({
735571
735584
  ...current,
735572
735585
  hasCompletedOnboarding: true,
735573
- lastOnboardingVersion: "2.1.888"
735586
+ lastOnboardingVersion: "0.1.2"
735574
735587
  }));
735575
735588
  }
735576
735589
  function showDialog(root2, renderer) {
@@ -738500,7 +738513,7 @@ function generateSettingsSchema() {
738500
738513
  function registerUpdateConfigSkill() {
738501
738514
  registerBundledSkill({
738502
738515
  name: "update-config",
738503
- description: 'Use this skill to configure the Foxcli harness via settings.json. Automated behaviors ("from now on when X", "each time X", "whenever X", "before/after X") require hooks configured in settings.json - the harness executes these, not Foxcli, so memory/preferences cannot fulfill them. Also use for: permissions ("allow X", "add permission", "move permission to"), env vars ("set X=Y"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: "allow npm commands", "add bq permission to global settings", "move permission to user settings", "set DEBUG=true", "when foxcli stops show X". For simple settings like theme/model, use Config tool.',
738516
+ description: 'Use this skill to configure the Langcli harness via settings.json. Automated behaviors ("from now on when X", "each time X", "whenever X", "before/after X") require hooks configured in settings.json - the harness executes these, not Langcli, so memory/preferences cannot fulfill them. Also use for: permissions ("allow X", "add permission", "move permission to"), env vars ("set X=Y"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: "allow npm commands", "add bq permission to global settings", "move permission to user settings", "set DEBUG=true", "when langcli stops show X". For simple settings like theme/model, use Config tool.',
738504
738517
  allowedTools: ["Read"],
738505
738518
  userInvocable: true,
738506
738519
  async getPromptForCommand(args) {
@@ -738629,7 +738642,7 @@ Plugin syntax: \`plugin-name@source\` where source is \`claude-code-marketplace\
738629
738642
  - \`syntaxHighlightingDisabled\`: Disable diff highlighting
738630
738643
  `, HOOKS_DOCS = `## Hooks Configuration
738631
738644
 
738632
- Hooks run commands at specific points in Foxcli's lifecycle.
738645
+ Hooks run commands at specific points in Langcli's lifecycle.
738633
738646
 
738634
738647
  ### Hook Structure
738635
738648
  \`\`\`json
@@ -739848,7 +739861,7 @@ function appendToLog(path29, message) {
739848
739861
  cwd: getFsImplementation().cwd(),
739849
739862
  userType: process.env.USER_TYPE,
739850
739863
  sessionId: getSessionId(),
739851
- version: "2.1.888"
739864
+ version: "0.1.2"
739852
739865
  };
739853
739866
  getLogWriter(path29).write(messageWithTimestamp);
739854
739867
  }
@@ -744294,8 +744307,8 @@ async function getEnvLessBridgeConfig() {
744294
744307
  }
744295
744308
  async function checkEnvLessBridgeMinVersion() {
744296
744309
  const cfg = await getEnvLessBridgeConfig();
744297
- if (cfg.min_version && lt("2.1.888", cfg.min_version)) {
744298
- return `Your version of Claude Code (${"2.1.888"}) is too old for Remote Control.
744310
+ if (cfg.min_version && lt("0.1.2", cfg.min_version)) {
744311
+ return `Your version of Claude Code (${"0.1.2"}) is too old for Remote Control.
744299
744312
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
744300
744313
  }
744301
744314
  return null;
@@ -744769,7 +744782,7 @@ async function initBridgeCore(params) {
744769
744782
  const rawApi = createBridgeApiClient({
744770
744783
  baseUrl,
744771
744784
  getAccessToken,
744772
- runnerVersion: "2.1.888",
744785
+ runnerVersion: "0.1.2",
744773
744786
  onDebug: logForDebugging,
744774
744787
  onAuth401,
744775
744788
  getTrustedDeviceToken
@@ -749858,7 +749871,7 @@ async function startMCPServer(cwd3, debug5, verbose) {
749858
749871
  setCwd(cwd3);
749859
749872
  const server = new Server({
749860
749873
  name: "claude/tengu",
749861
- version: "2.1.888"
749874
+ version: "0.1.2"
749862
749875
  }, {
749863
749876
  capabilities: {
749864
749877
  tools: {}
@@ -751379,7 +751392,7 @@ __export(exports_update, {
751379
751392
  });
751380
751393
  async function update() {
751381
751394
  logEvent("tengu_update_check", {});
751382
- writeToStdout(`Current version: ${"2.1.888"}
751395
+ writeToStdout(`Current version: ${"0.1.2"}
751383
751396
  `);
751384
751397
  const channel3 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
751385
751398
  writeToStdout(`Checking for updates to ${channel3} version...
@@ -751454,8 +751467,8 @@ async function update() {
751454
751467
  writeToStdout(`Claude is managed by Homebrew.
751455
751468
  `);
751456
751469
  const latest = await getLatestVersion(channel3);
751457
- if (latest && !gte("2.1.888", latest)) {
751458
- writeToStdout(`Update available: ${"2.1.888"} → ${latest}
751470
+ if (latest && !gte("0.1.2", latest)) {
751471
+ writeToStdout(`Update available: ${"0.1.2"} → ${latest}
751459
751472
  `);
751460
751473
  writeToStdout(`
751461
751474
  `);
@@ -751471,8 +751484,8 @@ async function update() {
751471
751484
  writeToStdout(`Claude is managed by winget.
751472
751485
  `);
751473
751486
  const latest = await getLatestVersion(channel3);
751474
- if (latest && !gte("2.1.888", latest)) {
751475
- writeToStdout(`Update available: ${"2.1.888"} → ${latest}
751487
+ if (latest && !gte("0.1.2", latest)) {
751488
+ writeToStdout(`Update available: ${"0.1.2"} → ${latest}
751476
751489
  `);
751477
751490
  writeToStdout(`
751478
751491
  `);
@@ -751488,8 +751501,8 @@ async function update() {
751488
751501
  writeToStdout(`Claude is managed by apk.
751489
751502
  `);
751490
751503
  const latest = await getLatestVersion(channel3);
751491
- if (latest && !gte("2.1.888", latest)) {
751492
- writeToStdout(`Update available: ${"2.1.888"} → ${latest}
751504
+ if (latest && !gte("0.1.2", latest)) {
751505
+ writeToStdout(`Update available: ${"0.1.2"} → ${latest}
751493
751506
  `);
751494
751507
  writeToStdout(`
751495
751508
  `);
@@ -751554,11 +751567,11 @@ async function update() {
751554
751567
  `);
751555
751568
  await gracefulShutdown(1);
751556
751569
  }
751557
- if (result.latestVersion === "2.1.888") {
751558
- writeToStdout(source_default.green(`Claude Code is up to date (${"2.1.888"})`) + `
751570
+ if (result.latestVersion === "0.1.2") {
751571
+ writeToStdout(source_default.green(`Claude Code is up to date (${"0.1.2"})`) + `
751559
751572
  `);
751560
751573
  } else {
751561
- writeToStdout(source_default.green(`Successfully updated from ${"2.1.888"} to version ${result.latestVersion}`) + `
751574
+ writeToStdout(source_default.green(`Successfully updated from ${"0.1.2"} to version ${result.latestVersion}`) + `
751562
751575
  `);
751563
751576
  await regenerateCompletionCache();
751564
751577
  }
@@ -751615,12 +751628,12 @@ async function update() {
751615
751628
  `);
751616
751629
  await gracefulShutdown(1);
751617
751630
  }
751618
- if (latestVersion === "2.1.888") {
751619
- writeToStdout(source_default.green(`Claude Code is up to date (${"2.1.888"})`) + `
751631
+ if (latestVersion === "0.1.2") {
751632
+ writeToStdout(source_default.green(`Claude Code is up to date (${"0.1.2"})`) + `
751620
751633
  `);
751621
751634
  await gracefulShutdown(0);
751622
751635
  }
751623
- writeToStdout(`New version available: ${latestVersion} (current: ${"2.1.888"})
751636
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.1.2"})
751624
751637
  `);
751625
751638
  writeToStdout(`Installing update...
751626
751639
  `);
@@ -751665,7 +751678,7 @@ async function update() {
751665
751678
  logForDebugging(`update: Installation status: ${status2}`);
751666
751679
  switch (status2) {
751667
751680
  case "success":
751668
- writeToStdout(source_default.green(`Successfully updated from ${"2.1.888"} to version ${latestVersion}`) + `
751681
+ writeToStdout(source_default.green(`Successfully updated from ${"0.1.2"} to version ${latestVersion}`) + `
751669
751682
  `);
751670
751683
  await regenerateCompletionCache();
751671
751684
  break;
@@ -752890,7 +752903,7 @@ ${customInstructions}` : customInstructions;
752890
752903
  }
752891
752904
  }
752892
752905
  logForDiagnosticsNoPII("info", "started", {
752893
- version: "2.1.888",
752906
+ version: "0.1.2",
752894
752907
  is_native_binary: isInBundledMode()
752895
752908
  });
752896
752909
  registerCleanup(async () => {
@@ -753692,7 +753705,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
753692
753705
  pendingHookMessages
753693
753706
  }, renderAndRun);
753694
753707
  }
753695
- }).version("2.1.888 (Claude Code)", "-v, --version", "Output the version number");
753708
+ }).version("0.1.2 (Claude Code)", "-v, --version", "Output the version number");
753696
753709
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
753697
753710
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
753698
753711
  if (canUserConfigureAdvisor()) {
@@ -754221,7 +754234,7 @@ if (false) {}
754221
754234
  async function main2() {
754222
754235
  const args = process.argv.slice(2);
754223
754236
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
754224
- console.log(`${"2.1.888"} (Claude Code)`);
754237
+ console.log(`${"0.1.2"} (Claude Code)`);
754225
754238
  return;
754226
754239
  }
754227
754240
  const { profileCheckpoint: profileCheckpoint2 } = await Promise.resolve().then(() => (init_startupProfiler(), exports_startupProfiler));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "langcli-com",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Langcli - interactive AI coding assistant in the terminal",
5
5
  "type": "module",
6
6
  "author": "langcli <team@langcli.com>",