@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.
Files changed (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/bin/remote-cli-router.js +2 -0
  4. package/dist/binding/BindingManager.d.ts +62 -0
  5. package/dist/binding/BindingManager.d.ts.map +1 -0
  6. package/dist/binding/BindingManager.js +119 -0
  7. package/dist/binding/BindingManager.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +32 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/config.d.ts +19 -0
  13. package/dist/commands/config.d.ts.map +1 -0
  14. package/dist/commands/config.js +206 -0
  15. package/dist/commands/config.js.map +1 -0
  16. package/dist/commands/start.d.ts +5 -0
  17. package/dist/commands/start.d.ts.map +1 -0
  18. package/dist/commands/start.js +65 -0
  19. package/dist/commands/start.js.map +1 -0
  20. package/dist/commands/status.d.ts +5 -0
  21. package/dist/commands/status.d.ts.map +1 -0
  22. package/dist/commands/status.js +103 -0
  23. package/dist/commands/status.js.map +1 -0
  24. package/dist/commands/stop.d.ts +5 -0
  25. package/dist/commands/stop.d.ts.map +1 -0
  26. package/dist/commands/stop.js +56 -0
  27. package/dist/commands/stop.js.map +1 -0
  28. package/dist/config/ConfigManager.d.ts +46 -0
  29. package/dist/config/ConfigManager.d.ts.map +1 -0
  30. package/dist/config/ConfigManager.js +101 -0
  31. package/dist/config/ConfigManager.js.map +1 -0
  32. package/dist/feishu/FeishuClient.d.ts +46 -0
  33. package/dist/feishu/FeishuClient.d.ts.map +1 -0
  34. package/dist/feishu/FeishuClient.js +130 -0
  35. package/dist/feishu/FeishuClient.js.map +1 -0
  36. package/dist/feishu/FeishuLongConnHandler.d.ts +149 -0
  37. package/dist/feishu/FeishuLongConnHandler.d.ts.map +1 -0
  38. package/dist/feishu/FeishuLongConnHandler.js +632 -0
  39. package/dist/feishu/FeishuLongConnHandler.js.map +1 -0
  40. package/dist/server.d.ts +80 -0
  41. package/dist/server.d.ts.map +1 -0
  42. package/dist/server.js +533 -0
  43. package/dist/server.js.map +1 -0
  44. package/dist/storage/JsonStore.d.ts +90 -0
  45. package/dist/storage/JsonStore.d.ts.map +1 -0
  46. package/dist/storage/JsonStore.js +215 -0
  47. package/dist/storage/JsonStore.js.map +1 -0
  48. package/dist/storage/MemoryStore.d.ts +69 -0
  49. package/dist/storage/MemoryStore.d.ts.map +1 -0
  50. package/dist/storage/MemoryStore.js +117 -0
  51. package/dist/storage/MemoryStore.js.map +1 -0
  52. package/dist/types/config.d.ts +53 -0
  53. package/dist/types/config.d.ts.map +1 -0
  54. package/dist/types/config.js +31 -0
  55. package/dist/types/config.js.map +1 -0
  56. package/dist/types/index.d.ts +93 -0
  57. package/dist/types/index.d.ts.map +1 -0
  58. package/dist/types/index.js +18 -0
  59. package/dist/types/index.js.map +1 -0
  60. package/dist/utils/PidManager.d.ts +28 -0
  61. package/dist/utils/PidManager.d.ts.map +1 -0
  62. package/dist/utils/PidManager.js +90 -0
  63. package/dist/utils/PidManager.js.map +1 -0
  64. package/dist/utils/ToolFormatter.d.ts +41 -0
  65. package/dist/utils/ToolFormatter.d.ts.map +1 -0
  66. package/dist/utils/ToolFormatter.js +273 -0
  67. package/dist/utils/ToolFormatter.js.map +1 -0
  68. package/dist/websocket/ConnectionHub.d.ts +73 -0
  69. package/dist/websocket/ConnectionHub.d.ts.map +1 -0
  70. package/dist/websocket/ConnectionHub.js +177 -0
  71. package/dist/websocket/ConnectionHub.js.map +1 -0
  72. 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"}