feishu-bridge 1.0.4 → 1.0.6
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 +33 -0
- package/dist/cli/index.js +35 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +35 -7
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.js +35 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,6 +48,39 @@ npm link
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
+
## 🔄 更新与卸载
|
|
52
|
+
|
|
53
|
+
### 更新到最新版本
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# 查看当前版本
|
|
57
|
+
feishu-bridge --version
|
|
58
|
+
|
|
59
|
+
# 更新到最新版本
|
|
60
|
+
npm update -g feishu-bridge
|
|
61
|
+
|
|
62
|
+
# 或重新安装最新版本
|
|
63
|
+
npm install -g feishu-bridge@latest
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 完全卸载
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# 1. 停止服务(如果正在运行)
|
|
70
|
+
feishu-bridge daemon stop
|
|
71
|
+
|
|
72
|
+
# 2. 卸载 npm 包
|
|
73
|
+
npm uninstall -g feishu-bridge
|
|
74
|
+
|
|
75
|
+
# 3. 清理配置文件(可选)
|
|
76
|
+
rm -rf ~/.config/feishu-bridge
|
|
77
|
+
|
|
78
|
+
# 4. 卸载 Shell Hook(如果已安装)
|
|
79
|
+
curl -fsSL https://install.feishu-bridge.dev/hook.sh | bash -s uninstall
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
51
84
|
## 🚀 快速开始
|
|
52
85
|
|
|
53
86
|
### 1. 配置飞书应用
|
package/dist/cli/index.js
CHANGED
|
@@ -2441,6 +2441,7 @@ var KiroAdapter = class extends BaseIDEAdapter {
|
|
|
2441
2441
|
};
|
|
2442
2442
|
|
|
2443
2443
|
// src/adapters/opencode.ts
|
|
2444
|
+
var import_execa6 = require("execa");
|
|
2444
2445
|
var import_child_process = require("child_process");
|
|
2445
2446
|
var net = __toESM(require("net"));
|
|
2446
2447
|
var fs7 = __toESM(require("fs"));
|
|
@@ -2450,6 +2451,8 @@ var OpenCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2450
2451
|
constructor() {
|
|
2451
2452
|
super(...arguments);
|
|
2452
2453
|
this.type = "opencode";
|
|
2454
|
+
this.ideType = "opencode";
|
|
2455
|
+
this.ideName = "OpenCode";
|
|
2453
2456
|
this.useSocket = false;
|
|
2454
2457
|
this.messageId = 0;
|
|
2455
2458
|
this.pendingMessages = /* @__PURE__ */ new Map();
|
|
@@ -2462,6 +2465,17 @@ var OpenCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2462
2465
|
async checkAvailability() {
|
|
2463
2466
|
return this.checkAvailabilitySync();
|
|
2464
2467
|
}
|
|
2468
|
+
async isInstalled() {
|
|
2469
|
+
return this.checkAvailabilitySync();
|
|
2470
|
+
}
|
|
2471
|
+
async getVersion() {
|
|
2472
|
+
try {
|
|
2473
|
+
const { stdout } = await (0, import_execa6.execa)("opencode", ["--version"]);
|
|
2474
|
+
return stdout.trim();
|
|
2475
|
+
} catch {
|
|
2476
|
+
return "unknown";
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2465
2479
|
checkCLIExists() {
|
|
2466
2480
|
try {
|
|
2467
2481
|
const { execSync } = require("child_process");
|
|
@@ -2652,10 +2666,21 @@ var OpenCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2652
2666
|
};
|
|
2653
2667
|
}
|
|
2654
2668
|
}
|
|
2669
|
+
async getAvailableModels() {
|
|
2670
|
+
return [
|
|
2671
|
+
"claude-3-5-sonnet-20241022",
|
|
2672
|
+
"claude-3-opus-20240229",
|
|
2673
|
+
"claude-3-haiku-20240307"
|
|
2674
|
+
];
|
|
2675
|
+
}
|
|
2676
|
+
async executeAI(prompt) {
|
|
2677
|
+
const content = await this.getAIResponse(prompt);
|
|
2678
|
+
return { content, model: "claude-3-5-sonnet" };
|
|
2679
|
+
}
|
|
2655
2680
|
};
|
|
2656
2681
|
|
|
2657
2682
|
// src/adapters/claude-code.ts
|
|
2658
|
-
var
|
|
2683
|
+
var import_execa7 = require("execa");
|
|
2659
2684
|
var fs8 = __toESM(require("fs"));
|
|
2660
2685
|
var path8 = __toESM(require("path"));
|
|
2661
2686
|
var os8 = __toESM(require("os"));
|
|
@@ -2675,7 +2700,7 @@ var ClaudeCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2675
2700
|
findClaudeExecutable() {
|
|
2676
2701
|
const platform5 = os8.platform();
|
|
2677
2702
|
try {
|
|
2678
|
-
const result =
|
|
2703
|
+
const result = import_execa7.execa.sync("claude", ["--version"], { reject: false });
|
|
2679
2704
|
if (result.exitCode === 0) {
|
|
2680
2705
|
return "claude";
|
|
2681
2706
|
}
|
|
@@ -2716,7 +2741,7 @@ var ClaudeCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2716
2741
|
this.logger.info(`Sending command to Claude Code: ${command}`);
|
|
2717
2742
|
if (this.claudePath) {
|
|
2718
2743
|
try {
|
|
2719
|
-
const result = await (0,
|
|
2744
|
+
const result = await (0, import_execa7.execa)(this.claudePath, [
|
|
2720
2745
|
"execute",
|
|
2721
2746
|
"--command",
|
|
2722
2747
|
command
|
|
@@ -2780,7 +2805,7 @@ var ClaudeCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2780
2805
|
this.logger.info(`Getting AI response from Claude Code for prompt: ${prompt}`);
|
|
2781
2806
|
if (this.claudePath) {
|
|
2782
2807
|
try {
|
|
2783
|
-
const result = await (0,
|
|
2808
|
+
const result = await (0, import_execa7.execa)(this.claudePath, [
|
|
2784
2809
|
"ask",
|
|
2785
2810
|
"--prompt",
|
|
2786
2811
|
prompt
|
|
@@ -2845,7 +2870,7 @@ var ClaudeCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2845
2870
|
}
|
|
2846
2871
|
async runProgram(command, cwd) {
|
|
2847
2872
|
try {
|
|
2848
|
-
const result = await
|
|
2873
|
+
const result = await import_execa7.execa.command(command, {
|
|
2849
2874
|
cwd: cwd || process.cwd(),
|
|
2850
2875
|
shell: true,
|
|
2851
2876
|
timeout: 6e4,
|
|
@@ -2874,7 +2899,7 @@ var ClaudeCodeAdapter = class extends BaseIDEAdapter {
|
|
|
2874
2899
|
|
|
2875
2900
|
// src/adapters/gemini-cli.ts
|
|
2876
2901
|
var import_child_process2 = require("child_process");
|
|
2877
|
-
var
|
|
2902
|
+
var import_execa8 = require("execa");
|
|
2878
2903
|
var GeminiCLIAdapter = class extends BaseIDEAdapter {
|
|
2879
2904
|
constructor() {
|
|
2880
2905
|
super(...arguments);
|
|
@@ -2893,6 +2918,9 @@ var GeminiCLIAdapter = class extends BaseIDEAdapter {
|
|
|
2893
2918
|
async checkAvailability() {
|
|
2894
2919
|
return this.checkAvailabilitySync();
|
|
2895
2920
|
}
|
|
2921
|
+
async isInstalled() {
|
|
2922
|
+
return this.checkAvailabilitySync();
|
|
2923
|
+
}
|
|
2896
2924
|
async activate() {
|
|
2897
2925
|
const available = await this.checkAvailability();
|
|
2898
2926
|
if (!available) {
|
|
@@ -3000,7 +3028,7 @@ var GeminiCLIAdapter = class extends BaseIDEAdapter {
|
|
|
3000
3028
|
*/
|
|
3001
3029
|
async getVersion() {
|
|
3002
3030
|
try {
|
|
3003
|
-
const result = await (0,
|
|
3031
|
+
const result = await (0, import_execa8.execa)(this.cliPath, ["version"]);
|
|
3004
3032
|
return result.stdout;
|
|
3005
3033
|
} catch {
|
|
3006
3034
|
return "unknown";
|