@downcity/plugins 1.0.215 → 1.0.233

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 (702) hide show
  1. package/bin/chat/Action.d.ts +51 -51
  2. package/bin/chat/Action.d.ts.map +1 -1
  3. package/bin/chat/Action.js +109 -108
  4. package/bin/chat/Action.js.map +1 -1
  5. package/bin/chat/ChatPlugin.d.ts +7 -7
  6. package/bin/chat/ChatPlugin.d.ts.map +1 -1
  7. package/bin/chat/ChatPlugin.js +4 -4
  8. package/bin/chat/ChatPlugin.js.map +1 -1
  9. package/bin/chat/Index.d.ts +3 -0
  10. package/bin/chat/Index.d.ts.map +1 -1
  11. package/bin/chat/Index.js +1 -0
  12. package/bin/chat/Index.js.map +1 -1
  13. package/bin/chat/PROMPT.direct.d.ts +1 -1
  14. package/bin/chat/PROMPT.direct.d.ts.map +1 -1
  15. package/bin/chat/PROMPT.direct.js +1 -1
  16. package/bin/chat/PROMPT.direct.js.map +1 -1
  17. package/bin/chat/access/ChatAccessActions.js +6 -6
  18. package/bin/chat/access/ChatAccessActions.js.map +1 -1
  19. package/bin/chat/access/ChatAccessRuntime.d.ts +4 -4
  20. package/bin/chat/access/ChatAccessRuntime.d.ts.map +1 -1
  21. package/bin/chat/access/ChatAccessRuntime.js +1 -1
  22. package/bin/chat/access/ChatAccessRuntime.js.map +1 -1
  23. package/bin/chat/access/ChatAccessStore.js +5 -5
  24. package/bin/chat/access/ChatAccessStore.js.map +1 -1
  25. package/bin/chat/channels/BaseChatChannel.d.ts +17 -17
  26. package/bin/chat/channels/BaseChatChannel.d.ts.map +1 -1
  27. package/bin/chat/channels/BaseChatChannel.js +19 -19
  28. package/bin/chat/channels/BaseChatChannel.js.map +1 -1
  29. package/bin/chat/channels/BaseChatChannelQueue.d.ts +6 -6
  30. package/bin/chat/channels/BaseChatChannelQueue.d.ts.map +1 -1
  31. package/bin/chat/channels/BaseChatChannelQueue.js +32 -32
  32. package/bin/chat/channels/BaseChatChannelQueue.js.map +1 -1
  33. package/bin/chat/channels/BaseChatChannelSupport.d.ts +14 -14
  34. package/bin/chat/channels/BaseChatChannelSupport.d.ts.map +1 -1
  35. package/bin/chat/channels/BaseChatChannelSupport.js +13 -13
  36. package/bin/chat/channels/BaseChatChannelSupport.js.map +1 -1
  37. package/bin/chat/channels/RuntimeChannel.d.ts +23 -28
  38. package/bin/chat/channels/RuntimeChannel.d.ts.map +1 -1
  39. package/bin/chat/channels/RuntimeChannel.js +39 -57
  40. package/bin/chat/channels/RuntimeChannel.js.map +1 -1
  41. package/bin/chat/channels/feishu/Feishu.d.ts +7 -7
  42. package/bin/chat/channels/feishu/Feishu.d.ts.map +1 -1
  43. package/bin/chat/channels/feishu/Feishu.js +31 -31
  44. package/bin/chat/channels/feishu/Feishu.js.map +1 -1
  45. package/bin/chat/channels/feishu/FeishuInbound.js +3 -3
  46. package/bin/chat/channels/feishu/FeishuInbound.js.map +1 -1
  47. package/bin/chat/channels/feishu/FeishuMessageHandler.d.ts +10 -10
  48. package/bin/chat/channels/feishu/FeishuMessageHandler.d.ts.map +1 -1
  49. package/bin/chat/channels/feishu/FeishuMessageHandler.js +17 -17
  50. package/bin/chat/channels/feishu/FeishuMessageHandler.js.map +1 -1
  51. package/bin/chat/channels/feishu/FeishuPlatformClient.d.ts +6 -6
  52. package/bin/chat/channels/feishu/FeishuPlatformClient.d.ts.map +1 -1
  53. package/bin/chat/channels/feishu/FeishuPlatformClient.js +9 -9
  54. package/bin/chat/channels/feishu/FeishuPlatformClient.js.map +1 -1
  55. package/bin/chat/channels/feishu/FeishuPlatformLookup.d.ts +1 -1
  56. package/bin/chat/channels/feishu/FeishuPlatformLookup.d.ts.map +1 -1
  57. package/bin/chat/channels/feishu/FeishuPlatformLookup.js +6 -6
  58. package/bin/chat/channels/feishu/FeishuPlatformLookup.js.map +1 -1
  59. package/bin/chat/channels/feishu/FeishuPlatformMessaging.d.ts +2 -2
  60. package/bin/chat/channels/feishu/FeishuPlatformMessaging.d.ts.map +1 -1
  61. package/bin/chat/channels/feishu/FeishuPlatformMessaging.js +7 -7
  62. package/bin/chat/channels/feishu/FeishuPlatformMessaging.js.map +1 -1
  63. package/bin/chat/channels/feishu/InboundAttachment.d.ts +1 -1
  64. package/bin/chat/channels/feishu/InboundAttachment.d.ts.map +1 -1
  65. package/bin/chat/channels/feishu/InboundAttachment.js +5 -5
  66. package/bin/chat/channels/feishu/InboundAttachment.js.map +1 -1
  67. package/bin/chat/channels/feishu/PostMessage.js +8 -8
  68. package/bin/chat/channels/feishu/PostMessage.js.map +1 -1
  69. package/bin/chat/channels/feishu/ReplyContext.d.ts +1 -1
  70. package/bin/chat/channels/feishu/ReplyContext.d.ts.map +1 -1
  71. package/bin/chat/channels/feishu/ReplyContext.js +2 -2
  72. package/bin/chat/channels/feishu/ReplyContext.js.map +1 -1
  73. package/bin/chat/channels/feishu/Shared.js +3 -3
  74. package/bin/chat/channels/feishu/Shared.js.map +1 -1
  75. package/bin/chat/channels/qq/PROMPT.direct.d.ts +1 -1
  76. package/bin/chat/channels/qq/PROMPT.direct.d.ts.map +1 -1
  77. package/bin/chat/channels/qq/PROMPT.direct.js +1 -1
  78. package/bin/chat/channels/qq/PROMPT.direct.js.map +1 -1
  79. package/bin/chat/channels/qq/QQ.d.ts +3 -3
  80. package/bin/chat/channels/qq/QQ.d.ts.map +1 -1
  81. package/bin/chat/channels/qq/QQ.js +20 -20
  82. package/bin/chat/channels/qq/QQ.js.map +1 -1
  83. package/bin/chat/channels/qq/QQEventCapture.d.ts +1 -1
  84. package/bin/chat/channels/qq/QQEventCapture.d.ts.map +1 -1
  85. package/bin/chat/channels/qq/QQEventCapture.js +3 -3
  86. package/bin/chat/channels/qq/QQEventCapture.js.map +1 -1
  87. package/bin/chat/channels/qq/QQGatewayAuth.d.ts +1 -1
  88. package/bin/chat/channels/qq/QQGatewayAuth.d.ts.map +1 -1
  89. package/bin/chat/channels/qq/QQGatewayClient.d.ts +2 -2
  90. package/bin/chat/channels/qq/QQGatewayClient.d.ts.map +1 -1
  91. package/bin/chat/channels/qq/QQGatewayClient.js +11 -11
  92. package/bin/chat/channels/qq/QQGatewayClient.js.map +1 -1
  93. package/bin/chat/channels/qq/QQGatewayConnection.d.ts +1 -1
  94. package/bin/chat/channels/qq/QQGatewayConnection.d.ts.map +1 -1
  95. package/bin/chat/channels/qq/QQGatewaySend.d.ts +2 -2
  96. package/bin/chat/channels/qq/QQGatewaySend.d.ts.map +1 -1
  97. package/bin/chat/channels/qq/QQGatewaySend.js +3 -3
  98. package/bin/chat/channels/qq/QQGatewaySend.js.map +1 -1
  99. package/bin/chat/channels/qq/QQInbound.js +5 -5
  100. package/bin/chat/channels/qq/QQInbound.js.map +1 -1
  101. package/bin/chat/channels/qq/QQInboundDedupe.d.ts +2 -2
  102. package/bin/chat/channels/qq/QQInboundDedupe.d.ts.map +1 -1
  103. package/bin/chat/channels/qq/QQInboundDedupe.js +5 -5
  104. package/bin/chat/channels/qq/QQInboundDedupe.js.map +1 -1
  105. package/bin/chat/channels/qq/QQMessageHandler.d.ts +9 -9
  106. package/bin/chat/channels/qq/QQMessageHandler.d.ts.map +1 -1
  107. package/bin/chat/channels/qq/QQMessageHandler.js +34 -34
  108. package/bin/chat/channels/qq/QQMessageHandler.js.map +1 -1
  109. package/bin/chat/channels/qq/QQSendSupport.js +2 -2
  110. package/bin/chat/channels/qq/QQSendSupport.js.map +1 -1
  111. package/bin/chat/channels/qq/QQSupport.d.ts +5 -5
  112. package/bin/chat/channels/qq/QQSupport.d.ts.map +1 -1
  113. package/bin/chat/channels/qq/QQSupport.js +5 -5
  114. package/bin/chat/channels/qq/QQSupport.js.map +1 -1
  115. package/bin/chat/channels/qq/types/QqChannel.d.ts +1 -1
  116. package/bin/chat/channels/qq/types/QqChannel.d.ts.map +1 -1
  117. package/bin/chat/channels/telegram/ApiClient.d.ts +2 -2
  118. package/bin/chat/channels/telegram/ApiClient.d.ts.map +1 -1
  119. package/bin/chat/channels/telegram/ApiClient.js +6 -6
  120. package/bin/chat/channels/telegram/ApiClient.js.map +1 -1
  121. package/bin/chat/channels/telegram/Bot.d.ts +4 -4
  122. package/bin/chat/channels/telegram/Bot.d.ts.map +1 -1
  123. package/bin/chat/channels/telegram/Bot.js +14 -14
  124. package/bin/chat/channels/telegram/Bot.js.map +1 -1
  125. package/bin/chat/channels/telegram/BotInfo.js +1 -1
  126. package/bin/chat/channels/telegram/BotInfo.js.map +1 -1
  127. package/bin/chat/channels/telegram/ReplyContext.js +3 -3
  128. package/bin/chat/channels/telegram/ReplyContext.js.map +1 -1
  129. package/bin/chat/channels/telegram/Shared.js +3 -3
  130. package/bin/chat/channels/telegram/Shared.js.map +1 -1
  131. package/bin/chat/channels/telegram/StateStore.d.ts +1 -1
  132. package/bin/chat/channels/telegram/StateStore.d.ts.map +1 -1
  133. package/bin/chat/channels/telegram/StateStore.js +2 -2
  134. package/bin/chat/channels/telegram/StateStore.js.map +1 -1
  135. package/bin/chat/channels/telegram/TelegramInbound.d.ts +3 -3
  136. package/bin/chat/channels/telegram/TelegramInbound.d.ts.map +1 -1
  137. package/bin/chat/channels/telegram/TelegramInbound.js +4 -4
  138. package/bin/chat/channels/telegram/TelegramInbound.js.map +1 -1
  139. package/bin/chat/channels/telegram/TelegramMessageHandler.d.ts +8 -8
  140. package/bin/chat/channels/telegram/TelegramMessageHandler.d.ts.map +1 -1
  141. package/bin/chat/channels/telegram/TelegramMessageHandler.js +25 -25
  142. package/bin/chat/channels/telegram/TelegramMessageHandler.js.map +1 -1
  143. package/bin/chat/channels/telegram/TelegramPendingUpdates.d.ts +2 -2
  144. package/bin/chat/channels/telegram/TelegramPendingUpdates.d.ts.map +1 -1
  145. package/bin/chat/channels/telegram/TelegramPendingUpdates.js +7 -7
  146. package/bin/chat/channels/telegram/TelegramPendingUpdates.js.map +1 -1
  147. package/bin/chat/channels/telegram/TelegramPlatformClient.d.ts +4 -4
  148. package/bin/chat/channels/telegram/TelegramPlatformClient.d.ts.map +1 -1
  149. package/bin/chat/channels/telegram/TelegramPlatformClient.js +7 -7
  150. package/bin/chat/channels/telegram/TelegramPlatformClient.js.map +1 -1
  151. package/bin/chat/config/ChatPluginConfig.d.ts +67 -0
  152. package/bin/chat/config/ChatPluginConfig.d.ts.map +1 -0
  153. package/bin/chat/config/ChatPluginConfig.js +237 -0
  154. package/bin/chat/config/ChatPluginConfig.js.map +1 -0
  155. package/bin/chat/runtime/ChannelContextStore.d.ts +21 -21
  156. package/bin/chat/runtime/ChannelContextStore.d.ts.map +1 -1
  157. package/bin/chat/runtime/ChannelContextStore.js +74 -74
  158. package/bin/chat/runtime/ChannelContextStore.js.map +1 -1
  159. package/bin/chat/runtime/ChatActionExecution.d.ts +23 -23
  160. package/bin/chat/runtime/ChatActionExecution.d.ts.map +1 -1
  161. package/bin/chat/runtime/ChatActionExecution.js +70 -70
  162. package/bin/chat/runtime/ChatActionExecution.js.map +1 -1
  163. package/bin/chat/runtime/ChatActionInput.js +19 -19
  164. package/bin/chat/runtime/ChatActionInput.js.map +1 -1
  165. package/bin/chat/runtime/ChatChannelActions.d.ts +4 -4
  166. package/bin/chat/runtime/ChatChannelActions.d.ts.map +1 -1
  167. package/bin/chat/runtime/ChatChannelConfig.d.ts +4 -4
  168. package/bin/chat/runtime/ChatChannelConfig.d.ts.map +1 -1
  169. package/bin/chat/runtime/ChatChannelConfig.js +9 -9
  170. package/bin/chat/runtime/ChatChannelConfig.js.map +1 -1
  171. package/bin/chat/runtime/ChatChannelCore.d.ts +11 -12
  172. package/bin/chat/runtime/ChatChannelCore.d.ts.map +1 -1
  173. package/bin/chat/runtime/ChatChannelCore.js +5 -17
  174. package/bin/chat/runtime/ChatChannelCore.js.map +1 -1
  175. package/bin/chat/runtime/ChatChannelLifecycle.d.ts +3 -3
  176. package/bin/chat/runtime/ChatChannelLifecycle.d.ts.map +1 -1
  177. package/bin/chat/runtime/ChatChannelLifecycle.js +5 -5
  178. package/bin/chat/runtime/ChatChannelLifecycle.js.map +1 -1
  179. package/bin/chat/runtime/ChatHistoryStore.d.ts +11 -11
  180. package/bin/chat/runtime/ChatHistoryStore.d.ts.map +1 -1
  181. package/bin/chat/runtime/ChatHistoryStore.js +26 -26
  182. package/bin/chat/runtime/ChatHistoryStore.js.map +1 -1
  183. package/bin/chat/runtime/ChatIngressStore.d.ts +4 -4
  184. package/bin/chat/runtime/ChatIngressStore.d.ts.map +1 -1
  185. package/bin/chat/runtime/ChatIngressStore.js +2 -2
  186. package/bin/chat/runtime/ChatIngressStore.js.map +1 -1
  187. package/bin/chat/runtime/ChatMetaStore.d.ts +19 -19
  188. package/bin/chat/runtime/ChatMetaStore.d.ts.map +1 -1
  189. package/bin/chat/runtime/ChatMetaStore.js +27 -27
  190. package/bin/chat/runtime/ChatMetaStore.js.map +1 -1
  191. package/bin/chat/runtime/ChatPluginActionRegistry.d.ts.map +1 -1
  192. package/bin/chat/runtime/ChatPluginActionRegistry.js +53 -59
  193. package/bin/chat/runtime/ChatPluginActionRegistry.js.map +1 -1
  194. package/bin/chat/runtime/ChatPluginSystem.d.ts +4 -4
  195. package/bin/chat/runtime/ChatPluginSystem.d.ts.map +1 -1
  196. package/bin/chat/runtime/ChatPluginSystem.js +5 -5
  197. package/bin/chat/runtime/ChatPluginSystem.js.map +1 -1
  198. package/bin/chat/runtime/ChatQueueReplyDispatch.d.ts +6 -6
  199. package/bin/chat/runtime/ChatQueueReplyDispatch.d.ts.map +1 -1
  200. package/bin/chat/runtime/ChatQueueReplyDispatch.js +41 -41
  201. package/bin/chat/runtime/ChatQueueReplyDispatch.js.map +1 -1
  202. package/bin/chat/runtime/ChatQueueStore.d.ts +3 -3
  203. package/bin/chat/runtime/ChatQueueStore.d.ts.map +1 -1
  204. package/bin/chat/runtime/ChatQueueStore.js +2 -2
  205. package/bin/chat/runtime/ChatQueueStore.js.map +1 -1
  206. package/bin/chat/runtime/ChatQueueWorker.d.ts +2 -2
  207. package/bin/chat/runtime/ChatQueueWorker.d.ts.map +1 -1
  208. package/bin/chat/runtime/ChatQueueWorker.js +30 -32
  209. package/bin/chat/runtime/ChatQueueWorker.js.map +1 -1
  210. package/bin/chat/runtime/ChatQueueWorkerSupport.d.ts +1 -1
  211. package/bin/chat/runtime/ChatQueueWorkerSupport.js +15 -15
  212. package/bin/chat/runtime/ChatQueueWorkerSupport.js.map +1 -1
  213. package/bin/chat/runtime/ChatSendActionInput.js +51 -51
  214. package/bin/chat/runtime/ChatSendActionInput.js.map +1 -1
  215. package/bin/chat/runtime/ChatSendMetadata.d.ts +1 -1
  216. package/bin/chat/runtime/ChatSendMetadata.js +12 -12
  217. package/bin/chat/runtime/ChatSendMetadata.js.map +1 -1
  218. package/bin/chat/runtime/ChatSendRegistry.d.ts +1 -1
  219. package/bin/chat/runtime/ChatSessionDelete.d.ts +7 -7
  220. package/bin/chat/runtime/ChatSessionDelete.d.ts.map +1 -1
  221. package/bin/chat/runtime/ChatSessionDelete.js +15 -15
  222. package/bin/chat/runtime/ChatSessionDelete.js.map +1 -1
  223. package/bin/chat/runtime/ChatStorage.d.ts +1 -1
  224. package/bin/chat/runtime/ChatStorage.js +3 -3
  225. package/bin/chat/runtime/ChatStorage.js.map +1 -1
  226. package/bin/chat/runtime/ChatkeySend.d.ts +21 -21
  227. package/bin/chat/runtime/ChatkeySend.d.ts.map +1 -1
  228. package/bin/chat/runtime/ChatkeySend.js +33 -33
  229. package/bin/chat/runtime/ChatkeySend.js.map +1 -1
  230. package/bin/chat/runtime/DirectDispatchParser.d.ts +2 -2
  231. package/bin/chat/runtime/DirectDispatchParser.js +20 -20
  232. package/bin/chat/runtime/DirectDispatchParser.js.map +1 -1
  233. package/bin/chat/runtime/EnqueueDispatch.d.ts +3 -3
  234. package/bin/chat/runtime/EnqueueDispatch.d.ts.map +1 -1
  235. package/bin/chat/runtime/InboundAugment.d.ts +3 -3
  236. package/bin/chat/runtime/InboundAugment.d.ts.map +1 -1
  237. package/bin/chat/runtime/InboundAugment.js +6 -6
  238. package/bin/chat/runtime/InboundAugment.js.map +1 -1
  239. package/bin/chat/runtime/QueuedUserMessage.js +5 -5
  240. package/bin/chat/runtime/QueuedUserMessage.js.map +1 -1
  241. package/bin/chat/runtime/ReplyContextFormatter.js +7 -7
  242. package/bin/chat/runtime/ReplyContextFormatter.js.map +1 -1
  243. package/bin/chat/runtime/ReplyDispatch.d.ts +7 -7
  244. package/bin/chat/runtime/ReplyDispatch.d.ts.map +1 -1
  245. package/bin/chat/runtime/ReplyDispatch.js +3 -3
  246. package/bin/chat/runtime/ReplyDispatch.js.map +1 -1
  247. package/bin/chat/runtime/SystemPrompt.d.ts +4 -4
  248. package/bin/chat/runtime/SystemPrompt.d.ts.map +1 -1
  249. package/bin/chat/runtime/SystemPrompt.js +10 -10
  250. package/bin/chat/runtime/SystemPrompt.js.map +1 -1
  251. package/bin/chat/types/ChannelContext.d.ts +11 -11
  252. package/bin/chat/types/ChannelContext.d.ts.map +1 -1
  253. package/bin/chat/types/ChannelContext.js +2 -2
  254. package/bin/chat/types/ChatCommand.d.ts +31 -31
  255. package/bin/chat/types/ChatCommand.d.ts.map +1 -1
  256. package/bin/chat/types/ChatDispatcher.d.ts +3 -3
  257. package/bin/chat/types/ChatDispatcher.d.ts.map +1 -1
  258. package/bin/chat/types/ChatHistory.d.ts +2 -2
  259. package/bin/chat/types/ChatHistory.d.ts.map +1 -1
  260. package/bin/chat/types/ChatMeta.d.ts +4 -4
  261. package/bin/chat/types/ChatMeta.d.ts.map +1 -1
  262. package/bin/chat/types/ChatMeta.js +1 -1
  263. package/bin/chat/types/ChatPlugin.d.ts +9 -9
  264. package/bin/chat/types/ChatPlugin.d.ts.map +1 -1
  265. package/bin/chat/types/ChatPluginActionPayload.d.ts +13 -13
  266. package/bin/chat/types/ChatPluginActionPayload.d.ts.map +1 -1
  267. package/bin/chat/types/ChatPluginOptions.d.ts +6 -6
  268. package/bin/chat/types/ChatPluginOptions.d.ts.map +1 -1
  269. package/bin/chat/types/ChatPluginResource.d.ts +68 -0
  270. package/bin/chat/types/ChatPluginResource.d.ts.map +1 -0
  271. package/bin/chat/types/ChatPluginResource.js +10 -0
  272. package/bin/chat/types/ChatPluginResource.js.map +1 -0
  273. package/bin/chat/types/ChatPromptContext.d.ts +8 -8
  274. package/bin/chat/types/ChatPromptContext.d.ts.map +1 -1
  275. package/bin/chat/types/ChatQueue.d.ts +2 -2
  276. package/bin/chat/types/ChatQueue.d.ts.map +1 -1
  277. package/bin/chat/types/ChatQueueWorker.d.ts +3 -3
  278. package/bin/chat/types/ChatQueueWorker.d.ts.map +1 -1
  279. package/bin/chat/types/ChatRuntimeAccount.d.ts +39 -0
  280. package/bin/chat/types/ChatRuntimeAccount.d.ts.map +1 -0
  281. package/bin/chat/types/ChatRuntimeAccount.js +10 -0
  282. package/bin/chat/types/ChatRuntimeAccount.js.map +1 -0
  283. package/bin/chat/types/DirectDispatch.d.ts +13 -13
  284. package/bin/chat/types/DirectDispatch.d.ts.map +1 -1
  285. package/bin/chat/types/DirectDispatch.js +1 -1
  286. package/bin/chat/types/FeishuInboundAttachment.d.ts +1 -1
  287. package/bin/chat/types/FeishuInboundAttachment.d.ts.map +1 -1
  288. package/bin/chat/types/QqInboundDedupe.d.ts +1 -1
  289. package/bin/chat/types/QqInboundDedupe.d.ts.map +1 -1
  290. package/bin/chat/types/ReplyContext.d.ts +1 -1
  291. package/bin/chat/types/ReplyContext.d.ts.map +1 -1
  292. package/bin/chat.d.ts +4 -3
  293. package/bin/chat.d.ts.map +1 -1
  294. package/bin/chat.js +2 -2
  295. package/bin/chat.js.map +1 -1
  296. package/bin/contact/Action.d.ts +11 -11
  297. package/bin/contact/Action.d.ts.map +1 -1
  298. package/bin/contact/Action.js +27 -27
  299. package/bin/contact/Action.js.map +1 -1
  300. package/bin/contact/ContactPlugin.js +33 -33
  301. package/bin/contact/ContactPlugin.js.map +1 -1
  302. package/bin/contact/runtime/ChatRuntime.d.ts +2 -2
  303. package/bin/contact/runtime/ChatRuntime.d.ts.map +1 -1
  304. package/bin/contact/runtime/ChatRuntime.js +8 -23
  305. package/bin/contact/runtime/ChatRuntime.js.map +1 -1
  306. package/bin/contact/runtime/ContactStore.d.ts +8 -8
  307. package/bin/contact/runtime/ContactStore.d.ts.map +1 -1
  308. package/bin/contact/runtime/ContactStore.js +24 -24
  309. package/bin/contact/runtime/ContactStore.js.map +1 -1
  310. package/bin/contact/runtime/InboxStore.d.ts +6 -6
  311. package/bin/contact/runtime/InboxStore.d.ts.map +1 -1
  312. package/bin/contact/runtime/InboxStore.js +16 -16
  313. package/bin/contact/runtime/InboxStore.js.map +1 -1
  314. package/bin/contact/runtime/LinkApproval.js +17 -17
  315. package/bin/contact/runtime/LinkApproval.js.map +1 -1
  316. package/bin/contact/runtime/LinkCode.d.ts +1 -1
  317. package/bin/contact/runtime/LinkCode.d.ts.map +1 -1
  318. package/bin/contact/runtime/LinkCode.js +6 -6
  319. package/bin/contact/runtime/LinkCode.js.map +1 -1
  320. package/bin/contact/runtime/LinkStore.d.ts +2 -2
  321. package/bin/contact/runtime/LinkStore.d.ts.map +1 -1
  322. package/bin/contact/runtime/LinkStore.js +7 -7
  323. package/bin/contact/runtime/LinkStore.js.map +1 -1
  324. package/bin/contact/runtime/Paths.d.ts +14 -14
  325. package/bin/contact/runtime/Paths.d.ts.map +1 -1
  326. package/bin/contact/runtime/Paths.js +28 -28
  327. package/bin/contact/runtime/Paths.js.map +1 -1
  328. package/bin/contact/runtime/RemoteClient.d.ts +1 -1
  329. package/bin/contact/runtime/RemoteClient.js +18 -18
  330. package/bin/contact/runtime/RemoteClient.js.map +1 -1
  331. package/bin/contact/runtime/ShareBundle.d.ts +3 -3
  332. package/bin/contact/runtime/ShareBundle.d.ts.map +1 -1
  333. package/bin/contact/runtime/ShareBundle.js +5 -5
  334. package/bin/contact/runtime/ShareBundle.js.map +1 -1
  335. package/bin/contact/types/Contact.d.ts +2 -2
  336. package/bin/contact/types/Contact.d.ts.map +1 -1
  337. package/bin/contact/types/ContactApproval.d.ts +2 -2
  338. package/bin/contact/types/ContactApproval.d.ts.map +1 -1
  339. package/bin/contact/types/ContactChat.d.ts +1 -1
  340. package/bin/contact/types/ContactChat.d.ts.map +1 -1
  341. package/bin/contact/types/ContactLink.d.ts +4 -4
  342. package/bin/contact/types/ContactLink.d.ts.map +1 -1
  343. package/bin/image/ImagePlugin.d.ts +3 -3
  344. package/bin/image/ImagePlugin.d.ts.map +1 -1
  345. package/bin/image/ImagePlugin.js +25 -10
  346. package/bin/image/ImagePlugin.js.map +1 -1
  347. package/bin/image/types/ImagePlugin.d.ts +3 -3
  348. package/bin/image/types/ImagePlugin.d.ts.map +1 -1
  349. package/bin/image/types/ImagePlugin.js +1 -1
  350. package/bin/memory/Action.d.ts +7 -7
  351. package/bin/memory/Action.d.ts.map +1 -1
  352. package/bin/memory/Action.js +11 -11
  353. package/bin/memory/Action.js.map +1 -1
  354. package/bin/memory/MemoryPlugin.d.ts +3 -3
  355. package/bin/memory/MemoryPlugin.d.ts.map +1 -1
  356. package/bin/memory/MemoryPlugin.js +21 -21
  357. package/bin/memory/MemoryPlugin.js.map +1 -1
  358. package/bin/memory/runtime/Search.d.ts +3 -3
  359. package/bin/memory/runtime/Search.d.ts.map +1 -1
  360. package/bin/memory/runtime/Search.js +2 -2
  361. package/bin/memory/runtime/Search.js.map +1 -1
  362. package/bin/memory/runtime/Store.d.ts +2 -2
  363. package/bin/memory/runtime/Store.d.ts.map +1 -1
  364. package/bin/memory/runtime/Store.js +1 -1
  365. package/bin/memory/runtime/Store.js.map +1 -1
  366. package/bin/memory/runtime/SystemProvider.d.ts +3 -3
  367. package/bin/memory/runtime/SystemProvider.d.ts.map +1 -1
  368. package/bin/memory/runtime/SystemProvider.js +1 -1
  369. package/bin/memory/runtime/SystemProvider.js.map +1 -1
  370. package/bin/memory/runtime/Writer.d.ts +8 -8
  371. package/bin/memory/runtime/Writer.d.ts.map +1 -1
  372. package/bin/memory/runtime/Writer.js +14 -14
  373. package/bin/memory/runtime/Writer.js.map +1 -1
  374. package/bin/memory/types/Memory.d.ts +3 -3
  375. package/bin/memory/types/Memory.d.ts.map +1 -1
  376. package/bin/skill/Action.d.ts +4 -4
  377. package/bin/skill/Action.d.ts.map +1 -1
  378. package/bin/skill/Action.js +9 -9
  379. package/bin/skill/Action.js.map +1 -1
  380. package/bin/skill/Plugin.js +16 -16
  381. package/bin/skill/Plugin.js.map +1 -1
  382. package/bin/skill/runtime/Discovery.d.ts +2 -2
  383. package/bin/skill/runtime/Discovery.d.ts.map +1 -1
  384. package/bin/skill/runtime/Discovery.js +3 -3
  385. package/bin/skill/runtime/Discovery.js.map +1 -1
  386. package/bin/skill/runtime/Paths.d.ts +1 -1
  387. package/bin/skill/runtime/Paths.d.ts.map +1 -1
  388. package/bin/skill/runtime/Paths.js +6 -6
  389. package/bin/skill/runtime/Paths.js.map +1 -1
  390. package/bin/skill/runtime/Store.d.ts +3 -3
  391. package/bin/skill/runtime/Store.d.ts.map +1 -1
  392. package/bin/skill/runtime/Store.js +19 -19
  393. package/bin/skill/runtime/Store.js.map +1 -1
  394. package/bin/skill/runtime/SystemProvider.d.ts +2 -2
  395. package/bin/skill/runtime/SystemProvider.d.ts.map +1 -1
  396. package/bin/skill/runtime/SystemProvider.js +4 -4
  397. package/bin/skill/runtime/SystemProvider.js.map +1 -1
  398. package/bin/skill/runtime/Types.d.ts +3 -3
  399. package/bin/skill/runtime/Types.d.ts.map +1 -1
  400. package/bin/sound/Plugin.d.ts +5 -5
  401. package/bin/sound/Plugin.d.ts.map +1 -1
  402. package/bin/sound/Plugin.js +23 -11
  403. package/bin/sound/Plugin.js.map +1 -1
  404. package/bin/task/Action.d.ts +10 -10
  405. package/bin/task/Action.d.ts.map +1 -1
  406. package/bin/task/Action.js +31 -31
  407. package/bin/task/Action.js.map +1 -1
  408. package/bin/task/PROMPT.d.ts +1 -1
  409. package/bin/task/PROMPT.d.ts.map +1 -1
  410. package/bin/task/PROMPT.js +1 -1
  411. package/bin/task/PROMPT.js.map +1 -1
  412. package/bin/task/Scheduler.d.ts +2 -2
  413. package/bin/task/Scheduler.d.ts.map +1 -1
  414. package/bin/task/Scheduler.js +8 -8
  415. package/bin/task/Scheduler.js.map +1 -1
  416. package/bin/task/TaskPlugin.d.ts +3 -3
  417. package/bin/task/TaskPlugin.d.ts.map +1 -1
  418. package/bin/task/TaskPlugin.js +23 -20
  419. package/bin/task/TaskPlugin.js.map +1 -1
  420. package/bin/task/runtime/Model.d.ts +2 -2
  421. package/bin/task/runtime/Model.d.ts.map +1 -1
  422. package/bin/task/runtime/Model.js +11 -11
  423. package/bin/task/runtime/Model.js.map +1 -1
  424. package/bin/task/runtime/Paths.d.ts +6 -6
  425. package/bin/task/runtime/Paths.d.ts.map +1 -1
  426. package/bin/task/runtime/Paths.js +11 -11
  427. package/bin/task/runtime/Paths.js.map +1 -1
  428. package/bin/task/runtime/Runner.d.ts +4 -4
  429. package/bin/task/runtime/Runner.d.ts.map +1 -1
  430. package/bin/task/runtime/Runner.js +17 -17
  431. package/bin/task/runtime/Runner.js.map +1 -1
  432. package/bin/task/runtime/Store.d.ts +7 -7
  433. package/bin/task/runtime/Store.d.ts.map +1 -1
  434. package/bin/task/runtime/Store.js +15 -15
  435. package/bin/task/runtime/Store.js.map +1 -1
  436. package/bin/task/runtime/TaskActionExecution.d.ts +12 -12
  437. package/bin/task/runtime/TaskActionExecution.d.ts.map +1 -1
  438. package/bin/task/runtime/TaskActionExecution.js +7 -7
  439. package/bin/task/runtime/TaskActionExecution.js.map +1 -1
  440. package/bin/task/runtime/TaskActionInput.js +10 -10
  441. package/bin/task/runtime/TaskActionInput.js.map +1 -1
  442. package/bin/task/runtime/TaskPluginActionRegistry.js +26 -26
  443. package/bin/task/runtime/TaskPluginActionRegistry.js.map +1 -1
  444. package/bin/task/runtime/TaskRunArtifacts.js +4 -4
  445. package/bin/task/runtime/TaskRunArtifacts.js.map +1 -1
  446. package/bin/task/runtime/TaskRunChatDispatch.d.ts +2 -2
  447. package/bin/task/runtime/TaskRunChatDispatch.d.ts.map +1 -1
  448. package/bin/task/runtime/TaskRunChatDispatch.js +7 -7
  449. package/bin/task/runtime/TaskRunChatDispatch.js.map +1 -1
  450. package/bin/task/runtime/TaskRunnerProgress.js +1 -1
  451. package/bin/task/runtime/TaskRunnerProgress.js.map +1 -1
  452. package/bin/task/runtime/TaskRunnerRound.d.ts +7 -7
  453. package/bin/task/runtime/TaskRunnerRound.d.ts.map +1 -1
  454. package/bin/task/runtime/TaskRunnerRound.js +34 -38
  455. package/bin/task/runtime/TaskRunnerRound.js.map +1 -1
  456. package/bin/task/runtime/TaskRunnerScript.d.ts +4 -4
  457. package/bin/task/runtime/TaskRunnerScript.d.ts.map +1 -1
  458. package/bin/task/runtime/TaskRunnerScript.js +1 -1
  459. package/bin/task/runtime/TaskRunnerScript.js.map +1 -1
  460. package/bin/task/runtime/TaskRunnerSession.d.ts +8 -8
  461. package/bin/task/runtime/TaskRunnerSession.d.ts.map +1 -1
  462. package/bin/task/runtime/TaskRunnerSession.js +52 -39
  463. package/bin/task/runtime/TaskRunnerSession.js.map +1 -1
  464. package/bin/task/runtime/TaskRunnerTypes.d.ts +5 -5
  465. package/bin/task/runtime/TaskRunnerTypes.d.ts.map +1 -1
  466. package/bin/task/types/Task.d.ts +4 -4
  467. package/bin/task/types/Task.d.ts.map +1 -1
  468. package/bin/task/types/TaskCommand.d.ts +3 -3
  469. package/bin/task/types/TaskCommand.d.ts.map +1 -1
  470. package/bin/web/Plugin.d.ts +2 -2
  471. package/bin/web/Plugin.d.ts.map +1 -1
  472. package/bin/web/Plugin.js +3 -3
  473. package/bin/web/Plugin.js.map +1 -1
  474. package/bin/workboard/Plugin.d.ts.map +1 -1
  475. package/bin/workboard/Plugin.js +6 -7
  476. package/bin/workboard/Plugin.js.map +1 -1
  477. package/bin/workboard/runtime/Collector.d.ts +2 -2
  478. package/bin/workboard/runtime/Collector.d.ts.map +1 -1
  479. package/bin/workboard/runtime/Collector.js +4 -4
  480. package/bin/workboard/runtime/Collector.js.map +1 -1
  481. package/bin/workboard/runtime/Normalizer.d.ts +3 -3
  482. package/bin/workboard/runtime/Normalizer.d.ts.map +1 -1
  483. package/bin/workboard/runtime/Normalizer.js +11 -11
  484. package/bin/workboard/runtime/Normalizer.js.map +1 -1
  485. package/bin/workboard/runtime/SessionSummary.d.ts +5 -5
  486. package/bin/workboard/runtime/SessionSummary.d.ts.map +1 -1
  487. package/bin/workboard/runtime/SessionSummary.js +4 -4
  488. package/bin/workboard/runtime/SessionSummary.js.map +1 -1
  489. package/bin/workboard/runtime/Store.d.ts +5 -5
  490. package/bin/workboard/runtime/Store.d.ts.map +1 -1
  491. package/bin/workboard/runtime/Store.js.map +1 -1
  492. package/bin/workboard/types/Workboard.d.ts +2 -2
  493. package/bin/workboard/types/Workboard.d.ts.map +1 -1
  494. package/bin/workboard/types/Workboard.js +1 -1
  495. package/package.json +3 -3
  496. package/scripts/chat-access.test.mjs +2 -2
  497. package/scripts/chat-channel-config.test.mjs +25 -3
  498. package/scripts/chat-storage.test.mjs +7 -7
  499. package/scripts/skill-plugin.test.mjs +4 -4
  500. package/scripts/sound-plugin.test.mjs +12 -8
  501. package/scripts/web-plugin.test.mjs +4 -4
  502. package/src/chat/Action.ts +154 -153
  503. package/src/chat/ChatPlugin.ts +12 -12
  504. package/src/chat/Index.ts +12 -0
  505. package/src/chat/PROMPT.direct.ts +1 -1
  506. package/src/chat/access/ChatAccessActions.ts +6 -6
  507. package/src/chat/access/ChatAccessRuntime.ts +5 -5
  508. package/src/chat/access/ChatAccessStore.ts +5 -5
  509. package/src/chat/channels/BaseChatChannel.ts +32 -32
  510. package/src/chat/channels/BaseChatChannelQueue.ts +38 -38
  511. package/src/chat/channels/BaseChatChannelSupport.ts +25 -25
  512. package/src/chat/channels/RuntimeChannel.ts +53 -74
  513. package/src/chat/channels/feishu/Feishu.ts +35 -35
  514. package/src/chat/channels/feishu/FeishuInbound.ts +3 -3
  515. package/src/chat/channels/feishu/FeishuMessageHandler.ts +29 -29
  516. package/src/chat/channels/feishu/FeishuPlatformClient.ts +15 -15
  517. package/src/chat/channels/feishu/FeishuPlatformLookup.ts +7 -7
  518. package/src/chat/channels/feishu/FeishuPlatformMessaging.ts +7 -7
  519. package/src/chat/channels/feishu/InboundAttachment.ts +6 -6
  520. package/src/chat/channels/feishu/PostMessage.ts +8 -8
  521. package/src/chat/channels/feishu/ReplyContext.ts +3 -3
  522. package/src/chat/channels/feishu/Shared.ts +3 -3
  523. package/src/chat/channels/qq/PROMPT.direct.ts +1 -1
  524. package/src/chat/channels/qq/QQ.ts +26 -26
  525. package/src/chat/channels/qq/QQEventCapture.ts +3 -3
  526. package/src/chat/channels/qq/QQGatewayAuth.ts +1 -1
  527. package/src/chat/channels/qq/QQGatewayClient.ts +12 -12
  528. package/src/chat/channels/qq/QQGatewayConnection.ts +1 -1
  529. package/src/chat/channels/qq/QQGatewaySend.ts +6 -6
  530. package/src/chat/channels/qq/QQInbound.ts +5 -5
  531. package/src/chat/channels/qq/QQInboundDedupe.ts +6 -6
  532. package/src/chat/channels/qq/QQMessageHandler.ts +43 -43
  533. package/src/chat/channels/qq/QQSendSupport.ts +2 -2
  534. package/src/chat/channels/qq/QQSupport.ts +10 -10
  535. package/src/chat/channels/qq/types/QqChannel.ts +1 -1
  536. package/src/chat/channels/telegram/ApiClient.ts +7 -7
  537. package/src/chat/channels/telegram/Bot.ts +17 -17
  538. package/src/chat/channels/telegram/BotInfo.ts +1 -1
  539. package/src/chat/channels/telegram/ReplyContext.ts +3 -3
  540. package/src/chat/channels/telegram/Shared.ts +3 -3
  541. package/src/chat/channels/telegram/StateStore.ts +2 -2
  542. package/src/chat/channels/telegram/TelegramInbound.ts +4 -4
  543. package/src/chat/channels/telegram/TelegramMessageHandler.ts +35 -35
  544. package/src/chat/channels/telegram/TelegramPendingUpdates.ts +9 -9
  545. package/src/chat/channels/telegram/TelegramPlatformClient.ts +11 -11
  546. package/src/chat/config/ChatPluginConfig.ts +266 -0
  547. package/src/chat/runtime/ChannelContextStore.ts +88 -88
  548. package/src/chat/runtime/ChatActionExecution.ts +87 -87
  549. package/src/chat/runtime/ChatActionInput.ts +19 -19
  550. package/src/chat/runtime/ChatChannelActions.ts +4 -4
  551. package/src/chat/runtime/ChatChannelConfig.ts +14 -14
  552. package/src/chat/runtime/ChatChannelCore.ts +17 -26
  553. package/src/chat/runtime/ChatChannelLifecycle.ts +12 -12
  554. package/src/chat/runtime/ChatHistoryStore.ts +39 -39
  555. package/src/chat/runtime/ChatIngressStore.ts +6 -6
  556. package/src/chat/runtime/ChatMetaStore.ts +37 -37
  557. package/src/chat/runtime/ChatPluginActionRegistry.ts +56 -62
  558. package/src/chat/runtime/ChatPluginSystem.ts +9 -9
  559. package/src/chat/runtime/ChatQueueReplyDispatch.ts +47 -47
  560. package/src/chat/runtime/ChatQueueStore.ts +4 -4
  561. package/src/chat/runtime/ChatQueueWorker.ts +38 -44
  562. package/src/chat/runtime/ChatQueueWorkerSupport.ts +18 -18
  563. package/src/chat/runtime/ChatSendActionInput.ts +53 -53
  564. package/src/chat/runtime/ChatSendMetadata.ts +15 -15
  565. package/src/chat/runtime/ChatSendRegistry.ts +1 -1
  566. package/src/chat/runtime/ChatSessionDelete.ts +19 -19
  567. package/src/chat/runtime/ChatStorage.ts +3 -3
  568. package/src/chat/runtime/ChatkeySend.ts +43 -43
  569. package/src/chat/runtime/DirectDispatchParser.ts +21 -21
  570. package/src/chat/runtime/EnqueueDispatch.ts +3 -3
  571. package/src/chat/runtime/InboundAugment.ts +8 -8
  572. package/src/chat/runtime/QueuedUserMessage.ts +6 -6
  573. package/src/chat/runtime/ReplyContextFormatter.ts +6 -6
  574. package/src/chat/runtime/ReplyDispatch.ts +9 -9
  575. package/src/chat/runtime/SystemPrompt.ts +14 -14
  576. package/src/chat/types/ChannelContext.ts +11 -11
  577. package/src/chat/types/ChatCommand.ts +31 -31
  578. package/src/chat/types/ChatDispatcher.ts +3 -3
  579. package/src/chat/types/ChatHistory.ts +2 -2
  580. package/src/chat/types/ChatMeta.ts +4 -4
  581. package/src/chat/types/ChatPlugin.ts +9 -9
  582. package/src/chat/types/ChatPluginActionPayload.ts +13 -13
  583. package/src/chat/types/ChatPluginOptions.ts +6 -6
  584. package/src/chat/types/ChatPluginResource.ts +95 -0
  585. package/src/chat/types/ChatPromptContext.ts +8 -8
  586. package/src/chat/types/ChatQueue.ts +2 -2
  587. package/src/chat/types/ChatQueueWorker.ts +3 -3
  588. package/src/chat/types/ChatRuntimeAccount.ts +52 -0
  589. package/src/chat/types/DirectDispatch.ts +13 -13
  590. package/src/chat/types/FeishuInboundAttachment.ts +1 -1
  591. package/src/chat/types/QqInboundDedupe.ts +1 -1
  592. package/src/chat/types/ReplyContext.ts +1 -1
  593. package/src/chat.ts +13 -3
  594. package/src/contact/Action.ts +40 -40
  595. package/src/contact/ContactPlugin.ts +49 -49
  596. package/src/contact/runtime/ChatRuntime.ts +10 -26
  597. package/src/contact/runtime/ContactStore.ts +24 -24
  598. package/src/contact/runtime/InboxStore.ts +16 -16
  599. package/src/contact/runtime/LinkApproval.ts +19 -19
  600. package/src/contact/runtime/LinkCode.ts +7 -7
  601. package/src/contact/runtime/LinkStore.ts +7 -7
  602. package/src/contact/runtime/Paths.ts +28 -28
  603. package/src/contact/runtime/RemoteClient.ts +19 -19
  604. package/src/contact/runtime/ShareBundle.ts +8 -8
  605. package/src/contact/types/Contact.ts +2 -2
  606. package/src/contact/types/ContactApproval.ts +2 -2
  607. package/src/contact/types/ContactChat.ts +1 -1
  608. package/src/contact/types/ContactLink.ts +4 -4
  609. package/src/image/ImagePlugin.ts +32 -16
  610. package/src/image/types/ImagePlugin.ts +3 -3
  611. package/src/memory/Action.ts +18 -18
  612. package/src/memory/MemoryPlugin.ts +25 -25
  613. package/src/memory/runtime/Search.ts +6 -6
  614. package/src/memory/runtime/Store.ts +3 -3
  615. package/src/memory/runtime/SystemProvider.ts +4 -4
  616. package/src/memory/runtime/Writer.ts +24 -24
  617. package/src/memory/types/Memory.ts +3 -3
  618. package/src/skill/Action.ts +10 -10
  619. package/src/skill/Plugin.ts +16 -16
  620. package/src/skill/runtime/Discovery.ts +3 -3
  621. package/src/skill/runtime/Paths.ts +6 -6
  622. package/src/skill/runtime/Store.ts +19 -19
  623. package/src/skill/runtime/SystemProvider.ts +5 -5
  624. package/src/skill/runtime/Types.ts +3 -3
  625. package/src/sound/Plugin.ts +31 -18
  626. package/src/task/Action.ts +40 -40
  627. package/src/task/PROMPT.ts +1 -1
  628. package/src/task/Scheduler.ts +10 -10
  629. package/src/task/TaskPlugin.ts +32 -30
  630. package/src/task/runtime/Model.ts +12 -12
  631. package/src/task/runtime/Paths.ts +11 -11
  632. package/src/task/runtime/Runner.ts +21 -21
  633. package/src/task/runtime/Store.ts +21 -21
  634. package/src/task/runtime/TaskActionExecution.ts +19 -19
  635. package/src/task/runtime/TaskActionInput.ts +10 -10
  636. package/src/task/runtime/TaskPluginActionRegistry.ts +27 -27
  637. package/src/task/runtime/TaskRunArtifacts.ts +4 -4
  638. package/src/task/runtime/TaskRunChatDispatch.ts +9 -9
  639. package/src/task/runtime/TaskRunnerProgress.ts +1 -1
  640. package/src/task/runtime/TaskRunnerRound.ts +47 -42
  641. package/src/task/runtime/TaskRunnerScript.ts +5 -5
  642. package/src/task/runtime/TaskRunnerSession.ts +58 -46
  643. package/src/task/runtime/TaskRunnerTypes.ts +5 -5
  644. package/src/task/types/Task.ts +4 -4
  645. package/src/task/types/TaskCommand.ts +3 -3
  646. package/src/web/Plugin.ts +5 -5
  647. package/src/workboard/Plugin.ts +8 -9
  648. package/src/workboard/runtime/Collector.ts +6 -6
  649. package/src/workboard/runtime/Normalizer.ts +14 -14
  650. package/src/workboard/runtime/SessionSummary.ts +9 -9
  651. package/src/workboard/runtime/Store.ts +6 -6
  652. package/src/workboard/types/Workboard.ts +2 -2
  653. package/bin/chat/accounts/ChannelAccountManager.d.ts +0 -61
  654. package/bin/chat/accounts/ChannelAccountManager.d.ts.map +0 -1
  655. package/bin/chat/accounts/ChannelAccountManager.js +0 -264
  656. package/bin/chat/accounts/ChannelAccountManager.js.map +0 -1
  657. package/bin/chat/accounts/Crypto.d.ts +0 -20
  658. package/bin/chat/accounts/Crypto.d.ts.map +0 -1
  659. package/bin/chat/accounts/Crypto.js +0 -75
  660. package/bin/chat/accounts/Crypto.js.map +0 -1
  661. package/bin/chat/accounts/Store.d.ts +0 -38
  662. package/bin/chat/accounts/Store.d.ts.map +0 -1
  663. package/bin/chat/accounts/Store.js +0 -220
  664. package/bin/chat/accounts/Store.js.map +0 -1
  665. package/bin/chat/channels/Configuration.d.ts +0 -27
  666. package/bin/chat/channels/Configuration.d.ts.map +0 -1
  667. package/bin/chat/channels/Configuration.js +0 -19
  668. package/bin/chat/channels/Configuration.js.map +0 -1
  669. package/bin/chat/channels/ConfigurationRegistry.d.ts +0 -18
  670. package/bin/chat/channels/ConfigurationRegistry.d.ts.map +0 -1
  671. package/bin/chat/channels/ConfigurationRegistry.js +0 -31
  672. package/bin/chat/channels/ConfigurationRegistry.js.map +0 -1
  673. package/bin/chat/channels/feishu/Configuration.d.ts +0 -17
  674. package/bin/chat/channels/feishu/Configuration.d.ts.map +0 -1
  675. package/bin/chat/channels/feishu/Configuration.js +0 -59
  676. package/bin/chat/channels/feishu/Configuration.js.map +0 -1
  677. package/bin/chat/channels/qq/Configuration.d.ts +0 -17
  678. package/bin/chat/channels/qq/Configuration.d.ts.map +0 -1
  679. package/bin/chat/channels/qq/Configuration.js +0 -59
  680. package/bin/chat/channels/qq/Configuration.js.map +0 -1
  681. package/bin/chat/channels/telegram/Configuration.d.ts +0 -17
  682. package/bin/chat/channels/telegram/Configuration.d.ts.map +0 -1
  683. package/bin/chat/channels/telegram/Configuration.js +0 -59
  684. package/bin/chat/channels/telegram/Configuration.js.map +0 -1
  685. package/bin/chat/types/ChannelAccount.d.ts +0 -226
  686. package/bin/chat/types/ChannelAccount.d.ts.map +0 -1
  687. package/bin/chat/types/ChannelAccount.js +0 -9
  688. package/bin/chat/types/ChannelAccount.js.map +0 -1
  689. package/bin/chat/types/ChannelConfiguration.d.ts +0 -146
  690. package/bin/chat/types/ChannelConfiguration.d.ts.map +0 -1
  691. package/bin/chat/types/ChannelConfiguration.js +0 -9
  692. package/bin/chat/types/ChannelConfiguration.js.map +0 -1
  693. package/src/chat/accounts/ChannelAccountManager.ts +0 -314
  694. package/src/chat/accounts/Crypto.ts +0 -83
  695. package/src/chat/accounts/Store.ts +0 -287
  696. package/src/chat/channels/Configuration.ts +0 -35
  697. package/src/chat/channels/ConfigurationRegistry.ts +0 -43
  698. package/src/chat/channels/feishu/Configuration.ts +0 -65
  699. package/src/chat/channels/qq/Configuration.ts +0 -64
  700. package/src/chat/channels/telegram/Configuration.ts +0 -65
  701. package/src/chat/types/ChannelAccount.ts +0 -232
  702. package/src/chat/types/ChannelConfiguration.ts +0 -160
