@jingyi0605/codingns 0.6.5 → 0.7.1

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 (225) hide show
  1. package/dist/public/assets/AdaptiveButlerPage-Cd8nPdO0.js +3 -0
  2. package/dist/public/assets/{App-B9HcTkMT.js → App-CyxK-Nos.js} +6 -6
  3. package/dist/public/assets/{BootstrapPage-BgLdZEKQ.js → BootstrapPage-DEwPKWR8.js} +1 -1
  4. package/dist/public/assets/ConversationPage-CxWtRhfz.js +6 -0
  5. package/dist/public/assets/{DesktopDetachPreviewPage-YCBnyC58.js → DesktopDetachPreviewPage-DDOWolgB.js} +1 -1
  6. package/dist/public/assets/{DesktopWindowPage-CrvndE23.js → DesktopWindowPage-CtS9D8FD.js} +1 -1
  7. package/dist/public/assets/{FileContextPanel-CdC7GGw5.js → FileContextPanel-CNOjhsi5.js} +1 -1
  8. package/dist/public/assets/GitSidebar-DpC4UhFy.js +6 -0
  9. package/dist/public/assets/{MobileCreateSessionSheet-Cb2HM-y3.js → MobileCreateSessionSheet-DE4pTyXj.js} +1 -1
  10. package/dist/public/assets/{MobileTopHeaderFrame-etF2HKlm.js → MobileTopHeaderFrame-D_ZbS0qi.js} +1 -1
  11. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-CuGJ31kb.js → MobileWorkspaceSwitcherHeader-Dc12IAXc.js} +1 -1
  12. package/dist/public/assets/{RelayConnectEntryPage-BB6DbGtP.js → RelayConnectEntryPage-D8kyZfdm.js} +1 -1
  13. package/dist/public/assets/{ServerSettingsModal-Bl1sacZg.js → ServerSettingsModal-8eRu6VXr.js} +1 -1
  14. package/dist/public/assets/SessionIndexPage-DIi0JWKP.js +1 -0
  15. package/dist/public/assets/SettingsPage-OQq3kp32.js +2 -0
  16. package/dist/public/assets/{TerminalManagerPanel-BOm8Hi_v.js → TerminalManagerPanel-BEMzisSy.js} +1 -1
  17. package/dist/public/assets/{TerminalPage-B5JNFU6w.js → TerminalPage-CXLQfwjU.js} +18 -18
  18. package/dist/public/assets/{TerminalRuntimeFallbackModal-CM3LRKOJ.js → TerminalRuntimeFallbackModal-BY_VUAbq.js} +1 -1
  19. package/dist/public/assets/ToolFilesPage-CYx3DgHg.js +1 -0
  20. package/dist/public/assets/ToolGitPage-fgQcvF6v.js +1 -0
  21. package/dist/public/assets/ToolProcessesPage-BL6yDDPV.js +1 -0
  22. package/dist/public/assets/{ToolsHomePage-DsJp0y8A.js → ToolsHomePage-B1n2OeVw.js} +1 -1
  23. package/dist/public/assets/{WorkbenchLandingPage-DyPei0e-.js → WorkbenchLandingPage-Cu9yAWYo.js} +1 -1
  24. package/dist/public/assets/WorkbenchLayout-D6hGXWGE.js +244 -0
  25. package/dist/public/assets/{WorkbenchModal-LNfB69qx.js → WorkbenchModal-Bpb_G1-U.js} +1 -1
  26. package/dist/public/assets/WorkbenchShellRoute-BCjcGWhl.js +1 -0
  27. package/dist/public/assets/{WorkspaceDebugDetailPage-CaXj5zVI.js → WorkspaceDebugDetailPage-CZwT99iQ.js} +1 -1
  28. package/dist/public/assets/{WorkspaceDetailPage-DOexuuaw.js → WorkspaceDetailPage-DCM-olfU.js} +1 -1
  29. package/dist/public/assets/{WorkspaceHomePage-DkCHNjKD.js → WorkspaceHomePage-CsIIqIma.js} +1 -1
  30. package/dist/public/assets/{client-runtime-manager-6OoYHXGd.js → client-runtime-manager-CMK7kLp8.js} +1 -1
  31. package/dist/public/assets/file-tree-icon-Bv-apgA1.js +3 -0
  32. package/dist/public/assets/index-CkkzIvxs.css +1 -0
  33. package/dist/public/assets/index-O3gOb1E0.js +42 -0
  34. package/dist/public/assets/{login-direct-candidate-resolver-CLlYtBRq.js → login-direct-candidate-resolver-Bn4I5JHh.js} +1 -1
  35. package/dist/public/assets/model-switch-api-ZGnyVir7.js +1 -0
  36. package/dist/public/assets/{preferences-service-BCcfYP_d.js → preferences-service-scuqVhuA.js} +1 -1
  37. package/dist/public/assets/realtime-client-TRootbbB.js +1 -0
  38. package/dist/public/assets/{relay-entry-BmLkMKuq.js → relay-entry-eyCjVFMA.js} +1 -1
  39. package/dist/public/assets/styles-DkbkRgWw.css +1 -0
  40. package/dist/public/assets/{terminal-runtime-meta-0h-75uRy.js → terminal-runtime-meta-BGcnzxqn.js} +1 -1
  41. package/dist/public/assets/{useRegisteredDebugTemplates-rBVmAqh3.js → useRegisteredDebugTemplates-BdgPIDVM.js} +1 -1
  42. package/dist/public/index.html +2 -2
  43. package/dist/server/config/env.js +21 -1
  44. package/dist/server/config/env.js.map +1 -1
  45. package/dist/server/config/opencode-base-url-resolver.d.ts +16 -0
  46. package/dist/server/config/opencode-base-url-resolver.js +154 -0
  47. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  48. package/dist/server/helpers/wechat-claw-runtime/main.d.ts +1 -0
  49. package/dist/server/helpers/wechat-claw-runtime/main.js +38 -0
  50. package/dist/server/helpers/wechat-claw-runtime/main.js.map +1 -0
  51. package/dist/server/helpers/wechat-claw-runtime/modules/errors.d.ts +5 -0
  52. package/dist/server/helpers/wechat-claw-runtime/modules/errors.js +32 -0
  53. package/dist/server/helpers/wechat-claw-runtime/modules/errors.js.map +1 -0
  54. package/dist/server/helpers/wechat-claw-runtime/modules/login-service.d.ts +16 -0
  55. package/dist/server/helpers/wechat-claw-runtime/modules/login-service.js +209 -0
  56. package/dist/server/helpers/wechat-claw-runtime/modules/login-service.js.map +1 -0
  57. package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.d.ts +18 -0
  58. package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.js +135 -0
  59. package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.js.map +1 -0
  60. package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.d.ts +34 -0
  61. package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.js +394 -0
  62. package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.js.map +1 -0
  63. package/dist/server/helpers/wechat-claw-runtime/modules/send-service.d.ts +9 -0
  64. package/dist/server/helpers/wechat-claw-runtime/modules/send-service.js +64 -0
  65. package/dist/server/helpers/wechat-claw-runtime/modules/send-service.js.map +1 -0
  66. package/dist/server/helpers/wechat-claw-runtime/modules/types.d.ts +167 -0
  67. package/dist/server/helpers/wechat-claw-runtime/modules/types.js +3 -0
  68. package/dist/server/helpers/wechat-claw-runtime/modules/types.js.map +1 -0
  69. package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.d.ts +34 -0
  70. package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.js +160 -0
  71. package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.js.map +1 -0
  72. package/dist/server/helpers/wechat-claw-runtime/routes/accounts.d.ts +9 -0
  73. package/dist/server/helpers/wechat-claw-runtime/routes/accounts.js +24 -0
  74. package/dist/server/helpers/wechat-claw-runtime/routes/accounts.js.map +1 -0
  75. package/dist/server/helpers/wechat-claw-runtime/server.d.ts +5 -0
  76. package/dist/server/helpers/wechat-claw-runtime/server.js +36 -0
  77. package/dist/server/helpers/wechat-claw-runtime/server.js.map +1 -0
  78. package/dist/server/middlewares/auth-guard.js +4 -1
  79. package/dist/server/middlewares/auth-guard.js.map +1 -1
  80. package/dist/server/modules/butler/butler-control-session-service.d.ts +16 -1
  81. package/dist/server/modules/butler/butler-control-session-service.js +106 -75
  82. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  83. package/dist/server/modules/butler/butler-session-service.js +44 -15
  84. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  85. package/dist/server/modules/channels/channel-bridge-service.d.ts +55 -0
  86. package/dist/server/modules/channels/channel-bridge-service.js +340 -0
  87. package/dist/server/modules/channels/channel-bridge-service.js.map +1 -0
  88. package/dist/server/modules/channels/channel-controller.d.ts +52 -0
  89. package/dist/server/modules/channels/channel-controller.js +54 -0
  90. package/dist/server/modules/channels/channel-controller.js.map +1 -0
  91. package/dist/server/modules/channels/channel-delivery-service.d.ts +63 -0
  92. package/dist/server/modules/channels/channel-delivery-service.js +429 -0
  93. package/dist/server/modules/channels/channel-delivery-service.js.map +1 -0
  94. package/dist/server/modules/channels/channel-gateway-controller.d.ts +15 -0
  95. package/dist/server/modules/channels/channel-gateway-controller.js +16 -0
  96. package/dist/server/modules/channels/channel-gateway-controller.js.map +1 -0
  97. package/dist/server/modules/channels/channel-gateway-service.d.ts +24 -0
  98. package/dist/server/modules/channels/channel-gateway-service.js +56 -0
  99. package/dist/server/modules/channels/channel-gateway-service.js.map +1 -0
  100. package/dist/server/modules/channels/channel-platform-adapters.d.ts +46 -0
  101. package/dist/server/modules/channels/channel-platform-adapters.js +315 -0
  102. package/dist/server/modules/channels/channel-platform-adapters.js.map +1 -0
  103. package/dist/server/modules/channels/channel-platform-catalog.d.ts +3 -0
  104. package/dist/server/modules/channels/channel-platform-catalog.js +42 -0
  105. package/dist/server/modules/channels/channel-platform-catalog.js.map +1 -0
  106. package/dist/server/modules/channels/channel-polling-scheduler.d.ts +31 -0
  107. package/dist/server/modules/channels/channel-polling-scheduler.js +93 -0
  108. package/dist/server/modules/channels/channel-polling-scheduler.js.map +1 -0
  109. package/dist/server/modules/channels/channel-polling-service.d.ts +46 -0
  110. package/dist/server/modules/channels/channel-polling-service.js +176 -0
  111. package/dist/server/modules/channels/channel-polling-service.js.map +1 -0
  112. package/dist/server/modules/channels/channel-service.d.ts +108 -0
  113. package/dist/server/modules/channels/channel-service.js +397 -0
  114. package/dist/server/modules/channels/channel-service.js.map +1 -0
  115. package/dist/server/modules/channels/wechat-claw-runtime-boundary.d.ts +4 -0
  116. package/dist/server/modules/channels/wechat-claw-runtime-boundary.js +13 -0
  117. package/dist/server/modules/channels/wechat-claw-runtime-boundary.js.map +1 -0
  118. package/dist/server/modules/channels/wechat-claw-runtime-client.d.ts +14 -0
  119. package/dist/server/modules/channels/wechat-claw-runtime-client.js +95 -0
  120. package/dist/server/modules/channels/wechat-claw-runtime-client.js.map +1 -0
  121. package/dist/server/modules/channels/wechat-claw-runtime-manager.d.ts +16 -0
  122. package/dist/server/modules/channels/wechat-claw-runtime-manager.js +133 -0
  123. package/dist/server/modules/channels/wechat-claw-runtime-manager.js.map +1 -0
  124. package/dist/server/modules/channels/wechat-claw-runtime-types.d.ts +1 -0
  125. package/dist/server/modules/channels/wechat-claw-runtime-types.js +2 -0
  126. package/dist/server/modules/channels/wechat-claw-runtime-types.js.map +1 -0
  127. package/dist/server/modules/git/git-controller.d.ts +3 -1
  128. package/dist/server/modules/git/git-controller.js +9 -2
  129. package/dist/server/modules/git/git-controller.js.map +1 -1
  130. package/dist/server/modules/git/git-read-service.js +2 -1
  131. package/dist/server/modules/git/git-read-service.js.map +1 -1
  132. package/dist/server/modules/git/git-remote-credential-service.d.ts +1 -0
  133. package/dist/server/modules/git/git-remote-credential-service.js +4 -0
  134. package/dist/server/modules/git/git-remote-credential-service.js.map +1 -1
  135. package/dist/server/modules/git/types.d.ts +1 -0
  136. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +2 -1
  137. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
  138. package/dist/server/modules/provider/codex-model-options.js +14 -15
  139. package/dist/server/modules/provider/codex-model-options.js.map +1 -1
  140. package/dist/server/modules/provider/provider-catalog-service.d.ts +5 -6
  141. package/dist/server/modules/provider/provider-catalog-service.js +12 -57
  142. package/dist/server/modules/provider/provider-catalog-service.js.map +1 -1
  143. package/dist/server/modules/provider/provider-controller.d.ts +1 -0
  144. package/dist/server/modules/provider/provider-controller.js +5 -0
  145. package/dist/server/modules/provider/provider-controller.js.map +1 -1
  146. package/dist/server/modules/provider/provider-discovery-helper-process.js +2 -1
  147. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  148. package/dist/server/modules/provider/provider-runtime-state-service.d.ts +24 -0
  149. package/dist/server/modules/provider/provider-runtime-state-service.js +141 -0
  150. package/dist/server/modules/provider/provider-runtime-state-service.js.map +1 -0
  151. package/dist/server/modules/sessions/session-history-service.d.ts +3 -3
  152. package/dist/server/modules/sessions/session-history-service.js +150 -47
  153. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  154. package/dist/server/modules/sessions/session-live-runtime-service.js +9 -11
  155. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  156. package/dist/server/modules/sessions/session-provider-config-service.d.ts +1 -0
  157. package/dist/server/modules/sessions/session-provider-config-service.js +28 -7
  158. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  159. package/dist/server/modules/sessions/session-provider-error-mapper.js +7 -0
  160. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  161. package/dist/server/modules/tasks/task-types.d.ts +2 -0
  162. package/dist/server/modules/tasks/task-types.js +2 -0
  163. package/dist/server/modules/tasks/task-types.js.map +1 -1
  164. package/dist/server/routes/channels.d.ts +3 -0
  165. package/dist/server/routes/channels.js +16 -0
  166. package/dist/server/routes/channels.js.map +1 -0
  167. package/dist/server/routes/providers.js +1 -0
  168. package/dist/server/routes/providers.js.map +1 -1
  169. package/dist/server/routes/public.d.ts +2 -1
  170. package/dist/server/routes/public.js +3 -1
  171. package/dist/server/routes/public.js.map +1 -1
  172. package/dist/server/server/create-server.d.ts +22 -0
  173. package/dist/server/server/create-server.js +63 -4
  174. package/dist/server/server/create-server.js.map +1 -1
  175. package/dist/server/shared/http/error-handler.js +59 -3
  176. package/dist/server/shared/http/error-handler.js.map +1 -1
  177. package/dist/server/storage/repositories/channel-account-repository.d.ts +12 -0
  178. package/dist/server/storage/repositories/channel-account-repository.js +153 -0
  179. package/dist/server/storage/repositories/channel-account-repository.js.map +1 -0
  180. package/dist/server/storage/repositories/channel-delivery-repository.d.ts +13 -0
  181. package/dist/server/storage/repositories/channel-delivery-repository.js +156 -0
  182. package/dist/server/storage/repositories/channel-delivery-repository.js.map +1 -0
  183. package/dist/server/storage/repositories/channel-inbound-event-repository.d.ts +12 -0
  184. package/dist/server/storage/repositories/channel-inbound-event-repository.js +144 -0
  185. package/dist/server/storage/repositories/channel-inbound-event-repository.js.map +1 -0
  186. package/dist/server/storage/repositories/channel-thread-repository.d.ts +12 -0
  187. package/dist/server/storage/repositories/channel-thread-repository.js +152 -0
  188. package/dist/server/storage/repositories/channel-thread-repository.js.map +1 -0
  189. package/dist/server/storage/repositories/provider-runtime-state-repository.d.ts +9 -0
  190. package/dist/server/storage/repositories/provider-runtime-state-repository.js +50 -0
  191. package/dist/server/storage/repositories/provider-runtime-state-repository.js.map +1 -0
  192. package/dist/server/storage/sqlite/schema.sql +114 -0
  193. package/dist/server/types/domain.d.ts +82 -0
  194. package/dist/server/ws/workbench-ws-hub.js +8 -2
  195. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  196. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +6 -0
  197. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +398 -0
  198. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
  199. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +75 -15
  200. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  201. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +61 -8
  202. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  203. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +32 -4
  204. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  205. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +3 -0
  206. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +94 -21
  207. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  208. package/package.json +5 -1
  209. package/dist/public/assets/AdaptiveButlerPage-CfsUVZKl.js +0 -3
  210. package/dist/public/assets/ConversationPage-Cj8go7L0.js +0 -4
  211. package/dist/public/assets/GitSidebar-z2SBinQh.js +0 -6
  212. package/dist/public/assets/SessionIndexPage-NbF9gJnp.js +0 -1
  213. package/dist/public/assets/SettingsPage-DGsmQpLv.js +0 -1
  214. package/dist/public/assets/ToolFilesPage-GSqKQsj_.js +0 -1
  215. package/dist/public/assets/ToolGitPage-BVFWMMQp.js +0 -1
  216. package/dist/public/assets/ToolProcessesPage-DZ456fYz.js +0 -1
  217. package/dist/public/assets/WorkbenchLayout-DlbgBT3n.js +0 -4
  218. package/dist/public/assets/WorkbenchShellRoute-BsxumYx5.js +0 -1
  219. package/dist/public/assets/file-tree-icon-9pt1OStn.js +0 -31
  220. package/dist/public/assets/index-BwlbvwaA.css +0 -1
  221. package/dist/public/assets/index-DSw-TkQL.js +0 -42
  222. package/dist/public/assets/model-switch-api-C-l8-E1S.js +0 -1
  223. package/dist/public/assets/session-runtime-machine-DgtvREca.js +0 -21
  224. package/dist/public/assets/styles-CsEMfdaS.css +0 -1
  225. /package/dist/public/assets/{styles-DRVvx_kv.js → styles-JKFlsYFv.js} +0 -0
