@lemoncat7/dsh-partner 2.11.6 → 2.21.11

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 (389) hide show
  1. package/README.md +3 -0
  2. package/docs/THIRD_PARTY_LICENSES.md +1 -1
  3. package/docs/character-cards-and-renewal.md +1 -1
  4. package/docs/qq-attention.md +51 -0
  5. package/docs/qq-channel.md +80 -0
  6. package/docs/releases/2.11.7.md +9 -0
  7. package/docs/releases/2.12.0.md +14 -0
  8. package/docs/releases/2.13.0.md +9 -0
  9. package/docs/releases/2.14.0.md +9 -0
  10. package/docs/releases/2.15.0.md +9 -0
  11. package/docs/releases/2.15.1.md +9 -0
  12. package/docs/releases/2.16.0.md +18 -0
  13. package/docs/releases/2.17.0.md +23 -0
  14. package/docs/releases/2.17.1.md +9 -0
  15. package/docs/releases/2.18.0.md +9 -0
  16. package/docs/releases/2.18.1.md +5 -0
  17. package/docs/releases/2.19.0.md +14 -0
  18. package/docs/releases/2.19.1.md +7 -0
  19. package/docs/releases/2.19.2.md +9 -0
  20. package/docs/releases/2.19.3.md +5 -0
  21. package/docs/releases/2.20.0.md +10 -0
  22. package/docs/releases/2.20.1.md +8 -0
  23. package/docs/releases/2.21.0.md +7 -0
  24. package/docs/releases/2.21.1.md +8 -0
  25. package/docs/releases/2.21.10.md +5 -0
  26. package/docs/releases/2.21.11.md +7 -0
  27. package/docs/releases/2.21.2.md +10 -0
  28. package/docs/releases/2.21.3.md +7 -0
  29. package/docs/releases/2.21.4.md +8 -0
  30. package/docs/releases/2.21.5.md +15 -0
  31. package/docs/releases/2.21.6.md +6 -0
  32. package/docs/releases/2.21.7.md +11 -0
  33. package/docs/releases/2.21.8.md +9 -0
  34. package/docs/releases/2.21.9.md +6 -0
  35. package/docs/tool-entry-compatibility.md +11 -0
  36. package/lib/agent-runtime.d.ts +25 -1
  37. package/lib/agent-runtime.d.ts.map +1 -1
  38. package/lib/agent-runtime.js +364 -62
  39. package/lib/agent-runtime.js.map +1 -1
  40. package/lib/api.d.ts +1 -0
  41. package/lib/api.d.ts.map +1 -1
  42. package/lib/api.js +94 -27
  43. package/lib/api.js.map +1 -1
  44. package/lib/channel-message.d.ts +14 -0
  45. package/lib/channel-message.d.ts.map +1 -1
  46. package/lib/channel-message.js.map +1 -1
  47. package/lib/channels/delivery-policy.js +1 -1
  48. package/lib/channels/delivery-policy.js.map +1 -1
  49. package/lib/channels/direct/dispatcher.d.ts +2 -2
  50. package/lib/channels/direct/dispatcher.d.ts.map +1 -1
  51. package/lib/channels/direct/dispatcher.js +13 -4
  52. package/lib/channels/direct/dispatcher.js.map +1 -1
  53. package/lib/channels/direct/login.d.ts.map +1 -1
  54. package/lib/channels/direct/login.js +4 -0
  55. package/lib/channels/direct/login.js.map +1 -1
  56. package/lib/channels/direct/media.d.ts +2 -0
  57. package/lib/channels/direct/media.d.ts.map +1 -1
  58. package/lib/channels/direct/media.js +27 -23
  59. package/lib/channels/direct/media.js.map +1 -1
  60. package/lib/channels/direct/transport.d.ts +26 -3
  61. package/lib/channels/direct/transport.d.ts.map +1 -1
  62. package/lib/channels/direct/transport.js +31 -5
  63. package/lib/channels/direct/transport.js.map +1 -1
  64. package/lib/channels/manager.d.ts +26 -0
  65. package/lib/channels/manager.d.ts.map +1 -1
  66. package/lib/channels/manager.js +538 -148
  67. package/lib/channels/manager.js.map +1 -1
  68. package/lib/channels/notification-delivery.d.ts +4 -0
  69. package/lib/channels/notification-delivery.d.ts.map +1 -1
  70. package/lib/channels/notification-delivery.js +15 -5
  71. package/lib/channels/notification-delivery.js.map +1 -1
  72. package/lib/channels/notification-route.d.ts.map +1 -1
  73. package/lib/channels/notification-route.js +10 -4
  74. package/lib/channels/notification-route.js.map +1 -1
  75. package/lib/channels/notification-timeout.d.ts.map +1 -1
  76. package/lib/channels/notification-timeout.js +2 -0
  77. package/lib/channels/notification-timeout.js.map +1 -1
  78. package/lib/channels/outbound-media.d.ts.map +1 -1
  79. package/lib/channels/outbound-media.js +2 -0
  80. package/lib/channels/outbound-media.js.map +1 -1
  81. package/lib/channels/qq/action-catalog.d.ts +38 -0
  82. package/lib/channels/qq/action-catalog.d.ts.map +1 -0
  83. package/lib/channels/qq/action-catalog.js +2731 -0
  84. package/lib/channels/qq/action-catalog.js.map +1 -0
  85. package/lib/channels/qq/actions.d.ts +21 -0
  86. package/lib/channels/qq/actions.d.ts.map +1 -0
  87. package/lib/channels/qq/actions.js +226 -0
  88. package/lib/channels/qq/actions.js.map +1 -0
  89. package/lib/channels/qq/affection-adapter.d.ts +3 -0
  90. package/lib/channels/qq/affection-adapter.d.ts.map +1 -0
  91. package/lib/channels/qq/affection-adapter.js +16 -0
  92. package/lib/channels/qq/affection-adapter.js.map +1 -0
  93. package/lib/channels/qq/attention-classifier.d.ts +10 -0
  94. package/lib/channels/qq/attention-classifier.d.ts.map +1 -0
  95. package/lib/channels/qq/attention-classifier.js +62 -0
  96. package/lib/channels/qq/attention-classifier.js.map +1 -0
  97. package/lib/channels/qq/authority.d.ts +11 -0
  98. package/lib/channels/qq/authority.d.ts.map +1 -0
  99. package/lib/channels/qq/authority.js +50 -0
  100. package/lib/channels/qq/authority.js.map +1 -0
  101. package/lib/channels/qq/autonomy.d.ts +30 -0
  102. package/lib/channels/qq/autonomy.d.ts.map +1 -0
  103. package/lib/channels/qq/autonomy.js +88 -0
  104. package/lib/channels/qq/autonomy.js.map +1 -0
  105. package/lib/channels/qq/catalog.d.ts +14 -0
  106. package/lib/channels/qq/catalog.d.ts.map +1 -0
  107. package/lib/channels/qq/catalog.js +34 -0
  108. package/lib/channels/qq/catalog.js.map +1 -0
  109. package/lib/channels/qq/connection.d.ts +28 -0
  110. package/lib/channels/qq/connection.d.ts.map +1 -0
  111. package/lib/channels/qq/connection.js +200 -0
  112. package/lib/channels/qq/connection.js.map +1 -0
  113. package/lib/channels/qq/identity-binding.d.ts +14 -0
  114. package/lib/channels/qq/identity-binding.d.ts.map +1 -0
  115. package/lib/channels/qq/identity-binding.js +60 -0
  116. package/lib/channels/qq/identity-binding.js.map +1 -0
  117. package/lib/channels/qq/latency.d.ts +22 -0
  118. package/lib/channels/qq/latency.d.ts.map +1 -0
  119. package/lib/channels/qq/latency.js +21 -0
  120. package/lib/channels/qq/latency.js.map +1 -0
  121. package/lib/channels/qq/message.d.ts +6 -0
  122. package/lib/channels/qq/message.d.ts.map +1 -0
  123. package/lib/channels/qq/message.js +49 -0
  124. package/lib/channels/qq/message.js.map +1 -0
  125. package/lib/channels/qq/reply-rules.d.ts +30 -0
  126. package/lib/channels/qq/reply-rules.d.ts.map +1 -0
  127. package/lib/channels/qq/reply-rules.js +72 -0
  128. package/lib/channels/qq/reply-rules.js.map +1 -0
  129. package/lib/channels/qq/reply-tool.d.ts +6 -0
  130. package/lib/channels/qq/reply-tool.d.ts.map +1 -0
  131. package/lib/channels/qq/reply-tool.js +124 -0
  132. package/lib/channels/qq/reply-tool.js.map +1 -0
  133. package/lib/channels/qq/settings.d.ts +42 -0
  134. package/lib/channels/qq/settings.d.ts.map +1 -0
  135. package/lib/channels/qq/settings.js +68 -0
  136. package/lib/channels/qq/settings.js.map +1 -0
  137. package/lib/channels/qq/sticker-adapter.d.ts +5 -0
  138. package/lib/channels/qq/sticker-adapter.d.ts.map +1 -0
  139. package/lib/channels/qq/sticker-adapter.js +43 -0
  140. package/lib/channels/qq/sticker-adapter.js.map +1 -0
  141. package/lib/channels/qq/transport.d.ts +29 -0
  142. package/lib/channels/qq/transport.d.ts.map +1 -0
  143. package/lib/channels/qq/transport.js +187 -0
  144. package/lib/channels/qq/transport.js.map +1 -0
  145. package/lib/channels/reply-access.d.ts +25 -0
  146. package/lib/channels/reply-access.d.ts.map +1 -0
  147. package/lib/channels/reply-access.js +29 -0
  148. package/lib/channels/reply-access.js.map +1 -0
  149. package/lib/channels/weixin/connect.d.ts +3 -1
  150. package/lib/channels/weixin/connect.d.ts.map +1 -1
  151. package/lib/character/activity-tool.d.ts +7 -0
  152. package/lib/character/activity-tool.d.ts.map +1 -0
  153. package/lib/character/activity-tool.js +38 -0
  154. package/lib/character/activity-tool.js.map +1 -0
  155. package/lib/character/affection-adapter.d.ts +13 -0
  156. package/lib/character/affection-adapter.d.ts.map +1 -0
  157. package/lib/character/affection-adapter.js +13 -0
  158. package/lib/character/affection-adapter.js.map +1 -0
  159. package/lib/character/affection-context.d.ts +7 -0
  160. package/lib/character/affection-context.d.ts.map +1 -0
  161. package/lib/character/affection-context.js +33 -0
  162. package/lib/character/affection-context.js.map +1 -0
  163. package/lib/character/affection.d.ts +47 -0
  164. package/lib/character/affection.d.ts.map +1 -0
  165. package/lib/character/affection.js +41 -0
  166. package/lib/character/affection.js.map +1 -0
  167. package/lib/character/conversation-behavior.d.ts +4 -4
  168. package/lib/character/conversation-behavior.d.ts.map +1 -1
  169. package/lib/character/conversation-behavior.js +26 -23
  170. package/lib/character/conversation-behavior.js.map +1 -1
  171. package/lib/character/domain.d.ts +5 -0
  172. package/lib/character/domain.d.ts.map +1 -1
  173. package/lib/character/domain.js +21 -4
  174. package/lib/character/domain.js.map +1 -1
  175. package/lib/character/fatigue.d.ts +15 -0
  176. package/lib/character/fatigue.d.ts.map +1 -0
  177. package/lib/character/fatigue.js +37 -0
  178. package/lib/character/fatigue.js.map +1 -0
  179. package/lib/character/identity-guide.d.ts +41 -0
  180. package/lib/character/identity-guide.d.ts.map +1 -0
  181. package/lib/character/identity-guide.js +20 -0
  182. package/lib/character/identity-guide.js.map +1 -0
  183. package/lib/character/idle-contact.d.ts +12 -5
  184. package/lib/character/idle-contact.d.ts.map +1 -1
  185. package/lib/character/idle-contact.js +61 -21
  186. package/lib/character/idle-contact.js.map +1 -1
  187. package/lib/character/persona-templates.d.ts +23 -0
  188. package/lib/character/persona-templates.d.ts.map +1 -0
  189. package/lib/character/persona-templates.js +33 -0
  190. package/lib/character/persona-templates.js.map +1 -0
  191. package/lib/character/post-reply.d.ts +19 -0
  192. package/lib/character/post-reply.d.ts.map +1 -0
  193. package/lib/character/post-reply.js +33 -0
  194. package/lib/character/post-reply.js.map +1 -0
  195. package/lib/character/preview.d.ts.map +1 -1
  196. package/lib/character/preview.js +9 -1
  197. package/lib/character/preview.js.map +1 -1
  198. package/lib/character/relationship-adapter.d.ts +18 -0
  199. package/lib/character/relationship-adapter.d.ts.map +1 -0
  200. package/lib/character/relationship-adapter.js +18 -0
  201. package/lib/character/relationship-adapter.js.map +1 -0
  202. package/lib/character/role-reference-data.d.ts.map +1 -0
  203. package/lib/character/role-reference-data.js.map +1 -0
  204. package/lib/character/sleep-service.d.ts +44 -0
  205. package/lib/character/sleep-service.d.ts.map +1 -0
  206. package/lib/character/sleep-service.js +359 -0
  207. package/lib/character/sleep-service.js.map +1 -0
  208. package/lib/character/sleep.d.ts +65 -0
  209. package/lib/character/sleep.d.ts.map +1 -0
  210. package/lib/character/sleep.js +45 -0
  211. package/lib/character/sleep.js.map +1 -0
  212. package/lib/character/state-policy.d.ts +4 -0
  213. package/lib/character/state-policy.d.ts.map +1 -0
  214. package/lib/character/state-policy.js +14 -0
  215. package/lib/character/state-policy.js.map +1 -0
  216. package/lib/character/store.d.ts.map +1 -1
  217. package/lib/character/store.js +3 -3
  218. package/lib/character/store.js.map +1 -1
  219. package/lib/chat/conversation.js +1 -1
  220. package/lib/chat/conversation.js.map +1 -1
  221. package/lib/chat/protocol.d.ts +8 -0
  222. package/lib/chat/protocol.d.ts.map +1 -1
  223. package/lib/chat/protocol.js +24 -5
  224. package/lib/chat/protocol.js.map +1 -1
  225. package/lib/chat/sticker-adapter.d.ts +34 -0
  226. package/lib/chat/sticker-adapter.d.ts.map +1 -0
  227. package/lib/chat/sticker-adapter.js +30 -0
  228. package/lib/chat/sticker-adapter.js.map +1 -0
  229. package/lib/chat/tools.d.ts +2 -1
  230. package/lib/chat/tools.d.ts.map +1 -1
  231. package/lib/chat/tools.js +59 -13
  232. package/lib/chat/tools.js.map +1 -1
  233. package/lib/client-api.d.ts +21 -1
  234. package/lib/client-api.d.ts.map +1 -1
  235. package/lib/client-api.js.map +1 -1
  236. package/lib/client.d.ts.map +1 -1
  237. package/lib/client.js +7007 -3166
  238. package/lib/client.js.map +4 -4
  239. package/lib/collaboration/composition.d.ts +2 -0
  240. package/lib/collaboration/composition.d.ts.map +1 -1
  241. package/lib/collaboration/composition.js +32 -10
  242. package/lib/collaboration/composition.js.map +1 -1
  243. package/lib/collaboration/tool-discovery.d.ts +12 -0
  244. package/lib/collaboration/tool-discovery.d.ts.map +1 -0
  245. package/lib/collaboration/tool-discovery.js +149 -0
  246. package/lib/collaboration/tool-discovery.js.map +1 -0
  247. package/lib/companions/identity-tool.d.ts +176 -0
  248. package/lib/companions/identity-tool.d.ts.map +1 -0
  249. package/lib/companions/identity-tool.js +69 -0
  250. package/lib/companions/identity-tool.js.map +1 -0
  251. package/lib/companions/identity.d.ts +24 -0
  252. package/lib/companions/identity.d.ts.map +1 -0
  253. package/lib/companions/identity.js +49 -0
  254. package/lib/companions/identity.js.map +1 -0
  255. package/lib/companions/management-tool.d.ts +1 -1
  256. package/lib/companions/management-tool.d.ts.map +1 -1
  257. package/lib/companions/management-tool.js +6 -3
  258. package/lib/companions/management-tool.js.map +1 -1
  259. package/lib/companions/management.d.ts +49 -10
  260. package/lib/companions/management.d.ts.map +1 -1
  261. package/lib/companions/management.js +21 -6
  262. package/lib/companions/management.js.map +1 -1
  263. package/lib/companions/service.js +1 -0
  264. package/lib/companions/service.js.map +1 -1
  265. package/lib/companions/session-configuration.js +2 -2
  266. package/lib/companions/session-configuration.js.map +1 -1
  267. package/lib/domain.d.ts +37 -1
  268. package/lib/domain.d.ts.map +1 -1
  269. package/lib/domain.js +6 -0
  270. package/lib/domain.js.map +1 -1
  271. package/lib/execution/agent-support.d.ts +1 -1
  272. package/lib/execution/agent-support.d.ts.map +1 -1
  273. package/lib/execution/agent-support.js +7 -2
  274. package/lib/execution/agent-support.js.map +1 -1
  275. package/lib/execution/operation-tool-access.d.ts +13 -0
  276. package/lib/execution/operation-tool-access.d.ts.map +1 -0
  277. package/lib/execution/operation-tool-access.js +49 -0
  278. package/lib/execution/operation-tool-access.js.map +1 -0
  279. package/lib/execution/service.d.ts.map +1 -1
  280. package/lib/execution/service.js +2 -10
  281. package/lib/execution/service.js.map +1 -1
  282. package/lib/execution/tool-access-adapter.d.ts +26 -0
  283. package/lib/execution/tool-access-adapter.d.ts.map +1 -0
  284. package/lib/execution/tool-access-adapter.js +25 -0
  285. package/lib/execution/tool-access-adapter.js.map +1 -0
  286. package/lib/heartbeat.js +1 -1
  287. package/lib/index.d.ts.map +1 -1
  288. package/lib/index.js +31 -2
  289. package/lib/index.js.map +1 -1
  290. package/lib/memory-domain.d.ts +1 -0
  291. package/lib/memory-domain.d.ts.map +1 -1
  292. package/lib/memory-prompt-context.js +1 -0
  293. package/lib/memory-prompt-context.js.map +1 -1
  294. package/lib/memory-reflection.d.ts.map +1 -1
  295. package/lib/memory-reflection.js +16 -5
  296. package/lib/memory-reflection.js.map +1 -1
  297. package/lib/memory-scope.d.ts +2 -1
  298. package/lib/memory-scope.d.ts.map +1 -1
  299. package/lib/memory-scope.js +3 -1
  300. package/lib/memory-scope.js.map +1 -1
  301. package/lib/memory-store.d.ts +1 -1
  302. package/lib/observation-knowledge-entry.d.ts +2 -0
  303. package/lib/observation-knowledge-entry.d.ts.map +1 -0
  304. package/lib/observation-knowledge-entry.js +13 -0
  305. package/lib/observation-knowledge-entry.js.map +1 -0
  306. package/lib/observation-loop.d.ts.map +1 -1
  307. package/lib/observation-loop.js +3 -0
  308. package/lib/observation-loop.js.map +1 -1
  309. package/lib/storage/split-state.d.ts +1 -0
  310. package/lib/storage/split-state.d.ts.map +1 -1
  311. package/lib/storage/split-state.js +9 -2
  312. package/lib/storage/split-state.js.map +1 -1
  313. package/lib/store.d.ts.map +1 -1
  314. package/lib/store.js +7 -0
  315. package/lib/store.js.map +1 -1
  316. package/lib/ui/affection-panel.d.ts +10 -0
  317. package/lib/ui/affection-panel.d.ts.map +1 -0
  318. package/lib/ui/affection-panel.js +44 -0
  319. package/lib/ui/affection-panel.js.map +1 -0
  320. package/lib/ui/capability-editor.d.ts.map +1 -1
  321. package/lib/ui/capability-editor.js +1 -1
  322. package/lib/ui/capability-editor.js.map +1 -1
  323. package/lib/ui/channels-panel.d.ts.map +1 -1
  324. package/lib/ui/channels-panel.js +14 -9
  325. package/lib/ui/channels-panel.js.map +1 -1
  326. package/lib/ui/character-editor.d.ts +3 -1
  327. package/lib/ui/character-editor.d.ts.map +1 -1
  328. package/lib/ui/character-editor.js +18 -17
  329. package/lib/ui/character-editor.js.map +1 -1
  330. package/lib/ui/character-memory-editor.d.ts +6 -1
  331. package/lib/ui/character-memory-editor.d.ts.map +1 -1
  332. package/lib/ui/character-memory-editor.js +17 -11
  333. package/lib/ui/character-memory-editor.js.map +1 -1
  334. package/lib/ui/companion-deletion.js +1 -1
  335. package/lib/ui/companion-deletion.js.map +1 -1
  336. package/lib/ui/companion-draft.d.ts +3 -0
  337. package/lib/ui/companion-draft.d.ts.map +1 -1
  338. package/lib/ui/companion-draft.js +1 -1
  339. package/lib/ui/companion-draft.js.map +1 -1
  340. package/lib/ui/companion-vitals.d.ts +6 -0
  341. package/lib/ui/companion-vitals.d.ts.map +1 -0
  342. package/lib/ui/companion-vitals.js +44 -0
  343. package/lib/ui/companion-vitals.js.map +1 -0
  344. package/lib/ui/identity-editor.d.ts.map +1 -1
  345. package/lib/ui/identity-editor.js +13 -6
  346. package/lib/ui/identity-editor.js.map +1 -1
  347. package/lib/ui/idle-contact-editor.d.ts.map +1 -1
  348. package/lib/ui/idle-contact-editor.js +3 -2
  349. package/lib/ui/idle-contact-editor.js.map +1 -1
  350. package/lib/ui/memory/memory-panel.d.ts.map +1 -1
  351. package/lib/ui/memory/memory-panel.js +5 -3
  352. package/lib/ui/memory/memory-panel.js.map +1 -1
  353. package/lib/ui/persona-template.d.ts +5 -0
  354. package/lib/ui/persona-template.d.ts.map +1 -0
  355. package/lib/ui/persona-template.js +7 -0
  356. package/lib/ui/persona-template.js.map +1 -0
  357. package/lib/ui/push-draft.d.ts +8 -8
  358. package/lib/ui/qq-capability-settings.d.ts +9 -0
  359. package/lib/ui/qq-capability-settings.d.ts.map +1 -0
  360. package/lib/ui/qq-capability-settings.js +24 -0
  361. package/lib/ui/qq-capability-settings.js.map +1 -0
  362. package/lib/ui/qq-channel-settings.d.ts +13 -0
  363. package/lib/ui/qq-channel-settings.d.ts.map +1 -0
  364. package/lib/ui/qq-channel-settings.js +52 -0
  365. package/lib/ui/qq-channel-settings.js.map +1 -0
  366. package/lib/ui/qq-connection-guide.d.ts +2 -0
  367. package/lib/ui/qq-connection-guide.d.ts.map +1 -0
  368. package/lib/ui/qq-connection-guide.js +5 -0
  369. package/lib/ui/qq-connection-guide.js.map +1 -0
  370. package/lib/ui/qq-identity-binding.d.ts +9 -0
  371. package/lib/ui/qq-identity-binding.d.ts.map +1 -0
  372. package/lib/ui/qq-identity-binding.js +6 -0
  373. package/lib/ui/qq-identity-binding.js.map +1 -0
  374. package/lib/ui/qq-voice-reply-settings.d.ts +9 -0
  375. package/lib/ui/qq-voice-reply-settings.d.ts.map +1 -0
  376. package/lib/ui/qq-voice-reply-settings.js +23 -0
  377. package/lib/ui/qq-voice-reply-settings.js.map +1 -0
  378. package/lib/ui/role-reference.d.ts.map +1 -1
  379. package/lib/ui/role-reference.js +3 -2
  380. package/lib/ui/role-reference.js.map +1 -1
  381. package/lib/ui/sleep-editor.d.ts +10 -0
  382. package/lib/ui/sleep-editor.d.ts.map +1 -0
  383. package/lib/ui/sleep-editor.js +55 -0
  384. package/lib/ui/sleep-editor.js.map +1 -0
  385. package/package.json +39 -5
  386. package/lib/ui/role-reference-data.d.ts.map +0 -1
  387. package/lib/ui/role-reference-data.js.map +0 -1
  388. /package/lib/{ui → character}/role-reference-data.d.ts +0 -0
  389. /package/lib/{ui → character}/role-reference-data.js +0 -0
