conare 0.4.1 → 0.4.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/index.js +27 -20
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1511,7 +1511,7 @@ async function selectChatSources(targets) {
1511
1511
  return ensureValue(await fe({
1512
1512
  message: "Select chat sources",
1513
1513
  required: false,
1514
- initialValues: targets.filter((target) => target.available !== false).map((target) => target.id),
1514
+ initialValues: targets.filter((target) => target.available !== false && (target.detectedCount ?? 0) > 0).map((target) => target.id),
1515
1515
  options: targets.map((target) => ({
1516
1516
  value: target.id,
1517
1517
  label: target.label,
@@ -2357,7 +2357,7 @@ function configureClaude(apiKey) {
2357
2357
  stdio: "ignore",
2358
2358
  shell: platform5() === "win32"
2359
2359
  }).status === 0) {
2360
- return "Claude Code configured via `claude mcp add-json`";
2360
+ return "\x1B[32m✓\x1B[0m Claude Code";
2361
2361
  }
2362
2362
  const config = readJsonFile(claudeConfigPath);
2363
2363
  if (!config.mcpServers || typeof config.mcpServers !== "object") {
@@ -2373,7 +2373,7 @@ function configureClaude(apiKey) {
2373
2373
  mcpConfig.mcpServers[SERVER_NAME] = getServerConfig(apiKey);
2374
2374
  writeJsonFile(claudeMcpPath, mcpConfig);
2375
2375
  }
2376
- return `Claude Code configured at ${claudeConfigPath}`;
2376
+ return "\x1B[32m✓\x1B[0m Claude Code";
2377
2377
  }
2378
2378
  function configureCodex(apiKey) {
2379
2379
  const configPath = join7(homedir5(), ".codex", "config.toml");
@@ -2381,7 +2381,7 @@ function configureCodex(apiKey) {
2381
2381
  stdio: "ignore",
2382
2382
  shell: platform5() === "win32"
2383
2383
  }).status === 0) {
2384
- return "Codex configured via `codex mcp add`";
2384
+ return "\x1B[32m✓\x1B[0m Codex";
2385
2385
  }
2386
2386
  let toml = "";
2387
2387
  try {
@@ -2424,7 +2424,7 @@ ${newSection}
2424
2424
  }
2425
2425
  }
2426
2426
  } catch {}
2427
- return `Codex configured at ${configPath}`;
2427
+ return "\x1B[32m✓\x1B[0m Codex";
2428
2428
  }
2429
2429
  function configureCursor(apiKey) {
2430
2430
  const configPath = join7(homedir5(), ".cursor", "mcp.json");
@@ -2437,7 +2437,7 @@ function configureCursor(apiKey) {
2437
2437
  headers: { Authorization: `Bearer ${apiKey}` }
2438
2438
  };
2439
2439
  writeJsonFile(configPath, config);
2440
- return `Cursor configured at ${configPath}`;
2440
+ return "\x1B[32m✓\x1B[0m Cursor";
2441
2441
  }
2442
2442
  function configureWindsurf(apiKey) {
2443
2443
  const configPath = join7(homedir5(), ".codeium", "windsurf", "mcp_config.json");
@@ -2450,7 +2450,7 @@ function configureWindsurf(apiKey) {
2450
2450
  headers: { Authorization: `Bearer ${apiKey}` }
2451
2451
  };
2452
2452
  writeJsonFile(configPath, config);
2453
- return `Windsurf configured at ${configPath}`;
2453
+ return "\x1B[32m✓\x1B[0m Windsurf";
2454
2454
  }
2455
2455
  function configureVscode(apiKey) {
2456
2456
  const os = platform5();
@@ -2472,7 +2472,7 @@ function configureVscode(apiKey) {
2472
2472
  headers: { Authorization: `Bearer ${apiKey}` }
2473
2473
  };
2474
2474
  writeJsonFile(configPath, config);
2475
- return `VS Code Copilot configured at ${configPath}`;
2475
+ return "\x1B[32m✓\x1B[0m VS Code Copilot";
2476
2476
  }
2477
2477
  function configureCline(apiKey) {
2478
2478
  const os = platform5();
@@ -2494,7 +2494,7 @@ function configureCline(apiKey) {
2494
2494
  disabled: false
2495
2495
  };
2496
2496
  writeJsonFile(configPath, config);
2497
- return `Cline configured at ${configPath}`;
2497
+ return "\x1B[32m✓\x1B[0m Cline";
2498
2498
  }
2499
2499
  function configureZed(apiKey) {
2500
2500
  const os = platform5();
@@ -2520,7 +2520,7 @@ function configureZed(apiKey) {
2520
2520
  env: {}
2521
2521
  };
2522
2522
  writeJsonFile(configPath, config);
2523
- return `Zed configured at ${configPath}`;
2523
+ return "\x1B[32m✓\x1B[0m Zed";
2524
2524
  }
2525
2525
  function configureOpenclaw(apiKey) {
2526
2526
  const configPath = join7(homedir5(), ".openclaw", "openclaw.json");
@@ -2534,7 +2534,7 @@ function configureOpenclaw(apiKey) {
2534
2534
  headers: { Authorization: `Bearer ${apiKey}` }
2535
2535
  };
2536
2536
  writeJsonFile(configPath, config);
2537
- return `OpenClaw configured at ${configPath}`;
2537
+ return "\x1B[32m✓\x1B[0m OpenClaw";
2538
2538
  }
2539
2539
  var CLIENT_CONFIGURATORS = {
2540
2540
  claude: configureClaude,
@@ -2642,14 +2642,14 @@ function installSkill() {
2642
2642
  if (existsSync6(claudeSkillDir)) {
2643
2643
  try {
2644
2644
  if (readlinkSync(claudeSkillDir) === skillDir)
2645
- return "Agent Skill installed";
2645
+ return "\x1B[32m✓\x1B[0m Agent Skill";
2646
2646
  } catch {}
2647
2647
  rmSync(claudeSkillDir, { recursive: true, force: true });
2648
2648
  }
2649
2649
  symlinkSync(skillDir, claudeSkillDir);
2650
2650
  }
2651
2651
  } catch {}
2652
- return "Agent Skill installed";
2652
+ return "\x1B[32m✓\x1B[0m Agent Skill";
2653
2653
  }