@@ -1,314 +0,0 @@
1
- /**
2
- * Chat account 管理器。
3
- *
4
- * 关键点(中文)
5
- * - 统一封装 agent 运行时下 chat account 的 CRUD 与探测。
6
- * - 账号凭据只在写入路径接收明文;列表与读取路径返回脱敏结果。
7
- * - city / vibecape 等上层产品都应直接复用这个实现,而不是各自维护副本。
8
- */
9
-
10
- import crypto from "node:crypto";
11
- import type { StoredChannelAccountChannel } from "@downcity/agent";
12
- import { resolveChatChannelBotInfo } from "@/chat/channels/BotInfoProvider.js";
13
- import {
14
- getStoredChannelAccountSync,
15
- listStoredChannelAccountsSync,
16
- normalizeChannelAccountChannel,
17
- removeStoredChannelAccount,
18
- upsertStoredChannelAccount,
19
- } from "./Store.js";
20
- import type {
21
- ChatChannelAccountCreateInput,
22
- ChatChannelAccountListItem,
23
- ChatChannelAccountListResult,
24
- ChatChannelAccountProbeResult,
25
- ChatChannelAccountUpsertInput,
26
- } from "@/chat/types/ChannelAccount.js";
27
- import type { StoredChannelAccount } from "@downcity/agent";
28
-
29
- const SUPPORTED_CHANNELS: readonly StoredChannelAccountChannel[] = [
30
- "telegram",
31
- "feishu",
32
- "qq",
33
- ];
34
-
35
- function maskSecret(value: string | undefined): string {
36
- const raw = String(value || "").trim();
37
- if (!raw) return "";
38
- if (raw.length <= 8) return "***";
39
- return `${raw.slice(0, 4)}***${raw.slice(-4)}`;
40
- }
41
-
42
- function assertChannel(input: string): StoredChannelAccountChannel {
43
- const channel = String(input || "").trim().toLowerCase() as StoredChannelAccountChannel;
44
- if (!SUPPORTED_CHANNELS.includes(channel)) {
45
- throw new Error(
46
- `Unsupported channel: ${input}. Supported: ${SUPPORTED_CHANNELS.join(", ")}`,
47
- );
48
- }
49
- return channel;
50
- }
51
-
52
- function normalizeOptionalText(value: unknown): string | undefined {
53
- const text = String(value || "").trim();
54
- return text || undefined;
55
- }
56
-
57
- function normalizeChannelAccountIdToken(value: string): string {
58
- const token = String(value || "")
59
- .trim()
60
- .toLowerCase()
61
- .replace(/[^a-z0-9_-]+/g, "-")
62
- .replace(/-+/g, "-")
63
- .replace(/^-+/, "")
64
- .replace(/-+$/, "");
65
- return token || "bot";
66
- }
67
-
68
- function pickFirstNonEmpty(inputs: unknown[]): string {
69
- for (const input of inputs) {
70
- const text = String(input || "").trim();
71
- if (text) return text;
72
- }
73
- return "";
74
- }
75
-
76
- /**
77
- * ChatChannelAccountManager。
78
- */
79
- export class ChatChannelAccountManager {
80
- constructor() {}
81
-
82
- /**
83
- * 生成唯一 chat account id。
84
- *
85
- * 关键点(中文)
86
- * - 账号 id 统一由系统生成,避免用户手填导致冲突或命名不一致。
87
- * - 若碰撞则自动追加随机后缀重试。
88
- */
89
- private async generateUniqueAccountId(params: {
90
- channel: StoredChannelAccountChannel;
91
- seed?: string;
92
- }): Promise<string> {
93
- const seed = normalizeChannelAccountIdToken(params.seed || "");
94
- const prefix = `${params.channel}-${seed}`.slice(0, 36);
95
- for (let index = 0; index < 8; index += 1) {
96
- const suffix = crypto.randomBytes(3).toString("hex");
97
- const candidate = `${prefix}-${suffix}`.slice(0, 64);
98
- const existing = getStoredChannelAccountSync(candidate);
99
- if (!existing) return candidate;
100
- }
101
- return `${params.channel}-${Date.now().toString(36)}`;
102
- }
103
-
104
- /**
105
- * 探测 bot 凭据并返回自动填充信息。
106
- */
107
- async probe(input: {
108
- channel: string;
109
- botToken?: string;
110
- appId?: string;
111
- appSecret?: string;
112
- domain?: string;
113
- sandbox?: boolean;
114
- }): Promise<ChatChannelAccountProbeResult> {
115
- const channel = assertChannel(input.channel);
116
- const botInfo = await resolveChatChannelBotInfo({
117
- channel,
118
- credentials: {
119
- botToken: normalizeOptionalText(input.botToken),
120
- appId: normalizeOptionalText(input.appId),
121
- appSecret: normalizeOptionalText(input.appSecret),
122
- domain: normalizeOptionalText(input.domain),
123
- sandbox: input.sandbox === true,
124
- },
125
- });
126
- const accountId = await this.generateUniqueAccountId({
127
- channel,
128
- seed: pickFirstNonEmpty([
129
- botInfo.idSeed,
130
- botInfo.botUserId,
131
- botInfo.identity,
132
- botInfo.name,
133
- "bot",
134
- ]),
135
- });
136
-
137
- return {
138
- channel,
139
- accountId,
140
- name: botInfo.name,
141
- identity: botInfo.identity,
142
- owner: botInfo.owner,
143
- creator: botInfo.creator,
144
- botUserId: botInfo.botUserId,
145
- message: botInfo.message,
146
- };
147
- }
148
-
149
- /**
150
- * 使用凭据创建账号。
151
- *
152
- * 关键点(中文)
153
- * - 默认先尝试探测 bot 信息,成功时自动填充名称与身份。
154
- * - 探测失败但用户提供了名称时,仍允许先保存,便于后续排障。
155
- */
156
- async create(input: ChatChannelAccountCreateInput): Promise<{
157
- id: string;
158
- probed: boolean;
159
- message?: string;
160
- }> {
161
- const channel = assertChannel(input.channel);
162
- let probeResult: ChatChannelAccountProbeResult | null = null;
163
- if (input.probe !== false) {
164
- try {
165
- probeResult = await this.probe({
166
- channel,
167
- botToken: input.botToken,
168
- appId: input.appId,
169
- appSecret: input.appSecret,
170
- domain: input.domain,
171
- sandbox: input.sandbox,
172
- });
173
- } catch (error) {
174
- if (!normalizeOptionalText(input.name)) {
175
- throw error;
176
- }
177
- }
178
- }
179
-
180
- const id =
181
- probeResult?.accountId ||
182
- (await this.generateUniqueAccountId({
183
- channel,
184
- seed: pickFirstNonEmpty([input.name, input.appId, "bot"]),
185
- }));
186
- const name = normalizeOptionalText(input.name) || probeResult?.name || `${channel} bot`;
187
-
188
- await this.upsert({
189
- id,
190
- channel,
191
- name,
192
- identity: probeResult?.identity,
193
- owner: probeResult?.owner,
194
- creator: probeResult?.creator,
195
- botToken: input.botToken,
196
- appId: input.appId,
197
- appSecret: input.appSecret,
198
- domain: input.domain,
199
- sandbox: input.sandbox,
200
- });
201
-
202
- return {
203
- id,
204
- probed: Boolean(probeResult),
205
- message: probeResult?.message,
206
- };
207
- }
208
-
209
- /**
210
- * 列出账户池(脱敏)。
211
- */
212
- async list(): Promise<ChatChannelAccountListResult> {
213
- return {
214
- items: listStoredChannelAccountsSync().map((account) =>
215
- toChannelAccountListItem(account),
216
- ),
217
- };
218
- }
219
-
220
- /**
221
- * 新增或更新账号。
222
- */
223
- async upsert(input: ChatChannelAccountUpsertInput): Promise<{ id: string }> {
224
- const id = String(input.id || "").trim();
225
- if (!id) throw new Error("chat account id cannot be empty");
226
- const name = String(input.name || "").trim();
227
- if (!name) throw new Error("chat account name cannot be empty");
228
-
229
- const channel = normalizeChannelAccountChannel(input.channel);
230
-
231
- if (input.botToken !== undefined && input.clearBotToken === true) {
232
- throw new Error("botToken and clearBotToken cannot be used together");
233
- }
234
- if (input.appId !== undefined && input.clearAppId === true) {
235
- throw new Error("appId and clearAppId cannot be used together");
236
- }
237
- if (input.appSecret !== undefined && input.clearAppSecret === true) {
238
- throw new Error("appSecret and clearAppSecret cannot be used together");
239
- }
240
-
241
- const current = getStoredChannelAccountSync(id);
242
- const nextBotToken = input.clearBotToken
243
- ? undefined
244
- : input.botToken !== undefined
245
- ? normalizeOptionalText(input.botToken)
246
- : current?.botToken;
247
- const nextAppId = input.clearAppId
248
- ? undefined
249
- : input.appId !== undefined
250
- ? normalizeOptionalText(input.appId)
251
- : current?.appId;
252
- const nextAppSecret = input.clearAppSecret
253
- ? undefined
254
- : input.appSecret !== undefined
255
- ? normalizeOptionalText(input.appSecret)
256
- : current?.appSecret;
257
- const nextIdentity = Object.prototype.hasOwnProperty.call(input, "identity")
258
- ? normalizeOptionalText(input.identity)
259
- : current?.identity;
260
- const nextOwner = Object.prototype.hasOwnProperty.call(input, "owner")
261
- ? normalizeOptionalText(input.owner)
262
- : current?.owner;
263
- const nextCreator = Object.prototype.hasOwnProperty.call(input, "creator")
264
- ? normalizeOptionalText(input.creator)
265
- : current?.creator;
266
-
267
- await upsertStoredChannelAccount({
268
- id,
269
- channel,
270
- name,
271
- identity: nextIdentity,
272
- owner: nextOwner,
273
- creator: nextCreator,
274
- botToken: nextBotToken,
275
- appId: nextAppId,
276
- appSecret: nextAppSecret,
277
- domain: normalizeOptionalText(input.domain),
278
- sandbox: input.sandbox === true,
279
- });
280
- return { id };
281
- }
282
-
283
- /**
284
- * 删除账号。
285
- */
286
- async remove(idInput: string): Promise<void> {
287
- const id = String(idInput || "").trim();
288
- if (!id) throw new Error("chat account id cannot be empty");
289
- await removeStoredChannelAccount(id);
290
- }
291
- }
292
-
293
- function toChannelAccountListItem(
294
- account: StoredChannelAccount,
295
- ): ChatChannelAccountListItem {
296
- return {
297
- id: account.id,
298
- channel: account.channel,
299
- name: account.name,
300
- identity: account.identity,
301
- owner: account.owner,
302
- creator: account.creator,
303
- domain: account.domain,
304
- sandbox: account.sandbox === true,
305
- hasBotToken: !!String(account.botToken || "").trim(),
306
- hasAppId: !!String(account.appId || "").trim(),
307
- hasAppSecret: !!String(account.appSecret || "").trim(),
308
- botTokenMasked: maskSecret(account.botToken),
309
- appIdMasked: maskSecret(account.appId),
310
- appSecretMasked: maskSecret(account.appSecret),
311
- createdAt: account.createdAt,
312
- updatedAt: account.updatedAt,
313
- };
314
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * Channel account 默认存储加密工具。
3
- *
4
- * 职责说明(中文)
5
- * - 负责默认 chat account 存储中的敏感字段加解密。
6
- * - 复用 `DC_PLATFORM_ROOT` 下的平台级 `model-db.key`。
7
- *
8
- * 边界说明(中文)
9
- * - 这里只处理“字符串 <-> 密文”的转换,不负责数据库读写。
10
- * - 加密算法与密钥文件路径属于默认实现细节,上层不直接感知。
11
- */
12
-
13
- import crypto from "node:crypto";
14
- import fs from "fs-extra";
15
- import path from "node:path";
16
- import { getPlatformStoreKeyPath } from "@downcity/agent";
17
-
18
- const ENCRYPTION_ALGO = "aes-256-gcm";
19
-
20
- let cachedKey: Buffer | null = null;
21
-
22
- function resolveKeyFilePathSync(): string {
23
- const keyPath = getPlatformStoreKeyPath();
24
- fs.ensureDirSync(path.dirname(keyPath));
25
- return keyPath;
26
- }
27
-
28
- function loadOrCreateKeySync(): Buffer {
29
- if (cachedKey) return cachedKey;
30
-
31
- const envKey = String(process.env.DC_MODEL_DB_KEY || "").trim();
32
- if (envKey) {
33
- cachedKey = crypto.createHash("sha256").update(envKey, "utf8").digest();
34
- return cachedKey;
35
- }
36
-
37
- const keyPath = resolveKeyFilePathSync();
38
- if (fs.existsSync(keyPath)) {
39
- const raw = String(fs.readFileSync(keyPath, "utf8")).trim();
40
- if (raw) {
41
- const parsed = Buffer.from(raw, "base64");
42
- if (parsed.length === 32) {
43
- cachedKey = parsed;
44
- return cachedKey;
45
- }
46
- }
47
- }
48
-
49
- const next = crypto.randomBytes(32);
50
- fs.writeFileSync(keyPath, next.toString("base64"), { mode: 0o600 });
51
- cachedKey = next;
52
- return cachedKey;
53
- }
54
-
55
- /**
56
- * 同步加密字符串。
57
- */
58
- export function encryptTextSync(plainText: string): string {
59
- const key = loadOrCreateKeySync();
60
- const iv = crypto.randomBytes(12);
61
- const cipher = crypto.createCipheriv(ENCRYPTION_ALGO, key, iv);
62
- const encrypted = Buffer.concat([cipher.update(plainText, "utf8"), cipher.final()]);
63
- const tag = cipher.getAuthTag();
64
- return Buffer.concat([iv, tag, encrypted]).toString("base64");
65
- }
66
-
67
- /**
68
- * 同步解密字符串。
69
- */
70
- export function decryptTextSync(cipherText: string): string {
71
- const key = loadOrCreateKeySync();
72
- const packed = Buffer.from(cipherText, "base64");
73
- if (packed.length < 28) {
74
- throw new Error("Invalid encrypted payload");
75
- }
76
- const iv = packed.subarray(0, 12);
77
- const tag = packed.subarray(12, 28);
78
- const body = packed.subarray(28);
79
- const decipher = crypto.createDecipheriv(ENCRYPTION_ALGO, key, iv);
80
- decipher.setAuthTag(tag);
81
- const plain = Buffer.concat([decipher.update(body), decipher.final()]);
82
- return plain.toString("utf8");
83
- }
@@ -1,287 +0,0 @@
1
- /**
2
- * Chat account 默认存储实现。
3
- *
4
- * 职责说明(中文)
5
- * - 提供 `chat` plugin 默认使用的全局 chat account 读写能力。
6
- * - 直接操作 `DC_PLATFORM_ROOT` 下 `downcity.db` 的 `channel_accounts` 表。
7
- * - 对 `city` 而言,这里也是统一的默认账号池实现来源。
8
- *
9
- * 边界说明(中文)
10
- * - 这里只负责 chat account 这一个表,不扩展成通用平台数据库门面。
11
- * - 模型池、env、其他平台级配置仍由各自模块独立管理。
12
- */
13
-
14
- import Database from "better-sqlite3";
15
- import fs from "fs-extra";
16
- import path from "node:path";
17
- import { getPlatformStoreDbPath } from "@downcity/agent";
18
- import { decryptTextSync, encryptTextSync } from "./Crypto.js";
19
- import type {
20
- StoredChannelAccount,
21
- StoredChannelAccountChannel,
22
- UpsertChannelAccountInput,
23
- } from "@downcity/agent";
24
-
25
- function nowIso(): string {
26
- return new Date().toISOString();
27
- }
28
-
29
- function normalizeNonEmptyText(value: string, fieldName: string): string {
30
- const normalized = String(value || "").trim();
31
- if (!normalized) {
32
- throw new Error(`${fieldName} cannot be empty`);
33
- }
34
- return normalized;
35
- }
36
-
37
- function optionalTrimmedText(value: string | undefined): string | undefined {
38
- const normalized = String(value || "").trim();
39
- return normalized || undefined;
40
- }
41
-
42
- /**
43
- * 规范化 chat platform 类型。
44
- */
45
- export function normalizeChannelAccountChannel(
46
- input: string,
47
- ): StoredChannelAccountChannel {
48
- const channel = String(input || "").trim().toLowerCase();
49
- if (channel === "telegram" || channel === "feishu" || channel === "qq") {
50
- return channel;
51
- }
52
- throw new Error(`Unsupported chat account platform: ${input}`);
53
- }
54
-
55
- function ensureChannelAccountSchema(database: Database.Database): void {
56
- database.exec(`
57
- CREATE TABLE IF NOT EXISTS channel_accounts (
58
- id TEXT PRIMARY KEY NOT NULL,
59
- channel TEXT NOT NULL,
60
- name TEXT NOT NULL,
61
- identity TEXT,
62
- owner TEXT,
63
- creator TEXT,
64
- bot_token_encrypted TEXT,
65
- app_id_encrypted TEXT,
66
- app_secret_encrypted TEXT,
67
- domain TEXT,
68
- sandbox INTEGER,
69
- created_at TEXT NOT NULL,
70
- updated_at TEXT NOT NULL
71
- );
72
- `);
73
- database.exec(`
74
- CREATE INDEX IF NOT EXISTS channel_accounts_channel_idx
75
- ON channel_accounts(channel);
76
- `);
77
-
78
- const rows = database
79
- .prepare("PRAGMA table_info(channel_accounts)")
80
- .all() as Array<{ name?: unknown }>;
81
- const columns = new Set(
82
- rows.map((row) => String(row.name || "").trim()).filter(Boolean),
83
- );
84
- if (!columns.has("owner")) {
85
- database.exec("ALTER TABLE channel_accounts ADD COLUMN owner TEXT;");
86
- }
87
- if (!columns.has("creator")) {
88
- database.exec("ALTER TABLE channel_accounts ADD COLUMN creator TEXT;");
89
- }
90
- }
91
-
92
- function withChannelAccountDb<T>(callback: (database: Database.Database) => T): T {
93
- const dbPath = getPlatformStoreDbPath();
94
- fs.ensureDirSync(path.dirname(dbPath));
95
- const database = new Database(dbPath);
96
- try {
97
- database.pragma("journal_mode = WAL");
98
- ensureChannelAccountSchema(database);
99
- return callback(database);
100
- } finally {
101
- database.close();
102
- }
103
- }
104
-
105
- function buildChannelAccountFromRow(
106
- row: Record<string, unknown>,
107
- ): StoredChannelAccount | null {
108
- const id = String(row.id || "").trim();
109
- if (!id) return null;
110
- const botTokenEncrypted =
111
- typeof row.bot_token_encrypted === "string" ? row.bot_token_encrypted : "";
112
- const appIdEncrypted =
113
- typeof row.app_id_encrypted === "string" ? row.app_id_encrypted : "";
114
- const appSecretEncrypted =
115
- typeof row.app_secret_encrypted === "string" ? row.app_secret_encrypted : "";
116
-
117
- return {
118
- id,
119
- channel: normalizeChannelAccountChannel(String(row.channel || "")),
120
- name: String(row.name || "").trim() || id,
121
- identity: optionalTrimmedText(String(row.identity || "")),
122
- owner: optionalTrimmedText(String(row.owner || "")),
123
- creator: optionalTrimmedText(String(row.creator || "")),
124
- botToken: optionalTrimmedText(
125
- botTokenEncrypted ? decryptTextSync(botTokenEncrypted) : undefined,
126
- ),
127
- appId: optionalTrimmedText(
128
- appIdEncrypted ? decryptTextSync(appIdEncrypted) : undefined,
129
- ),
130
- appSecret: optionalTrimmedText(
131
- appSecretEncrypted ? decryptTextSync(appSecretEncrypted) : undefined,
132
- ),
133
- domain: optionalTrimmedText(String(row.domain || "")),
134
- sandbox: Number(row.sandbox || 0) === 1,
135
- createdAt: String(row.created_at || ""),
136
- updatedAt: String(row.updated_at || ""),
137
- };
138
- }
139
-
140
- /**
141
- * 同步列出全部 chat account。
142
- */
143
- export function listStoredChannelAccountsSync(
144
- channelInput?: string,
145
- ): StoredChannelAccount[] {
146
- return withChannelAccountDb((database) => {
147
- const maybeChannel = optionalTrimmedText(channelInput);
148
- const rows = maybeChannel
149
- ? database.prepare(
150
- `
151
- SELECT
152
- id, channel, name, identity, owner, creator,
153
- bot_token_encrypted, app_id_encrypted, app_secret_encrypted,
154
- domain, sandbox, created_at, updated_at
155
- FROM channel_accounts
156
- WHERE channel = ?
157
- ORDER BY name ASC, id ASC;
158
- `,
159
- ).all(maybeChannel)
160
- : database.prepare(
161
- `
162
- SELECT
163
- id, channel, name, identity, owner, creator,
164
- bot_token_encrypted, app_id_encrypted, app_secret_encrypted,
165
- domain, sandbox, created_at, updated_at
166
- FROM channel_accounts
167
- ORDER BY channel ASC, name ASC, id ASC;
168
- `,
169
- ).all();
170
-
171
- const out: StoredChannelAccount[] = [];
172
- for (const row of rows as Array<Record<string, unknown>>) {
173
- const item = buildChannelAccountFromRow(row);
174
- if (item) out.push(item);
175
- }
176
- return out;
177
- });
178
- }
179
-
180
- /**
181
- * 同步按 ID 读取单个 chat account。
182
- */
183
- export function getStoredChannelAccountSync(
184
- accountIdInput: string,
185
- ): StoredChannelAccount | null {
186
- const accountId = normalizeNonEmptyText(accountIdInput, "chat account id");
187
- return withChannelAccountDb((database) => {
188
- const row = database.prepare(
189
- `
190
- SELECT
191
- id, channel, name, identity, owner, creator,
192
- bot_token_encrypted, app_id_encrypted, app_secret_encrypted,
193
- domain, sandbox, created_at, updated_at
194
- FROM channel_accounts
195
- WHERE id = ?
196
- LIMIT 1;
197
- `,
198
- ).get(accountId) as Record<string, unknown> | undefined;
199
- return row ? buildChannelAccountFromRow(row) : null;
200
- });
201
- }
202
-
203
- /**
204
- * 新增或更新 chat account。
205
- *
206
- * 关键点(中文)
207
- * - 这里保留和现有平台库一致的落盘结构,避免默认实现切换后出现数据断层。
208
- * - 未显式传入的敏感字段会保留旧值,便于 CLI 局部更新。
209
- */
210
- export async function upsertStoredChannelAccount(
211
- input: UpsertChannelAccountInput,
212
- ): Promise<void> {
213
- const id = normalizeNonEmptyText(input.id, "chat account id");
214
- const channel = normalizeChannelAccountChannel(input.channel);
215
- const name = normalizeNonEmptyText(input.name, "chat account name");
216
- const existing = getStoredChannelAccountSync(id);
217
- const createdAt = existing?.createdAt || nowIso();
218
- const updatedAt = nowIso();
219
-
220
- const nextBotToken =
221
- Object.prototype.hasOwnProperty.call(input, "botToken")
222
- ? optionalTrimmedText(input.botToken)
223
- : existing?.botToken;
224
- const nextAppId =
225
- Object.prototype.hasOwnProperty.call(input, "appId")
226
- ? optionalTrimmedText(input.appId)
227
- : existing?.appId;
228
- const nextAppSecret =
229
- Object.prototype.hasOwnProperty.call(input, "appSecret")
230
- ? optionalTrimmedText(input.appSecret)
231
- : existing?.appSecret;
232
-
233
- const botTokenEncrypted = nextBotToken ? encryptTextSync(nextBotToken) : null;
234
- const appIdEncrypted = nextAppId ? encryptTextSync(nextAppId) : null;
235
- const appSecretEncrypted = nextAppSecret ? encryptTextSync(nextAppSecret) : null;
236
-
237
- withChannelAccountDb((database) => {
238
- database.prepare(
239
- `
240
- INSERT INTO channel_accounts (
241
- id, channel, name, identity, owner, creator,
242
- bot_token_encrypted, app_id_encrypted, app_secret_encrypted,
243
- domain, sandbox, created_at, updated_at
244
- )
245
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
246
- ON CONFLICT(id) DO UPDATE SET
247
- channel = excluded.channel,
248
- name = excluded.name,
249
- identity = excluded.identity,
250
- owner = excluded.owner,
251
- creator = excluded.creator,
252
- bot_token_encrypted = excluded.bot_token_encrypted,
253
- app_id_encrypted = excluded.app_id_encrypted,
254
- app_secret_encrypted = excluded.app_secret_encrypted,
255
- domain = excluded.domain,
256
- sandbox = excluded.sandbox,
257
- updated_at = excluded.updated_at;
258
- `,
259
- ).run(
260
- id,
261
- channel,
262
- name,
263
- optionalTrimmedText(input.identity) || null,
264
- optionalTrimmedText(input.owner) || null,
265
- optionalTrimmedText(input.creator) || null,
266
- botTokenEncrypted,
267
- appIdEncrypted,
268
- appSecretEncrypted,
269
- optionalTrimmedText(input.domain) || null,
270
- input.sandbox === true ? 1 : 0,
271
- createdAt,
272
- updatedAt,
273
- );
274
- });
275
- }
276
-
277
- /**
278
- * 删除单个 chat account。
279
- */
280
- export async function removeStoredChannelAccount(
281
- accountIdInput: string,
282
- ): Promise<void> {
283
- const accountId = normalizeNonEmptyText(accountIdInput, "chat account id");
284
- withChannelAccountDb((database) => {
285
- database.prepare("DELETE FROM channel_accounts WHERE id = ?;").run(accountId);
286
- });
287
- }