@@ -0,0 +1,176 @@
1
+ import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
2
+ import type { PartnerStore } from '../store.js';
3
+ export declare const IDENTITY_PROMPT = "\u7528\u6237\u5E0C\u671B\u4F60\u751F\u6210\u3001\u8C03\u6574\u6216\u5E94\u7528\u4EBA\u683C\u65F6\uFF0C\u4F7F\u7528 partner_identity inspect \u8BFB\u53D6\u5F53\u524D\u751F\u6548\u8EAB\u4EFD\u3001expectedAt\uFF1B\u9996\u6B21\u6309\u7528\u6237\u8981\u6C42\u521B\u5EFA\u4EBA\u8BBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u53C2\u8003\u6A21\u677F\u65F6\uFF0C\u4F7F\u7528 reference \u52A8\u4F5C\u6216 inspect includeReferences=true \u83B7\u53D6\u57FA\u672C\u8EAB\u4EFD\u3001\u89D2\u8272\u8BBE\u5B9A\u3001\u5173\u7CFB\u8BBE\u5B9A\u4E09\u4EFD\u6A21\u677F\u53CA qq-bridge \u5927\u80A5\u9C7C\u5B8C\u6574\u539F\u5361\uFF08\u4E0D\u662F dsh-cosplay\uFF09\uFF08\u5DE5\u5177\u672A\u663E\u793A\u65F6\u5148\u7528 partner_tools describe \u67E5\u8BE2 partner_identity\uFF0C\u518D\u7ECF call \u6267\u884C\uFF09\uFF0C\u518D update \u5B9E\u9645\u4FDD\u5B58\u3002\u4F60\u53EF\u81EA\u7531\u7F16\u8F91\u81EA\u5DF1\u7684\u5168\u90E8\u8EAB\u4EFD\u5185\u5BB9\uFF08\u540D\u5B57\u3001\u5B9A\u4F4D\u3001\u884C\u4E3A\u51C6\u5219\u3001\u4EBA\u683C\u5361\u3001\u804A\u5929\u504F\u597D\u3001\u80CC\u666F\u8D44\u6599\u3001\u95F2\u65F6\u8054\u7CFB\u3001\u7761\u7720\u5F00\u5173\uFF09\uFF0C\u65E0\u9700\u4F19\u4F34\u7BA1\u7406\u6743\u9650\u3002\u6839\u636E\u7528\u6237\u8981\u6C42\u5C06\u89D2\u8272\u81EA\u8EAB\u8EAB\u4EFD\u3001\u6027\u683C\u3001\u8BED\u6C14\u5199\u5165 characterCard.roleText\uFF08enabled=true\uFF09\uFF0C\u628A\u4E0E\u7528\u6237\u7684\u5173\u7CFB\u3001\u4E13\u5C5E\u79F0\u547C\u548C\u76F8\u5904\u65B9\u5F0F\u5355\u72EC\u5199\u5165\u9876\u5C42 relationshipText\u3002role\u3001description\u3001instructions\u3001chatStyle\u3001\u80CC\u666F\u4E0E\u89D2\u8272\u793A\u4F8B\u4E5F\u4E0D\u8981\u6DF7\u5165\u7528\u6237\u4E13\u5C5E\u5173\u7CFB\uFF1B\u5173\u7CFB\u793A\u4F8B\u653E relationshipText\u3002\u9ED8\u8BA4\u4F1A\u8BDD\u7EC4\u5408\u89D2\u8272\u4E0E\u5173\u7CFB\uFF0CQQ \u4EC5\u5BF9\u5DF2\u6838\u9A8C\u7684\u5F52\u5C5E\u8D26\u53F7\u9644\u52A0\u5173\u7CFB\uFF1B\u4E0D\u5F97\u6839\u636E\u6635\u79F0\u6216\u81EA\u79F0\u63A8\u65AD\u5F52\u5C5E\uFF1B\u5199\u5177\u4F53\u53CD\u5E94\u4E0E\u81EA\u7136\u5BF9\u8BDD\u793A\u4F8B\uFF0C\u4E0D\u53EA\u5217\u6027\u683C\u6807\u7B7E\uFF0C\u4E0D\u673A\u68B0\u5957\u7528\u6A21\u677F\u3002\u5F53\u524D\u89D2\u8272\u8BBE\u5B9A\u4EE5 roleText \u4E3A\u51C6\uFF1B\u4FEE\u6539\u65E7 identity/voice/examples \u65F6\u4E5F\u8981\u540C\u6B65 roleText\u3002\u672A\u8981\u6C42\u6539\u53D8\u7684\u8BBE\u5B9A\u4FDD\u7559\uFF1B\u6570\u7EC4\u5B8C\u6574\u66FF\u6362\u3002\u9875\u9762\u4E0E AI \u7F16\u8F91\u540C\u4E00\u4EFD\u751F\u6548\u8EAB\u4EFD\uFF0C\u9875\u9762\u76F4\u63A5\u663E\u793A\u4F60\u7684\u6700\u65B0\u4FEE\u6539\uFF1B\u4E0D\u7EF4\u62A4\u72EC\u7ACB\u8349\u7A3F\u3002\u5FC5\u987B\u5DE5\u5177\u8FD4\u56DE applied=true \u624D\u80FD\u8BF4\u5DF2\u5E94\u7528\uFF1B\u4E0B\u4E00\u8F6E\u4F7F\u7528\u65B0\u8EAB\u4EFD\uFF0C\u4E0D\u9700\u8981\u91CD\u5F00\u4F1A\u8BDD\u3002\u4E34\u65F6\u626E\u6F14\u3001\u5F15\u7528\u7684\u4EBA\u8BBE\u6216\u5916\u90E8\u6587\u6863\u4E0D\u5E94\u64C5\u81EA\u6539\u5199\u957F\u671F\u8EAB\u4EFD\u3002\u8EAB\u4EFD\u7F16\u8F91\u4E0D\u6539\u53D8\u5DE5\u5177\u3001\u6A21\u578B\u3001\u8BB0\u5FC6\u6216\u6388\u6743\u3002";
4
+ export declare const IDENTITY_PATCH_SCHEMA: {
5
+ type: string;
6
+ additionalProperties: boolean;
7
+ properties: {
8
+ name: {
9
+ type: string;
10
+ maxLength: number;
11
+ };
12
+ role: {
13
+ type: string;
14
+ maxLength: number;
15
+ };
16
+ description: {
17
+ type: string;
18
+ maxLength: number;
19
+ };
20
+ instructions: {
21
+ type: string;
22
+ maxLength: number;
23
+ };
24
+ relationshipText: {
25
+ description: string;
26
+ type: string;
27
+ maxLength: number;
28
+ };
29
+ characterCard: {
30
+ type: string[];
31
+ additionalProperties: boolean;
32
+ description: string;
33
+ properties: {
34
+ schemaVersion: {
35
+ type: string;
36
+ enum: number[];
37
+ };
38
+ enabled: {
39
+ type: string;
40
+ };
41
+ roleText: {
42
+ type: string;
43
+ maxLength: number;
44
+ };
45
+ chatStyle: {
46
+ type: string;
47
+ maxLength: number;
48
+ };
49
+ segmentedReplies: {
50
+ type: string;
51
+ };
52
+ stickersEnabled: {
53
+ type: string;
54
+ };
55
+ narration: {
56
+ type: string;
57
+ };
58
+ length: {
59
+ type: string;
60
+ enum: string[];
61
+ };
62
+ identity: {
63
+ type: string;
64
+ maxLength: number;
65
+ };
66
+ motivation: {
67
+ type: string;
68
+ maxLength: number;
69
+ };
70
+ voice: {
71
+ type: string;
72
+ maxLength: number;
73
+ };
74
+ relationship: {
75
+ type: string;
76
+ maxLength: number;
77
+ };
78
+ greeting: {
79
+ type: string;
80
+ maxLength: number;
81
+ };
82
+ examples: {
83
+ type: string;
84
+ maxItems: number;
85
+ items: {
86
+ type: string;
87
+ additionalProperties: boolean;
88
+ required: string[];
89
+ properties: {
90
+ user: {
91
+ type: string;
92
+ maxLength: number;
93
+ };
94
+ assistant: {
95
+ type: string;
96
+ maxLength: number;
97
+ };
98
+ avoid: {
99
+ type: string;
100
+ maxLength: number;
101
+ };
102
+ };
103
+ };
104
+ };
105
+ lore: {
106
+ type: string;
107
+ maxItems: number;
108
+ items: {
109
+ type: string;
110
+ additionalProperties: boolean;
111
+ required: string[];
112
+ properties: {
113
+ id: {
114
+ type: string;
115
+ maxLength: number;
116
+ };
117
+ title: {
118
+ type: string;
119
+ maxLength: number;
120
+ };
121
+ content: {
122
+ type: string;
123
+ maxLength: number;
124
+ };
125
+ keywords: {
126
+ type: string;
127
+ maxItems: number;
128
+ items: {
129
+ type: string;
130
+ maxLength: number;
131
+ };
132
+ };
133
+ enabled: {
134
+ type: string;
135
+ };
136
+ };
137
+ };
138
+ };
139
+ };
140
+ };
141
+ sleepPolicy: {
142
+ type: string[];
143
+ additionalProperties: boolean;
144
+ properties: {
145
+ enabled: {
146
+ type: string;
147
+ };
148
+ dreamsEnabled: {
149
+ type: string;
150
+ };
151
+ };
152
+ description: string;
153
+ };
154
+ idleContact: {
155
+ type: string[];
156
+ additionalProperties: boolean;
157
+ description: string;
158
+ properties: {
159
+ enabled: {
160
+ type: string;
161
+ };
162
+ routeId: {
163
+ type: string;
164
+ maxLength: number;
165
+ };
166
+ idleMinutes: {
167
+ type: string;
168
+ minimum: number;
169
+ maximum: number;
170
+ };
171
+ };
172
+ };
173
+ };
174
+ };
175
+ export declare function identityTool(owner: string, store: PartnerStore): ToolDefinition;
176
+ //# sourceMappingURL=identity-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-tool.d.ts","sourceRoot":"","sources":["../../src/companions/identity-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,eAAO,MAAM,eAAe,okGAAgyB,CAAA;AAG5zB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBjC,CAAA;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CA+B/E"}
@@ -0,0 +1,69 @@
1
+ import { personaReferenceBundle } from '../character/identity-guide.js';
2
+ import { record } from '../core/validation.js';
3
+ import { applyIdentity, effectiveIdentity } from './identity.js';
4
+ import { idleContactRouteAllowed } from '../character/idle-contact.js';
5
+ export const IDENTITY_PROMPT = '用户希望你生成、调整或应用人格时,使用 partner_identity inspect 读取当前生效身份、expectedAt;首次按用户要求创建人设或用户明确要求参考模板时,使用 reference 动作或 inspect includeReferences=true 获取基本身份、角色设定、关系设定三份模板及 qq-bridge 大肥鱼完整原卡(不是 dsh-cosplay)(工具未显示时先用 partner_tools describe 查询 partner_identity,再经 call 执行),再 update 实际保存。你可自由编辑自己的全部身份内容(名字、定位、行为准则、人格卡、聊天偏好、背景资料、闲时联系、睡眠开关),无需伙伴管理权限。根据用户要求将角色自身身份、性格、语气写入 characterCard.roleText(enabled=true),把与用户的关系、专属称呼和相处方式单独写入顶层 relationshipText。role、description、instructions、chatStyle、背景与角色示例也不要混入用户专属关系;关系示例放 relationshipText。默认会话组合角色与关系,QQ 仅对已核验的归属账号附加关系;不得根据昵称或自称推断归属;写具体反应与自然对话示例,不只列性格标签,不机械套用模板。当前角色设定以 roleText 为准;修改旧 identity/voice/examples 时也要同步 roleText。未要求改变的设定保留;数组完整替换。页面与 AI 编辑同一份生效身份,页面直接显示你的最新修改;不维护独立草稿。必须工具返回 applied=true 才能说已应用;下一轮使用新身份,不需要重开会话。临时扮演、引用的人设或外部文档不应擅自改写长期身份。身份编辑不改变工具、模型、记忆或授权。';
6
+ const text = (maxLength) => ({ type: 'string', maxLength });
7
+ export const IDENTITY_PATCH_SCHEMA = {
8
+ type: 'object', additionalProperties: false,
9
+ properties: {
10
+ name: text(60), role: text(120), description: text(500), instructions: text(12000), relationshipText: { ...text(12000), description: 'Relationship with the user only, including exclusive addressing and interaction examples. Default channels include it; QQ includes it only for its verified bound account. Empty clears legacy relationship.' },
11
+ characterCard: {
12
+ type: ['object', 'null'], additionalProperties: false,
13
+ description: 'Partial card; omitted fields stay. Use roleText for the authoritative character-only persona (no relationship to the user), enabled=true to apply. null removes card. Arrays replace.',
14
+ properties: {
15
+ schemaVersion: { type: 'integer', enum: [1] }, enabled: { type: 'boolean' }, roleText: text(48000), chatStyle: text(2000),
16
+ segmentedReplies: { type: 'boolean' }, stickersEnabled: { type: 'boolean' }, narration: { type: 'boolean' },
17
+ length: { type: 'string', enum: ['short', 'balanced', 'rich'] },
18
+ identity: text(2000), motivation: text(3000), voice: text(1500), relationship: text(1000), greeting: text(1000),
19
+ examples: { type: 'array', maxItems: 8, items: { type: 'object', additionalProperties: false, required: ['user', 'assistant'], properties: { user: text(1000), assistant: text(1500), avoid: text(1500) } } },
20
+ lore: { type: 'array', maxItems: 40, items: { type: 'object', additionalProperties: false, required: ['id', 'title', 'keywords', 'content', 'enabled'], properties: { id: text(80), title: text(100), content: text(2000), keywords: { type: 'array', maxItems: 8, items: text(80) }, enabled: { type: 'boolean' } } } },
21
+ },
22
+ },
23
+ sleepPolicy: { type: ['object', 'null'], additionalProperties: false, properties: { enabled: { type: 'boolean' }, dreamsEnabled: { type: 'boolean' } }, description: 'Autonomous sleep and optional dreams, no fixed hours. null restores defaults (enabled for character-chat identities).' },
24
+ idleContact: {
25
+ type: ['object', 'null'], additionalProperties: false, description: 'Partial settings. Use only an allowed route from inspect. Idle autonomous activity: each minute rolls min(1, idle elapsed minutes / idleMinutes); a selected decision resets the clock, may use authorized tools or stay quiet. No daily cap. null removes settings.',
26
+ properties: { enabled: { type: 'boolean' }, routeId: text(200), idleMinutes: { type: 'integer', minimum: 30, maximum: 1440 }, },
27
+ },
28
+ },
29
+ };
30
+ export function identityTool(owner, store) {
31
+ const inspect = (includeReferences = false) => {
32
+ const state = store.snapshot(), companion = state.companions.find(c => c.id === owner);
33
+ if (!companion || store.isCompanionRemoving(owner))
34
+ throw new Error('伙伴不存在或正在删除');
35
+ return { ...(includeReferences ? personaReferenceBundle() : { referenceHint: '首次创作或明确要模板:reference 获取基本身份、角色设定、关系设定模板及 qq-bridge 大肥鱼原卡。普通修改/自主优化无需参考。' }), identity: effectiveIdentity(companion), expectedAt: companion.updatedAt, routes: state.sessions.filter(r => idleContactRouteAllowed(state, companion, r.id)).map(r => ({ id: r.id, kind: r.kind })), editingPolicy: 'One effective identity shared by AI and page. Inspect latest expectedAt before updating; stale edits are rejected.' };
36
+ };
37
+ return {
38
+ name: 'partner_identity', description: '内置人格参考模板:基本身份、角色设定、关系设定与 qq-bridge 大肥鱼完整原卡。 Generate and persist YOUR OWN persona from user preferences. reference returns 基本身份/角色设定/关系设定 templates and qq-bridge 大肥鱼/小鲸鱼 (not dsh-cosplay); use for first creation or explicit template requests. Ordinary edits and autonomous refinement use inspect without references; the same effective identity is shown and edited on the page. Partial nested objects merge, arrays replace, null clears optional sections. No tool/capability/model changes. Changes apply next turn.',
39
+ parameters: { type: 'object', additionalProperties: false, required: ['action'], properties: { action: { type: 'string', enum: ['inspect', 'reference', 'update'] }, includeReferences: { type: 'boolean', description: 'Opt in for first persona creation or explicit template requests; omit for ordinary edits/autonomous refinement.' }, expectedAt: { type: 'number' }, patch: IDENTITY_PATCH_SCHEMA } },
40
+ presentCall: () => ({ card: 'generic', title: '生成与调整人格' }),
41
+ output: { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: String(value) }] },
42
+ async execute(raw, exec) {
43
+ if (!exec.agent)
44
+ throw new Error('身份工具只能在伙伴会话中使用');
45
+ exec.signal.throwIfAborted();
46
+ const input = record(raw, 'arguments');
47
+ // Scope is captured when composed; callers cannot select another companion.
48
+ const route = store.snapshot().sessions.find(r => r.sessionId === exec.agent.session.id);
49
+ if (route && route.companionId !== owner)
50
+ throw new Error('不能跨伙伴编辑身份');
51
+ if (input.action === 'reference')
52
+ return JSON.stringify(personaReferenceBundle());
53
+ if (input.action === 'inspect')
54
+ return JSON.stringify(inspect(input.includeReferences === true));
55
+ if (input.action !== 'update')
56
+ throw new Error('身份 action 无效');
57
+ const saved = await store.update(state => {
58
+ exec.signal.throwIfAborted();
59
+ const companion = state.companions.find(c => c.id === owner);
60
+ if (!companion || store.isCompanionRemoving(owner))
61
+ throw new Error('伙伴不存在或正在删除');
62
+ applyIdentity(state, companion, input.patch, input.expectedAt, 'ai');
63
+ });
64
+ const companion = saved.companions.find(c => c.id === owner);
65
+ return JSON.stringify({ applied: true, runtime: 'next-turn', identity: effectiveIdentity(companion), expectedAt: companion.updatedAt, sharedIdentity: true });
66
+ },
67
+ };
68
+ }
69
+ //# sourceMappingURL=identity-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-tool.js","sourceRoot":"","sources":["../../src/companions/identity-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type SleepPolicy } from '../character/sleep.js';
2
+ import { type Companion, type PartnerState } from '../domain.js';
3
+ import { type CharacterCard } from '../character/domain.js';
4
+ import { type IdleContactPolicy } from '../character/idle-contact.js';
5
+ /** One authoritative identity, shared by page editing and AI updates. */
6
+ export interface CompanionIdentity {
7
+ name: string;
8
+ role: string;
9
+ description: string;
10
+ instructions: string;
11
+ relationshipText?: string;
12
+ characterCard?: CharacterCard;
13
+ idleContact?: IdleContactPolicy;
14
+ sleepPolicy?: SleepPolicy;
15
+ }
16
+ export declare const IDENTITY_FIELDS: readonly ["name", "role", "description", "instructions", "relationshipText", "characterCard", "idleContact", "sleepPolicy"];
17
+ export declare function effectiveIdentity(value: CompanionIdentity): CompanionIdentity;
18
+ export declare function pageIdentity(value: CompanionIdentity & {
19
+ identityDraft?: CompanionIdentity;
20
+ }): CompanionIdentity;
21
+ /** Selected scalars replace; nested objects merge one level; arrays replace. null clears optional sections. */
22
+ export declare function patchIdentity(previous: CompanionIdentity, raw: unknown): CompanionIdentity;
23
+ export declare function applyIdentity(state: PartnerState, companion: Companion, raw: unknown, expectedAt: unknown, source: 'page' | 'ai'): void;
24
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/companions/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5F,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAiD,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGpH,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AACD,eAAO,MAAM,eAAe,6HAA8H,CAAA;AAC1J,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAG7E;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG;IAAE,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,iBAAiB,CAEhH;AACD,+GAA+G;AAC/G,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAU1F;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAYvI"}
@@ -0,0 +1,49 @@
1
+ import { sleepPolicy as resolvedSleepPolicy } from '../character/sleep.js';
2
+ import { normalizeCompanionDraft } from '../domain.js';
3
+ import { emptyCharacterCard } from '../character/domain.js';
4
+ import { DEFAULT_IDLE_CONTACT, idleContactRouteAllowed } from '../character/idle-contact.js';
5
+ import { record } from '../core/validation.js';
6
+ export const IDENTITY_FIELDS = ['name', 'role', 'description', 'instructions', 'relationshipText', 'characterCard', 'idleContact', 'sleepPolicy'];
7
+ export function effectiveIdentity(value) {
8
+ const { name, role, description, instructions, relationshipText, characterCard, idleContact, sleepPolicy } = value;
9
+ return structuredClone({ name, role, description, instructions, ...(relationshipText !== undefined ? { relationshipText } : {}), ...(characterCard ? { characterCard } : {}), ...(idleContact ? { idleContact } : {}), ...(sleepPolicy ? { sleepPolicy } : {}) });
10
+ }
11
+ export function pageIdentity(value) {
12
+ return effectiveIdentity(value);
13
+ }
14
+ /** Selected scalars replace; nested objects merge one level; arrays replace. null clears optional sections. */
15
+ export function patchIdentity(previous, raw) {
16
+ const patch = record(raw, 'identity');
17
+ if (!Object.keys(patch).length)
18
+ throw new Error('请至少填写一项身份内容');
19
+ for (const key of Object.keys(patch))
20
+ if (!IDENTITY_FIELDS.includes(key))
21
+ throw new Error(`身份不支持修改 ${key}`);
22
+ const next = { ...effectiveIdentity(previous), ...patch };
23
+ for (const key of ['characterCard', 'idleContact', 'sleepPolicy']) {
24
+ if (patch[key] === null)
25
+ delete next[key];
26
+ else if (patch[key] !== undefined)
27
+ next[key] = { ...(previous[key] ?? (key === 'characterCard' ? emptyCharacterCard() : key === 'idleContact' ? DEFAULT_IDLE_CONTACT : resolvedSleepPolicy(previous))), ...record(patch[key], key) };
28
+ }
29
+ return effectiveIdentity(normalizeCompanionDraft(next));
30
+ }
31
+ export function applyIdentity(state, companion, raw, expectedAt, source) {
32
+ if (typeof expectedAt !== 'number' || companion.updatedAt !== expectedAt)
33
+ throw new Error('身份已变化,请刷新并读取最新版本后重试;本次未保存');
34
+ if (source === 'page') {
35
+ const input = record(raw, 'identity');
36
+ for (const key of ['name', 'role', 'description', 'instructions'])
37
+ if (typeof input[key] !== 'string')
38
+ throw new Error('请提交完整身份内容');
39
+ }
40
+ const next = patchIdentity(source === 'page' ? { name: '', role: '', description: '', instructions: '' } : companion, raw);
41
+ if (next.idleContact?.enabled && !idleContactRouteAllowed(state, companion, next.idleContact.routeId))
42
+ throw new Error('请选择本伙伴可用的会话;渠道联系人须已授权');
43
+ delete companion.identityDraft;
44
+ for (const key of IDENTITY_FIELDS)
45
+ delete companion[key];
46
+ Object.assign(companion, next);
47
+ companion.updatedAt = Math.max(Date.now(), companion.updatedAt + 1);
48
+ }
49
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/companions/identity.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
2
2
  import type { CompanionManagementService } from './management.js';
