@lemoncat7/dsh-partner 2.11.6 → 2.21.5

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 (355) hide show
  1. package/README.md +3 -0
  2. package/docs/character-cards-and-renewal.md +1 -1
  3. package/docs/qq-attention.md +51 -0
  4. package/docs/qq-channel.md +80 -0
  5. package/docs/releases/2.11.7.md +9 -0
  6. package/docs/releases/2.12.0.md +14 -0
  7. package/docs/releases/2.13.0.md +9 -0
  8. package/docs/releases/2.14.0.md +9 -0
  9. package/docs/releases/2.15.0.md +9 -0
  10. package/docs/releases/2.15.1.md +9 -0
  11. package/docs/releases/2.16.0.md +18 -0
  12. package/docs/releases/2.17.0.md +23 -0
  13. package/docs/releases/2.17.1.md +9 -0
  14. package/docs/releases/2.18.0.md +9 -0
  15. package/docs/releases/2.18.1.md +5 -0
  16. package/docs/releases/2.19.0.md +14 -0
  17. package/docs/releases/2.19.1.md +7 -0
  18. package/docs/releases/2.19.2.md +9 -0
  19. package/docs/releases/2.19.3.md +5 -0
  20. package/docs/releases/2.20.0.md +10 -0
  21. package/docs/releases/2.20.1.md +8 -0
  22. package/docs/releases/2.21.0.md +7 -0
  23. package/docs/releases/2.21.1.md +8 -0
  24. package/docs/releases/2.21.2.md +10 -0
  25. package/docs/releases/2.21.3.md +7 -0
  26. package/docs/releases/2.21.4.md +8 -0
  27. package/docs/releases/2.21.5.md +15 -0
  28. package/docs/tool-entry-compatibility.md +11 -0
  29. package/lib/agent-runtime.d.ts +17 -0
  30. package/lib/agent-runtime.d.ts.map +1 -1
  31. package/lib/agent-runtime.js +313 -52
  32. package/lib/agent-runtime.js.map +1 -1
  33. package/lib/api.d.ts +1 -0
  34. package/lib/api.d.ts.map +1 -1
  35. package/lib/api.js +93 -27
  36. package/lib/api.js.map +1 -1
  37. package/lib/channel-message.d.ts +14 -0
  38. package/lib/channel-message.d.ts.map +1 -1
  39. package/lib/channel-message.js.map +1 -1
  40. package/lib/channels/delivery-policy.js +1 -1
  41. package/lib/channels/delivery-policy.js.map +1 -1
  42. package/lib/channels/direct/dispatcher.d.ts +2 -2
  43. package/lib/channels/direct/dispatcher.d.ts.map +1 -1
  44. package/lib/channels/direct/dispatcher.js +13 -4
  45. package/lib/channels/direct/dispatcher.js.map +1 -1
  46. package/lib/channels/direct/login.d.ts.map +1 -1
  47. package/lib/channels/direct/login.js +4 -0
  48. package/lib/channels/direct/login.js.map +1 -1
  49. package/lib/channels/direct/media.d.ts +2 -0
  50. package/lib/channels/direct/media.d.ts.map +1 -1
  51. package/lib/channels/direct/media.js +27 -23
  52. package/lib/channels/direct/media.js.map +1 -1
  53. package/lib/channels/direct/message-format.js +127 -127
  54. package/lib/channels/direct/message-format.js.map +1 -1
  55. package/lib/channels/direct/transport.d.ts +26 -3
  56. package/lib/channels/direct/transport.d.ts.map +1 -1
  57. package/lib/channels/direct/transport.js +31 -5
  58. package/lib/channels/direct/transport.js.map +1 -1
  59. package/lib/channels/manager.d.ts +26 -0
  60. package/lib/channels/manager.d.ts.map +1 -1
  61. package/lib/channels/manager.js +538 -148
  62. package/lib/channels/manager.js.map +1 -1
  63. package/lib/channels/notification-delivery.d.ts +4 -0
  64. package/lib/channels/notification-delivery.d.ts.map +1 -1
  65. package/lib/channels/notification-delivery.js +15 -5
  66. package/lib/channels/notification-delivery.js.map +1 -1
  67. package/lib/channels/notification-route.d.ts.map +1 -1
  68. package/lib/channels/notification-route.js +10 -4
  69. package/lib/channels/notification-route.js.map +1 -1
  70. package/lib/channels/notification-timeout.d.ts.map +1 -1
  71. package/lib/channels/notification-timeout.js +2 -0
  72. package/lib/channels/notification-timeout.js.map +1 -1
  73. package/lib/channels/outbound-media.d.ts.map +1 -1
  74. package/lib/channels/outbound-media.js +2 -0
  75. package/lib/channels/outbound-media.js.map +1 -1
  76. package/lib/channels/qq/action-catalog.d.ts +38 -0
  77. package/lib/channels/qq/action-catalog.d.ts.map +1 -0
  78. package/lib/channels/qq/action-catalog.js +2731 -0
  79. package/lib/channels/qq/action-catalog.js.map +1 -0
  80. package/lib/channels/qq/actions.d.ts +21 -0
  81. package/lib/channels/qq/actions.d.ts.map +1 -0
  82. package/lib/channels/qq/actions.js +226 -0
  83. package/lib/channels/qq/actions.js.map +1 -0
  84. package/lib/channels/qq/affection-adapter.d.ts +3 -0
  85. package/lib/channels/qq/affection-adapter.d.ts.map +1 -0
  86. package/lib/channels/qq/affection-adapter.js +16 -0
  87. package/lib/channels/qq/affection-adapter.js.map +1 -0
  88. package/lib/channels/qq/attention-classifier.d.ts +10 -0
  89. package/lib/channels/qq/attention-classifier.d.ts.map +1 -0
  90. package/lib/channels/qq/attention-classifier.js +62 -0
  91. package/lib/channels/qq/attention-classifier.js.map +1 -0
  92. package/lib/channels/qq/authority.d.ts +10 -0
  93. package/lib/channels/qq/authority.d.ts.map +1 -0
  94. package/lib/channels/qq/authority.js +50 -0
  95. package/lib/channels/qq/authority.js.map +1 -0
  96. package/lib/channels/qq/autonomy.d.ts +30 -0
  97. package/lib/channels/qq/autonomy.d.ts.map +1 -0
  98. package/lib/channels/qq/autonomy.js +88 -0
  99. package/lib/channels/qq/autonomy.js.map +1 -0
  100. package/lib/channels/qq/catalog.d.ts +14 -0
  101. package/lib/channels/qq/catalog.d.ts.map +1 -0
  102. package/lib/channels/qq/catalog.js +34 -0
  103. package/lib/channels/qq/catalog.js.map +1 -0
  104. package/lib/channels/qq/connection.d.ts +28 -0
  105. package/lib/channels/qq/connection.d.ts.map +1 -0
  106. package/lib/channels/qq/connection.js +200 -0
  107. package/lib/channels/qq/connection.js.map +1 -0
  108. package/lib/channels/qq/identity-binding.d.ts +14 -0
  109. package/lib/channels/qq/identity-binding.d.ts.map +1 -0
  110. package/lib/channels/qq/identity-binding.js +58 -0
  111. package/lib/channels/qq/identity-binding.js.map +1 -0
  112. package/lib/channels/qq/latency.d.ts +22 -0
  113. package/lib/channels/qq/latency.d.ts.map +1 -0
  114. package/lib/channels/qq/latency.js +21 -0
  115. package/lib/channels/qq/latency.js.map +1 -0
  116. package/lib/channels/qq/message.d.ts +6 -0
  117. package/lib/channels/qq/message.d.ts.map +1 -0
  118. package/lib/channels/qq/message.js +49 -0
  119. package/lib/channels/qq/message.js.map +1 -0
  120. package/lib/channels/qq/reply-rules.d.ts +30 -0
  121. package/lib/channels/qq/reply-rules.d.ts.map +1 -0
  122. package/lib/channels/qq/reply-rules.js +72 -0
  123. package/lib/channels/qq/reply-rules.js.map +1 -0
  124. package/lib/channels/qq/reply-tool.d.ts +6 -0
  125. package/lib/channels/qq/reply-tool.d.ts.map +1 -0
  126. package/lib/channels/qq/reply-tool.js +113 -0
  127. package/lib/channels/qq/reply-tool.js.map +1 -0
  128. package/lib/channels/qq/settings.d.ts +42 -0
  129. package/lib/channels/qq/settings.d.ts.map +1 -0
  130. package/lib/channels/qq/settings.js +68 -0
  131. package/lib/channels/qq/settings.js.map +1 -0
  132. package/lib/channels/qq/sticker-adapter.d.ts +5 -0
  133. package/lib/channels/qq/sticker-adapter.d.ts.map +1 -0
  134. package/lib/channels/qq/sticker-adapter.js +43 -0
  135. package/lib/channels/qq/sticker-adapter.js.map +1 -0
  136. package/lib/channels/qq/transport.d.ts +29 -0
  137. package/lib/channels/qq/transport.d.ts.map +1 -0
  138. package/lib/channels/qq/transport.js +187 -0
  139. package/lib/channels/qq/transport.js.map +1 -0
  140. package/lib/channels/reply-access.d.ts +25 -0
  141. package/lib/channels/reply-access.d.ts.map +1 -0
  142. package/lib/channels/reply-access.js +29 -0
  143. package/lib/channels/reply-access.js.map +1 -0
  144. package/lib/channels/weixin/connect.d.ts +3 -1
  145. package/lib/channels/weixin/connect.d.ts.map +1 -1
  146. package/lib/character/activity-tool.d.ts +7 -0
  147. package/lib/character/activity-tool.d.ts.map +1 -0
  148. package/lib/character/activity-tool.js +38 -0
  149. package/lib/character/activity-tool.js.map +1 -0
  150. package/lib/character/affection-adapter.d.ts +13 -0
  151. package/lib/character/affection-adapter.d.ts.map +1 -0
  152. package/lib/character/affection-adapter.js +13 -0
  153. package/lib/character/affection-adapter.js.map +1 -0
  154. package/lib/character/affection-context.d.ts +7 -0
  155. package/lib/character/affection-context.d.ts.map +1 -0
  156. package/lib/character/affection-context.js +33 -0
  157. package/lib/character/affection-context.js.map +1 -0
  158. package/lib/character/affection.d.ts +47 -0
  159. package/lib/character/affection.d.ts.map +1 -0
  160. package/lib/character/affection.js +41 -0
  161. package/lib/character/affection.js.map +1 -0
  162. package/lib/character/conversation-behavior.d.ts +1 -1
  163. package/lib/character/conversation-behavior.d.ts.map +1 -1
  164. package/lib/character/conversation-behavior.js +5 -3
  165. package/lib/character/conversation-behavior.js.map +1 -1
  166. package/lib/character/domain.d.ts +5 -0
  167. package/lib/character/domain.d.ts.map +1 -1
  168. package/lib/character/domain.js +21 -4
  169. package/lib/character/domain.js.map +1 -1
  170. package/lib/character/identity-guide.d.ts +4 -0
  171. package/lib/character/identity-guide.d.ts.map +1 -0
  172. package/lib/character/identity-guide.js +14 -0
  173. package/lib/character/identity-guide.js.map +1 -0
  174. package/lib/character/idle-contact.d.ts +12 -5
  175. package/lib/character/idle-contact.d.ts.map +1 -1
  176. package/lib/character/idle-contact.js +50 -21
  177. package/lib/character/idle-contact.js.map +1 -1
  178. package/lib/character/post-reply.d.ts +19 -0
  179. package/lib/character/post-reply.d.ts.map +1 -0
  180. package/lib/character/post-reply.js +33 -0
  181. package/lib/character/post-reply.js.map +1 -0
  182. package/lib/character/preview.d.ts.map +1 -1
  183. package/lib/character/preview.js +9 -1
  184. package/lib/character/preview.js.map +1 -1
  185. package/lib/character/relationship-adapter.d.ts +18 -0
  186. package/lib/character/relationship-adapter.d.ts.map +1 -0
  187. package/lib/character/relationship-adapter.js +18 -0
  188. package/lib/character/relationship-adapter.js.map +1 -0
  189. package/lib/character/sleep-service.d.ts +35 -0
  190. package/lib/character/sleep-service.d.ts.map +1 -0
  191. package/lib/character/sleep-service.js +278 -0
  192. package/lib/character/sleep-service.js.map +1 -0
  193. package/lib/character/sleep.d.ts +43 -0
  194. package/lib/character/sleep.d.ts.map +1 -0
  195. package/lib/character/sleep.js +36 -0
  196. package/lib/character/sleep.js.map +1 -0
  197. package/lib/character/state-policy.d.ts +4 -0
  198. package/lib/character/state-policy.d.ts.map +1 -0
  199. package/lib/character/state-policy.js +14 -0
  200. package/lib/character/state-policy.js.map +1 -0
  201. package/lib/character/store.d.ts.map +1 -1
  202. package/lib/character/store.js +3 -3
  203. package/lib/character/store.js.map +1 -1
  204. package/lib/chat/conversation.js +1 -1
  205. package/lib/chat/conversation.js.map +1 -1
  206. package/lib/chat/protocol.d.ts +8 -0
  207. package/lib/chat/protocol.d.ts.map +1 -1
  208. package/lib/chat/protocol.js +24 -5
  209. package/lib/chat/protocol.js.map +1 -1
  210. package/lib/chat/sticker-adapter.d.ts +34 -0
  211. package/lib/chat/sticker-adapter.d.ts.map +1 -0
  212. package/lib/chat/sticker-adapter.js +30 -0
  213. package/lib/chat/sticker-adapter.js.map +1 -0
  214. package/lib/chat/tools.d.ts +2 -1
  215. package/lib/chat/tools.d.ts.map +1 -1
  216. package/lib/chat/tools.js +59 -13
  217. package/lib/chat/tools.js.map +1 -1
  218. package/lib/client-api.d.ts +21 -1
  219. package/lib/client-api.d.ts.map +1 -1
  220. package/lib/client-api.js.map +1 -1
  221. package/lib/client.d.ts.map +1 -1
  222. package/lib/client.js +6388 -2685
  223. package/lib/client.js.map +4 -4
  224. package/lib/collaboration/composition.d.ts +2 -0
  225. package/lib/collaboration/composition.d.ts.map +1 -1
  226. package/lib/collaboration/composition.js +32 -10
  227. package/lib/collaboration/composition.js.map +1 -1
  228. package/lib/collaboration/tool-discovery.d.ts +12 -0
  229. package/lib/collaboration/tool-discovery.d.ts.map +1 -0
  230. package/lib/collaboration/tool-discovery.js +148 -0
  231. package/lib/collaboration/tool-discovery.js.map +1 -0
  232. package/lib/companions/identity-tool.d.ts +176 -0
  233. package/lib/companions/identity-tool.d.ts.map +1 -0
  234. package/lib/companions/identity-tool.js +67 -0
  235. package/lib/companions/identity-tool.js.map +1 -0
  236. package/lib/companions/identity.d.ts +24 -0
  237. package/lib/companions/identity.d.ts.map +1 -0
  238. package/lib/companions/identity.js +49 -0
  239. package/lib/companions/identity.js.map +1 -0
  240. package/lib/companions/management-tool.d.ts +1 -1
  241. package/lib/companions/management-tool.d.ts.map +1 -1
  242. package/lib/companions/management-tool.js +4 -2
  243. package/lib/companions/management-tool.js.map +1 -1
  244. package/lib/companions/management.d.ts +21 -9
  245. package/lib/companions/management.d.ts.map +1 -1
  246. package/lib/companions/management.js +18 -4
  247. package/lib/companions/management.js.map +1 -1
  248. package/lib/companions/service.js +1 -0
  249. package/lib/companions/service.js.map +1 -1
  250. package/lib/companions/session-configuration.js +2 -2
  251. package/lib/companions/session-configuration.js.map +1 -1
  252. package/lib/domain.d.ts +37 -1
  253. package/lib/domain.d.ts.map +1 -1
  254. package/lib/domain.js +6 -0
  255. package/lib/domain.js.map +1 -1
  256. package/lib/execution/agent-support.d.ts +1 -1
  257. package/lib/execution/agent-support.d.ts.map +1 -1
  258. package/lib/execution/agent-support.js +7 -2
  259. package/lib/execution/agent-support.js.map +1 -1
  260. package/lib/execution/operation-tool-access.d.ts +13 -0
  261. package/lib/execution/operation-tool-access.d.ts.map +1 -0
  262. package/lib/execution/operation-tool-access.js +49 -0
  263. package/lib/execution/operation-tool-access.js.map +1 -0
  264. package/lib/execution/service.d.ts.map +1 -1
  265. package/lib/execution/service.js +2 -10
  266. package/lib/execution/service.js.map +1 -1
  267. package/lib/execution/tool-access-adapter.d.ts +23 -0
  268. package/lib/execution/tool-access-adapter.d.ts.map +1 -0
  269. package/lib/execution/tool-access-adapter.js +25 -0
  270. package/lib/execution/tool-access-adapter.js.map +1 -0
  271. package/lib/heartbeat.js +1 -1
  272. package/lib/index.d.ts.map +1 -1
  273. package/lib/index.js +32 -2
  274. package/lib/index.js.map +1 -1
  275. package/lib/memory-domain.d.ts +1 -0
  276. package/lib/memory-domain.d.ts.map +1 -1
  277. package/lib/memory-prompt-context.js +1 -0
  278. package/lib/memory-prompt-context.js.map +1 -1
  279. package/lib/memory-reflection.d.ts.map +1 -1
  280. package/lib/memory-reflection.js +16 -5
  281. package/lib/memory-reflection.js.map +1 -1
  282. package/lib/memory-scope.d.ts +2 -1
  283. package/lib/memory-scope.d.ts.map +1 -1
  284. package/lib/memory-scope.js +3 -1
  285. package/lib/memory-scope.js.map +1 -1
  286. package/lib/memory-store.d.ts +1 -1
  287. package/lib/observation-knowledge-entry.d.ts +2 -0
  288. package/lib/observation-knowledge-entry.d.ts.map +1 -0
  289. package/lib/observation-knowledge-entry.js +13 -0
  290. package/lib/observation-knowledge-entry.js.map +1 -0
  291. package/lib/observation-loop.d.ts.map +1 -1
  292. package/lib/observation-loop.js +3 -0
  293. package/lib/observation-loop.js.map +1 -1
  294. package/lib/storage/split-state.d.ts +1 -0
  295. package/lib/storage/split-state.d.ts.map +1 -1
  296. package/lib/storage/split-state.js +9 -2
  297. package/lib/storage/split-state.js.map +1 -1
  298. package/lib/store.d.ts.map +1 -1
  299. package/lib/store.js +7 -0
  300. package/lib/store.js.map +1 -1
  301. package/lib/ui/affection-panel.d.ts +10 -0
  302. package/lib/ui/affection-panel.d.ts.map +1 -0
  303. package/lib/ui/affection-panel.js +44 -0
  304. package/lib/ui/affection-panel.js.map +1 -0
  305. package/lib/ui/capability-editor.d.ts.map +1 -1
  306. package/lib/ui/capability-editor.js +1 -1
  307. package/lib/ui/capability-editor.js.map +1 -1
  308. package/lib/ui/channels-panel.d.ts.map +1 -1
  309. package/lib/ui/channels-panel.js +13 -9
  310. package/lib/ui/channels-panel.js.map +1 -1
  311. package/lib/ui/character-editor.d.ts +3 -1
  312. package/lib/ui/character-editor.d.ts.map +1 -1
  313. package/lib/ui/character-editor.js +20 -18
  314. package/lib/ui/character-editor.js.map +1 -1
  315. package/lib/ui/character-memory-editor.d.ts +6 -1
  316. package/lib/ui/character-memory-editor.d.ts.map +1 -1
  317. package/lib/ui/character-memory-editor.js +17 -11
  318. package/lib/ui/character-memory-editor.js.map +1 -1
  319. package/lib/ui/companion-draft.d.ts +3 -0
  320. package/lib/ui/companion-draft.d.ts.map +1 -1
  321. package/lib/ui/companion-draft.js +1 -1
  322. package/lib/ui/companion-draft.js.map +1 -1
  323. package/lib/ui/identity-editor.d.ts.map +1 -1
  324. package/lib/ui/identity-editor.js +12 -6
  325. package/lib/ui/identity-editor.js.map +1 -1
  326. package/lib/ui/idle-contact-editor.d.ts.map +1 -1
  327. package/lib/ui/idle-contact-editor.js +3 -2
  328. package/lib/ui/idle-contact-editor.js.map +1 -1
  329. package/lib/ui/memory/memory-panel.d.ts.map +1 -1
  330. package/lib/ui/memory/memory-panel.js +5 -3
  331. package/lib/ui/memory/memory-panel.js.map +1 -1
  332. package/lib/ui/push-draft.d.ts +5 -5
  333. package/lib/ui/qq-capability-settings.d.ts +9 -0
  334. package/lib/ui/qq-capability-settings.d.ts.map +1 -0
  335. package/lib/ui/qq-capability-settings.js +24 -0
  336. package/lib/ui/qq-capability-settings.js.map +1 -0
  337. package/lib/ui/qq-channel-settings.d.ts +13 -0
  338. package/lib/ui/qq-channel-settings.d.ts.map +1 -0
  339. package/lib/ui/qq-channel-settings.js +51 -0
  340. package/lib/ui/qq-channel-settings.js.map +1 -0
  341. package/lib/ui/qq-identity-binding.d.ts +9 -0
  342. package/lib/ui/qq-identity-binding.d.ts.map +1 -0
  343. package/lib/ui/qq-identity-binding.js +6 -0
  344. package/lib/ui/qq-identity-binding.js.map +1 -0
  345. package/lib/ui/qq-voice-reply-settings.d.ts +9 -0
  346. package/lib/ui/qq-voice-reply-settings.d.ts.map +1 -0
  347. package/lib/ui/qq-voice-reply-settings.js +23 -0
  348. package/lib/ui/qq-voice-reply-settings.js.map +1 -0
  349. package/lib/ui/role-reference.js +1 -1
  350. package/lib/ui/role-reference.js.map +1 -1
  351. package/lib/ui/sleep-editor.d.ts +10 -0
  352. package/lib/ui/sleep-editor.d.ts.map +1 -0
  353. package/lib/ui/sleep-editor.js +45 -0
  354. package/lib/ui/sleep-editor.js.map +1 -0
  355. package/package.json +33 -5
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { api } from '../client-api.js';
4
+ export function QqVoiceReplySettings({ channel, policy, change, busy }) {
5
+ const [voices, setVoices] = useState([]), [loading, setLoading] = useState(false), [error, setError] = useState('');
6
+ const group = policy.replyVoiceGroupId || policy.groupIds[0] || '';
7
+ const load = async () => {
8
+ setLoading(true);
9
+ setError('');
10
+ try {
11
+ const rows = await api(`/channels/${channel.id}/qq/voices?groupId=${encodeURIComponent(group)}`);
12
+ setVoices(rows.flatMap(r => Array.isArray(r.characters) ? r.characters.map((v) => ({ id: v.character_id, name: v.character_name })) : []));
13
+ }
14
+ catch {
15
+ setError('音色读取失败,请确认渠道在线,并先保存所选群。');
16
+ }
17
+ finally {
18
+ setLoading(false);
19
+ }
20
+ };
21
+ return _jsxs("div", { className: "dsh-partner-qq-pane", children: [_jsx("p", { className: "dsh-partner-qq-hint", children: "\u804A\u5929\u56DE\u590D \u00B7 \u767D\u540D\u5355\u7FA4\u5185\u6240\u6709\u6210\u5458\u5747\u53EF\u4F7F\u7528\uFF1B\u5176\u4ED6\u5DF2\u63A5\u5165\u7FA4\u9700\u8981\u6210\u5458\u5BA1\u6279\uFF0C\u79C1\u804A\u9700\u8981\u5355\u72EC\u5BA1\u6279\u3002\u672A\u5F52\u5C5E\u8D26\u53F7\u4E5F\u53EF\u7528\u3002\u4EC5\u56DE\u590D\u5F53\u524D\u79C1\u804A\u6216\u5F53\u524D\u7FA4\uFF0C\u4E0D\u5F00\u653E\u6587\u4EF6\u8BFB\u53D6\u3001\u8F6C\u53D1\u4E0E\u7BA1\u7406\u64CD\u4F5C\u3002" }), _jsxs("div", { className: "dsh-partner-qq-toggle", children: [_jsxs("span", { children: [_jsx("strong", { children: "\u5141\u8BB8\u8BED\u97F3\u56DE\u590D" }), _jsx("small", { children: "\u4F19\u4F34\u6309\u8BED\u5883\u9009\u62E9\u6587\u5B57\u6216\u8BED\u97F3\uFF0C\u4E0D\u5F3A\u5236\u6BCF\u6B21\u4F7F\u7528\u3002\u6B64\u5F00\u5173\u72EC\u7ACB\u4E8E\u79C1\u6709\u80FD\u529B\u3002" })] }), _jsxs("div", { children: [_jsx("button", { type: "button", role: "switch", className: "dsh-partner-switch", "aria-label": "\u5141\u8BB8\u8BED\u97F3\u56DE\u590D", "aria-checked": policy.replyVoiceEnabled === true, "data-on": policy.replyVoiceEnabled === true, disabled: busy, onClick: () => change({ replyVoiceEnabled: !policy.replyVoiceEnabled }), children: _jsx("i", {}) }), _jsx("small", { children: policy.replyVoiceEnabled ? '已开启' : '已关闭' })] })] }), _jsxs("label", { className: "dsh-partner-qq-field", children: [_jsx("span", { children: "\u79C1\u804A\u8BED\u97F3\u7684\u97F3\u8272\u6765\u6E90\u7FA4" }), _jsxs("select", { disabled: busy || loading, value: group, onChange: e => { change({ replyVoiceGroupId: e.target.value }); setVoices([]); }, children: [_jsx("option", { value: "", children: "\u8BF7\u9009\u62E9\u5DF2\u63A5\u5165\u7684\u7FA4" }), policy.groupIds.map(id => _jsx("option", { value: id, children: id }, id))] }), _jsx("small", { children: "QQ \u97F3\u8272\u9700\u8981\u901A\u8FC7\u7FA4\u83B7\u53D6\u3002\u79C1\u804A\u53EA\u501F\u7528\u97F3\u8272\u5408\u6210\uFF0C\u8BED\u97F3\u4ECD\u53D1\u7ED9\u5F53\u524D\u79C1\u804A\u7528\u6237\uFF1B\u7FA4\u804A\u4F7F\u7528\u5F53\u524D\u7FA4\u7684\u97F3\u8272\u3002" })] }), _jsx("div", { className: "dsh-partner-qq-actions", children: _jsx("button", { type: "button", disabled: busy || loading || !group, onClick: () => void load(), children: loading ? '读取中…' : '读取可用音色' }) }), _jsxs("label", { className: "dsh-partner-qq-field", children: [_jsx("span", { children: "\u9ED8\u8BA4\u97F3\u8272" }), _jsxs("select", { disabled: busy, value: policy.voiceCharacter, onChange: e => change({ voiceCharacter: e.target.value }), children: [_jsx("option", { value: "", children: "\u4F7F\u7528\u53EF\u7528\u97F3\u8272" }), policy.voiceCharacter && !voices.some(v => v.id === policy.voiceCharacter) && _jsxs("option", { value: policy.voiceCharacter, children: ["\u5DF2\u4FDD\u5B58\u97F3\u8272 \u00B7 ", policy.voiceCharacter] }), voices.map(v => _jsx("option", { value: v.id, children: v.name }, v.id))] }), _jsx("small", { children: "\u53EF\u5728\u804A\u5929\u65F6\u6307\u5B9A\u5176\u4ED6\u53EF\u7528\u97F3\u8272\u3002\u5408\u6210\u5931\u8D25\u65F6\u6539\u7528\u6587\u5B57\uFF0C\u4E0D\u4F1A\u5047\u79F0\u5DF2\u53D1\u9001\u3002" })] }), error && _jsx("p", { role: "alert", children: error })] });
22
+ }
23
+ //# sourceMappingURL=qq-voice-reply-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qq-voice-reply-settings.js","sourceRoot":"","sources":["../../src/ui/qq-voice-reply-settings.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ import { ROLE_REFERENCE_SOURCE, ROLE_REFERENCE_TEXT } from './role-reference-dat
5
5
  /** Read-only reference, deliberately separate from the active character and generic wizard. */