2654
2654
  function configureMcp(apiKey, targets = ["claude", "codex"]) {
2655
2655
  const results = [];
@@ -3384,8 +3384,8 @@ async function runInstall() {
3384
3384
  const detected = detectedTools.find((d3) => d3.id === t.id);
3385
3385
  return detected?.available || t.defaultSelected;
3386
3386
  }).map((t) => t.id);
3387
- const lines = configureMcp(apiKey, targets);
3388
- for (const line of lines)
3387
+ const mcpLines = configureMcp(apiKey, targets);
3388
+ for (const line of mcpLines)
3389
3389
  console.log(` ${line}`);
3390
3390
  console.log("");
3391
3391
  console.log(" \x1B[32m✓\x1B[0m MCP installed. Restart your AI tool to connect.");
@@ -3463,7 +3463,8 @@ async function main() {
3463
3463
  }
3464
3464
  }
3465
3465
  showDetectedApps(interactiveTargets);
3466
- selectedSources = await selectChatSources(interactiveTargets);
3466
+ const INGESTIBLE_SOURCES = new Set(["claude", "codex", "cursor"]);
3467
+ selectedSources = await selectChatSources(interactiveTargets.filter((t) => INGESTIBLE_SOURCES.has(t.id)));
3467
3468
  interactiveMode = true;
3468
3469
  }
3469
3470
  if (opts.uninstallSync) {
@@ -3525,8 +3526,10 @@ async function main() {
3525
3526
  if (!opts.dryRun) {
3526
3527
  const mcpSpinner = Y2();
3527
3528
  mcpSpinner.start("Configuring MCP...");
3528
- const lines = configureMcp(apiKey, selectedTargets);
3529
- mcpSpinner.stop(`MCP configured: ${lines.join(", ")}`);
3529
+ const mcpLines = configureMcp(apiKey, selectedTargets);
3530
+ mcpSpinner.stop("MCP configured");
3531
+ for (const line of mcpLines)
3532
+ log(` ${line}`);
3530
3533
  }
3531
3534
  log("");
3532
3535
  log("Done! Conare MCP is configured.");
@@ -3618,7 +3621,9 @@ Nothing new to index.`);
3618
3621
  const mcpSpinner = Y2();
3619
3622
  mcpSpinner.start("Configuring MCP...");
3620
3623
  const mcpLines = configureMcp(apiKey, selectedTargets);
3621
- mcpSpinner.stop(`MCP: ${mcpLines.join(", ")}`);
3624
+ mcpSpinner.stop("MCP configured");
3625
+ for (const line of mcpLines)
3626
+ log(` ${line}`);
3622
3627
  }
3623
3628
  log("Done! Your codebase is now searchable via recall.");
3624
3629
  return;
@@ -3777,7 +3782,9 @@ Nothing new to index.`);
3777
3782
  const mcpSpinner = Y2();
3778
3783
  mcpSpinner.start("Configuring MCP...");
3779
3784
  const mcpLines = configureMcp(apiKey, selectedTargets);
3780
- mcpSpinner.stop(`MCP: ${mcpLines.join(", ")}`);
3785
+ mcpSpinner.stop("MCP configured");
3786
+ for (const line of mcpLines)
3787
+ log(` ${line}`);
3781
3788
  }
3782
3789
  if (postIngestIndexPath) {
3783
3790
  const { resolve: resolve2 } = await import("node:path");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conare",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Conare CLI for ingesting AI chat history and configuring memory at conare.ai",
5
5
  "type": "module",
6
6
  "bin": {