@neomei/opencode-feishu 0.2.6 → 0.2.8

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 (49) hide show
  1. package/dist/core/config.d.ts +3 -3
  2. package/dist/core/config.js +1 -1
  3. package/dist/core/config.js.map +1 -1
  4. package/dist/core/message-handler.d.ts +25 -11
  5. package/dist/core/message-handler.d.ts.map +1 -1
  6. package/dist/core/message-handler.js +589 -102
  7. package/dist/core/message-handler.js.map +1 -1
  8. package/dist/core/session-manager.d.ts +1 -1
  9. package/dist/core/session-manager.d.ts.map +1 -1
  10. package/dist/core/session-manager.js +18 -2
  11. package/dist/core/session-manager.js.map +1 -1
  12. package/dist/core/types.d.ts +35 -2
  13. package/dist/core/types.d.ts.map +1 -1
  14. package/dist/feishu/api.d.ts +6 -0
  15. package/dist/feishu/api.d.ts.map +1 -1
  16. package/dist/feishu/api.js +71 -6
  17. package/dist/feishu/api.js.map +1 -1
  18. package/dist/feishu/card.d.ts +6 -5
  19. package/dist/feishu/card.d.ts.map +1 -1
  20. package/dist/feishu/card.js +185 -120
  21. package/dist/feishu/card.js.map +1 -1
  22. package/dist/feishu/event-source.d.ts +6 -0
  23. package/dist/feishu/event-source.d.ts.map +1 -1
  24. package/dist/feishu/event-source.js +54 -0
  25. package/dist/feishu/event-source.js.map +1 -1
  26. package/dist/opencode/client.d.ts +11 -0
  27. package/dist/opencode/client.d.ts.map +1 -1
  28. package/dist/opencode/client.js +120 -9
  29. package/dist/opencode/client.js.map +1 -1
  30. package/dist/opencode/event-handler.d.ts +14 -1
  31. package/dist/opencode/event-handler.d.ts.map +1 -1
  32. package/dist/opencode/event-handler.js +171 -25
  33. package/dist/opencode/event-handler.js.map +1 -1
  34. package/dist/plugin.d.ts.map +1 -1
  35. package/dist/plugin.js +10 -3
  36. package/dist/plugin.js.map +1 -1
  37. package/dist/services/doc-service.d.ts +11 -45
  38. package/dist/services/doc-service.d.ts.map +1 -1
  39. package/dist/services/doc-service.js +72 -174
  40. package/dist/services/doc-service.js.map +1 -1
  41. package/dist/services/im-service.d.ts.map +1 -1
  42. package/dist/services/im-service.js +10 -6
  43. package/dist/services/im-service.js.map +1 -1
  44. package/dist/standalone.d.ts.map +1 -1
  45. package/dist/standalone.js +10 -3
  46. package/dist/standalone.js.map +1 -1
  47. package/dist/types/extended.d.ts +2 -1
  48. package/dist/types/extended.d.ts.map +1 -1
  49. package/package.json +5 -5
@@ -4,16 +4,48 @@ const TOOL_ICON = {
4
4
  error: '❌',
5
5
  };