6
6
  export function RoleReference() {
7
7
  const [open, setOpen] = useState(false);
8
- return _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-role-reference-entry", children: [_jsx("span", { children: "\u5148\u5199\u89D2\u8272\u81EA\u5DF1\u7684\u53CD\u5E94\uFF0C\u518D\u8865\u5177\u4F53\u8BF4\u8BDD\u4E60\u60EF\u548C\u6B63\u53CD\u4F8B\u3002" }), _jsx("button", { type: "button", onClick: () => setOpen(true), "aria-haspopup": "dialog", children: "\u67E5\u770B\u5927\u80A5\u9C7C\u53C2\u8003" })] }), open && _jsxs(WorkspaceDialog, { title: "\u5927\u80A5\u9C7C\u7684\u89D2\u8272\u5199\u6CD5", eyebrow: "QQ-BRIDGE REFERENCE", detail: "qq-bridge \u4E2D\u7684\u539F\u540D\u662F\u201C\u5C0F\u9CB8\u9C7C\u201D\u3002\u8FD9\u91CC\u53EA\u5C55\u793A\u53C2\u8003\uFF0C\u4E0D\u4F1A\u8986\u76D6\u5F53\u524D\u4F19\u4F34\uFF0C\u4E5F\u4E0D\u4F1A\u52A0\u5165\u804A\u5929\u4E0A\u4E0B\u6587\u3002", close: () => setOpen(false), width: "wide", className: "dsh-partner-character-dialog", children: [_jsxs("div", { className: "dsh-partner-role-reference-guide", children: [_jsx("h4", { children: "\u5148\u6709\u89D2\u8272\uFF0C\u518D\u6709\u8BF4\u8BDD\u65B9\u5F0F" }), _jsx("p", { children: "\u539F\u7248\u6309\u201C\u4F60\u662F\u8C01 \u2192 \u8BF4\u8BDD\u89C4\u5219 \u2192 \u8282\u594F\u4E60\u60EF \u2192 \u4E2A\u6027\u4E0E\u6897 \u2192 \u907F\u514D\u7684\u8868\u8FBE \u2192 \u6B63\u53CD\u4F8B \u2192 \u80CC\u666F\u5F62\u8C61\u201D\u7EC4\u7EC7\u3002\u6709\u6548\u7684\u90E8\u5206\u662F\u5177\u4F53\u53CD\u5E94\u548C\u505C\u6B62\u65F6\u673A\uFF0C\u4E0D\u662F\u628A\u6BCF\u6B21\u56DE\u590D\u5199\u6210\u540C\u4E00\u5957\u5634\u786C\u3001\u5173\u5FC3\u7684\u6D41\u7A0B\u3002" }), _jsx("h4", { children: "\u4E00\u53E5\u591F\u4E86\u5C31\u7ED3\u675F" }), _jsx("p", { children: "\u539F\u7248\u4E5F\u5199\u7740\u201C\u80FD\u4E00\u53E5\u7B54\u5B8C\u5C31\u522B\u52A0\u620F\u201D\u3002\u5206\u6BB5\u53EA\u7528\u4E8E\u786E\u5B9E\u60F3\u8865\u5145\u7684\u5185\u5BB9\uFF1B\u8868\u60C5\u4E5F\u662F\u53EF\u9009\u7684\u53CD\u5E94\uFF0C\u4E0D\u662F\u6BCF\u8F6E\u7684\u88C5\u9970\u3002" }), _jsx("h4", { children: "\u653E\u5230\u4F19\u4F34\u91CC\u600E\u4E48\u7528" }), _jsx("p", { children: "\u4FDD\u7559\u81EA\u5DF1\u7684\u8EAB\u4EFD\u3001\u5173\u7CFB\u548C\u5174\u8DA3\uFF0C\u53C2\u8003\u6BB5\u843D\u7ED3\u6784\u5199\u5177\u4F53\u4E60\u60EF\u3002\u4F19\u4F34\u7EE7\u7EED\u4F7F\u7528\u5168\u90E8\u5DF2\u6388\u6743\u5DE5\u5177\uFF1B\u539F\u7248\u7684\u7FA4\u804A\u6F5C\u6C34\u3001\u6545\u610F\u7B49\u5F85\u548C\u62D2\u7EDD\u529E\u4E8B\u89C4\u5219\u4E0D\u81EA\u52A8\u5E94\u7528\u3002" })] }), _jsxs("details", { className: "dsh-partner-role-reference-original", children: [_jsx("summary", { children: "\u5C55\u5F00\u539F\u7248\u89D2\u8272\u5361 \u00B7 \u53EA\u8BFB" }), _jsx("pre", { children: ROLE_REFERENCE_TEXT })] }), _jsx("a", { href: ROLE_REFERENCE_SOURCE, target: "_blank", rel: "noreferrer", children: "\u5728 GitHub \u67E5\u770B\u5BF9\u5E94\u7248\u672C" })] })] });
8
+ return _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-role-reference-entry", children: [_jsx("span", { children: "\u5148\u5199\u89D2\u8272\u81EA\u5DF1\u7684\u53CD\u5E94\uFF0C\u518D\u8865\u5177\u4F53\u8BF4\u8BDD\u4E60\u60EF\u548C\u6B63\u53CD\u4F8B\u3002" }), _jsx("button", { type: "button", onClick: () => setOpen(true), "aria-haspopup": "dialog", children: "\u67E5\u770B\u5927\u80A5\u9C7C\u53C2\u8003" })] }), open && _jsxs(WorkspaceDialog, { title: "\u5927\u80A5\u9C7C\u7684\u89D2\u8272\u5199\u6CD5", eyebrow: "QQ-BRIDGE REFERENCE", detail: "qq-bridge \u4E2D\u7684\u539F\u540D\u662F\u201C\u5C0F\u9CB8\u9C7C\u201D\u3002\u8FD9\u91CC\u53EA\u5C55\u793A\u53C2\u8003\uFF0C\u4E0D\u4F1A\u8986\u76D6\u5F53\u524D\u4F19\u4F34\uFF0C\u4E5F\u4E0D\u4F1A\u52A0\u5165\u804A\u5929\u4E0A\u4E0B\u6587\u3002", close: () => setOpen(false), width: "wide", className: "dsh-partner-character-dialog", children: [_jsxs("div", { className: "dsh-partner-role-reference-guide", children: [_jsx("h4", { children: "\u5148\u6709\u89D2\u8272\uFF0C\u518D\u6709\u8BF4\u8BDD\u65B9\u5F0F" }), _jsx("p", { children: "\u539F\u7248\u6309\u201C\u4F60\u662F\u8C01 \u2192 \u8BF4\u8BDD\u89C4\u5219 \u2192 \u8282\u594F\u4E60\u60EF \u2192 \u4E2A\u6027\u4E0E\u6897 \u2192 \u907F\u514D\u7684\u8868\u8FBE \u2192 \u6B63\u53CD\u4F8B \u2192 \u80CC\u666F\u5F62\u8C61\u201D\u7EC4\u7EC7\u3002\u6709\u6548\u7684\u90E8\u5206\u662F\u5177\u4F53\u53CD\u5E94\u548C\u505C\u6B62\u65F6\u673A\uFF0C\u4E0D\u662F\u628A\u6BCF\u6B21\u56DE\u590D\u5199\u6210\u540C\u4E00\u5957\u5634\u786C\u3001\u5173\u5FC3\u7684\u6D41\u7A0B\u3002" }), _jsx("h4", { children: "\u4E00\u53E5\u591F\u4E86\u5C31\u7ED3\u675F" }), _jsx("p", { children: "\u539F\u7248\u4E5F\u5199\u7740\u201C\u80FD\u4E00\u53E5\u7B54\u5B8C\u5C31\u522B\u52A0\u620F\u201D\u3002\u5206\u6BB5\u53EA\u7528\u4E8E\u786E\u5B9E\u60F3\u8865\u5145\u7684\u5185\u5BB9\uFF1B\u8868\u60C5\u4E5F\u662F\u53EF\u9009\u7684\u53CD\u5E94\uFF0C\u4E0D\u662F\u6BCF\u8F6E\u7684\u88C5\u9970\u3002" }), _jsx("h4", { children: "\u653E\u5230\u4F19\u4F34\u91CC\u600E\u4E48\u7528" }), _jsx("p", { children: "\u89D2\u8272\u8BBE\u5B9A\u4FDD\u7559\u81EA\u8EAB\u8EAB\u4EFD\u3001\u5174\u8DA3\u4E0E\u5177\u4F53\u4E60\u60EF\uFF1B\u4E0E\u7528\u6237\u7684\u5173\u7CFB\u548C\u4E13\u5C5E\u79F0\u547C\u5355\u72EC\u5199\u5728\u201C\u5173\u7CFB\u8BBE\u5B9A\u201D\u3002\u4F19\u4F34\u7EE7\u7EED\u4F7F\u7528\u5168\u90E8\u5DF2\u6388\u6743\u5DE5\u5177\uFF1B\u539F\u7248\u7684\u7FA4\u804A\u6F5C\u6C34\u3001\u6545\u610F\u7B49\u5F85\u548C\u62D2\u7EDD\u529E\u4E8B\u89C4\u5219\u4E0D\u81EA\u52A8\u5E94\u7528\u3002" })] }), _jsxs("details", { className: "dsh-partner-role-reference-original", children: [_jsx("summary", { children: "\u5C55\u5F00\u539F\u7248\u89D2\u8272\u5361 \u00B7 \u53EA\u8BFB" }), _jsx("pre", { children: ROLE_REFERENCE_TEXT })] }), _jsx("a", { href: ROLE_REFERENCE_SOURCE, target: "_blank", rel: "noreferrer", children: "\u5728 GitHub \u67E5\u770B\u5BF9\u5E94\u7248\u672C" })] })] });
9
9
  }
