@getpaseo/server 0.1.71 → 0.1.73

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 (126) hide show
  1. package/dist/server/server/agent/agent-archive.d.ts +11 -0
  2. package/dist/server/server/agent/agent-archive.d.ts.map +1 -0
  3. package/dist/server/server/agent/agent-archive.js +16 -0
  4. package/dist/server/server/agent/agent-archive.js.map +1 -0
  5. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  6. package/dist/server/server/agent/agent-manager.js +3 -23
  7. package/dist/server/server/agent/agent-manager.js.map +1 -1
  8. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
  9. package/dist/server/server/agent/agent-response-loop.js +2 -1
  10. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  11. package/dist/server/server/agent/create-agent-title.d.ts +8 -0
  12. package/dist/server/server/agent/create-agent-title.d.ts.map +1 -0
  13. package/dist/server/server/agent/create-agent-title.js +29 -0
  14. package/dist/server/server/agent/create-agent-title.js.map +1 -0
  15. package/dist/server/server/agent/import-sessions.d.ts +20 -1
  16. package/dist/server/server/agent/import-sessions.d.ts.map +1 -1
  17. package/dist/server/server/agent/import-sessions.js +101 -0
  18. package/dist/server/server/agent/import-sessions.js.map +1 -1
  19. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  20. package/dist/server/server/agent/provider-launch-config.js +1 -0
  21. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  22. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  23. package/dist/server/server/agent/provider-registry.js +2 -1
  24. package/dist/server/server/agent/provider-registry.js.map +1 -1
  25. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +25 -0
  26. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -0
  27. package/dist/server/server/agent/providers/codex/app-server-transport.js +183 -0
  28. package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -0
  29. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +31 -0
  30. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts.map +1 -0
  31. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +172 -0
  32. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js.map +1 -0
  33. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +1 -21
  34. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  35. package/dist/server/server/agent/providers/codex-app-server-agent.js +2 -171
  36. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  37. package/dist/server/server/agent/providers/opencode/runtime.d.ts +27 -0
  38. package/dist/server/server/agent/providers/opencode/runtime.d.ts.map +1 -0
  39. package/dist/server/server/agent/providers/opencode/runtime.js +5 -0
  40. package/dist/server/server/agent/providers/opencode/runtime.js.map +1 -0
  41. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +55 -0
  42. package/dist/server/server/agent/providers/opencode/server-manager.d.ts.map +1 -0
  43. package/dist/server/server/agent/providers/opencode/server-manager.js +255 -0
  44. package/dist/server/server/agent/providers/opencode/server-manager.js.map +1 -0
  45. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +22 -0
  46. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts.map +1 -0
  47. package/dist/server/server/agent/providers/opencode/test-server-manager.js +28 -0
  48. package/dist/server/server/agent/providers/opencode/test-server-manager.js.map +1 -0
  49. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +75 -0
  50. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -0
  51. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +169 -0
  52. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -0
  53. package/dist/server/server/agent/providers/opencode-agent.d.ts +38 -36
  54. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  55. package/dist/server/server/agent/providers/opencode-agent.js +556 -267
  56. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  57. package/dist/server/server/agent/providers/pi-direct-agent.d.ts +8 -3
  58. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
  59. package/dist/server/server/agent/providers/pi-direct-agent.js +44 -34
  60. package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -1
  61. package/dist/server/server/bootstrap.d.ts +2 -0
  62. package/dist/server/server/bootstrap.d.ts.map +1 -1
  63. package/dist/server/server/bootstrap.js +45 -8
  64. package/dist/server/server/bootstrap.js.map +1 -1
  65. package/dist/server/server/checkout/status-projection.d.ts +19 -0
  66. package/dist/server/server/checkout/status-projection.d.ts.map +1 -0
  67. package/dist/server/server/checkout/status-projection.js +98 -0
  68. package/dist/server/server/checkout/status-projection.js.map +1 -0
  69. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  70. package/dist/server/server/file-explorer/service.js +84 -67
  71. package/dist/server/server/file-explorer/service.js.map +1 -1
  72. package/dist/server/server/paseo-worktree-service.d.ts +2 -1
  73. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
  74. package/dist/server/server/paseo-worktree-service.js +30 -3
  75. package/dist/server/server/paseo-worktree-service.js.map +1 -1
  76. package/dist/server/server/push/notifications.d.ts +9 -0
  77. package/dist/server/server/push/notifications.d.ts.map +1 -0
  78. package/dist/server/server/push/notifications.js +15 -0
  79. package/dist/server/server/push/notifications.js.map +1 -0
  80. package/dist/server/server/push/push-service.d.ts +1 -2
  81. package/dist/server/server/push/push-service.d.ts.map +1 -1
  82. package/dist/server/server/relay-transport.d.ts +7 -1
  83. package/dist/server/server/relay-transport.d.ts.map +1 -1
  84. package/dist/server/server/relay-transport.js +10 -5
  85. package/dist/server/server/relay-transport.js.map +1 -1
  86. package/dist/server/server/session.d.ts +1 -17
  87. package/dist/server/server/session.d.ts.map +1 -1
  88. package/dist/server/server/session.js +24 -233
  89. package/dist/server/server/session.js.map +1 -1
  90. package/dist/server/server/websocket/runtime-metrics.d.ts +71 -0
  91. package/dist/server/server/websocket/runtime-metrics.d.ts.map +1 -0
  92. package/dist/server/server/websocket/runtime-metrics.js +148 -0
  93. package/dist/server/server/websocket/runtime-metrics.js.map +1 -0
  94. package/dist/server/server/websocket-server.d.ts +4 -21
  95. package/dist/server/server/websocket-server.d.ts.map +1 -1
  96. package/dist/server/server/websocket-server.js +28 -137
  97. package/dist/server/server/websocket-server.js.map +1 -1
  98. package/dist/server/server/workspace-directory.d.ts +0 -2
  99. package/dist/server/server/workspace-directory.d.ts.map +1 -1
  100. package/dist/server/server/workspace-directory.js +9 -26
  101. package/dist/server/server/workspace-directory.js.map +1 -1
  102. package/dist/server/shared/agent-state-bucket.d.ts +13 -0
  103. package/dist/server/shared/agent-state-bucket.d.ts.map +1 -0
  104. package/dist/server/shared/agent-state-bucket.js +41 -0
  105. package/dist/server/shared/agent-state-bucket.js.map +1 -0
  106. package/dist/server/shared/connection-offer.d.ts +6 -6
  107. package/dist/server/shared/connection-offer.js +1 -1
  108. package/dist/server/shared/connection-offer.js.map +1 -1
  109. package/dist/server/shared/git-remote.d.ts +16 -0
  110. package/dist/server/shared/git-remote.d.ts.map +1 -0
  111. package/dist/server/shared/git-remote.js +72 -0
  112. package/dist/server/shared/git-remote.js.map +1 -0
  113. package/dist/server/utils/checkout-git.d.ts +1 -0
  114. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  115. package/dist/server/utils/checkout-git.js +3 -0
  116. package/dist/server/utils/checkout-git.js.map +1 -1
  117. package/dist/server/utils/github-remote.d.ts +3 -7
  118. package/dist/server/utils/github-remote.d.ts.map +1 -1
  119. package/dist/server/utils/github-remote.js +4 -70
  120. package/dist/server/utils/github-remote.js.map +1 -1
  121. package/dist/server/utils/run-git-command.d.ts.map +1 -1
  122. package/dist/server/utils/run-git-command.js +1 -0
  123. package/dist/server/utils/run-git-command.js.map +1 -1
  124. package/dist/src/server/agent/provider-launch-config.js +1 -0
  125. package/dist/src/server/agent/provider-launch-config.js.map +1 -1
  126. package/package.json +5 -5
