@antaif3ng/tilcode 0.100.1 → 0.101.0

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 +50 -47
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -542076,21 +542076,24 @@ function isInputModeCharacter(input) {
542076
542076
  }
542077
542077
 
542078
542078
  // src/projectOnboardingState.ts
542079
+ import { existsSync as existsSync13 } from "fs";
542080
+ import { homedir as homedir29 } from "os";
542079
542081
  import { join as join108 } from "path";
542080
542082
  function getSteps() {
542081
542083
  const hasClaudeMd = getFsImplementation().existsSync(join108(getCwd(), "CLAUDE.md"));
542082
542084
  const isWorkspaceDirEmpty = isDirEmpty(getCwd());
542085
+ const hasProviderConfig = existsSync13(join108(homedir29(), ".tilcode", "provider.json"));
542083
542086
  return [
542084
542087
  {
542085
- key: "workspace",
542086
- text: "Ask Claude to create a new app or clone a repository",
542087
- isComplete: false,
542088
+ key: "provider",
542089
+ text: "Create ~/.tilcode/provider.json to configure your model provider",
542090
+ isComplete: hasProviderConfig,
542088
542091
  isCompletable: true,
542089
- isEnabled: isWorkspaceDirEmpty
542092
+ isEnabled: true
542090
542093
  },
542091
542094
  {
542092
542095
  key: "claudemd",
542093
- text: "Run /init to create a CLAUDE.md file with instructions for Claude",
542096
+ text: "Run /init to create a CLAUDE.md file with project instructions",
542094
542097
  isComplete: hasClaudeMd,
542095
542098
  isCompletable: true,
542096
542099
  isEnabled: !isWorkspaceDirEmpty
@@ -542135,7 +542138,7 @@ var init_projectOnboardingState = __esm(() => {
542135
542138
 
542136
542139
  // src/utils/appleTerminalBackup.ts
542137
542140
  import { stat as stat36 } from "fs/promises";
542138
- import { homedir as homedir29 } from "os";
542141
+ import { homedir as homedir30 } from "os";
542139
542142
  import { join as join109 } from "path";
542140
542143
  function markTerminalSetupInProgress(backupPath) {
542141
542144
  saveGlobalConfig((current) => ({
@@ -542158,7 +542161,7 @@ function getTerminalRecoveryInfo() {
542158
542161
  };
542159
542162
  }
542160
542163
  function getTerminalPlistPath() {
542161
- return join109(homedir29(), "Library", "Preferences", "com.apple.Terminal.plist");
542164
+ return join109(homedir30(), "Library", "Preferences", "com.apple.Terminal.plist");
542162
542165
  }
542163
542166
  async function backupTerminalPreferences() {
542164
542167
  const terminalPlistPath = getTerminalPlistPath();
@@ -542229,11 +542232,11 @@ var init_appleTerminalBackup = __esm(() => {
542229
542232
  });
542230
542233
 
542231
542234
  // src/utils/completionCache.ts
542232
- import { homedir as homedir30 } from "os";
542235
+ import { homedir as homedir31 } from "os";
542233
542236
  import { dirname as dirname48, join as join110 } from "path";
542234
542237
  function detectShell() {
542235
542238
  const shell = process.env.SHELL || "";
542236
- const home = homedir30();
542239
+ const home = homedir31();
542237
542240
  const claudeDir = join110(home, ".claude");
542238
542241
  if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
542239
542242
  const cacheFile = join110(claudeDir, "completion.zsh");
@@ -542309,7 +542312,7 @@ __export(exports_terminalSetup, {
542309
542312
  });
542310
542313
  import { randomBytes as randomBytes15 } from "crypto";
542311
542314
  import { copyFile as copyFile9, mkdir as mkdir25, readFile as readFile39, writeFile as writeFile30 } from "fs/promises";
542312
- import { homedir as homedir31, platform as platform5 } from "os";
542315
+ import { homedir as homedir32, platform as platform5 } from "os";
542313
542316
  import { dirname as dirname49, join as join111 } from "path";
542314
542317
  import { pathToFileURL as pathToFileURL7 } from "url";
542315
542318
  function isVSCodeRemoteSSH() {
@@ -542445,7 +542448,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
542445
542448
  ]`)}${EOL7}`;
542446
542449
  }
542447
542450
  const editorDir = editor === "VSCode" ? "Code" : editor;
542448
- const userDirPath = join111(homedir31(), platform5() === "win32" ? join111("AppData", "Roaming", editorDir, "User") : platform5() === "darwin" ? join111("Library", "Application Support", editorDir, "User") : join111(".config", editorDir, "User"));
542451
+ const userDirPath = join111(homedir32(), platform5() === "win32" ? join111("AppData", "Roaming", editorDir, "User") : platform5() === "darwin" ? join111("Library", "Application Support", editorDir, "User") : join111(".config", editorDir, "User"));
542449
542452
  const keybindingsPath = join111(userDirPath, "keybindings.json");
542450
542453
  try {
542451
542454
  await mkdir25(userDirPath, {
@@ -542589,7 +542592,7 @@ chars = "\\u001B\\r"`;
542589
542592
  if (xdgConfigHome) {
542590
542593
  configPaths.push(join111(xdgConfigHome, "alacritty", "alacritty.toml"));
542591
542594
  } else {
542592
- configPaths.push(join111(homedir31(), ".config", "alacritty", "alacritty.toml"));
542595
+ configPaths.push(join111(homedir32(), ".config", "alacritty", "alacritty.toml"));
542593
542596
  }
542594
542597
  if (platform5() === "win32") {
542595
542598
  const appData = process.env.APPDATA;
@@ -542655,7 +542658,7 @@ chars = "\\u001B\\r"`;
542655
542658
  }
542656
542659
  }
542657
542660
  async function installBindingsForZed(theme) {
542658
- const zedDir = join111(homedir31(), ".config", "zed");
542661
+ const zedDir = join111(homedir32(), ".config", "zed");
542659
542662
  const keymapPath = join111(zedDir, "keymap.json");
542660
542663
  try {
542661
542664
  await mkdir25(zedDir, {
@@ -560945,10 +560948,10 @@ var init_MemoryFileSelector = __esm(() => {
560945
560948
  });
560946
560949
 
560947
560950
  // src/components/memory/MemoryUpdateNotification.tsx
560948
- import { homedir as homedir32 } from "os";
560951
+ import { homedir as homedir33 } from "os";
560949
560952
  import { relative as relative25 } from "path";
560950
560953
  function getRelativeMemoryPath(path23) {
560951
- const homeDir = homedir32();
560954
+ const homeDir = homedir33();
560952
560955
  const cwd2 = getCwd();
560953
560956
  const relativeToHome = path23.startsWith(homeDir) ? "~" + path23.slice(homeDir.length) : null;
560954
560957
  const relativeToCwd = path23.startsWith(cwd2) ? "./" + relative25(cwd2, path23) : null;
@@ -571383,7 +571386,7 @@ var init_pluginStartupCheck = __esm(() => {
571383
571386
  });
571384
571387
 
571385
571388
  // src/utils/plugins/parseMarketplaceInput.ts
571386
- import { homedir as homedir33 } from "os";
571389
+ import { homedir as homedir34 } from "os";
571387
571390
  import { resolve as resolve43 } from "path";
571388
571391
  async function parseMarketplaceInput(input) {
571389
571392
  const trimmed = input.trim();
@@ -571419,7 +571422,7 @@ async function parseMarketplaceInput(input) {
571419
571422
  const isWindows3 = process.platform === "win32";
571420
571423
  const isWindowsPath = isWindows3 && (trimmed.startsWith(".\\") || trimmed.startsWith("..\\") || /^[a-zA-Z]:[/\\]/.test(trimmed));
571421
571424
  if (trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("/") || trimmed.startsWith("~") || isWindowsPath) {
571422
- const resolvedPath = resolve43(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir33()) : trimmed);
571425
+ const resolvedPath = resolve43(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir34()) : trimmed);
571423
571426
  let stats;
571424
571427
  try {
571425
571428
  stats = await fs17.stat(resolvedPath);
@@ -587486,9 +587489,9 @@ function calculateOptimalLeftWidth(welcomeMessage, truncatedCwd, modelLine) {
587486
587489
  }
587487
587490
  function formatWelcomeMessage(username) {
587488
587491
  if (!username || username.length > MAX_USERNAME_LENGTH) {
587489
- return "Welcome back!";
587492
+ return "A lightweight clean edition";
587490
587493
  }
587491
- return `Welcome back ${username}!`;
587494
+ return "A lightweight clean edition";
587492
587495
  }
587493
587496
  function truncatePath(path26, maxLength) {
587494
587497
  if (stringWidth(path26) <= maxLength)
@@ -588033,7 +588036,7 @@ var init_referral = __esm(() => {
588033
588036
  });
588034
588037
 
588035
588038
  // src/components/LogoV2/feedConfigs.tsx
588036
- import { homedir as homedir34 } from "os";
588039
+ import { homedir as homedir35 } from "os";
588037
588040
  function createRecentActivityFeed(activities) {
588038
588041
  const lines2 = activities.map((log3) => {
588039
588042
  const time3 = formatRelativeTimeAgo(log3.modified);
@@ -588057,7 +588060,7 @@ function createWhatsNewFeed(releaseNotes2) {
588057
588060
  text: note
588058
588061
  };
588059
588062
  });
588060
- const emptyMessage = "Check the Claude Code changelog for updates";
588063
+ const emptyMessage = "No recent updates";
588061
588064
  return {
588062
588065
  title: "What's new",
588063
588066
  lines: lines2,
@@ -588078,14 +588081,14 @@ function createProjectOnboardingFeed(steps) {
588078
588081
  text: `${checkmark}${text2}`
588079
588082
  };
588080
588083
  });
588081
- const warningText = getCwd() === homedir34() ? "Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead." : undefined;
588084
+ const warningText = getCwd() === homedir35() ? "Note: You have launched tilcode in your home directory. For the best experience, launch it in a project directory instead." : undefined;
588082
588085
  if (warningText) {
588083
588086
  lines2.push({
588084
588087
  text: warningText
588085
588088
  });
588086
588089
  }
588087
588090
  return {
588088
- title: "Tips for getting started",
588091
+ title: "Quick Start",
588089
588092
  lines: lines2
588090
588093
  };
588091
588094
  }
@@ -588661,7 +588664,7 @@ function LogoV2() {
588661
588664
  } else {
588662
588665
  t0 = $3[0];
588663
588666
  }
588664
- const showOnboarding = t0;
588667
+ const showOnboarding = true;
588665
588668
  let t1;
588666
588669
  if ($3[1] === Symbol.for("react.memo_cache_sentinel")) {
588667
588670
  t1 = SandboxManager2.isSandboxingEnabled();
@@ -588913,7 +588916,7 @@ function LogoV2() {
588913
588916
  }
588914
588917
  const layoutMode = getLayoutMode(columns);
588915
588918
  const userTheme = resolveThemeSetting(getGlobalConfig().theme);
588916
- const borderTitle = ` ${color("claude", userTheme)("Tilcode")} ${color("inactive", userTheme)(`v${version6} | \u7EAF\u51C0\u7248 Claude Code`)} `;
588919
+ const borderTitle = ` ${color("claude", userTheme)("Tilcode")} ${color("inactive", userTheme)(`v${version6} | \u57FA\u4E8E Claude Code, \u66F4\u5B89\u5168\uFF0C\u65E0\u4E0A\u62A5\uFF0C\u53EF\u89C2\u6D4B\uFF0C\u53EF\u90E8\u7F72`)} `;
588917
588920
  const compactBorderTitle = color("claude", userTheme)(" Tilcode ");
588918
588921
  if (layoutMode === "compact") {
588919
588922
  let welcomeMessage = formatWelcomeMessage(username);
@@ -617605,7 +617608,7 @@ var init_setupPortable = __esm(() => {
617605
617608
 
617606
617609
  // src/utils/claudeInChrome/setup.ts
617607
617610
  import { chmod as chmod10, mkdir as mkdir34, readFile as readFile50, writeFile as writeFile41 } from "fs/promises";
617608
- import { homedir as homedir35 } from "os";
617611
+ import { homedir as homedir36 } from "os";
617609
617612
  import { join as join133 } from "path";
617610
617613
  import { fileURLToPath as fileURLToPath8 } from "url";
617611
617614
  function shouldEnableClaudeInChrome(chromeFlag) {
@@ -617685,7 +617688,7 @@ function setupClaudeInChrome() {
617685
617688
  function getNativeMessagingHostsDirs() {
617686
617689
  const platform6 = getPlatform();
617687
617690
  if (platform6 === "windows") {
617688
- const home = homedir35();
617691
+ const home = homedir36();
617689
617692
  const appData = process.env.APPDATA || join133(home, "AppData", "Local");
617690
617693
  return [join133(appData, "Claude Code", "ChromeNativeHost")];
617691
617694
  }
@@ -629686,7 +629689,7 @@ var init_agentMemory = __esm(() => {
629686
629689
 
629687
629690
  // src/utils/permissions/filesystem.ts
629688
629691
  import { randomBytes as randomBytes19 } from "crypto";
629689
- import { homedir as homedir36, tmpdir as tmpdir13 } from "os";
629692
+ import { homedir as homedir37, tmpdir as tmpdir13 } from "os";
629690
629693
  import { join as join143, normalize as normalize15, posix as posix8, sep as sep35 } from "path";
629691
629694
  function normalizeCaseForComparison2(path26) {
629692
629695
  return path26.toLowerCase();
@@ -629700,7 +629703,7 @@ function getClaudeSkillScope(filePath) {
629700
629703
  prefix: "/.claude/skills/"
629701
629704
  },
629702
629705
  {
629703
- dir: expandPath(join143(homedir36(), ".claude", "skills")),
629706
+ dir: expandPath(join143(homedir37(), ".claude", "skills")),
629704
629707
  prefix: "~/.claude/skills/"
629705
629708
  }
629706
629709
  ];
@@ -630014,7 +630017,7 @@ function patternWithRoot(pattern, source) {
630014
630017
  } else if (pattern.startsWith(`~${DIR_SEP}`)) {
630015
630018
  return {
630016
630019
  relativePattern: pattern.slice(1),
630017
- root: homedir36().normalize("NFC")
630020
+ root: homedir37().normalize("NFC")
630018
630021
  };
630019
630022
  } else if (pattern.startsWith(DIR_SEP)) {
630020
630023
  return {
@@ -636154,7 +636157,7 @@ import {
636154
636157
  unlink as unlink23
636155
636158
  } from "fs/promises";
636156
636159
  import { createServer as createServer7 } from "net";
636157
- import { homedir as homedir37, platform as platform6 } from "os";
636160
+ import { homedir as homedir38, platform as platform6 } from "os";
636158
636161
  import { join as join146 } from "path";
636159
636162
  function log3(message, ...args) {
636160
636163
  if (LOG_FILE) {
@@ -636493,7 +636496,7 @@ var init_chromeNativeHost = __esm(() => {
636493
636496
  init_slowOperations();
636494
636497
  init_common3();
636495
636498
  MAX_MESSAGE_SIZE = 1024 * 1024;
636496
- LOG_FILE = process.env.USER_TYPE === "ant" ? join146(homedir37(), ".claude", "debug", "chrome-native-host.txt") : undefined;
636499
+ LOG_FILE = process.env.USER_TYPE === "ant" ? join146(homedir38(), ".claude", "debug", "chrome-native-host.txt") : undefined;
636497
636500
  messageSchema = lazySchema(() => exports_external.object({
636498
636501
  type: exports_external.string()
636499
636502
  }).passthrough());
@@ -637543,7 +637546,7 @@ __export(exports_mcpServer2, {
637543
637546
  runComputerUseMcpServer: () => runComputerUseMcpServer,
637544
637547
  createComputerUseMcpServerForCli: () => createComputerUseMcpServerForCli
637545
637548
  });
637546
- import { homedir as homedir38 } from "os";
637549
+ import { homedir as homedir39 } from "os";
637547
637550
  async function tryGetInstalledAppNames() {
637548
637551
  const adapter2 = getComputerUseHostAdapter();
637549
637552
  const enumP = adapter2.executor.listInstalledApps();
@@ -637559,7 +637562,7 @@ async function tryGetInstalledAppNames() {
637559
637562
  logForDebugging(`[Computer Use MCP] app enumeration exceeded ${APP_ENUM_TIMEOUT_MS}ms or failed; tool description omits list`);
637560
637563
  return;
637561
637564
  }
637562
- return filterAppsForDescription(installed, homedir38());
637565
+ return filterAppsForDescription(installed, homedir39());
637563
637566
  }
637564
637567
  async function createComputerUseMcpServerForCli() {
637565
637568
  const adapter2 = getComputerUseHostAdapter();
@@ -643070,7 +643073,7 @@ __export(exports_upstreamproxy, {
643070
643073
  SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
643071
643074
  });
643072
643075
  import { mkdir as mkdir43, readFile as readFile55, unlink as unlink25, writeFile as writeFile46 } from "fs/promises";
643073
- import { homedir as homedir39 } from "os";
643076
+ import { homedir as homedir40 } from "os";
643074
643077
  import { join as join152 } from "path";
643075
643078
  async function initUpstreamProxy(opts) {
643076
643079
  if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
@@ -643092,7 +643095,7 @@ async function initUpstreamProxy(opts) {
643092
643095
  }
643093
643096
  setNonDumpable();
643094
643097
  const baseUrl = opts?.ccrBaseUrl ?? process.env.ANTHROPIC_BASE_URL ?? "https://api.anthropic.com";
643095
- const caBundlePath = opts?.caBundlePath ?? join152(homedir39(), ".ccr", "ca-bundle.crt");
643098
+ const caBundlePath = opts?.caBundlePath ?? join152(homedir40(), ".ccr", "ca-bundle.crt");
643096
643099
  const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
643097
643100
  if (!caOk)
643098
643101
  return state3;
@@ -651309,7 +651312,7 @@ var init_ShowInIDEPrompt = __esm(() => {
651309
651312
  });
651310
651313
 
651311
651314
  // src/components/permissions/FilePermissionDialog/permissionOptions.tsx
651312
- import { homedir as homedir40 } from "os";
651315
+ import { homedir as homedir41 } from "os";
651313
651316
  import { basename as basename49, join as join153, sep as sep36 } from "path";
651314
651317
  function isInClaudeFolder(filePath) {
651315
651318
  const absolutePath = expandPath(filePath);
@@ -651320,7 +651323,7 @@ function isInClaudeFolder(filePath) {
651320
651323
  }
651321
651324
  function isInGlobalClaudeFolder(filePath) {
651322
651325
  const absolutePath = expandPath(filePath);
651323
- const globalClaudeFolderPath = join153(homedir40(), ".claude");
651326
+ const globalClaudeFolderPath = join153(homedir41(), ".claude");
651324
651327
  const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
651325
651328
  const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison2(globalClaudeFolderPath);
651326
651329
  return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep36.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
@@ -681733,7 +681736,7 @@ var require_lib20 = __commonJS((exports, module) => {
681733
681736
 
681734
681737
  // src/utils/cleanup.ts
681735
681738
  import * as fs18 from "fs/promises";
681736
- import { homedir as homedir41 } from "os";
681739
+ import { homedir as homedir42 } from "os";
681737
681740
  import { join as join154 } from "path";
681738
681741
  function getCutoffDate() {
681739
681742
  const settings = getSettings_DEPRECATED() || {};
@@ -682034,7 +682037,7 @@ async function cleanupNpmCacheForAnthropicPackages() {
682034
682037
  return;
682035
682038
  }
682036
682039
  logForDebugging("npm cache cleanup: starting");
682037
- const npmCachePath = join154(homedir41(), ".npm", "_cacache");
682040
+ const npmCachePath = join154(homedir42(), ".npm", "_cacache");
682038
682041
  const NPM_CACHE_RETENTION_COUNT = 5;
682039
682042
  const startTime = Date.now();
682040
682043
  try {
@@ -705217,7 +705220,7 @@ var init_sessionMemory = __esm(() => {
705217
705220
 
705218
705221
  // src/utils/iTermBackup.ts
705219
705222
  import { copyFile as copyFile12, stat as stat50 } from "fs/promises";
705220
- import { homedir as homedir42 } from "os";
705223
+ import { homedir as homedir43 } from "os";
705221
705224
  import { join as join160 } from "path";
705222
705225
  function markITerm2SetupComplete() {
705223
705226
  saveGlobalConfig((current) => ({
@@ -705233,7 +705236,7 @@ function getIterm2RecoveryInfo() {
705233
705236
  };
705234
705237
  }
705235
705238
  function getITerm2PlistPath() {
705236
- return join160(homedir42(), "Library", "Preferences", "com.googlecode.iterm2.plist");
705239
+ return join160(homedir43(), "Library", "Preferences", "com.googlecode.iterm2.plist");
705237
705240
  }
705238
705241
  async function checkAndRestoreITerm2Backup() {
705239
705242
  const { inProgress, backupPath } = getIterm2RecoveryInfo();
@@ -714827,7 +714830,7 @@ __export(exports_claudeDesktop, {
714827
714830
  getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
714828
714831
  });
714829
714832
  import { readdir as readdir31, readFile as readFile59, stat as stat52 } from "fs/promises";
714830
- import { homedir as homedir43 } from "os";
714833
+ import { homedir as homedir44 } from "os";
714831
714834
  import { join as join163 } from "path";
714832
714835
  async function getClaudeDesktopConfigPath() {
714833
714836
  const platform7 = getPlatform();
@@ -714835,7 +714838,7 @@ async function getClaudeDesktopConfigPath() {
714835
714838
  throw new Error(`Unsupported platform: ${platform7} - Claude Desktop integration only works on macOS and WSL.`);
714836
714839
  }
714837
714840
  if (platform7 === "macos") {
714838
- return join163(homedir43(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
714841
+ return join163(homedir44(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
714839
714842
  }
714840
714843
  const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
714841
714844
  if (windowsHome) {
@@ -715762,11 +715765,11 @@ var exports_install = {};
715762
715765
  __export(exports_install, {
715763
715766
  install: () => install
715764
715767
  });
715765
- import { homedir as homedir44 } from "os";
715768
+ import { homedir as homedir45 } from "os";
715766
715769
  import { join as join164 } from "path";
715767
715770
  function getInstallationPath2() {
715768
715771
  const isWindows3 = env4.platform === "win32";
715769
- const homeDir = homedir44();
715772
+ const homeDir = homedir45();
715770
715773
  if (isWindows3) {
715771
715774
  const windowsPath = join164(homeDir, ".local", "bin", "claude.exe");
715772
715775
  return windowsPath.replace(/\//g, "\\");
@@ -719131,7 +719134,7 @@ var init_main6 = __esm(() => {
719131
719134
  var feature = (_name) => false;
719132
719135
  if (typeof globalThis.MACRO === "undefined") {
719133
719136
  globalThis.MACRO = {
719134
- VERSION: "0.100.1",
719137
+ VERSION: "0.101.0",
719135
719138
  BUILD_TIME: new Date().toISOString(),
719136
719139
  FEEDBACK_CHANNEL: "",
719137
719140
  ISSUES_EXPLAINER: "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antaif3ng/tilcode",
3
- "version": "0.100.1",
3
+ "version": "0.101.0",
4
4
  "description": "A clean, observable, and provider-agnostic CLI coding assistant based on Claude Code",
5
5
  "type": "module",
6
6
  "license": "MIT",