ftown 0.24.0 → 0.25.0

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 (40) hide show
  1. package/dist/centrifugo-client.js +15 -2
  2. package/dist/centrifugo-client.js.map +1 -1
  3. package/dist/direct-transport/loopback-server.d.ts +10 -3
  4. package/dist/direct-transport/loopback-server.js +20 -4
  5. package/dist/direct-transport/loopback-server.js.map +1 -1
  6. package/dist/direct-transport/peer-manager.d.ts +8 -3
  7. package/dist/direct-transport/peer-manager.js +20 -5
  8. package/dist/direct-transport/peer-manager.js.map +1 -1
  9. package/dist/file-stamp.d.ts +33 -0
  10. package/dist/file-stamp.js +35 -0
  11. package/dist/file-stamp.js.map +1 -0
  12. package/dist/index.js +16 -32
  13. package/dist/index.js.map +1 -1
  14. package/dist/mail-store.d.ts +15 -1
  15. package/dist/mail-store.js +78 -16
  16. package/dist/mail-store.js.map +1 -1
  17. package/dist/outbound-pipeline-types.d.ts +5 -2
  18. package/dist/outbound-pipeline-types.js.map +1 -1
  19. package/dist/security/bridge/policy.d.ts +3 -0
  20. package/dist/security/bridge/policy.js +17 -0
  21. package/dist/security/bridge/policy.js.map +1 -1
  22. package/dist/security/bridge/security.d.ts +10 -0
  23. package/dist/security/bridge/security.js +18 -11
  24. package/dist/security/bridge/security.js.map +1 -1
  25. package/dist/security/crypto.d.ts +2 -0
  26. package/dist/security/crypto.js +43 -4
  27. package/dist/security/crypto.js.map +1 -1
  28. package/dist/session-store.d.ts +22 -0
  29. package/dist/session-store.js +164 -15
  30. package/dist/session-store.js.map +1 -1
  31. package/dist/terminal-manager.d.ts +8 -0
  32. package/dist/terminal-manager.js +23 -1
  33. package/dist/terminal-manager.js.map +1 -1
  34. package/dist/terminal-output.d.ts +34 -0
  35. package/dist/terminal-output.js +68 -0
  36. package/dist/terminal-output.js.map +1 -0
  37. package/dist/terminal-pump.d.ts +48 -5
  38. package/dist/terminal-pump.js +143 -20
  39. package/dist/terminal-pump.js.map +1 -1
  40. package/package.json +2 -2
@@ -1,5 +1,9 @@
1
1
  const FLUSH_INTERVAL_MS = 16;
2
2
  const MAX_BUFFER_BYTES = 32_000;
3
+ const UNWATCHED_FLUSH_INTERVAL_MS = 250;
4
+ const UNWATCHED_MAX_BUFFER_BYTES = 256 * 1024;
5
+ /** Upper bound on how long a snapshot may hold back a session's output. */
6
+ const SNAPSHOT_TIMEOUT_MS = 1000;
3
7
  /** Raw terminal chars considered for the errorReason tail (pre-sanitize). */
4
8
  const ERROR_TAIL_RAW_CHARS = 1200;
5
9
  /** Max sanitized tail chars kept in errorReason. */
@@ -17,13 +21,16 @@ function sanitizeTerminalTail(raw) {
17
21
  }
18
22
  /**
19
23
  * Terminal output pump: buffers runner PTY output per session (coalescing into
20
- * ≤16ms / ≤32KB flushes to the store + transports), and owns the runner
21
- * lifecycle handlers ('complete'/'error') that persist final session statuses.
24
+ * ≤16ms / ≤32KB flushes to the store + transports while the session is watched,
25
+ * ≤250ms / ≤256KiB while nobody is), and owns the runner lifecycle handlers
26
+ * ('complete'/'error') that persist final session statuses. The live emulator
27
+ * (terminalManager) is fed immediately and never waits for a flush.
22
28
  */
