cc-claw 0.2.1 → 0.2.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 (3) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +53 -32
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # CC-Claw
2
2
 
3
3
  <p align="center">
4
- <img src="assets/cc_claw.png" alt="CC-Claw Logo" width="300" />
4
+ <img src="assets/cc_claw.png" alt="CC-Claw Logo" width="500" />
5
5
  </p>
6
6
 
7
7
  A personal AI assistant on Telegram, powered by coding CLIs. CC-Claw uses **Claude Code**, **Gemini CLI**, and **Codex** as interchangeable backends — giving you a multi-model AI assistant accessible from any device.
package/dist/cli.js CHANGED
@@ -48,7 +48,7 @@ var VERSION;
48
48
  var init_version = __esm({
49
49
  "src/version.ts"() {
50
50
  "use strict";
51
- VERSION = true ? "0.2.1" : (() => {
51
+ VERSION = true ? "0.2.2" : (() => {
52
52
  try {
53
53
  return JSON.parse(readFileSync(join2(process.cwd(), "package.json"), "utf-8")).version ?? "unknown";
54
54
  } catch {
@@ -13823,38 +13823,52 @@ async function setup() {
13823
13823
  header(3, TOTAL_STEPS, "Backend Configuration");
13824
13824
  console.log(" CC-Claw supports multiple AI backends: Claude, Gemini, and Codex.");
13825
13825
  console.log(" Configure the ones you plan to use. You can add more later.\n");
13826
- const configureVertex = env.CLAUDE_CODE_USE_VERTEX === "1" || await confirm("Configure Claude (Vertex AI)?", true);
13827
- if (configureVertex) {
13826
+ const configureClaude = env.CLAUDE_CODE_USE_VERTEX === "1" || env.ANTHROPIC_API_KEY || await confirm("Configure Claude Code?", true);
13827
+ if (configureClaude) {
13828
13828
  const detectedVertex = process.env.CLAUDE_CODE_USE_VERTEX === "1";
13829
- const detectedRegion = process.env.CLOUD_ML_REGION;
13830
- const detectedProject = process.env.ANTHROPIC_VERTEX_PROJECT_ID;
13831
- if (detectedVertex && detectedProject) {
13829
+ const detectedApiKey = process.env.ANTHROPIC_API_KEY;
13830
+ if (detectedVertex && process.env.ANTHROPIC_VERTEX_PROJECT_ID) {
13832
13831
  console.log(green(" Auto-detected Vertex AI from your environment:"));
13833
- console.log(green(` Project: ${detectedProject}`));
13834
- console.log(green(` Region: ${detectedRegion ?? "global"}`));
13832
+ console.log(green(` Project: ${process.env.ANTHROPIC_VERTEX_PROJECT_ID}`));
13833
+ console.log(green(` Region: ${process.env.CLOUD_ML_REGION ?? "global"}`));
13835
13834
  const useDetected = await confirm("Use these settings?", true);
13836
13835
  if (useDetected) {
13837
13836
  env.CLAUDE_CODE_USE_VERTEX = "1";
13838
- env.CLOUD_ML_REGION = detectedRegion ?? "global";
13839
- env.ANTHROPIC_VERTEX_PROJECT_ID = detectedProject;
13840
- } else {
13841
- delete env.CLAUDE_CODE_USE_VERTEX;
13837
+ env.CLOUD_ML_REGION = process.env.CLOUD_ML_REGION ?? "global";
13838
+ env.ANTHROPIC_VERTEX_PROJECT_ID = process.env.ANTHROPIC_VERTEX_PROJECT_ID;
13839
+ }
13840
+ } else if (detectedApiKey) {
13841
+ console.log(green(" Auto-detected Anthropic API key from your environment."));
13842
+ const useDetected = await confirm("Use it?", true);
13843
+ if (useDetected) {
13844
+ env.ANTHROPIC_API_KEY = detectedApiKey;
13842
13845
  }
13843
13846
  }
13844
- if (!env.CLAUDE_CODE_USE_VERTEX) {
13845
- console.log(dim(" You need a Google Cloud project with the Vertex AI API enabled."));
13846
- console.log(dim(" See: https://docs.anthropic.com/en/docs/build-with-claude/vertex-ai\n"));
13847
- const projectId = await requiredInput(
13848
- "Vertex AI Project ID",
13849
- env.ANTHROPIC_VERTEX_PROJECT_ID
13850
- );
13851
- env.ANTHROPIC_VERTEX_PROJECT_ID = projectId;
13852
- const regionInput = await ask(
13853
- ` Cloud ML Region ${dim(`[${env.CLOUD_ML_REGION ?? "global"}]`)}: `
13854
- );
13855
- env.CLOUD_ML_REGION = regionInput.trim() || env.CLOUD_ML_REGION || "global";
13856
- env.CLAUDE_CODE_USE_VERTEX = "1";
13857
- console.log(green(` Vertex AI configured: ${projectId} (${env.CLOUD_ML_REGION})`));
13847
+ if (!env.CLAUDE_CODE_USE_VERTEX && !env.ANTHROPIC_API_KEY) {
13848
+ console.log(" How do you access Claude Code?\n");
13849
+ console.log(cyan(" 1. Anthropic API key (most common)"));
13850
+ console.log(cyan(" 2. Google Vertex AI (enterprise)"));
13851
+ console.log(cyan(" 3. Skip Claude for now\n"));
13852
+ const choice = await ask(" Choose [1/2/3]: ");
13853
+ if (choice.trim() === "1") {
13854
+ console.log("");
13855
+ console.log(dim(" Get an API key at: https://console.anthropic.com/settings/keys\n"));
13856
+ const apiKey = await requiredInput("Anthropic API key", env.ANTHROPIC_API_KEY);
13857
+ env.ANTHROPIC_API_KEY = apiKey;
13858
+ console.log(green(" Claude configured with API key."));
13859
+ } else if (choice.trim() === "2") {
13860
+ console.log("");
13861
+ console.log(dim(" You need a Google Cloud project with the Vertex AI API enabled."));
13862
+ console.log(dim(" See: https://docs.anthropic.com/en/docs/build-with-claude/vertex-ai\n"));
13863
+ const projectId = await requiredInput("Vertex AI Project ID", env.ANTHROPIC_VERTEX_PROJECT_ID);
13864
+ env.ANTHROPIC_VERTEX_PROJECT_ID = projectId;
13865
+ const regionInput = await ask(` Cloud ML Region ${dim(`[${env.CLOUD_ML_REGION ?? "global"}]`)}: `);
13866
+ env.CLOUD_ML_REGION = regionInput.trim() || env.CLOUD_ML_REGION || "global";
13867
+ env.CLAUDE_CODE_USE_VERTEX = "1";
13868
+ console.log(green(` Vertex AI configured: ${projectId} (${env.CLOUD_ML_REGION})`));
13869
+ } else {
13870
+ console.log(dim(" Skipping Claude. You can configure it later in ~/.cc-claw/.env"));
13871
+ }
13858
13872
  }
13859
13873
  } else {
13860
13874
  console.log(dim(" Skipping Claude. You can configure it later in ~/.cc-claw/.env"));
@@ -13896,13 +13910,20 @@ async function setup() {
13896
13910
  "",
13897
13911
  "# Telegram",
13898
13912
  `TELEGRAM_BOT_TOKEN=${env.TELEGRAM_BOT_TOKEN ?? ""}`,
13899
- `ALLOWED_CHAT_ID=${env.ALLOWED_CHAT_ID ?? ""}`,
13900
- "",
13901
- "# Vertex AI",
13902
- `CLAUDE_CODE_USE_VERTEX=${env.CLAUDE_CODE_USE_VERTEX ?? "1"}`,
13903
- `CLOUD_ML_REGION=${env.CLOUD_ML_REGION ?? "global"}`,
13904
- `ANTHROPIC_VERTEX_PROJECT_ID=${env.ANTHROPIC_VERTEX_PROJECT_ID ?? ""}`
13913
+ `ALLOWED_CHAT_ID=${env.ALLOWED_CHAT_ID ?? ""}`
13905
13914
  ];
13915
+ if (env.ANTHROPIC_API_KEY) {
13916
+ envLines.push("", "# Claude (API key)", `ANTHROPIC_API_KEY=${env.ANTHROPIC_API_KEY}`);
13917
+ }
13918
+ if (env.CLAUDE_CODE_USE_VERTEX === "1") {
13919
+ envLines.push(
13920
+ "",
13921
+ "# Claude (Vertex AI)",
13922
+ `CLAUDE_CODE_USE_VERTEX=1`,
13923
+ `CLOUD_ML_REGION=${env.CLOUD_ML_REGION ?? "global"}`,
13924
+ `ANTHROPIC_VERTEX_PROJECT_ID=${env.ANTHROPIC_VERTEX_PROJECT_ID ?? ""}`
13925
+ );
13926
+ }
13906
13927
  if (env.GROQ_API_KEY) {
13907
13928
  envLines.push("", "# Voice", `GROQ_API_KEY=${env.GROQ_API_KEY}`);
13908
13929
  if (env.ELEVENLABS_API_KEY) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-claw",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "CC-Claw: Personal AI assistant on Telegram — multi-backend (Claude, Gemini, Codex), sub-agent orchestration, MCP management",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",