@hyperdreamer/pi-webui 1.11.0-beta.1 → 1.11.0-beta.2

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.
@@ -53,7 +53,7 @@
53
53
  html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
54
54
  body { min-height: 100dvh; }
55
55
  </style>
56
- <script type="module" crossorigin src="./assets/index-BaDGxg8F.js"></script>
56
+ <script type="module" crossorigin src="./assets/index-oaLRluxm.js"></script>
57
57
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-core-vUi74DnD.js">
58
58
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-languages-DoaXUodB.js">
59
59
  <link rel="modulepreload" crossorigin href="./assets/vendor-terminal-D8k4UKM2.js">
@@ -1,9 +1,12 @@
1
1
  import { projectBrowserSessionEvent } from "../browserMessageProjection.js";
2
+ import { SessionStatusCoalescer, isImmediateActivityUpdate, isImmediateStatusUpdate } from "./sessionStatusCoalescer.js";
2
3
  export class SessionEventHub {
3
- constructor() {
4
+ constructor(options = {}) {
4
5
  this.socketsBySession = new Map();
5
6
  this.globalSockets = new Set();
6
7
  this.seqBySession = new Map();
8
+ this.sessionStatusCoalescer = new SessionStatusCoalescer(isImmediateCoalescableEvent, options);
9
+ this.globalStatusCoalescer = new SessionStatusCoalescer(isImmediateCoalescableEvent, options);
7
10
  }
8
11
  add(sessionId, socket) {
9
12
  let sockets = this.socketsBySession.get(sessionId);
@@ -21,10 +24,13 @@ export class SessionEventHub {
21
24
  socket.on("close", () => this.globalSockets.delete(socket));
22
25
  }
23
26
  publish(sessionId, event) {
24
- const seq = (this.seqBySession.get(sessionId) ?? 0) + 1;
25
- this.seqBySession.set(sessionId, seq);
26
- const payload = JSON.stringify({ ...projectBrowserSessionEvent(event), seq });
27
- this.sendToSockets(this.socketsBySession.get(sessionId), payload);
27
+ if (isCoalescableSessionEvent(event)) {
28
+ this.sessionStatusCoalescer.publish(`${sessionId}:${event.type}`, event, (latest) => {
29
+ this.sendSessionEvent(sessionId, latest);
30
+ });
31
+ return;
32
+ }
33
+ this.sendSessionEvent(sessionId, event);
28
34
  }
29
35
  /**
30
36
  * Last per-session sequence number stamped by {@link publish} (0 before any
@@ -43,6 +49,22 @@ export class SessionEventHub {
43
49
  this.sendToSockets(this.globalSockets, payload);
44
50
  }
45
51
  publishRealtime(event) {
52
+ if (isCoalescableRealtimeEvent(event)) {
53
+ const sessionId = event.type === "status.update" ? event.status.sessionId : event.activity.sessionId;
54
+ this.globalStatusCoalescer.publish(`global:${event.type}:${sessionId}`, event, (latest) => {
55
+ this.sendRealtimeEvent(latest);
56
+ });
57
+ return;
58
+ }
59
+ this.sendRealtimeEvent(event);
60
+ }
61
+ sendSessionEvent(sessionId, event) {
62
+ const seq = (this.seqBySession.get(sessionId) ?? 0) + 1;
63
+ this.seqBySession.set(sessionId, seq);
64
+ const payload = JSON.stringify({ ...projectBrowserSessionEvent(event), seq });
65
+ this.sendToSockets(this.socketsBySession.get(sessionId), payload);
66
+ }
67
+ sendRealtimeEvent(event) {
46
68
  const payload = JSON.stringify(event);
47
69
  this.sendToSockets(this.globalSockets, payload);
48
70
  }
@@ -67,4 +89,17 @@ export class SessionEventHub {
67
89
  }
68
90
  }
69
91
  }
92
+ function isCoalescableSessionEvent(event) {
93
+ return event.type === "status.update" || event.type === "activity.update";
94
+ }
95
+ function isCoalescableRealtimeEvent(event) {
96
+ return event.type === "status.update" || event.type === "activity.update";
97
+ }
98
+ function isImmediateCoalescableEvent(previous, next) {
99
+ if (previous.type === "status.update" && next.type === "status.update")
100
+ return isImmediateStatusUpdate(previous.status, next.status);
101
+ if (previous.type === "activity.update" && next.type === "activity.update")
102
+ return isImmediateActivityUpdate(previous.activity, next.activity);
103
+ return true;
104
+ }
70
105
  //# sourceMappingURL=sessionEventHub.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionEventHub.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventHub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionEventHub.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventHub.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Minimum gap between forwarded status/activity snapshots for one key. The
3
+ * session service produces fresh snapshots for provider events; keeping the
4
+ * newest snapshot and sending it at the trailing edge bounds fan-out without
5
+ * losing the latest state.
6
+ */
7
+ export const STATUS_COALESCE_INTERVAL_MS = 100;
8
+ /**
9
+ * Schedules the latest event for each key while allowing urgent transitions to
10
+ * pass through immediately. The scheduler is deliberately transport-agnostic;
11
+ * callers own the actual send side effect.
12
+ */
13
+ export class SessionStatusCoalescer {
14
+ constructor(isImmediate, options = {}) {
15
+ this.isImmediate = isImmediate;
16
+ this.states = new Map();
17
+ this.intervalMs = options.intervalMs ?? STATUS_COALESCE_INTERVAL_MS;
18
+ this.now = options.now ?? (() => Date.now());
19
+ this.setTimer = options.setTimeout ?? ((callback, delayMs) => setTimeout(callback, delayMs));
20
+ this.clearTimer = options.clearTimeout ?? ((handle) => {
21
+ clearTimeout(handle);
22
+ });
23
+ }
24
+ publish(key, event, send) {
25
+ const timestamp = this.now();
26
+ let state = this.states.get(key);
27
+ if (state === undefined) {
28
+ state = {
29
+ lastSentAt: timestamp,
30
+ lastSent: event,
31
+ pending: undefined,
32
+ timer: undefined,
33
+ };
34
+ this.states.set(key, state);
35
+ send(event);
36
+ return;
37
+ }
38
+ if (this.isImmediate(state.lastSent, event)) {
39
+ this.cancelTimer(state);
40
+ state.pending = undefined;
41
+ state.lastSent = event;
42
+ state.lastSentAt = timestamp;
43
+ send(event);
44
+ return;
45
+ }
46
+ const elapsed = timestamp - state.lastSentAt;
47
+ if (elapsed >= this.intervalMs) {
48
+ this.cancelTimer(state);
49
+ state.pending = undefined;
50
+ state.lastSent = event;
51
+ state.lastSentAt = timestamp;
52
+ send(event);
53
+ return;
54
+ }
55
+ state.pending = { event, send };
56
+ this.scheduleTimer(key, state, Math.max(0, this.intervalMs - elapsed));
57
+ }
58
+ clear(key) {
59
+ const state = this.states.get(key);
60
+ if (state === undefined)
61
+ return;
62
+ this.cancelTimer(state);
63
+ this.states.delete(key);
64
+ }
65
+ clearAll() {
66
+ for (const state of this.states.values())
67
+ this.cancelTimer(state);
68
+ this.states.clear();
69
+ }
70
+ scheduleTimer(key, state, delayMs) {
71
+ if (state.timer !== undefined)
72
+ return;
73
+ const token = {};
74
+ const handle = this.setTimer(() => {
75
+ const current = this.states.get(key);
76
+ if (current !== state || current.timer?.token !== token)
77
+ return;
78
+ current.timer = undefined;
79
+ const pending = current.pending;
80
+ if (pending === undefined)
81
+ return;
82
+ const timestamp = this.now();
83
+ const remaining = this.intervalMs - (timestamp - current.lastSentAt);
84
+ if (remaining > 0) {
85
+ this.scheduleTimer(key, current, remaining);
86
+ return;
87
+ }
88
+ current.pending = undefined;
89
+ current.lastSent = pending.event;
90
+ current.lastSentAt = timestamp;
91
+ pending.send(pending.event);
92
+ }, delayMs);
93
+ state.timer = { handle, token };
94
+ }
95
+ cancelTimer(state) {
96
+ if (state.timer === undefined)
97
+ return;
98
+ this.clearTimer(state.timer.handle);
99
+ state.timer = undefined;
100
+ }
101
+ }
102
+ export function isImmediateStatusUpdate(previous, next) {
103
+ return previous.isStreaming !== next.isStreaming
104
+ || previous.isCompacting !== next.isCompacting
105
+ || previous.isBashRunning !== next.isBashRunning
106
+ || previous.pendingMessageCount !== next.pendingMessageCount
107
+ || !structurallyEqual(previous.queuedMessages, next.queuedMessages)
108
+ || !structurallyEqual(previous.model, next.model)
109
+ || previous.thinkingLevel !== next.thinkingLevel
110
+ || previous.persisted !== next.persisted
111
+ || !structurallyEqual(previous.warnings, next.warnings);
112
+ }
113
+ export function isImmediateActivityUpdate(previous, next) {
114
+ return previous.phase !== next.phase || previous.label !== next.label || previous.detail !== next.detail;
115
+ }
116
+ export function structurallyEqual(left, right) {
117
+ if (Object.is(left, right))
118
+ return true;
119
+ if (typeof left !== "object" || left === null || typeof right !== "object" || right === null)
120
+ return false;
121
+ if (Array.isArray(left) || Array.isArray(right)) {
122
+ if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length)
123
+ return false;
124
+ return left.every((value, index) => structurallyEqual(value, right[index]));
125
+ }
126
+ if (!isRecord(left) || !isRecord(right))
127
+ return false;
128
+ const leftKeys = Object.keys(left).sort();
129
+ const rightKeys = Object.keys(right).sort();
130
+ if (leftKeys.length !== rightKeys.length)
131
+ return false;
132
+ return leftKeys.every((key, index) => key === rightKeys[index] && structurallyEqual(left[key], right[key]));
133
+ }
134
+ function isRecord(value) {
135
+ return typeof value === "object" && value !== null && !Array.isArray(value);
136
+ }
137
+ //# sourceMappingURL=sessionStatusCoalescer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStatusCoalescer.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionStatusCoalescer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperdreamer/pi-webui",
3
- "version": "1.11.0-beta.1",
3
+ "version": "1.11.0-beta.2",
4
4
  "description": "Web UI for persistent Pi Coding Agent sessions in real workspaces.",
5
5
  "license": "MIT",
6
6
  "author": "Federico Jaramillo Martinez and HyperDreamer",