@@ -0,0 +1,34 @@
1
+ import { type WechatClawGetConfigResponse, type WechatClawGetUpdatesResponse, type WechatClawQrCodeResponse, type WechatClawQrStatusResponse } from "./types.js";
2
+ export declare class WechatClawApiClient {
3
+ getBotQrCode(input: {
4
+ apiBaseUrl?: string | null;
5
+ botType: string;
6
+ routeTag?: string;
7
+ }): Promise<WechatClawQrCodeResponse>;
8
+ getQrCodeStatus(input: {
9
+ apiBaseUrl?: string | null;
10
+ qrcode: string;
11
+ routeTag?: string;
12
+ }): Promise<WechatClawQrStatusResponse>;
13
+ renderQrCodeDataUrl(input: {
14
+ text: string;
15
+ }): Promise<string>;
16
+ getUpdates(input: {
17
+ apiBaseUrl?: string | null;
18
+ token: string;
19
+ cursor: string | null;
20
+ }): Promise<WechatClawGetUpdatesResponse>;
21
+ sendMessage(input: {
22
+ apiBaseUrl?: string | null;
23
+ token: string;
24
+ message: Record<string, unknown>;
25
+ }): Promise<Record<string, unknown>>;
26
+ getConfig(input: {
27
+ apiBaseUrl?: string | null;
28
+ token: string;
29
+ userId: string;
30
+ contextToken?: string | null;
31
+ }): Promise<WechatClawGetConfigResponse>;
32
+ private requestAuthorizedJson;
33
+ private requestJson;
34
+ }
@@ -0,0 +1,160 @@
1
+ import crypto from "node:crypto";
2
+ import QRCode from "qrcode";
3
+ import { AppError } from "../../../shared/errors/app-error.js";
4
+ import { DEFAULT_WECHAT_CLAW_API_BASE_URL } from "./types.js";
5
+ import { wechatClawUpstreamError } from "./errors.js";
6
+ export class WechatClawApiClient {
7
+ async getBotQrCode(input) {
8
+ const url = new URL("/ilink/bot/get_bot_qrcode", normalizeBaseUrl(input.apiBaseUrl));
9
+ url.searchParams.set("bot_type", input.botType);
10
+ return await this.requestJson(url.toString(), {
11
+ method: "GET",
12
+ headers: buildLoginHeaders(input.routeTag)
13
+ });
14
+ }
15
+ async getQrCodeStatus(input) {
16
+ const url = new URL("/ilink/bot/get_qrcode_status", normalizeBaseUrl(input.apiBaseUrl));
17
+ url.searchParams.set("qrcode", input.qrcode);
18
+ return await this.requestJson(url.toString(), {
19
+ method: "GET",
20
+ headers: buildLoginHeaders(input.routeTag),
21
+ timeoutMs: 35_000
22
+ });
23
+ }
24
+ async renderQrCodeDataUrl(input) {
25
+ const qrText = input.text.trim();
26
+ if (!qrText) {
27
+ throw wechatClawUpstreamError("微信二维码内容不能为空");
28
+ }
29
+ try {
30
+ const svg = await QRCode.toString(qrText, {
31
+ type: "svg",
32
+ margin: 2,
33
+ width: 280,
34
+ errorCorrectionLevel: "M"
35
+ });
36
+ return `data:image/svg+xml;base64,${Buffer.from(svg, "utf8").toString("base64")}`;
37
+ }
38
+ catch (error) {
39
+ if (error instanceof AppError) {
40
+ throw error;
41
+ }
42
+ throw wechatClawUpstreamError(error instanceof Error ? `微信二维码本地生成失败:${error.message}` : "微信二维码本地生成失败", {
43
+ qrText
44
+ });
45
+ }
46
+ }
47
+ async getUpdates(input) {
48
+ return await this.requestAuthorizedJson({
49
+ apiBaseUrl: input.apiBaseUrl,
50
+ token: input.token,
51
+ path: "/ilink/bot/getupdates",
52
+ body: {
53
+ get_updates_buf: input.cursor ?? "",
54
+ base_info: {
55
+ channel_version: "codingns-wechat-claw-helper"
56
+ }
57
+ },
58
+ timeoutMs: 35_000
59
+ });
60
+ }
61
+ async sendMessage(input) {
62
+ return await this.requestAuthorizedJson({
63
+ apiBaseUrl: input.apiBaseUrl,
64
+ token: input.token,
65
+ path: "/ilink/bot/sendmessage",
66
+ body: {
67
+ msg: input.message,
68
+ base_info: {
69
+ channel_version: "codingns-wechat-claw-helper"
70
+ }
71
+ }
72
+ });
73
+ }
74
+ async getConfig(input) {
75
+ return await this.requestAuthorizedJson({
76
+ apiBaseUrl: input.apiBaseUrl,
77
+ token: input.token,
78
+ path: "/ilink/bot/getconfig",
79
+ body: {
80
+ ilink_user_id: input.userId,
81
+ context_token: input.contextToken ?? undefined,
82
+ base_info: {
83
+ channel_version: "codingns-wechat-claw-helper"
84
+ }
85
+ }
86
+ });
87
+ }
88
+ async requestAuthorizedJson(input) {
89
+ const url = new URL(input.path, normalizeBaseUrl(input.apiBaseUrl));
90
+ const serialized = JSON.stringify(input.body);
91
+ return await this.requestJson(url.toString(), {
92
+ method: "POST",
93
+ headers: {
94
+ "content-type": "application/json",
95
+ authorizationtype: "ilink_bot_token",
96
+ authorization: `Bearer ${input.token}`,
97
+ "x-wechat-uin": Buffer.from(String(crypto.randomInt(0, 2 ** 32))).toString("base64")
98
+ },
99
+ body: serialized,
100
+ timeoutMs: input.timeoutMs
101
+ });
102
+ }
103
+ async requestJson(url, input) {
104
+ const controller = new AbortController();
105
+ const timeout = setTimeout(() => {
106
+ controller.abort();
107
+ }, input.timeoutMs ?? 20_000);
108
+ try {
109
+ const response = await fetch(url, {
110
+ method: input.method,
111
+ headers: input.headers,
112
+ body: input.body,
113
+ signal: controller.signal
114
+ });
115
+ const text = await response.text();
116
+ if (!response.ok) {
117
+ throw wechatClawUpstreamError(`微信接口请求失败:${response.status} ${response.statusText}`, {
118
+ status: response.status,
119
+ body: text.slice(0, 200)
120
+ });
121
+ }
122
+ if (!text.trim()) {
123
+ return {};
124
+ }
125
+ try {
126
+ return JSON.parse(text);
127
+ }
128
+ catch (error) {
129
+ throw wechatClawUpstreamError("微信接口返回了无法解析的 JSON", {
130
+ body: text.slice(0, 200),
131
+ error: error instanceof Error ? error.message : String(error)
132
+ });
133
+ }
134
+ }
135
+ catch (error) {
136
+ if (error instanceof AppError) {
137
+ throw error;
138
+ }
139
+ throw wechatClawUpstreamError(error instanceof Error ? `微信接口请求失败:${error.message}` : "微信接口请求失败");
140
+ }
141
+ finally {
142
+ clearTimeout(timeout);
143
+ }
144
+ }
145
+ }
146
+ function normalizeBaseUrl(value) {
147
+ const normalized = value?.trim();
148
+ return normalized && normalized.length > 0 ? normalized : DEFAULT_WECHAT_CLAW_API_BASE_URL;
149
+ }
150
+ function buildLoginHeaders(routeTag) {
151
+ return routeTag?.trim()
152
+ ? {
153
+ "iLink-App-ClientVersion": "1",
154
+ SKRouteTag: routeTag.trim()
155
+ }
156
+ : {
157
+ "iLink-App-ClientVersion": "1"
158
+ };
159
+ }
160
+ //# sourceMappingURL=wechat-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat-api-client.js","sourceRoot":"","sources":["../../../../../src/helpers/wechat-claw-runtime/modules/wechat-api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { WechatClawLoginService } from "../modules/login-service.js";
3
+ import type { WechatClawPollService } from "../modules/poll-service.js";
4
+ import type { WechatClawSendService } from "../modules/send-service.js";
5
+ export declare function registerWechatClawRuntimeRoutes(app: FastifyInstance, services: {
6
+ loginService: WechatClawLoginService;
7
+ pollService: WechatClawPollService;
8
+ sendService: WechatClawSendService;
9
+ }): Promise<void>;
@@ -0,0 +1,24 @@
1
+ export async function registerWechatClawRuntimeRoutes(app, services) {
2
+ app.post("/accounts/:accountId/start-login", async (request, reply) => {
3
+ reply.send(await services.loginService.startLogin(request.params.accountId, request.body?.config ?? {}));
4
+ });
5
+ app.get("/accounts/:accountId/login-status", async (request, reply) => {
6
+ reply.send(await services.loginService.refreshLoginStatus(request.params.accountId));
7
+ });
8
+ app.post("/accounts/:accountId/probe", async (request, reply) => {
9
+ reply.send(await services.pollService.probe(request.params.accountId, request.body?.config ?? {}));
10
+ });
11
+ app.post("/accounts/:accountId/poll", async (request, reply) => {
12
+ reply.send(await services.pollService.poll(request.params.accountId, request.body?.config ?? {}));
13
+ });
14
+ app.post("/accounts/:accountId/send", async (request, reply) => {
15
+ reply.send(await services.sendService.sendText(request.params.accountId, request.body?.config ?? {}, request.body.thread, request.body.text));
16
+ });
17
+ app.post("/accounts/:accountId/logout", async (request, reply) => {
18
+ reply.send(services.loginService.logout(request.params.accountId));
19
+ });
20
+ app.post("/accounts/:accountId/purge-runtime-state", async (request, reply) => {
21
+ reply.send(services.loginService.logout(request.params.accountId));
22
+ });
23
+ }
24
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../../../src/helpers/wechat-claw-runtime/routes/accounts.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,GAAoB,EACpB,QAIC;IAED,GAAG,CAAC,IAAI,CACN,kCAAkC,EAClC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3G,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,GAAG,CACL,mCAAmC,EACnC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACvF,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CACN,4BAA4B,EAC5B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CACN,2BAA2B,EAC3B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CACN,2BAA2B,EAC3B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CACR,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CACjC,OAAO,CAAC,MAAM,CAAC,SAAS,EACxB,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,EAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,EACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAClB,CACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CACN,6BAA6B,EAC7B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CACN,0CAA0C,EAC1C,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import Fastify from "fastify";
2
+ export declare function createWechatClawRuntimeServer(input: {
3
+ runtimeRootDir: string;
4
+ authToken: string;
5
+ }): Promise<Fastify.FastifyInstance<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, Fastify.FastifyBaseLogger, Fastify.FastifyTypeProviderDefault>>;
@@ -0,0 +1,36 @@
1
+ import Fastify from "fastify";
2
+ import { setErrorHandler } from "../../shared/http/error-handler.js";
3
+ import { wechatClawAuthError } from "./modules/errors.js";
4
+ import { WechatClawLoginService } from "./modules/login-service.js";
5
+ import { WechatClawPollService } from "./modules/poll-service.js";
6
+ import { WechatClawRuntimeStateStore } from "./modules/runtime-state-store.js";
7
+ import { WechatClawSendService } from "./modules/send-service.js";
8
+ import { WechatClawApiClient } from "./modules/wechat-api-client.js";
9
+ import { registerWechatClawRuntimeRoutes } from "./routes/accounts.js";
10
+ export async function createWechatClawRuntimeServer(input) {
11
+ const app = Fastify({
12
+ logger: false
13
+ });
14
+ const stateStore = new WechatClawRuntimeStateStore(input.runtimeRootDir);
15
+ const apiClient = new WechatClawApiClient();
16
+ const loginService = new WechatClawLoginService(stateStore, apiClient);
17
+ const pollService = new WechatClawPollService(stateStore, apiClient);
18
+ const sendService = new WechatClawSendService(stateStore, apiClient);
19
+ app.addHook("onRequest", async (request) => {
20
+ const token = request.headers["x-codingns-helper-token"];
21
+ if (token !== input.authToken) {
22
+ throw wechatClawAuthError("无效的 helper token");
23
+ }
24
+ });
25
+ app.setErrorHandler(setErrorHandler);
26
+ await registerWechatClawRuntimeRoutes(app, {
27
+ loginService,
28
+ pollService,
29
+ sendService
30
+ });
31
+ app.addHook("onClose", async () => {
32
+ stateStore.dispose();
33
+ });
34
+ return app;
35
+ }
36
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/helpers/wechat-claw-runtime/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,KAGnD;IACC,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAErE,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACzD,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACrC,MAAM,+BAA+B,CAAC,GAAG,EAAE;QACzC,YAAY;QACZ,WAAW;QACX,WAAW;KACZ,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAChC,UAAU,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -13,6 +13,9 @@ export const BUTLER_UI_REQUEST_SOURCE = "butler-ui";
13
13
  export function isPublicRoute(method, routePath) {
14
14
  return PUBLIC_ROUTE_RULES.has(`${method.toUpperCase()}:${routePath}`);
15
15
  }
