@seawork/server 1.0.22 → 2.0.2-rc.6

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 (349) hide show
  1. package/dist/scripts/supervisor-entrypoint.js +48 -8
  2. package/dist/scripts/supervisor-entrypoint.js.map +1 -1
  3. package/dist/scripts/supervisor-native-classifier.js +77 -5
  4. package/dist/scripts/supervisor-native-classifier.js.map +1 -1
  5. package/dist/scripts/supervisor-stdio-tail.js +27 -0
  6. package/dist/scripts/supervisor-stdio-tail.js.map +1 -0
  7. package/dist/scripts/supervisor.js +12 -0
  8. package/dist/scripts/supervisor.js.map +1 -1
  9. package/dist/server/client/daemon-client.d.ts +142 -2
  10. package/dist/server/client/daemon-client.d.ts.map +1 -1
  11. package/dist/server/client/daemon-client.js +384 -3
  12. package/dist/server/client/daemon-client.js.map +1 -1
  13. package/dist/server/server/agent/agent-manager.d.ts +55 -3
  14. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  15. package/dist/server/server/agent/agent-manager.js +324 -45
  16. package/dist/server/server/agent/agent-manager.js.map +1 -1
  17. package/dist/server/server/agent/agent-metadata-generator.d.ts +1 -0
  18. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  19. package/dist/server/server/agent/agent-metadata-generator.js +8 -0
  20. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  21. package/dist/server/server/agent/agent-projections.js +7 -2
  22. package/dist/server/server/agent/agent-projections.js.map +1 -1
  23. package/dist/server/server/agent/agent-response-loop.d.ts +3 -1
  24. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-response-loop.js +33 -6
  26. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  27. package/dist/server/server/agent/agent-sdk-types.d.ts +43 -1
  28. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  29. package/dist/server/server/agent/claude-memory.d.ts +4 -0
  30. package/dist/server/server/agent/claude-memory.d.ts.map +1 -0
  31. package/dist/server/server/agent/claude-memory.js +97 -0
  32. package/dist/server/server/agent/claude-memory.js.map +1 -0
  33. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  34. package/dist/server/server/agent/mcp-server.js +247 -0
  35. package/dist/server/server/agent/mcp-server.js.map +1 -1
  36. package/dist/server/server/agent/mcp-shared.d.ts +2 -0
  37. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  38. package/dist/server/server/agent/provider-launch-config.d.ts +6 -139
  39. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  40. package/dist/server/server/agent/provider-launch-config.js +65 -33
  41. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  42. package/dist/server/server/agent/provider-manifest.d.ts +1 -0
  43. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  44. package/dist/server/server/agent/provider-manifest.js +36 -0
  45. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  46. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  47. package/dist/server/server/agent/provider-registry.js +4 -0
  48. package/dist/server/server/agent/provider-registry.js.map +1 -1
  49. package/dist/server/server/agent/provider-snapshot-manager.d.ts +3 -1
  50. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  51. package/dist/server/server/agent/provider-snapshot-manager.js +13 -0
  52. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  53. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  54. package/dist/server/server/agent/providers/claude-agent.js +141 -27
  55. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  56. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  57. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +14 -1
  58. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  59. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +132 -4
  60. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  61. package/dist/server/server/agent/providers/codex-app-server-agent.js +2233 -163
  62. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  63. package/dist/server/server/agent/providers/codex-binary-resolver.d.ts +9 -0
  64. package/dist/server/server/agent/providers/codex-binary-resolver.d.ts.map +1 -1
  65. package/dist/server/server/agent/providers/codex-binary-resolver.js +35 -14
  66. package/dist/server/server/agent/providers/codex-binary-resolver.js.map +1 -1
  67. package/dist/server/server/agent/providers/codex-health-probe.js +1 -1
  68. package/dist/server/server/agent/providers/codex-health-probe.js.map +1 -1
  69. package/dist/server/server/agent/providers/deepseek/constants.d.ts +4 -0
  70. package/dist/server/server/agent/providers/deepseek/constants.d.ts.map +1 -0
  71. package/dist/server/server/agent/providers/deepseek/constants.js +11 -0
  72. package/dist/server/server/agent/providers/deepseek/constants.js.map +1 -0
  73. package/dist/server/server/agent/providers/deepseek/event-mapper.d.ts +21 -0
  74. package/dist/server/server/agent/providers/deepseek/event-mapper.d.ts.map +1 -0
  75. package/dist/server/server/agent/providers/deepseek/event-mapper.js +286 -0
  76. package/dist/server/server/agent/providers/deepseek/event-mapper.js.map +1 -0
  77. package/dist/server/server/agent/providers/deepseek/serve-client.d.ts +94 -0
  78. package/dist/server/server/agent/providers/deepseek/serve-client.d.ts.map +1 -0
  79. package/dist/server/server/agent/providers/deepseek/serve-client.js +142 -0
  80. package/dist/server/server/agent/providers/deepseek/serve-client.js.map +1 -0
  81. package/dist/server/server/agent/providers/deepseek/serve-process.d.ts +18 -0
  82. package/dist/server/server/agent/providers/deepseek/serve-process.d.ts.map +1 -0
  83. package/dist/server/server/agent/providers/deepseek/serve-process.js +93 -0
  84. package/dist/server/server/agent/providers/deepseek/serve-process.js.map +1 -0
  85. package/dist/server/server/agent/providers/deepseek-agent.d.ts +94 -0
  86. package/dist/server/server/agent/providers/deepseek-agent.d.ts.map +1 -0
  87. package/dist/server/server/agent/providers/deepseek-agent.js +811 -0
  88. package/dist/server/server/agent/providers/deepseek-agent.js.map +1 -0
  89. package/dist/server/server/agent/providers/gateway-telemetry.d.ts +9 -0
  90. package/dist/server/server/agent/providers/gateway-telemetry.d.ts.map +1 -0
  91. package/dist/server/server/agent/providers/gateway-telemetry.js +36 -0
  92. package/dist/server/server/agent/providers/gateway-telemetry.js.map +1 -0
  93. package/dist/server/server/agent/providers/seaagent/constants.d.ts +3 -0
  94. package/dist/server/server/agent/providers/seaagent/constants.d.ts.map +1 -0
  95. package/dist/server/server/agent/providers/seaagent/constants.js +3 -0
  96. package/dist/server/server/agent/providers/seaagent/constants.js.map +1 -0
  97. package/dist/server/server/agent/providers/seaagent/event-mapper.d.ts +3 -0
  98. package/dist/server/server/agent/providers/seaagent/event-mapper.d.ts.map +1 -0
  99. package/dist/server/server/agent/providers/seaagent/event-mapper.js +69 -0
  100. package/dist/server/server/agent/providers/seaagent/event-mapper.js.map +1 -0
  101. package/dist/server/server/agent/providers/seaagent/rpc-client.d.ts +23 -0
  102. package/dist/server/server/agent/providers/seaagent/rpc-client.d.ts.map +1 -0
  103. package/dist/server/server/agent/providers/seaagent/rpc-client.js +139 -0
  104. package/dist/server/server/agent/providers/seaagent/rpc-client.js.map +1 -0
  105. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.d.ts +3 -0
  106. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.d.ts.map +1 -0
  107. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.js +38 -0
  108. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.js.map +1 -0
  109. package/dist/server/server/agent/providers/seaagent-agent.d.ts +81 -0
  110. package/dist/server/server/agent/providers/seaagent-agent.d.ts.map +1 -0
  111. package/dist/server/server/agent/providers/seaagent-agent.js +502 -0
  112. package/dist/server/server/agent/providers/seaagent-agent.js.map +1 -0
  113. package/dist/server/server/agent/providers/seaagent-binary-resolver.d.ts +18 -0
  114. package/dist/server/server/agent/providers/seaagent-binary-resolver.d.ts.map +1 -0
  115. package/dist/server/server/agent/providers/seaagent-binary-resolver.js +46 -0
  116. package/dist/server/server/agent/providers/seaagent-binary-resolver.js.map +1 -0
  117. package/dist/server/server/agent/providers/seaagent-health-probe.d.ts +11 -0
  118. package/dist/server/server/agent/providers/seaagent-health-probe.d.ts.map +1 -0
  119. package/dist/server/server/agent/providers/seaagent-health-probe.js +49 -0
  120. package/dist/server/server/agent/providers/seaagent-health-probe.js.map +1 -0
  121. package/dist/server/server/agent/providers/seawork-models.d.ts +8 -0
  122. package/dist/server/server/agent/providers/seawork-models.d.ts.map +1 -1
  123. package/dist/server/server/agent/providers/seawork-models.js +118 -74
  124. package/dist/server/server/agent/providers/seawork-models.js.map +1 -1
  125. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +2 -2
  126. package/dist/server/server/agent/timeline-projection.d.ts +5 -1
  127. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
  128. package/dist/server/server/agent/timeline-projection.js +20 -4
  129. package/dist/server/server/agent/timeline-projection.js.map +1 -1
  130. package/dist/server/server/agent-attention-policy.d.ts +1 -0
  131. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  132. package/dist/server/server/agent-attention-policy.js +6 -0
  133. package/dist/server/server/agent-attention-policy.js.map +1 -1
  134. package/dist/server/server/allowed-hosts.d.ts +13 -0
  135. package/dist/server/server/allowed-hosts.d.ts.map +1 -1
  136. package/dist/server/server/allowed-hosts.js +33 -0
  137. package/dist/server/server/allowed-hosts.js.map +1 -1
  138. package/dist/server/server/bootstrap.d.ts +2 -0
  139. package/dist/server/server/bootstrap.d.ts.map +1 -1
  140. package/dist/server/server/bootstrap.js +200 -14
  141. package/dist/server/server/bootstrap.js.map +1 -1
  142. package/dist/server/server/browser-extension-token.d.ts +23 -0
  143. package/dist/server/server/browser-extension-token.d.ts.map +1 -0
  144. package/dist/server/server/browser-extension-token.js +114 -0
  145. package/dist/server/server/browser-extension-token.js.map +1 -0
  146. package/dist/server/server/bug-report-handler.d.ts +7 -1
  147. package/dist/server/server/bug-report-handler.d.ts.map +1 -1
  148. package/dist/server/server/bug-report-handler.js +73 -5
  149. package/dist/server/server/bug-report-handler.js.map +1 -1
  150. package/dist/server/server/bug-report-redact.d.ts +25 -1
  151. package/dist/server/server/bug-report-redact.d.ts.map +1 -1
  152. package/dist/server/server/bug-report-redact.js +42 -5
  153. package/dist/server/server/bug-report-redact.js.map +1 -1
  154. package/dist/server/server/config.d.ts +1 -0
  155. package/dist/server/server/config.d.ts.map +1 -1
  156. package/dist/server/server/config.js +51 -1
  157. package/dist/server/server/config.js.map +1 -1
  158. package/dist/server/server/crash-report.d.ts.map +1 -1
  159. package/dist/server/server/crash-report.js +18 -0
  160. package/dist/server/server/crash-report.js.map +1 -1
  161. package/dist/server/server/daemon-config-store.d.ts.map +1 -1
  162. package/dist/server/server/daemon-config-store.js +94 -3
  163. package/dist/server/server/daemon-config-store.js.map +1 -1
  164. package/dist/server/server/disk-full.d.ts +4 -0
  165. package/dist/server/server/disk-full.d.ts.map +1 -0
  166. package/dist/server/server/disk-full.js +46 -0
  167. package/dist/server/server/disk-full.js.map +1 -0
  168. package/dist/server/server/exports.d.ts +3 -2
  169. package/dist/server/server/exports.d.ts.map +1 -1
  170. package/dist/server/server/exports.js +2 -1
  171. package/dist/server/server/exports.js.map +1 -1
  172. package/dist/server/server/git-forge/github-client.d.ts +18 -0
  173. package/dist/server/server/git-forge/github-client.d.ts.map +1 -1
  174. package/dist/server/server/git-forge/github-client.js +88 -0
  175. package/dist/server/server/git-forge/github-client.js.map +1 -1
  176. package/dist/server/server/git-forge/parse-remote.d.ts +2 -0
  177. package/dist/server/server/git-forge/parse-remote.d.ts.map +1 -1
  178. package/dist/server/server/git-forge/parse-remote.js +71 -6
  179. package/dist/server/server/git-forge/parse-remote.js.map +1 -1
  180. package/dist/server/server/git-forge/service.d.ts +87 -0
  181. package/dist/server/server/git-forge/service.d.ts.map +1 -1
  182. package/dist/server/server/git-forge/service.js +198 -4
  183. package/dist/server/server/git-forge/service.js.map +1 -1
  184. package/dist/server/server/index.js +72 -0
  185. package/dist/server/server/index.js.map +1 -1
  186. package/dist/server/server/integrations/wecom-openclaw/bridge.d.ts +88 -0
  187. package/dist/server/server/integrations/wecom-openclaw/bridge.d.ts.map +1 -0
  188. package/dist/server/server/integrations/wecom-openclaw/bridge.js +1229 -0
  189. package/dist/server/server/integrations/wecom-openclaw/bridge.js.map +1 -0
  190. package/dist/server/server/integrations/wecom-openclaw/qr.d.ts +38 -0
  191. package/dist/server/server/integrations/wecom-openclaw/qr.d.ts.map +1 -0
  192. package/dist/server/server/integrations/wecom-openclaw/qr.js +101 -0
  193. package/dist/server/server/integrations/wecom-openclaw/qr.js.map +1 -0
  194. package/dist/server/server/integrations/wecom-openclaw/workspace.d.ts +5 -0
  195. package/dist/server/server/integrations/wecom-openclaw/workspace.d.ts.map +1 -0
  196. package/dist/server/server/integrations/wecom-openclaw/workspace.js +40 -0
  197. package/dist/server/server/integrations/wecom-openclaw/workspace.js.map +1 -0
  198. package/dist/server/server/latency-proxy.d.ts.map +1 -1
  199. package/dist/server/server/latency-proxy.js +45 -5
  200. package/dist/server/server/latency-proxy.js.map +1 -1
  201. package/dist/server/server/library/codex-skill-discovery.d.ts +9 -0
  202. package/dist/server/server/library/codex-skill-discovery.d.ts.map +1 -0
  203. package/dist/server/server/library/codex-skill-discovery.js +49 -0
  204. package/dist/server/server/library/codex-skill-discovery.js.map +1 -0
  205. package/dist/server/server/library/hub-install.d.ts +79 -0
  206. package/dist/server/server/library/hub-install.d.ts.map +1 -0
  207. package/dist/server/server/library/hub-install.js +263 -0
  208. package/dist/server/server/library/hub-install.js.map +1 -0
  209. package/dist/server/server/library/hub-test-run.d.ts +81 -0
  210. package/dist/server/server/library/hub-test-run.d.ts.map +1 -0
  211. package/dist/server/server/library/hub-test-run.js +237 -0
  212. package/dist/server/server/library/hub-test-run.js.map +1 -0
  213. package/dist/server/server/library/library-import.d.ts +27 -0
  214. package/dist/server/server/library/library-import.d.ts.map +1 -0
  215. package/dist/server/server/library/library-import.js +227 -0
  216. package/dist/server/server/library/library-import.js.map +1 -0
  217. package/dist/server/server/library/library-injection.d.ts +16 -0
  218. package/dist/server/server/library/library-injection.d.ts.map +1 -0
  219. package/dist/server/server/library/library-injection.js +49 -0
  220. package/dist/server/server/library/library-injection.js.map +1 -0
  221. package/dist/server/server/library/library-rpc.d.ts +73 -0
  222. package/dist/server/server/library/library-rpc.d.ts.map +1 -0
  223. package/dist/server/server/library/library-rpc.js +239 -0
  224. package/dist/server/server/library/library-rpc.js.map +1 -0
  225. package/dist/server/server/library/library-store.d.ts +35 -0
  226. package/dist/server/server/library/library-store.d.ts.map +1 -0
  227. package/dist/server/server/library/library-store.js +169 -0
  228. package/dist/server/server/library/library-store.js.map +1 -0
  229. package/dist/server/server/library/library-sync.d.ts +46 -0
  230. package/dist/server/server/library/library-sync.d.ts.map +1 -0
  231. package/dist/server/server/library/library-sync.js +235 -0
  232. package/dist/server/server/library/library-sync.js.map +1 -0
  233. package/dist/server/server/library/library-types.d.ts +756 -0
  234. package/dist/server/server/library/library-types.d.ts.map +1 -0
  235. package/dist/server/server/library/library-types.js +99 -0
  236. package/dist/server/server/library/library-types.js.map +1 -0
  237. package/dist/server/server/library/worktree-dev.d.ts +14 -0
  238. package/dist/server/server/library/worktree-dev.d.ts.map +1 -0
  239. package/dist/server/server/library/worktree-dev.js +24 -0
  240. package/dist/server/server/library/worktree-dev.js.map +1 -0
  241. package/dist/server/server/log-stream-error.d.ts +2 -0
  242. package/dist/server/server/log-stream-error.d.ts.map +1 -0
  243. package/dist/server/server/log-stream-error.js +33 -0
  244. package/dist/server/server/log-stream-error.js.map +1 -0
  245. package/dist/server/server/logger.d.ts +1 -0
  246. package/dist/server/server/logger.d.ts.map +1 -1
  247. package/dist/server/server/logger.js +32 -0
  248. package/dist/server/server/logger.js.map +1 -1
  249. package/dist/server/server/loop/rpc-schemas.d.ts +96 -96
  250. package/dist/server/server/loop-service.d.ts +18 -18
  251. package/dist/server/server/messages.d.ts +4 -1
  252. package/dist/server/server/messages.d.ts.map +1 -1
  253. package/dist/server/server/messages.js +40 -2
  254. package/dist/server/server/messages.js.map +1 -1
  255. package/dist/server/server/node-pty-error.d.ts +2 -0
  256. package/dist/server/server/node-pty-error.d.ts.map +1 -0
  257. package/dist/server/server/node-pty-error.js +19 -0
  258. package/dist/server/server/node-pty-error.js.map +1 -0
  259. package/dist/server/server/persisted-config.d.ts +219 -135
  260. package/dist/server/server/persisted-config.d.ts.map +1 -1
  261. package/dist/server/server/persisted-config.js +35 -1
  262. package/dist/server/server/persisted-config.js.map +1 -1
  263. package/dist/server/server/port-in-use.d.ts +4 -0
  264. package/dist/server/server/port-in-use.d.ts.map +1 -0
  265. package/dist/server/server/port-in-use.js +35 -0
  266. package/dist/server/server/port-in-use.js.map +1 -0
  267. package/dist/server/server/provider-runtime-settings-mask.d.ts +7 -0
  268. package/dist/server/server/provider-runtime-settings-mask.d.ts.map +1 -0
  269. package/dist/server/server/provider-runtime-settings-mask.js +65 -0
  270. package/dist/server/server/provider-runtime-settings-mask.js.map +1 -0
  271. package/dist/server/server/sac/auth.d.ts +12 -0
  272. package/dist/server/server/sac/auth.d.ts.map +1 -1
  273. package/dist/server/server/sac/auth.js +19 -1
  274. package/dist/server/server/sac/auth.js.map +1 -1
  275. package/dist/server/server/sac/index.d.ts +2 -2
  276. package/dist/server/server/sac/index.d.ts.map +1 -1
  277. package/dist/server/server/sac/index.js +2 -2
  278. package/dist/server/server/sac/index.js.map +1 -1
  279. package/dist/server/server/sac/poll.d.ts +2 -0
  280. package/dist/server/server/sac/poll.d.ts.map +1 -1
  281. package/dist/server/server/sac/poll.js +7 -2
  282. package/dist/server/server/sac/poll.js.map +1 -1
  283. package/dist/server/server/schedule/cron.d.ts.map +1 -1
  284. package/dist/server/server/schedule/cron.js +6 -6
  285. package/dist/server/server/schedule/cron.js.map +1 -1
  286. package/dist/server/server/schedule/rpc-schemas.d.ts +895 -0
  287. package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -1
  288. package/dist/server/server/schedule/rpc-schemas.js +34 -0
  289. package/dist/server/server/schedule/rpc-schemas.js.map +1 -1
  290. package/dist/server/server/schedule/service.d.ts +5 -1
  291. package/dist/server/server/schedule/service.d.ts.map +1 -1
  292. package/dist/server/server/schedule/service.js +97 -14
  293. package/dist/server/server/schedule/service.js.map +1 -1
  294. package/dist/server/server/schedule/types.d.ts +19 -0
  295. package/dist/server/server/schedule/types.d.ts.map +1 -1
  296. package/dist/server/server/schedule/types.js +1 -0
  297. package/dist/server/server/schedule/types.js.map +1 -1
  298. package/dist/server/server/session.d.ts +83 -2
  299. package/dist/server/server/session.d.ts.map +1 -1
  300. package/dist/server/server/session.js +895 -82
  301. package/dist/server/server/session.js.map +1 -1
  302. package/dist/server/server/speech/native-runtime-guard.d.ts +1 -0
  303. package/dist/server/server/speech/native-runtime-guard.d.ts.map +1 -1
  304. package/dist/server/server/speech/native-runtime-guard.js +10 -4
  305. package/dist/server/server/speech/native-runtime-guard.js.map +1 -1
  306. package/dist/server/server/websocket-server.d.ts +6 -1
  307. package/dist/server/server/websocket-server.d.ts.map +1 -1
  308. package/dist/server/server/websocket-server.js +79 -7
  309. package/dist/server/server/websocket-server.js.map +1 -1
  310. package/dist/server/server/workspace-git-service.d.ts +2 -1
  311. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  312. package/dist/server/server/workspace-git-service.js +7 -3
  313. package/dist/server/server/workspace-git-service.js.map +1 -1
  314. package/dist/server/server/workspace-registry-model.d.ts +1 -0
  315. package/dist/server/server/workspace-registry-model.d.ts.map +1 -1
  316. package/dist/server/server/workspace-registry-model.js +18 -0
  317. package/dist/server/server/workspace-registry-model.js.map +1 -1
  318. package/dist/server/server/worktree-session.d.ts +3 -3
  319. package/dist/server/server/worktree-session.d.ts.map +1 -1
  320. package/dist/server/server/worktree-session.js +1 -3
  321. package/dist/server/server/worktree-session.js.map +1 -1
  322. package/dist/server/shared/messages.d.ts +59658 -21927
  323. package/dist/server/shared/messages.d.ts.map +1 -1
  324. package/dist/server/shared/messages.js +531 -3
  325. package/dist/server/shared/messages.js.map +1 -1
  326. package/dist/server/shared/provider-runtime-settings.d.ts +87 -0
  327. package/dist/server/shared/provider-runtime-settings.d.ts.map +1 -0
  328. package/dist/server/shared/provider-runtime-settings.js +33 -0
  329. package/dist/server/shared/provider-runtime-settings.js.map +1 -0
  330. package/dist/server/terminal/terminal.d.ts +9 -0
  331. package/dist/server/terminal/terminal.d.ts.map +1 -1
  332. package/dist/server/terminal/terminal.js +100 -3
  333. package/dist/server/terminal/terminal.js.map +1 -1
  334. package/dist/server/utils/checkout-git.d.ts +23 -1
  335. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  336. package/dist/server/utils/checkout-git.js +182 -21
  337. package/dist/server/utils/checkout-git.js.map +1 -1
  338. package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
  339. package/dist/server/utils/directory-suggestions.js +57 -9
  340. package/dist/server/utils/directory-suggestions.js.map +1 -1
  341. package/dist/src/server/bug-report-redact.js +42 -5
  342. package/dist/src/server/bug-report-redact.js.map +1 -1
  343. package/dist/src/server/crash-report.js +18 -0
  344. package/dist/src/server/crash-report.js.map +1 -1
  345. package/dist/src/server/speech/native-runtime-guard.js +177 -0
  346. package/dist/src/server/speech/native-runtime-guard.js.map +1 -0
  347. package/dist/src/server/speech/speech-types.js +8 -0
  348. package/dist/src/server/speech/speech-types.js.map +1 -0
  349. package/package.json +16 -4
