mstro-app 0.4.51 → 0.5.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.
- package/README.md +10 -5
- package/bin/mstro.js +1 -1
- package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-stall.js +7 -2
- package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +1 -1
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/runner.d.ts.map +1 -1
- package/dist/server/cli/headless/runner.js +63 -67
- package/dist/server/cli/headless/runner.js.map +1 -1
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +9 -4
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/improvisation-history-store.d.ts +16 -0
- package/dist/server/cli/improvisation-history-store.d.ts.map +1 -0
- package/dist/server/cli/improvisation-history-store.js +52 -0
- package/dist/server/cli/improvisation-history-store.js.map +1 -0
- package/dist/server/cli/improvisation-movements.d.ts +31 -0
- package/dist/server/cli/improvisation-movements.d.ts.map +1 -0
- package/dist/server/cli/improvisation-movements.js +93 -0
- package/dist/server/cli/improvisation-movements.js.map +1 -0
- package/dist/server/cli/improvisation-output-queue.d.ts +13 -0
- package/dist/server/cli/improvisation-output-queue.d.ts.map +1 -0
- package/dist/server/cli/improvisation-output-queue.js +40 -0
- package/dist/server/cli/improvisation-output-queue.js.map +1 -0
- package/dist/server/cli/improvisation-retry.d.ts +21 -51
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -1
- package/dist/server/cli/improvisation-retry.js +18 -433
- package/dist/server/cli/improvisation-retry.js.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +10 -8
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +53 -148
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/retry/retry-best-result.d.ts +4 -0
- package/dist/server/cli/retry/retry-best-result.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-best-result.js +61 -0
- package/dist/server/cli/retry/retry-best-result.js.map +1 -0
- package/dist/server/cli/retry/retry-context-loss.d.ts +6 -0
- package/dist/server/cli/retry/retry-context-loss.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-context-loss.js +68 -0
- package/dist/server/cli/retry/retry-context-loss.js.map +1 -0
- package/dist/server/cli/retry/retry-premature-completion.d.ts +5 -0
- package/dist/server/cli/retry/retry-premature-completion.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-premature-completion.js +81 -0
- package/dist/server/cli/retry/retry-premature-completion.js.map +1 -0
- package/dist/server/cli/retry/retry-recovery-strategies.d.ts +13 -0
- package/dist/server/cli/retry/retry-recovery-strategies.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-recovery-strategies.js +166 -0
- package/dist/server/cli/retry/retry-recovery-strategies.js.map +1 -0
- package/dist/server/cli/retry/retry-resume-strategy.d.ts +12 -0
- package/dist/server/cli/retry/retry-resume-strategy.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-resume-strategy.js +22 -0
- package/dist/server/cli/retry/retry-resume-strategy.js.map +1 -0
- package/dist/server/cli/retry/retry-runner-factory.d.ts +11 -0
- package/dist/server/cli/retry/retry-runner-factory.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-runner-factory.js +60 -0
- package/dist/server/cli/retry/retry-runner-factory.js.map +1 -0
- package/dist/server/cli/retry/retry-tool-results.d.ts +9 -0
- package/dist/server/cli/retry/retry-tool-results.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-tool-results.js +24 -0
- package/dist/server/cli/retry/retry-tool-results.js.map +1 -0
- package/dist/server/cli/retry/retry-types.d.ts +30 -0
- package/dist/server/cli/retry/retry-types.d.ts.map +1 -0
- package/dist/server/cli/retry/retry-types.js +4 -0
- package/dist/server/cli/retry/retry-types.js.map +1 -0
- package/dist/server/index.js +21 -109
- package/dist/server/index.js.map +1 -1
- package/dist/server/server-setup.d.ts +16 -1
- package/dist/server/server-setup.d.ts.map +1 -1
- package/dist/server/server-setup.js +107 -0
- package/dist/server/server-setup.js.map +1 -1
- package/dist/server/services/plan/board-config.d.ts +21 -0
- package/dist/server/services/plan/board-config.d.ts.map +1 -0
- package/dist/server/services/plan/board-config.js +112 -0
- package/dist/server/services/plan/board-config.js.map +1 -0
- package/dist/server/services/plan/composer.d.ts +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +7 -5
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts +48 -48
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +157 -455
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/issue-loader.d.ts +16 -0
- package/dist/server/services/plan/issue-loader.d.ts.map +1 -0
- package/dist/server/services/plan/issue-loader.js +46 -0
- package/dist/server/services/plan/issue-loader.js.map +1 -0
- package/dist/server/services/plan/issue-writer.d.ts +34 -0
- package/dist/server/services/plan/issue-writer.d.ts.map +1 -0
- package/dist/server/services/plan/issue-writer.js +110 -0
- package/dist/server/services/plan/issue-writer.js.map +1 -0
- package/dist/server/services/plan/output-manager.d.ts.map +1 -1
- package/dist/server/services/plan/output-manager.js +2 -1
- package/dist/server/services/plan/output-manager.js.map +1 -1
- package/dist/server/services/plan/progress-log.d.ts +11 -0
- package/dist/server/services/plan/progress-log.d.ts.map +1 -0
- package/dist/server/services/plan/progress-log.js +81 -0
- package/dist/server/services/plan/progress-log.js.map +1 -0
- package/dist/server/services/plan/prompt-builder.d.ts.map +1 -1
- package/dist/server/services/plan/prompt-builder.js +48 -31
- package/dist/server/services/plan/prompt-builder.js.map +1 -1
- package/dist/server/services/plan/readiness-planner.d.ts +15 -0
- package/dist/server/services/plan/readiness-planner.d.ts.map +1 -0
- package/dist/server/services/plan/readiness-planner.js +41 -0
- package/dist/server/services/plan/readiness-planner.js.map +1 -0
- package/dist/server/services/plan/review-gate.d.ts +31 -0
- package/dist/server/services/plan/review-gate.d.ts.map +1 -1
- package/dist/server/services/plan/review-gate.js +52 -2
- package/dist/server/services/plan/review-gate.js.map +1 -1
- package/dist/server/services/platform.d.ts +56 -0
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +154 -52
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/websocket/file-download-handler.d.ts +17 -0
- package/dist/server/services/websocket/file-download-handler.d.ts.map +1 -0
- package/dist/server/services/websocket/file-download-handler.js +165 -0
- package/dist/server/services/websocket/file-download-handler.js.map +1 -0
- package/dist/server/services/websocket/git-branch-handlers.d.ts +1 -1
- package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.js +21 -1
- package/dist/server/services/websocket/git-branch-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +1 -1
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-worktree-handlers.d.ts +2 -0
- package/dist/server/services/websocket/git-worktree-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-worktree-handlers.js +30 -4
- package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler-context.d.ts +15 -0
- package/dist/server/services/websocket/handler-context.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.d.ts +7 -0
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +73 -11
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/msg-id-tracker.d.ts +21 -0
- package/dist/server/services/websocket/msg-id-tracker.d.ts.map +1 -0
- package/dist/server/services/websocket/msg-id-tracker.js +77 -0
- package/dist/server/services/websocket/msg-id-tracker.js.map +1 -0
- package/dist/server/services/websocket/quality-handlers.js +15 -3
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.js +2 -2
- package/dist/server/services/websocket/session-handlers.d.ts +48 -2
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +204 -65
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-initialization.d.ts +2 -2
- package/dist/server/services/websocket/session-initialization.d.ts.map +1 -1
- package/dist/server/services/websocket/session-initialization.js +75 -17
- package/dist/server/services/websocket/session-initialization.js.map +1 -1
- package/dist/server/services/websocket/session-registry.d.ts +29 -1
- package/dist/server/services/websocket/session-registry.d.ts.map +1 -1
- package/dist/server/services/websocket/session-registry.js +53 -4
- package/dist/server/services/websocket/session-registry.js.map +1 -1
- package/dist/server/services/websocket/tab-broadcast.d.ts +24 -0
- package/dist/server/services/websocket/tab-broadcast.d.ts.map +1 -0
- package/dist/server/services/websocket/tab-broadcast.js +13 -0
- package/dist/server/services/websocket/tab-broadcast.js.map +1 -0
- package/dist/server/services/websocket/tab-event-buffer.d.ts +103 -0
- package/dist/server/services/websocket/tab-event-buffer.d.ts.map +1 -0
- package/dist/server/services/websocket/tab-event-buffer.js +107 -0
- package/dist/server/services/websocket/tab-event-buffer.js.map +1 -0
- package/dist/server/services/websocket/tab-event-replay.d.ts +20 -0
- package/dist/server/services/websocket/tab-event-replay.d.ts.map +1 -0
- package/dist/server/services/websocket/tab-event-replay.js +21 -0
- package/dist/server/services/websocket/tab-event-replay.js.map +1 -0
- package/dist/server/services/websocket/tab-handlers.d.ts +0 -1
- package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-handlers.js +2 -9
- package/dist/server/services/websocket/tab-handlers.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +15 -6
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/dist/server/services/websocket/types.js +6 -4
- package/dist/server/services/websocket/types.js.map +1 -1
- package/package.json +1 -1
- package/server/README.md +1 -1
- package/server/cli/headless/claude-invoker-stall.ts +7 -2
- package/server/cli/headless/claude-invoker.ts +1 -1
- package/server/cli/headless/runner.ts +67 -72
- package/server/cli/headless/stall-assessor.ts +9 -4
- package/server/cli/headless/types.ts +1 -1
- package/server/cli/improvisation-history-store.ts +62 -0
- package/server/cli/improvisation-movements.ts +120 -0
- package/server/cli/improvisation-output-queue.ts +42 -0
- package/server/cli/improvisation-retry.ts +25 -600
- package/server/cli/improvisation-session-manager.ts +74 -160
- package/server/cli/retry/retry-best-result.ts +70 -0
- package/server/cli/retry/retry-context-loss.ts +87 -0
- package/server/cli/retry/retry-premature-completion.ts +113 -0
- package/server/cli/retry/retry-recovery-strategies.ts +247 -0
- package/server/cli/retry/retry-resume-strategy.ts +33 -0
- package/server/cli/retry/retry-runner-factory.ts +70 -0
- package/server/cli/retry/retry-tool-results.ts +31 -0
- package/server/cli/retry/retry-types.ts +32 -0
- package/server/index.ts +37 -123
- package/server/server-setup.ts +126 -1
- package/server/services/plan/agents/assess-stall.md +11 -4
- package/server/services/plan/board-config.ts +122 -0
- package/server/services/plan/composer.ts +7 -5
- package/server/services/plan/executor.ts +214 -467
- package/server/services/plan/issue-loader.ts +64 -0
- package/server/services/plan/issue-writer.ts +137 -0
- package/server/services/plan/output-manager.ts +2 -1
- package/server/services/plan/progress-log.ts +92 -0
- package/server/services/plan/prompt-builder.ts +73 -35
- package/server/services/plan/readiness-planner.ts +50 -0
- package/server/services/plan/review-gate.ts +102 -2
- package/server/services/platform.ts +163 -58
- package/server/services/websocket/file-download-handler.ts +191 -0
- package/server/services/websocket/git-branch-handlers.ts +28 -1
- package/server/services/websocket/git-handlers.ts +1 -1
- package/server/services/websocket/git-worktree-handlers.ts +31 -4
- package/server/services/websocket/handler-context.ts +15 -0
- package/server/services/websocket/handler.ts +76 -12
- package/server/services/websocket/msg-id-tracker.ts +84 -0
- package/server/services/websocket/quality-handlers.ts +16 -3
- package/server/services/websocket/quality-review-agent.ts +2 -2
- package/server/services/websocket/session-handlers.ts +213 -68
- package/server/services/websocket/session-initialization.ts +83 -19
- package/server/services/websocket/session-registry.ts +61 -4
- package/server/services/websocket/tab-broadcast.ts +38 -0
- package/server/services/websocket/tab-event-buffer.ts +159 -0
- package/server/services/websocket/tab-event-replay.ts +42 -0
- package/server/services/websocket/tab-handlers.ts +2 -9
- package/server/services/websocket/types.ts +17 -4
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
/**
|
|
4
|
+
* Bounded replay log for a single tab.
|
|
5
|
+
*
|
|
6
|
+
* Size/age limits are parameterised for testability but defaulted to values
|
|
7
|
+
* that comfortably cover real-world reconnect windows.
|
|
8
|
+
*/
|
|
9
|
+
export class TabEventBuffer {
|
|
10
|
+
maxEvents;
|
|
11
|
+
maxAgeMs;
|
|
12
|
+
now;
|
|
13
|
+
events = [];
|
|
14
|
+
nextSeq = 1;
|
|
15
|
+
constructor(maxEvents = DEFAULT_MAX_EVENTS, maxAgeMs = DEFAULT_MAX_AGE_MS, now = Date.now) {
|
|
16
|
+
this.maxEvents = maxEvents;
|
|
17
|
+
this.maxAgeMs = maxAgeMs;
|
|
18
|
+
this.now = now;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Append an event and return its assigned sequence number.
|
|
22
|
+
*
|
|
23
|
+
* Callers include the returned `seq` on the outgoing wire message so the
|
|
24
|
+
* web can record it and ask for replay starting after that seq on a
|
|
25
|
+
* subsequent reconnect.
|
|
26
|
+
*/
|
|
27
|
+
record(type, data) {
|
|
28
|
+
const seq = this.nextSeq++;
|
|
29
|
+
this.events.push({ seq, type, data, timestamp: this.now() });
|
|
30
|
+
this.evict();
|
|
31
|
+
return seq;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Return all still-buffered events with `seq > afterSeq`, in original
|
|
35
|
+
* order. Returns an empty array if nothing newer is buffered (either the
|
|
36
|
+
* web is caught up or the window has rolled past).
|
|
37
|
+
*/
|
|
38
|
+
getSince(afterSeq) {
|
|
39
|
+
this.evict();
|
|
40
|
+
const out = [];
|
|
41
|
+
for (const event of this.events) {
|
|
42
|
+
if (event.seq > afterSeq)
|
|
43
|
+
out.push(event);
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
/** Current highest assigned seq (monotonic; not reset by eviction). */
|
|
48
|
+
currentSeq() {
|
|
49
|
+
return this.nextSeq - 1;
|
|
50
|
+
}
|
|
51
|
+
/** Events currently held in memory. For tests. */
|
|
52
|
+
size() {
|
|
53
|
+
return this.events.length;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Drop events older than `maxAgeMs` from the front, then enforce
|
|
57
|
+
* `maxEvents` by trimming the front further if needed. Eviction keeps the
|
|
58
|
+
* newest events — they're the ones the web is most likely to still need.
|
|
59
|
+
*/
|
|
60
|
+
evict() {
|
|
61
|
+
const cutoff = this.now() - this.maxAgeMs;
|
|
62
|
+
while (this.events.length > 0 && this.events[0].timestamp < cutoff) {
|
|
63
|
+
this.events.shift();
|
|
64
|
+
}
|
|
65
|
+
while (this.events.length > this.maxEvents) {
|
|
66
|
+
this.events.shift();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Registry of per-tab buffers. Kept as a thin collection so `HandlerContext`
|
|
72
|
+
* can expose one instance and every broadcast site looks up (or lazily
|
|
73
|
+
* creates) the tab's buffer with a single call.
|
|
74
|
+
*/
|
|
75
|
+
export class TabEventBufferRegistry {
|
|
76
|
+
bufferFactory;
|
|
77
|
+
buffers = new Map();
|
|
78
|
+
constructor(bufferFactory = () => new TabEventBuffer()) {
|
|
79
|
+
this.bufferFactory = bufferFactory;
|
|
80
|
+
}
|
|
81
|
+
/** Get the buffer for `tabId`, creating it on first touch. */
|
|
82
|
+
getOrCreate(tabId) {
|
|
83
|
+
let buffer = this.buffers.get(tabId);
|
|
84
|
+
if (!buffer) {
|
|
85
|
+
buffer = this.bufferFactory();
|
|
86
|
+
this.buffers.set(tabId, buffer);
|
|
87
|
+
}
|
|
88
|
+
return buffer;
|
|
89
|
+
}
|
|
90
|
+
/** Get the buffer for `tabId` without creating it. */
|
|
91
|
+
get(tabId) {
|
|
92
|
+
return this.buffers.get(tabId);
|
|
93
|
+
}
|
|
94
|
+
/** Forget `tabId` entirely — called on `tabRemoved`. */
|
|
95
|
+
delete(tabId) {
|
|
96
|
+
this.buffers.delete(tabId);
|
|
97
|
+
}
|
|
98
|
+
/** Drop all bookkeeping. Used for tests; no production caller expected. */
|
|
99
|
+
clear() {
|
|
100
|
+
this.buffers.clear();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** 1000 events per tab covers typical reconnect windows comfortably. */
|
|
104
|
+
export const DEFAULT_MAX_EVENTS = 1000;
|
|
105
|
+
/** 15 minutes of history is more than enough for the longest plausible web reconnect. */
|
|
106
|
+
export const DEFAULT_MAX_AGE_MS = 15 * 60 * 1000;
|
|
107
|
+
//# sourceMappingURL=tab-event-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-event-buffer.js","sourceRoot":"","sources":["../../../../server/services/websocket/tab-event-buffer.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AA8ChE;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAKN;IACA;IACA;IANF,MAAM,GAAoB,EAAE,CAAA;IACrC,OAAO,GAAG,CAAC,CAAA;IAEnB,YACmB,YAAoB,kBAAkB,EACtC,WAAmB,kBAAkB,EACrC,MAAoB,IAAI,CAAC,GAAG;QAF5B,cAAS,GAAT,SAAS,CAA6B;QACtC,aAAQ,GAAR,QAAQ,CAA6B;QACrC,QAAG,GAAH,GAAG,CAAyB;IAC5C,CAAC;IAEJ;;;;;;OAMG;IACH,MAAM,CAAC,IAAY,EAAE,IAAa;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,MAAM,GAAG,GAAoB,EAAE,CAAA;QAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,GAAG,GAAG,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,uEAAuE;IACvE,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,kDAAkD;IAClD,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED;;;;OAIG;IACK,KAAK;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAId;IAHF,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAA;IAE5D,YACmB,gBAAsC,GAAG,EAAE,CAAC,IAAI,cAAc,EAAE;QAAhE,kBAAa,GAAb,aAAa,CAAmD;IAChF,CAAC;IAEJ,8DAA8D;IAC9D,WAAW,CAAC,KAAa;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;YAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,sDAAsD;IACtD,GAAG,CAAC,KAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,2EAA2E;IAC3E,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AACtC,yFAAyF;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replay tab-scoped events missed during a transport gap.
|
|
3
|
+
*
|
|
4
|
+
* `session-initialization.ts` calls this right before sending `tabInitialized`
|
|
5
|
+
* so the web sees any events with `seq > lastSeenSeq` in-order before the
|
|
6
|
+
* usual initialization payload. Ordering matters: e.g. a `movementComplete`
|
|
7
|
+
* before `outputHistory` would render duplicate content.
|
|
8
|
+
*
|
|
9
|
+
* Delivery is targeted (`ctx.send`) rather than broadcast because only the
|
|
10
|
+
* rejoining web needs the replay; other connected webs already saw these
|
|
11
|
+
* events live.
|
|
12
|
+
*/
|
|
13
|
+
import type { HandlerContext } from './handler-context.js';
|
|
14
|
+
import type { WSContext } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Replay tab events with `seq > lastSeenSeq` to `ws`. Silently no-ops when
|
|
17
|
+
* the buffer is empty or `lastSeenSeq` is unset (full init, not a resume).
|
|
18
|
+
*/
|
|
19
|
+
export declare function replayTabEventsSince(ctx: HandlerContext, ws: WSContext, tabId: string, lastSeenSeq: number | undefined): void;
|
|
20
|
+
//# sourceMappingURL=tab-event-replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-event-replay.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/tab-event-replay.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAqB,SAAS,EAAE,MAAM,YAAY,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAaN"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
/**
|
|
4
|
+
* Replay tab events with `seq > lastSeenSeq` to `ws`. Silently no-ops when
|
|
5
|
+
* the buffer is empty or `lastSeenSeq` is unset (full init, not a resume).
|
|
6
|
+
*/
|
|
7
|
+
export function replayTabEventsSince(ctx, ws, tabId, lastSeenSeq) {
|
|
8
|
+
if (lastSeenSeq === undefined)
|
|
9
|
+
return;
|
|
10
|
+
const buffer = ctx.tabEventBuffers.get(tabId);
|
|
11
|
+
if (!buffer)
|
|
12
|
+
return;
|
|
13
|
+
const events = buffer.getSince(lastSeenSeq);
|
|
14
|
+
for (const event of events) {
|
|
15
|
+
// Types are checked at record time via `broadcastTabEvent`; the buffer
|
|
16
|
+
// stores them as strings but by construction they're always
|
|
17
|
+
// `WebSocketResponse['type']`. Narrow here without an extra runtime check.
|
|
18
|
+
ctx.send(ws, { type: event.type, tabId, data: event.data, seq: event.seq });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=tab-event-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-event-replay.js","sourceRoot":"","sources":["../../../../server/services/websocket/tab-event-replay.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAkBhE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAmB,EACnB,EAAa,EACb,KAAa,EACb,WAA+B;IAE/B,IAAI,WAAW,KAAK,SAAS;QAAE,OAAM;IAErC,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,uEAAuE;QACvE,4DAA4D;QAC5D,2EAA2E;QAC3E,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAiC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IAC1G,CAAC;AACH,CAAC"}
|
|
@@ -2,7 +2,6 @@ import type { HandlerContext } from './handler-context.js';
|
|
|
2
2
|
import type { WebSocketMessage, WSContext } from './types.js';
|
|
3
3
|
export declare function handleGetActiveTabs(ctx: HandlerContext, ws: WSContext, workingDir: string): void;
|
|
4
4
|
export declare function handleSyncTabMeta(ctx: HandlerContext, _ws: WSContext, msg: WebSocketMessage, tabId: string, workingDir: string): void;
|
|
5
|
-
export declare function handleSyncPromptText(ctx: HandlerContext, _ws: WSContext, msg: WebSocketMessage, tabId: string): void;
|
|
6
5
|
export declare function handleRemoveTab(ctx: HandlerContext, _ws: WSContext, tabId: string, workingDir: string): void;
|
|
7
6
|
export declare function handleMarkTabViewed(ctx: HandlerContext, _ws: WSContext, tabId: string, workingDir: string): void;
|
|
8
7
|
export declare function handleCreateTab(ctx: HandlerContext, ws: WSContext, workingDir: string, tabName?: string, optimisticTabId?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-handlers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/tab-handlers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuC9D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAqBhG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CASrI;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"tab-handlers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/tab-handlers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuC9D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAqBhG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CASrI;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAY5G;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAQhH;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDvJ;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAcpH"}
|
|
@@ -60,20 +60,13 @@ export function handleSyncTabMeta(ctx, _ws, msg, tabId, workingDir) {
|
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
export function handleSyncPromptText(ctx, _ws, msg, tabId) {
|
|
64
|
-
if (typeof msg.data?.text !== 'string')
|
|
65
|
-
return;
|
|
66
|
-
ctx.broadcastToAll({
|
|
67
|
-
type: 'promptTextSync',
|
|
68
|
-
tabId,
|
|
69
|
-
data: { tabId, text: msg.data.text }
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
63
|
export function handleRemoveTab(ctx, _ws, tabId, workingDir) {
|
|
73
64
|
const registry = ctx.getRegistry(workingDir);
|
|
74
65
|
registry.unregisterTab(tabId);
|
|
75
66
|
ctx.gitDirectories.delete(tabId);
|
|
76
67
|
ctx.gitBranches.delete(tabId);
|
|
68
|
+
ctx.tabEventBuffers.delete(tabId);
|
|
69
|
+
ctx.msgIdTracker.forget(tabId);
|
|
77
70
|
ctx.broadcastToAll({
|
|
78
71
|
type: 'tabRemoved',
|
|
79
72
|
data: { tabId }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/tab-handlers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tab-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/tab-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,15 +23,16 @@ declare const GitDiffMessages: readonly ["gitDiff", "gitShowCommit", "gitCommitD
|
|
|
23
23
|
declare const GitTagMessages: readonly ["gitListTags", "gitCreateTag", "gitPushTag"];
|
|
24
24
|
declare const GitWorktreeMessages: readonly ["gitWorktreeList", "gitWorktreeCreate", "gitWorktreeCreateAndAssign", "gitWorktreeRemove", "tabWorktreeSwitch", "gitWorktreePush", "gitWorktreeCreatePR"];
|
|
25
25
|
declare const GitMergeMessages: readonly ["gitMergePreview", "gitWorktreeMerge", "gitMergeAbort", "gitMergeComplete"];
|
|
26
|
-
declare const SessionSyncMessages: readonly ["getActiveTabs", "createTab", "reorderTabs", "syncTabMeta", "
|
|
26
|
+
declare const SessionSyncMessages: readonly ["getActiveTabs", "createTab", "reorderTabs", "syncTabMeta", "removeTab", "markTabViewed"];
|
|
27
27
|
declare const SettingsMessages: readonly ["getSettings", "updateSettings"];
|
|
28
28
|
declare const QualityMessages: readonly ["qualityDetectTools", "qualityScan", "qualityInstallTools", "qualityCodeReview", "qualityLoadState", "qualitySaveDirectories"];
|
|
29
29
|
declare const FileUploadMessages: readonly ["fileUploadStart", "fileUploadChunk", "fileUploadComplete", "fileUploadCancel"];
|
|
30
|
+
declare const FileDownloadMessages: readonly ["fileDownloadStart", "fileDownloadCancel"];
|
|
30
31
|
declare const PlanMessages: readonly ["planInit", "planGetState", "planListIssues", "planGetIssue", "planGetSprint", "planGetMilestone", "planCreateIssue", "planUpdateIssue", "planDeleteIssue", "planScaffold", "planPrompt", "planExecute", "planExecuteEpic", "planPause", "planStop", "planResume"];
|
|
31
32
|
declare const PlanBoardMessages: readonly ["planCreateBoard", "planUpdateBoard", "planArchiveBoard", "planRestoreBoard", "planGetBoard", "planGetBoardState", "planReorderBoards", "planSetActiveBoard", "planGetBoardArtifacts"];
|
|
32
33
|
declare const PlanSprintMessages: readonly ["planCreateSprint", "planActivateSprint", "planCompleteSprint", "planGetSprintArtifacts"];
|
|
33
34
|
declare const SkillMessages: readonly ["listSkills", "chatToBoard"];
|
|
34
|
-
type WebSocketMessageType = typeof CoreMessages[number] | typeof TerminalMessages[number] | typeof FileExplorerMessages[number] | typeof GitMessages[number] | typeof GitBranchMessages[number] | typeof GitDiffMessages[number] | typeof GitTagMessages[number] | typeof GitWorktreeMessages[number] | typeof GitMergeMessages[number] | typeof SessionSyncMessages[number] | typeof SettingsMessages[number] | typeof QualityMessages[number] | typeof FileUploadMessages[number] | typeof PlanMessages[number] | typeof PlanBoardMessages[number] | typeof PlanSprintMessages[number] | typeof SkillMessages[number];
|
|
35
|
+
type WebSocketMessageType = typeof CoreMessages[number] | typeof TerminalMessages[number] | typeof FileExplorerMessages[number] | typeof GitMessages[number] | typeof GitBranchMessages[number] | typeof GitDiffMessages[number] | typeof GitTagMessages[number] | typeof GitWorktreeMessages[number] | typeof GitMergeMessages[number] | typeof SessionSyncMessages[number] | typeof SettingsMessages[number] | typeof QualityMessages[number] | typeof FileUploadMessages[number] | typeof FileDownloadMessages[number] | typeof PlanMessages[number] | typeof PlanBoardMessages[number] | typeof PlanSprintMessages[number] | typeof SkillMessages[number];
|
|
35
36
|
export interface WebSocketMessage {
|
|
36
37
|
type: WebSocketMessageType;
|
|
37
38
|
tabId?: string;
|
|
@@ -40,7 +41,7 @@ export interface WebSocketMessage {
|
|
|
40
41
|
/** Injected by server relay for view-only shared users */
|
|
41
42
|
_permission?: 'view';
|
|
42
43
|
}
|
|
43
|
-
declare const CoreResponseMessages: readonly ["output", "thinking", "movementStart", "movementComplete", "movementError", "sessionUpdate", "history", "sessions", "sessionsCount", "sessionDeleted", "sessionData", "historyCleared", "searchResults", "newSession", "autocomplete", "fileContent", "error", "pong", "tabInitialized", "approvalRequired", "toolUse", "streamingTokens", "notificationSummary"];
|
|
44
|
+
declare const CoreResponseMessages: readonly ["output", "thinking", "movementStart", "movementComplete", "movementError", "sessionUpdate", "history", "sessions", "sessionsCount", "sessionDeleted", "sessionData", "historyCleared", "searchResults", "newSession", "autocomplete", "fileContent", "error", "pong", "tabInitialized", "approvalRequired", "toolUse", "streamingTokens", "notificationSummary", "executeAck", "clientOffline", "clientAuthExpired"];
|
|
44
45
|
declare const TerminalResponseMessages: readonly ["terminalOutput", "terminalReady", "terminalExit", "terminalError", "terminalList", "terminalScrollback", "terminalCreated", "terminalClosed"];
|
|
45
46
|
declare const FileExplorerResponseMessages: readonly ["directoryListing", "fileWritten", "fileCreated", "directoryCreated", "fileDeleted", "fileRenamed", "fileOpened", "fileContentChanged", "contentSearchResults", "contentSearchComplete", "contentSearchError", "definitionResult", "fileError"];
|
|
46
47
|
declare const GitResponseMessages: readonly ["gitStatus", "gitStaged", "gitUnstaged", "gitCommitted", "gitCommitMessage", "gitPushed", "gitPulled", "gitLog", "gitError", "gitReposDiscovered", "gitDirectorySet", "gitRemoteInfo", "gitPRCreated", "gitPRDescription"];
|
|
@@ -49,20 +50,28 @@ declare const GitDiffResponseMessages: readonly ["gitDiffResult", "gitCommitDeta
|
|
|
49
50
|
declare const GitTagResponseMessages: readonly ["gitTagList", "gitTagCreated", "gitTagPushed"];
|
|
50
51
|
declare const GitWorktreeResponseMessages: readonly ["gitWorktreeListResult", "gitWorktreeCreated", "gitWorktreeCreatedAndAssigned", "gitWorktreeRemoved", "tabWorktreeSwitched", "gitBranchChanged", "gitWorktreePushed", "gitWorktreePRCreated"];
|
|
51
52
|
declare const GitMergeResponseMessages: readonly ["gitMergePreviewResult", "gitWorktreeMergeResult", "gitMergeAborted", "gitMergeCompleted"];
|
|
52
|
-
declare const SessionSyncResponseMessages: readonly ["activeTabs", "tabCreated", "tabRemoved", "tabRenamed", "tabsReordered", "
|
|
53
|
+
declare const SessionSyncResponseMessages: readonly ["activeTabs", "tabCreated", "tabRemoved", "tabRenamed", "tabsReordered", "tabViewed", "tabStateChanged"];
|
|
53
54
|
declare const SettingsResponseMessages: readonly ["settings", "settingsUpdated"];
|
|
54
|
-
declare const QualityResponseMessages: readonly ["qualityToolsDetected", "qualityScanProgress", "qualityScanResults", "qualityInstallProgress", "qualityInstallComplete", "qualityCodeReview", "qualityCodeReviewProgress", "qualityPostSession", "qualityError", "qualityStateLoaded"];
|
|
55
|
+
declare const QualityResponseMessages: readonly ["qualityToolsDetected", "qualityScanProgress", "qualityScanResults", "qualityInstallProgress", "qualityInstallComplete", "qualityCodeReview", "qualityCodeReviewProgress", "qualityPostSession", "qualityError", "qualityStateLoaded", "qualityDirectoriesUpdated"];
|
|
55
56
|
declare const FileUploadResponseMessages: readonly ["fileUploadAck", "fileUploadReady", "fileUploadError"];
|
|
57
|
+
declare const FileDownloadResponseMessages: readonly ["fileDownloadReady", "fileDownloadChunk", "fileDownloadComplete", "fileDownloadError"];
|
|
56
58
|
declare const PlanResponseMessages: readonly ["planState", "planIssueList", "planIssue", "planSprint", "planMilestone", "planNotFound", "planStateUpdated", "planIssueUpdated", "planIssueCreated", "planIssueDeleted", "planScaffolded", "planPromptStreaming", "planPromptProgress", "planPromptResponse", "planExecutionStarted", "planExecutionProgress", "planExecutionOutput", "planExecutionMetrics", "planExecutionComplete", "planExecutionError", "planError"];
|
|
57
59
|
declare const PlanBoardResponseMessages: readonly ["planBoardCreated", "planBoardUpdated", "planBoardArchived", "planBoardState", "planBoardArtifacts", "planWorkspaceUpdated"];
|
|
58
60
|
declare const PlanSprintResponseMessages: readonly ["planSprintCreated", "planSprintUpdated", "planSprintCompleted", "planSprintArtifacts", "planReviewProgress"];
|
|
59
61
|
declare const SkillResponseMessages: readonly ["skillsList", "chatToBoardCreated"];
|
|
60
|
-
type WebSocketResponseType = typeof CoreResponseMessages[number] | typeof TerminalResponseMessages[number] | typeof FileExplorerResponseMessages[number] | typeof GitResponseMessages[number] | typeof GitBranchResponseMessages[number] | typeof GitDiffResponseMessages[number] | typeof GitTagResponseMessages[number] | typeof GitWorktreeResponseMessages[number] | typeof GitMergeResponseMessages[number] | typeof SessionSyncResponseMessages[number] | typeof SettingsResponseMessages[number] | typeof QualityResponseMessages[number] | typeof FileUploadResponseMessages[number] | typeof PlanResponseMessages[number] | typeof PlanBoardResponseMessages[number] | typeof PlanSprintResponseMessages[number] | typeof SkillResponseMessages[number];
|
|
62
|
+
type WebSocketResponseType = typeof CoreResponseMessages[number] | typeof TerminalResponseMessages[number] | typeof FileExplorerResponseMessages[number] | typeof GitResponseMessages[number] | typeof GitBranchResponseMessages[number] | typeof GitDiffResponseMessages[number] | typeof GitTagResponseMessages[number] | typeof GitWorktreeResponseMessages[number] | typeof GitMergeResponseMessages[number] | typeof SessionSyncResponseMessages[number] | typeof SettingsResponseMessages[number] | typeof QualityResponseMessages[number] | typeof FileUploadResponseMessages[number] | typeof FileDownloadResponseMessages[number] | typeof PlanResponseMessages[number] | typeof PlanBoardResponseMessages[number] | typeof PlanSprintResponseMessages[number] | typeof SkillResponseMessages[number];
|
|
61
63
|
export interface WebSocketResponse {
|
|
62
64
|
type: WebSocketResponseType;
|
|
63
65
|
tabId?: string;
|
|
64
66
|
terminalId?: string;
|
|
65
67
|
data?: any;
|
|
68
|
+
/**
|
|
69
|
+
* Monotonic per-tab sequence number assigned by `tab-event-buffer.ts`.
|
|
70
|
+
* Stamped on tab-scoped streaming broadcasts so webs can ask for replay
|
|
71
|
+
* starting after their highest-seen seq on a reconnect (`initTab` /
|
|
72
|
+
* `resumeSession` with `lastSeenSeq` in the payload).
|
|
73
|
+
*/
|
|
74
|
+
seq?: number;
|
|
66
75
|
}
|
|
67
76
|
export interface ConnectionData {
|
|
68
77
|
tabId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/types.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACjC,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAElB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,QAAA,MAAM,YAAY,kSAAmS,CAAC;AAEtT,QAAA,MAAM,gBAAgB,oHAAqH,CAAC;AAE5I,QAAA,MAAM,oBAAoB,kLAAmL,CAAC;AAE9M,QAAA,MAAM,WAAW,wNAAyN,CAAC;AAE3O,QAAA,MAAM,iBAAiB,mFAAoF,CAAC;AAE5G,QAAA,MAAM,eAAe,wDAAyD,CAAC;AAE/E,QAAA,MAAM,cAAc,wDAAyD,CAAC;AAE9E,QAAA,MAAM,mBAAmB,qKAAsK,CAAC;AAEhM,QAAA,MAAM,gBAAgB,uFAAwF,CAAC;AAE/G,QAAA,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,15 +9,16 @@ const GitDiffMessages = ['gitDiff', 'gitShowCommit', 'gitCommitDiff'];
|
|
|
9
9
|
const GitTagMessages = ['gitListTags', 'gitCreateTag', 'gitPushTag'];
|
|
10
10
|
const GitWorktreeMessages = ['gitWorktreeList', 'gitWorktreeCreate', 'gitWorktreeCreateAndAssign', 'gitWorktreeRemove', 'tabWorktreeSwitch', 'gitWorktreePush', 'gitWorktreeCreatePR'];
|
|
11
11
|
const GitMergeMessages = ['gitMergePreview', 'gitWorktreeMerge', 'gitMergeAbort', 'gitMergeComplete'];
|
|
12
|
-
const SessionSyncMessages = ['getActiveTabs', 'createTab', 'reorderTabs', 'syncTabMeta', '
|
|
12
|
+
const SessionSyncMessages = ['getActiveTabs', 'createTab', 'reorderTabs', 'syncTabMeta', 'removeTab', 'markTabViewed'];
|
|
13
13
|
const SettingsMessages = ['getSettings', 'updateSettings'];
|
|
14
14
|
const QualityMessages = ['qualityDetectTools', 'qualityScan', 'qualityInstallTools', 'qualityCodeReview', 'qualityLoadState', 'qualitySaveDirectories'];
|
|
15
15
|
const FileUploadMessages = ['fileUploadStart', 'fileUploadChunk', 'fileUploadComplete', 'fileUploadCancel'];
|
|
16
|
+
const FileDownloadMessages = ['fileDownloadStart', 'fileDownloadCancel'];
|
|
16
17
|
const PlanMessages = ['planInit', 'planGetState', 'planListIssues', 'planGetIssue', 'planGetSprint', 'planGetMilestone', 'planCreateIssue', 'planUpdateIssue', 'planDeleteIssue', 'planScaffold', 'planPrompt', 'planExecute', 'planExecuteEpic', 'planPause', 'planStop', 'planResume'];
|
|
17
18
|
const PlanBoardMessages = ['planCreateBoard', 'planUpdateBoard', 'planArchiveBoard', 'planRestoreBoard', 'planGetBoard', 'planGetBoardState', 'planReorderBoards', 'planSetActiveBoard', 'planGetBoardArtifacts'];
|
|
18
19
|
const PlanSprintMessages = ['planCreateSprint', 'planActivateSprint', 'planCompleteSprint', 'planGetSprintArtifacts'];
|
|
19
20
|
const SkillMessages = ['listSkills', 'chatToBoard'];
|
|
20
|
-
const CoreResponseMessages = ['output', 'thinking', 'movementStart', 'movementComplete', 'movementError', 'sessionUpdate', 'history', 'sessions', 'sessionsCount', 'sessionDeleted', 'sessionData', 'historyCleared', 'searchResults', 'newSession', 'autocomplete', 'fileContent', 'error', 'pong', 'tabInitialized', 'approvalRequired', 'toolUse', 'streamingTokens', 'notificationSummary'];
|
|
21
|
+
const CoreResponseMessages = ['output', 'thinking', 'movementStart', 'movementComplete', 'movementError', 'sessionUpdate', 'history', 'sessions', 'sessionsCount', 'sessionDeleted', 'sessionData', 'historyCleared', 'searchResults', 'newSession', 'autocomplete', 'fileContent', 'error', 'pong', 'tabInitialized', 'approvalRequired', 'toolUse', 'streamingTokens', 'notificationSummary', 'executeAck', 'clientOffline', 'clientAuthExpired'];
|
|
21
22
|
const TerminalResponseMessages = ['terminalOutput', 'terminalReady', 'terminalExit', 'terminalError', 'terminalList', 'terminalScrollback', 'terminalCreated', 'terminalClosed'];
|
|
22
23
|
const FileExplorerResponseMessages = ['directoryListing', 'fileWritten', 'fileCreated', 'directoryCreated', 'fileDeleted', 'fileRenamed', 'fileOpened', 'fileContentChanged', 'contentSearchResults', 'contentSearchComplete', 'contentSearchError', 'definitionResult', 'fileError'];
|
|
23
24
|
const GitResponseMessages = ['gitStatus', 'gitStaged', 'gitUnstaged', 'gitCommitted', 'gitCommitMessage', 'gitPushed', 'gitPulled', 'gitLog', 'gitError', 'gitReposDiscovered', 'gitDirectorySet', 'gitRemoteInfo', 'gitPRCreated', 'gitPRDescription'];
|
|
@@ -26,10 +27,11 @@ const GitDiffResponseMessages = ['gitDiffResult', 'gitCommitDetail', 'gitCommitD
|
|
|
26
27
|
const GitTagResponseMessages = ['gitTagList', 'gitTagCreated', 'gitTagPushed'];
|
|
27
28
|
const GitWorktreeResponseMessages = ['gitWorktreeListResult', 'gitWorktreeCreated', 'gitWorktreeCreatedAndAssigned', 'gitWorktreeRemoved', 'tabWorktreeSwitched', 'gitBranchChanged', 'gitWorktreePushed', 'gitWorktreePRCreated'];
|
|
28
29
|
const GitMergeResponseMessages = ['gitMergePreviewResult', 'gitWorktreeMergeResult', 'gitMergeAborted', 'gitMergeCompleted'];
|
|
29
|
-
const SessionSyncResponseMessages = ['activeTabs', 'tabCreated', 'tabRemoved', 'tabRenamed', 'tabsReordered', '
|
|
30
|
+
const SessionSyncResponseMessages = ['activeTabs', 'tabCreated', 'tabRemoved', 'tabRenamed', 'tabsReordered', 'tabViewed', 'tabStateChanged'];
|
|
30
31
|
const SettingsResponseMessages = ['settings', 'settingsUpdated'];
|
|
31
|
-
const QualityResponseMessages = ['qualityToolsDetected', 'qualityScanProgress', 'qualityScanResults', 'qualityInstallProgress', 'qualityInstallComplete', 'qualityCodeReview', 'qualityCodeReviewProgress', 'qualityPostSession', 'qualityError', 'qualityStateLoaded'];
|
|
32
|
+
const QualityResponseMessages = ['qualityToolsDetected', 'qualityScanProgress', 'qualityScanResults', 'qualityInstallProgress', 'qualityInstallComplete', 'qualityCodeReview', 'qualityCodeReviewProgress', 'qualityPostSession', 'qualityError', 'qualityStateLoaded', 'qualityDirectoriesUpdated'];
|
|
32
33
|
const FileUploadResponseMessages = ['fileUploadAck', 'fileUploadReady', 'fileUploadError'];
|
|
34
|
+
const FileDownloadResponseMessages = ['fileDownloadReady', 'fileDownloadChunk', 'fileDownloadComplete', 'fileDownloadError'];
|
|
33
35
|
const PlanResponseMessages = ['planState', 'planIssueList', 'planIssue', 'planSprint', 'planMilestone', 'planNotFound', 'planStateUpdated', 'planIssueUpdated', 'planIssueCreated', 'planIssueDeleted', 'planScaffolded', 'planPromptStreaming', 'planPromptProgress', 'planPromptResponse', 'planExecutionStarted', 'planExecutionProgress', 'planExecutionOutput', 'planExecutionMetrics', 'planExecutionComplete', 'planExecutionError', 'planError'];
|
|
34
36
|
const PlanBoardResponseMessages = ['planBoardCreated', 'planBoardUpdated', 'planBoardArchived', 'planBoardState', 'planBoardArtifacts', 'planWorkspaceUpdated'];
|
|
35
37
|
const PlanSprintResponseMessages = ['planSprintCreated', 'planSprintUpdated', 'planSprintCompleted', 'planSprintArtifacts', 'planReviewProgress'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../server/services/websocket/types.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAqBhE,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,4BAA4B,CAAU,CAAC;AAEtT,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAU,CAAC;AAE5I,MAAM,oBAAoB,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,CAAU,CAAC;AAE9M,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,0BAA0B,CAAU,CAAC;AAE3O,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAU,CAAC;AAE5G,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAU,CAAC;AAE/E,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAE9E,MAAM,mBAAmB,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,qBAAqB,CAAU,CAAC;AAEhM,MAAM,gBAAgB,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,CAAU,CAAC;AAE/G,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../server/services/websocket/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mstro-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Browser-based IDE + AI agent orchestration CLI. Run Claude Code in parallel across git worktrees, auto-approve safe tools with the Security Bouncer, and control long-running AI work from any device at app.mstro.app.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
package/server/README.md
CHANGED
|
@@ -152,7 +152,7 @@ The WebSocket endpoint handles real-time communication for the web interface. Me
|
|
|
152
152
|
|
|
153
153
|
### Tabs
|
|
154
154
|
|
|
155
|
-
`getActiveTabs`, `createTab`, `reorderTabs`, `syncTabMeta`, `
|
|
155
|
+
`getActiveTabs`, `createTab`, `reorderTabs`, `syncTabMeta`, `removeTab`, `markTabViewed`
|
|
156
156
|
|
|
157
157
|
### Settings
|
|
158
158
|
|
|
@@ -109,9 +109,14 @@ export async function runStallCheckTick(
|
|
|
109
109
|
const totalElapsed = now - opts.perfStart;
|
|
110
110
|
const tokenSilenceMs = now - opts.lastTokenActivityTime;
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
// Hard cap is a contextual backstop: only fire when other stall signals have
|
|
113
|
+
// already flagged concern. A healthy streaming process is never killed by
|
|
114
|
+
// wall-clock alone — it is killed only if it has been warned as stalled OR
|
|
115
|
+
// Haiku has already exhausted its extension grants.
|
|
116
|
+
const stallFlagged = state.stallWarningEmitted || state.extensionsGranted >= opts.maxExtensions;
|
|
117
|
+
if (totalElapsed >= opts.stallHardCapMs && stallFlagged) {
|
|
113
118
|
terminateStallProcess(opts.claudeProcess, opts.stallCheckInterval, opts.config,
|
|
114
|
-
`\n[[MSTRO_ERROR:EXECUTION_STALLED]] Hard time limit reached (${Math.round(opts.stallHardCapMs / 60000)} min total). Terminating process.\n`
|
|
119
|
+
`\n[[MSTRO_ERROR:EXECUTION_STALLED]] Hard time limit reached (${Math.round(opts.stallHardCapMs / 60000)} min total) after stall signals fired. Terminating process.\n`
|
|
115
120
|
);
|
|
116
121
|
return;
|
|
117
122
|
}
|
|
@@ -117,7 +117,7 @@ export async function executeClaudeCommand(
|
|
|
117
117
|
|
|
118
118
|
// Stall detection with intelligent assessment
|
|
119
119
|
const stallWarningMs = config.stallWarningMs ?? 300_000;
|
|
120
|
-
const stallHardCapMs = config.stallHardCapMs ??
|
|
120
|
+
const stallHardCapMs = config.stallHardCapMs ?? 14_400_000;
|
|
121
121
|
const maxExtensions = config.stallMaxExtensions ?? 3;
|
|
122
122
|
const stallAssessEnabled = config.stallAssessEnabled !== false;
|
|
123
123
|
|