@@ -0,0 +1,71 @@
1
+ import type { WSOutboundMessage } from "../messages.js";
2
+ export interface WebSocketRuntimeCounters {
3
+ connectedAwaitingHello: number;
4
+ helloResumed: number;
5
+ helloNew: number;
6
+ pendingDisconnected: number;
7
+ sessionDisconnectedWaitingReconnect: number;
8
+ sessionSocketDisconnectedAttached: number;
9
+ sessionCleanup: number;
10
+ validationFailed: number;
11
+ binaryBeforeHelloRejected: number;
12
+ pendingMessageRejectedBeforeHello: number;
13
+ missingConnectionForMessage: number;
14
+ unexpectedHelloOnActiveConnection: number;
15
+ relayExternalSocketAttached: number;
16
+ originRejected: number;
17
+ hostRejected: number;
18
+ }
19
+ export interface WebSocketRuntimeMetricsSnapshot {
20
+ windowMs: number;
21
+ counters: WebSocketRuntimeCounters;
22
+ inboundMessageTypesTop: Array<[string, number]>;
23
+ inboundSessionRequestTypesTop: Array<[string, number]>;
24
+ outboundMessageTypesTop: Array<[string, number]>;
25
+ outboundSessionMessageTypesTop: Array<[string, number]>;
26
+ outboundAgentStreamTypesTop: Array<[string, number]>;
27
+ outboundAgentStreamAgentsTop: Array<[string, number]>;
28
+ outboundBinaryFrameTypesTop: Array<[string, number]>;
29
+ bufferedAmount: {
30
+ p95: number;
31
+ max: number;
32
+ };
33
+ latency: Array<{
34
+ type: string;
35
+ count: number;
36
+ minMs: number;
37
+ maxMs: number;
38
+ p50Ms: number;
39
+ totalMs: number;
40
+ }>;
41
+ }
42
+ type Clock = () => number;
43
+ export declare class WebSocketRuntimeMetricsWindow {
44
+ private readonly clock;
45
+ private windowStartedAt;
46
+ private readonly counters;
47
+ private readonly inboundMessageCounts;
48
+ private readonly inboundSessionRequestCounts;
49
+ private readonly outboundMessageCounts;
50
+ private readonly outboundSessionMessageCounts;
51
+ private readonly outboundAgentStreamCounts;
52
+ private readonly outboundAgentStreamByAgentCounts;
53
+ private readonly outboundBinaryFrameCounts;
54
+ private readonly bufferedAmountSamples;
55
+ private readonly requestLatencies;
56
+ constructor(clock?: Clock);
57
+ incrementCounter(counter: keyof WebSocketRuntimeCounters): void;
58
+ recordInboundMessage(type: string): void;
59
+ recordInboundSessionRequest(type: string): void;
60
+ recordOutboundMessage(message: WSOutboundMessage, bufferedAmount?: number): void;
61
+ recordOutboundBinaryFrame(bufferedAmount?: number): void;
62
+ recordRequestLatency(type: string, durationMs: number): void;
63
+ snapshotAndReset(): WebSocketRuntimeMetricsSnapshot;
64
+ private recordOutboundAgentStreamMessage;
65
+ private recordBufferedAmount;
66
+ private computeLatencyStats;
67
+ private computeBufferedAmountStats;
68
+ private reset;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=runtime-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-metrics.d.ts","sourceRoot":"","sources":["../../../../src/server/websocket/runtime-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,WAAW,wBAAwB;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mCAAmC,EAAE,MAAM,CAAC;IAC5C,iCAAiC,EAAE,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;IAClC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,2BAA2B,EAAE,MAAM,CAAC;IACpC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,2BAA2B,EAAE,MAAM,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,sBAAsB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,6BAA6B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,uBAAuB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,8BAA8B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,2BAA2B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,4BAA4B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,2BAA2B,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,cAAc,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,KAAK,KAAK,GAAG,MAAM,MAAM,CAAC;AAE1B,qBAAa,6BAA6B;IAa5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAZlC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqD;IAC9E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAA6B;IACzE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA6B;IACnE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA6B;IACvE,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAA6B;IAC9E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA6B;IACvE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;gBAEnC,KAAK,GAAE,KAAgB;IAIpD,gBAAgB,CAAC,OAAO,EAAE,MAAM,wBAAwB,GAAG,IAAI;IAI/D,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/C,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBhF,yBAAyB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxD,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAS5D,gBAAgB,IAAI,+BAA+B;IAoBnD,OAAO,CAAC,gCAAgC;IASxC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,KAAK;CAed"}
@@ -0,0 +1,148 @@
1
+ export class WebSocketRuntimeMetricsWindow {
2
+ constructor(clock = Date.now) {
3
+ this.clock = clock;
4
+ this.counters = createRuntimeCounters();
5
+ this.inboundMessageCounts = new Map();
6
+ this.inboundSessionRequestCounts = new Map();
7
+ this.outboundMessageCounts = new Map();
8
+ this.outboundSessionMessageCounts = new Map();
9
+ this.outboundAgentStreamCounts = new Map();
10
+ this.outboundAgentStreamByAgentCounts = new Map();
11
+ this.outboundBinaryFrameCounts = new Map();
12
+ this.bufferedAmountSamples = [];
13
+ this.requestLatencies = new Map();
14
+ this.windowStartedAt = this.clock();
15
+ }
16
+ incrementCounter(counter) {
17
+ this.counters[counter] += 1;
18
+ }
19
+ recordInboundMessage(type) {
20
+ incrementCount(this.inboundMessageCounts, type);
21
+ }
22
+ recordInboundSessionRequest(type) {
23
+ incrementCount(this.inboundSessionRequestCounts, type);
24
+ }
25
+ recordOutboundMessage(message, bufferedAmount) {
26
+ if (message.type !== "session") {
27
+ incrementCount(this.outboundMessageCounts, message.type);
28
+ this.recordBufferedAmount(bufferedAmount);
29
+ return;
30
+ }
31
+ incrementCount(this.outboundMessageCounts, "session_message");
32
+ incrementCount(this.outboundSessionMessageCounts, message.message.type);
33
+ if (message.message.type === "agent_stream") {
34
+ this.recordOutboundAgentStreamMessage(message.message.payload);
35
+ }
36
+ this.recordBufferedAmount(bufferedAmount);
37
+ }
38
+ recordOutboundBinaryFrame(bufferedAmount) {
39
+ incrementCount(this.outboundBinaryFrameCounts, "binary");
40
+ this.recordBufferedAmount(bufferedAmount);
41
+ }
42
+ recordRequestLatency(type, durationMs) {
43
+ let latencies = this.requestLatencies.get(type);
44
+ if (!latencies) {
45
+ latencies = [];
46
+ this.requestLatencies.set(type, latencies);
47
+ }
48
+ latencies.push(durationMs);
49
+ }
50
+ snapshotAndReset() {
51
+ const now = this.clock();
52
+ const snapshot = {
53
+ windowMs: Math.max(0, now - this.windowStartedAt),
54
+ counters: { ...this.counters },
55
+ inboundMessageTypesTop: getTopCounts(this.inboundMessageCounts, 12),
56
+ inboundSessionRequestTypesTop: getTopCounts(this.inboundSessionRequestCounts, 20),
57
+ outboundMessageTypesTop: getTopCounts(this.outboundMessageCounts, 12),
58
+ outboundSessionMessageTypesTop: getTopCounts(this.outboundSessionMessageCounts, 20),
59
+ outboundAgentStreamTypesTop: getTopCounts(this.outboundAgentStreamCounts, 20),
60
+ outboundAgentStreamAgentsTop: getTopCounts(this.outboundAgentStreamByAgentCounts, 20),
61
+ outboundBinaryFrameTypesTop: getTopCounts(this.outboundBinaryFrameCounts, 12),
62
+ bufferedAmount: this.computeBufferedAmountStats(),
63
+ latency: this.computeLatencyStats(),
64
+ };
65
+ this.reset(now);
66
+ return snapshot;
67
+ }
68
+ recordOutboundAgentStreamMessage(payload) {
69
+ const { agentId, event } = payload;
70
+ const eventType = event.type === "timeline" ? `timeline:${event.item.type}` : event.type;
71
+ incrementCount(this.outboundAgentStreamCounts, eventType);
72
+ incrementCount(this.outboundAgentStreamByAgentCounts, agentId);
73
+ }
74
+ recordBufferedAmount(bufferedAmount) {
75
+ if (typeof bufferedAmount !== "number") {
76
+ return;
77
+ }
78
+ this.bufferedAmountSamples.push(bufferedAmount);
79
+ }
80
+ computeLatencyStats() {
81
+ const stats = [];
82
+ for (const [type, latencies] of this.requestLatencies) {
83
+ if (latencies.length === 0)
84
+ continue;
85
+ const sortedLatencies = [...latencies].sort((a, b) => a - b);
86
+ const count = sortedLatencies.length;
87
+ const minMs = Math.round(sortedLatencies[0]);
88
+ const maxMs = Math.round(sortedLatencies[count - 1]);
89
+ const p50Ms = Math.round(sortedLatencies[Math.floor(count / 2)]);
90
+ const totalMs = Math.round(sortedLatencies.reduce((sum, value) => sum + value, 0));
91
+ stats.push({ type, count, minMs, maxMs, p50Ms, totalMs });
92
+ }
93
+ stats.sort((a, b) => b.totalMs - a.totalMs);
94
+ return stats.slice(0, 15);
95
+ }
96
+ computeBufferedAmountStats() {
97
+ if (this.bufferedAmountSamples.length === 0) {
98
+ return { p95: 0, max: 0 };
99
+ }
100
+ const samples = [...this.bufferedAmountSamples].sort((a, b) => a - b);
101
+ const p95Index = Math.ceil(samples.length * 0.95) - 1;
102
+ return {
103
+ p95: samples[p95Index] ?? 0,
104
+ max: samples[samples.length - 1] ?? 0,
105
+ };
106
+ }
107
+ reset(windowStartedAt) {
108
+ for (const counter of Object.keys(this.counters)) {
109
+ this.counters[counter] = 0;
110
+ }
111
+ this.inboundMessageCounts.clear();
112
+ this.inboundSessionRequestCounts.clear();
113
+ this.outboundMessageCounts.clear();
114
+ this.outboundSessionMessageCounts.clear();
115
+ this.outboundAgentStreamCounts.clear();
116
+ this.outboundAgentStreamByAgentCounts.clear();
117
+ this.outboundBinaryFrameCounts.clear();
118
+ this.bufferedAmountSamples.length = 0;
119
+ this.requestLatencies.clear();
120
+ this.windowStartedAt = windowStartedAt;
121
+ }
122
+ }
123
+ function createRuntimeCounters() {
124
+ return {
125
+ connectedAwaitingHello: 0,
126
+ helloResumed: 0,
127
+ helloNew: 0,
128
+ pendingDisconnected: 0,
129
+ sessionDisconnectedWaitingReconnect: 0,
130
+ sessionSocketDisconnectedAttached: 0,
131
+ sessionCleanup: 0,
132
+ validationFailed: 0,
133
+ binaryBeforeHelloRejected: 0,
134
+ pendingMessageRejectedBeforeHello: 0,
135
+ missingConnectionForMessage: 0,
136
+ unexpectedHelloOnActiveConnection: 0,
137
+ relayExternalSocketAttached: 0,
138
+ originRejected: 0,
139
+ hostRejected: 0,
140
+ };
141
+ }
142
+ function incrementCount(map, key) {
143
+ map.set(key, (map.get(key) ?? 0) + 1);
144
+ }
145
+ function getTopCounts(map, limit) {
146
+ return [...map.entries()].sort((a, b) => b[1] - a[1]).slice(0, limit);
147
+ }
148
+ //# sourceMappingURL=runtime-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-metrics.js","sourceRoot":"","sources":["../../../../src/server/websocket/runtime-metrics.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ import type { HostnamesConfig } from "./hostnames.js";
15
15
  import { Session, type SessionLifecycleIntent } from "./session.js";
16
16
  import type { AgentProviderRuntimeSettingsMap, ProviderOverride } from "./agent/provider-launch-config.js";
17
17
  import type { WorkspaceGitService } from "./workspace-git-service.js";
18
+ import { type PushNotificationSender } from "./push/notifications.js";
18
19
  import type { ScriptHealthState } from "./script-health-monitor.js";
19
20
  import type { ScriptRouteStore } from "./script-proxy.js";
20
21
  import type { WorkspaceScriptRuntimeStore } from "./workspace-script-runtime-store.js";
@@ -66,7 +67,7 @@ export declare class VoiceAssistantWebSocketServer {
66
67
  private readonly paseoHome;
67
68
  private readonly daemonConfigStore;
68
69
  private readonly pushTokenStore;
69
- private readonly pushService;
70
+ private readonly pushNotificationSender;
70
71
  private readonly mcpBaseUrl;
71
72
  private speech;
72
73
  private terminalManager;
@@ -86,23 +87,13 @@ export declare class VoiceAssistantWebSocketServer {
86
87
  private onLifecycleIntent;
87
88
  private onBranchChanged;
88
89
  private serverCapabilities;
89
- private runtimeWindowStartedAt;
90
- private readonly runtimeCounters;
91
- private readonly inboundMessageCounts;
92
- private readonly inboundSessionRequestCounts;
93
- private readonly outboundMessageCounts;
94
- private readonly outboundSessionMessageCounts;
95
- private readonly outboundAgentStreamCounts;
96
- private readonly outboundAgentStreamByAgentCounts;
97
- private readonly outboundBinaryFrameCounts;
98
- private readonly bufferedAmountSamples;
99
- private readonly requestLatencies;
90
+ private readonly runtimeMetrics;
100
91
  private runtimeMetricsInterval;
101
92
  private unsubscribeSpeechReadiness;
102
93
  private unsubscribeDaemonConfigChange;
103
94
  constructor(server: HTTPServer, logger: pino.Logger, serverId: string, agentManager: AgentManager, agentStorage: AgentStorage, downloadTokenStore: DownloadTokenStore, paseoHome: string, daemonConfigStore: DaemonConfigStore, mcpBaseUrl: string | null, wsConfig: WebSocketServerConfig, auth?: DaemonAuthConfig, speech?: SpeechService | null, terminalManager?: TerminalManager | null, dictation?: {
104
95
  finalTimeoutMs?: number;
105
- }, agentProviderRuntimeSettings?: AgentProviderRuntimeSettingsMap, providerOverrides?: Record<string, ProviderOverride>, isDev?: boolean, daemonVersion?: string, onLifecycleIntent?: (intent: SessionLifecycleIntent) => void, projectRegistry?: ProjectRegistry, workspaceRegistry?: WorkspaceRegistry, chatService?: FileBackedChatService, loopService?: LoopService, scheduleService?: ScheduleService, checkoutDiffManager?: CheckoutDiffManager, scriptRouteStore?: ScriptRouteStore | null, scriptRuntimeStore?: WorkspaceScriptRuntimeStore | null, onBranchChanged?: (workspaceId: string, oldBranch: string | null, newBranch: string | null) => void, getDaemonTcpPort?: () => number | null, getDaemonTcpHost?: () => string | null, resolveScriptHealth?: (hostname: string) => ScriptHealthState | null, workspaceGitService?: WorkspaceGitService, github?: GitHubService);
96
+ }, agentProviderRuntimeSettings?: AgentProviderRuntimeSettingsMap, providerOverrides?: Record<string, ProviderOverride>, isDev?: boolean, daemonVersion?: string, onLifecycleIntent?: (intent: SessionLifecycleIntent) => void, projectRegistry?: ProjectRegistry, workspaceRegistry?: WorkspaceRegistry, chatService?: FileBackedChatService, loopService?: LoopService, scheduleService?: ScheduleService, checkoutDiffManager?: CheckoutDiffManager, scriptRouteStore?: ScriptRouteStore | null, scriptRuntimeStore?: WorkspaceScriptRuntimeStore | null, onBranchChanged?: (workspaceId: string, oldBranch: string | null, newBranch: string | null) => void, getDaemonTcpPort?: () => number | null, getDaemonTcpHost?: () => string | null, resolveScriptHealth?: (hostname: string) => ScriptHealthState | null, workspaceGitService?: WorkspaceGitService, github?: GitHubService, pushNotificationSender?: PushNotificationSender);
106
97
  private assignOptionalServices;
107
98
  private createWebSocketServer;
108
99
  private startRuntimeMetricsInterval;
@@ -140,17 +131,9 @@ export declare class VoiceAssistantWebSocketServer {
140
131
  private handleRawMessageError;
141
132
  private decodeRawMessagePayloadForError;
142
133
  private incrementRuntimeCounter;
143
- private incrementCount;
144
134
  private recordInboundMessageType;
145
135
  private recordInboundSessionRequestType;
146
- private recordOutboundMessage;
147
- private recordOutboundAgentStreamMessage;
148
- private recordOutboundBinaryFrame;
149
- private recordBufferedAmount;
150
136
  private recordRequestLatency;
151
- private getTopCounts;
152
- private computeLatencyStats;
153
- private computeBufferedAmountStats;
154
137
  private collectSessionRuntimeMetrics;
155
138
  private flushRuntimeMetrics;
156
139
  private getClientActivityState;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../../src/server/websocket-server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAQL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,KAAK,sBAAsB,EAA8B,MAAM,cAAc,CAAC;AAEhG,OAAO,KAAK,EACV,+BAA+B,EAC/B,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAA+B,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAInG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM9E,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAInB,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAOD,UAAU,qBAAqB;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAiLD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC;IACxD,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IAC3F,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CAClF;AAuCD,qBAAa,yBAA0B,SAAQ,KAAK;;CAKnD;AA+BD;;GAEG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoD;IACvF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA6C;IACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,mBAAmB,CAA2D;IACtF,OAAO,CAAC,SAAS,CAER;IACT,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAC3E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyC;IAC7E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA6C;IACrF,OAAO,CAAC,4BAA4B,CAA8C;IAClF,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,iBAAiB,CAAqD;IAC9E,OAAO,CAAC,eAAe,CAEd;IACT,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAgB9B;IACF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAA6B;IACzE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA6B;IACnE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA6B;IACvE,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAA6B;IAC9E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA6B;IACvE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,sBAAsB,CAA+C;IAC7E,OAAO,CAAC,0BAA0B,CAA6B;IAC/D,OAAO,CAAC,6BAA6B,CAA6B;gBAGhE,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,CAAC,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,EAC7B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,EACxC,SAAS,CAAC,EAAE;QACV,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,EACD,4BAA4B,CAAC,EAAE,+BAA+B,EAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpD,KAAK,CAAC,EAAE,OAAO,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,EAC5D,eAAe,CAAC,EAAE,eAAe,EACjC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,WAAW,CAAC,EAAE,qBAAqB,EACnC,WAAW,CAAC,EAAE,WAAW,EACzB,eAAe,CAAC,EAAE,eAAe,EACjC,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAC1C,kBAAkB,CAAC,EAAE,2BAA2B,GAAG,IAAI,EACvD,eAAe,CAAC,EAAE,CAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,SAAS,EAAE,MAAM,GAAG,IAAI,KACrB,IAAI,EACT,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,EACtC,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,EACtC,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,EACpE,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,MAAM,CAAC,EAAE,aAAa;IA2FxB,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,eAAe;YAgCT,yBAAyB;IAwBhC,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAW3C,kBAAkB,IAAI,OAAO,EAAE;IAU/B,sBAAsB,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI,GAAG,IAAI;IAIvE,wBAAwB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAS7E,oBAAoB,CAC/B,EAAE,EAAE,aAAa,EACjB,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAOH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEnC,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,sBAAsB;YAMhB,YAAY;IA0D1B,OAAO,CAAC,uBAAuB;IAkG/B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,WAAW;IA6FnB,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,gCAAgC;IAUxC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,kBAAkB;IA0BnB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAIzE,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;YAIpE,YAAY;YAwEZ,iBAAiB;IA0B/B,OAAO,CAAC,2BAA2B;IAuEnC,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,8BAA8B;YA8BxB,gBAAgB;YAiFhB,sBAAsB;IAsBpC,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,+BAA+B;IAoBvC,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,gCAAgC;IASxC,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,4BAA4B;IAyBpC,OAAO,CAAC,mBAAmB;IA6D3B,OAAO,CAAC,sBAAsB;YAiBhB,uBAAuB;CAkEtC"}
1
+ {"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../../src/server/websocket-server.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,12 @@ import { ProviderSnapshotManager } from "./agent/provider-snapshot-manager.js";
10
10
  import { buildProviderRegistry, createClientsFromRegistry } from "./agent/provider-registry.js";
11
11
  import { buildWorkspaceGitMetadataFromSnapshot } from "./workspace-git-metadata.js";
12
12
  import { PushTokenStore } from "./push/token-store.js";
13
- import { PushService } from "./push/push-service.js";
13
+ import { createPushNotificationSender } from "./push/notifications.js";
14
14
  import { computeNotificationPlan } from "./agent-attention-policy.js";
15
15
  import { buildAgentAttentionNotificationPayload, findLatestPermissionRequest, } from "../shared/agent-attention-notification.js";
16
16
  import { createGitHubService } from "../services/github-service.js";
17
17
  import { extractWsBearerProtocol, extractWsBearerToken, isBearerTokenValid, } from "./auth.js";
18
+ import { WebSocketRuntimeMetricsWindow, } from "./websocket/runtime-metrics.js";
18
19
  const WS_CLOSE_DAEMON_AUTH_FAILED = 4401;
19
20
  function createFallbackWorkspaceGitSnapshot(cwd) {
20
21
  return {
@@ -201,40 +202,14 @@ function requireWebSocketServices(params) {
201
202
  * WebSocket server that only accepts sockets + parses/forwards messages to the session layer.
202
203
  */
203
204
  export class VoiceAssistantWebSocketServer {
204
- constructor(server, logger, serverId, agentManager, agentStorage, downloadTokenStore, paseoHome, daemonConfigStore, mcpBaseUrl, wsConfig, auth, speech, terminalManager, dictation, agentProviderRuntimeSettings, providerOverrides, isDev, daemonVersion, onLifecycleIntent, projectRegistry, workspaceRegistry, chatService, loopService, scheduleService, checkoutDiffManager, scriptRouteStore, scriptRuntimeStore, onBranchChanged, getDaemonTcpPort, getDaemonTcpHost, resolveScriptHealth, workspaceGitService, github) {
205
+ constructor(server, logger, serverId, agentManager, agentStorage, downloadTokenStore, paseoHome, daemonConfigStore, mcpBaseUrl, wsConfig, auth, speech, terminalManager, dictation, agentProviderRuntimeSettings, providerOverrides, isDev, daemonVersion, onLifecycleIntent, projectRegistry, workspaceRegistry, chatService, loopService, scheduleService, checkoutDiffManager, scriptRouteStore, scriptRuntimeStore, onBranchChanged, getDaemonTcpPort, getDaemonTcpHost, resolveScriptHealth, workspaceGitService, github, pushNotificationSender) {
205
206
  this.pendingConnections = new Map();
206
207
  this.sessions = new Map();
207
208
  this.externalSessionsByKey = new Map();
208
209
  this.voiceSpeakHandlers = new Map();
209
210
  this.voiceCallerContexts = new Map();
210
211
  this.workspaceSetupSnapshots = new Map();
211
- this.runtimeWindowStartedAt = Date.now();
212
- this.runtimeCounters = {
213
- connectedAwaitingHello: 0,
214
- helloResumed: 0,
215
- helloNew: 0,
216
- pendingDisconnected: 0,
217
- sessionDisconnectedWaitingReconnect: 0,
218
- sessionSocketDisconnectedAttached: 0,
219
- sessionCleanup: 0,
220
- validationFailed: 0,
221
- binaryBeforeHelloRejected: 0,
222
- pendingMessageRejectedBeforeHello: 0,
223
- missingConnectionForMessage: 0,
224
- unexpectedHelloOnActiveConnection: 0,
225
- relayExternalSocketAttached: 0,
226
- originRejected: 0,
227
- hostRejected: 0,
228
- };
229
- this.inboundMessageCounts = new Map();
230
- this.inboundSessionRequestCounts = new Map();
231
- this.outboundMessageCounts = new Map();
232
- this.outboundSessionMessageCounts = new Map();
233
- this.outboundAgentStreamCounts = new Map();
234
- this.outboundAgentStreamByAgentCounts = new Map();
235
- this.outboundBinaryFrameCounts = new Map();
236
- this.bufferedAmountSamples = [];
237
- this.requestLatencies = new Map();
212
+ this.runtimeMetrics = new WebSocketRuntimeMetricsWindow();
238
213
  this.runtimeMetricsInterval = null;
239
214
  this.unsubscribeSpeechReadiness = null;
240
215
  this.unsubscribeDaemonConfigChange = null;
@@ -306,7 +281,8 @@ export class VoiceAssistantWebSocketServer {
306
281
  });
307
282
  const pushLogger = this.logger.child({ module: "push" });
308
283
  this.pushTokenStore = new PushTokenStore(pushLogger, join(paseoHome, "push-tokens.json"));
309
- this.pushService = new PushService(pushLogger, this.pushTokenStore);
284
+ this.pushNotificationSender =
285
+ pushNotificationSender ?? createPushNotificationSender(pushLogger, this.pushTokenStore);
310
286
  this.agentManager.setAgentAttentionCallback((params) => {
311
287
  void this.broadcastAgentAttention(params).catch((err) => {
312
288
  this.logger.warn({ err, agentId: params.agentId }, "Failed to broadcast agent attention");
@@ -397,7 +373,7 @@ export class VoiceAssistantWebSocketServer {
397
373
  // WebSocket.OPEN = 1
398
374
  if (ws.readyState === 1) {
399
375
  ws.send(payload);
400
- this.recordOutboundMessage(message, ws);
376
+ this.runtimeMetrics.recordOutboundMessage(message, ws.bufferedAmount);
401
377
  }
402
378
  }
403
379
  }
@@ -489,7 +465,7 @@ export class VoiceAssistantWebSocketServer {
489
465
  }
490
466
  try {
491
467
  ws.send(JSON.stringify(message));
492
- this.recordOutboundMessage(message, ws);
468
+ this.runtimeMetrics.recordOutboundMessage(message, ws.bufferedAmount);
493
469
  }
494
470
  catch (err) {
495
471
  this.logger.warn({ err }, "ws_send_failed");
@@ -501,7 +477,7 @@ export class VoiceAssistantWebSocketServer {
501
477
  }
502
478
  try {
503
479
  ws.send(frame);
504
- this.recordOutboundBinaryFrame(ws);
480
+ this.runtimeMetrics.recordOutboundBinaryFrame(ws.bufferedAmount);
505
481
  }
506
482
  catch (err) {
507
483
  this.logger.warn({ err }, "ws_send_binary_failed");
@@ -1106,83 +1082,16 @@ export class VoiceAssistantWebSocketServer {
1106
1082
  return { rawPayload, parsedPayload };
1107
1083
  }
1108
1084
  incrementRuntimeCounter(counter) {
1109
- this.runtimeCounters[counter] += 1;
1110
- }
1111
- incrementCount(map, key) {
1112
- map.set(key, (map.get(key) ?? 0) + 1);
1085
+ this.runtimeMetrics.incrementCounter(counter);
1113
1086
  }
1114
1087
  recordInboundMessageType(type) {
1115
- this.incrementCount(this.inboundMessageCounts, type);
1088
+ this.runtimeMetrics.recordInboundMessage(type);
1116
1089
  }
1117
1090
  recordInboundSessionRequestType(type) {
1118
- this.incrementCount(this.inboundSessionRequestCounts, type);
1119
- }
1120
- recordOutboundMessage(message, ws) {
1121
- if (message.type !== "session") {
1122
- this.incrementCount(this.outboundMessageCounts, message.type);
1123
- this.recordBufferedAmount(ws);
1124
- return;
1125
- }
1126
- this.incrementCount(this.outboundMessageCounts, "session_message");
1127
- this.incrementCount(this.outboundSessionMessageCounts, message.message.type);
1128
- if (message.message.type === "agent_stream") {
1129
- this.recordOutboundAgentStreamMessage(message.message.payload);
1130
- }
1131
- this.recordBufferedAmount(ws);
1132
- }
1133
- recordOutboundAgentStreamMessage(payload) {
1134
- const { agentId, event } = payload;
1135
- const eventType = event.type === "timeline" ? `timeline:${event.item.type}` : event.type;
1136
- this.incrementCount(this.outboundAgentStreamCounts, eventType);
1137
- this.incrementCount(this.outboundAgentStreamByAgentCounts, agentId);
1138
- }
1139
- recordOutboundBinaryFrame(ws) {
1140
- this.incrementCount(this.outboundBinaryFrameCounts, "binary");
1141
- this.recordBufferedAmount(ws);
1142
- }
1143
- recordBufferedAmount(ws) {
1144
- if (typeof ws.bufferedAmount !== "number") {
1145
- return;
1146
- }
1147
- this.bufferedAmountSamples.push(ws.bufferedAmount);
1091
+ this.runtimeMetrics.recordInboundSessionRequest(type);
1148
1092
  }
1149
1093
  recordRequestLatency(type, durationMs) {
1150
- let latencies = this.requestLatencies.get(type);
1151
- if (!latencies) {
1152
- latencies = [];
1153
- this.requestLatencies.set(type, latencies);
1154
- }
1155
- latencies.push(durationMs);
1156
- }
1157
- getTopCounts(map, limit) {
1158
- return [...map.entries()].sort((a, b) => b[1] - a[1]).slice(0, limit);
1159
- }
1160
- computeLatencyStats() {
1161
- const stats = [];
1162
- for (const [type, latencies] of this.requestLatencies) {
1163
- if (latencies.length === 0)
1164
- continue;
1165
- latencies.sort((a, b) => a - b);
1166
- const count = latencies.length;
1167
- const minMs = Math.round(latencies[0]);
1168
- const maxMs = Math.round(latencies[count - 1]);
1169
- const p50Ms = Math.round(latencies[Math.floor(count / 2)]);
1170
- const totalMs = Math.round(latencies.reduce((sum, v) => sum + v, 0));
1171
- stats.push({ type, count, minMs, maxMs, p50Ms, totalMs });
1172
- }
1173
- stats.sort((a, b) => b.totalMs - a.totalMs);
1174
- return stats.slice(0, 15);
1175
- }
1176
- computeBufferedAmountStats() {
1177
- if (this.bufferedAmountSamples.length === 0) {
1178
- return { p95: 0, max: 0 };
1179
- }
1180
- const samples = [...this.bufferedAmountSamples].sort((a, b) => a - b);
1181
- const p95Index = Math.ceil(samples.length * 0.95) - 1;
1182
- return {
1183
- p95: samples[p95Index] ?? 0,
1184
- max: samples[samples.length - 1] ?? 0,
1185
- };
1094
+ this.runtimeMetrics.recordRequestLatency(type, durationMs);
1186
1095
  }
1187
1096
  collectSessionRuntimeMetrics() {
1188
1097
  const uniqueConnections = new Set(this.externalSessionsByKey.values());
@@ -1207,18 +1116,15 @@ export class VoiceAssistantWebSocketServer {
1207
1116
  };
1208
1117
  }
1209
1118
  flushRuntimeMetrics(options) {
1210
- const now = Date.now();
1211
- const windowMs = Math.max(0, now - this.runtimeWindowStartedAt);
1119
+ const runtimeMetrics = this.runtimeMetrics.snapshotAndReset();
1212
1120
  const activeConnections = new Set(this.sessions.values()).size;
1213
1121
  const activeSockets = this.sessions.size;
1214
1122
  const pendingConnections = this.pendingConnections.size;
1215
1123
  const reconnectGraceSessions = [...this.externalSessionsByKey.values()].filter((connection) => connection.sockets.size === 0 && connection.externalDisconnectCleanupTimeout !== null).length;
1216
1124
  const sessionMetrics = this.collectSessionRuntimeMetrics();
1217
- const latencyStats = this.computeLatencyStats();
1218
- const bufferedAmountStats = this.computeBufferedAmountStats();
1219
1125
  const agentSnapshot = this.agentManager.getMetricsSnapshot();
1220
1126
  this.logger.info({
1221
- windowMs,
1127
+ windowMs: runtimeMetrics.windowMs,
1222
1128
  final: Boolean(options?.final),
1223
1129
  sessions: {
1224
1130
  activeConnections,
@@ -1229,32 +1135,19 @@ export class VoiceAssistantWebSocketServer {
1229
1135
  activeSockets,
1230
1136
  pendingConnections,
1231
1137
  },
1232
- counters: { ...this.runtimeCounters },
1233
- inboundMessageTypesTop: this.getTopCounts(this.inboundMessageCounts, 12),
1234
- inboundSessionRequestTypesTop: this.getTopCounts(this.inboundSessionRequestCounts, 20),
1235
- outboundMessageTypesTop: this.getTopCounts(this.outboundMessageCounts, 12),
1236
- outboundSessionMessageTypesTop: this.getTopCounts(this.outboundSessionMessageCounts, 20),
1237
- outboundAgentStreamTypesTop: this.getTopCounts(this.outboundAgentStreamCounts, 20),
1238
- outboundAgentStreamAgentsTop: this.getTopCounts(this.outboundAgentStreamByAgentCounts, 20),
1239
- outboundBinaryFrameTypesTop: this.getTopCounts(this.outboundBinaryFrameCounts, 12),
1240
- bufferedAmount: bufferedAmountStats,
1138
+ counters: runtimeMetrics.counters,
1139
+ inboundMessageTypesTop: runtimeMetrics.inboundMessageTypesTop,
1140
+ inboundSessionRequestTypesTop: runtimeMetrics.inboundSessionRequestTypesTop,
1141
+ outboundMessageTypesTop: runtimeMetrics.outboundMessageTypesTop,
1142
+ outboundSessionMessageTypesTop: runtimeMetrics.outboundSessionMessageTypesTop,
1143
+ outboundAgentStreamTypesTop: runtimeMetrics.outboundAgentStreamTypesTop,
1144
+ outboundAgentStreamAgentsTop: runtimeMetrics.outboundAgentStreamAgentsTop,
1145
+ outboundBinaryFrameTypesTop: runtimeMetrics.outboundBinaryFrameTypesTop,
1146
+ bufferedAmount: runtimeMetrics.bufferedAmount,
1241
1147
  runtime: sessionMetrics,
1242
- latency: latencyStats,
1148
+ latency: runtimeMetrics.latency,
1243
1149
  agents: agentSnapshot,
1244
1150
  }, "ws_runtime_metrics");
1245
- for (const counter of Object.keys(this.runtimeCounters)) {
1246
- this.runtimeCounters[counter] = 0;
1247
- }
1248
- this.inboundMessageCounts.clear();
1249
- this.inboundSessionRequestCounts.clear();
1250
- this.outboundMessageCounts.clear();
1251
- this.outboundSessionMessageCounts.clear();
1252
- this.outboundAgentStreamCounts.clear();
1253
- this.outboundAgentStreamByAgentCounts.clear();
1254
- this.outboundBinaryFrameCounts.clear();
1255
- this.bufferedAmountSamples.length = 0;
1256
- this.requestLatencies.clear();
1257
- this.runtimeWindowStartedAt = now;
1258
1151
  }
1259
1152
  getClientActivityState(session) {
1260
1153
  const activity = session.getClientActivity();
@@ -1297,11 +1190,9 @@ export class VoiceAssistantWebSocketServer {
1297
1190
  nowMs,
1298
1191
  });
1299
1192
  if (plan.shouldPush) {
1300
- const tokens = this.pushTokenStore.getAllTokens();
1301
- this.logger.info({ tokenCount: tokens.length }, "Sending push notification");
1302
- if (tokens.length > 0) {
1303
- void this.pushService.sendPush(tokens, notification);
1304
- }
1193
+ void this.pushNotificationSender.send(notification).catch((err) => {
1194
+ this.logger.warn({ err, agentId: params.agentId }, "Failed to send push notification");
1195
+ });
1305
1196
  }
1306
1197
  for (const [clientIndex, { ws }] of clientEntries.entries()) {
1307
1198
  const shouldNotify = clientIndex === plan.inAppRecipientIndex;