@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
@@ -0,0 +1,114 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { chmodSync, existsSync, readFileSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ const BROWSER_EXTENSION_TOKEN_FILENAME = "browser-extension-token";
5
+ function getLogger(logger) {
6
+ return logger?.child({ module: "browser-extension-token" });
7
+ }
8
+ function getTokenPath(seaworkHome) {
9
+ return path.join(seaworkHome, BROWSER_EXTENSION_TOKEN_FILENAME);
10
+ }
11
+ function generateToken() {
12
+ // 24 bytes -> 32 base64url chars; long enough to be unguessable, short
13
+ // enough to paste by hand into the extension popup.
14
+ return randomBytes(24).toString("base64url");
15
+ }
16
+ // Process-wide cache keyed by $SEAWORK_HOME. Both bootstrap (which logs the
17
+ // token) and the WebSocket server (which validates it) call the getter; if the
18
+ // disk write ever fails, this guarantees they still agree on the same value
19
+ // rather than each minting a different random token (which would make the
20
+ // logged token never authenticate). Cleared only when the process restarts.
21
+ const cachedTokens = new Map();
22
+ /**
23
+ * Pairing token for the @seawork/chrome-ext browser extension.
24
+ *
25
+ * The extension's id is derived from a public manifest key, so the
26
+ * `chrome-extension://` Origin alone is NOT proof of a trusted publisher — any
27
+ * side-loaded extension copying that key gets the same id. This per-daemon
28
+ * secret closes that gap: the extension must present the token in its `hello`
29
+ * handshake, and a side-loaded clone can't read the user's `$SEAWORK_HOME`.
30
+ *
31
+ * - Persisted to `$SEAWORK_HOME/browser-extension-token`
32
+ * - Overridable via `SEAWORK_BROWSER_EXTENSION_TOKEN` (tests / fixed setups)
33
+ */
34
+ export function getOrCreateBrowserExtensionToken(seaworkHome, options) {
35
+ const env = options?.env ?? process.env;
36
+ const log = getLogger(options?.logger);
37
+ const tokenPath = getTokenPath(seaworkHome);
38
+ const cached = cachedTokens.get(seaworkHome);
39
+ if (cached) {
40
+ return cached;
41
+ }
42
+ const envOverride = typeof env.SEAWORK_BROWSER_EXTENSION_TOKEN === "string" &&
43
+ env.SEAWORK_BROWSER_EXTENSION_TOKEN.trim().length > 0
44
+ ? env.SEAWORK_BROWSER_EXTENSION_TOKEN.trim()
45
+ : null;
46
+ if (envOverride) {
47
+ // Sync the file to the env value (write when missing OR stale), so the path
48
+ // logged at startup always reads back the token actually being validated.
49
+ let onDisk = null;
50
+ if (existsSync(tokenPath)) {
51
+ try {
52
+ onDisk = readFileSync(tokenPath, "utf8").trim();
53
+ }
54
+ catch {
55
+ onDisk = null;
56
+ }
57
+ }
58
+ if (onDisk !== envOverride) {
59
+ try {
60
+ writeFileSync(tokenPath, `${envOverride}\n`, { encoding: "utf8", mode: 0o600 });
61
+ }
62
+ catch (error) {
63
+ log?.warn({ error }, "Failed to persist SEAWORK_BROWSER_EXTENSION_TOKEN override");
64
+ }
65
+ }
66
+ // writeFileSync's `mode` only applies when CREATING the file — overwriting an
67
+ // existing inode keeps its old perms, and the already-matching case never
68
+ // writes at all. Always chmod so a pre-existing wide-perm file is tightened
69
+ // regardless of which branch ran.
70
+ if (existsSync(tokenPath)) {
71
+ try {
72
+ chmodSync(tokenPath, 0o600);
73
+ }
74
+ catch {
75
+ // ignore (e.g. win32)
76
+ }
77
+ }
78
+ cachedTokens.set(seaworkHome, envOverride);
79
+ return envOverride;
80
+ }
81
+ if (existsSync(tokenPath)) {
82
+ try {
83
+ const parsed = readFileSync(tokenPath, "utf8").trim();
84
+ if (parsed.length > 0) {
85
+ // Tighten perms on a pre-existing file too — the 0600 on write only
86
+ // covers files we create, but an older/wide-perm token file should not
87
+ // stay world-readable. Best-effort: ignore on platforms that can't chmod.
88
+ try {
89
+ chmodSync(tokenPath, 0o600);
90
+ }
91
+ catch {
92
+ // ignore (e.g. win32)
93
+ }
94
+ cachedTokens.set(seaworkHome, parsed);
95
+ return parsed;
96
+ }
97
+ }
98
+ catch (error) {
99
+ log?.warn({ error }, "Failed to read browser-extension-token file, regenerating");
100
+ }
101
+ }
102
+ const created = generateToken();
103
+ try {
104
+ writeFileSync(tokenPath, `${created}\n`, { encoding: "utf8", mode: 0o600 });
105
+ }
106
+ catch (error) {
107
+ log?.warn({ error }, "Failed to persist browser extension token (continuing in-memory)");
108
+ }
109
+ // Cache regardless of write success: a failed persist must NOT cause the next
110
+ // caller to mint a different token (that is the drift this guards against).
111
+ cachedTokens.set(seaworkHome, created);
112
+ return created;
113
+ }
114
+ //# sourceMappingURL=browser-extension-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-extension-token.js","sourceRoot":"","sources":["../../../src/server/browser-extension-token.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type pino from "pino";
2
2
  import type { SubmitBugReportRequestMessage, SubmitBugReportResponseMessage } from "../shared/messages.js";
3
- import { type AgentRuntimeStats, type AgentStderrTail, type WsMessageRingEntry } from "./bug-report-redact.js";
3
+ import { type AgentRuntimeStats, type AgentStderrTail, type TurnTraceEntry, type WsMessageRingEntry } from "./bug-report-redact.js";
4
4
  export interface BugReportHandlerDeps {
5
5
  logger: pino.Logger;
6
6
  getSeaworkHome: () => string;
@@ -8,6 +8,12 @@ export interface BugReportHandlerDeps {
8
8
  getAgentRuntimeStats?: () => AgentRuntimeStats[] | undefined;
9
9
  getAgentStderrTails?: () => AgentStderrTail[] | undefined;
10
10
  getWsMessageRing?: () => WsMessageRingEntry[] | undefined;
11
+ getRecentTurnTraces?: () => TurnTraceEntry[] | undefined;
11
12
  }
13
+ export declare function readDiskFreeBytes(p: string): Promise<{
14
+ diskFreeBytes?: number;
15
+ diskTotalBytes?: number;
16
+ }>;
17
+ export declare function readLogTail(logPath: string, maxBytes: number): Promise<string | undefined>;
12
18
  export declare function handleSubmitBugReport(msg: SubmitBugReportRequestMessage, deps: BugReportHandlerDeps): Promise<SubmitBugReportResponseMessage>;
13
19
  //# sourceMappingURL=bug-report-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bug-report-handler.d.ts","sourceRoot":"","sources":["../../../src/server/bug-report-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAOL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,oBAAoB,CAAC,EAAE,MAAM,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC7D,mBAAmB,CAAC,EAAE,MAAM,eAAe,EAAE,GAAG,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,MAAM,kBAAkB,EAAE,GAAG,SAAS,CAAC;CAC3D;AA+BD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,6BAA6B,EAClC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,8BAA8B,CAAC,CAoGzC"}
1
+ {"version":3,"file":"bug-report-handler.d.ts","sourceRoot":"","sources":["../../../src/server/bug-report-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,oBAAoB,CAAC,EAAE,MAAM,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC7D,mBAAmB,CAAC,EAAE,MAAM,eAAe,EAAE,GAAG,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,MAAM,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC1D,mBAAmB,CAAC,EAAE,MAAM,cAAc,EAAE,GAAG,SAAS,CAAC;CAC1D;AAsCD,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,MAAM,GACR,OAAO,CAAC;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAe9D;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkChG;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,6BAA6B,EAClC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,8BAA8B,CAAC,CA+GzC"}
@@ -2,7 +2,7 @@ import { constants as fsConstants } from "node:fs";
2
2
  import fs from "node:fs/promises";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
- import { redactAgentRuntimeStats, redactAgentStderrTails, redactClientLogs, redactDaemonLogTail, redactDesktopInstallAttempts, redactWsMessageRing, } from "./bug-report-redact.js";
5
+ import { redactAgentRuntimeStats, redactAgentStderrTails, redactClientLogs, redactDaemonLogTail, redactDesktopInstallAttempts, redactDoctorMeta, redactTurnTraces, redactWsMessageRing, } from "./bug-report-redact.js";
6
6
  const DAEMON_LOG_TAIL_BYTES = 32 * 1024;
7
7
  // Defaults to the public production deployment so user-installed daemons
8
8
  // hit the same instance the desktop renderer uploads attachments to —
@@ -11,7 +11,49 @@ const DAEMON_LOG_TAIL_BYTES = 32 * 1024;
11
11
  // Override via BUG_INTAKE_URL env for local development against a sibling
12
12
  // bug-intake on 127.0.0.1:6790.
13
13
  const BUG_INTAKE_URL = process.env.BUG_INTAKE_URL?.replace(/\/+$/, "") || "https://seawork-bug-intake.sg.seaverse.dev";
14
- async function readLogTail(logPath, maxBytes) {
14
+ // Drop the daemon's 30s heartbeat lines from the bug-report tail before we
15
+ // hit the 32KB budget — without this filter a single ws_runtime_metrics
16
+ // line (full JSON: sessions/counters/inboundMessageTypesTop/agents…) easily
17
+ // runs into the tens of KB and evicts the actual turn_failed / handleStreamEvent
18
+ // errors reviewers need to triage user-reported "no response" bugs.
19
+ // (#483 #484 root cause.)
20
+ const HEARTBEAT_LOG_MARKER = '"msg":"ws_runtime_metrics"';
21
+ // Drop the per-delta agent-stream timing logs too: on a long turn they fire
22
+ // once per "timeline" event and flood the tail, evicting the turn_failed
23
+ // error a reviewer needs. Newer daemons no longer emit the "timeline" variant
24
+ // (#1215), but old daemons still do — filter at capture time to cover them.
25
+ const STREAM_TIMING_LOG_MARKER = '"msg":"[timing] agent_stream_event';
26
+ // Drop per-request slow-WS warnings too: under load every >500ms request logs
27
+ // one warn line, and a burst of them evicts the turn_failed root cause from
28
+ // the 32KB tail window (#1182).
29
+ const SLOW_REQUEST_LOG_MARKER = '"msg":"ws_slow_request"';
30
+ // statvfs the volume backing seaworkHome so engineers triaging a bug
31
+ // report can see whether the user is running near-full disk. ENOSPC is
32
+ // already covered by a dedicated graceful-shutdown path (#546), but for
33
+ // every *other* class of bug ("daemon hangs", "agent stuck", "files
34
+ // missing"), a sub-100MB volume is often the actual root cause.
35
+ //
36
+ // `fs.statfs` is stable on Node ≥18.15. Returns an empty object on any
37
+ // failure — we never throw out of the bug-report path just because we
38
+ // couldn't sample free space.
39
+ export async function readDiskFreeBytes(p) {
40
+ try {
41
+ const stat = await fs.statfs(p);
42
+ // bsize / blocks / bavail are bigints on some Node builds — coerce
43
+ // to Number so JSON.stringify produces plain numeric fields. Volumes
44
+ // larger than 2^53 bytes would lose precision; that's a non-issue
45
+ // for the "is the user near 0?" signal this is meant to provide.
46
+ const bsize = Number(stat.bsize);
47
+ return {
48
+ diskFreeBytes: Number(stat.bavail) * bsize,
49
+ diskTotalBytes: Number(stat.blocks) * bsize,
50
+ };
51
+ }
52
+ catch {
53
+ return {};
54
+ }
55
+ }
56
+ export async function readLogTail(logPath, maxBytes) {
15
57
  try {
16
58
  await fs.access(logPath, fsConstants.R_OK);
17
59
  }
@@ -21,11 +63,26 @@ async function readLogTail(logPath, maxBytes) {
21
63
  const handle = await fs.open(logPath, "r");
22
64
  try {
23
65
  const stat = await handle.stat();
24
- const start = Math.max(0, stat.size - maxBytes);
66
+ // Read 4x the requested budget so heartbeat-filtering still leaves
67
+ // enough real log lines to fill maxBytes. ws_runtime_metrics is a
68
+ // single fat line every 30s — on a busy session it can be 10-30%
69
+ // of bytes in the tail window.
70
+ const readBytes = Math.min(stat.size, maxBytes * 4);
71
+ const start = Math.max(0, stat.size - readBytes);
25
72
  const length = stat.size - start;
26
73
  const buffer = Buffer.alloc(length);
27
74
  await handle.read(buffer, 0, length, start);
28
- return buffer.toString("utf8");
75
+ const raw = buffer.toString("utf8");
76
+ // Drop the first (possibly partial) line we read mid-byte to avoid
77
+ // sending half-parsed JSON to the intake.
78
+ const lines = raw.split("\n");
79
+ if (start > 0 && lines.length > 0)
80
+ lines.shift();
81
+ const filtered = lines.filter((line) => !line.includes(HEARTBEAT_LOG_MARKER) &&
82
+ !line.includes(STREAM_TIMING_LOG_MARKER) &&
83
+ !line.includes(SLOW_REQUEST_LOG_MARKER));
84
+ const joined = filtered.join("\n");
85
+ return joined.length > maxBytes ? joined.slice(joined.length - maxBytes) : joined;
29
86
  }
30
87
  finally {
31
88
  await handle.close();
@@ -49,6 +106,7 @@ export async function handleSubmitBugReport(msg, deps) {
49
106
  logger.warn({ err }, "failed to read daemon.log tail");
50
107
  return undefined;
51
108
  });
109
+ const diskInfo = await readDiskFreeBytes(seaworkHome);
52
110
  let agentTimeline;
53
111
  if (fetchLastAgentTimeline) {
54
112
  try {
@@ -65,7 +123,11 @@ export async function handleSubmitBugReport(msg, deps) {
65
123
  displayName,
66
124
  clientId: msg.clientId,
67
125
  appVersion: msg.appVersion,
68
- device: msg.device,
126
+ // Augment client-supplied device fields with daemon-side disk-free
127
+ // sampling — the daemon is the only side that knows the real
128
+ // seaworkHome mount, and a near-full volume is a common hidden root
129
+ // cause across many "weird hangs" bug reports (#546).
130
+ device: { ...(msg.device ?? {}), ...diskInfo },
69
131
  clientLogs: redactClientLogs(msg.clientLogs),
70
132
  daemonLogTail: redactDaemonLogTail(daemonLogTail),
71
133
  agentTimeline,
@@ -76,6 +138,12 @@ export async function handleSubmitBugReport(msg, deps) {
76
138
  agentRuntimeStats: redactAgentRuntimeStats(msg.agentRuntimeStats ?? deps.getAgentRuntimeStats?.()),
77
139
  agentStderrTails: redactAgentStderrTails(msg.agentStderrTails ?? deps.getAgentStderrTails?.()),
78
140
  wsMessageRing: redactWsMessageRing(msg.wsMessageRing ?? deps.getWsMessageRing?.()),
141
+ recentTurnTraces: redactTurnTraces(msg.recentTurnTraces ?? deps.getRecentTurnTraces?.()),
142
+ doctorMeta: redactDoctorMeta(msg.doctorMeta),
143
+ userReproSteps: msg.userReproSteps,
144
+ userPreviouslyWorked: msg.userPreviouslyWorked,
145
+ userFrequency: msg.userFrequency,
146
+ userWaitSeconds: msg.userWaitSeconds,
79
147
  };
80
148
  try {
81
149
  const res = await fetch(BUG_INTAKE_URL + "/bugs", {
@@ -1 +1 @@
1
- {"version":3,"file":"bug-report-handler.js","sourceRoot":"","sources":["../../../src/server/bug-report-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bug-report-handler.js","sourceRoot":"","sources":["../../../src/server/bug-report-handler.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare function redactString(raw: string): string;
1
+ export declare function redactString(raw: string, maxLength?: number): string;
2
2
  export declare function redactLogLine(msg: string): string;
3
3
  export declare function redactClientLogs(logs: {
4
4
  level: string;
@@ -35,6 +35,8 @@ export interface AgentRuntimeStats {
35
35
  lastNotificationAt?: number | null;
36
36
  msSinceLastNotification?: number | null;
37
37
  pendingPermissions?: unknown[];
38
+ timelineRowCount?: number;
39
+ totalAgentCount?: number;
38
40
  }
39
41
  export interface WsMessageRingEntry {
40
42
  ts: number;
@@ -56,5 +58,27 @@ export interface WsMessageRingEntry {
56
58
  export declare function redactDesktopInstallAttempts(attempts: DesktopInstallAttempt[] | undefined): DesktopInstallAttempt[] | undefined;
57
59
  export declare function redactAgentStderrTails(tails: AgentStderrTail[] | undefined): AgentStderrTail[] | undefined;
58
60
  export declare function redactAgentRuntimeStats(stats: AgentRuntimeStats[] | undefined): AgentRuntimeStats[] | undefined;
61
+ export interface TurnTraceEntry {
62
+ ts: number;
63
+ agentId: string;
64
+ provider: string;
65
+ agentRole: "user-foreground" | "internal";
66
+ model?: string;
67
+ turnId?: string;
68
+ eventType: "turn_started" | "turn_completed" | "turn_failed" | "turn_canceled";
69
+ durationMs?: number;
70
+ error?: string;
71
+ code?: string;
72
+ diagnostic?: string;
73
+ }
74
+ export declare function redactTurnTraces(traces: TurnTraceEntry[] | undefined): TurnTraceEntry[] | undefined;
75
+ export interface BugReportDoctorMeta {
76
+ version?: string;
77
+ ranAt?: number;
78
+ ageMs?: number;
79
+ autoReran?: boolean;
80
+ path?: string;
81
+ }
82
+ export declare function redactDoctorMeta(meta: BugReportDoctorMeta | undefined): BugReportDoctorMeta | undefined;
59
83
  export declare function redactWsMessageRing(entries: WsMessageRingEntry[] | undefined): WsMessageRingEntry[] | undefined;
60
84
  //# sourceMappingURL=bug-report-redact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bug-report-redact.d.ts","sourceRoot":"","sources":["../../../src/server/bug-report-redact.ts"],"names":[],"mappings":"AAgDA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAShD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,GAC7D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,CAI1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMhF;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,6BAA6B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,qBAAqB,EAAE,GAAG,SAAS,GAC5C,qBAAqB,EAAE,GAAG,SAAS,CAYrC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EAAE,GAAG,SAAS,GACnC,eAAe,EAAE,GAAG,SAAS,CAO/B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAS,GACrC,iBAAiB,EAAE,GAAG,SAAS,CAiBjC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAAE,GAAG,SAAS,GACxC,kBAAkB,EAAE,GAAG,SAAS,CAoBlC"}
1
+ {"version":3,"file":"bug-report-redact.d.ts","sourceRoot":"","sources":["../../../src/server/bug-report-redact.ts"],"names":[],"mappings":"AAgDA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAkB,GAAG,MAAM,CAS7E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,GAC7D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,CAI1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMhF;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,6BAA6B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,qBAAqB,EAAE,GAAG,SAAS,GAC5C,qBAAqB,EAAE,GAAG,SAAS,CAcrC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EAAE,GAAG,SAAS,GACnC,eAAe,EAAE,GAAG,SAAS,CAO/B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAS,GACrC,iBAAiB,EAAE,GAAG,SAAS,CAmBjC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,eAAe,CAAC;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,GACnC,cAAc,EAAE,GAAG,SAAS,CAe9B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,mBAAmB,GAAG,SAAS,GACpC,mBAAmB,GAAG,SAAS,CAcjC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAAE,GAAG,SAAS,GACxC,kBAAkB,EAAE,GAAG,SAAS,CAoBlC"}
@@ -43,13 +43,13 @@ const REDACTIONS = [
43
43
  // Windows user path
44
44
  { pattern: /C:\\Users\\[^\\\s"']+/g, replace: "C:\\Users\\<user>" },
45
45
  ];
46
- export function redactString(raw) {
46
+ export function redactString(raw, maxLength = MAX_LINE_LENGTH) {
47
47
  let out = raw;
48
48
  for (const { pattern, replace } of REDACTIONS) {
49
49
  out = out.replace(pattern, replace);
50
50
  }
51
- if (out.length > MAX_LINE_LENGTH) {
52
- out = out.slice(0, MAX_LINE_LENGTH) + "…[truncated]";
51
+ if (out.length > maxLength) {
52
+ out = out.slice(0, maxLength) + "…[truncated]";
53
53
  }
54
54
  return out;
55
55
  }
@@ -87,7 +87,9 @@ export function redactDesktopInstallAttempts(attempts) {
87
87
  args: a.args.map((arg) => redactString(arg)),
88
88
  code: a.code,
89
89
  reason: a.reason,
90
- stderrTail: redactString(a.stderrTail),
90
+ // 8192 matches the source stderr ring buffer cap; the default 2000 would
91
+ // cut off the x-request-id codex logs near the end of the tail (#1182).
92
+ stderrTail: redactString(a.stderrTail, 8192),
91
93
  spawnError: a.spawnError ? redactString(a.spawnError) : undefined,
92
94
  }));
93
95
  }
@@ -97,7 +99,7 @@ export function redactAgentStderrTails(tails) {
97
99
  return tails.map((tail) => ({
98
100
  agentId: redactString(tail.agentId),
99
101
  provider: redactString(tail.provider),
100
- stderrTail: redactString(tail.stderrTail),
102
+ stderrTail: redactString(tail.stderrTail, 8192),
101
103
  }));
102
104
  }
103
105
  export function redactAgentRuntimeStats(stats) {
@@ -117,8 +119,43 @@ export function redactAgentRuntimeStats(stats) {
117
119
  pendingPermissions: entry.pendingPermissions
118
120
  ? entry.pendingPermissions.map((permission) => redactString(JSON.stringify(permission)))
119
121
  : undefined,
122
+ timelineRowCount: entry.timelineRowCount,
123
+ totalAgentCount: entry.totalAgentCount,
120
124
  }));
121
125
  }
126
+ export function redactTurnTraces(traces) {
127
+ if (!traces)
128
+ return undefined;
129
+ return traces.map((entry) => ({
130
+ ts: entry.ts,
131
+ agentId: redactString(entry.agentId),
132
+ provider: redactString(entry.provider),
133
+ agentRole: entry.agentRole,
134
+ model: entry.model ? redactString(entry.model) : undefined,
135
+ turnId: entry.turnId ? redactString(entry.turnId) : undefined,
136
+ eventType: entry.eventType,
137
+ durationMs: entry.durationMs,
138
+ error: entry.error ? redactString(entry.error) : undefined,
139
+ code: entry.code,
140
+ diagnostic: entry.diagnostic ? redactString(entry.diagnostic) : undefined,
141
+ }));
142
+ }
143
+ export function redactDoctorMeta(meta) {
144
+ if (!meta)
145
+ return undefined;
146
+ // The desktop sends the absolute local log path (e.g. /Users/alice/...
147
+ // /doctor-logs/...). Run it through the same path-redaction pass we use
148
+ // on log tails so the user's home directory / username never reach
149
+ // bug-intake. version is read from the doctor log banner which can
150
+ // theoretically carry odd build suffixes — redact too, defensively.
151
+ return {
152
+ version: meta.version ? redactString(meta.version) : undefined,
153
+ ranAt: meta.ranAt,
154
+ ageMs: meta.ageMs,
155
+ autoReran: meta.autoReran,
156
+ path: meta.path ? redactString(meta.path) : undefined,
157
+ };
158
+ }
122
159
  export function redactWsMessageRing(entries) {
123
160
  if (!entries)
124
161
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"bug-report-redact.js","sourceRoot":"","sources":["../../../src/server/bug-report-redact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bug-report-redact.js","sourceRoot":"","sources":["../../../src/server/bug-report-redact.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAK,CAAC;AAC9B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,UAAU,GAA2C;IACzD,sEAAsE;IACtE,yEAAyE;IACzE,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,oDAAoD;IACpD;QACE,OAAO,EAAE,0CAA0C;QACnD,OAAO,EAAE,eAAe;KACzB;IACD,8BAA8B;IAC9B,EAAE,OAAO,EAAE,6CAA6C,EAAE,OAAO,EAAE,eAAe,EAAE;IACpF,8BAA8B;IAC9B,EAAE,OAAO,EAAE,8CAA8C,EAAE,OAAO,EAAE,cAAc,EAAE;IACpF,8EAA8E;IAC9E;QACE,OAAO,EACL,mLAAmL;QACrL,OAAO,EAAE,cAAc;KACxB;IACD,gBAAgB;IAChB,EAAE,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,qBAAqB,EAAE;IAC5E,wDAAwD;IACxD;QACE,OAAO,EAAE,gEAAgE;QACzE,OAAO,EAAE,eAAe;KACzB;IACD,2CAA2C;IAC3C;QACE,OAAO,EAAE,oEAAoE;QAC7E,OAAO,EAAE,gBAAgB;KAC1B;IACD,2EAA2E;IAC3E;QACE,OAAO,EAAE,0EAA0E;QACnF,OAAO,EAAE,SAAS;KACnB;IACD,gCAAgC;IAChC,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,eAAe,EAAE;IAC5D,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,EAAE;IAC1D,oBAAoB;IACpB,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,mBAAmB,EAAE;CACpE,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,SAAS,GAAG,eAAe;IACnE,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,UAAU,EAAE,CAAC;QAC9C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAA8D;IAE9D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AA4CD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAA6C;IAE7C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,yEAAyE;QACzE,wEAAwE;QACxE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC;QAC5C,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAoC;IAEpC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;KAChD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAsC;IAEtC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACtE,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YAClD,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,sBAAsB,CAAC;YAC5C,CAAC,CAAC,KAAK,CAAC,sBAAsB;QAChC,6BAA6B,EAAE,KAAK,CAAC,6BAA6B;QAClE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;QACtD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC1C,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YACxF,CAAC,CAAC,SAAS;QACb,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CAAC,CAAC;AACN,CAAC;AAgBD,MAAM,UAAU,gBAAgB,CAC9B,MAAoC;IAEpC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1D,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7D,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;KAC1E,CAAC,CAAC,CAAC;AACN,CAAC;AAUD,MAAM,UAAU,gBAAgB,CAC9B,IAAqC;IAErC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,uEAAuE;IACvE,wEAAwE;IACxE,mEAAmE;IACnE,mEAAmE;IACnE,oEAAoE;IACpE,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAyC;IAEzC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACtE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACtE,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { SeaworkDaemonConfig } from "./bootstrap.js";
2
2
  import { type AllowedHostsConfig } from "./allowed-hosts.js";
3
+ export declare const CHROME_EXTENSION_ORIGIN = "chrome-extension://pimpgbokghhgckgedokfjcpicjhlfdnb";
3
4
  export type CliConfigOverrides = Partial<{
4
5
  listen: string;
5
6
  relayEnabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAK1D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAwB5B,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,kBAAkB,CAAC;CAClC,CAAC,CAAC;AAcH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,kBAAkB,CAAC;CAC1B,GACA,mBAAmB,CA2FrB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAK1D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAc5B,eAAO,MAAM,uBAAuB,wDAAwD,CAAC;AAsB7F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,kBAAkB,CAAC;CAClC,CAAC,CAAC;AAyBH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,kBAAkB,CAAC;CAC1B,GACA,mBAAmB,CAgIrB"}
@@ -4,7 +4,18 @@ import { loadPersistedConfig } from "./persisted-config.js";
4
4
  import { AgentProviderSchema } from "./agent/provider-manifest.js";
5
5
  import { resolveSpeechConfig } from "./speech/speech-config-resolver.js";
6
6
  import { mergeAllowedHosts, parseAllowedHostsEnv, } from "./allowed-hosts.js";
7
+ import { resolveWeComOpenClawAgentCwd } from "./integrations/wecom-openclaw/workspace.js";
7
8
  const DEFAULT_PORT = 6767;
9
+ // Fixed origin of the @seawork/chrome-ext browser extension. Its manifest pins a
10
+ // public `key`, so its extension id (and thus its chrome-extension:// origin) is
11
+ // constant across machines. Browsers force this Origin on extension-initiated
12
+ // WebSocket connections and it isn't loopback, so it would be rejected by the
13
+ // origin check; allowlisting it lets the handshake proceed WITHOUT per-user
14
+ // SEAWORK_CORS_ORIGINS setup. Allowlisting alone is NOT trust: the id derives
15
+ // from a public key, so a side-loaded clone shares it — the connection is then
16
+ // authenticated by a per-daemon pairing token checked in handleHello (see
17
+ // browser-extension-token.ts). Keep in sync with packages/chrome-ext/manifest.json.
18
+ export const CHROME_EXTENSION_ORIGIN = "chrome-extension://pimpgbokghhgckgedokfjcpicjhlfdnb";
8
19
  // Defaults can be overridden via SEAWORK_RELAY_ENDPOINT and SEAWORK_APP_BASE_URL env vars
9
20
  // or persisted config. Replace these with your own domain after Cloudflare setup.
10
21
  const DEFAULT_RELAY_ENDPOINT = "relay.seawork.ai:443";
@@ -30,6 +41,16 @@ function parseOptionalVoiceLlmProvider(value) {
30
41
  const parsed = OptionalVoiceLlmProviderSchema.safeParse(value);
31
42
  return parsed.success ? parsed.data : null;
32
43
  }
44
+ function parseCsvEnv(value) {
45
+ if (!value) {
46
+ return undefined;
47
+ }
48
+ const items = value
49
+ .split(",")
50
+ .map((item) => item.trim())
51
+ .filter(Boolean);
52
+ return items.length > 0 ? items : undefined;
53
+ }
33
54
  export function loadConfig(seaworkHome, options) {
34
55
  const env = options?.env ?? process.env;
35
56
  const persisted = loadPersistedConfig(seaworkHome);
@@ -52,7 +73,7 @@ export function loadConfig(seaworkHome, options) {
52
73
  options?.cli?.allowedHosts,
53
74
  ]);
54
75
  const mcpEnabled = options?.cli?.mcpEnabled ?? persisted.daemon?.mcp?.enabled ?? true;
55
- const mcpInjectIntoAgents = options?.cli?.mcpInjectIntoAgents ?? persisted.daemon?.mcp?.injectIntoAgents ?? false;
76
+ const mcpInjectIntoAgents = options?.cli?.mcpInjectIntoAgents ?? persisted.daemon?.mcp?.injectIntoAgents ?? true;
56
77
  const relayEnabled = options?.cli?.relayEnabled ??
57
78
  parseBooleanEnv(env.SEAWORK_RELAY_ENABLED) ??
58
79
  persisted.daemon?.relay?.enabled ??
@@ -70,12 +91,40 @@ export function loadConfig(seaworkHome, options) {
70
91
  const voiceLlmProvider = envVoiceLlmProvider ?? persistedVoiceLlmProvider ?? null;
71
92
  const voiceLlmProviderExplicit = envVoiceLlmProvider !== null || persistedVoiceLlmProvider !== null;
72
93
  const voiceLlmModel = persisted.features?.voiceMode?.llm?.model ?? null;
94
+ const persistedWeComOpenClaw = persisted.integrations?.wecomOpenClaw;
95
+ const wecomOpenClawCwd = resolveWeComOpenClawAgentCwd(env.SEAWORK_WECOM_OPENCLAW_CWD ?? persistedWeComOpenClaw?.cwd, seaworkHome);
96
+ const wecomOpenClaw = {
97
+ enabled: parseBooleanEnv(env.SEAWORK_WECOM_OPENCLAW_ENABLED) ??
98
+ persistedWeComOpenClaw?.enabled ??
99
+ false,
100
+ botId: env.SEAWORK_WECOM_OPENCLAW_BOT_ID ?? persistedWeComOpenClaw?.botId,
101
+ secret: env.SEAWORK_WECOM_OPENCLAW_SECRET ?? persistedWeComOpenClaw?.secret,
102
+ websocketUrl: env.SEAWORK_WECOM_OPENCLAW_WEBSOCKET_URL ?? persistedWeComOpenClaw?.websocketUrl,
103
+ cwd: wecomOpenClawCwd,
104
+ seaworkHome,
105
+ provider: env.SEAWORK_WECOM_OPENCLAW_PROVIDER ?? persistedWeComOpenClaw?.provider ?? "codex",
106
+ modeId: env.SEAWORK_WECOM_OPENCLAW_MODE ?? persistedWeComOpenClaw?.modeId,
107
+ model: env.SEAWORK_WECOM_OPENCLAW_MODEL ?? persistedWeComOpenClaw?.model,
108
+ thinkingOptionId: env.SEAWORK_WECOM_OPENCLAW_THINKING ?? persistedWeComOpenClaw?.thinkingOptionId,
109
+ pluginVersion: env.SEAWORK_WECOM_OPENCLAW_PLUGIN_VERSION ?? persistedWeComOpenClaw?.pluginVersion,
110
+ allowUsers: parseCsvEnv(env.SEAWORK_WECOM_OPENCLAW_ALLOW_USERS) ?? persistedWeComOpenClaw?.allowUsers,
111
+ allowChats: parseCsvEnv(env.SEAWORK_WECOM_OPENCLAW_ALLOW_CHATS) ?? persistedWeComOpenClaw?.allowChats,
112
+ pendingAllowFirstUser: persistedWeComOpenClaw?.pendingAllowFirstUser,
113
+ agentMode: persistedWeComOpenClaw?.agentMode,
114
+ agentId: persistedWeComOpenClaw?.agentId,
115
+ maxInboundMediaBytes: persistedWeComOpenClaw?.maxInboundMediaBytes,
116
+ mediaDownloadTimeoutMs: persistedWeComOpenClaw?.mediaDownloadTimeoutMs,
117
+ mediaAggregateWindowMs: persistedWeComOpenClaw?.mediaAggregateWindowMs,
118
+ mediaOutputAllowedRoots: persistedWeComOpenClaw?.mediaOutputAllowedRoots,
119
+ };
73
120
  return {
74
121
  listen,
75
122
  seaworkHome,
76
123
  corsAllowedOrigins: Array.from(new Set([
77
124
  // Always allow the hosted web app regardless of persisted config
78
125
  "https://app.seawork.ai",
126
+ // Always allow the fixed-id browser extension (see CHROME_EXTENSION_ORIGIN)
127
+ CHROME_EXTENSION_ORIGIN,
79
128
  ...persistedCorsOrigins,
80
129
  ...envCorsOrigins,
81
130
  ].filter((s) => s.length > 0))),
@@ -96,6 +145,7 @@ export function loadConfig(seaworkHome, options) {
96
145
  voiceLlmProviderExplicit,
97
146
  voiceLlmModel,
98
147
  agentProviderSettings: persisted.agents?.providers,
148
+ wecomOpenClaw,
99
149
  };
100
150
  }
101
151
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"crash-report.d.ts","sourceRoot":"","sources":["../../../src/server/crash-report.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAW7B,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAYxE;AAsBD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,qBAAqB,CAAC;AAE3D,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+G1F"}
1
+ {"version":3,"file":"crash-report.d.ts","sourceRoot":"","sources":["../../../src/server/crash-report.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAW7B,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAYxE;AAsBD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,qBAAqB,CAAC;AAE3D,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiI1F"}
@@ -144,6 +144,22 @@ export async function emitDaemonCrashReport(args) {
144
144
  return;
145
145
  }
146
146
  const daemonLogTail = await readLogTail(path.join(seaworkHome, "daemon.log"), DAEMON_LOG_TAIL_BYTES).catch(() => undefined);
147
+ // Sample free space on the volume backing seaworkHome. ENOSPC itself
148
+ // is short-circuited before we get here (#546), but for the other
149
+ // crash kinds knowing whether the user was near-full at the time of
150
+ // the crash often resolves "weird transient failure" triage in one
151
+ // glance. Errors here never block the report.
152
+ let diskFreeBytes;
153
+ let diskTotalBytes;
154
+ try {
155
+ const stat = await fs.statfs(seaworkHome);
156
+ const bsize = Number(stat.bsize);
157
+ diskFreeBytes = Number(stat.bavail) * bsize;
158
+ diskTotalBytes = Number(stat.blocks) * bsize;
159
+ }
160
+ catch {
161
+ /* leave undefined */
162
+ }
147
163
  let appVersion;
148
164
  try {
149
165
  appVersion = resolveDaemonVersion();
@@ -192,6 +208,8 @@ export async function emitDaemonCrashReport(args) {
192
208
  platform: process.platform,
193
209
  arch: process.arch,
194
210
  nodeVersion: process.version,
211
+ ...(diskFreeBytes !== undefined ? { diskFreeBytes } : {}),
212
+ ...(diskTotalBytes !== undefined ? { diskTotalBytes } : {}),
195
213
  },
196
214
  daemonLogTail: redactDaemonLogTail(daemonLogTail),
197
215
  };