@@ -1,21 +1,43 @@
1
1
  import { z } from "zod";
2
- import { TOOL_CALL_ICON_NAMES } from "../server/agent/agent-sdk-types.js";
2
+ import { TOOL_CALL_ICON_NAMES, } from "../server/agent/agent-sdk-types.js";
3
3
  import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from "../server/agent/agent-title-limits.js";
4
4
  import { AgentProviderSchema } from "../server/agent/provider-manifest.js";
5
5
  import { ChatCreateRequestSchema, ChatCreateResponseSchema, ChatDeleteRequestSchema, ChatDeleteResponseSchema, ChatInspectRequestSchema, ChatInspectResponseSchema, ChatListRequestSchema, ChatListResponseSchema, ChatPostRequestSchema, ChatPostResponseSchema, ChatReadRequestSchema, ChatReadResponseSchema, ChatWaitRequestSchema, ChatWaitResponseSchema, } from "../server/chat/chat-rpc-schemas.js";
6
6
  import { LoopInspectRequestSchema, LoopInspectResponseSchema, LoopListRequestSchema, LoopListResponseSchema, LoopLogsRequestSchema, LoopLogsResponseSchema, LoopRunRequestSchema, LoopRunResponseSchema, LoopStopRequestSchema, LoopStopResponseSchema, } from "../server/loop/rpc-schemas.js";
