dsh-tavern-bundle 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -0
  3. package/cordis.patch.yml +14 -0
  4. package/lib/adapters/model-gateway.d.ts +4 -0
  5. package/lib/adapters/model-gateway.d.ts.map +1 -0
  6. package/lib/adapters/model-gateway.js +3 -0
  7. package/lib/adapters/model-gateway.js.map +1 -0
  8. package/lib/adapters/prestep-spike.d.ts +16 -0
  9. package/lib/adapters/prestep-spike.d.ts.map +1 -0
  10. package/lib/adapters/prestep-spike.js +114 -0
  11. package/lib/adapters/prestep-spike.js.map +1 -0
  12. package/lib/adapters/runtime-probe.d.ts +67 -0
  13. package/lib/adapters/runtime-probe.d.ts.map +1 -0
  14. package/lib/adapters/runtime-probe.js +106 -0
  15. package/lib/adapters/runtime-probe.js.map +1 -0
  16. package/lib/adapters/session-agent-provider.d.ts +3 -0
  17. package/lib/adapters/session-agent-provider.d.ts.map +1 -0
  18. package/lib/adapters/session-agent-provider.js +3 -0
  19. package/lib/adapters/session-agent-provider.js.map +1 -0
  20. package/lib/adapters/subagent-gateway.d.ts +3 -0
  21. package/lib/adapters/subagent-gateway.d.ts.map +1 -0
  22. package/lib/adapters/subagent-gateway.js +3 -0
  23. package/lib/adapters/subagent-gateway.js.map +1 -0
  24. package/lib/application/chat/chat-application-service.d.ts +94 -0
  25. package/lib/application/chat/chat-application-service.d.ts.map +1 -0
  26. package/lib/application/chat/chat-application-service.js +291 -0
  27. package/lib/application/chat/chat-application-service.js.map +1 -0
  28. package/lib/application/companion/agent-orchestrator.d.ts +91 -0
  29. package/lib/application/companion/agent-orchestrator.d.ts.map +1 -0
  30. package/lib/application/companion/agent-orchestrator.js +298 -0
  31. package/lib/application/companion/agent-orchestrator.js.map +1 -0
  32. package/lib/application/companion/companion-child-service.d.ts +47 -0
  33. package/lib/application/companion/companion-child-service.d.ts.map +1 -0
  34. package/lib/application/companion/companion-child-service.js +30 -0
  35. package/lib/application/companion/companion-child-service.js.map +1 -0
  36. package/lib/application/companion/companion-invocation-service.d.ts +42 -0
  37. package/lib/application/companion/companion-invocation-service.d.ts.map +1 -0
  38. package/lib/application/companion/companion-invocation-service.js +50 -0
  39. package/lib/application/companion/companion-invocation-service.js.map +1 -0
  40. package/lib/application/companion/companion-profile-service.d.ts +32 -0
  41. package/lib/application/companion/companion-profile-service.d.ts.map +1 -0
  42. package/lib/application/companion/companion-profile-service.js +112 -0
  43. package/lib/application/companion/companion-profile-service.js.map +1 -0
  44. package/lib/application/companion/companion-promotion-service.d.ts +69 -0
  45. package/lib/application/companion/companion-promotion-service.d.ts.map +1 -0
  46. package/lib/application/companion/companion-promotion-service.js +129 -0
  47. package/lib/application/companion/companion-promotion-service.js.map +1 -0
  48. package/lib/application/group-chat/group-chat-execution-service.d.ts +22 -0
  49. package/lib/application/group-chat/group-chat-execution-service.d.ts.map +1 -0
  50. package/lib/application/group-chat/group-chat-execution-service.js +110 -0
  51. package/lib/application/group-chat/group-chat-execution-service.js.map +1 -0
  52. package/lib/application/group-chat/group-chat-orchestrator.d.ts +51 -0
  53. package/lib/application/group-chat/group-chat-orchestrator.d.ts.map +1 -0
  54. package/lib/application/group-chat/group-chat-orchestrator.js +57 -0
  55. package/lib/application/group-chat/group-chat-orchestrator.js.map +1 -0
  56. package/lib/application/memory/memory-retriever.d.ts +37 -0
  57. package/lib/application/memory/memory-retriever.d.ts.map +1 -0
  58. package/lib/application/memory/memory-retriever.js +91 -0
  59. package/lib/application/memory/memory-retriever.js.map +1 -0
  60. package/lib/application/memory/memory-service.d.ts +128 -0
  61. package/lib/application/memory/memory-service.d.ts.map +1 -0
  62. package/lib/application/memory/memory-service.js +346 -0
  63. package/lib/application/memory/memory-service.js.map +1 -0
  64. package/lib/application/ports/companion-runtime-port.d.ts +72 -0
  65. package/lib/application/ports/companion-runtime-port.d.ts.map +1 -0
  66. package/lib/application/ports/companion-runtime-port.js +2 -0
  67. package/lib/application/ports/companion-runtime-port.js.map +1 -0
  68. package/lib/application/ports/llm-port.d.ts +7 -0
  69. package/lib/application/ports/llm-port.d.ts.map +1 -0
  70. package/lib/application/ports/llm-port.js +2 -0
  71. package/lib/application/ports/llm-port.js.map +1 -0
  72. package/lib/application/ports/message-source.d.ts +4 -0
  73. package/lib/application/ports/message-source.d.ts.map +1 -0
  74. package/lib/application/ports/message-source.js +5 -0
  75. package/lib/application/ports/message-source.js.map +1 -0
  76. package/lib/application/ports/session-context-port.d.ts +13 -0
  77. package/lib/application/ports/session-context-port.d.ts.map +1 -0
  78. package/lib/application/ports/session-context-port.js +2 -0
  79. package/lib/application/ports/session-context-port.js.map +1 -0
  80. package/lib/application/ports/subagent-port.d.ts +31 -0
  81. package/lib/application/ports/subagent-port.d.ts.map +1 -0
  82. package/lib/application/ports/subagent-port.js +2 -0
  83. package/lib/application/ports/subagent-port.js.map +1 -0
  84. package/lib/application/ports/user-resolver-port.d.ts +5 -0
  85. package/lib/application/ports/user-resolver-port.d.ts.map +1 -0
  86. package/lib/application/ports/user-resolver-port.js +2 -0
  87. package/lib/application/ports/user-resolver-port.js.map +1 -0
  88. package/lib/application/relationship/relationship-event-service.d.ts +31 -0
  89. package/lib/application/relationship/relationship-event-service.d.ts.map +1 -0
  90. package/lib/application/relationship/relationship-event-service.js +43 -0
  91. package/lib/application/relationship/relationship-event-service.js.map +1 -0
  92. package/lib/application/relationship/relationship-policy.d.ts +20 -0
  93. package/lib/application/relationship/relationship-policy.d.ts.map +1 -0
  94. package/lib/application/relationship/relationship-policy.js +24 -0
  95. package/lib/application/relationship/relationship-policy.js.map +1 -0
  96. package/lib/application/relationship/relationship-projection.d.ts +14 -0
  97. package/lib/application/relationship/relationship-projection.d.ts.map +1 -0
  98. package/lib/application/relationship/relationship-projection.js +25 -0
  99. package/lib/application/relationship/relationship-projection.js.map +1 -0
  100. package/lib/application/relationship/relationship-service.d.ts +95 -0
  101. package/lib/application/relationship/relationship-service.d.ts.map +1 -0
  102. package/lib/application/relationship/relationship-service.js +254 -0
  103. package/lib/application/relationship/relationship-service.js.map +1 -0
  104. package/lib/application/workspace/workspace-service.d.ts +106 -0
  105. package/lib/application/workspace/workspace-service.d.ts.map +1 -0
  106. package/lib/application/workspace/workspace-service.js +44 -0
  107. package/lib/application/workspace/workspace-service.js.map +1 -0
  108. package/lib/bootstrap/create-domain.d.ts +5 -0
  109. package/lib/bootstrap/create-domain.d.ts.map +1 -0
  110. package/lib/bootstrap/create-domain.js +14 -0
  111. package/lib/bootstrap/create-domain.js.map +1 -0
  112. package/lib/bootstrap/create-repositories.d.ts +403 -0
  113. package/lib/bootstrap/create-repositories.d.ts.map +1 -0
  114. package/lib/bootstrap/create-repositories.js +39 -0
  115. package/lib/bootstrap/create-repositories.js.map +1 -0
  116. package/lib/bootstrap/create-runtime.d.ts +8 -0
  117. package/lib/bootstrap/create-runtime.d.ts.map +1 -0
  118. package/lib/bootstrap/create-runtime.js +10 -0
  119. package/lib/bootstrap/create-runtime.js.map +1 -0
  120. package/lib/bootstrap/create-services.d.ts +52 -0
  121. package/lib/bootstrap/create-services.d.ts.map +1 -0
  122. package/lib/bootstrap/create-services.js +79 -0
  123. package/lib/bootstrap/create-services.js.map +1 -0
  124. package/lib/bootstrap/install-commands.d.ts +4 -0
  125. package/lib/bootstrap/install-commands.d.ts.map +1 -0
  126. package/lib/bootstrap/install-commands.js +322 -0
  127. package/lib/bootstrap/install-commands.js.map +1 -0
  128. package/lib/bootstrap/install-http.d.ts +7 -0
  129. package/lib/bootstrap/install-http.d.ts.map +1 -0
  130. package/lib/bootstrap/install-http.js +265 -0
  131. package/lib/bootstrap/install-http.js.map +1 -0
  132. package/lib/bootstrap/lifecycle.d.ts +14 -0
  133. package/lib/bootstrap/lifecycle.d.ts.map +1 -0
  134. package/lib/bootstrap/lifecycle.js +56 -0
  135. package/lib/bootstrap/lifecycle.js.map +1 -0
  136. package/lib/bootstrap/types.d.ts +9 -0
  137. package/lib/bootstrap/types.d.ts.map +1 -0
  138. package/lib/bootstrap/types.js +2 -0
  139. package/lib/bootstrap/types.js.map +1 -0
  140. package/lib/client.js +6 -0
  141. package/lib/client.js.map +1 -0
  142. package/lib/core/audit-service.d.ts +43 -0
  143. package/lib/core/audit-service.d.ts.map +1 -0
  144. package/lib/core/audit-service.js +75 -0
  145. package/lib/core/audit-service.js.map +1 -0
  146. package/lib/core/candidate-extractor.d.ts +31 -0
  147. package/lib/core/candidate-extractor.d.ts.map +1 -0
  148. package/lib/core/candidate-extractor.js +83 -0
  149. package/lib/core/candidate-extractor.js.map +1 -0
  150. package/lib/core/candidate-service.d.ts +72 -0
  151. package/lib/core/candidate-service.d.ts.map +1 -0
  152. package/lib/core/candidate-service.js +283 -0
  153. package/lib/core/candidate-service.js.map +1 -0
  154. package/lib/core/character-service.d.ts +26 -0
  155. package/lib/core/character-service.d.ts.map +1 -0
  156. package/lib/core/character-service.js +68 -0
  157. package/lib/core/character-service.js.map +1 -0
  158. package/lib/core/chat-file-io.d.ts +28 -0
  159. package/lib/core/chat-file-io.d.ts.map +1 -0
  160. package/lib/core/chat-file-io.js +114 -0
  161. package/lib/core/chat-file-io.js.map +1 -0
  162. package/lib/core/chat-service.d.ts +4 -0
  163. package/lib/core/chat-service.d.ts.map +1 -0
  164. package/lib/core/chat-service.js +3 -0
  165. package/lib/core/chat-service.js.map +1 -0
  166. package/lib/core/command-arguments.d.ts +2 -0
  167. package/lib/core/command-arguments.d.ts.map +1 -0
  168. package/lib/core/command-arguments.js +42 -0
  169. package/lib/core/command-arguments.js.map +1 -0
  170. package/lib/core/companion-child-agent-service.d.ts +3 -0
  171. package/lib/core/companion-child-agent-service.d.ts.map +1 -0
  172. package/lib/core/companion-child-agent-service.js +3 -0
  173. package/lib/core/companion-child-agent-service.js.map +1 -0
  174. package/lib/core/companion-invocation-service.d.ts +3 -0
  175. package/lib/core/companion-invocation-service.d.ts.map +1 -0
  176. package/lib/core/companion-invocation-service.js +3 -0
  177. package/lib/core/companion-invocation-service.js.map +1 -0
  178. package/lib/core/companion-profile-service.d.ts +3 -0
  179. package/lib/core/companion-profile-service.d.ts.map +1 -0
  180. package/lib/core/companion-profile-service.js +3 -0
  181. package/lib/core/companion-profile-service.js.map +1 -0
  182. package/lib/core/companion-promotion-service.d.ts +3 -0
  183. package/lib/core/companion-promotion-service.d.ts.map +1 -0
  184. package/lib/core/companion-promotion-service.js +3 -0
  185. package/lib/core/companion-promotion-service.js.map +1 -0
  186. package/lib/core/context-assembler.d.ts +92 -0
  187. package/lib/core/context-assembler.d.ts.map +1 -0
  188. package/lib/core/context-assembler.js +185 -0
  189. package/lib/core/context-assembler.js.map +1 -0
  190. package/lib/core/conversation-repository.d.ts +42 -0
  191. package/lib/core/conversation-repository.d.ts.map +1 -0
  192. package/lib/core/conversation-repository.js +94 -0
  193. package/lib/core/conversation-repository.js.map +1 -0
  194. package/lib/core/group-chat-execution-service.d.ts +3 -0
  195. package/lib/core/group-chat-execution-service.d.ts.map +1 -0
  196. package/lib/core/group-chat-execution-service.js +3 -0
  197. package/lib/core/group-chat-execution-service.js.map +1 -0
  198. package/lib/core/group-chat-orchestrator.d.ts +3 -0
  199. package/lib/core/group-chat-orchestrator.d.ts.map +1 -0
  200. package/lib/core/group-chat-orchestrator.js +3 -0
  201. package/lib/core/group-chat-orchestrator.js.map +1 -0
  202. package/lib/core/memory-retriever.d.ts +3 -0
  203. package/lib/core/memory-retriever.d.ts.map +1 -0
  204. package/lib/core/memory-retriever.js +3 -0
  205. package/lib/core/memory-retriever.js.map +1 -0
  206. package/lib/core/memory-service.d.ts +3 -0
  207. package/lib/core/memory-service.d.ts.map +1 -0
  208. package/lib/core/memory-service.js +3 -0
  209. package/lib/core/memory-service.js.map +1 -0
  210. package/lib/core/personality-candidate-service.d.ts +46 -0
  211. package/lib/core/personality-candidate-service.d.ts.map +1 -0
  212. package/lib/core/personality-candidate-service.js +65 -0
  213. package/lib/core/personality-candidate-service.js.map +1 -0
  214. package/lib/core/prompt-assembler.d.ts +43 -0
  215. package/lib/core/prompt-assembler.d.ts.map +1 -0
  216. package/lib/core/prompt-assembler.js +67 -0
  217. package/lib/core/prompt-assembler.js.map +1 -0
  218. package/lib/core/relationship-event-service.d.ts +3 -0
  219. package/lib/core/relationship-event-service.d.ts.map +1 -0
  220. package/lib/core/relationship-event-service.js +3 -0
  221. package/lib/core/relationship-event-service.js.map +1 -0
  222. package/lib/core/relationship-policy.d.ts +3 -0
  223. package/lib/core/relationship-policy.d.ts.map +1 -0
  224. package/lib/core/relationship-policy.js +3 -0
  225. package/lib/core/relationship-policy.js.map +1 -0
  226. package/lib/core/relationship-projection.d.ts +3 -0
  227. package/lib/core/relationship-projection.d.ts.map +1 -0
  228. package/lib/core/relationship-projection.js +3 -0
  229. package/lib/core/relationship-projection.js.map +1 -0
  230. package/lib/core/relationship-service.d.ts +3 -0
  231. package/lib/core/relationship-service.d.ts.map +1 -0
  232. package/lib/core/relationship-service.js +3 -0
  233. package/lib/core/relationship-service.js.map +1 -0
  234. package/lib/core/roleplay-contract.d.ts +11 -0
  235. package/lib/core/roleplay-contract.d.ts.map +1 -0
  236. package/lib/core/roleplay-contract.js +27 -0
  237. package/lib/core/roleplay-contract.js.map +1 -0
  238. package/lib/core/runtime-binding-service.d.ts +19 -0
  239. package/lib/core/runtime-binding-service.d.ts.map +1 -0
  240. package/lib/core/runtime-binding-service.js +66 -0
  241. package/lib/core/runtime-binding-service.js.map +1 -0
  242. package/lib/core/scene-service.d.ts +60 -0
  243. package/lib/core/scene-service.d.ts.map +1 -0
  244. package/lib/core/scene-service.js +212 -0
  245. package/lib/core/scene-service.js.map +1 -0
  246. package/lib/core/session-binding-service.d.ts +51 -0
  247. package/lib/core/session-binding-service.d.ts.map +1 -0
  248. package/lib/core/session-binding-service.js +106 -0
  249. package/lib/core/session-binding-service.js.map +1 -0
  250. package/lib/core/skill-service.d.ts +82 -0
  251. package/lib/core/skill-service.d.ts.map +1 -0
  252. package/lib/core/skill-service.js +45 -0
  253. package/lib/core/skill-service.js.map +1 -0
  254. package/lib/core/tavern-session-bridge.d.ts +3 -0
  255. package/lib/core/tavern-session-bridge.d.ts.map +1 -0
  256. package/lib/core/tavern-session-bridge.js +3 -0
  257. package/lib/core/tavern-session-bridge.js.map +1 -0
  258. package/lib/core/user-resolver.d.ts +15 -0
  259. package/lib/core/user-resolver.d.ts.map +1 -0
  260. package/lib/core/user-resolver.js +17 -0
  261. package/lib/core/user-resolver.js.map +1 -0
  262. package/lib/core/workspace-service.d.ts +3 -0
  263. package/lib/core/workspace-service.d.ts.map +1 -0
  264. package/lib/core/workspace-service.js +3 -0
  265. package/lib/core/workspace-service.js.map +1 -0
  266. package/lib/core/workspace-session-service.d.ts +11 -0
  267. package/lib/core/workspace-session-service.d.ts.map +1 -0
  268. package/lib/core/workspace-session-service.js +14 -0
  269. package/lib/core/workspace-session-service.js.map +1 -0
  270. package/lib/domain/schemas.d.ts +1173 -0
  271. package/lib/domain/schemas.d.ts.map +1 -0
  272. package/lib/domain/schemas.js +590 -0
  273. package/lib/domain/schemas.js.map +1 -0
  274. package/lib/domain/spec.d.ts +494 -0
  275. package/lib/domain/spec.d.ts.map +1 -0
  276. package/lib/domain/spec.js +63 -0
  277. package/lib/domain/spec.js.map +1 -0
  278. package/lib/import/artifact-service.d.ts +33 -0
  279. package/lib/import/artifact-service.d.ts.map +1 -0
  280. package/lib/import/artifact-service.js +67 -0
  281. package/lib/import/artifact-service.js.map +1 -0
  282. package/lib/import/import-service.d.ts +30 -0
  283. package/lib/import/import-service.d.ts.map +1 -0
  284. package/lib/import/import-service.js +154 -0
  285. package/lib/import/import-service.js.map +1 -0
  286. package/lib/import/parser.d.ts +81 -0
  287. package/lib/import/parser.d.ts.map +1 -0
  288. package/lib/import/parser.js +423 -0
  289. package/lib/import/parser.js.map +1 -0
  290. package/lib/index.d.ts +60 -0
  291. package/lib/index.d.ts.map +1 -0
  292. package/lib/index.js +111 -0
  293. package/lib/index.js.map +1 -0
  294. package/lib/infrastructure/dsh/llm/llm-port.d.ts +3 -0
  295. package/lib/infrastructure/dsh/llm/llm-port.d.ts.map +1 -0
  296. package/lib/infrastructure/dsh/llm/llm-port.js +2 -0
  297. package/lib/infrastructure/dsh/llm/llm-port.js.map +1 -0
  298. package/lib/infrastructure/dsh/llm/model-gateway.d.ts +10 -0
  299. package/lib/infrastructure/dsh/llm/model-gateway.d.ts.map +1 -0
  300. package/lib/infrastructure/dsh/llm/model-gateway.js +21 -0
  301. package/lib/infrastructure/dsh/llm/model-gateway.js.map +1 -0
  302. package/lib/infrastructure/dsh/session/session-agent-provider.d.ts +28 -0
  303. package/lib/infrastructure/dsh/session/session-agent-provider.d.ts.map +1 -0
  304. package/lib/infrastructure/dsh/session/session-agent-provider.js +40 -0
  305. package/lib/infrastructure/dsh/session/session-agent-provider.js.map +1 -0
  306. package/lib/infrastructure/dsh/session/tavern-session-bridge.d.ts +142 -0
  307. package/lib/infrastructure/dsh/session/tavern-session-bridge.d.ts.map +1 -0
  308. package/lib/infrastructure/dsh/session/tavern-session-bridge.js +544 -0
  309. package/lib/infrastructure/dsh/session/tavern-session-bridge.js.map +1 -0
  310. package/lib/infrastructure/dsh/subagent/subagent-gateway.d.ts +63 -0
  311. package/lib/infrastructure/dsh/subagent/subagent-gateway.d.ts.map +1 -0
  312. package/lib/infrastructure/dsh/subagent/subagent-gateway.js +70 -0
  313. package/lib/infrastructure/dsh/subagent/subagent-gateway.js.map +1 -0
  314. package/lib/infrastructure/runtime/companion-runtime.d.ts +128 -0
  315. package/lib/infrastructure/runtime/companion-runtime.d.ts.map +1 -0
  316. package/lib/infrastructure/runtime/companion-runtime.js +127 -0
  317. package/lib/infrastructure/runtime/companion-runtime.js.map +1 -0
  318. package/lib/infrastructure/runtime/runtime-factory.d.ts +10 -0
  319. package/lib/infrastructure/runtime/runtime-factory.d.ts.map +1 -0
  320. package/lib/infrastructure/runtime/runtime-factory.js +14 -0
  321. package/lib/infrastructure/runtime/runtime-factory.js.map +1 -0
  322. package/lib/interfaces/http/chat/chat-http.d.ts +23 -0
  323. package/lib/interfaces/http/chat/chat-http.d.ts.map +1 -0
  324. package/lib/interfaces/http/chat/chat-http.js +310 -0
  325. package/lib/interfaces/http/chat/chat-http.js.map +1 -0
  326. package/lib/interfaces/http/companion/companion-http.d.ts +8 -0
  327. package/lib/interfaces/http/companion/companion-http.d.ts.map +1 -0
  328. package/lib/interfaces/http/companion/companion-http.js +76 -0
  329. package/lib/interfaces/http/companion/companion-http.js.map +1 -0
  330. package/lib/interfaces/http/companion/promotion-http.d.ts +6 -0
  331. package/lib/interfaces/http/companion/promotion-http.d.ts.map +1 -0
  332. package/lib/interfaces/http/companion/promotion-http.js +25 -0
  333. package/lib/interfaces/http/companion/promotion-http.js.map +1 -0
  334. package/lib/interfaces/http/companion/runtime-http.d.ts +13 -0
  335. package/lib/interfaces/http/companion/runtime-http.d.ts.map +1 -0
  336. package/lib/interfaces/http/companion/runtime-http.js +51 -0
  337. package/lib/interfaces/http/companion/runtime-http.js.map +1 -0
  338. package/lib/interfaces/http/companion/stage4-companion-http.d.ts +30 -0
  339. package/lib/interfaces/http/companion/stage4-companion-http.d.ts.map +1 -0
  340. package/lib/interfaces/http/companion/stage4-companion-http.js +149 -0
  341. package/lib/interfaces/http/companion/stage4-companion-http.js.map +1 -0
  342. package/lib/interfaces/http/group/group-http.d.ts +11 -0
  343. package/lib/interfaces/http/group/group-http.d.ts.map +1 -0
  344. package/lib/interfaces/http/group/group-http.js +77 -0
  345. package/lib/interfaces/http/group/group-http.js.map +1 -0
  346. package/lib/interfaces/http/memory/candidate-http.d.ts +8 -0
  347. package/lib/interfaces/http/memory/candidate-http.d.ts.map +1 -0
  348. package/lib/interfaces/http/memory/candidate-http.js +86 -0
  349. package/lib/interfaces/http/memory/candidate-http.js.map +1 -0
  350. package/lib/interfaces/http/relationship/companion-relationship-http.d.ts +7 -0
  351. package/lib/interfaces/http/relationship/companion-relationship-http.d.ts.map +1 -0
  352. package/lib/interfaces/http/relationship/companion-relationship-http.js +30 -0
  353. package/lib/interfaces/http/relationship/companion-relationship-http.js.map +1 -0
  354. package/lib/interfaces/http/workspace/workspace-http.d.ts +19 -0
  355. package/lib/interfaces/http/workspace/workspace-http.d.ts.map +1 -0
  356. package/lib/interfaces/http/workspace/workspace-http.js +78 -0
  357. package/lib/interfaces/http/workspace/workspace-http.js.map +1 -0
  358. package/lib/interfaces/read-model/tavern-read-api.d.ts +44 -0
  359. package/lib/interfaces/read-model/tavern-read-api.d.ts.map +1 -0
  360. package/lib/interfaces/read-model/tavern-read-api.js +189 -0
  361. package/lib/interfaces/read-model/tavern-read-api.js.map +1 -0
  362. package/lib/remote/candidate-api.d.ts +3 -0
  363. package/lib/remote/candidate-api.d.ts.map +1 -0
  364. package/lib/remote/candidate-api.js +3 -0
  365. package/lib/remote/candidate-api.js.map +1 -0
  366. package/lib/remote/chat-api.d.ts +3 -0
  367. package/lib/remote/chat-api.d.ts.map +1 -0
  368. package/lib/remote/chat-api.js +3 -0
  369. package/lib/remote/chat-api.js.map +1 -0
  370. package/lib/remote/companion-api.d.ts +3 -0
  371. package/lib/remote/companion-api.d.ts.map +1 -0
  372. package/lib/remote/companion-api.js +3 -0
  373. package/lib/remote/companion-api.js.map +1 -0
  374. package/lib/remote/companion-promotion-api.d.ts +3 -0
  375. package/lib/remote/companion-promotion-api.d.ts.map +1 -0
  376. package/lib/remote/companion-promotion-api.js +3 -0
  377. package/lib/remote/companion-promotion-api.js.map +1 -0
  378. package/lib/remote/import-http.d.ts +29 -0
  379. package/lib/remote/import-http.d.ts.map +1 -0
  380. package/lib/remote/import-http.js +106 -0
  381. package/lib/remote/import-http.js.map +1 -0
  382. package/lib/remote/stage4-api.d.ts +6 -0
  383. package/lib/remote/stage4-api.d.ts.map +1 -0
  384. package/lib/remote/stage4-api.js +4 -0
  385. package/lib/remote/stage4-api.js.map +1 -0
  386. package/lib/remote/stage5-runtime-api.d.ts +4 -0
  387. package/lib/remote/stage5-runtime-api.d.ts.map +1 -0
  388. package/lib/remote/stage5-runtime-api.js +2 -0
  389. package/lib/remote/stage5-runtime-api.js.map +1 -0
  390. package/lib/remote/stage6-group-api.d.ts +4 -0
  391. package/lib/remote/stage6-group-api.d.ts.map +1 -0
  392. package/lib/remote/stage6-group-api.js +2 -0
  393. package/lib/remote/stage6-group-api.js.map +1 -0
  394. package/lib/remote/tavern-api.d.ts +3 -0
  395. package/lib/remote/tavern-api.d.ts.map +1 -0
  396. package/lib/remote/tavern-api.js +3 -0
  397. package/lib/remote/tavern-api.js.map +1 -0
  398. package/lib/runtime/agent-orchestrator.d.ts +3 -0
  399. package/lib/runtime/agent-orchestrator.d.ts.map +1 -0
  400. package/lib/runtime/agent-orchestrator.js +3 -0
  401. package/lib/runtime/agent-orchestrator.js.map +1 -0
  402. package/lib/runtime/companion-runtime.d.ts +3 -0
  403. package/lib/runtime/companion-runtime.d.ts.map +1 -0
  404. package/lib/runtime/companion-runtime.js +3 -0
  405. package/lib/runtime/companion-runtime.js.map +1 -0
  406. package/lib/runtime/langgraph-graph.d.ts +32 -0
  407. package/lib/runtime/langgraph-graph.d.ts.map +1 -0
  408. package/lib/runtime/langgraph-graph.js +32 -0
  409. package/lib/runtime/langgraph-graph.js.map +1 -0
  410. package/lib/runtime/state.d.ts +38 -0
  411. package/lib/runtime/state.d.ts.map +1 -0
  412. package/lib/runtime/state.js +16 -0
  413. package/lib/runtime/state.js.map +1 -0
  414. package/lib/seed/elaine.d.ts +9 -0
  415. package/lib/seed/elaine.d.ts.map +1 -0
  416. package/lib/seed/elaine.js +27 -0
  417. package/lib/seed/elaine.js.map +1 -0
  418. package/lib/tools/import-character.d.ts +16 -0
  419. package/lib/tools/import-character.d.ts.map +1 -0
  420. package/lib/tools/import-character.js +98 -0
  421. package/lib/tools/import-character.js.map +1 -0
  422. package/package.json +108 -0
