mstro-app 0.5.1 → 0.5.5
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/PRIVACY.md +9 -9
- package/README.md +71 -28
- package/bin/commands/config.js +1 -1
- package/bin/mstro.js +55 -4
- package/dist/server/cli/eta-estimator.d.ts +55 -0
- package/dist/server/cli/eta-estimator.d.ts.map +1 -0
- package/dist/server/cli/eta-estimator.js +222 -0
- package/dist/server/cli/eta-estimator.js.map +1 -0
- package/dist/server/cli/headless/stall-assessor.d.ts +50 -0
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +64 -9
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.d.ts +21 -0
- package/dist/server/cli/headless/tool-watchdog.d.ts.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.js +19 -12
- package/dist/server/cli/headless/tool-watchdog.js.map +1 -1
- package/dist/server/cli/improvisation-history-store.d.ts.map +1 -1
- package/dist/server/cli/improvisation-history-store.js +5 -1
- package/dist/server/cli/improvisation-history-store.js.map +1 -1
- package/dist/server/cli/improvisation-output-queue.d.ts +5 -1
- package/dist/server/cli/improvisation-output-queue.d.ts.map +1 -1
- package/dist/server/cli/improvisation-output-queue.js +30 -7
- package/dist/server/cli/improvisation-output-queue.js.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +29 -0
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +50 -1
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/improvisation-types.d.ts +2 -0
- package/dist/server/cli/improvisation-types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-types.js.map +1 -1
- package/dist/server/engines/EngineEvent.d.ts +126 -0
- package/dist/server/engines/EngineEvent.d.ts.map +1 -0
- package/dist/server/engines/EngineEvent.js +11 -0
- package/dist/server/engines/EngineEvent.js.map +1 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.d.ts +47 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.d.ts.map +1 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.js +338 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.js.map +1 -0
- package/dist/server/engines/factory.d.ts +21 -0
- package/dist/server/engines/factory.d.ts.map +1 -0
- package/dist/server/engines/factory.js +152 -0
- package/dist/server/engines/factory.js.map +1 -0
- package/dist/server/engines/opencode/OpenCodeEngine.d.ts +148 -0
- package/dist/server/engines/opencode/OpenCodeEngine.d.ts.map +1 -0
- package/dist/server/engines/opencode/OpenCodeEngine.js +630 -0
- package/dist/server/engines/opencode/OpenCodeEngine.js.map +1 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.d.ts +172 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.d.ts.map +1 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.js +390 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.js.map +1 -0
- package/dist/server/engines/opencode/model-catalog.d.ts +94 -0
- package/dist/server/engines/opencode/model-catalog.d.ts.map +1 -0
- package/dist/server/engines/opencode/model-catalog.js +141 -0
- package/dist/server/engines/opencode/model-catalog.js.map +1 -0
- package/dist/server/engines/types.d.ts +146 -0
- package/dist/server/engines/types.d.ts.map +1 -0
- package/dist/server/engines/types.js +4 -0
- package/dist/server/engines/types.js.map +1 -0
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-haiku.d.ts +17 -4
- package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-haiku.js +8 -124
- package/dist/server/mcp/bouncer-haiku.js.map +1 -1
- package/dist/server/mcp/bouncer-integration.d.ts +45 -0
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +69 -5
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/classifier/BouncerClassifier.d.ts +34 -0
- package/dist/server/mcp/classifier/BouncerClassifier.d.ts.map +1 -0
- package/dist/server/mcp/classifier/BouncerClassifier.js +4 -0
- package/dist/server/mcp/classifier/BouncerClassifier.js.map +1 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.d.ts +17 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.d.ts.map +1 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.js +142 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.js.map +1 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.d.ts +68 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.d.ts.map +1 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.js +182 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.js.map +1 -0
- package/dist/server/mcp/classifier/factory.d.ts +70 -0
- package/dist/server/mcp/classifier/factory.d.ts.map +1 -0
- package/dist/server/mcp/classifier/factory.js +155 -0
- package/dist/server/mcp/classifier/factory.js.map +1 -0
- package/dist/server/services/plan/agent-resolver.d.ts +26 -0
- package/dist/server/services/plan/agent-resolver.d.ts.map +1 -0
- package/dist/server/services/plan/agent-resolver.js +102 -0
- package/dist/server/services/plan/agent-resolver.js.map +1 -0
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +59 -11
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +3 -1
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/issue-prompt-builder.d.ts.map +1 -1
- package/dist/server/services/plan/issue-prompt-builder.js +33 -1
- package/dist/server/services/plan/issue-prompt-builder.js.map +1 -1
- package/dist/server/services/plan/parser-core.d.ts.map +1 -1
- package/dist/server/services/plan/parser-core.js +1 -0
- package/dist/server/services/plan/parser-core.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +1 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/settings.d.ts +76 -2
- package/dist/server/services/settings.d.ts.map +1 -1
- package/dist/server/services/settings.js +127 -4
- package/dist/server/services/settings.js.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.js +19 -6
- package/dist/server/services/websocket/git-branch-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts +17 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +54 -2
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-complexity.js +78 -26
- package/dist/server/services/websocket/quality-complexity.js.map +1 -1
- package/dist/server/services/websocket/quality-eta.d.ts +47 -0
- package/dist/server/services/websocket/quality-eta.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-eta.js +110 -0
- package/dist/server/services/websocket/quality-eta.js.map +1 -0
- package/dist/server/services/websocket/quality-grading.d.ts +27 -4
- package/dist/server/services/websocket/quality-grading.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-grading.js +369 -201
- package/dist/server/services/websocket/quality-grading.js.map +1 -1
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +145 -7
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-operations.d.ts +34 -0
- package/dist/server/services/websocket/quality-operations.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-operations.js +47 -0
- package/dist/server/services/websocket/quality-operations.js.map +1 -0
- package/dist/server/services/websocket/quality-persistence.d.ts +9 -0
- package/dist/server/services/websocket/quality-persistence.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-persistence.js +10 -0
- package/dist/server/services/websocket/quality-persistence.js.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.js +105 -56
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
- package/dist/server/services/websocket/quality-service.d.ts +9 -1
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +334 -14
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-tools.d.ts +21 -0
- package/dist/server/services/websocket/quality-tools.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-tools.js +49 -0
- package/dist/server/services/websocket/quality-tools.js.map +1 -1
- package/dist/server/services/websocket/quality-types.d.ts +35 -2
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-types.js +1 -1
- package/dist/server/services/websocket/quality-types.js.map +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts +3 -1
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +57 -9
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-history.js +3 -0
- package/dist/server/services/websocket/session-history.js.map +1 -1
- package/dist/server/services/websocket/session-initialization.d.ts.map +1 -1
- package/dist/server/services/websocket/session-initialization.js +158 -42
- package/dist/server/services/websocket/session-initialization.js.map +1 -1
- package/dist/server/services/websocket/session-registry.d.ts +25 -0
- package/dist/server/services/websocket/session-registry.d.ts.map +1 -1
- package/dist/server/services/websocket/session-registry.js +19 -0
- package/dist/server/services/websocket/session-registry.js.map +1 -1
- package/dist/server/services/websocket/settings-handlers.d.ts +1 -1
- package/dist/server/services/websocket/settings-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/settings-handlers.js +35 -4
- package/dist/server/services/websocket/settings-handlers.js.map +1 -1
- package/dist/server/services/websocket/tab-broadcast.d.ts +7 -2
- package/dist/server/services/websocket/tab-broadcast.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-broadcast.js +10 -2
- package/dist/server/services/websocket/tab-broadcast.js.map +1 -1
- package/dist/server/services/websocket/tab-event-buffer.d.ts +97 -8
- package/dist/server/services/websocket/tab-event-buffer.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-event-buffer.js +138 -12
- package/dist/server/services/websocket/tab-event-buffer.js.map +1 -1
- package/dist/server/services/websocket/tab-event-replay.d.ts +29 -13
- package/dist/server/services/websocket/tab-event-replay.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-event-replay.js +55 -2
- package/dist/server/services/websocket/tab-event-replay.js.map +1 -1
- package/dist/server/services/websocket/tab-handlers.d.ts +9 -1
- package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-handlers.js +47 -2
- package/dist/server/services/websocket/tab-handlers.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +28 -5
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/dist/server/services/websocket/types.js +10 -4
- package/dist/server/services/websocket/types.js.map +1 -1
- package/package.json +5 -3
- package/server/cli/eta-estimator.ts +249 -0
- package/server/cli/headless/stall-assessor.ts +93 -0
- package/server/cli/headless/tool-watchdog.ts +21 -0
- package/server/cli/improvisation-history-store.ts +4 -1
- package/server/cli/improvisation-output-queue.ts +29 -7
- package/server/cli/improvisation-session-manager.ts +54 -1
- package/server/cli/improvisation-types.ts +2 -0
- package/server/engines/EngineEvent.ts +156 -0
- package/server/engines/claude/ClaudeCodeEngine.ts +404 -0
- package/server/engines/factory.ts +176 -0
- package/server/engines/opencode/OpenCodeEngine.ts +786 -0
- package/server/engines/opencode/OpenCodeServerManager.ts +577 -0
- package/server/engines/opencode/model-catalog.ts +217 -0
- package/server/engines/types.ts +173 -0
- package/server/index.ts +1 -1
- package/server/mcp/bouncer-haiku.ts +21 -145
- package/server/mcp/bouncer-integration.ts +107 -5
- package/server/mcp/classifier/BouncerClassifier.ts +40 -0
- package/server/mcp/classifier/ClaudeBouncerClassifier.ts +189 -0
- package/server/mcp/classifier/OpenCodeBouncerClassifier.ts +305 -0
- package/server/mcp/classifier/factory.ts +195 -0
- package/server/services/plan/agent-resolver.ts +115 -0
- package/server/services/plan/agents/code-review.md +38 -8
- package/server/services/plan/composer.ts +63 -11
- package/server/services/plan/executor.ts +3 -1
- package/server/services/plan/issue-prompt-builder.ts +39 -1
- package/server/services/plan/parser-core.ts +1 -0
- package/server/services/plan/types.ts +4 -0
- package/server/services/settings.ts +161 -4
- package/server/services/websocket/git-branch-handlers.ts +20 -6
- package/server/services/websocket/handler.ts +59 -2
- package/server/services/websocket/quality-complexity.ts +80 -26
- package/server/services/websocket/quality-eta.ts +155 -0
- package/server/services/websocket/quality-grading.ts +445 -222
- package/server/services/websocket/quality-handlers.ts +153 -7
- package/server/services/websocket/quality-operations.ts +72 -0
- package/server/services/websocket/quality-persistence.ts +17 -0
- package/server/services/websocket/quality-review-agent.ts +154 -64
- package/server/services/websocket/quality-service.ts +361 -13
- package/server/services/websocket/quality-tools.ts +51 -0
- package/server/services/websocket/quality-types.ts +41 -2
- package/server/services/websocket/session-handlers.ts +64 -10
- package/server/services/websocket/session-history.ts +3 -0
- package/server/services/websocket/session-initialization.ts +189 -46
- package/server/services/websocket/session-registry.ts +37 -0
- package/server/services/websocket/settings-handlers.ts +41 -4
- package/server/services/websocket/tab-broadcast.ts +10 -2
- package/server/services/websocket/tab-event-buffer.ts +143 -11
- package/server/services/websocket/tab-event-replay.ts +70 -3
- package/server/services/websocket/tab-handlers.ts +53 -5
- package/server/services/websocket/types.ts +37 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
2
|
import { ImprovisationSessionManager } from '../../cli/improvisation-session-manager.js';
|
|
3
3
|
import { getEffortLevel, getModel } from '../settings.js';
|
|
4
|
-
import { buildOutputHistory, setupSessionListeners } from './session-handlers.js';
|
|
4
|
+
import { buildOutputHistory, resolveEngineForSession, setupSessionListeners } from './session-handlers.js';
|
|
5
5
|
import { replayTabEventsSince } from './tab-event-replay.js';
|
|
6
6
|
/**
|
|
7
7
|
* Extract `lastSeenSeq` from an initTab/resumeSession data payload.
|
|
@@ -17,6 +17,112 @@ function extractLastSeenSeq(data) {
|
|
|
17
17
|
const candidate = data.lastSeenSeq;
|
|
18
18
|
return typeof candidate === 'number' && Number.isFinite(candidate) ? candidate : undefined;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* When the session is mid-execution, expose the cached eta profile so the
|
|
22
|
+
* web's ComposingIndicator can render an ETA immediately on reconnect
|
|
23
|
+
* instead of waiting for the next movementStart (which won't fire until
|
|
24
|
+
* the user submits a fresh prompt).
|
|
25
|
+
*/
|
|
26
|
+
function inflightEtaPayload(session) {
|
|
27
|
+
if (session.isExecuting && session.etaProfile)
|
|
28
|
+
return { etaProfile: session.etaProfile };
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build the full-snapshot data payload for a `tabInitialized` message.
|
|
33
|
+
*
|
|
34
|
+
* Used in three situations:
|
|
35
|
+
* 1. Cold init (no `lastSeenSeq`) — web has no prior state to merge with.
|
|
36
|
+
* 2. Cold reattach (existing session, no prior seq) — same shape.
|
|
37
|
+
* 3. Replay-gap recovery — `replayTabEventsSince` returned `hadGap`, so
|
|
38
|
+
* the web's incremental state is provably stale; we replace it.
|
|
39
|
+
*
|
|
40
|
+
* `replayGap` flags the recovery case so the web can branch: drop any
|
|
41
|
+
* already-rendered tab output and rebuild from `outputHistory` +
|
|
42
|
+
* `executionEvents` instead of merging on top of stale incremental state.
|
|
43
|
+
* Old web clients that don't know the flag still get the full snapshot and
|
|
44
|
+
* render correctly — `replayGap` is purely additive telemetry.
|
|
45
|
+
*/
|
|
46
|
+
function buildFullSnapshotData(session, options = {}) {
|
|
47
|
+
const isExecuting = session.isExecuting;
|
|
48
|
+
return {
|
|
49
|
+
...session.getSessionInfo(),
|
|
50
|
+
engine: resolveEngineForSession(session),
|
|
51
|
+
outputHistory: buildOutputHistory(session),
|
|
52
|
+
isExecuting,
|
|
53
|
+
...(isExecuting ? { executionEvents: session.getExecutionEventLog() } : {}),
|
|
54
|
+
...(isExecuting && session.executionStartTimestamp
|
|
55
|
+
? { executionStartTimestamp: session.executionStartTimestamp }
|
|
56
|
+
: {}),
|
|
57
|
+
...inflightEtaPayload(session),
|
|
58
|
+
...(options.worktreePath
|
|
59
|
+
? { worktreePath: options.worktreePath, worktreeBranch: options.worktreeBranch }
|
|
60
|
+
: {}),
|
|
61
|
+
...(options.engineOverride ? { engineOverride: options.engineOverride } : {}),
|
|
62
|
+
...(options.replayGap ? { replayGap: true } : {}),
|
|
63
|
+
...(options.extra ?? {}),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Snapshot vs incremental decision based on the replay outcome.
|
|
68
|
+
*
|
|
69
|
+
* - `incremental`: the web should keep its current state and append the
|
|
70
|
+
* replayed events that already arrived (handled by `replayTabEventsSince`
|
|
71
|
+
* itself when there's no gap). We send `tabInitialized` with
|
|
72
|
+
* `resumedFromSeq: true`.
|
|
73
|
+
* - `snapshot`: the web should discard tab output and rebuild from a full
|
|
74
|
+
* snapshot. Triggered either by `lastSeenSeq === undefined` (cold start)
|
|
75
|
+
* or by `result.hadGap` (replay would silently skip events).
|
|
76
|
+
*/
|
|
77
|
+
function decideRecoveryMode(result, lastSeenSeq) {
|
|
78
|
+
if (lastSeenSeq === undefined)
|
|
79
|
+
return 'snapshot';
|
|
80
|
+
if (result.hadGap)
|
|
81
|
+
return 'snapshot';
|
|
82
|
+
return 'incremental';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Send `tabInitialized` for a resume path (`tryResumeFromDisk` /
|
|
86
|
+
* `resumeHistoricalSession`). Picks the snapshot or incremental envelope
|
|
87
|
+
* shape based on `mode` and threads any extra fields the caller needs to
|
|
88
|
+
* carry (e.g. `resumeFailed`, worktree state, engine override).
|
|
89
|
+
*
|
|
90
|
+
* Extracted to keep the resume call sites flat — without this helper, each
|
|
91
|
+
* caller pushes the function over the project's cognitive-complexity gate.
|
|
92
|
+
*/
|
|
93
|
+
function sendResumedTabInitialized(ctx, ws, tabId, session, mode, replay, options = {}) {
|
|
94
|
+
const engine = resolveEngineForSession(session);
|
|
95
|
+
if (mode === 'snapshot') {
|
|
96
|
+
ctx.send(ws, {
|
|
97
|
+
type: 'tabInitialized',
|
|
98
|
+
tabId,
|
|
99
|
+
engine,
|
|
100
|
+
data: buildFullSnapshotData(session, {
|
|
101
|
+
worktreePath: options.worktreePath,
|
|
102
|
+
worktreeBranch: options.worktreeBranch,
|
|
103
|
+
engineOverride: options.engineOverride,
|
|
104
|
+
replayGap: replay.hadGap,
|
|
105
|
+
extra: options.extra,
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
ctx.send(ws, {
|
|
111
|
+
type: 'tabInitialized',
|
|
112
|
+
tabId,
|
|
113
|
+
engine,
|
|
114
|
+
data: {
|
|
115
|
+
...session.getSessionInfo(),
|
|
116
|
+
engine,
|
|
117
|
+
resumedFromSeq: true,
|
|
118
|
+
...(options.worktreePath
|
|
119
|
+
? { worktreePath: options.worktreePath, worktreeBranch: options.worktreeBranch }
|
|
120
|
+
: {}),
|
|
121
|
+
...(options.engineOverride ? { engineOverride: options.engineOverride } : {}),
|
|
122
|
+
...(options.extra ?? {}),
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
20
126
|
function tryResumeFromDisk(ctx, ws, tabId, workingDir, registrySessionId, tabMap, registry, lastSeenSeq) {
|
|
21
127
|
try {
|
|
22
128
|
const diskSession = ImprovisationSessionManager.resumeFromHistory(workingDir, registrySessionId);
|
|
@@ -40,15 +146,16 @@ function tryResumeFromDisk(ctx, ws, tabId, workingDir, registrySessionId, tabMap
|
|
|
40
146
|
// BEFORE tabInitialized so they arrive in the right order. Web-side
|
|
41
147
|
// handlers append; `tabInitialized` does NOT reset when `resumedFromSeq`
|
|
42
148
|
// is set, preserving the replayed additions.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
149
|
+
//
|
|
150
|
+
// If `replayTabEventsSince` reports `hadGap`, no events were emitted and
|
|
151
|
+
// we fall back to a full-snapshot `tabInitialized` so the web replaces
|
|
152
|
+
// its (now-known-stale) incremental state instead of merging on top.
|
|
153
|
+
const replay = replayTabEventsSince(ctx, ws, tabId, lastSeenSeq);
|
|
154
|
+
const mode = decideRecoveryMode(replay, lastSeenSeq);
|
|
155
|
+
sendResumedTabInitialized(ctx, ws, tabId, diskSession, mode, replay, {
|
|
156
|
+
worktreePath,
|
|
157
|
+
worktreeBranch,
|
|
158
|
+
engineOverride: regTab?.engineOverride,
|
|
52
159
|
});
|
|
53
160
|
return true;
|
|
54
161
|
}
|
|
@@ -99,19 +206,30 @@ export async function initializeTab(ctx, ws, tabId, workingDir, tabName, rawData
|
|
|
99
206
|
}
|
|
100
207
|
registry.registerTab(tabId, sessionId, tabName || existingTab?.tabName);
|
|
101
208
|
const registeredTab = registry.getTab(tabId);
|
|
102
|
-
|
|
209
|
+
const engine = resolveEngineForSession(session);
|
|
210
|
+
// Mirror terminal-handlers.ts: broadcastToOthers, not broadcastToAll. The
|
|
211
|
+
// requesting client already drove this initTab and will receive
|
|
212
|
+
// `tabInitialized` below — echoing `tabCreated` back risks racing the
|
|
213
|
+
// discovery handler during a flicker and producing a phantom tab.
|
|
214
|
+
ctx.broadcastToOthers(ws, {
|
|
103
215
|
type: 'tabCreated',
|
|
104
|
-
|
|
216
|
+
engine,
|
|
217
|
+
data: { tabId, tabName: registeredTab?.tabName || 'Chat', createdAt: registeredTab?.createdAt, order: registeredTab?.order, engine, sessionInfo: session.getSessionInfo() }
|
|
105
218
|
});
|
|
106
219
|
// Fresh session (no disk/memory predecessor) has nothing to replay,
|
|
107
220
|
// but we still pass lastSeenSeq through so the web flag is consistent.
|
|
108
|
-
|
|
221
|
+
// hadGap is impossible here (buffer is empty for a brand-new tab), but
|
|
222
|
+
// route through `decideRecoveryMode` for uniformity with the resume paths.
|
|
223
|
+
const replay = replayTabEventsSince(ctx, ws, tabId, lastSeenSeq);
|
|
224
|
+
const mode = decideRecoveryMode(replay, lastSeenSeq);
|
|
109
225
|
ctx.send(ws, {
|
|
110
226
|
type: 'tabInitialized',
|
|
111
227
|
tabId,
|
|
228
|
+
engine,
|
|
112
229
|
data: {
|
|
113
230
|
...session.getSessionInfo(),
|
|
114
|
-
...(
|
|
231
|
+
...(mode === 'incremental' ? { resumedFromSeq: true } : {}),
|
|
232
|
+
...(replay.hadGap ? { replayGap: true } : {}),
|
|
115
233
|
}
|
|
116
234
|
});
|
|
117
235
|
}
|
|
@@ -152,16 +270,13 @@ export async function resumeHistoricalSession(ctx, ws, tabId, workingDir, histor
|
|
|
152
270
|
tabMap.set(tabId, sessionId);
|
|
153
271
|
}
|
|
154
272
|
registry.registerTab(tabId, sessionId);
|
|
155
|
-
replayTabEventsSince(ctx, ws, tabId, lastSeenSeq);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
data: {
|
|
160
|
-
...session.getSessionInfo(),
|
|
161
|
-
...(lastSeenSeq === undefined ? { outputHistory: buildOutputHistory(session) } : { resumedFromSeq: true }),
|
|
273
|
+
const replay = replayTabEventsSince(ctx, ws, tabId, lastSeenSeq);
|
|
274
|
+
const mode = decideRecoveryMode(replay, lastSeenSeq);
|
|
275
|
+
sendResumedTabInitialized(ctx, ws, tabId, session, mode, replay, {
|
|
276
|
+
extra: {
|
|
162
277
|
resumeFailed: isNewSession,
|
|
163
|
-
originalSessionId: isNewSession ? historicalSessionId : undefined
|
|
164
|
-
}
|
|
278
|
+
originalSessionId: isNewSession ? historicalSessionId : undefined,
|
|
279
|
+
},
|
|
165
280
|
});
|
|
166
281
|
}
|
|
167
282
|
function reattachSession(ctx, session, ws, tabId, registry, lastSeenSeq) {
|
|
@@ -180,11 +295,13 @@ function reattachSession(ctx, session, ws, tabId, registry, lastSeenSeq) {
|
|
|
180
295
|
}
|
|
181
296
|
const worktreePath = ctx.gitDirectories.get(tabId);
|
|
182
297
|
const worktreeBranch = ctx.gitBranches.get(tabId);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
298
|
+
const inflightEta = inflightEtaPayload(session);
|
|
299
|
+
const replay = replayTabEventsSince(ctx, ws, tabId, lastSeenSeq);
|
|
300
|
+
const mode = decideRecoveryMode(replay, lastSeenSeq);
|
|
301
|
+
// Fast path: the web already has local state (via Zustand) AND the replay
|
|
302
|
+
// covered the gap cleanly — just replay the buffered events and tell the
|
|
303
|
+
// client to skip the destructive reset in its tabInitialized handler.
|
|
304
|
+
if (mode === 'incremental') {
|
|
188
305
|
ctx.send(ws, {
|
|
189
306
|
type: 'tabInitialized',
|
|
190
307
|
tabId,
|
|
@@ -193,28 +310,27 @@ function reattachSession(ctx, session, ws, tabId, registry, lastSeenSeq) {
|
|
|
193
310
|
resumedFromSeq: true,
|
|
194
311
|
isExecuting: session.isExecuting,
|
|
195
312
|
...(session.isExecuting && session.executionStartTimestamp ? { executionStartTimestamp: session.executionStartTimestamp } : {}),
|
|
313
|
+
...inflightEta,
|
|
196
314
|
...(worktreePath ? { worktreePath, worktreeBranch } : {}),
|
|
197
315
|
}
|
|
198
316
|
});
|
|
199
317
|
return;
|
|
200
318
|
}
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
: undefined;
|
|
319
|
+
// Snapshot path: either cold-start reattach (no prior seq) or replay-gap
|
|
320
|
+
// recovery (`hadGap=true`, no events sent). Both want a full snapshot so
|
|
321
|
+
// the web rebuilds from `outputHistory` + `executionEvents`. The
|
|
322
|
+
// `replayGap` flag distinguishes the two for telemetry — the wire
|
|
323
|
+
// payload shape is otherwise identical.
|
|
207
324
|
ctx.send(ws, {
|
|
208
325
|
type: 'tabInitialized',
|
|
209
326
|
tabId,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
327
|
+
engine: resolveEngineForSession(session),
|
|
328
|
+
data: buildFullSnapshotData(session, {
|
|
329
|
+
worktreePath,
|
|
330
|
+
worktreeBranch,
|
|
331
|
+
engineOverride: regTab?.engineOverride,
|
|
332
|
+
replayGap: replay.hadGap,
|
|
333
|
+
}),
|
|
218
334
|
});
|
|
219
335
|
}
|
|
220
336
|
//# sourceMappingURL=session-initialization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-initialization.js","sourceRoot":"","sources":["../../../../server/services/websocket/session-initialization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-initialization.js","sourceRoot":"","sources":["../../../../server/services/websocket/session-initialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
import type { EngineId } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Per-tab engine override persisted alongside the tab record. Survives
|
|
4
|
+
* WebSocket disconnects + process restarts — the web client re-reads it on
|
|
5
|
+
* `tabInitialized` / `activeTabs` to restore the picker state after a
|
|
6
|
+
* reconnect.
|
|
7
|
+
*/
|
|
8
|
+
export interface TabEngineOverride {
|
|
9
|
+
engine: EngineId;
|
|
10
|
+
model: string;
|
|
11
|
+
effortLevel: string;
|
|
12
|
+
}
|
|
1
13
|
export interface RegisteredTab {
|
|
2
14
|
sessionId: string;
|
|
3
15
|
tabName: string;
|
|
@@ -14,6 +26,12 @@ export interface RegisteredTab {
|
|
|
14
26
|
hasPersistedHistory?: boolean;
|
|
15
27
|
worktreePath?: string;
|
|
16
28
|
worktreeBranch?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Per-tab engine override. Absent when the tab uses the global defaults —
|
|
31
|
+
* authored from the web via `setTabEngine`, cleared by passing `null` to
|
|
32
|
+
* {@link SessionRegistry.updateTabEngineOverride}.
|
|
33
|
+
*/
|
|
34
|
+
engineOverride?: TabEngineOverride;
|
|
17
35
|
}
|
|
18
36
|
export declare class SessionRegistry {
|
|
19
37
|
private registryPath;
|
|
@@ -64,6 +82,13 @@ export declare class SessionRegistry {
|
|
|
64
82
|
* Update worktree assignment for a tab. Pass null to clear.
|
|
65
83
|
*/
|
|
66
84
|
updateTabWorktree(tabId: string, worktreePath: string | null, worktreeBranch: string | null): void;
|
|
85
|
+
/**
|
|
86
|
+
* Update or clear the per-tab engine override. Pass `null` to remove the
|
|
87
|
+
* override and route future prompts through the global defaults. Writes
|
|
88
|
+
* through to disk so the override survives WS disconnects — that's the
|
|
89
|
+
* core persistence guarantee of IS-019.
|
|
90
|
+
*/
|
|
91
|
+
updateTabEngineOverride(tabId: string, override: TabEngineOverride | null): void;
|
|
67
92
|
/**
|
|
68
93
|
* Reorder tabs. Accepts an ordered array of tabIds and reassigns order values.
|
|
69
94
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/session-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/session-registry.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,QAAQ,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,qBAAqB,EAAE,OAAO,CAAA;IAC9B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,iBAAiB,CAAA;CACnC;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,IAAI,CAAc;gBAEd,UAAU,EAAE,MAAM;IAW9B,OAAO,CAAC,IAAI;IA0BZ;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,YAAY;IAQpB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAI3C,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAOhD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7B;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IASxD;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQrC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOlC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAalG;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAYhF;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAOtC"}
|
|
@@ -203,6 +203,25 @@ export class SessionRegistry {
|
|
|
203
203
|
this.save();
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Update or clear the per-tab engine override. Pass `null` to remove the
|
|
208
|
+
* override and route future prompts through the global defaults. Writes
|
|
209
|
+
* through to disk so the override survives WS disconnects — that's the
|
|
210
|
+
* core persistence guarantee of IS-019.
|
|
211
|
+
*/
|
|
212
|
+
updateTabEngineOverride(tabId, override) {
|
|
213
|
+
const tab = this.data.tabs[tabId];
|
|
214
|
+
if (!tab)
|
|
215
|
+
return;
|
|
216
|
+
if (override === null) {
|
|
217
|
+
delete tab.engineOverride;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
tab.engineOverride = { ...override };
|
|
221
|
+
}
|
|
222
|
+
tab.lastActivityAt = new Date().toISOString();
|
|
223
|
+
this.save();
|
|
224
|
+
}
|
|
206
225
|
/**
|
|
207
226
|
* Reorder tabs. Accepts an ordered array of tabIds and reassigns order values.
|
|
208
227
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../../../server/services/websocket/session-registry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../../../server/services/websocket/session-registry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AA2ChC,MAAM,OAAO,eAAe;IAClB,YAAY,CAAQ;IACpB,UAAU,CAAQ;IAClB,IAAI,CAAc;IAE1B,YAAY,UAAkB;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAA;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,cAAc,EAAE,CAAA;IACvB,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAiB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC9E,iDAAiD;gBACjD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;gBAC7E,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAC5D,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CACrD,CAAA;oBACD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBAC5B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;4BAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;oBAC5C,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,mDAAmD;gBACnD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,GAAG,CAAC,qBAAqB,KAAK,SAAS;wBAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAA;gBAChF,CAAC;gBACD,OAAO,GAAG,CAAA;YACZ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACrB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,cAAc;QACpB,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,IAAI,GAAG,CAAC,mBAAmB,KAAK,IAAI;gBAAE,SAAQ;YAC9C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,CAAC,CAAA;YAC9D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,MAAM,8CAA8C,CAAC,CAAA;YACpG,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;QACZ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG;gBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAA;QACtC,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,SAAiB,EAAE,OAAgB;QAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,cAAc,GAAG,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAA;QACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;YACtB,SAAS;YACT,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,CAAC,iBAAiB,EAAE,EAAE;YACtD,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;YACrC,cAAc,EAAE,GAAG;YACnB,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YAC7C,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,IAAI,KAAK;YAC/D,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,mBAAmB;SAC5E,CAAA;QACD,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;YAC/C,IAAI,KAAK,EAAE,CAAC;gBACV,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAA;QAC9B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,IAAY;QACvC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;YACpC,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC/D,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAa,EAAE,SAAiB;QAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,KAAK,CAAA;YACjD,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAa;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YACpC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAA;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAA;YACnD,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAA;YAClD,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAa,EAAE,YAA2B,EAAE,cAA6B;QACzF,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,YAAY,CAAA;gBACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,cAAc,IAAI,SAAS,CAAA;YACpE,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAA;gBACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAA;YAC7C,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,uBAAuB,CAAC,KAAa,EAAE,QAAkC;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,cAAc,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,cAAc,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAA;QACtC,CAAC;QACD,GAAG,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAkB;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,IAAI,GAAG;gBAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HandlerContext } from './handler-context.js';
|
|
2
2
|
import type { WebSocketMessage, WSContext } from './types.js';
|
|
3
3
|
export declare function handleGetSettings(ctx: HandlerContext, ws: WSContext): void;
|
|
4
|
-
export declare function handleUpdateSettings(ctx: HandlerContext,
|
|
4
|
+
export declare function handleUpdateSettings(ctx: HandlerContext, ws: WSContext, msg: WebSocketMessage): void;
|
|
5
5
|
export declare function generateNotificationSummary(ctx: HandlerContext, ws: WSContext, tabId: string, userPrompt: string, output: string, workingDir: string): Promise<void>;
|
|
6
6
|
//# sourceMappingURL=settings-handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-handlers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/settings-handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings-handlers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/settings-handlers.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAY9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CA6BpG;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
|
|
@@ -2,18 +2,49 @@
|
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
3
|
import { existsSync, mkdirSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { getSettings, setEffortLevel, setModel } from '../settings.js';
|
|
5
|
+
import { getSettings, isEngineSwapEnabled, setBouncerClassifier, setEffortLevel, setModel, } from '../settings.js';
|
|
6
|
+
/**
|
|
7
|
+
* Return the stored settings with the resolved `engineSwap` boolean patched
|
|
8
|
+
* in, so web clients always see the effective flag value (env-var override,
|
|
9
|
+
* NODE_ENV default, etc.) rather than the raw — possibly `undefined` —
|
|
10
|
+
* stored field.
|
|
11
|
+
*/
|
|
12
|
+
function getSettingsWithResolvedFlags() {
|
|
13
|
+
return { ...getSettings(), engineSwap: isEngineSwapEnabled() };
|
|
14
|
+
}
|
|
6
15
|
export function handleGetSettings(ctx, ws) {
|
|
7
|
-
ctx.send(ws, { type: 'settings', data:
|
|
16
|
+
ctx.send(ws, { type: 'settings', data: getSettingsWithResolvedFlags() });
|
|
8
17
|
}
|
|
9
|
-
export function handleUpdateSettings(ctx,
|
|
18
|
+
export function handleUpdateSettings(ctx, ws, msg) {
|
|
10
19
|
if (msg.data?.model !== undefined) {
|
|
11
20
|
setModel(msg.data.model);
|
|
12
21
|
}
|
|
13
22
|
if (msg.data?.effortLevel !== undefined) {
|
|
14
23
|
setEffortLevel(msg.data.effortLevel);
|
|
15
24
|
}
|
|
16
|
-
|
|
25
|
+
if (msg.data?.bouncerClassifier !== undefined) {
|
|
26
|
+
try {
|
|
27
|
+
setBouncerClassifier(msg.data.bouncerClassifier);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
// Reject crafted payloads (non-eligible model, bad engine) — surface
|
|
31
|
+
// the reason to the requester and skip the broadcast so other clients
|
|
32
|
+
// keep showing the previous valid config.
|
|
33
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
+
ctx.send(ws, {
|
|
35
|
+
type: 'error',
|
|
36
|
+
data: {
|
|
37
|
+
scope: 'bouncerClassifier',
|
|
38
|
+
message,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
// Still echo the current settings back to the requester so the UI can
|
|
42
|
+
// revert its optimistic update.
|
|
43
|
+
ctx.send(ws, { type: 'settings', data: getSettingsWithResolvedFlags() });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ctx.broadcastToAll({ type: 'settingsUpdated', data: getSettingsWithResolvedFlags() });
|
|
17
48
|
}
|
|
18
49
|
export async function generateNotificationSummary(ctx, ws, tabId, userPrompt, output, workingDir) {
|
|
19
50
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/settings-handlers.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"settings-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/settings-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,17 @@
|
|
|
13
13
|
* `session-initialization.ts` for the replay path.
|
|
14
14
|
*/
|
|
15
15
|
import type { HandlerContext } from './handler-context.js';
|
|
16
|
-
import type { WebSocketResponse } from './types.js';
|
|
16
|
+
import type { EngineId, WebSocketResponse } from './types.js';
|
|
17
17
|
type TabScopedEventType = WebSocketResponse['type'];
|
|
18
18
|
/**
|
|
19
19
|
* Record + broadcast a tab-scoped event in one call. Returns the assigned
|
|
20
20
|
* sequence number purely for logging/tests — callers rarely need it.
|
|
21
|
+
*
|
|
22
|
+
* `engine` is optional: when supplied (typically by session-driven movement
|
|
23
|
+
* events), it rides on the wire envelope so the web client can render
|
|
24
|
+
* engine-specific affordances. Buffer replay preserves it because the engine
|
|
25
|
+
* is part of the envelope produced for each broadcast.
|
|
21
26
|
*/
|
|
22
|
-
export declare function broadcastTabEvent(ctx: HandlerContext, tabId: string, type: TabScopedEventType, data: unknown): number;
|
|
27
|
+
export declare function broadcastTabEvent(ctx: HandlerContext, tabId: string, type: TabScopedEventType, data: unknown, engine?: EngineId): number;
|
|
23
28
|
export {};
|
|
24
29
|
//# sourceMappingURL=tab-broadcast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-broadcast.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/tab-broadcast.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"tab-broadcast.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/tab-broadcast.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE7D,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAEnD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,QAAQ,GAChB,MAAM,CAOR"}
|
|
@@ -2,11 +2,19 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Record + broadcast a tab-scoped event in one call. Returns the assigned
|
|
4
4
|
* sequence number purely for logging/tests — callers rarely need it.
|
|
5
|
+
*
|
|
6
|
+
* `engine` is optional: when supplied (typically by session-driven movement
|
|
7
|
+
* events), it rides on the wire envelope so the web client can render
|
|
8
|
+
* engine-specific affordances. Buffer replay preserves it because the engine
|
|
9
|
+
* is part of the envelope produced for each broadcast.
|
|
5
10
|
*/
|
|
6
|
-
export function broadcastTabEvent(ctx, tabId, type, data) {
|
|
11
|
+
export function broadcastTabEvent(ctx, tabId, type, data, engine) {
|
|
7
12
|
const buffer = ctx.tabEventBuffers.getOrCreate(tabId);
|
|
8
13
|
const seq = buffer.record(type, data);
|
|
9
|
-
|
|
14
|
+
const envelope = { type, tabId, data, seq };
|
|
15
|
+
if (engine)
|
|
16
|
+
envelope.engine = engine;
|
|
17
|
+
ctx.broadcastToAll(envelope);
|
|
10
18
|
return seq;
|
|
11
19
|
}
|
|
12
20
|
//# sourceMappingURL=tab-broadcast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-broadcast.js","sourceRoot":"","sources":["../../../../server/services/websocket/tab-broadcast.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAsB9D
|
|
1
|
+
{"version":3,"file":"tab-broadcast.js","sourceRoot":"","sources":["../../../../server/services/websocket/tab-broadcast.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAsB9D;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAmB,EACnB,KAAa,EACb,IAAwB,EACxB,IAAa,EACb,MAAiB;IAEjB,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;IAC9D,IAAI,MAAM;QAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC5B,OAAO,GAAG,CAAA;AACZ,CAAC"}
|