7
- import { ScheduleCreateRequestSchema, ScheduleCreateResponseSchema, ScheduleDeleteRequestSchema, ScheduleDeleteResponseSchema, ScheduleInspectRequestSchema, ScheduleInspectResponseSchema, ScheduleListRequestSchema, ScheduleListResponseSchema, ScheduleLogsRequestSchema, ScheduleLogsResponseSchema, SchedulePauseRequestSchema, SchedulePauseResponseSchema, ScheduleResumeRequestSchema, ScheduleResumeResponseSchema, } from "../server/schedule/rpc-schemas.js";
7
+ import { ScheduleCreateRequestSchema, ScheduleCreateResponseSchema, ScheduleDeleteRequestSchema, ScheduleDeleteResponseSchema, ScheduleInspectRequestSchema, ScheduleInspectResponseSchema, ScheduleListRequestSchema, ScheduleListResponseSchema, ScheduleLogsRequestSchema, ScheduleLogsResponseSchema, SchedulePauseRequestSchema, SchedulePauseResponseSchema, ScheduleResumeRequestSchema, ScheduleResumeResponseSchema, ScheduleRunNowRequestSchema, ScheduleRunNowResponseSchema, ScheduleUpdateRequestSchema, ScheduleUpdateResponseSchema, } from "../server/schedule/rpc-schemas.js";
8
8
  import { AGENT_LIFECYCLE_STATUSES } from "./agent-lifecycle.js";
