conare 0.4.1 → 0.4.3

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 +30 -22
  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,
@@ -1523,7 +1523,7 @@ async function selectMcpTargets(targets) {
1523
1523
  return ensureValue(await fe({
1524
1524
  message: "Select where to install the MCP",
1525
1525
  required: false,
1526
- initialValues: targets.filter((target) => target.available !== false).map((target) => target.id),
1526
+ initialValues: targets.filter((target) => target.available !== false && (target.detectedCount ?? 0) > 0).map((target) => target.id),
1527
1527
  options: targets.map((target) => ({
1528
1528
  value: target.id,
1529
1529
  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.");
@@ -3462,8 +3462,10 @@ async function main() {
3462
3462
  apiKey = authResult || apiKey;
3463
3463
  }
3464
3464
  }
3465
- showDetectedApps(interactiveTargets);
3466
- selectedSources = await selectChatSources(interactiveTargets);
3465
+ const INGESTIBLE_SOURCES = new Set(["claude", "codex", "cursor"]);
3466
+ const ingestibleTargets = interactiveTargets.filter((t) => INGESTIBLE_SOURCES.has(t.id));
3467
+ showDetectedApps(ingestibleTargets);
3468
+ selectedSources = await selectChatSources(ingestibleTargets);
3467
3469
  interactiveMode = true;
3468
3470
  }
3469
3471
  if (opts.uninstallSync) {
@@ -3525,8 +3527,10 @@ async function main() {
3525
3527
  if (!opts.dryRun) {
3526
3528
  const mcpSpinner = Y2();
3527
3529
  mcpSpinner.start("Configuring MCP...");
3528
- const lines = configureMcp(apiKey, selectedTargets);
3529
- mcpSpinner.stop(`MCP configured: ${lines.join(", ")}`);
3530
+ const mcpLines = configureMcp(apiKey, selectedTargets);
3531
+ mcpSpinner.stop("MCP configured");
3532
+ for (const line of mcpLines)
3533
+ log(` ${line}`);
3530
3534
  }
3531
3535
  log("");
3532
3536
  log("Done! Conare MCP is configured.");
@@ -3618,7 +3622,9 @@ Nothing new to index.`);
3618
3622
  const mcpSpinner = Y2();
3619
3623
  mcpSpinner.start("Configuring MCP...");
3620
3624
  const mcpLines = configureMcp(apiKey, selectedTargets);
3621
- mcpSpinner.stop(`MCP: ${mcpLines.join(", ")}`);
3625
+ mcpSpinner.stop("MCP configured");
3626
+ for (const line of mcpLines)
3627
+ log(` ${line}`);
3622
3628
  }
3623
3629
  log("Done! Your codebase is now searchable via recall.");
3624
3630
  return;
@@ -3777,7 +3783,9 @@ Nothing new to index.`);
3777
3783
  const mcpSpinner = Y2();
3778
3784
  mcpSpinner.start("Configuring MCP...");
3779
3785
  const mcpLines = configureMcp(apiKey, selectedTargets);
3780
- mcpSpinner.stop(`MCP: ${mcpLines.join(", ")}`);
3786
+ mcpSpinner.stop("MCP configured");
3787
+ for (const line of mcpLines)
3788
+ log(` ${line}`);
3781
3789
  }
3782
3790
  if (postIngestIndexPath) {
3783
3791
  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.3",
4
4
  "description": "Conare CLI for ingesting AI chat history and configuring memory at conare.ai",
5
5
  "type": "module",
6
6
  "bin": {