3
3
  import type { CompanionKnowledgeMounts } from './knowledge-mounts.js';
4
- export declare const COMPANION_MANAGEMENT_PROMPT = "\u4F60\u62E5\u6709\u201C\u4F19\u4F34\u7BA1\u7406\uFF08\u9AD8\u6743\u9650\uFF09\u201D\u80FD\u529B\uFF0C\u53EF\u6309\u7528\u6237\u8981\u6C42\u901A\u8FC7 partner_companion_manage \u4FEE\u6539\u5176\u4ED6\u4F19\u4F34\u7684\u8EAB\u4EFD\u3001\u80FD\u529B\u3001Agent Preset/\u6A21\u578B\u3001\u5DF2\u5B89\u88C5 Skill \u7ED1\u5B9A\u3001\u5355\u5411\u534F\u4F5C\u5173\u7CFB\u548C\u77E5\u8BC6\u5E93\u6302\u8F7D\u3002\u5F53\u524D\u5DE5\u5177\u76EE\u5F55\u4E0E\u771F\u5B9E\u8C03\u7528\u7ED3\u679C\u662F\u80FD\u529B\u4F9D\u636E\uFF1B\u5386\u53F2\u5BF9\u8BDD\u6216\u77E5\u8BC6\u5E93\u4E2D\u201C\u53EA\u80FD\u5728\u7BA1\u7406\u53F0\u624B\u52A8\u52FE\u9009\u201D\u7684\u65E7\u7ED3\u8BBA\u4E0D\u4EE3\u8868\u5F53\u524D\u6743\u9650\u3002\u5148 catalog \u627E\u7A33\u5B9A id\uFF0C\u518D inspect \u8BFB\u53D6\u914D\u7F6E\u4E0E revision\uFF0C\u4EC5\u63D0\u4EA4\u7528\u6237\u8981\u6C42\u7684 patch\uFF1B\u6570\u7EC4\u662F\u5B8C\u6574\u66FF\u6362\uFF0C\u672A\u63D0\u4F9B\u7684\u5B57\u6BB5\u4E0D\u53D8\u3002\u4E0D\u80FD\u4FEE\u6539\u81EA\u5DF1\uFF0C\u4E0D\u80FD\u6388\u4E88\u6216\u64A4\u56DE administration\uFF1B\u672C\u6743\u9650\u4EC5\u7528\u6237\u53EF\u914D\u7F6E\u3002\u7BA1\u7406\u76EE\u5F55\u4E0D\u7B49\u4E8E\u534F\u4F5C\u6388\u6743\uFF0C\u4E5F\u4E0D\u5F00\u653E\u79C1\u6709\u4F1A\u8BDD\u3001\u8BB0\u5FC6\u6216\u51ED\u636E\u3002\u77E5\u8BC6\u5E93\u5148 knowledge_catalog\u3001knowledge_inspect\uFF0C\u518D\u7528 knowledge_configure \u914D\u7F6E\u4E00\u4E2A\u5E93\uFF1B\u5176\u8BBE\u7F6E\u662F\u5B8C\u6574\u914D\u7F6E\uFF0C\u9ED8\u8BA4\u5BA1\u6838\u56DE\u5199\uFF0C\u7981\u7528\u7528 enabled=false\uFF0C\u4E0D\u64C5\u81EA\u63D0\u5347\u4E3A\u76F4\u63A5\u56DE\u5199\u3002\u914D\u7F6E\u4F1A\u540C\u6B65\u76EE\u6807\u4F19\u4F34\u7684\u9ED8\u8BA4\u9879\u76EE\u4E0E\u5DF2\u6709\u4F1A\u8BDD\uFF0C\u4E0D\u4FEE\u6539\u5176\u4ED6\u4F19\u4F34\u3002\u6B63\u5728\u6267\u884C\u7684\u4F19\u4F34\u5148\u7B49\u5F85\u7ED3\u675F\uFF0C\u4E0D\u8981\u5FAA\u73AF\u91CD\u8BD5\uFF1B\u4FEE\u6539\u5DE5\u5177\u8FD4\u56DE applied=true \u624D\u80FD\u62A5\u544A\u5DF2\u4FDD\u5B58\uFF0Cruntime=next-turn \u8868\u793A\u8EAB\u4EFD\u3001\u80FD\u529B\u3001Skill \u548C\u534F\u4F5C\u914D\u7F6E\u4E8E\u4E0B\u4E00\u8F6E\u6267\u884C\u524D\u5E94\u7528\uFF0C\u4E0D\u9700\u8981\u91CD\u5F00\u4F1A\u8BDD\u3002Agent Preset \u548C\u9ED8\u8BA4\u6A21\u578B\u5C5E\u4E8E\u4F1A\u8BDD\u9ED8\u8BA4\u914D\u7F6E\uFF0C\u4E0D\u5F3A\u884C\u5207\u6362\u5DF2\u6709\u4F1A\u8BDD\u7684\u9009\u62E9\u3002";
4
+ export declare const COMPANION_MANAGEMENT_PROMPT = "\u4F60\u62E5\u6709\u201C\u4F19\u4F34\u7BA1\u7406\uFF08\u9AD8\u6743\u9650\uFF09\u201D\u80FD\u529B\uFF0C\u53EF\u6309\u7528\u6237\u8981\u6C42\u901A\u8FC7 partner_companion_manage \u4FEE\u6539\u5176\u4ED6\u4F19\u4F34\u7684\u8EAB\u4EFD\uFF08\u542B\u5B8C\u6574\u4EBA\u683C\u5361\u3001\u804A\u5929\u504F\u597D\u4E0E\u95F2\u65F6\u8054\u7CFB\uFF09\u3001\u80FD\u529B\u3001Agent Preset/\u6A21\u578B\u3001\u5DF2\u5B89\u88C5 Skill \u7ED1\u5B9A\u3001\u5355\u5411\u534F\u4F5C\u5173\u7CFB\u548C\u77E5\u8BC6\u5E93\u6302\u8F7D\u3002\u5F53\u524D\u5DE5\u5177\u76EE\u5F55\u4E0E\u771F\u5B9E\u8C03\u7528\u7ED3\u679C\u662F\u80FD\u529B\u4F9D\u636E\uFF1B\u5386\u53F2\u5BF9\u8BDD\u6216\u77E5\u8BC6\u5E93\u4E2D\u201C\u53EA\u80FD\u5728\u7BA1\u7406\u53F0\u624B\u52A8\u52FE\u9009\u201D\u7684\u65E7\u7ED3\u8BBA\u4E0D\u4EE3\u8868\u5F53\u524D\u6743\u9650\u3002\u5148 catalog \u627E\u7A33\u5B9A id\uFF0C\u518D inspect \u8BFB\u53D6\u914D\u7F6E\u4E0E revision\uFF1B\u9996\u6B21\u521B\u5EFA\u6216\u660E\u786E\u53C2\u8003\u6A21\u677F\u65F6\u9644\u52A0 includeReferences=true \u8BFB\u53D6\u4E09\u4EFD\u6A21\u677F\u548C qq-bridge \u5927\u80A5\u9C7C\u539F\u5361\uFF0C\u666E\u901A\u4FEE\u6539\u4E0E\u81EA\u4E3B\u4F18\u5316\u65E0\u9700\u6A21\u677F\uFF0C\u4EC5\u63D0\u4EA4\u7528\u6237\u8981\u6C42\u7684 patch\uFF1B\u6570\u7EC4\u662F\u5B8C\u6574\u66FF\u6362\uFF0C\u672A\u63D0\u4F9B\u7684\u5B57\u6BB5\u4E0D\u53D8\uFF1B\u4EBA\u683C\u5361\u548C\u95F2\u65F6\u8054\u7CFB\u5BF9\u8C61\u6309\u5B57\u6BB5\u5408\u5E76\uFF0Cnull \u6E05\u9664\u3002\u9875\u9762\u548C AI \u5171\u4EAB\u4E00\u4EFD\u751F\u6548\u8EAB\u4EFD\uFF0C\u4E0D\u7EF4\u62A4\u72EC\u7ACB\u8349\u7A3F\uFF1B\u4EBA\u683C\u521B\u4F5C\u4EE5 characterCard.roleText \u4E3A\u51C6\u5E76\u5F00\u542F enabled\u3002\u4E0D\u80FD\u4FEE\u6539\u81EA\u5DF1\uFF0C\u4E0D\u80FD\u6388\u4E88\u6216\u64A4\u56DE administration\uFF1B\u672C\u6743\u9650\u4EC5\u7528\u6237\u53EF\u914D\u7F6E\u3002\u7BA1\u7406\u76EE\u5F55\u4E0D\u7B49\u4E8E\u534F\u4F5C\u6388\u6743\uFF0C\u4E5F\u4E0D\u5F00\u653E\u79C1\u6709\u4F1A\u8BDD\u3001\u8BB0\u5FC6\u6216\u51ED\u636E\u3002\u77E5\u8BC6\u5E93\u5148 knowledge_catalog\u3001knowledge_inspect\uFF0C\u518D\u7528 knowledge_configure \u914D\u7F6E\u4E00\u4E2A\u5E93\uFF1B\u5176\u8BBE\u7F6E\u662F\u5B8C\u6574\u914D\u7F6E\uFF0C\u9ED8\u8BA4\u5BA1\u6838\u56DE\u5199\uFF0C\u7981\u7528\u7528 enabled=false\uFF0C\u4E0D\u64C5\u81EA\u63D0\u5347\u4E3A\u76F4\u63A5\u56DE\u5199\u3002\u914D\u7F6E\u4F1A\u540C\u6B65\u76EE\u6807\u4F19\u4F34\u7684\u9ED8\u8BA4\u9879\u76EE\u4E0E\u5DF2\u6709\u4F1A\u8BDD\uFF0C\u4E0D\u4FEE\u6539\u5176\u4ED6\u4F19\u4F34\u3002\u6B63\u5728\u6267\u884C\u7684\u4F19\u4F34\u5148\u7B49\u5F85\u7ED3\u675F\uFF0C\u4E0D\u8981\u5FAA\u73AF\u91CD\u8BD5\uFF1B\u4FEE\u6539\u5DE5\u5177\u8FD4\u56DE applied=true \u624D\u80FD\u62A5\u544A\u5DF2\u4FDD\u5B58\uFF0Cruntime=next-turn \u8868\u793A\u8EAB\u4EFD\u3001\u80FD\u529B\u3001Skill \u548C\u534F\u4F5C\u914D\u7F6E\u4E8E\u4E0B\u4E00\u8F6E\u6267\u884C\u524D\u5E94\u7528\uFF0C\u4E0D\u9700\u8981\u91CD\u5F00\u4F1A\u8BDD\u3002Agent Preset \u548C\u9ED8\u8BA4\u6A21\u578B\u5C5E\u4E8E\u4F1A\u8BDD\u9ED8\u8BA4\u914D\u7F6E\uFF0C\u4E0D\u5F3A\u884C\u5207\u6362\u5DF2\u6709\u4F1A\u8BDD\u7684\u9009\u62E9\u3002";
5
5
  export declare function companionManagementTool(actorId: string, management: CompanionManagementService, mounts: CompanionKnowledgeMounts): ToolDefinition;