9
+ import { AgentProviderRuntimeSettingsMapSchema } from "./provider-runtime-settings.js";
9
10
  // ---------------------------------------------------------------------------
10
11
  // Mutable daemon config schemas (shared between server store and client)
11
12
  // ---------------------------------------------------------------------------
12
13
  // Sentinel returned in place of stored tokens when broadcasting config to
13
14
  // clients. The daemon never sends raw token strings over the wire.
14
15
  export const GIT_FORGE_TOKEN_REDACTED = "<configured>";
16
+ export const PROVIDER_ENV_VALUE_REDACTED = "<configured>";
15
17
  export const GitForgeTokenEntrySchema = z.object({
16
18
  host: z.string().min(1),
17
19
  token: z.string(),
18
20
  });
21
+ export const WeComOpenClawAgentModeSchema = z.enum(["new", "existing"]);
22
+ export const WeComOpenClawConfigSchema = z
23
+ .object({
24
+ enabled: z.boolean().optional(),
25
+ botId: z.string().optional(),
26
+ secret: z.string().optional(),
27
+ websocketUrl: z.string().optional(),
28
+ cwd: z.string().optional(),
29
+ provider: AgentProviderSchema.optional(),
30
+ modeId: z.string().optional(),
31
+ model: z.string().optional(),
32
+ thinkingOptionId: z.string().optional(),
33
+ pluginVersion: z.string().optional(),
34
+ allowUsers: z.array(z.string()).optional(),
35
+ allowChats: z.array(z.string()).optional(),
36
+ pendingAllowFirstUser: z.boolean().optional(),
37
+ agentMode: WeComOpenClawAgentModeSchema.optional(),
38
+ agentId: z.string().nullable().optional(),
39
+ })
40
+ .passthrough();
19
41
  export const MutableDaemonConfigSchema = z
20
42
  .object({
21
43
  mcp: z
@@ -23,6 +45,11 @@ export const MutableDaemonConfigSchema = z
23
45
  injectIntoAgents: z.boolean(),
24
46
  })
25
47
  .passthrough(),
48
+ agents: z
49
+ .object({
50
+ providers: AgentProviderRuntimeSettingsMapSchema.optional(),
51
+ })
52
+ .optional(),
26
53
  integrations: z
27
54
  .object({
28
55
  gitForge: z
@@ -30,6 +57,16 @@ export const MutableDaemonConfigSchema = z
30
57
  tokens: z.array(GitForgeTokenEntrySchema).default([]),
31
58
  })
32
59
  .optional(),
60
+ wecomOpenClaw: WeComOpenClawConfigSchema.optional(),
61
+ })
62
+ .optional(),
63
+ promptInjection: z
64
+ .object({
65
+ system: z.string().max(32000).optional(),
66
+ projects: z
67
+ .array(z.object({ cwd: z.string().min(1), prompt: z.string().max(32000) }))
68
+ .max(100)
69
+ .optional(),
33
70
  })
34
71
  .optional(),
35
72
  })
@@ -37,6 +74,11 @@ export const MutableDaemonConfigSchema = z
37
74
  export const MutableDaemonConfigPatchSchema = z
38
75
  .object({
39
76
  mcp: MutableDaemonConfigSchema.shape.mcp.partial().optional(),
77
+ agents: z
78
+ .object({
79
+ providers: AgentProviderRuntimeSettingsMapSchema.optional(),
80
+ })
81
+ .optional(),
40
82
  integrations: z
41
83
  .object({
42
84
  gitForge: z
@@ -44,6 +86,16 @@ export const MutableDaemonConfigPatchSchema = z
44
86
  tokens: z.array(GitForgeTokenEntrySchema).optional(),
45
87
  })
46
88
  .optional(),
89
+ wecomOpenClaw: WeComOpenClawConfigSchema.partial().optional(),
90
+ })
91
+ .optional(),
92
+ promptInjection: z
93
+ .object({
94
+ system: z.string().max(32000).optional(),
95
+ projects: z
96
+ .array(z.object({ cwd: z.string().min(1), prompt: z.string().max(32000) }))
97
+ .max(100)
98
+ .optional(),
47
99
  })
48
100
  .optional(),
49
101
  })
@@ -141,7 +193,7 @@ const McpSseServerConfigSchema = z.object({
141
193
  url: z.string(),
142
194
  headers: z.record(z.string()).optional(),
143
195
  });