@@ -0,0 +1,298 @@
1
+ /**
2
+ * AgentOrchestrator —— 实例编排器(阶段 1 起,5.3 场景化)。
3
+ *
4
+ * 职责:summon(创建角色的 continuable 子 Agent 并归属场景)与 followup
5
+ * (向该子 Agent 续推,验证场景归属),并记录 parent/child session 关系。
6
+ * 调用方**不需要**传 parentAgent:当前会话的 Agent 由 SessionAgentProvider
7
+ * 从调用上下文(命令入口)解析。
8
+ *
9
+ * 场景模型(阶段 5.3):
10
+ * - 实例按 `characterId@sceneId` 索引(单实例每角色每场景;同一角色可在
11
+ * 不同场景各有实例,记忆/关系按场景隔离);
12
+ * - summon 解析场景:显式 sceneId(须存在)→ 用户首个 active 场景 →
13
+ * 自动创建(sceneTitle 或「{角色} 的场景」);
14
+ * - followup 解析场景:显式 sceneId → 最后活跃场景 → 该用户唯一候选实例;
15
+ * 多场景同角色且无显式 sceneId 时抛错(需显式指定);
16
+ * - 场景归属验证:followup 要求当前用户是该场景的 active 参与者(否则
17
+ * 跨场景调用被拒绝)。
18
+ *
19
+ * 持久化:summon 成功后把实例(含 sceneId)写入 instances 表;构造时从表
20
+ * 恢复 active 实例(Host 重启后 followup 可直接继续)。
21
+ *
22
+ * 状态语义:followup 成功仅表示 inbox 已接受(accepted),绝不等于角色已
23
+ * 回复完成(completed)——completed 需要可验证的运行时完成信号(turn/end)。
24
+ */
25
+ var _a;
26
+ import { ContextAssembler } from '../../core/context-assembler.js';
27
+ function tavernMessageSource() {
28
+ return { kind: 'plugin', plugin: 'dsh-tavern-bundle', form: 'relay' };
29
+ }
30
+ import { buildRoleplayPersona, normalizeRoleplayOpening } from '../../core/roleplay-contract.js';
31
+ export class AgentOrchestrator {
32
+ #characters;
33
+ #gateway;
34
+ #sessionAgents;
35
+ #logger;
36
+ /** instances 表(tavern domain):实例的持久化存储。 */
37
+ #instanceStore;
38
+ /** 上下文组装器:每次投递前世界书 + 记忆检索注入 + 审计 fingerprint。 */
39
+ #contextAssembler;
40
+ /** 关系图谱服务:summon 后登记 character-instance / user 节点。 */
41
+ #relationships;
42
+ /** 场景服务(阶段 5.3):场景生命周期与参与者。 */
43
+ #scenes;
44
+ /** 审计服务(阶段 5.4):summon/followup 状态变更可溯源。 */
45
+ #audit;
46
+ /** 内存 registry:`characterId@sceneId` → 实例。 */
47
+ #instances = new Map();
48
+ /** 内存:parentSessionId → 最后活跃场景(重启后丢失,回退唯一候选)。 */
49
+ #lastScene = new Map();
50
+ constructor(characters, gateway, sessionAgents, instanceStore, contextAssembler, relationships, scenes, audit, logger) {
51
+ this.#characters = characters;
52
+ this.#gateway = gateway;
53
+ this.#sessionAgents = sessionAgents;
54
+ this.#instanceStore = instanceStore;
55
+ this.#contextAssembler = contextAssembler;
56
+ this.#relationships = relationships;
57
+ this.#scenes = scenes;
58
+ this.#audit = audit;
59
+ this.#logger = logger;
60
+ this.#recoverInstances();
61
+ }
62
+ /** 实例 registry 键:`characterId@sceneId`(单实例每角色每场景)。 */
63
+ static instanceKey(characterId, sceneId) {
64
+ return `${characterId}@${sceneId}`;
65
+ }
66
+ /** 组装一次投递的世界书 + 记忆上下文(场景内检索)并写审计日志。 */
67
+ async #assemble(characterId, sceneId, userMessage) {
68
+ const assembled = await this.#contextAssembler.assemble({ characterId, userMessage, sceneId });
69
+ const hitIds = assembled.injectedLore.map(entry => entry.id);
70
+ const memoryIds = assembled.injectedMemory.map(memory => memory.id);
71
+ this.#logger.info(`上下文组装:character=${characterId} scene=${sceneId.slice(0, 8)}… lore=[${hitIds.join(',') || '无'}]`
72
+ + `(${assembled.truncated.requested}→${assembled.truncated.kept} 条)`
73
+ + ` memory=[${memoryIds.join(',') || '无'}]`
74
+ + `(${assembled.memoryTruncated.requested}→${assembled.memoryTruncated.kept} 条)`
75
+ + ` fingerprint=${assembled.fingerprint}`);
76
+ return assembled;
77
+ }
78
+ /** 恢复:把持久化的 active 实例载入内存 registry(重启后 followup 可直接继续)。 */
79
+ #recoverInstances() {
80
+ for (const [, record] of this.#instanceStore.entries()) {
81
+ if (record.status !== 'active')
82
+ continue;
83
+ this.#instances.set(_a.instanceKey(record.characterId, record.sceneId), {
84
+ characterId: record.characterId,
85
+ sceneId: record.sceneId,
86
+ parentSessionId: record.parentSessionId,
87
+ childId: record.childSessionId,
88
+ createdAt: record.createdAt,
89
+ });
90
+ }
91
+ if (this.#instances.size > 0) {
92
+ this.#logger.info(`恢复 ${this.#instances.size} 个角色实例(阶段 2 最小恢复器)`);
93
+ }
94
+ }
95
+ /** 已召唤实例快照(只读)。 */
96
+ listInstances() {
97
+ return [...this.#instances.values()];
98
+ }
99
+ /** 当前用户(会话粒度):后续接入全局用户身份。 */
100
+ #userIdOf(parentSessionId) {
101
+ return String(parentSessionId);
102
+ }
103
+ /**
104
+ * 解析 summon 的场景:显式 sceneId(须存在)→ 用户首个 active 场景 →
105
+ * 自动创建(title = sceneTitle ?? 「{角色} 的场景」)。
106
+ */
107
+ async #resolveSummonScene(userId, characterName, params) {
108
+ if (params.sceneId !== undefined) {
109
+ const scene = this.#scenes.getScene(params.sceneId);
110
+ if (scene === null)
111
+ throw new Error(`[Tavern] 场景不存在:${params.sceneId}`);
112
+ return params.sceneId;
113
+ }
114
+ const scenes = await this.#scenes.getUserScenes(userId);
115
+ const active = scenes.filter(scene => scene.status === 'active');
116
+ if (active.length > 0)
117
+ return active[0].id;
118
+ const created = await this.#scenes.createScene({
119
+ ownerUserId: userId,
120
+ title: params.sceneTitle ?? `${characterName} 的场景`,
121
+ });
122
+ return created.id;
123
+ }
124
+ /**
125
+ * 解析 followup 的场景:显式 sceneId → 最后活跃场景 → 该用户唯一候选实例。
126
+ * 多场景同角色且无显式 sceneId / 最后活跃场景时抛错。
127
+ */
128
+ async #resolveFollowupScene(userId, characterId) {
129
+ const candidates = [];
130
+ for (const instance of this.#instances.values()) {
131
+ if (instance.characterId !== characterId)
132
+ continue;
133
+ const participants = await this.#scenes.getParticipants(instance.sceneId);
134
+ const joined = participants.some(participant => participant.entityKind === 'user' && participant.entityId === userId && participant.leftAt === undefined);
135
+ if (joined)
136
+ candidates.push(instance);
137
+ }
138
+ if (candidates.length === 0)
139
+ throw new Error(`[Tavern] 角色未召唤:${characterId}`);
140
+ const last = this.#lastScene.get(userId);
141
+ const byLast = last === undefined ? undefined : candidates.find(instance => instance.sceneId === last);
142
+ if (byLast !== undefined)
143
+ return byLast.sceneId;
144
+ if (candidates.length === 1)
145
+ return candidates[0].sceneId;
146
+ throw new Error(`[Tavern] 角色「${characterId}」在多个场景中各有实例(${candidates.map(item => item.sceneId.slice(0, 8)).join('、')}…),请显式指定 sceneId`);
147
+ }
148
+ /** 召唤角色:解析/创建场景 → 登记参与者 → 建立 continuable 子 Agent。 */
149
+ async summon(params) {
150
+ const character = this.#characters.get(params.characterId);
151
+ if (character === null) {
152
+ throw new Error(`[Tavern] 角色不存在:${params.characterId}`);
153
+ }
154
+ // 当前会话的 Agent 由调用上下文解析(命令入口自动携带),调用方无需传。
155
+ const parentAgent = this.#sessionAgents.getCurrentAgent();
156
+ const userId = this.#userIdOf(parentAgent.session.id);
157
+ const sceneId = await this.#resolveSummonScene(userId, character.name, params);
158
+ const instanceKey = _a.instanceKey(character.id, sceneId);
159
+ if (this.#instances.has(instanceKey)) {
160
+ throw new Error(`[Tavern] 角色已召唤(单实例每角色每场景):${character.id} @ ${sceneId}`);
161
+ }
162
+ const signal = params.signal ?? new AbortController().signal;
163
+ const messageText = normalizeRoleplayOpening(params.initialMessage ?? character.firstMessage ?? `(${character.name} 已就位)`);
164
+ // 阶段 4 + 5.2:世界书 + 记忆检索注入(场景内;命中块作为 prompt 前置块)。
165
+ const lore = await this.#assemble(character.id, sceneId, messageText);
166
+ const started = await this.#gateway.startContinuable({
167
+ provider: 'spawn',
168
+ label: character.name,
169
+ parent: parentAgent,
170
+ prompt: [
171
+ ...lore.contentBlocks,
172
+ { type: 'text', text: messageText },
173
+ ],
174
+ persona: buildRoleplayPersona({ characterName: character.name, characterPersona: character.persona, mode: 'roleplay' }),
175
+ signal,
176
+ });
177
+ const instance = {
178
+ characterId: character.id,
179
+ sceneId,
180
+ parentSessionId: parentAgent.session.id,
181
+ childId: started.childId,
182
+ createdAt: new Date().toISOString(),
183
+ };
184
+ // 持久化实例(阶段 2 最小地基):await 写入后再登记内存。
185
+ // 记录 id = `characterId@sceneId`(同角色多场景各一条,互不覆盖)。
186
+ const record = {
187
+ id: `${character.id}@${sceneId}`,
188
+ characterId: character.id,
189
+ characterRevision: character.revision,
190
+ parentSessionId: instance.parentSessionId,
191
+ childSessionId: started.childId,
192
+ sceneId,
193
+ status: 'active',
194
+ createdAt: instance.createdAt,
195
+ };
196
+ await this.#instanceStore.put(record.id, record);
197
+ this.#instances.set(instanceKey, instance);
198
+ this.#lastScene.set(userId, sceneId);
199
+ this.#logger.info(`summon 完成:character=${character.id} scene=${sceneId.slice(0, 8)}… child=${started.childId}`
200
+ + ` parent=${instance.parentSessionId}(实例已持久化 id=${record.id})`);
201
+ // 阶段 5.4:实例创建审计(source=user,actor=当前用户)。
202
+ await this.#audit.log({
203
+ entityType: 'instance',
204
+ entityId: record.id,
205
+ action: 'create',
206
+ after: {
207
+ characterId: character.id,
208
+ characterRevision: character.revision,
209
+ sceneId,
210
+ childId: String(started.childId),
211
+ parentSessionId: String(instance.parentSessionId),
212
+ },
213
+ source: 'user',
214
+ actorId: userId,
215
+ sceneId,
216
+ });
217
+ // 阶段 5.1/5.2:登记关系节点 + 场景参与者。辅助数据,失败仅告警不阻断召唤。
218
+ try {
219
+ await this.#relationships.ensureNode('character-instance', record.id, character.name);
220
+ await this.#relationships.ensureNode('user', userId, '旅人');
221
+ const scene = this.#scenes.getScene(sceneId);
222
+ await this.#scenes.addParticipant({
223
+ sceneId,
224
+ entityId: userId,
225
+ entityKind: 'user',
226
+ role: scene?.ownerUserId === userId ? 'owner' : 'member',
227
+ });
228
+ await this.#scenes.addParticipant({
229
+ sceneId,
230
+ entityId: record.id,
231
+ entityKind: 'character-instance',
232
+ role: 'member',
233
+ });
234
+ }
235
+ catch (error) {
236
+ this.#logger.info(`关系节点/参与者记录失败(不影响召唤):instance=${record.id} ${error instanceof Error ? error.message : String(error)}`);
237
+ }
238
+ return { childId: started.childId, messageId: started.messageId, sceneId };
239
+ }
240
+ /** 向角色实例续推一条消息。返回仅表示 accepted,不是 completed。 */
241
+ async followup(params) {
242
+ const parentAgent = this.#sessionAgents.getCurrentAgent();
243
+ const parentSessionId = parentAgent.session.id;
244
+ const userId = this.#userIdOf(parentSessionId);
245
+ const sceneId = params.sceneId ?? await this.#resolveFollowupScene(userId, params.characterId);
246
+ const instance = this.#instances.get(_a.instanceKey(params.characterId, sceneId));
247
+ if (instance === undefined) {
248
+ throw new Error(`[Tavern] 角色未召唤:${params.characterId}(场景 ${sceneId.slice(0, 8)}…)`);
249
+ }
250
+ if (parentSessionId !== instance.parentSessionId) {
251
+ throw new Error(`[Tavern] parent 不匹配:followup 必须由创建该子 Agent 的直接父 Agent 发起`
252
+ + `(期望 ${instance.parentSessionId},实际 ${parentSessionId})`);
253
+ }
254
+ // 场景归属验证:当前用户必须是该场景的 active 参与者(跨场景调用被拒绝)。
255
+ const participants = await this.#scenes.getParticipants(sceneId);
256
+ const joined = participants.some(participant => participant.entityKind === 'user' && participant.entityId === userId && participant.leftAt === undefined);
257
+ if (!joined) {
258
+ throw new Error(`[Tavern] 当前会话不属于场景 ${sceneId.slice(0, 8)}…(跨场景调用被拒绝)`);
259
+ }
260
+ this.#lastScene.set(userId, sceneId);
261
+ const signal = params.signal ?? new AbortController().signal;
262
+ // 阶段 4 + 5.2:世界书 + 记忆检索注入(场景内;命中块作为 content 前置块)。
263
+ const lore = await this.#assemble(params.characterId, sceneId, params.message);
264
+ const messageId = await this.#gateway.followup({
265
+ parent: parentAgent,
266
+ childId: instance.childId,
267
+ content: [
268
+ ...lore.contentBlocks,
269
+ { type: 'text', text: params.message },
270
+ ],
271
+ source: tavernMessageSource(),
272
+ signal,
273
+ });
274
+ // accepted ≠ completed:只有 inbox 接受被保证;completed 需完成信号(阶段 2)。
275
+ this.#logger.info(`followup accepted(≠ completed):character=${params.characterId} scene=${sceneId.slice(0, 8)}…`
276
+ + ` child=${instance.childId} messageId=${messageId}`);
277
+ // 阶段 5.4:投递审计(sourceEventId = messageId,经此查询全链路)。
278
+ await this.#audit.log({
279
+ entityType: 'delivery',
280
+ entityId: String(messageId),
281
+ action: 'create',
282
+ after: {
283
+ characterId: params.characterId,
284
+ sceneId,
285
+ childId: String(instance.childId),
286
+ accepted: true,
287
+ message: params.message,
288
+ },
289
+ source: 'user',
290
+ sourceEventId: String(messageId),
291
+ actorId: userId,
292
+ sceneId,
293
+ });
294
+ return { accepted: true, messageId };
295
+ }
296
+ }
297
+ _a = AgentOrchestrator;
298
+ //# sourceMappingURL=agent-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-orchestrator.js","sourceRoot":"","sources":["../../../src/application/companion/agent-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Agent, AgentOptions } from '@deepseek-ai/dsh-agent';
2
+ import type { ContentBlock } from '@deepseek-ai/dsh-llm';
3
+ import type { ToolRestriction } from '@deepseek-ai/dsh-tools';
4
+ import type { CompanionModelPreference, RuntimeBindingRecord } from '../../domain/schemas.js';
5
+ import type { RuntimeBindingService } from '../../core/runtime-binding-service.js';
6
+ import type { SubagentStartPortResult, SubagentPort } from '../ports/subagent-port.js';
7
+ export interface CompanionChildGateway extends SubagentPort {
8
+ startContinuable(input: {
9
+ provider: string;
10
+ label: string;
11
+ parent: Agent;
12
+ prompt: ContentBlock[];
13
+ persona?: string;
14
+ toolFilter?: ToolRestriction;
15
+ agentOptions?: AgentOptions;
16
+ signal?: AbortSignal;
17
+ }): Promise<SubagentStartPortResult>;
18
+ }
19
+ export interface StartCompanionChildParams {
20
+ readonly ownerUserId: string;
21
+ readonly companionProfileId: string;
22
+ readonly label: string;
23
+ readonly parent: Agent;
24
+ readonly prompt: ContentBlock[];
25
+ readonly persona?: string;
26
+ readonly toolFilter?: ToolRestriction;
27
+ readonly workspaceId?: string;
28
+ readonly modelPreference?: CompanionModelPreference;
29
+ readonly sceneId?: string;
30
+ readonly signal?: AbortSignal;
31
+ }
32
+ /** Creates a DSH child only through a supplied, direct parent Agent. */
33
+ export declare class CompanionChildAgentService {
34
+ private readonly bindings;
35
+ private readonly gateway;
36
+ constructor(bindings: RuntimeBindingService, gateway: CompanionChildGateway);
37
+ start(params: StartCompanionChildParams): Promise<{
38
+ binding: RuntimeBindingRecord;
39
+ childId: string;
40
+ messageId: string;
41
+ route: {
42
+ provider?: string;
43
+ model?: string;
44
+ };
45
+ }>;
46
+ }
47
+ //# sourceMappingURL=companion-child-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-child-service.d.ts","sourceRoot":"","sources":["../../../src/application/companion/companion-child-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAEtF,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,gBAAgB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,eAAe,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;CACzO;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAA;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAA;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC9B;AAED,wEAAwE;AACxE,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAyB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAzD,QAAQ,EAAE,qBAAqB,EAAmB,OAAO,EAAE,qBAAqB;IAEvG,KAAK,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAiB7K"}
@@ -0,0 +1,30 @@
1
+ /** Creates a DSH child only through a supplied, direct parent Agent. */
2
+ export class CompanionChildAgentService {
3
+ bindings;
4
+ gateway;
5
+ constructor(bindings, gateway) {
6
+ this.bindings = bindings;
7
+ this.gateway = gateway;
8
+ }
9
+ async start(params) {
10
+ const parentSessionId = String(params.parent?.session?.id ?? '');
11
+ const preference = params.modelPreference ?? { mode: 'inherit-dsh-session' };
12
+ if (preference.mode === 'inherit-dsh-default' || preference.mode === 'runtime-default')
13
+ throw new Error(`[Tavern] 模型策略 ${preference.mode} 当前 DSH Host 未暴露可解析的默认模型,已拒绝静默回退`);
14
+ const route = preference.providerId === undefined && preference.modelId === undefined ? {} : { ...(preference.providerId === undefined ? {} : { provider: preference.providerId }), ...(preference.modelId === undefined ? {} : { model: preference.modelId }) };
15
+ const agentOptions = Object.keys(route).length === 0 ? undefined : route;
16
+ if (!parentSessionId.trim())
17
+ throw new Error('[Tavern] Companion child requires a valid direct parent Agent');
18
+ const requested = await this.bindings.create({ runtimeType: 'dsh-child', runtimeId: `requested:${parentSessionId}`, ownerUserId: params.ownerUserId, companionProfileId: params.companionProfileId, ...(params.workspaceId === undefined ? {} : { workspaceId: params.workspaceId }), ...(params.sceneId === undefined ? {} : { sceneId: params.sceneId }), purpose: 'companion', status: 'requested' });
19
+ try {
20
+ const started = await this.gateway.startContinuable({ provider: 'spawn', label: params.label, parent: params.parent, prompt: params.prompt, ...(params.persona === undefined ? {} : { persona: params.persona }), ...(params.toolFilter === undefined ? {} : { toolFilter: params.toolFilter }), ...(agentOptions === undefined ? {} : { agentOptions }), ...(params.signal === undefined ? {} : { signal: params.signal }) });
21
+ const binding = await this.bindings.activate(params.ownerUserId, requested.id, String(started.childId));
22
+ return { binding, childId: String(started.childId), messageId: String(started.messageId), route };
23
+ }
24
+ catch (error) {
25
+ await this.bindings.transition(params.ownerUserId, requested.id, 'orphaned');
26
+ throw error;
27
+ }
28
+ }
29
+ }
30
+ //# sourceMappingURL=companion-child-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-child-service.js","sourceRoot":"","sources":["../../../src/application/companion/companion-child-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
2
+ import type { CompanionProfile, RelationshipEdge, RuntimeBindingRecord } from '../../domain/schemas.js';
3
+ import type { CompanionRuntimePort, CompanionEvent } from '../ports/companion-runtime-port.js';
4
+ import type { WorkspaceService } from '../workspace/workspace-service.js';
5
+ import type { SceneService } from '../../core/scene-service.js';
6
+ import type { MemoryService } from '../memory/memory-service.js';
7
+ import type { RuntimeBindingService } from '../../core/runtime-binding-service.js';
8
+ import type { RoleplayMode } from '../../core/roleplay-contract.js';
9
+ export interface InvokeCompanionParams {
10
+ readonly ownerUserId: string;
11
+ readonly companionProfileId: string;
12
+ readonly message: string;
13
+ readonly requestId: string;
14
+ readonly traceId: string;
15
+ readonly idempotencyKey: string;
16
+ readonly directParentSessionId: string;
17
+ readonly workspaceId?: string;
18
+ readonly sceneId?: string;
19
+ readonly bindingPurpose?: 'companion' | 'group-delivery' | 'chat-generation';
20
+ readonly roleplayMode?: RoleplayMode;
21
+ readonly groupThreadHistory?: readonly {
22
+ role: 'user' | 'companion';
23
+ senderId: string;
24
+ content: string;
25
+ }[];
26
+ }
27
+ /** Starts a tool-free Companion runtime after identity and workspace checks. */
28
+ export declare class CompanionInvocationService {
29
+ private readonly profiles;
30
+ private readonly bindings;
31
+ private readonly workspaces;
32
+ private readonly scenes;
33
+ private readonly runtime;
34
+ private readonly memory?;
35
+ private readonly relationshipView?;
36
+ constructor(profiles: KvTable<string, CompanionProfile>, bindings: RuntimeBindingService, workspaces: WorkspaceService, scenes: SceneService, runtime: CompanionRuntimePort, memory?: MemoryService | undefined, relationshipView?: ((ownerUserId: string, profileId: string, sceneId?: string) => Promise<RelationshipEdge[]>) | undefined);
37
+ invoke(params: InvokeCompanionParams): Promise<{
38
+ binding: RuntimeBindingRecord;
39
+ events: AsyncIterable<CompanionEvent>;
40
+ }>;
41
+ }
42
+ //# sourceMappingURL=companion-invocation-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-invocation-service.d.ts","sourceRoot":"","sources":["../../../src/application/companion/companion-invocation-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACvG,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAEnE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC3G;AAED,gFAAgF;AAChF,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBANjB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC3C,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,aAAa,YAAA,EACtB,gBAAgB,CAAC,GAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,aAAA;IAGzH,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAAE,CAAC;CAyB/H"}
@@ -0,0 +1,50 @@
1
+ /** Starts a tool-free Companion runtime after identity and workspace checks. */
2
+ export class CompanionInvocationService {
3
+ profiles;
4
+ bindings;
5
+ workspaces;
6
+ scenes;
7
+ runtime;
8
+ memory;
9
+ relationshipView;
10
+ constructor(profiles, bindings, workspaces, scenes, runtime, memory, relationshipView) {
11
+ this.profiles = profiles;
12
+ this.bindings = bindings;
13
+ this.workspaces = workspaces;
14
+ this.scenes = scenes;
15
+ this.runtime = runtime;
16
+ this.memory = memory;
17
+ this.relationshipView = relationshipView;
18
+ }
19
+ async invoke(params) {
20
+ if (!params.directParentSessionId.trim())
21
+ throw new Error('[Tavern] Companion invocation requires a valid DSH direct parent');
22
+ const profile = this.profiles.get(params.companionProfileId);
23
+ if (!profile || profile.ownerUserId !== params.ownerUserId || profile.status !== 'active')
24
+ throw new Error('[Tavern] Active Companion not found or not owned');
25
+ if (params.workspaceId !== undefined) {
26
+ const workspace = this.workspaces.getForOwner(params.ownerUserId, params.workspaceId);
27
+ if (!workspace || workspace.status !== 'active' || !this.workspaces.hasActiveCompanion(workspace.id, profile.id))
28
+ throw new Error('[Tavern] Workspace membership rejected');
29
+ if (params.sceneId !== undefined && !this.workspaces.hasActiveSceneBinding(workspace.id, params.sceneId))
30
+ throw new Error('[Tavern] Scene is not bound to Workspace');
31
+ }
32
+ if (params.sceneId !== undefined) {
33
+ const scene = this.scenes.getScene(params.sceneId);
34
+ if (!scene || scene.ownerUserId !== params.ownerUserId || scene.status !== 'active')
35
+ throw new Error('[Tavern] Scene is unavailable');
36
+ }
37
+ const memories = this.memory?.listActiveByCharacter(profile.characterId, params.sceneId).filter(item => (item.ownerUserId === undefined || item.ownerUserId === params.ownerUserId) && (item.sourceEventId === undefined || ((!item.sourceEventId.startsWith('promotion:') && !item.sourceEventId.startsWith('shared-history:')) || item.sourceEventId === `promotion:${profile.id}` || item.sourceEventId.startsWith(`shared-history:${profile.id}:`)))) ?? [];
38
+ const relationships = this.relationshipView === undefined ? [] : await this.relationshipView(params.ownerUserId, profile.id, params.sceneId);
39
+ const context = {
40
+ profile: { id: profile.id, characterId: profile.characterId, ...(profile.identitySummary === undefined ? {} : { identitySummary: profile.identitySummary }), ...(profile.personalitySummary === undefined ? {} : { personalitySummary: profile.personalitySummary }), personalityTraits: profile.personalityTraits ?? [], boundaries: profile.boundaries, goals: profile.goals, ...(profile.modelPreference === undefined ? {} : { modelPreference: profile.modelPreference }) },
41
+ confirmedMemoryFacts: memories.map(item => item.fact),
42
+ relationshipView: relationships,
43
+ roleplayMode: params.roleplayMode ?? (params.bindingPurpose === 'group-delivery' ? 'group-roleplay' : 'roleplay'),
44
+ ...(params.groupThreadHistory === undefined ? {} : { groupThreadHistory: params.groupThreadHistory }),
45
+ };
46
+ const binding = await this.bindings.create({ runtimeType: 'generation', runtimeId: `generation:${params.idempotencyKey}`, ownerUserId: params.ownerUserId, companionProfileId: profile.id, ...(params.workspaceId === undefined ? {} : { workspaceId: params.workspaceId }), ...(params.sceneId === undefined ? {} : { sceneId: params.sceneId }), purpose: params.bindingPurpose ?? 'companion', status: 'active' });
47
+ return { binding, events: this.runtime.invoke({ ...params, characterId: profile.characterId, runtimeBindingId: binding.id, context, roleplayMode: context.roleplayMode }) };
48
+ }
49
+ }
50
+ //# sourceMappingURL=companion-invocation-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-invocation-service.js","sourceRoot":"","sources":["../../../src/application/companion/companion-invocation-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
2
+ import type { AuditService } from '../../core/audit-service.js';
3
+ import type { CharacterDefinition, CompanionModelPreference, CompanionProfile, CompanionProfileStatus, RelationshipEdge } from '../../domain/schemas.js';
4
+ import type { RelationshipService } from '../relationship/relationship-service.js';
5
+ export interface PromoteCompanionParams {
6
+ readonly ownerUserId: string;
7
+ readonly character: CharacterDefinition;
8
+ readonly displayName?: string;
9
+ readonly identitySummary?: string;
10
+ readonly communicationPreferences?: string;
11
+ readonly userRelationshipSummary?: string;
12
+ readonly sharedHistorySummary?: string;
13
+ readonly boundaries?: readonly string[];
14
+ readonly goals?: readonly string[];
15
+ }
16
+ export declare class CompanionProfileService {
17
+ #private;
18
+ constructor(profiles: KvTable<string, CompanionProfile>, audit: AuditService, relationships?: RelationshipService);
19
+ getForUser(ownerUserId: string, id: string): CompanionProfile | null;
20
+ listForUser(ownerUserId: string): CompanionProfile[];
21
+ findActive(ownerUserId: string, characterId: string): CompanionProfile | null;
22
+ promote(params: PromoteCompanionParams): Promise<{
23
+ profile: CompanionProfile;
24
+ created: boolean;
25
+ }>;
26
+ /** 当前 owner 可见的 Companion ↔ Companion 有向边。无 sceneId 时仅返回全局边。 */
27
+ listCompanionRelationships(ownerUserId: string, profileId: string, sceneId?: string): Promise<RelationshipEdge[]>;
28
+ rename(ownerUserId: string, id: string, displayName: string): Promise<CompanionProfile>;
29
+ setModelPreference(ownerUserId: string, id: string, preference: CompanionModelPreference): Promise<CompanionProfile>;
30
+ transition(ownerUserId: string, id: string, target: CompanionProfileStatus): Promise<CompanionProfile>;
31
+ }
32
+ //# sourceMappingURL=companion-profile-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-profile-service.d.ts","sourceRoot":"","sources":["../../../src/application/companion/companion-profile-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACxJ,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAElF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAC1C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAMD,qBAAa,uBAAuB;;gBAItB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAEjH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIpE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAGpD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIvE,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAqBvG,gEAAgE;IAC1D,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBjH,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYvF,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUpH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAW7G"}