@jingyi0605/codingns 0.6.1 → 0.7.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 (291) hide show
  1. package/bin/codingns.mjs +225 -0
  2. package/dist/public/assets/AdaptiveButlerPage-B8mg25ze.js +3 -0
  3. package/dist/public/assets/{App-Dsf3ooXU.js → App-C2lNmeKL.js} +6 -6
  4. package/dist/public/assets/{BootstrapPage-CE0m1qSR.js → BootstrapPage-CAVA-a8h.js} +1 -1
  5. package/dist/public/assets/ConversationPage-B6BGOX4C.js +6 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-Dxarr_Wf.js → DesktopDetachPreviewPage-B37DUL15.js} +1 -1
  7. package/dist/public/assets/{DesktopWindowPage-VytPwJ4c.js → DesktopWindowPage-CDA6l7lm.js} +1 -1
  8. package/dist/public/assets/{FileContextPanel-DwFzLsOp.js → FileContextPanel-CMGTtAB6.js} +1 -1
  9. package/dist/public/assets/{GitSidebar-CH6WqTrM.js → GitSidebar--DCqBiGL.js} +1 -1
  10. package/dist/public/assets/{MobileCreateSessionSheet-DcxKM00P.js → MobileCreateSessionSheet-THIrIzJ3.js} +1 -1
  11. package/dist/public/assets/{MobileTopHeaderFrame-C5rIKQT6.js → MobileTopHeaderFrame-D-X7pVnV.js} +1 -1
  12. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-CfUnHgv_.js → MobileWorkspaceSwitcherHeader-Cczi7RYu.js} +1 -1
  13. package/dist/public/assets/{RelayConnectEntryPage-CgMvVZwa.js → RelayConnectEntryPage-D417tgWj.js} +1 -1
  14. package/dist/public/assets/{ServerSettingsModal-CFul__z1.js → ServerSettingsModal-BdTxbRbU.js} +1 -1
  15. package/dist/public/assets/SessionIndexPage-D5iefVcc.js +1 -0
  16. package/dist/public/assets/SettingsPage-iCFe_DHP.js +2 -0
  17. package/dist/public/assets/{TerminalManagerPanel-BbORd-ee.js → TerminalManagerPanel-CtldwWz8.js} +1 -1
  18. package/dist/public/assets/{TerminalPage-DWHv6mlu.js → TerminalPage-DAzQTmQC.js} +19 -19
  19. package/dist/public/assets/{TerminalRuntimeFallbackModal-B29YxbQe.js → TerminalRuntimeFallbackModal-DLOhAvaq.js} +1 -1
  20. package/dist/public/assets/{ToolFilesPage-Dx9cv9hu.js → ToolFilesPage-D7thcDEv.js} +1 -1
  21. package/dist/public/assets/{ToolGitPage-D7H3vAia.js → ToolGitPage-uPRsxdcn.js} +1 -1
  22. package/dist/public/assets/{ToolProcessesPage-PqQWxsy-.js → ToolProcessesPage-B1uOk0Ef.js} +1 -1
  23. package/dist/public/assets/{ToolsHomePage-CX05Pe_4.js → ToolsHomePage-rU3V8mmh.js} +1 -1
  24. package/dist/public/assets/{WorkbenchLandingPage-CchkAC75.js → WorkbenchLandingPage-BudM2C69.js} +1 -1
  25. package/dist/public/assets/WorkbenchLayout-Dybarc1V.js +244 -0
  26. package/dist/public/assets/WorkbenchModal-DMQutm1x.js +1 -0
  27. package/dist/public/assets/WorkbenchShellRoute-Cy4WBbzq.js +1 -0
  28. package/dist/public/assets/{WorkbenchShellRoute-RGZpA0_J.css → WorkbenchShellRoute-DhQo_0vu.css} +1 -1
  29. package/dist/public/assets/{WorkspaceDebugDetailPage-Deqy2_pO.js → WorkspaceDebugDetailPage-CHqo-uDf.js} +1 -1
  30. package/dist/public/assets/{WorkspaceDetailPage-Cvf-ZdlB.js → WorkspaceDetailPage-CGkAH1W-.js} +1 -1
  31. package/dist/public/assets/{WorkspaceHomePage-Dsyvqyk1.js → WorkspaceHomePage-CfuPVITd.js} +1 -1
  32. package/dist/public/assets/{client-runtime-manager-DROQJ9v3.js → client-runtime-manager-CKbtaemV.js} +1 -1
  33. package/dist/public/assets/file-tree-icon-Bc0KADEl.js +3 -0
  34. package/dist/public/assets/index-DNRyROOG.css +1 -0
  35. package/dist/public/assets/index-oGylLBIX.js +42 -0
  36. package/dist/public/assets/{login-direct-candidate-resolver-DotM530R.js → login-direct-candidate-resolver-DjJMbqB7.js} +1 -1
  37. package/dist/public/assets/model-switch-api-T55eW6D4.js +1 -0
  38. package/dist/public/assets/{preferences-service-BG6GKG29.js → preferences-service-BTKBl5xM.js} +1 -1
  39. package/dist/public/assets/realtime-client-ww7MnbTD.js +1 -0
  40. package/dist/public/assets/{relay-entry-pmr-c42O.js → relay-entry-sdeFnTbY.js} +1 -1
  41. package/dist/public/assets/styles-BjPytabP.css +1 -0
  42. package/dist/public/assets/{terminal-runtime-meta-8_uRZf7h.js → terminal-runtime-meta-Cvt1ID92.js} +1 -1
  43. package/dist/public/assets/{useRegisteredDebugTemplates-DWX7LXQu.js → useRegisteredDebugTemplates-O-ymgLd9.js} +1 -1
  44. package/dist/public/index.html +2 -2
  45. package/dist/server/config/env.js +21 -1
  46. package/dist/server/config/env.js.map +1 -1
  47. package/dist/server/config/opencode-base-url-resolver.d.ts +16 -0
  48. package/dist/server/config/opencode-base-url-resolver.js +154 -0
  49. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  50. package/dist/server/helpers/wechat-claw-runtime/main.d.ts +1 -0
  51. package/dist/server/helpers/wechat-claw-runtime/main.js +38 -0
  52. package/dist/server/helpers/wechat-claw-runtime/main.js.map +1 -0
  53. package/dist/server/helpers/wechat-claw-runtime/modules/errors.d.ts +5 -0
  54. package/dist/server/helpers/wechat-claw-runtime/modules/errors.js +32 -0
  55. package/dist/server/helpers/wechat-claw-runtime/modules/errors.js.map +1 -0
  56. package/dist/server/helpers/wechat-claw-runtime/modules/login-service.d.ts +16 -0
  57. package/dist/server/helpers/wechat-claw-runtime/modules/login-service.js +209 -0
  58. package/dist/server/helpers/wechat-claw-runtime/modules/login-service.js.map +1 -0
  59. package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.d.ts +18 -0
  60. package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.js +135 -0
  61. package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.js.map +1 -0
  62. package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.d.ts +34 -0
  63. package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.js +394 -0
  64. package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.js.map +1 -0
  65. package/dist/server/helpers/wechat-claw-runtime/modules/send-service.d.ts +9 -0
  66. package/dist/server/helpers/wechat-claw-runtime/modules/send-service.js +64 -0
  67. package/dist/server/helpers/wechat-claw-runtime/modules/send-service.js.map +1 -0
  68. package/dist/server/helpers/wechat-claw-runtime/modules/types.d.ts +167 -0
  69. package/dist/server/helpers/wechat-claw-runtime/modules/types.js +3 -0
  70. package/dist/server/helpers/wechat-claw-runtime/modules/types.js.map +1 -0
  71. package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.d.ts +34 -0
  72. package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.js +160 -0
  73. package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.js.map +1 -0
  74. package/dist/server/helpers/wechat-claw-runtime/routes/accounts.d.ts +9 -0
  75. package/dist/server/helpers/wechat-claw-runtime/routes/accounts.js +24 -0
  76. package/dist/server/helpers/wechat-claw-runtime/routes/accounts.js.map +1 -0
  77. package/dist/server/helpers/wechat-claw-runtime/server.d.ts +5 -0
  78. package/dist/server/helpers/wechat-claw-runtime/server.js +36 -0
  79. package/dist/server/helpers/wechat-claw-runtime/server.js.map +1 -0
  80. package/dist/server/middlewares/auth-guard.js +4 -1
  81. package/dist/server/middlewares/auth-guard.js.map +1 -1
  82. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +4 -1
  83. package/dist/server/modules/assistant-capability/assistant-capability-service.js +12 -1
  84. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  85. package/dist/server/modules/butler/butler-control-session-service.d.ts +20 -2
  86. package/dist/server/modules/butler/butler-control-session-service.js +121 -74
  87. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  88. package/dist/server/modules/butler/butler-profile-service.d.ts +3 -1
  89. package/dist/server/modules/butler/butler-profile-service.js +16 -4
  90. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  91. package/dist/server/modules/butler/butler-session-service.js +44 -15
  92. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  93. package/dist/server/modules/channels/channel-bridge-service.d.ts +55 -0
  94. package/dist/server/modules/channels/channel-bridge-service.js +340 -0
  95. package/dist/server/modules/channels/channel-bridge-service.js.map +1 -0
  96. package/dist/server/modules/channels/channel-controller.d.ts +52 -0
  97. package/dist/server/modules/channels/channel-controller.js +54 -0
  98. package/dist/server/modules/channels/channel-controller.js.map +1 -0
  99. package/dist/server/modules/channels/channel-delivery-service.d.ts +63 -0
  100. package/dist/server/modules/channels/channel-delivery-service.js +429 -0
  101. package/dist/server/modules/channels/channel-delivery-service.js.map +1 -0
  102. package/dist/server/modules/channels/channel-gateway-controller.d.ts +15 -0
  103. package/dist/server/modules/channels/channel-gateway-controller.js +16 -0
  104. package/dist/server/modules/channels/channel-gateway-controller.js.map +1 -0
  105. package/dist/server/modules/channels/channel-gateway-service.d.ts +24 -0
  106. package/dist/server/modules/channels/channel-gateway-service.js +56 -0
  107. package/dist/server/modules/channels/channel-gateway-service.js.map +1 -0
  108. package/dist/server/modules/channels/channel-platform-adapters.d.ts +46 -0
  109. package/dist/server/modules/channels/channel-platform-adapters.js +315 -0
  110. package/dist/server/modules/channels/channel-platform-adapters.js.map +1 -0
  111. package/dist/server/modules/channels/channel-platform-catalog.d.ts +3 -0
  112. package/dist/server/modules/channels/channel-platform-catalog.js +42 -0
  113. package/dist/server/modules/channels/channel-platform-catalog.js.map +1 -0
  114. package/dist/server/modules/channels/channel-polling-scheduler.d.ts +31 -0
  115. package/dist/server/modules/channels/channel-polling-scheduler.js +93 -0
  116. package/dist/server/modules/channels/channel-polling-scheduler.js.map +1 -0
  117. package/dist/server/modules/channels/channel-polling-service.d.ts +46 -0
  118. package/dist/server/modules/channels/channel-polling-service.js +176 -0
  119. package/dist/server/modules/channels/channel-polling-service.js.map +1 -0
  120. package/dist/server/modules/channels/channel-service.d.ts +108 -0
  121. package/dist/server/modules/channels/channel-service.js +397 -0
  122. package/dist/server/modules/channels/channel-service.js.map +1 -0
  123. package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
  124. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  125. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  126. package/dist/server/modules/channels/wechat-claw-runtime-boundary.d.ts +4 -0
  127. package/dist/server/modules/channels/wechat-claw-runtime-boundary.js +13 -0
  128. package/dist/server/modules/channels/wechat-claw-runtime-boundary.js.map +1 -0
  129. package/dist/server/modules/channels/wechat-claw-runtime-client.d.ts +14 -0
  130. package/dist/server/modules/channels/wechat-claw-runtime-client.js +95 -0
  131. package/dist/server/modules/channels/wechat-claw-runtime-client.js.map +1 -0
  132. package/dist/server/modules/channels/wechat-claw-runtime-manager.d.ts +16 -0
  133. package/dist/server/modules/channels/wechat-claw-runtime-manager.js +133 -0
  134. package/dist/server/modules/channels/wechat-claw-runtime-manager.js.map +1 -0
  135. package/dist/server/modules/channels/wechat-claw-runtime-types.d.ts +1 -0
  136. package/dist/server/modules/channels/wechat-claw-runtime-types.js +2 -0
  137. package/dist/server/modules/channels/wechat-claw-runtime-types.js.map +1 -0
  138. package/dist/server/modules/opencli/opencli-bridge-skill-service.d.ts +12 -0
  139. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +125 -0
  140. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -0
  141. package/dist/server/modules/opencli/opencli-catalog-service.d.ts +50 -0
  142. package/dist/server/modules/opencli/opencli-catalog-service.js +345 -0
  143. package/dist/server/modules/opencli/opencli-catalog-service.js.map +1 -0
  144. package/dist/server/modules/opencli/opencli-controller.d.ts +13 -0
  145. package/dist/server/modules/opencli/opencli-controller.js +30 -0
  146. package/dist/server/modules/opencli/opencli-controller.js.map +1 -0
  147. package/dist/server/modules/opencli/opencli-health-service.d.ts +28 -0
  148. package/dist/server/modules/opencli/opencli-health-service.js +106 -0
  149. package/dist/server/modules/opencli/opencli-health-service.js.map +1 -0
  150. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +23 -0
  151. package/dist/server/modules/opencli/opencli-install-discovery.js +130 -0
  152. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -0
  153. package/dist/server/modules/opencli/opencli-management-service.d.ts +59 -0
  154. package/dist/server/modules/opencli/opencli-management-service.js +152 -0
  155. package/dist/server/modules/opencli/opencli-management-service.js.map +1 -0
  156. package/dist/server/modules/opencli/opencli-runtime-builder.d.ts +11 -0
  157. package/dist/server/modules/opencli/opencli-runtime-builder.js +214 -0
  158. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -0
  159. package/dist/server/modules/opencli/opencli-runtime-layout.d.ts +3 -0
  160. package/dist/server/modules/opencli/opencli-runtime-layout.js +11 -0
  161. package/dist/server/modules/opencli/opencli-runtime-layout.js.map +1 -0
  162. package/dist/server/modules/opencli/opencli-runtime-profile-service.d.ts +29 -0
  163. package/dist/server/modules/opencli/opencli-runtime-profile-service.js +104 -0
  164. package/dist/server/modules/opencli/opencli-runtime-profile-service.js.map +1 -0
  165. package/dist/server/modules/opencli/opencli-runtime-resolver.d.ts +29 -0
  166. package/dist/server/modules/opencli/opencli-runtime-resolver.js +110 -0
  167. package/dist/server/modules/opencli/opencli-runtime-resolver.js.map +1 -0
  168. package/dist/server/modules/opencli/opencli-session-prompt-service.d.ts +11 -0
  169. package/dist/server/modules/opencli/opencli-session-prompt-service.js +66 -0
  170. package/dist/server/modules/opencli/opencli-session-prompt-service.js.map +1 -0
  171. package/dist/server/modules/provider/provider-catalog-service.d.ts +45 -0
  172. package/dist/server/modules/provider/provider-catalog-service.js +204 -0
  173. package/dist/server/modules/provider/provider-catalog-service.js.map +1 -0
  174. package/dist/server/modules/provider/provider-controller.d.ts +16 -2
  175. package/dist/server/modules/provider/provider-controller.js +49 -6
  176. package/dist/server/modules/provider/provider-controller.js.map +1 -1
  177. package/dist/server/modules/provider/provider-disabled.d.ts +8 -0
  178. package/dist/server/modules/provider/provider-disabled.js +45 -0
  179. package/dist/server/modules/provider/provider-disabled.js.map +1 -0
  180. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +1 -0
  181. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  182. package/dist/server/modules/provider/provider-discovery-helper-process.js +3 -3
  183. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  184. package/dist/server/modules/provider/provider-discovery-runtime.d.ts +1 -1
  185. package/dist/server/modules/provider/provider-discovery-runtime.js +12 -8
  186. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
  187. package/dist/server/modules/provider/provider-runtime-state-service.d.ts +24 -0
  188. package/dist/server/modules/provider/provider-runtime-state-service.js +141 -0
  189. package/dist/server/modules/provider/provider-runtime-state-service.js.map +1 -0
  190. package/dist/server/modules/sessions/claude-compatible-provider-registry.d.ts +16 -0
  191. package/dist/server/modules/sessions/claude-compatible-provider-registry.js +91 -0
  192. package/dist/server/modules/sessions/claude-compatible-provider-registry.js.map +1 -0
  193. package/dist/server/modules/sessions/session-history-service.d.ts +9 -3
  194. package/dist/server/modules/sessions/session-history-service.js +198 -62
  195. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  196. package/dist/server/modules/sessions/session-live-runtime-router-service.js +9 -4
  197. package/dist/server/modules/sessions/session-live-runtime-router-service.js.map +1 -1
  198. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -4
  199. package/dist/server/modules/sessions/session-live-runtime-service.js +99 -88
  200. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  201. package/dist/server/modules/sessions/session-permission-request-service.d.ts +5 -2
  202. package/dist/server/modules/sessions/session-permission-request-service.js +26 -27
  203. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  204. package/dist/server/modules/sessions/session-provider-config-service.d.ts +18 -1
  205. package/dist/server/modules/sessions/session-provider-config-service.js +142 -17
  206. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  207. package/dist/server/modules/sessions/session-provider-error-mapper.js +7 -0
  208. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  209. package/dist/server/modules/skills/skill-manager-service.d.ts +5 -0
  210. package/dist/server/modules/skills/skill-manager-service.js +26 -0
  211. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  212. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +1 -0
  213. package/dist/server/modules/tasks/task-helper-process-handlers.js +1 -1
  214. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  215. package/dist/server/modules/tasks/task-types.d.ts +2 -0
  216. package/dist/server/modules/tasks/task-types.js +2 -0
  217. package/dist/server/modules/tasks/task-types.js.map +1 -1
  218. package/dist/server/routes/channels.d.ts +3 -0
  219. package/dist/server/routes/channels.js +16 -0
  220. package/dist/server/routes/channels.js.map +1 -0
  221. package/dist/server/routes/opencli.d.ts +3 -0
  222. package/dist/server/routes/opencli.js +7 -0
  223. package/dist/server/routes/opencli.js.map +1 -0
  224. package/dist/server/routes/providers.js +5 -2
  225. package/dist/server/routes/providers.js.map +1 -1
  226. package/dist/server/routes/public.d.ts +2 -1
  227. package/dist/server/routes/public.js +3 -1
  228. package/dist/server/routes/public.js.map +1 -1
  229. package/dist/server/server/create-server.d.ts +30 -0
  230. package/dist/server/server/create-server.js +104 -12
  231. package/dist/server/server/create-server.js.map +1 -1
  232. package/dist/server/shared/http/error-handler.js +59 -3
  233. package/dist/server/shared/http/error-handler.js.map +1 -1
  234. package/dist/server/storage/repositories/channel-account-repository.d.ts +12 -0
  235. package/dist/server/storage/repositories/channel-account-repository.js +153 -0
  236. package/dist/server/storage/repositories/channel-account-repository.js.map +1 -0
  237. package/dist/server/storage/repositories/channel-delivery-repository.d.ts +13 -0
  238. package/dist/server/storage/repositories/channel-delivery-repository.js +156 -0
  239. package/dist/server/storage/repositories/channel-delivery-repository.js.map +1 -0
  240. package/dist/server/storage/repositories/channel-inbound-event-repository.d.ts +12 -0
  241. package/dist/server/storage/repositories/channel-inbound-event-repository.js +144 -0
  242. package/dist/server/storage/repositories/channel-inbound-event-repository.js.map +1 -0
  243. package/dist/server/storage/repositories/channel-thread-repository.d.ts +12 -0
  244. package/dist/server/storage/repositories/channel-thread-repository.js +152 -0
  245. package/dist/server/storage/repositories/channel-thread-repository.js.map +1 -0
  246. package/dist/server/storage/repositories/opencli-catalog-entry-repository.d.ts +9 -0
  247. package/dist/server/storage/repositories/opencli-catalog-entry-repository.js +85 -0
  248. package/dist/server/storage/repositories/opencli-catalog-entry-repository.js.map +1 -0
  249. package/dist/server/storage/repositories/opencli-provider-repository.d.ts +8 -0
  250. package/dist/server/storage/repositories/opencli-provider-repository.js +88 -0
  251. package/dist/server/storage/repositories/opencli-provider-repository.js.map +1 -0
  252. package/dist/server/storage/repositories/opencli-runtime-profile-repository.d.ts +11 -0
  253. package/dist/server/storage/repositories/opencli-runtime-profile-repository.js +127 -0
  254. package/dist/server/storage/repositories/opencli-runtime-profile-repository.js.map +1 -0
  255. package/dist/server/storage/repositories/provider-control-repository.d.ts +9 -0
  256. package/dist/server/storage/repositories/provider-control-repository.js +51 -0
  257. package/dist/server/storage/repositories/provider-control-repository.js.map +1 -0
  258. package/dist/server/storage/repositories/provider-runtime-state-repository.d.ts +9 -0
  259. package/dist/server/storage/repositories/provider-runtime-state-repository.js +50 -0
  260. package/dist/server/storage/repositories/provider-runtime-state-repository.js.map +1 -0
  261. package/dist/server/storage/sqlite/client.js +53 -0
  262. package/dist/server/storage/sqlite/client.js.map +1 -1
  263. package/dist/server/storage/sqlite/schema.sql +180 -0
  264. package/dist/server/types/domain.d.ts +132 -0
  265. package/dist/server/ws/workbench-ws-hub.js +8 -2
  266. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  267. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +28 -11
  268. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  269. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +61 -8
  270. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  271. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +5 -0
  272. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +1 -1
  273. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +1 -1
  274. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +3 -0
  275. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +94 -21
  276. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  277. package/package.json +1 -1
  278. package/dist/public/assets/AdaptiveButlerPage-Dw72U3hG.js +0 -3
  279. package/dist/public/assets/ConversationPage-8wOY7SX-.js +0 -4
  280. package/dist/public/assets/SessionIndexPage-B-tRhBXC.js +0 -1
  281. package/dist/public/assets/SettingsPage-C9LGxSQZ.js +0 -1
  282. package/dist/public/assets/WorkbenchLayout-pOZvEqp7.js +0 -3
  283. package/dist/public/assets/WorkbenchModal-ColqvV6a.js +0 -1
  284. package/dist/public/assets/WorkbenchShellRoute-C0_h4lP6.js +0 -1
  285. package/dist/public/assets/file-tree-icon-Bp3Ntt7u.js +0 -31
  286. package/dist/public/assets/index-B84Po2NA.css +0 -1
  287. package/dist/public/assets/index-C-0oeG_5.js +0 -42
  288. package/dist/public/assets/model-switch-api-Bh9nYslz.js +0 -1
  289. package/dist/public/assets/session-runtime-machine-YN84QBlr.js +0 -21
  290. package/dist/public/assets/styles-CsEMfdaS.css +0 -1
  291. /package/dist/public/assets/{styles-DRVvx_kv.js → styles-lhQGDlPF.js} +0 -0