10
10
  //# sourceMappingURL=role-reference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"role-reference.js","sourceRoot":"","sources":["../../src/ui/role-reference.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAErF,+FAA+F;AAC/F,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO,8BACL,eAAK,SAAS,EAAC,kCAAkC,aAAC,wKAAoC,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAgB,QAAQ,2DAAiB,IAAM,EACtL,IAAI,IAAI,MAAC,eAAe,IAAC,KAAK,EAAC,kDAAU,EAAC,OAAO,EAAC,qBAAqB,EAAC,MAAM,EAAC,sPAAmD,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,8BAA8B,aACpN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,8FAAoB,EACpB,2fAAiG,EACjG,sEAAgB,EAChB,iUAAwD,EACxD,4EAAiB,EACjB,iaAAwE,IACpE,EACN,mBAAS,SAAS,EAAC,qCAAqC,aAAC,+FAA+B,EAAA,wBAAM,mBAAmB,GAAO,IAAU,EAClI,YAAG,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,mEAAoB,IACpE,IACjB,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"role-reference.js","sourceRoot":"","sources":["../../src/ui/role-reference.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAErF,+FAA+F;AAC/F,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO,8BACL,eAAK,SAAS,EAAC,kCAAkC,aAAC,wKAAoC,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAgB,QAAQ,2DAAiB,IAAM,EACtL,IAAI,IAAI,MAAC,eAAe,IAAC,KAAK,EAAC,kDAAU,EAAC,OAAO,EAAC,qBAAqB,EAAC,MAAM,EAAC,sPAAmD,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,8BAA8B,aACpN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,8FAAoB,EACpB,2fAAiG,EACjG,sEAAgB,EAChB,iUAAwD,EACxD,4EAAiB,EACjB,2fAAuF,IACnF,EACN,mBAAS,SAAS,EAAC,qCAAqC,aAAC,+FAA+B,EAAA,wBAAM,mBAAmB,GAAO,IAAU,EAClI,YAAG,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,mEAAoB,IACpE,IACjB,CAAA;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type CompanionView } from '../client-api.js';