16
+ function isPublicRoutePrefix(routePath) {
17
+ return routePath.startsWith("/api/public/channel-gateways/");
18
+ }
16
19
  function isAssistantRoute(routePath) {
17
20
  return routePath.startsWith("/api/assistant/");
18
21
  }
@@ -45,7 +48,7 @@ export function createAuthGuard(authService) {
45
48
  if (!routePath.startsWith("/api/")) {
46
49
  return;
47
50
  }
48
- if (isPublicRoute(request.method, routePath)) {
51
+ if (isPublicRoute(request.method, routePath) || isPublicRoutePrefix(routePath)) {
49
52
  return;
50
53
  }
51
54
  authService.ensureInitialized();
@@ -1 +1 @@
1
- {"version":3,"file":"auth-guard.js","sourceRoot":"","sources":["../../../src/middlewares/auth-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-guard.js","sourceRoot":"","sources":["../../../src/middlewares/auth-guard.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ButlerControlSession, ButlerControlSessionPurpose, SessionListItem } from "../../types/domain.js";
1
+ import type { ButlerControlSession, ButlerControlSessionPurpose, ButlerProfileProviderId, SessionListItem } from "../../types/domain.js";
2
2
  import type { ButlerControlSessionRepository } from "../../storage/repositories/butler-control-session-repository.js";
3
3
  import { type ButlerProfileService } from "./butler-profile-service.js";
4
4
  import type { ButlerAuthService } from "./butler-auth-service.js";
@@ -51,6 +51,7 @@ export declare class ButlerControlSessionService {
51
51
  listSessions(userId: string): ButlerControlSessionView[];
52
52
  resetCurrentSession(): void;
53
53
  startSession(userId: string, input?: StartButlerControlSessionInput): Promise<ButlerControlSessionView>;
54
+ startSessionForProvider(userId: string, providerId: ButlerProfileProviderId, input?: StartButlerControlSessionInput): Promise<ButlerControlSessionView>;
54
55
  private assertProviderEnabled;
55
56
  resumeCurrentSession(userId: string): Promise<ButlerControlSessionView & {
56
57
  resumedAt: string;
@@ -66,8 +67,22 @@ export declare class ButlerControlSessionService {
66
67
  clientRequestId: string | null;
67
68
  message: Awaited<ReturnType<SessionLiveRuntimeService["sendLiveMessage"]>>["message"];
68
69
  }>;
70
+ sendMessageToSession(userId: string, input: SendButlerControlMessageInput & {
71
+ controlSessionId: string;
72
+ }): Promise<{
73
+ controlSession: ButlerControlSessionView;
74
+ sessionId: string;
75
+ provider: string;
76
+ providerSessionId: string;
77
+ acceptedAt: string;
78
+ clientRequestId: string | null;
79
+ message: Awaited<ReturnType<SessionLiveRuntimeService["sendLiveMessage"]>>["message"];
80
+ }>;
81
+ private sendMessageInternal;
82
+ private startSessionInternal;
69
83
  private requireCurrentSession;
70
84
  private requireSessionById;
85
+ private requireSessionByIdAnyProvider;
71
86
  private toView;
72
87
  private ensureSessionCanStartWork;
73
88
  private prepareWorkspace;
@@ -80,81 +80,14 @@ export class ButlerControlSessionService {
80
80
  }
81
81
  async startSession(userId, input = {}) {
82
82
  const profile = this.butlerProfileService.ensureInitialized();
83
- this.assertProviderEnabled(profile.providerId);
84
- const content = normalizeControlContent(input.content, "");
85
- const model = normalizeNullableText(input.model);
86
- const reasoningLevel = normalizeNullableText(input.reasoningLevel);
87
- const permissionMode = normalizeNullableText(input.permissionMode);
88
- const clientRequestId = normalizeNullableText(input.clientRequestId)
89
- ?? `assistant-origin:butler-control-start:${createId()}`;
90
- const promptContext = await this.butlerContextAggregator.resolvePromptContext(userId, input.content ?? null);
91
- const preparedWorkspace = await this.prepareWorkspace(profile, promptContext, userId, {
92
- title: normalizeNullableText(input.title),
93
- content
83
+ return this.startSessionInternal(userId, profile.providerId, input, {
84
+ closeExistingCurrent: true
85
+ });
86
+ }
87
+ async startSessionForProvider(userId, providerId, input = {}) {
88
+ return this.startSessionInternal(userId, providerId, input, {
89
+ closeExistingCurrent: false
94
90
  });
95
- const current = this.butlerControlSessionRepository.findLatestOpenByProvider(profile.providerId);
96
- if (current && current.status !== "closed") {
97
- this.butlerControlSessionRepository.update({
98
- ...current,
99
- status: "closed",
100
- updatedAt: nowIso()
101
- });
102
- }
103
- try {
104
- const started = await this.sessionLiveRuntimeService.startLiveSession({
105
- workspaceId: preparedWorkspace.workspaceId,
106
- userId,
107
- provider: profile.providerId,
108
- content,
109
- clientRequestId,
110
- runtimeOptions: {
111
- model,
112
- reasoningLevel,
113
- permissionMode,
114
- attachments: []
115
- }
116
- });
117
- recordButlerProxyMessageOrigin(this.sessionMessageOriginRepository, {
118
- sessionId: started.sessionId,
119
- clientRequestId,
120
- messageId: started.message?.messageId ?? null,
121
- content,
122
- createdAt: started.acceptedAt,
123
- fallbackKey: `butler-control-start:${started.sessionId}:${started.acceptedAt}`
124
- });
125
- const timestamp = started.acceptedAt;
126
- const created = this.butlerControlSessionRepository.create({
127
- id: createId(),
128
- providerId: profile.providerId,
129
- sessionId: started.sessionId,
130
- purpose: input.purpose ?? "chat",
131
- title: normalizeNullableText(input.title),
132
- sourceItemId: normalizeNullableText(input.sourceItemId),
133
- model,
134
- reasoningLevel,
135
- permissionMode,
136
- status: "running",
137
- lastContextVersion: promptContext.version,
138
- lastSummary: normalizeNullableText(input.title) ?? summarizeMessage(content),
139
- createdAt: timestamp,
140
- updatedAt: timestamp
141
- });
142
- if (preparedWorkspace.sandboxId && this.assistantSandboxService) {
143
- this.assistantSandboxService.markSandboxUsedByControlSession(preparedWorkspace.sandboxId, userId, created.id);
144
- }
145
- return this.toView(created, userId);
146
- }
147
- catch (error) {
148
- if (preparedWorkspace.sandboxId && this.assistantSandboxService) {
149
- try {
150
- this.assistantSandboxService.removeSandbox(preparedWorkspace.sandboxId, userId);
151
- }
152
- catch {
153
- // 控制会话没真正启动成功时,尽量把新建的空白沙箱收口,避免残留无主目录。
154
- }
155
- }
156
- throw error;
157
- }
158
91
  }
159
92
  assertProviderEnabled(providerId) {
160
93
  if (this.providerControlRepository.get(providerId).enabled) {
@@ -193,6 +126,15 @@ export class ButlerControlSessionService {
193
126
  const current = input.controlSessionId?.trim()
194
127
  ? this.requireSessionById(input.controlSessionId, profile.providerId)
195
128
  : this.requireCurrentSession(profile.providerId);
129
+ return this.sendMessageInternal(userId, current, input);
130
+ }
131
+ async sendMessageToSession(userId, input) {
132
+ const current = this.requireSessionByIdAnyProvider(input.controlSessionId);
133
+ return this.sendMessageInternal(userId, current, input);
134
+ }
135
+ async sendMessageInternal(userId, current, input) {
136
+ const profile = this.butlerProfileService.ensureInitialized();
137
+ this.assertProviderEnabled(current.providerId);
196
138
  await this.ensureSessionCanStartWork(current.sessionId, userId, "助手控制会话");
197
139
  const content = normalizeControlContent(input.content, "");
198
140
  const requestedAt = nowIso();
@@ -254,6 +196,84 @@ export class ButlerControlSessionService {
254
196
  throw error;
255
197
  }
256
198
  }
199
+ async startSessionInternal(userId, providerId, input, options) {
200
+ const profile = this.butlerProfileService.ensureInitialized();
201
+ this.assertProviderEnabled(providerId);
202
+ const content = normalizeControlContent(input.content, "");
203
+ const model = normalizeNullableText(input.model);
204
+ const reasoningLevel = normalizeNullableText(input.reasoningLevel);
205
+ const permissionMode = normalizeNullableText(input.permissionMode);
206
+ const clientRequestId = normalizeNullableText(input.clientRequestId)
207
+ ?? `assistant-origin:butler-control-start:${createId()}`;
208
+ const promptContext = await this.butlerContextAggregator.resolvePromptContext(userId, input.content ?? null);
209
+ const preparedWorkspace = await this.prepareWorkspace(profile, promptContext, userId, {
210
+ title: normalizeNullableText(input.title),
211
+ content
212
+ });
213
+ const current = this.butlerControlSessionRepository.findLatestOpenByProvider(providerId);
214
+ if (options.closeExistingCurrent && current && current.status !== "closed") {
215
+ this.butlerControlSessionRepository.update({
216
+ ...current,
217
+ status: "closed",
218
+ updatedAt: nowIso()
219
+ });
220
+ }
221
+ try {
222
+ const started = await this.sessionLiveRuntimeService.startLiveSession({
223
+ workspaceId: preparedWorkspace.workspaceId,
224
+ userId,
225
+ provider: providerId,
226
+ content,
227
+ clientRequestId,
228
+ runtimeOptions: {
229
+ model,
230
+ reasoningLevel,
231
+ permissionMode,
232
+ attachments: []
233
+ }
234
+ });
235
+ recordButlerProxyMessageOrigin(this.sessionMessageOriginRepository, {
236
+ sessionId: started.sessionId,
237
+ clientRequestId,
238
+ messageId: started.message?.messageId ?? null,
239
+ content,
240
+ createdAt: started.acceptedAt,
241
+ fallbackKey: `butler-control-start:${started.sessionId}:${started.acceptedAt}`
242
+ });
243
+ const timestamp = started.acceptedAt;
244
+ const created = this.butlerControlSessionRepository.create({
245
+ id: createId(),
246
+ providerId,
247
+ sessionId: started.sessionId,
248
+ purpose: input.purpose ?? "chat",
249
+ title: normalizeNullableText(input.title),
250
+ sourceItemId: normalizeNullableText(input.sourceItemId),
251
+ model,
252
+ reasoningLevel,
253
+ permissionMode,
254
+ status: "running",
255
+ lastContextVersion: promptContext.version,
256
+ lastSummary: normalizeNullableText(input.title) ?? summarizeMessage(content),
257
+ createdAt: timestamp,
258
+ updatedAt: timestamp
259
+ });
260
+ if (preparedWorkspace.sandboxId && this.assistantSandboxService) {
261
+ this.assistantSandboxService.markSandboxUsedByControlSession(preparedWorkspace.sandboxId, userId, created.id);
262
+ }
263
+ return this.toView(created, userId);
264
+ }
265
+ catch (error) {
266
+ if (preparedWorkspace.sandboxId && this.assistantSandboxService) {
267
+ try {
268
+ this.assistantSandboxService.removeSandbox(preparedWorkspace.sandboxId, userId);
269
+ }
270
+ catch {
271
+ // 控制会话没真正启动成功时,尽量把新建的空白沙箱收口,避免残留无主目录。
272
+ }
273
+ }
274
+ throw error;
275
+ }
276
+ }
257
277
  requireCurrentSession(providerId) {
258
278
  const current = this.butlerControlSessionRepository.findLatestOpenByProvider(providerId);
259
279
  if (!current || current.status === "closed") {
@@ -266,8 +286,19 @@ export class ButlerControlSessionService {
266
286
  return current;
267
287
  }
268
288
  requireSessionById(controlSessionId, providerId) {
289
+ const record = this.requireSessionByIdAnyProvider(controlSessionId);
290
+ if (record.providerId !== providerId) {
291
+ throw new AppError({
292
+ statusCode: 404,
293
+ errorCode: "BUTLER_CONTROL_SESSION_NOT_FOUND",
294
+ detail: "指定的助手会话不存在或已经关闭"
295
+ });
296
+ }
297
+ return record;
298
+ }
299
+ requireSessionByIdAnyProvider(controlSessionId) {
269
300
  const record = this.butlerControlSessionRepository.findById(controlSessionId.trim());
270
- if (!record || record.providerId !== providerId || record.status === "closed") {
301
+ if (!record || record.status === "closed") {
271
302
  throw new AppError({
272
303
  statusCode: 404,
273
304
  errorCode: "BUTLER_CONTROL_SESSION_NOT_FOUND",
@@ -1 +1 @@
1
- {"version":3,"file":"butler-control-session-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-control-session-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"butler-control-session-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-control-session-service.ts"],"names":[],"mappings":"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"}