@@ -0,0 +1,245 @@
1
+ import { randomInt } from "node:crypto";
2
+ import { AppError } from "../../shared/errors/app-error.js";
3
+ const WECHAT_CLAW_FIXED_BASE_URL = "https://ilinkai.weixin.qq.com";
4
+ const WECHAT_CLAW_BOT_TYPE = "3";
5
+ const WECHAT_CLAW_APP_ID = "bot";
6
+ const WECHAT_CLAW_APP_CLIENT_VERSION = String(0x00020107);
7
+ export async function startWechatClawLogin() {
8
+ const payload = await fetchWechatClawJson(`${WECHAT_CLAW_FIXED_BASE_URL}/ilink/bot/get_bot_qrcode?bot_type=${encodeURIComponent(WECHAT_CLAW_BOT_TYPE)}`);
9
+ const qrcode = readBodyText(payload, "qrcode");
10
+ if (!qrcode) {
11
+ throw platformRequestFailed("微信 claw 登录二维码响应缺少 qrcode");
12
+ }
13
+ return {
14
+ sessionKey: qrcode,
15
+ qrcode,
16
+ qrcodeUrl: readBodyText(payload, "qrcode_img_content"),
17
+ status: "waiting_scan"
18
+ };
19
+ }
20
+ export async function pollWechatClawLoginStatus(options) {
21
+ const payload = await fetchWechatClawJson(`${normalizeWechatClawBaseUrl(options.authBaseUrl)}/ilink/bot/get_qrcode_status?qrcode=${encodeURIComponent(options.qrcode)}`);
22
+ const rawStatus = readBodyText(payload, "status");
23
+ switch (rawStatus) {
24
+ case "wait":
25
+ return createWechatClawPollLoginResult("waiting_scan");
26
+ case "scaned":
27
+ return createWechatClawPollLoginResult("scan_confirmed");
28
+ case "expired":
29
+ return createWechatClawPollLoginResult("expired");
30
+ case "scaned_but_redirect":
31
+ return {
32
+ ...createWechatClawPollLoginResult("scan_confirmed"),
33
+ redirectHost: readBodyText(payload, "redirect_host")
34
+ };
35
+ case "confirmed":
36
+ return {
37
+ status: "active",
38
+ botToken: readBodyText(payload, "bot_token"),
39
+ baseUrl: readBodyText(payload, "baseurl") ?? normalizeWechatClawBaseUrl(options.authBaseUrl),
40
+ remoteBotId: readBodyText(payload, "ilink_bot_id"),
41
+ boundUserId: readBodyText(payload, "ilink_user_id"),
42
+ redirectHost: null
43
+ };
44
+ default:
45
+ throw platformRequestFailed(`微信 claw 登录状态无法识别:${rawStatus ?? "unknown"}`);
46
+ }
47
+ }
48
+ export async function pollWechatClawMessages(options) {
49
+ const payload = ensurePlainObject(await fetchJson(`${normalizeWechatClawBaseUrl(options.baseUrl)}/ilink/bot/getupdates`, {
50
+ method: "POST",
51
+ headers: buildWechatClawHeaders(options.botToken),
52
+ body: JSON.stringify({
53
+ base_info: {
54
+ channel_version: "2.0.0"
55
+ },
56
+ get_updates_buf: options.cursor ?? "",
57
+ timeout: Math.max(options.timeoutMs ?? 0, 0),
58
+ max_items: 50
59
+ })
60
+ }), "wechat claw getupdates response");
61
+ const errorCode = readBodyInteger(payload, "errcode");
62
+ if (errorCode === -14) {
63
+ throw platformLoginExpired("个人微信(claw)登录已失效,请重新扫码绑定");
64
+ }
65
+ if (typeof errorCode === "number" && errorCode !== 0) {
66
+ throw platformRequestFailed(`微信 claw 拉取消息失败:${readBodyText(payload, "errmsg") ?? `errcode=${errorCode}`}`);
67
+ }
68
+ const cursor = readBodyText(payload, "get_updates_buf")
69
+ ?? readBodyText(payload, "next_cursor")
70
+ ?? readBodyText(payload, "sync_buf");
71
+ const items = Array.isArray(payload.msgs)
72
+ ? payload.msgs
73
+ : Array.isArray(payload.messages)
74
+ ? payload.messages
75
+ : Array.isArray(payload.msg_list)
76
+ ? payload.msg_list
77
+ : [];
78
+ return {
79
+ nextCursor: cursor,
80
+ longPollingTimeoutMs: readBodyInteger(payload, "longpolling_timeout_ms"),
81
+ messages: items
82
+ .map((item) => parseWechatClawInboundMessage(item))
83
+ .filter((item) => item !== null)
84
+ };
85
+ }
86
+ export async function sendWechatClawText(options) {
87
+ const payload = ensurePlainObject(await fetchJson(`${normalizeWechatClawBaseUrl(options.baseUrl)}/ilink/bot/sendmessage`, {
88
+ method: "POST",
89
+ headers: buildWechatClawHeaders(options.botToken),
90
+ body: JSON.stringify({
91
+ to_user_id: options.toUserId,
92
+ context_token: options.contextToken,
93
+ item_list: [
94
+ {
95
+ type: "text",
96
+ text_item: {
97
+ text: options.text
98
+ }
99
+ }
100
+ ]
101
+ })
102
+ }), "wechat claw sendmessage response");
103
+ return {
104
+ messageRef: readBodyText(payload, "message_id") ?? readBodyText(payload, "msg_id")
105
+ };
106
+ }
107
+ export function normalizeWechatClawBaseUrl(value) {
108
+ const normalized = value?.trim();
109
+ return normalized && normalized.length > 0 ? normalized : WECHAT_CLAW_FIXED_BASE_URL;
110
+ }
111
+ function createWechatClawPollLoginResult(status) {
112
+ return {
113
+ status,
114
+ botToken: null,
115
+ baseUrl: null,
116
+ remoteBotId: null,
117
+ boundUserId: null,
118
+ redirectHost: null
119
+ };
120
+ }
121
+ function buildWechatClawHeaders(botToken) {
122
+ return {
123
+ authorization: `Bearer ${botToken}`,
124
+ authorizationtype: "ilink_bot_token",
125
+ "content-type": "application/json",
126
+ "ilink-app-id": WECHAT_CLAW_APP_ID,
127
+ "ilink-app-clientversion": WECHAT_CLAW_APP_CLIENT_VERSION,
128
+ "x-wechat-uin": Buffer.from(String(randomInt(1, 0xffffffff))).toString("base64")
129
+ };
130
+ }
131
+ function parseWechatClawInboundMessage(value) {
132
+ const payload = ensurePlainObject(value, "wechat claw message");
133
+ const text = extractWechatClawText(payload);
134
+ const fromUserId = readBodyText(payload, "from_user_id");
135
+ if (!text || !fromUserId) {
136
+ return null;
137
+ }
138
+ return {
139
+ messageId: readBodyText(payload, "message_id")
140
+ ?? readBodyText(payload, "msg_id")
141
+ ?? `wechat-claw:${Date.now()}:${Math.random().toString(16).slice(2, 10)}`,
142
+ fromUserId,
143
+ toUserId: readBodyText(payload, "to_user_id"),
144
+ text,
145
+ timestamp: readBodyText(payload, "timestamp"),
146
+ contextToken: readBodyText(payload, "context_token"),
147
+ rawPayload: payload
148
+ };
149
+ }
150
+ function extractWechatClawText(payload) {
151
+ const itemList = payload.item_list;
152
+ if (!Array.isArray(itemList)) {
153
+ return null;
154
+ }
155
+ for (const item of itemList) {
156
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
157
+ continue;
158
+ }
159
+ const entry = item;
160
+ if (readBodyText(entry, "type") !== "text") {
161
+ continue;
162
+ }
163
+ const textItem = ensurePlainObject(entry.text_item ?? {}, "wechat claw text_item");
164
+ const text = readBodyText(textItem, "text");
165
+ if (text) {
166
+ return text;
167
+ }
168
+ }
169
+ return null;
170
+ }
171
+ async function fetchWechatClawJson(url) {
172
+ return ensurePlainObject(await fetchJson(url), "wechat claw response");
173
+ }
174
+ async function fetchJson(url, init) {
175
+ const response = await fetch(url, init);
176
+ const text = await response.text();
177
+ const payload = text ? safeJsonParse(text) : null;
178
+ if (!response.ok) {
179
+ throw new AppError({
180
+ statusCode: 502,
181
+ errorCode: "CHANNEL_PLATFORM_REQUEST_FAILED",
182
+ detail: `请求 ${url} 失败:${response.status} ${response.statusText}`
183
+ });
184
+ }
185
+ return payload;
186
+ }
187
+ function safeJsonParse(text) {
188
+ try {
189
+ return JSON.parse(text);
190
+ }
191
+ catch {
192
+ return {
193
+ raw: text
194
+ };
195
+ }
196
+ }
197
+ function ensurePlainObject(value, field) {
198
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
199
+ throw platformRequestFailed(`${field} 必须是对象`);
200
+ }
201
+ return value;
202
+ }
203
+ function readBodyText(source, key) {
204
+ if (!source || typeof source !== "object" || Array.isArray(source)) {
205
+ return null;
206
+ }
207
+ const value = source[key];
208
+ if (typeof value === "string") {
209
+ const normalized = value.trim();
210
+ return normalized.length > 0 ? normalized : null;
211
+ }
212
+ if (typeof value === "number" && Number.isFinite(value)) {
213
+ return String(value);
214
+ }
215
+ return null;
216
+ }
217
+ function readBodyInteger(source, key) {
218
+ if (!source || typeof source !== "object" || Array.isArray(source)) {
219
+ return null;
220
+ }
221
+ const value = source[key];
222
+ if (typeof value === "number" && Number.isFinite(value)) {
223
+ return Math.trunc(value);
224
+ }
225
+ if (typeof value === "string") {
226
+ const parsed = Number.parseInt(value.trim(), 10);
227
+ return Number.isFinite(parsed) ? parsed : null;
228
+ }
229
+ return null;
230
+ }
231
+ function platformRequestFailed(detail) {
232
+ return new AppError({
233
+ statusCode: 502,
234
+ errorCode: "CHANNEL_PLATFORM_REQUEST_FAILED",
235
+ detail
236
+ });
237
+ }
238
+ function platformLoginExpired(detail) {
239
+ return new AppError({
240
+ statusCode: 401,
241
+ errorCode: "CHANNEL_PLATFORM_LOGIN_EXPIRED",
242
+ detail
243
+ });
244
+ }
245
+ //# sourceMappingURL=wechat-claw-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat-claw-client.js","sourceRoot":"","sources":["../../../../src/modules/channels/wechat-claw-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { AppError } from "../../shared/errors/app-error.js";
2
+ export declare const WECHAT_CLAW_RUNTIME_REQUIRED_DETAIL = "\u5F53\u524D\u9879\u76EE\u8FD8\u6CA1\u6709\u628A\u4E2A\u4EBA\u5FAE\u4FE1\uFF08claw\uFF09helper \u63A5\u8FDB Host\uFF0CHost \u4E0D\u80FD\u76F4\u63A5\u627F\u62C5\u626B\u7801\u7ED1\u5B9A\u3001\u8F6E\u8BE2\u6536\u4FE1\u548C\u6D88\u606F\u56DE\u53D1\u3002";
3
+ export declare function createWechatClawRuntimeRequiredError(): AppError;
4
+ export declare function isWechatClawRuntimeIntegrated(runtimeClient: unknown): boolean;
@@ -0,0 +1,13 @@
1
+ import { AppError } from "../../shared/errors/app-error.js";
2
+ export const WECHAT_CLAW_RUNTIME_REQUIRED_DETAIL = "当前项目还没有把个人微信(claw)helper 接进 Host,Host 不能直接承担扫码绑定、轮询收信和消息回发。";
3
+ export function createWechatClawRuntimeRequiredError() {
4
+ return new AppError({
5
+ statusCode: 501,
6
+ errorCode: "CHANNEL_PLATFORM_RUNTIME_REQUIRED",
7
+ detail: WECHAT_CLAW_RUNTIME_REQUIRED_DETAIL
8
+ });
9
+ }
10
+ export function isWechatClawRuntimeIntegrated(runtimeClient) {
11
+ return Boolean(runtimeClient);
12
+ }
13
+ //# sourceMappingURL=wechat-claw-runtime-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat-claw-runtime-boundary.js","sourceRoot":"","sources":["../../../../src/modules/channels/wechat-claw-runtime-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE5D,MAAM,CAAC,MAAM,mCAAmC,GAC9C,6DAA6D,CAAC;AAEhE,MAAM,UAAU,oCAAoC;IAClD,OAAO,IAAI,QAAQ,CAAC;QAClB,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,mCAAmC;QAC9C,MAAM,EAAE,mCAAmC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,aAAsB;IAClE,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ChannelAccount, ChannelThread } from "../../types/domain.js";
2
+ import type { WechatClawRuntimeLoginActionResult, WechatClawRuntimeLoginStatusResult, WechatClawRuntimeLogoutResult, WechatClawRuntimePollResult, WechatClawRuntimeProbeResult, WechatClawRuntimeSendResult } from "./wechat-claw-runtime-types.js";
3
+ import type { WechatClawRuntimeManager } from "./wechat-claw-runtime-manager.js";
4
+ export declare class WechatClawRuntimeClient {
5
+ private readonly manager;
6
+ constructor(manager: WechatClawRuntimeManager);
7
+ startLogin(account: ChannelAccount): Promise<WechatClawRuntimeLoginActionResult>;
8
+ getLoginStatus(accountId: string): Promise<WechatClawRuntimeLoginStatusResult>;
9
+ probe(account: ChannelAccount): Promise<WechatClawRuntimeProbeResult>;
10
+ poll(account: ChannelAccount): Promise<WechatClawRuntimePollResult>;
11
+ sendText(account: ChannelAccount, thread: ChannelThread, text: string): Promise<WechatClawRuntimeSendResult>;
12
+ logout(accountId: string): Promise<WechatClawRuntimeLogoutResult>;
13
+ private request;
14
+ }
@@ -0,0 +1,95 @@
1
+ import { AppError } from "../../shared/errors/app-error.js";
2
+ export class WechatClawRuntimeClient {
3
+ manager;
4
+ constructor(manager) {
5
+ this.manager = manager;
6
+ }
7
+ async startLogin(account) {
8
+ return await this.request(`/accounts/${account.id}/start-login`, {
9
+ method: "POST",
10
+ body: JSON.stringify({
11
+ config: account.config
12
+ })
13
+ });
14
+ }
15
+ async getLoginStatus(accountId) {
16
+ return await this.request(`/accounts/${accountId}/login-status`, {
17
+ method: "GET"
18
+ });
19
+ }
20
+ async probe(account) {
21
+ return await this.request(`/accounts/${account.id}/probe`, {
22
+ method: "POST",
23
+ body: JSON.stringify({
24
+ config: account.config
25
+ })
26
+ });
27
+ }
28
+ async poll(account) {
29
+ return await this.request(`/accounts/${account.id}/poll`, {
30
+ method: "POST",
31
+ body: JSON.stringify({
32
+ config: account.config
33
+ })
34
+ });
35
+ }
36
+ async sendText(account, thread, text) {
37
+ const payload = {
38
+ externalConversationKey: thread.externalConversationKey,
39
+ externalUserId: thread.externalUserId,
40
+ lastTransportContext: thread.lastTransportContext
41
+ };
42
+ return await this.request(`/accounts/${account.id}/send`, {
43
+ method: "POST",
44
+ body: JSON.stringify({
45
+ config: account.config,
46
+ thread: payload,
47
+ text
48
+ })
49
+ });
50
+ }
51
+ async logout(accountId) {
52
+ return await this.request(`/accounts/${accountId}/logout`, {
53
+ method: "POST"
54
+ });
55
+ }
56
+ async request(pathname, input) {
57
+ const runtime = await this.manager.ensureReady();
58
+ const response = await fetch(`${runtime.baseUrl}${pathname}`, {
59
+ method: input.method,
60
+ headers: {
61
+ ...(input.body ? { "content-type": "application/json" } : {}),
62
+ "x-codingns-helper-token": runtime.authToken
63
+ },
64
+ body: input.body
65
+ });
66
+ const text = await response.text();
67
+ if (!response.ok) {
68
+ throw parseRuntimeError(text, response.status);
69
+ }
70
+ return text.trim().length > 0 ? JSON.parse(text) : {};
71
+ }
72
+ }
73
+ function parseRuntimeError(body, statusCode) {
74
+ try {
75
+ const payload = JSON.parse(body);
76
+ if (payload.error_code && payload.detail) {
77
+ return new AppError({
78
+ statusCode,
79
+ errorCode: payload.error_code,
80
+ detail: payload.detail,
81
+ field: payload.field,
82
+ data: payload.data
83
+ });
84
+ }
85
+ }
86
+ catch {
87
+ // ignore
88
+ }
89
+ return new AppError({
90
+ statusCode,
91
+ errorCode: "WECHAT_CLAW_RUNTIME_REQUEST_FAILED",
92
+ detail: body.trim() || "wechat claw helper 请求失败"
93
+ });
94
+ }
95
+ //# sourceMappingURL=wechat-claw-runtime-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat-claw-runtime-client.js","sourceRoot":"","sources":["../../../../src/modules/channels/wechat-claw-runtime-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare class WechatClawRuntimeManager {
2
+ private readonly runtimeRootDir;
3
+ private child;
4
+ private stdoutReader;
5
+ private readyPromise;
6
+ private currentRuntime;
7
+ private disposed;
8
+ private readonly authToken;
9
+ constructor(runtimeRootDir: string);
10
+ ensureReady(): Promise<{
11
+ baseUrl: string;
12
+ authToken: string;
13
+ }>;
14
+ dispose(): void;
15
+ private startProcess;
16
+ }
@@ -0,0 +1,133 @@
1
+ import crypto from "node:crypto";
2
+ import { spawn } from "node:child_process";
3
+ import path from "node:path";
4
+ import readline from "node:readline";
5
+ import { fileURLToPath } from "node:url";
6
+ export class WechatClawRuntimeManager {
7
+ runtimeRootDir;
8
+ child = null;
9
+ stdoutReader = null;
10
+ readyPromise = null;
11
+ currentRuntime = null;
12
+ disposed = false;
13
+ authToken = crypto.randomUUID();
14
+ constructor(runtimeRootDir) {
15
+ this.runtimeRootDir = runtimeRootDir;
16
+ }
17
+ async ensureReady() {
18
+ if (this.currentRuntime) {
19
+ return this.currentRuntime;
20
+ }
21
+ if (this.readyPromise) {
22
+ return await this.readyPromise;
23
+ }
24
+ this.readyPromise = this.startProcess();
25
+ try {
26
+ const runtime = await this.readyPromise;
27
+ this.currentRuntime = runtime;
28
+ return runtime;
29
+ }
30
+ finally {
31
+ this.readyPromise = null;
32
+ }
33
+ }
34
+ dispose() {
35
+ this.disposed = true;
36
+ this.stdoutReader?.close();
37
+ this.stdoutReader = null;
38
+ if (this.child && !this.child.killed) {
39
+ this.child.kill("SIGTERM");
40
+ }
41
+ this.child = null;
42
+ this.currentRuntime = null;
43
+ }
44
+ async startProcess() {
45
+ if (this.disposed) {
46
+ throw new Error("wechat claw helper 已关闭");
47
+ }
48
+ const launch = resolveHelperLaunch();
49
+ const child = spawn(launch.command, [
50
+ ...launch.args,
51
+ "--runtime-root-dir",
52
+ this.runtimeRootDir,
53
+ "--auth-token",
54
+ this.authToken
55
+ ], {
56
+ cwd: process.cwd(),
57
+ env: process.env,
58
+ stdio: ["ignore", "pipe", "pipe"]
59
+ });
60
+ const stdoutReader = readline.createInterface({
61
+ input: child.stdout
62
+ });
63
+ this.child = child;
64
+ this.stdoutReader = stdoutReader;
65
+ child.stderr.on("data", (chunk) => {
66
+ const content = String(chunk).trim();
67
+ if (content) {
68
+ console.warn(`[wechat-claw-helper] ${content}`);
69
+ }
70
+ });
71
+ child.on("exit", () => {
72
+ this.currentRuntime = null;
73
+ this.child = null;
74
+ this.stdoutReader?.close();
75
+ this.stdoutReader = null;
76
+ });
77
+ return await new Promise((resolve, reject) => {
78
+ const onError = (error) => {
79
+ cleanup();
80
+ reject(error);
81
+ };
82
+ const onExit = (code, signal) => {
83
+ cleanup();
84
+ reject(new Error(`wechat claw helper 启动失败:code=${code ?? "null"} signal=${signal ?? "null"}`));
85
+ };
86
+ const onLine = (line) => {
87
+ const trimmed = line.trim();
88
+ if (!trimmed.startsWith("{")) {
89
+ return;
90
+ }
91
+ let payload;
92
+ try {
93
+ payload = JSON.parse(trimmed);
94
+ }
95
+ catch {
96
+ return;
97
+ }
98
+ if (payload.type !== "ready" || !Number.isFinite(payload.port) || payload.port <= 0) {
99
+ return;
100
+ }
101
+ cleanup();
102
+ resolve({
103
+ baseUrl: `http://127.0.0.1:${payload.port}`,
104
+ authToken: this.authToken
105
+ });
106
+ };
107
+ const cleanup = () => {
108
+ stdoutReader.off("line", onLine);
109
+ child.off("error", onError);
110
+ child.off("exit", onExit);
111
+ };
112
+ child.once("error", onError);
113
+ child.once("exit", onExit);
114
+ stdoutReader.on("line", onLine);
115
+ });
116
+ }
117
+ }
118
+ function resolveHelperLaunch() {
119
+ const currentFilePath = fileURLToPath(import.meta.url);
120
+ const extension = path.extname(currentFilePath);
121
+ const helperPath = path.resolve(path.dirname(currentFilePath), "../../helpers/wechat-claw-runtime/main" + extension);
122
+ if (extension === ".ts") {
123
+ return {
124
+ command: process.execPath,
125
+ args: ["--import", "tsx", helperPath]
126
+ };
127
+ }
128
+ return {
129
+ command: process.execPath,
130
+ args: [helperPath]
131
+ };
132
+ }
133
+ //# sourceMappingURL=wechat-claw-runtime-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat-claw-runtime-manager.js","sourceRoot":"","sources":["../../../../src/modules/channels/wechat-claw-runtime-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export type { WechatClawRuntimeAccountConfig, WechatClawRuntimeInboundMessage, WechatClawRuntimeLoginActionResult, WechatClawRuntimeLoginStatus, WechatClawRuntimeLoginStatusResult, WechatClawRuntimePollResult, WechatClawRuntimeProbeResult, WechatClawRuntimeSendResult, WechatClawRuntimeSessionView, WechatClawRuntimeThreadPayload, WechatClawRuntimeLogoutResult } from "../../helpers/wechat-claw-runtime/modules/types.js";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wechat-claw-runtime-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat-claw-runtime-types.js","sourceRoot":"","sources":["../../../../src/modules/channels/wechat-claw-runtime-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { SessionBinding } from "../../types/domain.js";
2
+ import type { OpenCliCatalogEntryRepository } from "../../storage/repositories/opencli-catalog-entry-repository.js";
3
+ import type { OpenCliProviderRepository } from "../../storage/repositories/opencli-provider-repository.js";
4
+ export declare class OpenCliBridgeSkillService {
5
+ private readonly providerRepository;
6
+ private readonly catalogEntryRepository;
7
+ constructor(providerRepository: Pick<OpenCliProviderRepository, "get">, catalogEntryRepository: Pick<OpenCliCatalogEntryRepository, "list">);
8
+ supportsProvider(provider: SessionBinding["provider"]): boolean;
9
+ hasEnabledCommands(): boolean;
10
+ syncRuntimeSkill(provider: SessionBinding["provider"], runtimeHomeDir: string): void;
11
+ removeRuntimeSkill(provider: SessionBinding["provider"], runtimeHomeDir: string): void;
12
+ }