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.
- package/README.md +1 -1
- package/dist/cli.js +53 -32
- 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="
|
|
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.
|
|
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
|
|
13827
|
-
if (
|
|
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
|
|
13830
|
-
|
|
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: ${
|
|
13834
|
-
console.log(green(` Region: ${
|
|
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 =
|
|
13839
|
-
env.ANTHROPIC_VERTEX_PROJECT_ID =
|
|
13840
|
-
}
|
|
13841
|
-
|
|
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(
|
|
13846
|
-
console.log(
|
|
13847
|
-
|
|
13848
|
-
|
|
13849
|
-
|
|
13850
|
-
)
|
|
13851
|
-
|
|
13852
|
-
|
|
13853
|
-
|
|
13854
|
-
|
|
13855
|
-
|
|
13856
|
-
|
|
13857
|
-
|
|
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