@neomei/opencode-feishu 0.2.7 → 0.2.9

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 (44) hide show
  1. package/dist/cli.js +2 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/core/config.d.ts +6 -3
  4. package/dist/core/config.d.ts.map +1 -1
  5. package/dist/core/config.js +2 -1
  6. package/dist/core/config.js.map +1 -1
  7. package/dist/core/message-handler.d.ts +10 -0
  8. package/dist/core/message-handler.d.ts.map +1 -1
  9. package/dist/core/message-handler.js +331 -5
  10. package/dist/core/message-handler.js.map +1 -1
  11. package/dist/core/opencode-serve-manager.d.ts +34 -0
  12. package/dist/core/opencode-serve-manager.d.ts.map +1 -0
  13. package/dist/core/opencode-serve-manager.js +128 -0
  14. package/dist/core/opencode-serve-manager.js.map +1 -0
  15. package/dist/core/session-manager.d.ts +1 -1
  16. package/dist/core/session-manager.d.ts.map +1 -1
  17. package/dist/core/session-manager.js +18 -2
  18. package/dist/core/session-manager.js.map +1 -1
  19. package/dist/core/types.d.ts +19 -2
  20. package/dist/core/types.d.ts.map +1 -1
  21. package/dist/core/workdir-manager.d.ts +41 -0
  22. package/dist/core/workdir-manager.d.ts.map +1 -0
  23. package/dist/core/workdir-manager.js +122 -0
  24. package/dist/core/workdir-manager.js.map +1 -0
  25. package/dist/feishu/card.d.ts +3 -1
  26. package/dist/feishu/card.d.ts.map +1 -1
  27. package/dist/feishu/card.js +128 -30
  28. package/dist/feishu/card.js.map +1 -1
  29. package/dist/opencode/client.d.ts +10 -0
  30. package/dist/opencode/client.d.ts.map +1 -1
  31. package/dist/opencode/client.js +94 -2
  32. package/dist/opencode/client.js.map +1 -1
  33. package/dist/opencode/event-handler.d.ts +13 -1
  34. package/dist/opencode/event-handler.d.ts.map +1 -1
  35. package/dist/opencode/event-handler.js +89 -9
  36. package/dist/opencode/event-handler.js.map +1 -1
  37. package/dist/plugin.d.ts.map +1 -1
  38. package/dist/plugin.js +8 -0
  39. package/dist/plugin.js.map +1 -1
  40. package/dist/standalone.d.ts +5 -1
  41. package/dist/standalone.d.ts.map +1 -1
  42. package/dist/standalone.js +48 -2
  43. package/dist/standalone.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workdir-manager.js","sourceRoot":"","sources":["../../src/core/workdir-manager.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,16 @@ export declare class FeishuCard {
4
4
  static createErrorCard(error: unknown): CardContent;
5
5
  static createStreamingCard(opts: {
6
6
  content: string;
7
+ thinkingContent?: string;
7
8
  tools?: ToolState[];
8
9
  done?: boolean;
9
10
  retry?: string;
10
- showProcess?: boolean;
11
+ showProcess?: 'none' | 'tools' | 'thinking' | 'full';
11
12
  botName: string;
12
13
  interaction?: PendingInteraction;
13
14
  }): CardContent;
14
15
  static createInteractionRepliedCard(kind: 'permission' | 'question', label: string): CardContent;
15
16
  static createExpiredCard(): CardContent;
17
+ static createNavigationCard(content: string, sessionId: string): CardContent;
16
18
  }
17
19
  //# sourceMappingURL=card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/feishu/card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQnF,qBAAa,UAAU;IACrB,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAUvD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW;IAoBnD,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,kBAAkB,CAAC;KAClC,GAAG,WAAW;IA6Jf,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAmBhG,MAAM,CAAC,iBAAiB,IAAI,WAAW;CAexC"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/feishu/card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQnF,qBAAa,UAAU;IACrB,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAUvD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW;IA8CnD,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;QACrD,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,kBAAkB,CAAC;KAClC,GAAG,WAAW;IAmLf,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAmBhG,MAAM,CAAC,iBAAiB,IAAI,WAAW;IAgBvC,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW;CA2C7E"}