23
29
  export class TerminalPump {
24
30
  deps;
25
- outputBuffers = new Map();
26
- flushTimers = new Map();
31
+ pending = new Map();
32
+ pendingAppends = new Set();
33
+ snapshotHolds = new Map();
27
34
  // Per-session write queue so concurrent load/modify/save flows (hooks,
28
35
  // runner exit handlers, stop_session) cannot interleave and resurrect a
29
36
  // stale status.
@@ -35,14 +42,20 @@ export class TerminalPump {
35
42
  return work;
36
43
  }
37
44
  isIdle() {
38
- return this.outputBuffers.size === 0 && this.sessionWrites.size === 0 && this.pendingAsync.size === 0;
45
+ return this.pending.size === 0 && this.sessionWrites.size === 0 && this.pendingAsync.size === 0;
39
46
  }
40
47
  flushIntervalMs;
41
48
  maxBufferBytes;
49
+ unwatchedFlushIntervalMs;
50
+ unwatchedMaxBufferBytes;
51
+ snapshotTimeoutMs;
42
52
  constructor(deps) {
43
53
  this.deps = deps;
44
54
  this.flushIntervalMs = deps.flushIntervalMs ?? FLUSH_INTERVAL_MS;
45
55
  this.maxBufferBytes = deps.maxBufferBytes ?? MAX_BUFFER_BYTES;
56
+ this.unwatchedFlushIntervalMs = deps.unwatchedFlushIntervalMs ?? UNWATCHED_FLUSH_INTERVAL_MS;
57
+ this.unwatchedMaxBufferBytes = deps.unwatchedMaxBufferBytes ?? UNWATCHED_MAX_BUFFER_BYTES;
58
+ this.snapshotTimeoutMs = deps.snapshotTimeoutMs ?? SNAPSHOT_TIMEOUT_MS;
46
59
  }
47
60
  /** Wire the pump onto the runner's data/lifecycle events. */
48
61
  attach(runner) {
@@ -52,28 +65,138 @@ export class TerminalPump {
52
65
  }
53
66
  handleData(sessionId, data) {
54
67
  this.deps.terminalManager.write(sessionId, data);
55
- const existing = this.outputBuffers.get(sessionId) ?? '';
56
- this.outputBuffers.set(sessionId, existing + data);
57
- if ((existing.length + data.length) >= this.maxBufferBytes) {
68
+ let pending = this.pending.get(sessionId);
69
+ if (!pending) {
70
+ pending = { data: '', bytes: 0, unwatchedTimer: false };
71
+ this.pending.set(sessionId, pending);
72
+ }
73
+ pending.data += data;
74
+ pending.bytes += Buffer.byteLength(data, 'utf-8');
75
+ // A viewer waiting for its snapshot is not attached yet but is watching.
76
+ if (this.snapshotHolds.has(sessionId) || (this.deps.isWatched?.(sessionId) ?? true)) {
77
+ // A buffer still riding the long window means a watcher appeared without
78
+ // an explicit flush: deliver now instead of making it wait.
79
+ if (pending.data.length >= this.maxBufferBytes || pending.unwatchedTimer) {
80
+ this.flush(sessionId);
81
+ }
82
+ else if (!pending.timer) {
83
+ pending.timer = setTimeout(() => this.flush(sessionId), this.flushIntervalMs);
84
+ }
85
+ }
86
+ else if (pending.bytes > this.unwatchedMaxBufferBytes) {
58
87
  this.flush(sessionId);
59
88
  }
60
- else if (!this.flushTimers.has(sessionId)) {
61
- this.flushTimers.set(sessionId, setTimeout(() => this.flush(sessionId), this.flushIntervalMs));
89
+ else if (!pending.timer) {
90
+ pending.timer = setTimeout(() => this.flush(sessionId), this.unwatchedFlushIntervalMs);
91
+ pending.unwatchedTimer = true;
62
92
  }
63
93
  }
94
+ /**
95
+ * Hand a session's pending output to the store and the transports now. Runs
96
+ * before terminal.log is read or cleared, on session exit and on shutdown.
97
+ * Screen snapshots go through `snapshot`, never a bare flush.
98
+ */
64
99
  flush(sessionId) {
65
- const buf = this.outputBuffers.get(sessionId);
66
- if (!buf)
100
+ const pending = this.pending.get(sessionId);
101
+ if (!pending)
67
102
  return;
68
- this.outputBuffers.delete(sessionId);
69
- const timer = this.flushTimers.get(sessionId);
70
- if (timer)
71
- clearTimeout(timer);
72
- this.flushTimers.delete(sessionId);
73
- this.track(this.deps.store.appendTerminalData(sessionId, buf)).catch((err) => {
103
+ this.pending.delete(sessionId);
104
+ if (pending.timer)
105
+ clearTimeout(pending.timer);
106
+ const append = this.track(this.deps.store.appendTerminalData(sessionId, pending.data)).catch((err) => {
74
107
  console.error(`[Bridge] Failed to store terminal data for ${sessionId}:`, err);
75
108
  });
76
- this.deps.publishTerminalData(sessionId, buf);
109
+ this.pendingAppends.add(append);
110
+ void append.then(() => this.pendingAppends.delete(append));
111
+ const hold = this.snapshotHolds.get(sessionId);
112
+ if (hold)
113
+ hold.deferred.push(pending.data);
114
+ else
115
+ this.deps.publishTerminalData(sessionId, pending.data);
116
+ }
117
+ /**
118
+ * Produce a screen snapshot (attach replay, screen dump) at an exact cut in
119
+ * the output stream. Everything received so far is sent as output first;
120
+ * `produce` then runs once the emulator has parsed exactly those bytes, and
121
+ * output received in between is delivered only after it. A viewer that is
122
+ * reset by the snapshot therefore neither loses nor repeats a byte, whether
123
+ * it joined the stream before or after the cut. Concurrent snapshots of one
124
+ * session share a cut. `produce` runs synchronously only for a session that
125
+ * has no emulator (or a pump without one); otherwise it runs later, from the
126
+ * emulator's write loop.
127
+ *
128
+ * If the emulator has not caught up within the timeout (a very large
129
+ * backlog), the held output is released as plain output and NO snapshot is
130
+ * produced from that cut — a screen taken then could be missing bytes that
131
+ * were already sent. The producers stay queued; when the emulator finally
132
+ * reports, a new cut is taken for them. A snapshot is therefore late in that
133
+ * case, never inconsistent.
134
+ */
135
+ snapshot(sessionId, produce) {
136
+ const active = this.snapshotHolds.get(sessionId);
137
+ if (active)
138
+ active.producers.push(produce);
139
+ else
140
+ this.startSnapshot(sessionId, [produce]);
141
+ }
142
+ startSnapshot(sessionId, producers) {
143
+ this.flush(sessionId);
144
+ const hold = { producers, deferred: [] };
145
+ this.snapshotHolds.set(sessionId, hold);
146
+ let timer;
147
+ const release = () => {
148
+ this.snapshotHolds.delete(sessionId);
149
+ for (const data of hold.deferred)
150
+ this.deps.publishTerminalData(sessionId, data);
151
+ // Output that arrived during the hold follows at once, not a window later.
152
+ this.flush(sessionId);
153
+ };
154
+ const onParsed = () => {
155
+ if (timer)
156
+ clearTimeout(timer);
157
+ if (this.snapshotHolds.get(sessionId) !== hold) {
158
+ // Timed out earlier and its output has moved on: cut again.
159
+ const current = this.snapshotHolds.get(sessionId);
160
+ if (current)
161
+ current.producers.push(...hold.producers);
162
+ else
163
+ this.startSnapshot(sessionId, hold.producers);
164
+ return;
165
+ }
166
+ try {
167
+ for (const run of hold.producers) {
168
+ try {
169
+ run();
170
+ }
171
+ catch (err) {
172
+ console.error(`[Bridge] Failed to produce terminal snapshot for ${sessionId}:`, err);
173
+ }
174
+ }
175
+ }
176
+ finally {
177
+ release();
178
+ }
179
+ };
180
+ const whenParsed = this.deps.terminalManager.whenParsed;
181
+ if (!whenParsed) {
182
+ onParsed();
183
+ return;
184
+ }
185
+ // Output must never stay held because an emulator is slow to report back.
186
+ timer = setTimeout(() => {
187
+ if (this.snapshotHolds.get(sessionId) === hold)
188
+ release();
189
+ }, this.snapshotTimeoutMs);
190
+ timer.unref?.();
191
+ whenParsed.call(this.deps.terminalManager, sessionId, onParsed);
192
+ }
193
+ /** Flush every session and wait until the store has taken all of it (shutdown). */
194
+ async drain() {
195
+ for (const sessionId of [...this.pending.keys()])
196
+ this.flush(sessionId);
197
+ while (this.pendingAppends.size > 0) {
198
+ await Promise.all([...this.pendingAppends]);
199
+ }
77
200
  }
78
201
  withSessionWrite(sessionId, task) {
79
202
  const prev = this.sessionWrites.get(sessionId) ?? Promise.resolve();
@@ -176,7 +299,7 @@ export class TerminalPump {
176
299
  handleError(sessionId, error) {
177
300
  // Capture what's still buffered BEFORE flush drains it — the errorReason
178
301
  // tail needs it if the (unawaited) flush append hasn't hit the store yet.
179
- const pendingAtError = this.outputBuffers.get(sessionId) ?? '';
302
+ const pendingAtError = this.pending.get(sessionId)?.data ?? '';
180
303
  this.flush(sessionId);
181
304
  this.publishSyntheticStop(sessionId, 'error');
182
305
  void this.track(this.withSessionWrite(sessionId, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-pump.js","sourceRoot":"","sources":["../src/terminal-pump.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-pump.js","sourceRoot":"","sources":["../src/terminal-pump.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ftown",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "CLI bridge for ftown — generic PTY-over-Centrifugo relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -72,5 +72,5 @@
72
72
  "overrides": {
73
73
  "qs": "6.16.1"
74
74
  },
75
- "gitHead": "59ada3b701d730e45751993df23354e49611ccc0"
75
+ "gitHead": "e4010193f960ffff69015be86c5e06aa18dc060c"
76
76
  }