@yu_robotics/remote-cli-router 1.0.1 → 1.0.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.
@@ -16,12 +16,14 @@ class JsonStore {
16
16
  data;
17
17
  saveTimer = null;
18
18
  SAVE_DELAY = 1000; // Debounce saves by 1 second
19
+ static CURRENT_VERSION = 1;
19
20
  constructor(storePath) {
20
21
  this.storePath = storePath || path_1.default.join(os_1.default.homedir(), '.remote-cli-router', 'bindings.json');
21
22
  this.data = {
23
+ version: JsonStore.CURRENT_VERSION,
22
24
  bindingCodes: {},
23
25
  userBindings: {},
24
- deviceBindings: {},
26
+ deviceToUserMap: {},
25
27
  };
26
28
  }
27
29
  /**
@@ -34,7 +36,14 @@ class JsonStore {
34
36
  // Try to load existing data
35
37
  try {
36
38
  const content = await promises_1.default.readFile(this.storePath, 'utf-8');
37
- this.data = JSON.parse(content);
39
+ const rawData = JSON.parse(content);
40
+ // Check if migration is needed
41
+ if (!rawData.version) {
42
+ await this.migrateFromLegacy(rawData);
43
+ }
44
+ else {
45
+ this.data = rawData;
46
+ }
38
47
  // Clean up expired binding codes on startup
39
48
  this.cleanupExpiredBindingCodes();
40
49
  }
@@ -51,10 +60,42 @@ class JsonStore {
51
60
  throw error;
52
61
  }
53
62
  }
63
+ /**
64
+ * Migrate from legacy single-device schema to multi-device schema
65
+ */
66
+ async migrateFromLegacy(rawData) {
67
+ console.log('[JsonStore] Migrating legacy binding data to multi-device schema...');
68
+ const legacyUserBindings = (rawData.userBindings || {});
69
+ const newUserBindings = {};
70
+ const deviceToUserMap = {};
71
+ const now = Date.now();
72
+ for (const [openId, legacy] of Object.entries(legacyUserBindings)) {
73
+ newUserBindings[openId] = {
74
+ openId,
75
+ devices: [{
76
+ deviceId: legacy.deviceId,
77
+ deviceName: legacy.deviceName,
78
+ boundAt: legacy.boundAt,
79
+ lastActiveAt: legacy.lastActiveAt,
80
+ isActive: true,
81
+ }],
82
+ activeDeviceId: legacy.deviceId,
83
+ createdAt: legacy.boundAt,
84
+ updatedAt: now,
85
+ };
86
+ deviceToUserMap[legacy.deviceId] = openId;
87
+ }
88
+ this.data = {
89
+ version: JsonStore.CURRENT_VERSION,
90
+ bindingCodes: rawData.bindingCodes || {},
91
+ userBindings: newUserBindings,
92
+ deviceToUserMap,
93
+ };
94
+ await this.save();
95
+ console.log(`[JsonStore] Migration complete. Migrated ${Object.keys(newUserBindings).length} user(s).`);
96
+ }
54
97
  /**
55
98
  * Store binding code with expiration
56
- * @param code Binding code
57
- * @param bindingCode Binding code object
58
99
  */
59
100
  async setBindingCode(code, bindingCode) {
60
101
  this.data.bindingCodes[code] = bindingCode;
@@ -62,8 +103,6 @@ class JsonStore {
62
103
  }
63
104
  /**
64
105
  * Get binding code
65
- * @param code Binding code
66
- * @returns Binding code object or null if not found/expired
67
106
  */
68
107
  getBindingCode(code) {
69
108
  const bindingCode = this.data.bindingCodes[code];
@@ -80,7 +119,6 @@ class JsonStore {
80
119
  }
81
120
  /**
82
121
  * Delete binding code
83
- * @param code Binding code
84
122
  */
85
123
  async deleteBindingCode(code) {
86
124
  delete this.data.bindingCodes[code];
@@ -88,53 +126,67 @@ class JsonStore {
88
126
  }
89
127
  /**
90
128
  * Set user binding
91
- * @param openId Feishu user open_id
92
- * @param binding User binding object
93
129
  */
94
130
  async setUserBinding(openId, binding) {
95
131
  this.data.userBindings[openId] = binding;
96
- this.data.deviceBindings[binding.deviceId] = binding;
132
+ // Rebuild deviceToUserMap entries for this user
133
+ for (const device of binding.devices) {
134
+ this.data.deviceToUserMap[device.deviceId] = openId;
135
+ }
97
136
  await this.scheduleSave();
98
137
  }
99
138
  /**
100
139
  * Get user binding
101
- * @param openId Feishu user open_id
102
- * @returns User binding or null if not found
103
140
  */
104
141
  getUserBinding(openId) {
105
142
  return this.data.userBindings[openId] || null;
106
143
  }
107
144
  /**
108
- * Get device binding
109
- * @param deviceId Device unique identifier
110
- * @returns User binding or null if not found
145
+ * Get user openId by device ID (reverse lookup)
111
146
  */
112
- getDeviceBinding(deviceId) {
113
- return this.data.deviceBindings[deviceId] || null;
147
+ getUserByDeviceId(deviceId) {
148
+ return this.data.deviceToUserMap[deviceId] || null;
114
149
  }
115
150
  /**
116
- * Delete user binding
117
- * @param openId Feishu user open_id
151
+ * Set device-to-user mapping
152
+ */
153
+ async setDeviceToUserMap(deviceId, openId) {
154
+ this.data.deviceToUserMap[deviceId] = openId;
155
+ await this.scheduleSave();
156
+ }
157
+ /**
158
+ * Remove device-to-user mapping
159
+ */
160
+ async removeDeviceToUserMap(deviceId) {
161
+ delete this.data.deviceToUserMap[deviceId];
162
+ await this.scheduleSave();
163
+ }
164
+ /**
165
+ * Delete user binding and all associated device mappings
118
166
  */
119
167
  async deleteUserBinding(openId) {
120
168
  const binding = this.data.userBindings[openId];
121
169
  if (binding) {
170
+ // Remove all device-to-user mappings
171
+ for (const device of binding.devices) {
172
+ delete this.data.deviceToUserMap[device.deviceId];
173
+ }
122
174
  delete this.data.userBindings[openId];
123
- delete this.data.deviceBindings[binding.deviceId];
124
175
  await this.scheduleSave();
125
176
  }
126
177
  }
127
178
  /**
128
- * Update user last active time
129
- * @param openId Feishu user open_id
179
+ * Update last active time for the active device of a user
130
180
  */
131
181
  async updateLastActive(openId) {
132
182
  const binding = this.data.userBindings[openId];
133
- if (binding) {
134
- binding.lastActiveAt = Date.now();
135
- this.data.userBindings[openId] = binding;
136
- this.data.deviceBindings[binding.deviceId] = binding;
137
- await this.scheduleSave();
183
+ if (binding && binding.activeDeviceId) {
184
+ const device = binding.devices.find(d => d.deviceId === binding.activeDeviceId);
185
+ if (device) {
186
+ device.lastActiveAt = Date.now();
187
+ binding.updatedAt = Date.now();
188
+ await this.scheduleSave();
189
+ }
138
190
  }
139
191
  }
140
192
  /**
@@ -194,9 +246,10 @@ class JsonStore {
194
246
  */
195
247
  async clear() {
196
248
  this.data = {
249
+ version: JsonStore.CURRENT_VERSION,
197
250
  bindingCodes: {},
198
251
  userBindings: {},
199
- deviceBindings: {},
252
+ deviceToUserMap: {},
200
253
  };
201
254
  await this.save();
202
255
  }
@@ -207,7 +260,7 @@ class JsonStore {
207
260
  return {
208
261
  bindingCodes: Object.keys(this.data.bindingCodes).length,
209
262
  userBindings: Object.keys(this.data.userBindings).length,
210
- deviceBindings: Object.keys(this.data.deviceBindings).length,
263
+ devices: Object.keys(this.data.deviceToUserMap).length,
211
264
  };
212
265
  }
213
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JsonStore.js","sourceRoot":"","sources":["../../src/storage/JsonStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonStore.js","sourceRoot":"","sources":["../../src/storage/JsonStore.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { BindingCode, UserBinding } from '../types';
6
6
  export declare class MemoryStore {
7
7
  private bindingCodes;
8
8
  private userBindings;
9
- private deviceBindings;
9
+ private deviceToUserMap;
10
10
  /**
11
11
  * Store binding code with expiration
12
12
  * @param code Binding code
@@ -38,18 +38,18 @@ export declare class MemoryStore {
38
38
  */
39
39
  getUserBinding(openId: string): UserBinding | null;
40
40
  /**
41
- * Get device binding
41
+ * Get user by device ID (reverse lookup)
42
42
  * @param deviceId Device unique identifier
43
- * @returns User binding or null if not found
43
+ * @returns openId or null if not found
44
44
  */
45
- getDeviceBinding(deviceId: string): UserBinding | null;
45
+ getUserByDeviceId(deviceId: string): string | null;
46
46
  /**
47
47
  * Delete user binding
48
48
  * @param openId Feishu user open_id
49
49
  */
50
50
  deleteUserBinding(openId: string): void;
51
51
  /**
52
- * Update user last active time
52
+ * Update user last active time (updates the active device)
53
53
  * @param openId Feishu user open_id
54
54
  */
55
55
  updateLastActive(openId: string): void;
@@ -63,7 +63,7 @@ export declare class MemoryStore {
63
63
  getStats(): {
64
64
  bindingCodes: number;
65
65
  userBindings: number;
66
- deviceBindings: number;
66
+ devices: number;
67
67
  };
68
68
  }
69
69
  //# sourceMappingURL=MemoryStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryStore.d.ts","sourceRoot":"","sources":["../../src/storage/MemoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAuC;IAE7D;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAShF;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAgBhD;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAK1D;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIlD;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAItD;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQvC;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAStC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB;CAOF"}
1
+ {"version":3,"file":"MemoryStore.d.ts","sourceRoot":"","sources":["../../src/storage/MemoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAuC;IAE3D,OAAO,CAAC,eAAe,CAAkC;IAEzD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAShF;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAgBhD;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAS1D;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIlD;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYvC;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYtC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB;CAOF"}
@@ -8,7 +8,8 @@ exports.MemoryStore = void 0;
8
8
  class MemoryStore {
9
9
  bindingCodes = new Map();
10
10
  userBindings = new Map();
11
- deviceBindings = new Map();
11
+ // Reverse lookup: deviceId -> openId
12
+ deviceToUserMap = new Map();
12
13
  /**
13
14
  * Store binding code with expiration
14
15
  * @param code Binding code
@@ -53,7 +54,10 @@ class MemoryStore {
53
54
  */
54
55
  setUserBinding(openId, binding) {
55
56
  this.userBindings.set(openId, binding);
56
- this.deviceBindings.set(binding.deviceId, binding);
57
+ // Update reverse lookup for all devices
58
+ for (const device of binding.devices) {
59
+ this.deviceToUserMap.set(device.deviceId, openId);
60
+ }
57
61
  }
58
62
  /**
59
63
  * Get user binding
@@ -64,12 +68,12 @@ class MemoryStore {
64
68
  return this.userBindings.get(openId) || null;
65
69
  }
66
70
  /**
67
- * Get device binding
71
+ * Get user by device ID (reverse lookup)
68
72
  * @param deviceId Device unique identifier
69
- * @returns User binding or null if not found
73
+ * @returns openId or null if not found
70
74
  */
71
- getDeviceBinding(deviceId) {
72
- return this.deviceBindings.get(deviceId) || null;
75
+ getUserByDeviceId(deviceId) {
76
+ return this.deviceToUserMap.get(deviceId) || null;
73
77
  }
74
78
  /**
75
79
  * Delete user binding
@@ -79,19 +83,25 @@ class MemoryStore {
79
83
  const binding = this.userBindings.get(openId);
80
84
  if (binding) {
81
85
  this.userBindings.delete(openId);
82
- this.deviceBindings.delete(binding.deviceId);
86
+ // Remove all device mappings
87
+ for (const device of binding.devices) {
88
+ this.deviceToUserMap.delete(device.deviceId);
89
+ }
83
90
  }
84
91
  }
85
92
  /**
86
- * Update user last active time
93
+ * Update user last active time (updates the active device)
87
94
  * @param openId Feishu user open_id
88
95
  */
89
96
  updateLastActive(openId) {
90
97
  const binding = this.userBindings.get(openId);
91
- if (binding) {
92
- binding.lastActiveAt = Date.now();
93
- this.userBindings.set(openId, binding);
94
- this.deviceBindings.set(binding.deviceId, binding);
98
+ if (binding && binding.activeDeviceId) {
99
+ const activeDevice = binding.devices.find(d => d.deviceId === binding.activeDeviceId);
100
+ if (activeDevice) {
101
+ activeDevice.lastActiveAt = Date.now();
102
+ binding.updatedAt = Date.now();
103
+ this.userBindings.set(openId, binding);
104
+ }
95
105
  }
96
106
  }
97
107
  /**
@@ -100,7 +110,7 @@ class MemoryStore {
100
110
  clear() {
101
111
  this.bindingCodes.clear();
102
112
  this.userBindings.clear();
103
- this.deviceBindings.clear();
113
+ this.deviceToUserMap.clear();
104
114
  }
105
115
  /**
106
116
  * Get statistics
@@ -109,7 +119,7 @@ class MemoryStore {
109
119
  return {
110
120
  bindingCodes: this.bindingCodes.size,
111
121
  userBindings: this.userBindings.size,
112
- deviceBindings: this.deviceBindings.size,
122
+ devices: this.deviceToUserMap.size,
113
123
  };
114
124
  }
115
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../src/storage/MemoryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../src/storage/MemoryStore.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,27 @@ export interface BindingCode {
7
7
  createdAt: number;
8
8
  expiresAt: number;
9
9
  }
10
- export interface UserBinding {
10
+ export interface LegacyUserBinding {
11
11
  openId: string;
12
12
  deviceId: string;
13
13
  deviceName: string;
14
14
  boundAt: number;
15
15
  lastActiveAt: number;
16
16
  }
17
+ export interface DeviceBinding {
18
+ deviceId: string;
19
+ deviceName: string;
20
+ boundAt: number;
21
+ lastActiveAt: number;
22
+ isActive: boolean;
23
+ }
24
+ export interface UserBinding {
25
+ openId: string;
26
+ devices: DeviceBinding[];
27
+ activeDeviceId: string | null;
28
+ createdAt: number;
29
+ updatedAt: number;
30
+ }
17
31
  export declare enum MessageType {
18
32
  COMMAND = "command",// Command message
19
33
  RESPONSE = "response",// Response message
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAmBH,yBAAyB;AACzB,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,kDAAmC,CAAA;IACnC,kDAAmC,CAAA;IACnC,sCAAuB,CAAA;IACvB,8BAAe,CAAA;IACf,4CAA6B,CAAA,CAAI,iCAAiC;AACpE,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqCH,yBAAyB;AACzB,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,kDAAmC,CAAA;IACnC,kDAAmC,CAAA;IACnC,sCAAuB,CAAA;IACvB,8BAAe,CAAA;IACf,4CAA6B,CAAA,CAAI,iCAAiC;AACpE,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB"}
@@ -31,11 +31,11 @@ export declare function createDividerElement(): FeishuCardElement;
31
31
  */
32
32
  export declare function createMarkdownElement(content: string): FeishuCardElement;
33
33
  /**
34
- * Create a Feishu Card 2.0 tool use element
34
+ * Create a Feishu Card 2.0 tool use element with collapsible panel
35
35
  */
36
36
  export declare function createToolUseElement(toolInfo: ToolUseInfo): FeishuCardElement[];
37
37
  /**
38
- * Create a Feishu Card 2.0 tool result element
38
+ * Create a Feishu Card 2.0 tool result element with collapsible panel
39
39
  */
40
40
  export declare function createToolResultElement(resultInfo: ToolResultInfo): FeishuCardElement[];
41
41
  //# sourceMappingURL=ToolFormatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/ToolFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAuBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2B3F;AA2KD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAKxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAkB/E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,cAAc,GAAG,iBAAiB,EAAE,CA2BvF"}
1
+ {"version":3,"file":"ToolFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/ToolFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAuBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2B3F;AA2KD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAKxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAwC/E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAsDvF"}
@@ -226,48 +226,98 @@ function createMarkdownElement(content) {
226
226
  };
227
227
  }
228
228
  /**
229
- * Create a Feishu Card 2.0 tool use element
229
+ * Create a Feishu Card 2.0 tool use element with collapsible panel
230
230
  */
231
231
  function createToolUseElement(toolInfo) {
232
232
  const { name, input, id } = toolInfo;
233
233
  const emoji = getToolEmoji(name);
234
234
  const context = extractToolContext(name, input);
235
- // Build markdown content
236
- let content = `<text_tag color='blue'>${emoji} TOOL USE</text_tag> · **${name}**`;
237
- if (id) {
238
- content += ` · \`${id.slice(0, 8)}\``;
235
+ // Build header title
236
+ let headerTitle = `<text_tag color='blue'>${emoji} TOOL USE</text_tag> · **${name}**`;
237
+ if (id && id !== 'unknown') {
238
+ headerTitle += ` · \`${id.slice(0, 8)}\``;
239
239
  }
240
- content += `\n\n${context}`;
240
+ // Create collapsible panel with tool details inside
241
+ const collapsiblePanel = {
242
+ tag: 'collapsible_panel',
243
+ expanded: false,
244
+ header: {
245
+ title: {
246
+ tag: 'markdown',
247
+ content: headerTitle,
248
+ },
249
+ vertical_align: 'center',
250
+ icon: {
251
+ tag: 'standard_icon',
252
+ token: 'down-small-ccm_outlined',
253
+ size: '14px 14px',
254
+ },
255
+ icon_position: 'right',
256
+ icon_expanded_angle: -180,
257
+ },
258
+ vertical_spacing: '8px',
259
+ padding: '4px 8px',
260
+ elements: [
261
+ createMarkdownElement(context),
262
+ ],
263
+ };
241
264
  return [
242
265
  createDividerElement(),
243
- createMarkdownElement(content),
266
+ collapsiblePanel,
244
267
  ];
245
268
  }
246
269
  /**
247
- * Create a Feishu Card 2.0 tool result element
270
+ * Create a Feishu Card 2.0 tool result element with collapsible panel
248
271
  */
249
272
  function createToolResultElement(resultInfo) {
250
273
  const { tool_use_id, content, is_error } = resultInfo;
251
274
  // Determine status
252
275
  const statusColor = is_error ? 'red' : 'green';
253
276
  const statusText = is_error ? 'ERROR' : 'SUCCESS';
254
- // Build status text with color tag and tool_use_id
255
- let statusDisplay = `<text_tag color='${statusColor}'>${statusText}</text_tag>`;
256
- if (tool_use_id) {
257
- statusDisplay += ` · \`${tool_use_id.slice(0, 8)}\``;
277
+ const statusEmoji = is_error ? '❌' : '✅';
278
+ // Build header title with status, emoji, and tool_use_id
279
+ let headerTitle = `<text_tag color='${statusColor}'>${statusEmoji} ${statusText}</text_tag>`;
280
+ if (tool_use_id && tool_use_id !== 'unknown') {
281
+ headerTitle += ` · \`${tool_use_id.slice(0, 8)}\``;
258
282
  }
259
- // Create status as markdown element
260
- const elements = [createMarkdownElement(statusDisplay)];
283
+ // Prepare content elements inside the collapsible panel
284
+ const panelElements = [];
261
285
  if (content && !is_error) {
262
286
  // For successful results, show the content in a code block
263
287
  const truncated = truncate(content, 500);
264
- elements.push(createMarkdownElement(`\`\`\`\n${truncated}\n\`\`\``));
288
+ panelElements.push(createMarkdownElement(`\`\`\`\n${truncated}\n\`\`\``));
265
289
  }
266
290
  else if (content && is_error) {
267
291
  // For errors, show the error message
268
292
  const truncated = truncate(content, 500);
269
- elements.push(createMarkdownElement(truncated));
293
+ panelElements.push(createMarkdownElement(truncated));
294
+ }
295
+ else {
296
+ // No content
297
+ panelElements.push(createMarkdownElement('_(no output)_'));
270
298
  }
271
- return elements;
299
+ // Create collapsible panel with result details inside
300
+ const collapsiblePanel = {
301
+ tag: 'collapsible_panel',
302
+ expanded: false,
303
+ header: {
304
+ title: {
305
+ tag: 'markdown',
306
+ content: headerTitle,
307
+ },
308
+ vertical_align: 'center',
309
+ icon: {
310
+ tag: 'standard_icon',
311
+ token: 'down-small-ccm_outlined',
312
+ size: '14px 14px',
313
+ },
314
+ icon_position: 'right',
315
+ icon_expanded_angle: -180,
316
+ },
317
+ vertical_spacing: '8px',
318
+ padding: '4px 8px',
319
+ elements: panelElements,
320
+ };
321
+ return [collapsiblePanel];
272
322
  }
273
323
  //# sourceMappingURL=ToolFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolFormatter.js","sourceRoot":"","sources":["../../src/utils/ToolFormatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolFormatter.js","sourceRoot":"","sources":["../../src/utils/ToolFormatter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yu_robotics/remote-cli-router",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Router server for remote CLI - message forwarding between Feishu and local clients",
5
5
  "main": "dist/cli.js",
6
6
  "types": "dist/cli.d.ts",