@@ -14,7 +14,38 @@ export class FeishuCard {
14
14
  };
15
15
  }
16
16
  static createErrorCard(error) {
17
- const errorText = typeof error === 'string' ? error : (error instanceof Error ? error.message : String(error));
17
+ let errorText;
18
+ if (typeof error === 'string') {
19
+ errorText = error;
20
+ }
21
+ else if (error instanceof Error) {
22
+ errorText = error.message;
23
+ }
24
+ else if (typeof error === 'object' && error !== null) {
25
+ // Handle object errors (e.g. API response objects)
26
+ try {
27
+ // Try to extract common error fields
28
+ const err = error;
29
+ if (err.message) {
30
+ errorText = err.message;
31
+ }
32
+ else if (err.data?.message) {
33
+ errorText = err.data.message;
34
+ }
35
+ else if (err.error) {
36
+ errorText = typeof err.error === 'string' ? err.error : JSON.stringify(err.error);
37
+ }
38
+ else {
39
+ errorText = JSON.stringify(error);
40
+ }
41
+ }
42
+ catch {
43
+ errorText = String(error);
44
+ }
45
+ }
46
+ else {
47
+ errorText = String(error);
48
+ }
18
49
  const safeError = errorText
19
50
  .replace(/&/g, '&')
20
51
  .replace(/</g, '&lt;')
@@ -33,32 +64,11 @@ export class FeishuCard {
33
64
  };
34
65
  }
