@seawork/server 1.0.22-rc.3 → 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.
- package/dist/scripts/supervisor-entrypoint.js +48 -8
- package/dist/scripts/supervisor-entrypoint.js.map +1 -1
- package/dist/scripts/supervisor-native-classifier.js +77 -5
- package/dist/scripts/supervisor-native-classifier.js.map +1 -1
- package/dist/scripts/supervisor-stdio-tail.js +27 -0
- package/dist/scripts/supervisor-stdio-tail.js.map +1 -0
- package/dist/scripts/supervisor.js +12 -0
- package/dist/scripts/supervisor.js.map +1 -1
- package/dist/server/client/daemon-client.d.ts +142 -2
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +384 -3
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/agent-manager.d.ts +55 -3
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +324 -45
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.d.ts +1 -0
- package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.js +8 -0
- package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
- package/dist/server/server/agent/agent-projections.js +7 -2
- package/dist/server/server/agent/agent-projections.js.map +1 -1
- package/dist/server/server/agent/agent-response-loop.d.ts +3 -1
- package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
- package/dist/server/server/agent/agent-response-loop.js +33 -6
- package/dist/server/server/agent/agent-response-loop.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +43 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/claude-memory.d.ts +4 -0
- package/dist/server/server/agent/claude-memory.d.ts.map +1 -0
- package/dist/server/server/agent/claude-memory.js +97 -0
- package/dist/server/server/agent/claude-memory.js.map +1 -0
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-server.js +247 -0
- package/dist/server/server/agent/mcp-server.js.map +1 -1
- package/dist/server/server/agent/mcp-shared.d.ts +2 -0
- package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
- package/dist/server/server/agent/provider-launch-config.d.ts +6 -139
- package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
- package/dist/server/server/agent/provider-launch-config.js +65 -33
- package/dist/server/server/agent/provider-launch-config.js.map +1 -1
- package/dist/server/server/agent/provider-manifest.d.ts +1 -0
- package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
- package/dist/server/server/agent/provider-manifest.js +36 -0
- package/dist/server/server/agent/provider-manifest.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +4 -0
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.d.ts +3 -1
- package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.js +13 -0
- package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.js +141 -27
- package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
- package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js +14 -1
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +132 -4
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +2233 -163
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/codex-binary-resolver.d.ts +9 -0
- package/dist/server/server/agent/providers/codex-binary-resolver.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-binary-resolver.js +35 -14
- package/dist/server/server/agent/providers/codex-binary-resolver.js.map +1 -1
- package/dist/server/server/agent/providers/codex-health-probe.js +1 -1
- package/dist/server/server/agent/providers/codex-health-probe.js.map +1 -1
- package/dist/server/server/agent/providers/deepseek/constants.d.ts +4 -0
- package/dist/server/server/agent/providers/deepseek/constants.d.ts.map +1 -0
- package/dist/server/server/agent/providers/deepseek/constants.js +11 -0
- package/dist/server/server/agent/providers/deepseek/constants.js.map +1 -0
- package/dist/server/server/agent/providers/deepseek/event-mapper.d.ts +21 -0
- package/dist/server/server/agent/providers/deepseek/event-mapper.d.ts.map +1 -0
- package/dist/server/server/agent/providers/deepseek/event-mapper.js +286 -0
- package/dist/server/server/agent/providers/deepseek/event-mapper.js.map +1 -0
- package/dist/server/server/agent/providers/deepseek/serve-client.d.ts +94 -0
- package/dist/server/server/agent/providers/deepseek/serve-client.d.ts.map +1 -0
- package/dist/server/server/agent/providers/deepseek/serve-client.js +142 -0
- package/dist/server/server/agent/providers/deepseek/serve-client.js.map +1 -0
- package/dist/server/server/agent/providers/deepseek/serve-process.d.ts +18 -0
- package/dist/server/server/agent/providers/deepseek/serve-process.d.ts.map +1 -0
- package/dist/server/server/agent/providers/deepseek/serve-process.js +93 -0
- package/dist/server/server/agent/providers/deepseek/serve-process.js.map +1 -0
- package/dist/server/server/agent/providers/deepseek-agent.d.ts +94 -0
- package/dist/server/server/agent/providers/deepseek-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/deepseek-agent.js +811 -0
- package/dist/server/server/agent/providers/deepseek-agent.js.map +1 -0
- package/dist/server/server/agent/providers/gateway-telemetry.d.ts +9 -0
- package/dist/server/server/agent/providers/gateway-telemetry.d.ts.map +1 -0
- package/dist/server/server/agent/providers/gateway-telemetry.js +36 -0
- package/dist/server/server/agent/providers/gateway-telemetry.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent/constants.d.ts +3 -0
- package/dist/server/server/agent/providers/seaagent/constants.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent/constants.js +3 -0
- package/dist/server/server/agent/providers/seaagent/constants.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent/event-mapper.d.ts +3 -0
- package/dist/server/server/agent/providers/seaagent/event-mapper.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent/event-mapper.js +69 -0
- package/dist/server/server/agent/providers/seaagent/event-mapper.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent/rpc-client.d.ts +23 -0
- package/dist/server/server/agent/providers/seaagent/rpc-client.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent/rpc-client.js +139 -0
- package/dist/server/server/agent/providers/seaagent/rpc-client.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent/tool-call-mapper.d.ts +3 -0
- package/dist/server/server/agent/providers/seaagent/tool-call-mapper.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent/tool-call-mapper.js +38 -0
- package/dist/server/server/agent/providers/seaagent/tool-call-mapper.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent-agent.d.ts +81 -0
- package/dist/server/server/agent/providers/seaagent-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent-agent.js +502 -0
- package/dist/server/server/agent/providers/seaagent-agent.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent-binary-resolver.d.ts +18 -0
- package/dist/server/server/agent/providers/seaagent-binary-resolver.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent-binary-resolver.js +46 -0
- package/dist/server/server/agent/providers/seaagent-binary-resolver.js.map +1 -0
- package/dist/server/server/agent/providers/seaagent-health-probe.d.ts +11 -0
- package/dist/server/server/agent/providers/seaagent-health-probe.d.ts.map +1 -0
- package/dist/server/server/agent/providers/seaagent-health-probe.js +49 -0
- package/dist/server/server/agent/providers/seaagent-health-probe.js.map +1 -0
- package/dist/server/server/agent/providers/seawork-models.d.ts +8 -0
- package/dist/server/server/agent/providers/seawork-models.d.ts.map +1 -1
- package/dist/server/server/agent/providers/seawork-models.js +118 -74
- package/dist/server/server/agent/providers/seawork-models.js.map +1 -1
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +2 -2
- package/dist/server/server/agent/timeline-projection.d.ts +5 -1
- package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
- package/dist/server/server/agent/timeline-projection.js +20 -4
- package/dist/server/server/agent/timeline-projection.js.map +1 -1
- package/dist/server/server/agent-attention-policy.d.ts +1 -0
- package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
- package/dist/server/server/agent-attention-policy.js +6 -0
- package/dist/server/server/agent-attention-policy.js.map +1 -1
- package/dist/server/server/allowed-hosts.d.ts +13 -0
- package/dist/server/server/allowed-hosts.d.ts.map +1 -1
- package/dist/server/server/allowed-hosts.js +33 -0
- package/dist/server/server/allowed-hosts.js.map +1 -1
- package/dist/server/server/bootstrap.d.ts +2 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +200 -14
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/browser-extension-token.d.ts +23 -0
- package/dist/server/server/browser-extension-token.d.ts.map +1 -0
- package/dist/server/server/browser-extension-token.js +114 -0
- package/dist/server/server/browser-extension-token.js.map +1 -0
- package/dist/server/server/bug-report-handler.d.ts +7 -1
- package/dist/server/server/bug-report-handler.d.ts.map +1 -1
- package/dist/server/server/bug-report-handler.js +73 -5
- package/dist/server/server/bug-report-handler.js.map +1 -1
- package/dist/server/server/bug-report-redact.d.ts +25 -1
- package/dist/server/server/bug-report-redact.d.ts.map +1 -1
- package/dist/server/server/bug-report-redact.js +42 -5
- package/dist/server/server/bug-report-redact.js.map +1 -1
- package/dist/server/server/config.d.ts +1 -0
- package/dist/server/server/config.d.ts.map +1 -1
- package/dist/server/server/config.js +51 -1
- package/dist/server/server/config.js.map +1 -1
- package/dist/server/server/crash-report.d.ts.map +1 -1
- package/dist/server/server/crash-report.js +18 -0
- package/dist/server/server/crash-report.js.map +1 -1
- package/dist/server/server/daemon-config-store.d.ts.map +1 -1
- package/dist/server/server/daemon-config-store.js +94 -3
- package/dist/server/server/daemon-config-store.js.map +1 -1
- package/dist/server/server/disk-full.d.ts +4 -0
- package/dist/server/server/disk-full.d.ts.map +1 -0
- package/dist/server/server/disk-full.js +46 -0
- package/dist/server/server/disk-full.js.map +1 -0
- package/dist/server/server/exports.d.ts +3 -2
- package/dist/server/server/exports.d.ts.map +1 -1
- package/dist/server/server/exports.js +2 -1
- package/dist/server/server/exports.js.map +1 -1
- package/dist/server/server/git-forge/github-client.d.ts +18 -0
- package/dist/server/server/git-forge/github-client.d.ts.map +1 -1
- package/dist/server/server/git-forge/github-client.js +88 -0
- package/dist/server/server/git-forge/github-client.js.map +1 -1
- package/dist/server/server/git-forge/parse-remote.d.ts +2 -0
- package/dist/server/server/git-forge/parse-remote.d.ts.map +1 -1
- package/dist/server/server/git-forge/parse-remote.js +71 -6
- package/dist/server/server/git-forge/parse-remote.js.map +1 -1
- package/dist/server/server/git-forge/service.d.ts +87 -0
- package/dist/server/server/git-forge/service.d.ts.map +1 -1
- package/dist/server/server/git-forge/service.js +198 -4
- package/dist/server/server/git-forge/service.js.map +1 -1
- package/dist/server/server/index.js +72 -0
- package/dist/server/server/index.js.map +1 -1
- package/dist/server/server/integrations/wecom-openclaw/bridge.d.ts +88 -0
- package/dist/server/server/integrations/wecom-openclaw/bridge.d.ts.map +1 -0
- package/dist/server/server/integrations/wecom-openclaw/bridge.js +1229 -0
- package/dist/server/server/integrations/wecom-openclaw/bridge.js.map +1 -0
- package/dist/server/server/integrations/wecom-openclaw/qr.d.ts +38 -0
- package/dist/server/server/integrations/wecom-openclaw/qr.d.ts.map +1 -0
- package/dist/server/server/integrations/wecom-openclaw/qr.js +101 -0
- package/dist/server/server/integrations/wecom-openclaw/qr.js.map +1 -0
- package/dist/server/server/integrations/wecom-openclaw/workspace.d.ts +5 -0
- package/dist/server/server/integrations/wecom-openclaw/workspace.d.ts.map +1 -0
- package/dist/server/server/integrations/wecom-openclaw/workspace.js +40 -0
- package/dist/server/server/integrations/wecom-openclaw/workspace.js.map +1 -0
- package/dist/server/server/latency-proxy.d.ts.map +1 -1
- package/dist/server/server/latency-proxy.js +45 -5
- package/dist/server/server/latency-proxy.js.map +1 -1
- package/dist/server/server/library/codex-skill-discovery.d.ts +9 -0
- package/dist/server/server/library/codex-skill-discovery.d.ts.map +1 -0
- package/dist/server/server/library/codex-skill-discovery.js +49 -0
- package/dist/server/server/library/codex-skill-discovery.js.map +1 -0
- package/dist/server/server/library/hub-install.d.ts +79 -0
- package/dist/server/server/library/hub-install.d.ts.map +1 -0
- package/dist/server/server/library/hub-install.js +263 -0
- package/dist/server/server/library/hub-install.js.map +1 -0
- package/dist/server/server/library/hub-test-run.d.ts +81 -0
- package/dist/server/server/library/hub-test-run.d.ts.map +1 -0
- package/dist/server/server/library/hub-test-run.js +237 -0
- package/dist/server/server/library/hub-test-run.js.map +1 -0
- package/dist/server/server/library/library-import.d.ts +27 -0
- package/dist/server/server/library/library-import.d.ts.map +1 -0
- package/dist/server/server/library/library-import.js +227 -0
- package/dist/server/server/library/library-import.js.map +1 -0
- package/dist/server/server/library/library-injection.d.ts +16 -0
- package/dist/server/server/library/library-injection.d.ts.map +1 -0
- package/dist/server/server/library/library-injection.js +49 -0
- package/dist/server/server/library/library-injection.js.map +1 -0
- package/dist/server/server/library/library-rpc.d.ts +73 -0
- package/dist/server/server/library/library-rpc.d.ts.map +1 -0
- package/dist/server/server/library/library-rpc.js +239 -0
- package/dist/server/server/library/library-rpc.js.map +1 -0
- package/dist/server/server/library/library-store.d.ts +35 -0
- package/dist/server/server/library/library-store.d.ts.map +1 -0
- package/dist/server/server/library/library-store.js +169 -0
- package/dist/server/server/library/library-store.js.map +1 -0
- package/dist/server/server/library/library-sync.d.ts +46 -0
- package/dist/server/server/library/library-sync.d.ts.map +1 -0
- package/dist/server/server/library/library-sync.js +235 -0
- package/dist/server/server/library/library-sync.js.map +1 -0
- package/dist/server/server/library/library-types.d.ts +756 -0
- package/dist/server/server/library/library-types.d.ts.map +1 -0
- package/dist/server/server/library/library-types.js +99 -0
- package/dist/server/server/library/library-types.js.map +1 -0
- package/dist/server/server/library/worktree-dev.d.ts +14 -0
- package/dist/server/server/library/worktree-dev.d.ts.map +1 -0
- package/dist/server/server/library/worktree-dev.js +24 -0
- package/dist/server/server/library/worktree-dev.js.map +1 -0
- package/dist/server/server/log-stream-error.d.ts +2 -0
- package/dist/server/server/log-stream-error.d.ts.map +1 -0
- package/dist/server/server/log-stream-error.js +33 -0
- package/dist/server/server/log-stream-error.js.map +1 -0
- package/dist/server/server/logger.d.ts +1 -0
- package/dist/server/server/logger.d.ts.map +1 -1
- package/dist/server/server/logger.js +32 -0
- package/dist/server/server/logger.js.map +1 -1
- package/dist/server/server/loop/rpc-schemas.d.ts +96 -96
- package/dist/server/server/loop-service.d.ts +18 -18
- package/dist/server/server/messages.d.ts +4 -1
- package/dist/server/server/messages.d.ts.map +1 -1
- package/dist/server/server/messages.js +40 -2
- package/dist/server/server/messages.js.map +1 -1
- package/dist/server/server/node-pty-error.d.ts +2 -0
- package/dist/server/server/node-pty-error.d.ts.map +1 -0
- package/dist/server/server/node-pty-error.js +19 -0
- package/dist/server/server/node-pty-error.js.map +1 -0
- package/dist/server/server/persisted-config.d.ts +219 -135
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persisted-config.js +35 -1
- package/dist/server/server/persisted-config.js.map +1 -1
- package/dist/server/server/port-in-use.d.ts +4 -0
- package/dist/server/server/port-in-use.d.ts.map +1 -0
- package/dist/server/server/port-in-use.js +35 -0
- package/dist/server/server/port-in-use.js.map +1 -0
- package/dist/server/server/provider-runtime-settings-mask.d.ts +7 -0
- package/dist/server/server/provider-runtime-settings-mask.d.ts.map +1 -0
- package/dist/server/server/provider-runtime-settings-mask.js +65 -0
- package/dist/server/server/provider-runtime-settings-mask.js.map +1 -0
- package/dist/server/server/sac/auth.d.ts +12 -0
- package/dist/server/server/sac/auth.d.ts.map +1 -1
- package/dist/server/server/sac/auth.js +19 -1
- package/dist/server/server/sac/auth.js.map +1 -1
- package/dist/server/server/sac/index.d.ts +2 -2
- package/dist/server/server/sac/index.d.ts.map +1 -1
- package/dist/server/server/sac/index.js +2 -2
- package/dist/server/server/sac/index.js.map +1 -1
- package/dist/server/server/sac/poll.d.ts +2 -0
- package/dist/server/server/sac/poll.d.ts.map +1 -1
- package/dist/server/server/sac/poll.js +7 -2
- package/dist/server/server/sac/poll.js.map +1 -1
- package/dist/server/server/schedule/cron.d.ts.map +1 -1
- package/dist/server/server/schedule/cron.js +6 -6
- package/dist/server/server/schedule/cron.js.map +1 -1
- package/dist/server/server/schedule/rpc-schemas.d.ts +895 -0
- package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -1
- package/dist/server/server/schedule/rpc-schemas.js +34 -0
- package/dist/server/server/schedule/rpc-schemas.js.map +1 -1
- package/dist/server/server/schedule/service.d.ts +5 -1
- package/dist/server/server/schedule/service.d.ts.map +1 -1
- package/dist/server/server/schedule/service.js +97 -14
- package/dist/server/server/schedule/service.js.map +1 -1
- package/dist/server/server/schedule/types.d.ts +19 -0
- package/dist/server/server/schedule/types.d.ts.map +1 -1
- package/dist/server/server/schedule/types.js +1 -0
- package/dist/server/server/schedule/types.js.map +1 -1
- package/dist/server/server/session.d.ts +83 -2
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +895 -82
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/speech/native-runtime-guard.d.ts +1 -0
- package/dist/server/server/speech/native-runtime-guard.d.ts.map +1 -1
- package/dist/server/server/speech/native-runtime-guard.js +10 -4
- package/dist/server/server/speech/native-runtime-guard.js.map +1 -1
- package/dist/server/server/websocket-server.d.ts +6 -1
- package/dist/server/server/websocket-server.d.ts.map +1 -1
- package/dist/server/server/websocket-server.js +79 -7
- package/dist/server/server/websocket-server.js.map +1 -1
- package/dist/server/server/workspace-git-service.d.ts +2 -1
- package/dist/server/server/workspace-git-service.d.ts.map +1 -1
- package/dist/server/server/workspace-git-service.js +7 -3
- package/dist/server/server/workspace-git-service.js.map +1 -1
- package/dist/server/server/workspace-registry-model.d.ts +1 -0
- package/dist/server/server/workspace-registry-model.d.ts.map +1 -1
- package/dist/server/server/workspace-registry-model.js +18 -0
- package/dist/server/server/workspace-registry-model.js.map +1 -1
- package/dist/server/server/worktree-session.d.ts +3 -3
- package/dist/server/server/worktree-session.d.ts.map +1 -1
- package/dist/server/server/worktree-session.js +1 -3
- package/dist/server/server/worktree-session.js.map +1 -1
- package/dist/server/shared/messages.d.ts +59658 -21927
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +531 -3
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/shared/provider-runtime-settings.d.ts +87 -0
- package/dist/server/shared/provider-runtime-settings.d.ts.map +1 -0
- package/dist/server/shared/provider-runtime-settings.js +33 -0
- package/dist/server/shared/provider-runtime-settings.js.map +1 -0
- package/dist/server/terminal/terminal.d.ts +9 -0
- package/dist/server/terminal/terminal.d.ts.map +1 -1
- package/dist/server/terminal/terminal.js +100 -3
- package/dist/server/terminal/terminal.js.map +1 -1
- package/dist/server/utils/checkout-git.d.ts +23 -1
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +182 -21
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
- package/dist/server/utils/directory-suggestions.js +57 -9
- package/dist/server/utils/directory-suggestions.js.map +1 -1
- package/dist/src/server/bug-report-redact.js +42 -5
- package/dist/src/server/bug-report-redact.js.map +1 -1
- package/dist/src/server/crash-report.js +18 -0
- package/dist/src/server/crash-report.js.map +1 -1
- package/dist/src/server/speech/native-runtime-guard.js +177 -0
- package/dist/src/server/speech/native-runtime-guard.js.map +1 -0
- package/dist/src/server/speech/speech-types.js +8 -0
- package/dist/src/server/speech/speech-types.js.map +1 -0
- 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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"bug-report-handler.js","sourceRoot":"","sources":["../../../src/server/bug-report-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GAKpB,MAAM,wBAAwB,CAAC;AAYhC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,0CAA0C;AAC1C,0EAA0E;AAC1E,gCAAgC;AAChC,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,4CAA4C,CAAC;AAElG,2EAA2E;AAC3E,wEAAwE;AACxE,4EAA4E;AAC5E,iFAAiF;AACjF,oEAAoE;AACpE,0BAA0B;AAC1B,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAC1D,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAC9E,4EAA4E;AAC5E,MAAM,wBAAwB,GAAG,oCAAoC,CAAC;AACtE,8EAA8E;AAC9E,4EAA4E;AAC5E,gCAAgC;AAChC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAE1D,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,gEAAgE;AAChE,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AACtE,8BAA8B;AAC9B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,CAAS;IAET,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChC,mEAAmE;QACnE,qEAAqE;QACrE,kEAAkE;QAClE,iEAAiE;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK;YAC1C,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK;SAC5C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,QAAgB;IACjE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,mEAAmE;QACnE,kEAAkE;QAClE,iEAAiE;QACjE,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,mEAAmE;QACnE,0CAA0C;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACpC,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAC1C,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAkC,EAClC,IAA0B;IAE1B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAChE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,eAAe;SACvB,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;IAEhD,MAAM,WAAW,GAAG,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,MAAM,WAAW,CACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EACpC,qBAAqB,CACtB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,aAAsB,CAAC;IAC3B,IAAI,sBAAsB,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,sBAAsB,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,qCAAqC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG;QACd,KAAK;QACL,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,KAAK;QACL,WAAW;QACX,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,mEAAmE;QACnE,6DAA6D;QAC7D,oEAAoE;QACpE,sDAAsD;QACtD,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE;QAC9C,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC5C,aAAa,EAAE,mBAAmB,CAAC,aAAa,CAAC;QACjD,aAAa;QACb,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;QAClD,sBAAsB,EAAE,4BAA4B,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAChF,iBAAiB,EAAE,uBAAuB,CACxC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CACvD;QACD,gBAAgB,EAAE,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC9F,aAAa,EAAE,mBAAmB,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAClF,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACxF,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC5C,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;QAC9C,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,eAAe,EAAE,GAAG,CAAC,eAAe;KACrC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,GAAG,OAAO,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,6BAA6B,CAAC,CAAC;YAC1E,OAAO;gBACL,IAAI,EAAE,4BAA4B;gBAClC,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM;aACpC,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAK7B,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO;gBACL,IAAI,EAAE,4BAA4B;gBAClC,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;aACpC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,EAAE,EAAE,IAAI;YACR,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACtE,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,EAAE,EAAE,KAAK;YACT,KAAK,EAAG,GAAa,CAAC,OAAO,IAAI,oBAAoB;SACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"bug-report-redact.d.ts","sourceRoot":"","sources":["../../../src/server/bug-report-redact.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 >
|
|
52
|
-
out = out.slice(0,
|
|
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
|
-
|
|
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":"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;
|
|
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;
|
|
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 ??
|
|
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,
|
|
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
|
};
|