2
+ import { type SleepPolicy } from '../character/sleep.js';
3
+ export declare function SleepEditor({ companion, value, disabled, active, onChange }: {
4
+ companion: CompanionView;
5
+ value: SleepPolicy;
6
+ disabled: boolean;
7
+ active: boolean;
8
+ onChange(value: SleepPolicy): void;
9
+ }): JSX.Element;
10
+ //# sourceMappingURL=sleep-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-editor.d.ts","sourceRoot":"","sources":["../../src/ui/sleep-editor.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAA2B,KAAK,WAAW,EAAmB,MAAM,uBAAuB,CAAA;AAGlG,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAAE,SAAS,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA0BnN"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { api } from '../client-api.js';
4
+ import { isSleeping, sleepPolicy } from '../character/sleep.js';
5
+ import { errorMessage } from './workspace-components.js';
6
+ export function SleepEditor({ companion, value, disabled, active, onChange }) {
7
+ const [state, setState] = useState(companion.sleepState ?? {});
8
+ const [error, setError] = useState(), [waking, setWaking] = useState(false);
9
+ const [now, setNow] = useState(Date.now());
10
+ useEffect(() => {
11
+ if (!active)
12
+ return;
13
+ let alive = true;
14
+ const refresh = async () => { try {
15
+ const data = await api(`/companions/${encodeURIComponent(companion.id)}/sleep`);
16
+ if (alive) {
17
+ setState(data.state);
18
+ setNow(Date.now());
19
+ setError(undefined);
20
+ }
21
+ }
22
+ catch (e) {
23
+ if (alive)
24
+ setError(errorMessage(e));
25
+ } };
26
+ void refresh();
27
+ const timer = setInterval(() => void refresh(), 15000);
28
+ return () => { alive = false; clearInterval(timer); };
29
+ }, [companion.id, active, companion.updatedAt]);
30
+ const sleeping = isSleeping({ ...companion, sleepState: state }, now), episode = state.episode;
31
+ const wake = async () => { setWaking(true); setError(undefined); try {
32
+ await api(`/companions/${encodeURIComponent(companion.id)}/sleep`, { method: 'POST', body: JSON.stringify({ action: 'wake' }) });
33
+ const data = await api(`/companions/${encodeURIComponent(companion.id)}/sleep`);
34
+ setState(data.state);
35
+ setNow(Date.now());
36
+ }
37
+ catch (e) {
38
+ setError(errorMessage(e));
39
+ }
40
+ finally {
41
+ setWaking(false);
42
+ } };
43
+ return _jsxs("section", { className: "dsh-partner-character", "aria-label": "\u7761\u7720\u4E0E\u505A\u68A6", children: [_jsxs("header", { children: [_jsxs("div", { children: [_jsxs("h3", { children: ["\u81EA\u4E3B\u7761\u7720 ", _jsx("small", { children: "\u53EF\u9009" })] }), _jsx("p", { children: "\u60F3\u4F11\u606F\u65F6\u5C31\u7761\u4E00\u4F1A\u513F\uFF0C\u4E0D\u8BBE\u56FA\u5B9A\u4F5C\u606F\u65F6\u95F4\u3002" })] }), _jsxs("div", { className: "dsh-partner-character-toggle", children: [_jsx("button", { type: "button", role: "switch", className: "dsh-partner-switch", "aria-label": "\u5F00\u542F\u81EA\u4E3B\u7761\u7720", "aria-checked": value.enabled, "data-on": value.enabled, disabled: disabled, onClick: () => onChange({ ...value, enabled: !value.enabled }), children: _jsx("i", { "aria-hidden": "true" }) }), _jsx("span", { children: value.enabled ? '已开启' : '已关闭' })] })] }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u7761\u7720\u53EA\u6682\u505C\u95F2\u65F6\u4E3B\u52A8\u642D\u8BDD\u3002\u4F60\u53D1\u6D88\u606F\u5C31\u4F1A\u53EB\u9192\u4ED6\uFF0C\u6B63\u5E38\u56DE\u590D\u548C\u4EFB\u52A1\u4E0D\u53D7\u9650\u5236\u3002\u5F00\u5173\u4FEE\u6539\u540E\u4FDD\u5B58\u8EAB\u4EFD\u751F\u6548\u3002" }), value.enabled && _jsxs("div", { className: "dsh-partner-sleep-dream-option", children: [_jsxs("div", { children: [_jsx("h4", { children: "\u7761\u7720\u65F6\u53EF\u4EE5\u505A\u68A6" }), _jsx("p", { children: "\u4ECE\u5DF2\u6709\u8BB0\u5FC6\u4EA7\u751F\u8054\u60F3\u3001\u753B\u9762\u4E0E\u611F\u53D7\uFF0C\u72EC\u7ACB\u4FDD\u5B58\u4E3A\u68A6\uFF0C\u4E0D\u6539\u5199\u771F\u5B9E\u8BB0\u5FC6\uFF0C\u4E5F\u4E0D\u6E05\u7A7A\u4E0A\u4E0B\u6587\u3002" })] }), _jsxs("div", { className: "dsh-partner-character-toggle", children: [_jsx("button", { type: "button", role: "switch", className: "dsh-partner-switch", "aria-label": "\u5141\u8BB8\u505A\u68A6", "aria-checked": value.dreamsEnabled, "data-on": value.dreamsEnabled, disabled: disabled, onClick: () => onChange({ ...value, dreamsEnabled: !value.dreamsEnabled }), children: _jsx("i", { "aria-hidden": "true" }) }), _jsx("span", { children: value.dreamsEnabled ? '已开启' : '已关闭' })] })] }), value.enabled && value.dreamsEnabled && !companion.automation.memory.enabled && _jsx("p", { className: "dsh-partner-character-hint", children: "\u5F53\u524D\u6CA1\u6709\u5F00\u542F\u8BB0\u5FC6\uFF1A\u53EF\u4EE5\u4F11\u606F\uFF0C\u4F46\u4E0D\u4F1A\u8BFB\u53D6\u65E7\u8BB0\u5FC6\u6216\u751F\u6210\u68A6\u5883\u3002\u53EF\u5728\u8BB0\u5FC6\u8BBE\u7F6E\u4E2D\u5F00\u542F\u3002" }), _jsxs("div", { className: "dsh-partner-sleep-status", role: "status", children: [_jsxs("div", { children: [_jsx("small", { children: "\u5F53\u524D\u751F\u6548\u72B6\u6001" }), _jsx("h4", { children: !sleepPolicy(companion).enabled ? '自主睡眠未开启' : sleeping ? (episode?.dream === 'generating' ? '正在做梦' : '正在休息') : '清醒' }), _jsx("p", { children: sleeping ? `预计 ${new Date(episode.wakeAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} 自然醒,也可以随时叫醒。` : episode?.wokeAt ? `最近醒来:${new Date(episode.wokeAt).toLocaleString()} · ${episode.wakeReason ?? '已醒来'}` : '由角色在聊天或空闲时自主决定是否休息,不强制每天睡觉。' }), sleeping && _jsx("p", { children: episode?.reason })] }), sleeping && _jsx("button", { type: "button", disabled: disabled || waking, onClick: () => void wake(), children: waking ? '正在唤醒…' : '叫醒他' })] }), error && _jsx("p", { role: "alert", className: "dsh-partner-inline-error", children: error }), _jsxs("div", { className: "dsh-partner-character-section", children: [_jsxs("h4", { children: ["\u6700\u8FD1\u7684\u68A6 ", _jsx("small", { children: "\u60F3\u8C61\u4E0E\u611F\u53D7 \u00B7 \u4E0D\u662F\u771F\u5B9E\u8BB0\u5FC6" })] }), !(state.dreams?.length) && _jsx("p", { className: "dsh-partner-character-hint", children: "\u8FD8\u6CA1\u6709\u7559\u4E0B\u68A6\u5883\u3002\u4E0D\u662F\u6BCF\u6B21\u7761\u7720\u90FD\u4F1A\u505A\u68A6\uFF0C\u9192\u6765\u4E5F\u4E0D\u4F1A\u81EA\u52A8\u53D1\u6D88\u606F\u3002" }), episode?.dream === 'failed' && _jsx("p", { className: "dsh-partner-character-hint", children: "\u8FD9\u6B21\u68A6\u5883\u6CA1\u6709\u751F\u6210\u5B8C\u6210\uFF0C\u539F\u8BB0\u5FC6\u4E0D\u53D7\u5F71\u54CD\u3002" }), [...(state.dreams ?? [])].reverse().map(d => _jsxs("details", { className: "dsh-partner-settings-advanced dsh-partner-dream", children: [_jsxs("summary", { children: [new Date(d.at).toLocaleString(), " ", _jsx("small", { children: "\u68A6\u5883" })] }), _jsx("p", { children: d.narrative }), d.feeling && _jsxs("p", { children: [_jsx("strong", { children: "\u9192\u540E\u7684\u611F\u53D7" }), _jsx("br", {}), d.feeling] }), d.topic && _jsxs("p", { children: [_jsx("strong", { children: "\u60F3\u5230\u7684\u8BDD\u9898" }), _jsx("br", {}), d.topic] })] }, d.id))] })] });
44
+ }
45
+ //# sourceMappingURL=sleep-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-editor.js","sourceRoot":"","sources":["../../src/ui/sleep-editor.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@lemoncat7/dsh-partner",
3
- "version": "2.11.6",
4
- "description": "Long-lived AI companions with WeChat, Matrix and Mattermost channels for DeepSeek Harness",
3
+ "version": "2.21.5",
4
+ "description": "Long-lived AI companions with QQ, WeChat, Matrix and Mattermost channels for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",
7
7
  "dsh",
8
8
  "dsh-plugin",
9
9
  "companion",
10
10
  "wechat",
11
- "weixin"
11
+ "weixin",
12
+ "qq"
12
13
  ],
13
14
  "license": "MIT",
14
15
  "type": "module",
@@ -103,7 +104,33 @@
103
104
  "docs/blobfox-manifest.json",
104
105
  "docs/releases/2.11.5.md",
105
106
  "docs/releases/2.11.6.md",
106
- "docs/storage-read-performance.md"
107
+ "docs/storage-read-performance.md",
108
+ "docs/releases/2.11.7.md",
109
+ "docs/releases/2.12.0.md",
110
+ "docs/qq-channel.md",
111
+ "docs/releases/2.13.0.md",
112
+ "docs/releases/2.14.0.md",
113
+ "docs/releases/2.15.0.md",
114
+ "docs/releases/2.15.1.md",
115
+ "docs/releases/2.16.0.md",
116
+ "docs/releases/2.17.0.md",
117
+ "docs/releases/2.17.1.md",
118
+ "docs/releases/2.18.0.md",
119
+ "docs/releases/2.18.1.md",
120
+ "docs/releases/2.19.0.md",
121
+ "docs/releases/2.19.1.md",
122
+ "docs/releases/2.19.2.md",
123
+ "docs/releases/2.19.3.md",
124
+ "docs/releases/2.20.0.md",
125
+ "docs/releases/2.20.1.md",
126
+ "docs/releases/2.21.0.md",
127
+ "docs/releases/2.21.1.md",
128
+ "docs/releases/2.21.2.md",
129
+ "docs/qq-attention.md",
130
+ "docs/releases/2.21.3.md",
131
+ "docs/releases/2.21.4.md",
132
+ "docs/releases/2.21.5.md",
133
+ "docs/tool-entry-compatibility.md"
107
134
  ],
108
135
  "dsh": {
109
136
  "bundle": {
@@ -198,7 +225,8 @@
198
225
  "react": "18.3.1",
199
226
  "react-dom": "18.3.1",
200
227
  "three": "0.185.1",
201
- "typescript": "^5.9.3"
228
+ "typescript": "^5.9.3",
229
+ "ws": "^8.22.0"
202
230
  },
203
231
  "publishConfig": {
204
232
  "access": "public"