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 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 import_execa6 = require("execa");
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 = import_execa6.execa.sync("claude", ["--version"], { reject: false });
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, import_execa6.execa)(this.claudePath, [
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, import_execa6.execa)(this.claudePath, [
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 import_execa6.execa.command(command, {
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 import_execa7 = require("execa");
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, import_execa7.execa)(this.cliPath, ["version"]);
3031
+ const result = await (0, import_execa8.execa)(this.cliPath, ["version"]);
3004
3032
  return result.stdout;
3005
3033
  } catch {
3006
3034
  return "unknown";