144
- const McpServerConfigSchema = z.discriminatedUnion("type", [
196
+ export const McpServerConfigSchema = z.discriminatedUnion("type", [
145
197
  McpStdioServerConfigSchema,
146
198
  McpHttpServerConfigSchema,
147
199
  McpSseServerConfigSchema,
@@ -167,6 +219,7 @@ const AgentSessionConfigSchema = z.object({
167
219
  .optional(),
168
220
  systemPrompt: z.string().optional(),
169
221
  mcpServers: z.record(McpServerConfigSchema).optional(),
222
+ perAgentDisabled: z.array(z.string()).optional(),
170
223
  });
171
224
  const AgentPermissionUpdateSchema = z.record(z.unknown());
172
225
  const AgentPermissionActionSchema = z.object({
@@ -352,6 +405,18 @@ export const AgentTimelineItemPayloadSchema = z.union([
352
405
  type: z.literal("user_message"),
353
406
  text: z.string(),
354
407
  messageId: z.string().optional(),
408
+ images: z
409
+ .array(z.object({
410
+ id: z.string(),
411
+ mimeType: z.string(),
412
+ storageType: z.enum(["web-indexeddb", "desktop-file", "native-file"]),
413
+ storageKey: z.string(),
414
+ dataUrl: z.string().optional(),
415
+ fileName: z.string().nullable().optional(),
416
+ byteSize: z.number().nullable().optional(),
417
+ createdAt: z.number(),
418
+ }))
419
+ .optional(),
355
420
  }),
356
421
  z.object({
357
422
  type: z.literal("assistant_message"),
@@ -379,6 +444,12 @@ export const AgentTimelineItemPayloadSchema = z.union([
379
444
  trigger: z.enum(["auto", "manual"]).optional(),
380
445
  preTokens: z.number().optional(),
381
446
  }),
447
+ z.object({
448
+ type: z.literal("reconnecting"),
449
+ status: z.enum(["loading", "completed"]),
450
+ attempt: z.number().optional(),
451
+ maxAttempts: z.number().optional(),
452
+ }),
382
453
  ]);
383
454
  /**
384
455
  * Per-turn latency breakdown captured when the user has enabled latency debug
@@ -439,6 +510,7 @@ export const AgentStreamEventPayloadSchema = z.discriminatedUnion("type", [
439
510
  type: z.literal("turn_canceled"),
440
511
  provider: AgentProviderSchema,
441
512
  reason: z.string(),
513
+ turnId: z.string().optional(),
442
514
  }),
443
515
  z.object({
444
516
  type: z.literal("timeline"),
@@ -513,6 +585,8 @@ export const AgentSnapshotPayloadSchema = z.object({
513
585
  lastUsage: AgentUsageSchema.optional(),
514
586
  lastError: z.string().optional(),
515
587
  title: z.string().nullable(),
588
+ activeForegroundTurnId: z.string().nullable().optional(),
589
+ activeForegroundTurnStartedAt: z.number().nullable().optional(),
516
590
  labels: z.record(z.string()).default({}),
517
591
  requiresAttention: z.boolean().optional(),
518
592
  attentionReason: z.enum(["finished", "error", "permission"]).nullable().optional(),
@@ -616,6 +690,46 @@ export const SubmitBugReportRequestMessageSchema = z.object({
616
690
  }))
617
691
  .max(200)
618
692
  .optional(),
693
+ // Independent agent-event channel: 30s ws_runtime_metrics heartbeats
694
+ // were swallowing real turn errors out of the 32KB daemon.log tail. The
695
+ // ring buffer in AgentManager captures the last N turn_started/completed/
696
+ // failed/canceled events directly, free of heartbeat noise.
697
+ recentTurnTraces: z
698
+ .array(z.object({
699
+ ts: z.number(),
700
+ agentId: z.string(),
701
+ provider: z.string(),
702
+ agentRole: z.enum(["user-foreground", "internal"]),
703
+ model: z.string().optional(),
704
+ turnId: z.string().optional(),
705
+ eventType: z.enum(["turn_started", "turn_completed", "turn_failed", "turn_canceled"]),
706
+ durationMs: z.number().optional(),
707
+ error: z.string().optional(),
708
+ code: z.string().optional(),
709
+ diagnostic: z.string().optional(),
710
+ }))
711
+ .max(50)
712
+ .optional(),
713
+ // Doctor session log freshness — clients fetch this from the desktop
714
+ // IPC and forward it so reviewers can spot stale logs at a glance
715
+ // (root cause of #484: bug-report attached a 3-week-old v0.1.0 log).
716
+ doctorMeta: z
717
+ .object({
718
+ version: z.string().optional(),
719
+ ranAt: z.number().optional(),
720
+ ageMs: z.number().optional(),
721
+ autoReran: z.boolean().optional(),
722
+ path: z.string().optional(),
723
+ })
724
+ .optional(),
725
+ // Structured user-context fields prompted in the report form. All
726
+ // optional for back-compat with old clients; we collect what users give
727
+ // us and avoid the friction of hard-required fields until the data
728
+ // proves it's worth enforcing (#483 #484 verdict).
729
+ userReproSteps: z.string().max(2000).optional(),
730
+ userPreviouslyWorked: z.enum(["never-worked", "worked-recently-broke", "unknown"]).optional(),
731
+ userFrequency: z.enum(["every-time", "sometimes", "once"]).optional(),
732
+ userWaitSeconds: z.number().int().min(0).max(3600).optional(),
619
733
  });
620
734
  export const SubmitBugReportResponseMessageSchema = z.object({
621
735
  type: z.literal("submit_bug_report_response"),
@@ -858,6 +972,19 @@ const DocumentAttachmentSchema = z.object({
858
972
  mimeType: z.string(),
859
973
  fileName: z.string().nullable().optional(),
860
974
  });
975
+ const UserMessageImageAttachmentSchema = z.object({
976
+ id: z.string(),
977
+ mimeType: z.string(),
978
+ storageType: z.enum(["web-indexeddb", "desktop-file", "native-file"]),
979
+ storageKey: z.string(),
980
+ dataUrl: z
981
+ .string()
982
+ .regex(/^data:[^;,]+;base64,[A-Za-z0-9+/]+=*$/)
983
+ .optional(),
984
+ fileName: z.string().nullable().optional(),
985
+ byteSize: z.number().nullable().optional(),
986
+ createdAt: z.number(),
987
+ });
861
988
  export const SendAgentMessageRequestSchema = z.object({
862
989
  type: z.literal("send_agent_message_request"),
863
990
  requestId: z.string(),
@@ -871,6 +998,12 @@ export const SendAgentMessageRequestSchema = z.object({
871
998
  mimeType: z.string(), // e.g., "image/jpeg", "image/png"
872
999
  }))
873
1000
  .optional(),
1001
+ /**
1002
+ * Attachment metadata for rendering/persisting user-message images in the
1003
+ * timeline. Separate from `images`, which carries base64 bytes for the model
1004
+ * input. Optional for backward compatibility with older clients.
1005
+ */
1006
+ imageAttachments: z.array(UserMessageImageAttachmentSchema).optional(),
874
1007
  /**
875
1008
  * Document attachments carried as native file paths (desktop/mobile only).
876
1009
  * Server reads these locally when composing the prompt. Always optional for
@@ -901,12 +1034,32 @@ export const SetDaemonConfigRequestMessageSchema = z.object({
901
1034
  requestId: z.string(),
902
1035
  config: MutableDaemonConfigPatchSchema,
903
1036
  });
1037
+ export const WeComOpenClawQrRequestMessageSchema = z.object({
1038
+ type: z.literal("wecom_openclaw_qr_request"),
1039
+ requestId: z.string(),
1040
+ poll: z.boolean().optional(),
1041
+ });
904
1042
  export const FetchGitForgeIssuesRequestMessageSchema = z.object({
905
1043
  type: z.literal("fetch_git_forge_issues_request"),
906
1044
  requestId: z.string(),
907
1045
  workspaceId: z.string().optional(),
908
1046
  cwd: z.string().optional(),
909
1047
  });
1048
+ export const DiscoverGitForgeIssueWorkRequestMessageSchema = z.object({
1049
+ type: z.literal("discover_git_forge_issue_work_request"),
1050
+ requestId: z.string(),
1051
+ number: z.number().int().positive(),
1052
+ workspaceId: z.string().optional(),
1053
+ cwd: z.string().optional(),
1054
+ });
1055
+ export const TransitionGitForgeIssueWorkRequestMessageSchema = z.object({
1056
+ type: z.literal("transition_git_forge_issue_work_request"),
1057
+ requestId: z.string(),
1058
+ number: z.number().int().positive(),
1059
+ workspaceId: z.string().optional(),
1060
+ cwd: z.string().optional(),
1061
+ source: z.enum(["manual", "symphony-web"]).optional(),
1062
+ });
910
1063
  // ============================================================================
911
1064
  // Dictation Streaming (lossless, resumable)
912
1065
  // ============================================================================
@@ -951,6 +1104,12 @@ export const CreateAgentRequestMessageSchema = z.object({
951
1104
  mimeType: z.string(), // e.g., "image/jpeg", "image/png"
952
1105
  }))
953
1106
  .optional(),
1107
+ /**
1108
+ * Attachment metadata for rendering/persisting initial user-message images in
1109
+ * the timeline. Separate from `images`, which carries base64 bytes for model
1110
+ * input. Optional for backward compatibility with older clients.
1111
+ */
1112
+ imageAttachments: z.array(UserMessageImageAttachmentSchema).optional(),
954
1113
  /** Document attachments as native file paths. See SendAgentMessageRequestSchema. */
955
1114
  documents: z.array(DocumentAttachmentSchema).optional(),
956
1115
  git: GitSetupOptionsSchema.optional(),
@@ -1456,6 +1615,7 @@ export const ClientHeartbeatMessageSchema = z.object({
1456
1615
  lastActivityAt: z.string(),
1457
1616
  appVisible: z.boolean(),
1458
1617
  appVisibilityChangedAt: z.string().optional(),
1618
+ desktopRuntime: z.boolean().optional(),
1459
1619
  });
1460
1620
  export const PingMessageSchema = z.object({
1461
1621
  type: z.literal("ping"),
@@ -1545,6 +1705,228 @@ export const CaptureTerminalRequestSchema = z.object({
1545
1705
  stripAnsi: z.boolean().default(true),
1546
1706
  requestId: z.string(),
1547
1707
  });
1708
+ // ============================================================================
1709
+ // Library RPCs (centrally-managed MCP + skills shared by Claude/Codex agents)
1710
+ // ============================================================================
1711
+ // Wire-level `source` is an OPEN string, not a narrowed enum. Pre-hub clients
1712
+ // (and the production daemon) shipped a 4-value enum without "hub"; adding a new
1713
+ // enum value to the wire would make their `.parse()` reject the whole
1714
+ // library_updated/library_list_response. Per CLAUDE.md's compat rule
1715
+ // ("never narrow string→enum on the wire"), keep this permissive so future
1716
+ // source values never break an old client. The daemon also downcasts unknown
1717
+ // new values (e.g. "hub") to undefined when serializing for old clients —
1718
+ // see buildSnapshot in library-rpc.ts. Hub-ness travels via the `hub` field.
1719
+ const LibrarySourceShape = z.string().optional();
1720
+ export const LibraryMcpEntryPayloadSchema = z.object({
1721
+ config: McpServerConfigSchema,
1722
+ enabledFor: z
1723
+ .object({
1724
+ claude: z.boolean().optional(),
1725
+ codex: z.boolean().optional(),
1726
+ })
1727
+ .optional(),
1728
+ autoAttach: z.boolean().optional(),
1729
+ source: LibrarySourceShape,
1730
+ updatedAt: z.string().optional(),
1731
+ });
1732
+ export const LibrarySkillEntryPayloadSchema = z.object({
1733
+ content: z.string(),
1734
+ providers: z.array(z.enum(["claude", "codex"])).optional(),
1735
+ autoAttach: z.boolean().optional(),
1736
+ source: LibrarySourceShape,
1737
+ updatedAt: z.string().optional(),
1738
+ contentCodex: z.string().optional(),
1739
+ hub: z
1740
+ .object({
1741
+ hubId: z.string(),
1742
+ version: z.string(),
1743
+ tarballSha256: z.string(),
1744
+ installedAt: z.string(),
1745
+ })
1746
+ .optional(),
1747
+ });
1748
+ export const LibrarySnapshotPayloadSchema = z.object({
1749
+ library: z.object({
1750
+ version: z.number().optional(),
1751
+ mcpServers: z.record(LibraryMcpEntryPayloadSchema).optional(),
1752
+ skills: z.record(LibrarySkillEntryPayloadSchema).optional(),
1753
+ }),
1754
+ conflicts: z
1755
+ .array(z.object({
1756
+ name: z.string(),
1757
+ ownerSeaworkHome: z.string(),
1758
+ }))
1759
+ .optional(),
1760
+ isWorktreeDev: z.boolean().optional(),
1761
+ neverImported: z.boolean().optional(),
1762
+ });
1763
+ export const LibraryListRequestMessageSchema = z.object({
1764
+ type: z.literal("library_list_request"),
1765
+ requestId: z.string(),
1766
+ });
1767
+ export const LibraryListResponseMessageSchema = z.object({
1768
+ type: z.literal("library_list_response"),
1769
+ requestId: z.string(),
1770
+ snapshot: LibrarySnapshotPayloadSchema.optional(),
1771
+ error: z.string().optional(),
1772
+ });
1773
+ export const LibraryUpsertMcpRequestMessageSchema = z.object({
1774
+ type: z.literal("library_upsert_mcp_request"),
1775
+ requestId: z.string(),
1776
+ name: z.string().min(1),
1777
+ entry: LibraryMcpEntryPayloadSchema,
1778
+ });
1779
+ export const LibraryUpsertMcpResponseMessageSchema = z.object({
1780
+ type: z.literal("library_upsert_mcp_response"),
1781
+ requestId: z.string(),
1782
+ ok: z.boolean(),
1783
+ error: z.string().optional(),
1784
+ });
1785
+ export const LibraryUpsertSkillRequestMessageSchema = z.object({
1786
+ type: z.literal("library_upsert_skill_request"),
1787
+ requestId: z.string(),
1788
+ name: z.string().min(1),
1789
+ entry: LibrarySkillEntryPayloadSchema,
1790
+ });
1791
+ export const LibraryUpsertSkillResponseMessageSchema = z.object({
1792
+ type: z.literal("library_upsert_skill_response"),
1793
+ requestId: z.string(),
1794
+ ok: z.boolean(),
1795
+ error: z.string().optional(),
1796
+ });
1797
+ export const LibraryDeleteRequestMessageSchema = z.object({
1798
+ type: z.literal("library_delete_request"),
1799
+ requestId: z.string(),
1800
+ kind: z.enum(["mcp", "skill"]),
1801
+ name: z.string().min(1),
1802
+ });
1803
+ export const LibraryDeleteResponseMessageSchema = z.object({
1804
+ type: z.literal("library_delete_response"),
1805
+ requestId: z.string(),
1806
+ ok: z.boolean(),
1807
+ error: z.string().optional(),
1808
+ });
1809
+ export const LibrarySetAutoAttachRequestMessageSchema = z.object({
1810
+ type: z.literal("library_set_autoattach_request"),
1811
+ requestId: z.string(),
1812
+ kind: z.enum(["mcp", "skill"]),
1813
+ name: z.string().min(1),
1814
+ value: z.boolean(),
1815
+ });
1816
+ export const LibrarySetAutoAttachResponseMessageSchema = z.object({
1817
+ type: z.literal("library_set_autoattach_response"),
1818
+ requestId: z.string(),
1819
+ ok: z.boolean(),
1820
+ error: z.string().optional(),
1821
+ });
1822
+ export const LibraryImportExistingRequestMessageSchema = z.object({
1823
+ type: z.literal("library_import_existing_request"),
1824
+ requestId: z.string(),
1825
+ });
1826
+ export const LibraryImportExistingResponseMessageSchema = z.object({
1827
+ type: z.literal("library_import_existing_response"),
1828
+ requestId: z.string(),
1829
+ importedMcp: z.number().int().nonnegative().optional(),
1830
+ importedSkills: z.number().int().nonnegative().optional(),
1831
+ skipped: z.array(z.string()).optional(),
1832
+ error: z.string().optional(),
1833
+ });
1834
+ /** Hub install: download a skill tarball from R2 and hand it to Library to write to disk. */
1835
+ export const LibraryInstallFromHubRequestMessageSchema = z.object({
1836
+ type: z.literal("library_install_from_hub_request"),
1837
+ requestId: z.string(),
1838
+ hubId: z.string().regex(/^[a-z0-9-]+\/[a-z0-9-]+$/),
1839
+ version: z.string().min(1),
1840
+ tarballUrl: z.string().url(),
1841
+ tarballSha256: z.string().regex(/^[a-f0-9]{64}$/i),
1842
+ claudeSkillPath: z.string().min(1),
1843
+ codexSkillPath: z.string().min(1),
1844
+ });
1845
+ export const LibraryInstallFromHubResponseMessageSchema = z.object({
1846
+ type: z.literal("library_install_from_hub_response"),
1847
+ requestId: z.string(),
1848
+ status: z.enum(["installed", "conflict", "error", "not-implemented"]),
1849
+ installedPaths: z
1850
+ .object({
1851
+ claude: z.string(),
1852
+ codex: z.string(),
1853
+ })
1854
+ .optional(),
1855
+ conflictingPath: z.string().optional(),
1856
+ reason: z.enum(["foreign-skill"]).optional(),
1857
+ code: z
1858
+ .enum([
1859
+ "download-failed",
1860
+ "checksum-failed",
1861
+ "extract-failed",
1862
+ "write-failed",
1863
+ "not-implemented",
1864
+ ])
1865
+ .optional(),
1866
+ message: z.string().optional(),
1867
+ });
1868
+ export const LibraryUninstallFromHubRequestMessageSchema = z.object({
1869
+ type: z.literal("library_uninstall_from_hub_request"),
1870
+ requestId: z.string(),
1871
+ hubId: z.string().regex(/^[a-z0-9-]+\/[a-z0-9-]+$/),
1872
+ });
1873
+ export const LibraryUninstallFromHubResponseMessageSchema = z.object({
1874
+ type: z.literal("library_uninstall_from_hub_response"),
1875
+ requestId: z.string(),
1876
+ status: z.enum(["uninstalled", "not-installed", "error", "not-implemented"]),
1877
+ code: z.enum(["remove-failed", "not-implemented"]).optional(),
1878
+ message: z.string().optional(),
1879
+ });
1880
+ // ---- Hub "test run": spin up a throwaway sandboxed agent with the skill ----
1881
+ // loaded into a temp cwd, run one prompt, stream output back, then delete the
1882
+ // sandbox. Never touches ~/.codex or the user's installed skills.
1883
+ /** Start a test run. The client decides the prompt (examplePrompt or user input). */
1884
+ export const HubTestRunStartRequestMessageSchema = z.object({
1885
+ type: z.literal("hub_test_run_start_request"),
1886
+ requestId: z.string(),
1887
+ hubId: z.string().regex(/^[a-z0-9-]+\/[a-z0-9-]+$/),
1888
+ tarballUrl: z.string().url(),
1889
+ tarballSha256: z.string().regex(/^[a-f0-9]{64}$/i),
1890
+ prompt: z.string().min(1).max(4000),
1891
+ });
1892
+ /** Cancel an in-flight test run (matched by requestId). */
1893
+ export const HubTestRunCancelRequestMessageSchema = z.object({
1894
+ type: z.literal("hub_test_run_cancel_request"),
1895
+ requestId: z.string(),
1896
+ });
1897
+ /** Streamed output chunk during a test run (outbound push, keyed by requestId). */
1898
+ export const HubTestRunChunkMessageSchema = z.object({
1899
+ type: z.literal("hub_test_run_chunk"),
1900
+ requestId: z.string(),
1901
+ kind: z.enum(["assistant", "reasoning", "tool"]),
1902
+ text: z.string().optional(),
1903
+ toolName: z.string().optional(),
1904
+ toolSummary: z.string().optional(),
1905
+ });
1906
+ /** Terminal reply for a test run (resolves the start request). */
1907
+ export const HubTestRunDoneResponseMessageSchema = z.object({
1908
+ type: z.literal("hub_test_run_done_response"),
1909
+ requestId: z.string(),
1910
+ status: z.enum(["completed", "canceled", "error", "not-implemented"]),
1911
+ finalText: z.string().optional(),
1912
+ code: z
1913
+ .enum([
1914
+ "download-failed",
1915
+ "checksum-failed",
1916
+ "extract-failed",
1917
+ "spawn-failed",
1918
+ "timeout",
1919
+ "run-failed",
1920
+ "not-implemented",
1921
+ ])
1922
+ .optional(),
1923
+ message: z.string().optional(),
1924
+ });
1925
+ /** Server-push when library mutates so other clients can refresh. */
1926
+ export const LibraryUpdatedMessageSchema = z.object({
1927
+ type: z.literal("library_updated"),
1928
+ snapshot: LibrarySnapshotPayloadSchema.optional(),
1929
+ });
1548
1930
  export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1549
1931
  VoiceAudioChunkMessageSchema,
1550
1932
  AbortRequestMessageSchema,
@@ -1561,7 +1943,10 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1561
1943
  WaitForFinishRequestSchema,
1562
1944
  GetDaemonConfigRequestMessageSchema,
1563
1945
  SetDaemonConfigRequestMessageSchema,
1946
+ WeComOpenClawQrRequestMessageSchema,
1564
1947
  FetchGitForgeIssuesRequestMessageSchema,
1948
+ DiscoverGitForgeIssueWorkRequestMessageSchema,
1949
+ TransitionGitForgeIssueWorkRequestMessageSchema,
1565
1950
  DictationStreamStartMessageSchema,
1566
1951
  DictationStreamChunkMessageSchema,
1567
1952
  DictationStreamFinishMessageSchema,
@@ -1648,6 +2033,8 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1648
2033
  SchedulePauseRequestSchema,
1649
2034
  ScheduleResumeRequestSchema,
1650
2035
  ScheduleDeleteRequestSchema,
2036
+ ScheduleUpdateRequestSchema,
2037
+ ScheduleRunNowRequestSchema,
1651
2038
  LoopRunRequestSchema,
1652
2039
  LoopListRequestSchema,
1653
2040
  LoopInspectRequestSchema,
@@ -1660,6 +2047,16 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1660
2047
  ListIssueCommentsRequestMessageSchema,
1661
2048
  PostIssueCommentRequestMessageSchema,
1662
2049
  ToggleIssueReactionRequestMessageSchema,
2050
+ LibraryListRequestMessageSchema,
2051
+ LibraryUpsertMcpRequestMessageSchema,
2052
+ LibraryUpsertSkillRequestMessageSchema,
2053
+ LibraryDeleteRequestMessageSchema,
2054
+ LibrarySetAutoAttachRequestMessageSchema,
2055
+ LibraryImportExistingRequestMessageSchema,
2056
+ LibraryInstallFromHubRequestMessageSchema,
2057
+ LibraryUninstallFromHubRequestMessageSchema,
2058
+ HubTestRunStartRequestMessageSchema,
2059
+ HubTestRunCancelRequestMessageSchema,
1663
2060
  ]);
1664
2061
  // ============================================================================
1665
2062
  // Session Outbound Messages (Session emits these)
@@ -2243,6 +2640,20 @@ export const SetDaemonConfigResponseMessageSchema = z.object({
2243
2640
  })
2244
2641
  .passthrough(),
2245
2642
  });
2643
+ export const WeComOpenClawQrResponseMessageSchema = z.object({
2644
+ type: z.literal("wecom_openclaw_qr_response"),
2645
+ payload: z
2646
+ .object({
2647
+ requestId: z.string(),
2648
+ status: z.enum(["pending", "success", "error"]),
2649
+ scode: z.string().nullable(),
2650
+ authUrl: z.string().nullable(),
2651
+ qrPageUrl: z.string().nullable(),
2652
+ config: MutableDaemonConfigSchema.nullable(),
2653
+ error: z.string().nullable(),
2654
+ })
2655
+ .passthrough(),
2656
+ });
2246
2657
  export const GitForgeItemSchema = z.object({
2247
2658
  id: z.string(),
2248
2659
  kind: z.enum(["issue", "pull_request"]),
@@ -2281,6 +2692,101 @@ export const FetchGitForgeIssuesResponseMessageSchema = z.object({
2281
2692
  ]),
2282
2693
  }),
2283
2694
  });
2695
+ const GitForgeCheckoutSummarySchema = z.object({
2696
+ isGit: z.boolean(),
2697
+ repoRoot: z.string().nullable(),
2698
+ mainRepoRoot: z.string().nullable(),
2699
+ currentBranch: z.string().nullable(),
2700
+ isDirty: z.boolean().nullable(),
2701
+ baseRef: z.string().nullable(),
2702
+ aheadBehind: z
2703
+ .object({
2704
+ ahead: z.number(),
2705
+ behind: z.number(),
2706
+ })
2707
+ .nullable(),
2708
+ aheadOfOrigin: z.number().nullable(),
2709
+ behindOfOrigin: z.number().nullable(),
2710
+ hasRemote: z.boolean().nullable(),
2711
+ remoteUrl: z.string().nullable(),
2712
+ isSeaworkOwnedWorktree: z.boolean(),
2713
+ });
2714
+ const GitForgeDiscoveredWorktreeSchema = z.object({
2715
+ path: z.string(),
2716
+ createdAt: z.string(),
2717
+ branchName: z.string().optional(),
2718
+ head: z.string().optional(),
2719
+ checkout: GitForgeCheckoutSummarySchema.nullable(),
2720
+ error: z.string().optional(),
2721
+ });
2722
+ const GitForgeDiscoveredAgentSchema = z.object({
2723
+ id: z.string(),
2724
+ cwd: z.string(),
2725
+ lifecycle: z.string(),
2726
+ title: z.string().nullable(),
2727
+ labels: z.record(z.string()).default({}),
2728
+ worktreePath: z.string().nullable(),
2729
+ });
2730
+ const GitForgeGithubDiscoverySchema = z.discriminatedUnion("available", [
2731
+ z.object({
2732
+ available: z.literal(true),
2733
+ pullRequests: z.array(GitForgeItemSchema),
2734
+ fetchedAt: z.string(),
2735
+ }),
2736
+ z.object({
2737
+ available: z.literal(false),
2738
+ reason: z.enum(["no-token", "unsupported-host", "api-error"]),
2739
+ message: z.string().optional(),
2740
+ }),
2741
+ ]);
2742
+ export const DiscoverGitForgeIssueWorkResponseMessageSchema = z.object({
2743
+ type: z.literal("discover_git_forge_issue_work_response"),
2744
+ payload: z.object({
2745
+ requestId: z.string(),
2746
+ result: z.discriminatedUnion("ok", [
2747
+ z.object({
2748
+ ok: z.literal(true),
2749
+ repo: GitForgeRepoInfoSchema,
2750
+ cwd: z.string(),
2751
+ checkout: GitForgeCheckoutSummarySchema,
2752
+ worktrees: z.array(GitForgeDiscoveredWorktreeSchema),
2753
+ branchSuggestions: z.array(z.string()),
2754
+ activeAgents: z.array(GitForgeDiscoveredAgentSchema),
2755
+ github: GitForgeGithubDiscoverySchema,
2756
+ discoveredAt: z.string(),
2757
+ }),
2758
+ z.object({
2759
+ ok: z.literal(false),
2760
+ reason: z.enum(["no-workspace", "no-remote", "unsupported-host"]),
2761
+ host: z.string().optional(),
2762
+ message: z.string().optional(),
2763
+ }),
2764
+ ]),
2765
+ }),
2766
+ });
2767
+ export const TransitionGitForgeIssueWorkResponseMessageSchema = z.object({
2768
+ type: z.literal("transition_git_forge_issue_work_response"),
2769
+ payload: z.object({
2770
+ requestId: z.string(),
2771
+ result: z.discriminatedUnion("ok", [
2772
+ z.object({
2773
+ ok: z.literal(true),
2774
+ repo: GitForgeRepoInfoSchema,
2775
+ number: z.number().int().positive(),
2776
+ labels: z.array(z.string()),
2777
+ previousLabels: z.array(z.string()),
2778
+ transitionedAt: z.string(),
2779
+ source: z.enum(["manual", "symphony-web"]),
2780
+ }),
2781
+ z.object({
2782
+ ok: z.literal(false),
2783
+ reason: z.enum(["no-workspace", "no-remote", "no-token", "unsupported-host", "api-error"]),
2784
+ host: z.string().optional(),
2785
+ message: z.string().optional(),
2786
+ }),
2787
+ ]),
2788
+ }),
2789
+ });
2284
2790
  export const AgentPermissionRequestMessageSchema = z.object({
2285
2791
  type: z.literal("agent_permission_request"),
2286
2792
  payload: z.object({
@@ -2944,7 +3450,10 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
2944
3450
  SetVoiceModeResponseMessageSchema,
2945
3451
  GetDaemonConfigResponseMessageSchema,
2946
3452
  SetDaemonConfigResponseMessageSchema,
3453
+ WeComOpenClawQrResponseMessageSchema,
2947
3454
  FetchGitForgeIssuesResponseMessageSchema,
3455
+ DiscoverGitForgeIssueWorkResponseMessageSchema,
3456
+ TransitionGitForgeIssueWorkResponseMessageSchema,
2948
3457
  SetAgentModeResponseMessageSchema,
2949
3458
  SetAgentModelResponseMessageSchema,
2950
3459
  SetAgentThinkingResponseMessageSchema,
@@ -3016,6 +3525,8 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
3016
3525
  SchedulePauseResponseSchema,
3017
3526
  ScheduleResumeResponseSchema,
3018
3527
  ScheduleDeleteResponseSchema,
3528
+ ScheduleUpdateResponseSchema,
3529
+ ScheduleRunNowResponseSchema,
3019
3530
  LoopRunResponseSchema,
3020
3531
  LoopListResponseSchema,
3021
3532
  LoopInspectResponseSchema,
@@ -3028,6 +3539,17 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
3028
3539
  ListIssueCommentsResponseMessageSchema,
3029
3540
  PostIssueCommentResponseMessageSchema,
3030
3541
  ToggleIssueReactionResponseMessageSchema,
3542
+ LibraryListResponseMessageSchema,
3543
+ LibraryUpsertMcpResponseMessageSchema,
3544
+ LibraryUpsertSkillResponseMessageSchema,
3545
+ LibraryDeleteResponseMessageSchema,
3546
+ LibrarySetAutoAttachResponseMessageSchema,
3547
+ LibraryImportExistingResponseMessageSchema,
3548
+ LibraryInstallFromHubResponseMessageSchema,
3549
+ LibraryUninstallFromHubResponseMessageSchema,
3550
+ HubTestRunChunkMessageSchema,
3551
+ HubTestRunDoneResponseMessageSchema,
3552
+ LibraryUpdatedMessageSchema,
3031
3553
  ]);
3032
3554
  // ============================================================================
3033
3555
  // WebSocket Level Messages (wraps session messages)
@@ -3045,6 +3567,12 @@ export const WSHelloMessageSchema = z.object({
3045
3567
  clientType: z.enum(["mobile", "browser", "cli", "mcp"]),
3046
3568
  protocolVersion: z.number().int(),
3047
3569
  appVersion: z.string().optional(),
3570
+ /**
3571
+ * Pairing token for the browser extension. Only checked for connections whose
3572
+ * Origin is the fixed chrome-extension:// origin; ignored for every other
3573
+ * client. Optional for backward compatibility with older clients.
3574
+ */
3575
+ clientAuthToken: z.string().optional(),
3048
3576
  capabilities: z
3049
3577
  .object({
3050
3578
  voice: z.boolean().optional(),