@yu_robotics/remote-cli-router 1.0.0
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/LICENSE +21 -0
- package/README.md +115 -0
- package/bin/remote-cli-router.js +2 -0
- package/dist/binding/BindingManager.d.ts +62 -0
- package/dist/binding/BindingManager.d.ts.map +1 -0
- package/dist/binding/BindingManager.js +119 -0
- package/dist/binding/BindingManager.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +32 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.d.ts +19 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +206 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +65 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +103 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +5 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +56 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +46 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +101 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/feishu/FeishuClient.d.ts +46 -0
- package/dist/feishu/FeishuClient.d.ts.map +1 -0
- package/dist/feishu/FeishuClient.js +130 -0
- package/dist/feishu/FeishuClient.js.map +1 -0
- package/dist/feishu/FeishuLongConnHandler.d.ts +149 -0
- package/dist/feishu/FeishuLongConnHandler.d.ts.map +1 -0
- package/dist/feishu/FeishuLongConnHandler.js +632 -0
- package/dist/feishu/FeishuLongConnHandler.js.map +1 -0
- package/dist/server.d.ts +80 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +533 -0
- package/dist/server.js.map +1 -0
- package/dist/storage/JsonStore.d.ts +90 -0
- package/dist/storage/JsonStore.d.ts.map +1 -0
- package/dist/storage/JsonStore.js +215 -0
- package/dist/storage/JsonStore.js.map +1 -0
- package/dist/storage/MemoryStore.d.ts +69 -0
- package/dist/storage/MemoryStore.d.ts.map +1 -0
- package/dist/storage/MemoryStore.js +117 -0
- package/dist/storage/MemoryStore.js.map +1 -0
- package/dist/types/config.d.ts +53 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +31 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +93 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/PidManager.d.ts +28 -0
- package/dist/utils/PidManager.d.ts.map +1 -0
- package/dist/utils/PidManager.js +90 -0
- package/dist/utils/PidManager.js.map +1 -0
- package/dist/utils/ToolFormatter.d.ts +41 -0
- package/dist/utils/ToolFormatter.d.ts.map +1 -0
- package/dist/utils/ToolFormatter.js +273 -0
- package/dist/utils/ToolFormatter.js.map +1 -0
- package/dist/websocket/ConnectionHub.d.ts +73 -0
- package/dist/websocket/ConnectionHub.d.ts.map +1 -0
- package/dist/websocket/ConnectionHub.js +177 -0
- package/dist/websocket/ConnectionHub.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { BindingManager } from '../binding/BindingManager';
|
|
2
|
+
import { ConnectionHub } from '../websocket/ConnectionHub';
|
|
3
|
+
import { JsonStore } from '../storage/JsonStore';
|
|
4
|
+
/**
|
|
5
|
+
* Feishu Long Connection Handler configuration
|
|
6
|
+
*/
|
|
7
|
+
export interface FeishuLongConnHandlerConfig {
|
|
8
|
+
appId: string;
|
|
9
|
+
appSecret: string;
|
|
10
|
+
store: JsonStore;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Feishu Long Connection Handler
|
|
14
|
+
* Uses Feishu SDK's WSClient for WebSocket long connection
|
|
15
|
+
*/
|
|
16
|
+
export declare class FeishuLongConnHandler {
|
|
17
|
+
private client;
|
|
18
|
+
private wsClient;
|
|
19
|
+
private bindingManager;
|
|
20
|
+
private connectionHub;
|
|
21
|
+
private appId;
|
|
22
|
+
private appSecret;
|
|
23
|
+
private readonly FEISHU_MESSAGE_LIMIT;
|
|
24
|
+
private messageChains;
|
|
25
|
+
private lastProcessedLengths;
|
|
26
|
+
private messageLocks;
|
|
27
|
+
private readonly TOOL_USE_PATTERN;
|
|
28
|
+
private readonly TOOL_SEPARATOR_PATTERN;
|
|
29
|
+
constructor(config: FeishuLongConnHandlerConfig);
|
|
30
|
+
/**
|
|
31
|
+
* Set ConnectionHub (called from RouterServer)
|
|
32
|
+
*/
|
|
33
|
+
setConnectionHub(hub: ConnectionHub): void;
|
|
34
|
+
/**
|
|
35
|
+
* Callback to register streaming message with RouterServer
|
|
36
|
+
*/
|
|
37
|
+
private onStartStreaming?;
|
|
38
|
+
/**
|
|
39
|
+
* Set streaming start callback
|
|
40
|
+
*/
|
|
41
|
+
setOnStartStreaming(callback: (messageId: string, openId: string, feishuMessageId: string | null, deviceId: string) => void): void;
|
|
42
|
+
/**
|
|
43
|
+
* Handle message event
|
|
44
|
+
*/
|
|
45
|
+
private handleMessageEvent;
|
|
46
|
+
/**
|
|
47
|
+
* Parse message content
|
|
48
|
+
*/
|
|
49
|
+
private parseMessageContent;
|
|
50
|
+
/**
|
|
51
|
+
* Check if it's a command
|
|
52
|
+
*/
|
|
53
|
+
private isCommand;
|
|
54
|
+
/**
|
|
55
|
+
* Handle command
|
|
56
|
+
*/
|
|
57
|
+
private handleCommand;
|
|
58
|
+
/**
|
|
59
|
+
* Handle slash command passthrough to client
|
|
60
|
+
* Passes unknown slash commands to the local Claude Code instance
|
|
61
|
+
*/
|
|
62
|
+
private handleSlashCommandPassthrough;
|
|
63
|
+
/**
|
|
64
|
+
* Handle bind command
|
|
65
|
+
*/
|
|
66
|
+
private handleBindCommand;
|
|
67
|
+
/**
|
|
68
|
+
* Handle status command
|
|
69
|
+
*/
|
|
70
|
+
private handleStatusCommand;
|
|
71
|
+
/**
|
|
72
|
+
* Handle unbind command
|
|
73
|
+
*/
|
|
74
|
+
private handleUnbindCommand;
|
|
75
|
+
/**
|
|
76
|
+
* Handle help command
|
|
77
|
+
*/
|
|
78
|
+
private handleHelpCommand;
|
|
79
|
+
/**
|
|
80
|
+
* Handle regular command (non-slash commands)
|
|
81
|
+
*/
|
|
82
|
+
private handleRegularCommand;
|
|
83
|
+
/**
|
|
84
|
+
* Reply to a message
|
|
85
|
+
*/
|
|
86
|
+
private replyToMessage;
|
|
87
|
+
/**
|
|
88
|
+
* Send message to user
|
|
89
|
+
*/
|
|
90
|
+
sendMessage(openId: string, text: string): Promise<boolean>;
|
|
91
|
+
/**
|
|
92
|
+
* Send streaming message with card update support
|
|
93
|
+
* Returns message_id for updating
|
|
94
|
+
*/
|
|
95
|
+
sendStreamingStart(openId: string, initialText?: string): Promise<string | null>;
|
|
96
|
+
/**
|
|
97
|
+
* Serialize async operations per messageId to prevent race conditions.
|
|
98
|
+
* Concurrent calls for the same messageId will queue and execute in order.
|
|
99
|
+
*/
|
|
100
|
+
private withMessageLock;
|
|
101
|
+
/**
|
|
102
|
+
* Split text into chunks that fit within Feishu's message size limit
|
|
103
|
+
* Tries to split at newlines to keep context intact
|
|
104
|
+
*
|
|
105
|
+
* Reserves space for continuation indicators:
|
|
106
|
+
* - "~➡️ Continued in next message...~" (40 chars) at end of non-final chunks
|
|
107
|
+
* - "~⬅️ Continued from previous message...~" (44 chars) at start of continuation chunks
|
|
108
|
+
*/
|
|
109
|
+
private splitTextIntoChunks;
|
|
110
|
+
/**
|
|
111
|
+
* Update streaming message content
|
|
112
|
+
* Automatically creates new messages if content exceeds Feishu's size limit
|
|
113
|
+
*
|
|
114
|
+
* This method uses an incremental approach to prevent content duplication:
|
|
115
|
+
* - Once a message (except the last one) is created, its content is frozen
|
|
116
|
+
* - Only the last message in the chain gets updated with new content
|
|
117
|
+
* - New messages are only created when the last message exceeds the limit
|
|
118
|
+
*
|
|
119
|
+
* @param messageId The Feishu message ID
|
|
120
|
+
* @param elements Array of Feishu Card 2.0 elements
|
|
121
|
+
* @param openId User's open_id for creating continuation messages
|
|
122
|
+
*/
|
|
123
|
+
updateStreamingMessage(messageId: string, elements: any[], openId?: string): Promise<boolean>;
|
|
124
|
+
private _updateStreamingMessage;
|
|
125
|
+
/**
|
|
126
|
+
* Finalize streaming message
|
|
127
|
+
* Automatically creates new messages if content exceeds Feishu's size limit
|
|
128
|
+
*
|
|
129
|
+
* @param messageId The Feishu message ID
|
|
130
|
+
* @param elements Array of Feishu Card 2.0 elements
|
|
131
|
+
* @param sessionAbbr Optional session abbreviation
|
|
132
|
+
* @param openId User's open_id for creating continuation messages
|
|
133
|
+
*/
|
|
134
|
+
finalizeStreamingMessage(messageId: string, elements: any[], sessionAbbr?: string, openId?: string): Promise<boolean>;
|
|
135
|
+
private _finalizeStreamingMessage;
|
|
136
|
+
/**
|
|
137
|
+
* Start the Feishu WebSocket long connection
|
|
138
|
+
*/
|
|
139
|
+
start(): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* Stop the Feishu connection
|
|
142
|
+
*/
|
|
143
|
+
stop(): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Get BindingManager instance
|
|
146
|
+
*/
|
|
147
|
+
getBindingManager(): BindingManager;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=FeishuLongConnHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeishuLongConnHandler.d.ts","sourceRoot":"","sources":["../../src/feishu/FeishuLongConnHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAE7C,OAAO,CAAC,aAAa,CAAoC;IAGzD,OAAO,CAAC,oBAAoB,CAAkC;IAE9D,OAAO,CAAC,YAAY,CAAwC;IAE5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAY;gBAEvC,MAAM,EAAE,2BAA2B;IAc/C;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAI1C;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAC,CAAgG;IAEzH;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIlI;;OAEG;YACW,kBAAkB;IA6BhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;YACW,aAAa;IAgC3B;;;OAGG;YACW,6BAA6B;IA+D3C;;OAEG;YACW,iBAAiB;IAuB/B;;OAEG;YACW,mBAAmB;IAuBjC;;OAEG;YACW,mBAAmB;IAmBjC;;OAEG;YACW,iBAAiB;IAmB/B;;OAEG;YACW,oBAAoB;IA6DlC;;OAEG;YACW,cAAc;IAc5B;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBjE;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAyB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA4BxG;;;OAGG;YACW,eAAe;IAc7B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAwC3B;;;;;;;;;;;;OAYG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAIrF,uBAAuB;IA8BrC;;;;;;;;OAQG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAI7G,yBAAyB;IAiDvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;OAEG;IACH,iBAAiB,IAAI,cAAc;CAGpC"}
|