6
6
  export class FeishuCard {
7
- static createThinkingCard(botName, dots) {
7
+ static createThinkingCard(botName) {
8
8
  return {
9
9
  config: { wide_screen_mode: true },
10
- elements: [
11
- { tag: 'div', text: { tag: 'lark_md', content: `💭 ${botName}思考中${dots}` } },
12
- ],
10
+ header: {
11
+ title: { tag: 'plain_text', content: `💭 ${botName}思考中...` },
12
+ },
13
+ elements: [],
13
14
  };
14
15
  }
15
16
  static createErrorCard(error) {
16
- 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
+ }
17
49
  const safeError = errorText
18
50
  .replace(/&/g, '&')
19
51
  .replace(/</g, '&lt;')
@@ -32,38 +64,11 @@ export class FeishuCard {
32
64
  };
33
65
  }
34
66
  static createStreamingCard(opts) {
35
- 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';
36
70
  const anyRunning = tools.some(t => t.status === 'running');
37
- if (!showProcess && !interaction && tools.length === 0) {
38
- const headerTitle = done
39
- ? '✅ 完成'
40
- : retry
41
- ? '🔄 重试中...'
42
- : '💭 思考中...';
43
- const elements = [];
44
- if (content) {
45
- elements.push({ tag: 'div', text: { tag: 'lark_md', content } });
46
- }
47
- else if (!done) {
48
- // Animation timer handles dot cycling; show static placeholder here
49
- elements.push({
50
- tag: 'div',
51
- text: { tag: 'lark_md', content: `💭 ${botName}思考中...` },
52
- });
53
- }
54
- if (retry) {
55
- elements.push({ tag: 'hr' });
56
- elements.push({
57
- tag: 'div',
58
- text: { tag: 'lark_md', content: `🔄 **重试中**:${retry}` },
59
- });
60
- }
61
- return {
62
- config: { wide_screen_mode: true },
63
- header: { title: { tag: 'plain_text', content: headerTitle } },
64
- elements,
65
- };
66
- }
71
+ // Determine header title based on state
67
72
  const headerTitle = interaction
68
73
  ? (interaction.kind === 'permission' ? '🔒 等待授权' : '❓ 等待选择')
69
74
  : done
@@ -72,8 +77,11 @@ export class FeishuCard {
72
77
  ? '🔄 重试中...'
73
78
  : anyRunning
74
79
  ? '🔧 执行工具...'
75
- : '💭 思考中...';
80
+ : showThinking && thinkingContent && !content
81
+ ? `💭 ${botName}思考中...`
82
+ : `💭 ${botName}思考中...`;
76
83
  const elements = [];
84
+ // Retry notice
77
85
  if (retry) {
78
86
  elements.push({
79
87
  tag: 'div',
@@ -81,7 +89,8 @@ export class FeishuCard {
81
89
  });
82
90
  elements.push({ tag: 'hr' });
83
91
  }
84
- if (tools.length > 0) {
92
+ // Tools section
93
+ if (showTools && tools.length > 0) {
85
94
  const toolLines = tools
86
95
  .map(t => {
87
96
  const head = `${TOOL_ICON[t.status]} ${t.name}`;
@@ -91,17 +100,59 @@ export class FeishuCard {
91
100
  })
92
101
  .join('\n');
93
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
+ }
94
135
  if (content)
95
136
  elements.push({ tag: 'hr' });
96
137
  }
97
- if (content || (tools.length === 0 && !retry)) {
138
+ // Main content section
139
+ if (content) {
98
140
  elements.push({
99
141
  tag: 'div',
100
- text: { tag: 'lark_md', content: content || '...' },
142
+ text: { tag: 'lark_md', content },
101
143
  });
102
144
  }
145
+ else if (!thinkingContent && !retry && !interaction && tools.length === 0) {
146
+ // Show placeholder when nothing else is displayed
147
+ elements.push({
148
+ tag: 'div',
149
+ text: { tag: 'lark_md', content: '...' },
150
+ });
151
+ }
152
+ // Interaction section (permissions/questions)
103
153
  if (interaction) {
104
- elements.push({ tag: 'hr' });
154
+ if (elements.length > 0)
155
+ elements.push({ tag: 'hr' });
105
156
  if (interaction.kind === 'permission') {
106
157
  const perm = interaction.data;
107
158
  const patterns = perm.patterns.map((p) => `- \`${p}\``).join('\n');
@@ -111,10 +162,33 @@ export class FeishuCard {
111
162
  tag: 'lark_md',
112
163
  content: `**🔒 权限请求:${perm.permission}**\n` +
113
164
  `${perm.title}\n\n` +
114
- `**匹配范围:**\n${patterns || '(未指定)'}\n\n` +
115
- `💬 请回复 \`确认\` / \`始终\` / \`拒绝\``,
165
+ `**匹配范围:**\n${patterns || '(未指定)'}`,
116
166
  },
117
167
  });
168
+ elements.push({
169
+ tag: 'action',
170
+ layout: 'default',
171
+ actions: [
172
+ {
173
+ tag: 'button',
174
+ text: { tag: 'plain_text', content: '✅ 确认' },
175
+ type: 'primary',
176
+ value: { action: 'perm', id: perm.id, reply: 'once' },
177
+ },
178
+ {
179
+ tag: 'button',
180
+ text: { tag: 'plain_text', content: '🔓 始终允许' },
181
+ type: 'default',
182
+ value: { action: 'perm', id: perm.id, reply: 'always' },
183
+ },
184
+ {
185
+ tag: 'button',
186
+ text: { tag: 'plain_text', content: '❌ 拒绝' },
187
+ type: 'default',
188
+ value: { action: 'perm', id: perm.id, reply: 'reject' },
189
+ },
190
+ ],
191
+ });
118
192
  }
119
193
  else {
120
194
  const q = interaction.data;
@@ -130,13 +204,20 @@ export class FeishuCard {
130
204
  text: { tag: 'lark_md', content: question.question },
131
205
  });
132
206
  }
133
- const optionLines = question.options
134
- .map((opt, i) => `${i + 1}. ${opt.label}`)
135
- .join('\n');
136
- elements.push({
137
- tag: 'div',
138
- text: { tag: 'lark_md', content: optionLines },
139
- });
207
+ // Render each option as a clickable button
208
+ for (const [optIdx, opt] of question.options.entries()) {
209
+ elements.push({
210
+ tag: 'action',
211
+ actions: [
212
+ {
213
+ tag: 'button',
214
+ text: { tag: 'plain_text', content: `${optIdx + 1}. ${opt.label}` },
215
+ type: 'default',
216
+ value: { action: 'q', id: q.id, ans: [[opt.label]] },
217
+ },
218
+ ],
219
+ });
220
+ }
140
221
  if (question.multiple) {
141
222
  elements.push({
142
223
  tag: 'div',
@@ -149,13 +230,6 @@ export class FeishuCard {
149
230
  if (idx < q.questions.length - 1)
150
231
  elements.push({ tag: 'hr' });
151
232
  }
152
- elements.push({
153
- tag: 'div',
154
- text: {
155
- tag: 'lark_md',
156
- content: '💬 请回复选项编号或标签',
157
- },
158
- });
159
233
  }
160
234
  }
161
235
  return {
@@ -164,89 +238,80 @@ export class FeishuCard {
164
238
  elements,
165
239
  };
166
240
  }
167
- static createPermissionCard(perm) {
168
- const patterns = perm.patterns.map(p => `- \`${p}\``).join('\n');
169
- const content = `**权限类型:** ${perm.permission}\n\n` +
170
- `**请求内容:**\n${perm.title}\n\n` +
171
- `**匹配范围:**\n${patterns || '(未指定)'}\n\n` +
172
- `---\n\n` +
173
- `💬 **请回复以下指令来响应:**\n` +
174
- `• \`确认\` — 授权一次\n` +
175
- `• \`始终\` — 永久授权\n` +
176
- `• \`拒绝\` — 拒绝授权`;
241
+ static createInteractionRepliedCard(kind, label) {
177
242
  return {
178
243
  config: { wide_screen_mode: true },
179
- header: { title: { tag: 'plain_text', content: '🔒 权限请求' } },
244
+ header: { title: { tag: 'plain_text', content: ' 已处理' } },
180
245
  elements: [
181
- { tag: 'div', text: { tag: 'lark_md', content } },
182
- ],
183
- };
184
- }
185
- static createQuestionCard(q) {
186
- const elements = [];
187
- for (const [idx, question] of q.questions.entries()) {
188
- const header = question.header || question.question.substring(0, 30);
189
- elements.push({
190
- tag: 'div',
191
- text: { tag: 'lark_md', content: `**${idx + 1}. ${header}**` },
192
- });
193
- if (question.question !== header) {
194
- elements.push({
195
- tag: 'div',
196
- text: { tag: 'lark_md', content: question.question },
197
- });
198
- }
199
- const optionLines = question.options
200
- .map((opt, i) => `${i + 1}. ${opt.label}${opt.description ? ` — ${opt.description}` : ''}`)
201
- .join('\n');
202
- elements.push({
203
- tag: 'div',
204
- text: { tag: 'lark_md', content: optionLines },
205
- });
206
- if (question.multiple) {
207
- elements.push({
246
+ {
208
247
  tag: 'div',
209
248
  text: {
210
249
  tag: 'lark_md',
211
- content: '*(此题支持多选,回复时用逗号分隔,如 `1,3`)*',
250
+ content: kind === 'permission'
251
+ ? `已${label === 'reject' ? '拒绝' : label === 'always' ? '永久授权' : '授权一次'}该权限请求。`
252
+ : `已提交选择:${label}`,
212
253
  },
213
- });
214
- }
215
- if (idx < q.questions.length - 1) {
216
- elements.push({ tag: 'hr' });
217
- }
218
- }
219
- elements.push({ tag: 'hr' });
220
- elements.push({
221
- tag: 'div',
222
- text: {
223
- tag: 'lark_md',
224
- content: '💬 **请回复选项编号或标签来回答**\n' +
225
- '(例如回复 `1` 或 `选项A`,多选用 `1,2`)',
226
- },
227
- });
228
- return {
229
- config: { wide_screen_mode: true },
230
- header: { title: { tag: 'plain_text', content: '❓ 请选择' } },
231
- elements,
254
+ },
255
+ ],
232
256
  };
233
257
  }
234
- static createInteractionRepliedCard(kind, label) {
258
+ static createExpiredCard() {
235
259
  return {
236
260
  config: { wide_screen_mode: true },
237
- header: { title: { tag: 'plain_text', content: ' 已处理' } },
261
+ header: { title: { tag: 'plain_text', content: '⏱️ 操作已过期' } },
238
262
  elements: [
239
263
  {
240
264
  tag: 'div',
241
265
  text: {
242
266
  tag: 'lark_md',
243
- content: kind === 'permission'
244
- ? `已${label === 'reject' ? '拒绝' : label === 'always' ? '永久授权' : '授权一次'}该权限请求。`
245
- : `已提交选择:${label}`,
267
+ content: '该操作已过期,请重新发起请求。',
246
268
  },
247
269
  },
248
270
  ],
249
271
  };
250
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
+ }
251
316
  }
252
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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"}
@@ -4,6 +4,7 @@ import type { FeishuAPI } from './api.js';
4
4
  * Long-connection event source backed by Lark.WSClient.
5
5
  *
6
6
  * Emits `message` (FeishuMessage) for every `im.message.receive_v1` event.
7
+ * Emits `cardAction` (FeishuCardAction) for every `card.action.trigger` event.
7
8
  * Emits `error` on fatal WSClient errors. Reconnection is handled internally
8
9
  * by the SDK (autoReconnect=true, ping/pong loop, exponential backoff).
9
10
  */
@@ -13,6 +14,11 @@ export declare class FeishuEventSource extends EventEmitter {
13
14
  private started;
14
15
  constructor(api: FeishuAPI);
15
16
  connect(): Promise<void>;
17
+ /**
18
+ * Emit cardAction and await the first listener's return value.
19
+ * This lets us propagate the card callback response back to Feishu.
20
+ */
21
+ private emitCardAction;
16
22
  disconnect(): Promise<void>;
17
23
  isConnected(): boolean;
18
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-source.d.ts","sourceRoot":"","sources":["../../src/feishu/event-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO1C;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,GAAG,EAAE,SAAS;IAKpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,WAAW,IAAI,OAAO;CAGvB"}
1
+ {"version":3,"file":"event-source.d.ts","sourceRoot":"","sources":["../../src/feishu/event-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAmC1C;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,GAAG,EAAE,SAAS;IAKpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD9B;;;OAGG;YACW,cAAc;IAWtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,WAAW,IAAI,OAAO;CAGvB"}
@@ -3,10 +3,38 @@ import * as Lark from '@larksuiteoapi/node-sdk';
3
3
  import { createLogger } from '../core/logger.js';
4
4
  import { silentLogger } from './silent-logger.js';
5
5
  const log = createLogger('FeishuEventSource');
6
+ /**
7
+ * Parse raw card.action.trigger event data into a normalized FeishuCardAction.
8
+ * Matches the shape produced by Lark SDK's normalizeCardAction().
9
+ */
10
+ function parseCardAction(event) {
11
+ const messageId = event.context?.open_message_id ?? event.open_message_id;
12
+ const chatId = event.context?.open_chat_id ?? event.open_chat_id;
13
+ const operatorOpenId = event.operator?.open_id;
14
+ if (!messageId || !chatId || !operatorOpenId) {
15
+ return null;
16
+ }
17
+ return {
18
+ messageId,
19
+ chatId,
20
+ operator: {
21
+ openId: operatorOpenId,
22
+ userId: event.operator?.user_id,
23
+ name: event.operator?.name,
24
+ },
25
+ action: {
26
+ value: event.action?.value,
27
+ tag: event.action?.tag ?? 'unknown',
28
+ name: event.action?.name,
29
+ option: event.action?.option,
30
+ },
31
+ };
32
+ }
6
33
  /**
7
34
  * Long-connection event source backed by Lark.WSClient.
8
35
  *
9
36
  * Emits `message` (FeishuMessage) for every `im.message.receive_v1` event.
37
+ * Emits `cardAction` (FeishuCardAction) for every `card.action.trigger` event.
10
38
  * Emits `error` on fatal WSClient errors. Reconnection is handled internally
11
39
  * by the SDK (autoReconnect=true, ping/pong loop, exponential backoff).
12
40
  */
@@ -43,6 +71,18 @@ export class FeishuEventSource extends EventEmitter {
43
71
  this.emit('message', message);
44
72
  return { ok: true };
45
73
  },
74
+ 'card.action.trigger': async (data) => {
75
+ const action = parseCardAction(data);
76
+ if (!action) {
77
+ log.warn({ data }, 'Failed to parse card action event');
78
+ return { toast: { type: 'error', content: '无效的操作' } };
79
+ }
80
+ log.info({ chatId: action.chatId, messageId: action.messageId, tag: action.action.tag }, 'Card action triggered');
81
+ // Hand off to the listener (MessageHandler). The return value from
82
+ // the listener is propagated back to Feishu as the card callback response.
83
+ const result = await this.emitCardAction(action);
84
+ return result ?? { toast: { type: 'success', content: '已处理' } };
85
+ },
46
86
  // Suppress SDK warnings for events we intentionally don't handle
47
87
  'im.chat.access_event.bot_p2p_chat_entered_v1': async () => ({ ok: true }),
48
88
  'im.message.message_read_v1': async () => ({ ok: true }),
@@ -60,6 +100,20 @@ export class FeishuEventSource extends EventEmitter {
60
100
  throw err;
61
101
  }
62
102
  }
103
+ /**
104
+ * Emit cardAction and await the first listener's return value.
105
+ * This lets us propagate the card callback response back to Feishu.
106
+ */
107
+ async emitCardAction(action) {
108
+ const listeners = this.listeners('cardAction');
109
+ if (listeners.length === 0) {
110
+ log.warn('No cardAction listener registered');
111
+ return undefined;
112
+ }
113
+ // Await the first listener; EventEmitter normally ignores async returns,
114
+ // but the EventDispatcher.invoke() caller awaits our handler return.
115
+ return listeners[0](action);
116
+ }
63
117
  async disconnect() {
64
118
  if (!this.wsClient)
65
119
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"event-source.js","sourceRoot":"","sources":["../../src/feishu/event-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-source.js","sourceRoot":"","sources":["../../src/feishu/event-source.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare class OpenCodeClient {
7
7
  directory?: string;
8
8
  password?: string;
9
9
  });
10
+ private formatError;
10
11
  createSession(title?: string): Promise<any>;
11
12
  sendPrompt(sessionId: string, text: string, files?: Array<{
12
13
  filePath: string;
@@ -28,6 +29,16 @@ export declare class OpenCodeClient {
28
29
  replyPermission(requestID: string, reply: 'once' | 'always' | 'reject'): Promise<boolean>;
29
30
  replyQuestion(requestID: string, answers: string[][]): Promise<boolean>;
30
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>;
31
42
  getBaseUrl(): string;
32
43
  getDirectory(): string;
33
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;IAmBzE,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;IA4BlI,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;IAclF,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"}