lacy 1.8.26 → 1.8.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/index.mjs +18 -16
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -11,7 +11,7 @@ npx lacy
11
11
  - Installs the latest Lacy Shell release into `~/.lacy` and adds it to your zsh, Bash or fish config
12
12
  - Uses your AI CLI tool without asking when exactly one is installed
13
13
  - Asks which one to use when several are installed
14
- - Offers to install lash when none is found
14
+ - Offers to install Claude Code when none is found
15
15
  - Asks nothing when there is no terminal (CI, Docker)
16
16
 
17
17
  Run `npx lacy` again after installing to change the tool or mode, edit the config, update, reinstall, or uninstall. Without a terminal it updates to the latest release instead.
package/index.mjs CHANGED
@@ -39,11 +39,11 @@ const GIT_ENV = { ...process.env, GIT_TERMINAL_PROMPT: "0" };
39
39
  const STATE_FILES = ["config.yaml", "current_mode", "logs", ".last_session", ".server.pid"];
40
40
 
41
41
  // Keep in sync with LACY_TOOL_LIST in lib/core/constants.sh (tests check).
42
- const TOOL_LIST = ["lash", "claude", "opencode", "gemini", "codex", "hermes", "copilot", "goose", "aider"];
42
+ const TOOL_LIST = ["claude", "lash", "opencode", "gemini", "codex", "hermes", "copilot", "goose", "aider"];
43
43
 
44
44
  const TOOL_HINTS = {
45
- lash: "AI coding agent, lash.lacy.sh (recommended)",
46
- claude: "Claude Code CLI",
45
+ lash: "AI coding agent, lash.lacy.sh",
46
+ claude: "Claude Code CLI (recommended)",
47
47
  opencode: "OpenCode CLI",
48
48
  gemini: "Google Gemini CLI",
49
49
  codex: "OpenAI Codex CLI",
@@ -298,6 +298,7 @@ agent_tools:
298
298
  # Leave empty to auto-detect.
299
299
  ${activeLine}
300
300
  ${customLine}
301
+ # claude_model: haiku # claude only; haiku is fast for short questions. Name sonnet, opus, or a model id for more.
301
302
 
302
303
  modes:
303
304
  default: auto # shell, agent, or auto
@@ -305,6 +306,7 @@ modes:
305
306
  # preheat:
306
307
  # eager: false
307
308
  # server_port: 4096
309
+ # claude_idle_minutes: 15 # keep claude running between questions; 0 turns it off
308
310
 
309
311
  # logging:
310
312
  # queries: false # true writes ~/.lacy/logs/queries.log (owner-only)
@@ -527,27 +529,27 @@ function checkPrerequisites(shell) {
527
529
  return missing;
528
530
  }
529
531
 
530
- function installLash() {
532
+ function installClaude() {
531
533
  const s = spinner();
532
- s.start("Installing lash");
534
+ s.start("Installing Claude Code");
533
535
  try {
534
536
  if (commandExists("npm")) {
535
- execSync("npm install -g lashcode", { stdio: "pipe" });
537
+ execSync(INSTALL_CMDS.claude, { stdio: "pipe" });
536
538
  } else if (commandExists("brew")) {
537
- execSync("brew tap lacymorrow/tap && brew install lash", { stdio: "pipe" });
539
+ execSync("brew install --cask claude-code", { stdio: "pipe" });
538
540
  } else {
539
- s.stop("Could not install lash: npm or Homebrew is needed");
541
+ s.stop("Could not install Claude Code: npm or Homebrew is needed");
540
542
  return false;
541
543
  }
542
544
  } catch {
543
- s.stop("lash did not install");
545
+ s.stop("Claude Code did not install");
544
546
  return false;
545
547
  }
546
- s.stop("lash installed");
547
- return commandExists("lash");
548
+ s.stop("Claude Code installed. Sign in once by running: claude");
549
+ return commandExists("claude");
548
550
  }
549
551
 
550
- // One tool installed: use it. None: offer lash. Several: ask which.
552
+ // One tool installed: use it. None: offer Claude Code. Several: ask which.
551
553
  // Without a terminal nothing is asked and the default is used.
552
554
  async function chooseTool() {
553
555
  const detected = detectTools();
@@ -568,18 +570,18 @@ async function chooseTool() {
568
570
  }
569
571
 
570
572
  if (!isInteractive()) {
571
- p.log.warn("No AI CLI tool found. Install one later, for example: npm install -g lashcode");
573
+ p.log.warn(`No AI CLI tool found. Install one later, for example: ${INSTALL_CMDS.claude}`);
572
574
  return "";
573
575
  }
574
576
 
575
577
  p.log.warn("No AI CLI tool found. Lacy needs one to answer questions.");
576
578
  const yes = await p.confirm({
577
- message: `Install ${pc.green("lash")} (lash.lacy.sh)?`,
579
+ message: `Install ${pc.green("Claude Code")} (claude)?`,
578
580
  initialValue: true,
579
581
  });
580
582
  if (p.isCancel(yes)) cancelled("Installation cancelled");
581
- if (yes && installLash()) return "lash";
582
- p.log.info("Install one later, for example: npm install -g lashcode");
583
+ if (yes && installClaude()) return "claude";
584
+ p.log.info(`Install one later, for example: ${INSTALL_CMDS.claude}`);
583
585
  return "";
584
586
  }
585
587
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lacy",
3
- "version": "1.8.26",
3
+ "version": "1.8.29",
4
4
  "description": "Installer for lacy. Talk to your shell: commands run, questions go to your AI coding tool.",
5
5
  "type": "module",
6
6
  "bin": {