35
66
  static createStreamingCard(opts) {
36
- const { content, tools = [], done = false, retry, showProcess = false, botName, interaction } = opts;
67
+ const { content, thinkingContent = '', tools = [], done = false, retry, showProcess = 'none', botName, interaction } = opts;
68
+ const showTools = showProcess === 'tools' || showProcess === 'full';
69
+ const showThinking = showProcess === 'thinking' || showProcess === 'full';
37
70
  const anyRunning = tools.some(t => t.status === 'running');
38
- if (!showProcess && !interaction && tools.length === 0) {
39
- const headerTitle = done
40
- ? '✅ 完成'
41
- : retry
42
- ? '🔄 重试中...'
43
- : `💭 ${botName}思考中...`;
44
- const elements = [];
45
- if (content) {
46
- elements.push({ tag: 'div', text: { tag: 'lark_md', content } });
47
- }
48
- if (retry) {
49
- if (elements.length > 0)
50
- elements.push({ tag: 'hr' });
51
- elements.push({
52
- tag: 'div',
53
- text: { tag: 'lark_md', content: `🔄 **重试中**:${retry}` },
54
- });
55
- }
56
- return {
57
- config: { wide_screen_mode: true },
58
- header: { title: { tag: 'plain_text', content: headerTitle } },
59
- elements,
60
- };
61
- }
71
+ // Determine header title based on state
62
72
  const headerTitle = interaction
63
73
  ? (interaction.kind === 'permission' ? '🔒 等待授权' : '❓ 等待选择')
64
74
  : done
@@ -67,8 +77,11 @@ export class FeishuCard {
67
77
  ? '🔄 重试中...'
68
78
  : anyRunning
69
79
  ? '🔧 执行工具...'
70
- : '💭 思考中...';
80
+ : showThinking && thinkingContent && !content
81
+ ? `💭 ${botName}思考中...`
82
+ : `💭 ${botName}思考中...`;
71
83
  const elements = [];
84
+ // Retry notice
72
85
  if (retry) {
73
86
  elements.push({
74
87
  tag: 'div',
@@ -76,7 +89,8 @@ export class FeishuCard {
76
89
  });
77
90
  elements.push({ tag: 'hr' });
78
91
  }
79
- if (tools.length > 0) {
92
+ // Tools section
93
+ if (showTools && tools.length > 0) {
80
94
  const toolLines = tools
81
95
  .map(t => {
82
96
  const head = `${TOOL_ICON[t.status]} ${t.name}`;
@@ -86,15 +100,56 @@ export class FeishuCard {
86
100
  })
87
101
  .join('\n');
88
102
  elements.push({ tag: 'div', text: { tag: 'lark_md', content: toolLines } });
103
+ if (thinkingContent || content)
104
+ elements.push({ tag: 'hr' });
105
+ }
106
+ // Thinking section (collapsible when done)
107
+ if (showThinking && thinkingContent) {
108
+ if (done) {
109
+ // Collapsible thinking section when done
110
+ elements.push({
111
+ tag: 'div',
112
+ text: {
113
+ tag: 'lark_md',
114
+ content: `<font color='grey'>💡 *思考过程(点击展开)*</font>`,
115
+ },
116
+ });
117
+ elements.push({
118
+ tag: 'div',
119
+ text: {
120
+ tag: 'lark_md',
121
+ content: `<font color='grey'>${thinkingContent}</font>`,
122
+ },
123
+ });
124
+ }
125
+ else {
126
+ // Show thinking inline while streaming
127
+ elements.push({
128
+ tag: 'div',
129
+ text: {
130
+ tag: 'lark_md',
131
+ content: `<font color='grey'>💭 ${thinkingContent}</font>`,
132
+ },
133
+ });
134
+ }
89
135
  if (content)
90
136
  elements.push({ tag: 'hr' });
91
137
  }
92
- if (content || (tools.length === 0 && !retry && !interaction)) {
138
+ // Main content section
139
+ if (content) {
140
+ elements.push({
141
+ tag: 'div',
142
+ text: { tag: 'lark_md', content },
143
+ });
144
+ }
145
+ else if (!thinkingContent && !retry && !interaction && tools.length === 0) {
146
+ // Show placeholder when nothing else is displayed
93
147
  elements.push({
94
148
  tag: 'div',
95
- text: { tag: 'lark_md', content: content || '...' },
149
+ text: { tag: 'lark_md', content: '...' },
96
150
  });
97
151
  }
152
+ // Interaction section (permissions/questions)
98
153
  if (interaction) {
99
154
  if (elements.length > 0)
100
155
  elements.push({ tag: 'hr' });
@@ -215,5 +270,48 @@ export class FeishuCard {
215
270
  ],
216
271
  };
217
272
  }
273
+ static createNavigationCard(content, sessionId) {
274
+ return {
275
+ config: { wide_screen_mode: true },
276
+ header: { title: { tag: 'plain_text', content: '📄 内容浏览' } },
277
+ elements: [
278
+ {
279
+ tag: 'div',
280
+ text: { tag: 'lark_md', content },
281
+ },
282
+ { tag: 'hr' },
283
+ {
284
+ tag: 'action',
285
+ layout: 'default',
286
+ actions: [
287
+ {
288
+ tag: 'button',
289
+ text: { tag: 'plain_text', content: '⬆️ 上一页' },
290
+ type: 'default',
291
+ value: { action: 'nav', cmd: 'session.page.up', sessionId },
292
+ },
293
+ {
294
+ tag: 'button',
295
+ text: { tag: 'plain_text', content: '⬇️ 下一页' },
296
+ type: 'default',
297
+ value: { action: 'nav', cmd: 'session.page.down', sessionId },
298
+ },
299
+ {
300
+ tag: 'button',
301
+ text: { tag: 'plain_text', content: '⏫ 首页' },
302
+ type: 'default',
303
+ value: { action: 'nav', cmd: 'session.first', sessionId },
304
+ },
305
+ {
306
+ tag: 'button',
307
+ text: { tag: 'plain_text', content: '⏬ 尾页' },
308
+ type: 'default',
309
+ value: { action: 'nav', cmd: 'session.last', sessionId },
310
+ },
311
+ ],
312
+ },
313
+ ],
314
+ };
315
+ }
218
316
  }
219
317
  //# sourceMappingURL=card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/feishu/card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/feishu/card.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,16 @@ export declare class OpenCodeClient {
29
29
  replyPermission(requestID: string, reply: 'once' | 'always' | 'reject'): Promise<boolean>;
30
30
  replyQuestion(requestID: string, answers: string[][]): Promise<boolean>;
31
31
  sendCommand(sessionId: string, command: string, args?: string): Promise<any>;
32
+ executeTuiCommand(command: string): Promise<any>;
33
+ getProviders(): Promise<any>;
34
+ getAgents(): Promise<any>;
35
+ getCommands(): Promise<any>;
36
+ getSessions(): Promise<any>;
37
+ getTools(): Promise<any>;
38
+ getWorktrees(): Promise<any>;
39
+ getFiles(path?: string): Promise<any>;
40
+ getStatus(): Promise<any>;
41
+ getConfig(): Promise<any>;
32
42
  getBaseUrl(): string;
33
43
  getDirectory(): string;
34
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAmB/E,OAAO,CAAC,WAAW;IAcb,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAY3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8BlI,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAK/B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAU7D,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAU9B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAazF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAavE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAelF,UAAU,IAAI,MAAM;IAIpB,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAmB/E,OAAO,CAAC,WAAW;IAcb,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAY3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8BlI,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAK/B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAU7D,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAU9B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAazF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAavE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAe5E,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAahD,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAY5B,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAYzB,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAY3B,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAY3B,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAYxB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAY5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAarC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAYzB,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAY/B,UAAU,IAAI,MAAM;IAIpB,YAAY,IAAI,MAAM;CAGvB"}
@@ -134,8 +134,100 @@ export class OpenCodeClient {
134
134
  arguments: args || '',
135
135
  });
136
136
  if (error) {
137
- const msg = typeof error === 'string' ? error : JSON.stringify(error);
138
- throw new Error(`Failed to send command: ${msg}`);
137
+ // Pass the original error object so the caller can extract meaningful messages
138
+ throw error;
139
+ }
140
+ return data;
141
+ }
142
+ async executeTuiCommand(command) {
143
+ const { data, error } = await this.client.tui.executeCommand({
144
+ directory: this.directory,
145
+ command,
146
+ });
147
+ if (error) {
148
+ throw new Error(`Failed to execute TUI command: ${this.formatError(error)}`);
149
+ }
150
+ return data;
151
+ }
152
+ async getProviders() {
153
+ const { data, error } = await this.client.config.providers({
154
+ directory: this.directory,
155
+ });
156
+ if (error) {
157
+ throw new Error(`Failed to get providers: ${this.formatError(error)}`);
158
+ }
159
+ return data;
160
+ }
161
+ async getAgents() {
162
+ const { data, error } = await this.client.app.agents({
163
+ directory: this.directory,
164
+ });
165
+ if (error) {
166
+ throw new Error(`Failed to get agents: ${this.formatError(error)}`);
167
+ }
168
+ return data;
169
+ }
170
+ async getCommands() {
171
+ const { data, error } = await this.client.command.list({
172
+ directory: this.directory,
173
+ });
174
+ if (error) {
175
+ throw new Error(`Failed to get commands: ${this.formatError(error)}`);
176
+ }
177
+ return data;
178
+ }
179
+ async getSessions() {
180
+ const { data, error } = await this.client.session.list({
181
+ directory: this.directory,
182
+ });
183
+ if (error) {
184
+ throw new Error(`Failed to get sessions: ${this.formatError(error)}`);
185
+ }
186
+ return data;
187
+ }
188
+ async getTools() {
189
+ const { data, error } = await this.client.tool.ids({
190
+ directory: this.directory,
191
+ });
192
+ if (error) {
193
+ throw new Error(`Failed to get tools: ${this.formatError(error)}`);
194
+ }
195
+ return data;
196
+ }
197
+ async getWorktrees() {
198
+ const { data, error } = await this.client.worktree.list({
199
+ directory: this.directory,
200
+ });
201
+ if (error) {
202
+ throw new Error(`Failed to get worktrees: ${this.formatError(error)}`);
203
+ }
204
+ return data;
205
+ }
206
+ async getFiles(path) {
207
+ const { data, error } = await this.client.file.list({
208
+ directory: this.directory,
209
+ path: path || '.',
210
+ });
211
+ if (error) {
212
+ throw new Error(`Failed to get files: ${this.formatError(error)}`);
213
+ }
214
+ return data;
215
+ }
216
+ async getStatus() {
217
+ const { data, error } = await this.client.file.status({
218
+ directory: this.directory,
219
+ });
220
+ if (error) {
221
+ throw new Error(`Failed to get status: ${this.formatError(error)}`);
222
+ }
223
+ return data;
224
+ }
225
+ async getConfig() {
226
+ const { data, error } = await this.client.config.get({
227
+ directory: this.directory,
228
+ });
229
+ if (error) {
230
+ throw new Error(`Failed to get config: ${this.formatError(error)}`);
139
231
  }
140
232
  return data;
141
233
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,25 @@ export declare class OpenCodeEventHandler {
9
9
  private opencodeUrl;
10
10
  private showProcess;
11
11
  private botName;
12
- constructor(sessionManager: SessionManager, feishuApi: FeishuAPI, hookManager?: HookManager, opencodeUrl?: string, showProcess?: boolean, botName?: string);
12
+ constructor(sessionManager: SessionManager, feishuApi: FeishuAPI, hookManager?: HookManager, opencodeUrl?: string, showProcess?: 'none' | 'tools' | 'thinking' | 'full', botName?: string);
13
+ /**
14
+ * Check if thinking content should be shown based on showProcess config.
15
+ */
16
+ private shouldShowThinking;
17
+ /**
18
+ * Check if tools should be shown based on showProcess config.
19
+ */
20
+ private shouldShowTools;
13
21
  start(eventStream: {
14
22
  stream: AsyncGenerator<any, void, unknown>;
15
23
  }): Promise<void>;
16
24
  stop(): void;
17
25
  private handleEvent;
18
26
  private handleTextDelta;
27
+ /**
28
+ * Determine if a field should be displayed based on showProcess config.
29
+ */
30
+ private shouldShowField;
19
31
  private handlePartUpdate;
20
32
  private handleStatusChange;
21
33
  private handleError;
@@ -1 +1 @@
1
- {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../src/opencode/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQ3D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAEtB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,UAAQ,EACnB,OAAO,SAAO;IAUV,KAAK,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvF,IAAI,IAAI,IAAI;YAKE,WAAW;YAoDX,eAAe;YAsBf,gBAAgB;YA0ChB,kBAAkB;YAsClB,WAAW;YAkBX,iBAAiB;YAkCjB,qBAAqB;YA4BrB,uBAAuB;YAiBvB,mBAAmB;YA6BnB,qBAAqB;YAerB,sBAAsB;YAatB,qBAAqB;IAmBnC;;;;;OAKG;YACW,SAAS;CAoExB"}
1
+ {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../src/opencode/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQ3D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,OAAO,CAAS;gBAEtB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,GAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAe,EAC5D,OAAO,SAAO;IAUhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIjB,KAAK,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvF,IAAI,IAAI,IAAI;YAKE,WAAW;YAoDX,eAAe;IA0C7B;;OAEG;IACH,OAAO,CAAC,eAAe;YAcT,gBAAgB;YA0ChB,kBAAkB;YAsClB,WAAW;YA8BX,iBAAiB;YAkCjB,qBAAqB;YA4BrB,uBAAuB;YAyBvB,mBAAmB;YA6BnB,qBAAqB;YAsBrB,sBAAsB;YAoBtB,qBAAqB;IAmBnC;;;;;OAKG;YACW,SAAS;CAsExB"}
@@ -10,7 +10,7 @@ export class OpenCodeEventHandler {
10
10
  opencodeUrl;
11
11
  showProcess;
12
12
  botName;
13
- constructor(sessionManager, feishuApi, hookManager, opencodeUrl, showProcess = false, botName = '点点') {
13
+ constructor(sessionManager, feishuApi, hookManager, opencodeUrl, showProcess = 'none', botName = '点点') {
14
14
  this.sessionManager = sessionManager;
15
15
  this.feishuApi = feishuApi;
16
16
  this.hookManager = hookManager;
@@ -18,6 +18,18 @@ export class OpenCodeEventHandler {
18
18
  this.showProcess = showProcess;
19
19
  this.botName = botName;
20
20
  }
21
+ /**
22
+ * Check if thinking content should be shown based on showProcess config.
23
+ */
24
+ shouldShowThinking() {
25
+ return this.showProcess === 'thinking' || this.showProcess === 'full';
26
+ }
27
+ /**
28
+ * Check if tools should be shown based on showProcess config.
29
+ */
30
+ shouldShowTools() {
31
+ return this.showProcess === 'tools' || this.showProcess === 'full';
32
+ }
21
33
  async start(eventStream) {
22
34
  if (this.isRunning) {
23
35
  log.warn('Already running');
@@ -98,20 +110,56 @@ export class OpenCodeEventHandler {
98
110
  async handleTextDelta(properties) {
99
111
  if (!properties)
100
112
  return;
101
- // In quiet mode, skip non-content fields (reasoning/thinking)
102
- log.info({ field: properties.field, partID: properties.partID?.substring(0, 20), deltaLen: properties.delta?.length, deltaPreview: properties.delta?.substring(0, 80) }, 'Text delta');
103
- if (!this.showProcess && properties.field && properties.field !== 'text') {
113
+ // Handle non-string delta (e.g. object, array) by converting to string
114
+ let deltaStr;
115
+ if (typeof properties.delta === 'string') {
116
+ deltaStr = properties.delta;
117
+ }
118
+ else if (properties.delta === null || properties.delta === undefined) {
119
+ deltaStr = '';
120
+ }
121
+ else if (typeof properties.delta === 'object') {
122
+ // If it's an object, try to extract text content or stringify
123
+ deltaStr = properties.delta.text || properties.delta.content || JSON.stringify(properties.delta);
124
+ }
125
+ else {
126
+ deltaStr = String(properties.delta);
127
+ }
128
+ // Skip empty deltas
129
+ if (!deltaStr) {
104
130
  return;
105
131
  }
132
+ log.info({ field: properties.field, partID: properties.partID?.substring(0, 20), deltaLen: deltaStr.length, deltaPreview: deltaStr.substring(0, 80) }, 'Text delta');
106
133
  const chatId = this.sessionManager.getChatIdBySession(properties.sessionID);
107
134
  if (!chatId)
108
135
  return;
109
- this.sessionManager.appendContent(chatId, properties.delta, properties.partID);
136
+ // Determine if we should show this field based on showProcess config
137
+ const shouldShowField = this.shouldShowField(properties.field);
138
+ if (!shouldShowField) {
139
+ return;
140
+ }
141
+ this.sessionManager.appendContent(chatId, deltaStr, properties.partID, properties.field);
110
142
  await this.flushCard(chatId);
111
143
  }
144
+ /**
145
+ * Determine if a field should be displayed based on showProcess config.
146
+ */
147
+ shouldShowField(field) {
148
+ switch (this.showProcess) {
149
+ case 'full':
150
+ return true;
151
+ case 'thinking':
152
+ return field === 'text' || field === 'thinking' || field === 'reasoning';
153
+ case 'tools':
154
+ return field === 'text' || !field;
155
+ case 'none':
156
+ default:
157
+ return !field || field === 'text';
158
+ }
159
+ }
112
160
  async handlePartUpdate(properties) {
113
- // Skip tool display in quiet mode
114
- if (!this.showProcess)
161
+ // Skip tool display if not showing tools
162
+ if (!this.shouldShowTools())
115
163
  return;
116
164
  const { part } = properties;
117
165
  if (part?.type !== 'tool')
@@ -187,8 +235,19 @@ export class OpenCodeEventHandler {
187
235
  const chatId = this.sessionManager.getChatIdBySession(properties.sessionID);
188
236
  if (!chatId)
189
237
  return;
190
- await this.feishuApi.sendCard(chatId, FeishuCard.createErrorCard(properties.error));
238
+ // If the session is already idle or error was already handled,
239
+ // the error was likely already handled by MessageHandler.
240
+ // Avoid sending a duplicate error card.
191
241
  const session = this.sessionManager.getSession(chatId);
242
+ if (session?.status === 'idle') {
243
+ log.info({ chatId, sessionId: properties.sessionID }, 'Session already idle, skipping duplicate error card');
244
+ return;
245
+ }
246
+ if (session?.errorHandled) {
247
+ log.info({ chatId, sessionId: properties.sessionID }, 'Error already handled, skipping duplicate error card');
248
+ return;
249
+ }
250
+ await this.feishuApi.sendCard(chatId, FeishuCard.createErrorCard(properties.error));
192
251
  if (session) {
193
252
  session.tools = undefined;
194
253
  session.retryMessage = undefined;
@@ -263,6 +322,13 @@ export class OpenCodeEventHandler {
263
322
  if (hadPending) {
264
323
  await this.flushCard(chatId, { force: true });
265
324
  }
325
+ // Clear interactionReplied flag so subsequent AI streaming output can update the card.
326
+ // The confirmation state has already been shown; now we need to allow the AI to continue.
327
+ const session = this.sessionManager.getSession(chatId);
328
+ if (session) {
329
+ session.interactionReplied = undefined;
330
+ log.info({ chatId }, 'Cleared interactionReplied to allow AI streaming');
331
+ }
266
332
  }
267
333
  async handleQuestionAsked(properties) {
268
334
  const chatId = this.sessionManager.getChatIdBySession(properties.sessionID);
@@ -302,6 +368,12 @@ export class OpenCodeEventHandler {
302
368
  if (hadPending) {
303
369
  await this.flushCard(chatId, { force: true });
304
370
  }
371
+ // Clear interactionReplied flag so subsequent AI streaming output can update the card.
372
+ const session = this.sessionManager.getSession(chatId);
373
+ if (session) {
374
+ session.interactionReplied = undefined;
375
+ log.info({ chatId }, 'Cleared interactionReplied to allow AI streaming');
376
+ }
305
377
  }
306
378
  async handleQuestionRejected(properties) {
307
379
  const chatId = this.sessionManager.getChatIdBySession(properties.sessionID);
@@ -313,6 +385,12 @@ export class OpenCodeEventHandler {
313
385
  if (hadPending) {
314
386
  await this.flushCard(chatId, { force: true });
315
387
  }
388
+ // Clear interactionReplied flag so subsequent AI streaming output can update the card.
389
+ const session = this.sessionManager.getSession(chatId);
390
+ if (session) {
391
+ session.interactionReplied = undefined;
392
+ log.info({ chatId }, 'Cleared interactionReplied to allow AI streaming');
393
+ }
316
394
  }
317
395
  async handleCommandExecuted(properties) {
318
396
  const chatId = this.sessionManager.getChatIdBySession(properties.sessionID);
@@ -348,11 +426,13 @@ export class OpenCodeEventHandler {
348
426
  // don't race against each other and update different messages.
349
427
  const targetMessageId = session.currentMessageId;
350
428
  const content = session.currentContent || '';
351
- const tools = this.showProcess ? (session.tools || []) : [];
429
+ const thinkingContent = this.shouldShowThinking() ? (session.thinkingContent || '') : '';
430
+ const tools = this.shouldShowTools() ? (session.tools || []) : [];
352
431
  const interaction = session.pendingInteraction;
353
432
  log.info({ chatId, hasInteraction: !!interaction, interactionKind: interaction?.kind, targetMessageId, force: opts.force, done: opts.done }, 'flushCard');
354
433
  const card = FeishuCard.createStreamingCard({
355
434
  content,
435
+ thinkingContent,
356
436
  tools,
357
437
  done: !!opts.done,
358
438
  retry: session.retryMessage,