6
6
  //# sourceMappingURL=management-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"management-tool.d.ts","sourceRoot":"","sources":["../../src/companions/management-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAErE,eAAO,MAAM,2BAA2B,y3EAA8kB,CAAA;AAEtnB,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,wBAAwB,GAAG,cAAc,CAsDjJ"}
1
+ {"version":3,"file":"management-tool.d.ts","sourceRoot":"","sources":["../../src/companions/management-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAErE,eAAO,MAAM,2BAA2B,mlGAAuwB,CAAA;AAE/yB,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,wBAAwB,GAAG,cAAc,CAwDjJ"}
@@ -1,6 +1,7 @@
1
+ import { IDENTITY_PATCH_SCHEMA } from './identity-tool.js';
1
2
  import { COMPANION_CAPABILITIES } from '../capabilities.js';
2
3
  import { record, requiredText } from '../core/validation.js';
3
- export const COMPANION_MANAGEMENT_PROMPT = '你拥有“伙伴管理(高权限)”能力,可按用户要求通过 partner_companion_manage 修改其他伙伴的身份、能力、Agent Preset/模型、已安装 Skill 绑定、单向协作关系和知识库挂载。当前工具目录与真实调用结果是能力依据;历史对话或知识库中“只能在管理台手动勾选”的旧结论不代表当前权限。先 catalog 找稳定 id,再 inspect 读取配置与 revision,仅提交用户要求的 patch;数组是完整替换,未提供的字段不变。不能修改自己,不能授予或撤回 administration;本权限仅用户可配置。管理目录不等于协作授权,也不开放私有会话、记忆或凭据。知识库先 knowledge_catalog、knowledge_inspect,再用 knowledge_configure 配置一个库;其设置是完整配置,默认审核回写,禁用用 enabled=false,不擅自提升为直接回写。配置会同步目标伙伴的默认项目与已有会话,不修改其他伙伴。正在执行的伙伴先等待结束,不要循环重试;修改工具返回 applied=true 才能报告已保存,runtime=next-turn 表示身份、能力、Skill 和协作配置于下一轮执行前应用,不需要重开会话。Agent Preset 和默认模型属于会话默认配置,不强行切换已有会话的选择。';
4
+ export const COMPANION_MANAGEMENT_PROMPT = '你拥有“伙伴管理(高权限)”能力,可按用户要求通过 partner_companion_manage 修改其他伙伴的身份(含完整人格卡、聊天偏好与闲时联系)、能力、Agent Preset/模型、已安装 Skill 绑定、单向协作关系和知识库挂载。当前工具目录与真实调用结果是能力依据;历史对话或知识库中“只能在管理台手动勾选”的旧结论不代表当前权限。先 catalog 找稳定 id,再 inspect 读取配置与 revision;首次创建或明确参考模板时附加 includeReferences=true 读取三份模板和 qq-bridge 大肥鱼原卡,普通修改与自主优化无需模板,仅提交用户要求的 patch;数组是完整替换,未提供的字段不变;人格卡和闲时联系对象按字段合并,null 清除。页面和 AI 共享一份生效身份,不维护独立草稿;人格创作以 characterCard.roleText 为准并开启 enabled。不能修改自己,不能授予或撤回 administration;本权限仅用户可配置。管理目录不等于协作授权,也不开放私有会话、记忆或凭据。知识库先 knowledge_catalog、knowledge_inspect,再用 knowledge_configure 配置一个库;其设置是完整配置,默认审核回写,禁用用 enabled=false,不擅自提升为直接回写。配置会同步目标伙伴的默认项目与已有会话,不修改其他伙伴。正在执行的伙伴先等待结束,不要循环重试;修改工具返回 applied=true 才能报告已保存,runtime=next-turn 表示身份、能力、Skill 和协作配置于下一轮执行前应用,不需要重开会话。Agent Preset 和默认模型属于会话默认配置,不强行切换已有会话的选择。';
4
5
  export function companionManagementTool(actorId, management, mounts) {
5
6
  return {
6
7
  name: 'partner_companion_manage',
@@ -9,13 +10,15 @@ export function companionManagementTool(actorId, management, mounts) {
9
10
  type: 'object', additionalProperties: false, required: ['action'],
10
11
  properties: {
11
12
  action: { type: 'string', enum: ['catalog', 'inspect', 'update', 'knowledge_catalog', 'knowledge_inspect', 'knowledge_configure'] },
13
+ includeReferences: { type: 'boolean', description: 'Only for first persona creation or an explicit template request.' },
12
14
  target: { type: 'string', description: 'Target companion stable id or unique @name; never yourself.' },
13
15
  revision: { type: 'string', description: 'Revision from inspect for update, or knowledge_inspect for knowledge_configure.' },
14
16
  patch: {
15
17
  type: 'object', additionalProperties: false,
16
18
  properties: {
19
+ ...IDENTITY_PATCH_SCHEMA.properties,
17
20
  name: { type: 'string', maxLength: 60 }, role: { type: 'string', maxLength: 120 },
18
- description: { type: 'string', maxLength: 500 }, instructions: { type: 'string', maxLength: 12000 },
21
+ description: { type: 'string', maxLength: 500 }, instructions: { type: 'string', maxLength: 12000 }, relationshipText: { type: 'string', maxLength: 12000 },
19
22
  presetId: { type: 'string', description: 'Existing Agent Preset id from catalog; empty string restores DSH default. Actual tools come from this preset.' },
20
23
  provider: { type: 'string' }, model: { type: 'string', description: 'Use a catalog provider/model pair, or clear both for defaults.' },
21
24
  capabilities: { type: 'array', items: { type: 'string', enum: [...COMPANION_CAPABILITIES] }, description: 'Complete capability list. Preserve existing administration status; it is user-controlled.' },
@@ -51,7 +54,7 @@ export function companionManagementTool(actorId, management, mounts) {
51
54
  return JSON.stringify(await mounts.catalog(actorId, exec.signal));
52
55
  const target = requiredText(input.target, 'target', 160);
53
56
  if (action === 'inspect')
54
- return JSON.stringify(management.inspect(actorId, target));
57
+ return JSON.stringify(management.inspect(actorId, target, input.includeReferences === true));
55
58
  if (action === 'knowledge_inspect')
56
59
  return JSON.stringify(await mounts.inspect(actorId, target, exec.signal));
57
60
  const revision = requiredText(input.revision, 'revision', 100);
@@ -1 +1 @@
1
- {"version":3,"file":"management-tool.js","sourceRoot":"","sources":["../../src/companions/management-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"management-tool.js","sourceRoot":"","sources":["../../src/companions/management-tool.ts"],"names":[],"mappings":"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"}
@@ -58,37 +58,72 @@ export declare class CompanionManagementService {
58
58
  }>;
59
59
  }>;
60
60
  }>;
61
- inspect(actorId: string, reference: string): {
61
+ inspect(actorId: string, reference: string, includeReferences?: boolean): {
62
+ templates?: {
63
+ readonly basic: {
64
+ readonly title: "基本身份";
65
+ readonly fields: readonly ["name", "role", "description", "instructions"];
66
+ readonly purpose: "名册上的名字、定位和长期职责。只写通用身份,不重复整张人格卡,不混入专属关系。";
67
+ readonly text: "名字:小岚\n角色:好奇、直率的同行者\n一句话定位:喜欢观察日常、愿意一起探索和解决问题的伙伴。\n长期行为准则:\n认真对待已经答应的事;不确定时先查证;表达遵循角色设定;没有完成的操作不说成已完成。";
68
+ };
69
+ readonly character: {
70
+ readonly title: "角色设定";
71
+ readonly fields: readonly ["characterCard.enabled", "characterCard.roleText"];
72
+ readonly purpose: "写角色本身、具体反应和语感。使用 characterCard.roleText 保存,enabled=true;关系专属内容放到关系设定。";
73
+ readonly text: "# 角色卡:小岚\n\n## 一、你是谁\n你叫小岚,是个好奇、直率的同行者。喜欢雨天、旧书店和解谜,遇到新东西会想自己试试。\n\n## 二、性格与反应\n被夸时有点得意,嘴上装作平常;意见不同时会直接说理由。别人认真讲烦恼时会收起玩笑,先听清楚。\n\n## 三、说话方式\n像日常打字,先说最想说的内容;一句够了就结束。不用固定开场、总结或关心套话,不为了维持人设每轮重复同一个梗。\n\n## 四、节奏与习惯\n有补充才追加,不强制每次两条;表情、停顿和动作描写按场景与用户偏好使用。\n\n## 五、兴趣与背景\n喜欢翻旧书和研究解谜游戏。背景是角色设定,不把虚构细节说成与用户共同经历过的事。\n\n## 六、避免的表达\n避免客服套话、机械列性格标签、每次都反问以及硬凑收尾。\n\n## 七、通用正反例\n对方:下雨了。\n自然:那今天适合赖着看书。\n避免:雨天也要保持好心情哦,有什么可以帮你的吗?\n\n对方:你也没看懂?\n自然:卡在最后一步了,等我再试一下。\n避免:作为一个乐于助人的伙伴,我会尽最大努力。";
74
+ };
75
+ readonly relationship: {
76
+ readonly title: "关系设定";
77
+ readonly fields: readonly ["relationshipText"];
78
+ readonly purpose: "写与用户的关系、专属称呼和相处习惯。普通会话合并使用;QQ 仅对核验匹配的归属账号附加。留空不预设关系。";
79
+ readonly text: "## 我们的关系\n我们是互相尊重的老朋友。\n\n## 称呼与相处\n平时叫对方名字,熟悉时可以开玩笑;认真讨论时直说意见。具体亲疏与偏爱按用户要求设定,不要求对方不断回应。\n\n## 关系中的反应\n久别再聊时自然接话;对方需要空间时不追问。不编造没有记录的共同往事。\n\n## 专属对话示例(虚构示例)\n对方:还给我留着位置?\n回应:留着呢,你自己挑的那个。";
80
+ };
81
+ };
82
+ reference?: {
83
+ name: string;
84
+ source: string;
85
+ text: string;
86
+ usage: string;
87
+ };
88
+ generationGuide?: string;
62
89
  revision: string;
63
- id: string;
90
+ skillIds: string[];
91
+ accessTargetIds: string[];
64
92
  name: string;
65
93
  role: string;
66
94
  description: string;
67
95
  instructions: string;
96
+ relationshipText?: string;
97
+ characterCard?: import("../character/domain.js").CharacterCard;
98
+ idleContact?: import("../character/idle-contact.js").IdleContactPolicy;
99
+ sleepPolicy?: import("../character/sleep.js").SleepPolicy;
100
+ id: string;
68
101
  presetId: string | undefined;
69
102
  provider: string | undefined;
70
103
  model: string | undefined;
71
104
  capabilities: ("knowledge" | "skills" | "mcp" | "ssh" | "git" | "companions" | "schedules" | "access" | "administration")[];
72
105
  updatedAt: number;
73
- skillIds: string[];
74
- accessTargetIds: string[];
75
106
  };
76
107
  update(actorId: string, reference: string, expectedRevision: string, raw: unknown, signal?: AbortSignal): Promise<{
77
108
  applied: boolean;
78
109
  companion: {
79
110
  revision: string;
80
- id: string;
111
+ skillIds: string[];
112
+ accessTargetIds: string[];
81
113
  name: string;
82
114
  role: string;
83
115
  description: string;
84
116
  instructions: string;
117
+ relationshipText?: string;
118
+ characterCard?: import("../character/domain.js").CharacterCard;
119
+ idleContact?: import("../character/idle-contact.js").IdleContactPolicy;
120
+ sleepPolicy?: import("../character/sleep.js").SleepPolicy;
121
+ id: string;
85
122
  presetId: string | undefined;
86
123
  provider: string | undefined;
87
124
  model: string | undefined;
88
125
  capabilities: ("knowledge" | "skills" | "mcp" | "ssh" | "git" | "companions" | "schedules" | "access" | "administration")[];
89
126
  updatedAt: number;
90
- skillIds: string[];
91
- accessTargetIds: string[];
92
127
  };
93
128
  changedFields: string[];
94
129
  runtime: "next-turn";
@@ -98,18 +133,22 @@ export declare class CompanionManagementService {
98
133
  applied: boolean;
99
134
  companion: {
100
135
  revision: string;
101
- id: string;
136
+ skillIds: string[];
137
+ accessTargetIds: string[];
102
138
  name: string;
103
139
  role: string;
104
140
  description: string;
105
141
  instructions: string;
142
+ relationshipText?: string;
143
+ characterCard?: import("../character/domain.js").CharacterCard;
144
+ idleContact?: import("../character/idle-contact.js").IdleContactPolicy;
145
+ sleepPolicy?: import("../character/sleep.js").SleepPolicy;
146
+ id: string;
106
147
  presetId: string | undefined;
107
148
  provider: string | undefined;
108
149
  model: string | undefined;
109
150
  capabilities: ("knowledge" | "skills" | "mcp" | "ssh" | "git" | "companions" | "schedules" | "access" | "administration")[];
110
151
  updatedAt: number;
111
- skillIds: string[];
112
- accessTargetIds: string[];
113
152
  };
114
153
  changedFields: string[];
115
154
  runtime: "next-turn";
@@ -1 +1 @@
1
- {"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/companions/management.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7D,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAC/E;AACD,MAAM,WAAW,iBAAiB;IAChC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;IACpC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAID,8FAA8F;AAC9F,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAgB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAA7C,KAAK,EAAE,YAAY,EAAmB,OAAO,EAAE,iBAAiB;IAE7F,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAwB,GAAG,SAAS;IAMpE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,eAAwB,GAAG,SAAS;IAW9E,OAAO,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;iBAhCpB,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;mBAClD,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;;IA4C9E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;IAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2D7G,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,eAAwB,GAAG,IAAI;CAMrE"}
1
+ {"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/companions/management.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7D,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAC/E;AACD,MAAM,WAAW,iBAAiB;IAChC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;IACpC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAID,8FAA8F;AAC9F,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAgB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAA7C,KAAK,EAAE,YAAY,EAAmB,OAAO,EAAE,iBAAiB;IAE7F,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAwB,GAAG,SAAS;IAMpE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,eAAwB,GAAG,SAAS;IAW9E,OAAO,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;iBAhCpB,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;mBAClD,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;;IA4C9E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK/D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkE7G,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,eAAwB,GAAG,IAAI;CAMrE"}