@pellux/goodvibes-sdk 0.18.27 → 0.18.29
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/dist/_internal/platform/agents/orchestrator-runner.js +1 -1
- package/dist/_internal/platform/bookmarks/manager.d.ts +1 -1
- package/dist/_internal/platform/bookmarks/manager.d.ts.map +1 -1
- package/dist/_internal/platform/channels/surface-registry.js +3 -3
- package/dist/_internal/platform/config/api-keys.d.ts +29 -0
- package/dist/_internal/platform/config/api-keys.d.ts.map +1 -0
- package/dist/_internal/platform/config/api-keys.js +153 -0
- package/dist/_internal/platform/config/index.d.ts +1 -13
- package/dist/_internal/platform/config/index.d.ts.map +1 -1
- package/dist/_internal/platform/config/index.js +1 -138
- package/dist/_internal/platform/core/conversation-diff.d.ts +6 -2
- package/dist/_internal/platform/core/conversation-diff.d.ts.map +1 -1
- package/dist/_internal/platform/core/conversation.d.ts +13 -5
- package/dist/_internal/platform/core/conversation.d.ts.map +1 -1
- package/dist/_internal/platform/core/conversation.js +35 -1
- package/dist/_internal/platform/plugins/loader.d.ts +5 -1
- package/dist/_internal/platform/plugins/loader.d.ts.map +1 -1
- package/dist/_internal/platform/plugins/loader.js +7 -3
- package/dist/_internal/platform/runtime/bootstrap-hook-bridge.d.ts +10 -0
- package/dist/_internal/platform/runtime/bootstrap-hook-bridge.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/bootstrap-hook-bridge.js +143 -0
- package/dist/_internal/platform/runtime/diagnostics/panels/panel-resources.d.ts +5 -5
- package/dist/_internal/platform/runtime/diagnostics/panels/panel-resources.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/diagnostics/panels/panel-resources.js +3 -3
- package/dist/_internal/platform/runtime/diagnostics/types.d.ts +26 -13
- package/dist/_internal/platform/runtime/diagnostics/types.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/diagnostics/types.js +4 -2
- package/dist/_internal/platform/runtime/mutable-runtime-state.d.ts +14 -0
- package/dist/_internal/platform/runtime/mutable-runtime-state.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/mutable-runtime-state.js +1 -0
- package/dist/_internal/platform/runtime/ops/playbooks/permission-deadlock.js +2 -2
- package/dist/_internal/platform/runtime/perf/component-contracts.d.ts +114 -0
- package/dist/_internal/platform/runtime/perf/component-contracts.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/perf/component-contracts.js +104 -0
- package/dist/_internal/platform/runtime/perf/component-health-monitor.d.ts +98 -0
- package/dist/_internal/platform/runtime/perf/component-health-monitor.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/perf/component-health-monitor.js +248 -0
- package/dist/_internal/platform/runtime/perf/index.d.ts +6 -3
- package/dist/_internal/platform/runtime/perf/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/perf/index.js +4 -2
- package/dist/_internal/platform/runtime/perf/panel-contracts.d.ts +6 -90
- package/dist/_internal/platform/runtime/perf/panel-contracts.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/perf/panel-contracts.js +4 -83
- package/dist/_internal/platform/runtime/perf/panel-health-monitor.d.ts +4 -88
- package/dist/_internal/platform/runtime/perf/panel-health-monitor.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/perf/panel-health-monitor.js +4 -236
- package/dist/_internal/platform/runtime/service-queries.d.ts +3 -0
- package/dist/_internal/platform/runtime/service-queries.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/service-queries.js +1 -0
- package/dist/_internal/platform/runtime/services.d.ts +2 -2
- package/dist/_internal/platform/runtime/services.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/services.js +3 -3
- package/dist/_internal/platform/runtime/session-persistence.d.ts +3 -3
- package/dist/_internal/platform/runtime/session-persistence.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/session-persistence.js +13 -13
- package/dist/_internal/platform/runtime/session-return-context.js +1 -1
- package/dist/_internal/platform/runtime/shell-command-services.d.ts +2 -2
- package/dist/_internal/platform/runtime/shell-command-services.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/shell-command-services.js +2 -2
- package/dist/_internal/platform/runtime/shell-command-workspace.d.ts +2 -2
- package/dist/_internal/platform/runtime/shell-command-workspace.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/shell-command-workspace.js +2 -2
- package/dist/_internal/platform/runtime/store/domains/index.d.ts +2 -0
- package/dist/_internal/platform/runtime/store/domains/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/domains/index.js +1 -0
- package/dist/_internal/platform/runtime/store/selectors/index.d.ts +27 -14
- package/dist/_internal/platform/runtime/store/selectors/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/selectors/index.js +35 -25
- package/dist/_internal/platform/runtime/store/state.d.ts +3 -4
- package/dist/_internal/platform/runtime/store/state.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/state.js +3 -4
- package/dist/_internal/platform/runtime/system-message-policy.d.ts +18 -0
- package/dist/_internal/platform/runtime/system-message-policy.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/system-message-policy.js +35 -0
- package/dist/_internal/platform/utils/clipboard.d.ts +3 -2
- package/dist/_internal/platform/utils/clipboard.d.ts.map +1 -1
- package/dist/_internal/platform/utils/clipboard.js +0 -17
- package/dist/_internal/platform/utils/notify.d.ts.map +1 -1
- package/dist/_internal/platform/utils/notify.js +4 -1
- package/dist/_internal/platform/utils/terminal-width.d.ts +13 -0
- package/dist/_internal/platform/utils/terminal-width.d.ts.map +1 -1
- package/dist/_internal/platform/utils/terminal-width.js +13 -0
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
- package/dist/_internal/platform/core/history.d.ts +0 -22
- package/dist/_internal/platform/core/history.d.ts.map +0 -1
- package/dist/_internal/platform/core/history.js +0 -43
- package/dist/_internal/platform/types/grid.d.ts +0 -27
- package/dist/_internal/platform/types/grid.d.ts.map +0 -1
- package/dist/_internal/platform/types/grid.js +0 -26
- package/dist/_internal/platform/utils/splash-lines.d.ts +0 -8
- package/dist/_internal/platform/utils/splash-lines.d.ts.map +0 -1
- package/dist/_internal/platform/utils/splash-lines.js +0 -32
|
@@ -1,92 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @deprecated This module has been renamed. Import from component-health-monitor.js instead.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Panels with sustained violations are degraded (rendered at a fixed low rate).
|
|
7
|
-
*
|
|
8
|
-
* The monitor does NOT render panels itself — callers ask canRender() before
|
|
9
|
-
* rendering and report the actual render cost via recordRender().
|
|
10
|
-
*
|
|
11
|
-
* This keeps the monitor policy-focused and the rendering path ignorant of
|
|
12
|
-
* throttling policy details.
|
|
13
|
-
*/
|
|
14
|
-
import type { PanelResourceContract, PanelHealthState } from './panel-contracts.js';
|
|
15
|
-
/**
|
|
16
|
-
* PanelHealthMonitor — tracks panel resource usage and enforces budgets.
|
|
17
|
-
*
|
|
18
|
-
* Usage:
|
|
19
|
-
* 1. Register panels with register(panelId, category).
|
|
20
|
-
* 2. Before rendering: if (!monitor.canRender(panelId, now)) skip the render.
|
|
21
|
-
* 3. After rendering: monitor.recordRender(panelId, durationMs, now).
|
|
22
|
-
* 4. Read health via getHealth(panelId) or getAllHealth().
|
|
4
|
+
* This file is a backward-compatibility shim. ComponentHealthMonitor is
|
|
5
|
+
* re-exported as PanelHealthMonitor for backward compatibility.
|
|
23
6
|
*/
|
|
24
|
-
export
|
|
25
|
-
private readonly _tracks;
|
|
26
|
-
/**
|
|
27
|
-
* Register a panel with the monitor.
|
|
28
|
-
*
|
|
29
|
-
* If the panel is already registered, this is a no-op.
|
|
30
|
-
*
|
|
31
|
-
* @param panelId - Unique panel identifier.
|
|
32
|
-
* @param category - Panel category (used to select the base contract).
|
|
33
|
-
* @param contractOverrides - Optional per-panel contract overrides.
|
|
34
|
-
*/
|
|
35
|
-
register(panelId: string, category: string, contractOverrides?: Partial<Omit<PanelResourceContract, 'panelId'>>): void;
|
|
36
|
-
/**
|
|
37
|
-
* Deregister a panel, removing all tracking state.
|
|
38
|
-
*/
|
|
39
|
-
deregister(panelId: string): void;
|
|
40
|
-
/**
|
|
41
|
-
* Check whether a panel is permitted to render at the given time.
|
|
42
|
-
*
|
|
43
|
-
* Records the render request for rate tracking regardless of the outcome.
|
|
44
|
-
* If the panel is not registered, renders are always permitted.
|
|
45
|
-
*
|
|
46
|
-
* @param panelId - Panel to check.
|
|
47
|
-
* @param now - Current epoch ms (defaults to Date.now()).
|
|
48
|
-
* @returns true if the render is permitted; false if it should be skipped.
|
|
49
|
-
*/
|
|
50
|
-
canRender(panelId: string, now?: number): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Record the actual render duration for a panel.
|
|
53
|
-
*
|
|
54
|
-
* Should be called after every permitted render completes. Updates the
|
|
55
|
-
* p95 render cost and may escalate the panel's throttle status if the
|
|
56
|
-
* render cost budget is violated.
|
|
57
|
-
*
|
|
58
|
-
* @param panelId - Panel that rendered.
|
|
59
|
-
* @param durationMs - Actual render duration in milliseconds.
|
|
60
|
-
* @param now - Epoch ms at render completion (defaults to Date.now()).
|
|
61
|
-
*/
|
|
62
|
-
recordRender(panelId: string, durationMs: number, now?: number): void;
|
|
63
|
-
/**
|
|
64
|
-
* Return the current health state for a panel, or undefined if not registered.
|
|
65
|
-
*/
|
|
66
|
-
getHealth(panelId: string): PanelHealthState | undefined;
|
|
67
|
-
/**
|
|
68
|
-
* Return health states for all registered panels.
|
|
69
|
-
*/
|
|
70
|
-
getAllHealth(): PanelHealthState[];
|
|
71
|
-
/**
|
|
72
|
-
* Return the resource contract for a registered panel, or undefined.
|
|
73
|
-
*/
|
|
74
|
-
getContract(panelId: string): PanelResourceContract | undefined;
|
|
75
|
-
/**
|
|
76
|
-
* Forcibly reset a panel's health state to normal.
|
|
77
|
-
* Useful for tests or manual operator intervention.
|
|
78
|
-
*/
|
|
79
|
-
resetHealth(panelId: string): void;
|
|
80
|
-
private _rotateWindow;
|
|
81
|
-
private _applyViolation;
|
|
82
|
-
/**
|
|
83
|
-
* Dual-path recovery: `_recordClean` handles render-cost-based recovery
|
|
84
|
-
* (triggered from `recordRender` after a cheap render), while `_rotateWindow`
|
|
85
|
-
* handles rate-based recovery (triggered at window boundaries). Both paths
|
|
86
|
-
* call `_recover` once the clean-window threshold is met, so either signal
|
|
87
|
-
* alone is sufficient to restore a panel to normal status.
|
|
88
|
-
*/
|
|
89
|
-
private _recordClean;
|
|
90
|
-
private _recover;
|
|
91
|
-
}
|
|
7
|
+
export { ComponentHealthMonitor, PanelHealthMonitor } from './component-health-monitor.js';
|
|
92
8
|
//# sourceMappingURL=panel-health-monitor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel-health-monitor.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/perf/panel-health-monitor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"panel-health-monitor.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/perf/panel-health-monitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -1,239 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @deprecated This module has been renamed. Import from component-health-monitor.js instead.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Panels with sustained violations are degraded (rendered at a fixed low rate).
|
|
7
|
-
*
|
|
8
|
-
* The monitor does NOT render panels itself — callers ask canRender() before
|
|
9
|
-
* rendering and report the actual render cost via recordRender().
|
|
10
|
-
*
|
|
11
|
-
* This keeps the monitor policy-focused and the rendering path ignorant of
|
|
12
|
-
* throttling policy details.
|
|
13
|
-
*/
|
|
14
|
-
import { CATEGORY_CONTRACTS, buildContract, createInitialPanelHealthState, } from './panel-contracts.js';
|
|
15
|
-
/** Measurement window for update-rate enforcement (ms). */
|
|
16
|
-
const RATE_WINDOW_MS = 1000;
|
|
17
|
-
/** Number of recent render durations to keep for p95 calculation. */
|
|
18
|
-
const RENDER_SAMPLE_CAPACITY = 20;
|
|
19
|
-
/** Recovery: violations reset to 0 after this many consecutive clean windows. */
|
|
20
|
-
const RECOVERY_CLEAN_WINDOWS = 3;
|
|
21
|
-
/**
|
|
22
|
-
* PanelHealthMonitor — tracks panel resource usage and enforces budgets.
|
|
23
|
-
*
|
|
24
|
-
* Usage:
|
|
25
|
-
* 1. Register panels with register(panelId, category).
|
|
26
|
-
* 2. Before rendering: if (!monitor.canRender(panelId, now)) skip the render.
|
|
27
|
-
* 3. After rendering: monitor.recordRender(panelId, durationMs, now).
|
|
28
|
-
* 4. Read health via getHealth(panelId) or getAllHealth().
|
|
4
|
+
* This file is a backward-compatibility shim. ComponentHealthMonitor is
|
|
5
|
+
* re-exported as PanelHealthMonitor for backward compatibility.
|
|
29
6
|
*/
|
|
30
|
-
export
|
|
31
|
-
_tracks = new Map();
|
|
32
|
-
/**
|
|
33
|
-
* Register a panel with the monitor.
|
|
34
|
-
*
|
|
35
|
-
* If the panel is already registered, this is a no-op.
|
|
36
|
-
*
|
|
37
|
-
* @param panelId - Unique panel identifier.
|
|
38
|
-
* @param category - Panel category (used to select the base contract).
|
|
39
|
-
* @param contractOverrides - Optional per-panel contract overrides.
|
|
40
|
-
*/
|
|
41
|
-
register(panelId, category, contractOverrides) {
|
|
42
|
-
if (this._tracks.has(panelId))
|
|
43
|
-
return;
|
|
44
|
-
const contract = buildContract(panelId, category, contractOverrides);
|
|
45
|
-
const health = createInitialPanelHealthState(panelId);
|
|
46
|
-
this._tracks.set(panelId, {
|
|
47
|
-
contract,
|
|
48
|
-
health,
|
|
49
|
-
renderSamples: { buf: new Array(RENDER_SAMPLE_CAPACITY), head: 0, size: 0 },
|
|
50
|
-
windowRequests: [],
|
|
51
|
-
cleanWindows: 0,
|
|
52
|
-
windowStart: 0,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Deregister a panel, removing all tracking state.
|
|
57
|
-
*/
|
|
58
|
-
deregister(panelId) {
|
|
59
|
-
this._tracks.delete(panelId);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Check whether a panel is permitted to render at the given time.
|
|
63
|
-
*
|
|
64
|
-
* Records the render request for rate tracking regardless of the outcome.
|
|
65
|
-
* If the panel is not registered, renders are always permitted.
|
|
66
|
-
*
|
|
67
|
-
* @param panelId - Panel to check.
|
|
68
|
-
* @param now - Current epoch ms (defaults to Date.now()).
|
|
69
|
-
* @returns true if the render is permitted; false if it should be skipped.
|
|
70
|
-
*/
|
|
71
|
-
canRender(panelId, now = Date.now()) {
|
|
72
|
-
const track = this._tracks.get(panelId);
|
|
73
|
-
if (!track)
|
|
74
|
-
return true; // unregistered panels are always permitted
|
|
75
|
-
// Rotate the measurement window if needed
|
|
76
|
-
this._rotateWindow(track, now);
|
|
77
|
-
// Gate on throttle/degrade interval
|
|
78
|
-
if (now < track.health.nextAllowedAt) {
|
|
79
|
-
track.health.totalSuppressed++;
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
// Record this request in the current window
|
|
83
|
-
track.windowRequests.push(now);
|
|
84
|
-
// Check update rate limit
|
|
85
|
-
let requestsInWindow = 0;
|
|
86
|
-
for (const t of track.windowRequests) {
|
|
87
|
-
if (now - t < RATE_WINDOW_MS)
|
|
88
|
-
requestsInWindow++;
|
|
89
|
-
}
|
|
90
|
-
// Note: stale entries older than RATE_WINDOW_MS are pruned at window rotation, not here
|
|
91
|
-
const maxPerWindow = track.contract.maxUpdatesPerSecond;
|
|
92
|
-
if (requestsInWindow > maxPerWindow) {
|
|
93
|
-
// Rate exceeded: throttle or degrade
|
|
94
|
-
this._applyViolation(track, now);
|
|
95
|
-
track.health.totalSuppressed++;
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
track.health.totalPermitted++;
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Record the actual render duration for a panel.
|
|
103
|
-
*
|
|
104
|
-
* Should be called after every permitted render completes. Updates the
|
|
105
|
-
* p95 render cost and may escalate the panel's throttle status if the
|
|
106
|
-
* render cost budget is violated.
|
|
107
|
-
*
|
|
108
|
-
* @param panelId - Panel that rendered.
|
|
109
|
-
* @param durationMs - Actual render duration in milliseconds.
|
|
110
|
-
* @param now - Epoch ms at render completion (defaults to Date.now()).
|
|
111
|
-
*/
|
|
112
|
-
recordRender(panelId, durationMs, now = Date.now()) {
|
|
113
|
-
const track = this._tracks.get(panelId);
|
|
114
|
-
if (!track)
|
|
115
|
-
return;
|
|
116
|
-
// Add sample to ring buffer (O(1) modular index — no shift/realloc)
|
|
117
|
-
const rb = track.renderSamples;
|
|
118
|
-
rb.buf[rb.head] = durationMs;
|
|
119
|
-
rb.head = (rb.head + 1) % RENDER_SAMPLE_CAPACITY;
|
|
120
|
-
if (rb.size < RENDER_SAMPLE_CAPACITY)
|
|
121
|
-
rb.size++;
|
|
122
|
-
// Update p95
|
|
123
|
-
const samples = rb.buf.slice(0, rb.size);
|
|
124
|
-
samples.sort((a, b) => a - b); // sort in-place, no second copy
|
|
125
|
-
const p95Val = samples[Math.ceil(samples.length * 0.95) - 1] ?? 0;
|
|
126
|
-
track.health.renderP95Ms = p95Val;
|
|
127
|
-
track.health.lastRenderAt = now;
|
|
128
|
-
track.health.rendersInWindow++;
|
|
129
|
-
// Check render cost budget
|
|
130
|
-
if (track.health.renderP95Ms > track.contract.maxRenderMs) {
|
|
131
|
-
this._applyViolation(track, now);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
// Render cost within budget — count as a clean observation
|
|
135
|
-
this._recordClean(track);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Return the current health state for a panel, or undefined if not registered.
|
|
140
|
-
*/
|
|
141
|
-
getHealth(panelId) {
|
|
142
|
-
return this._tracks.get(panelId)?.health;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Return health states for all registered panels.
|
|
146
|
-
*/
|
|
147
|
-
getAllHealth() {
|
|
148
|
-
return Array.from(this._tracks.values()).map((t) => ({ ...t.health }));
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Return the resource contract for a registered panel, or undefined.
|
|
152
|
-
*/
|
|
153
|
-
getContract(panelId) {
|
|
154
|
-
return this._tracks.get(panelId)?.contract;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Forcibly reset a panel's health state to normal.
|
|
158
|
-
* Useful for tests or manual operator intervention.
|
|
159
|
-
*/
|
|
160
|
-
resetHealth(panelId) {
|
|
161
|
-
const track = this._tracks.get(panelId);
|
|
162
|
-
if (!track)
|
|
163
|
-
return;
|
|
164
|
-
track.health = createInitialPanelHealthState(panelId);
|
|
165
|
-
track.renderSamples = { buf: new Array(RENDER_SAMPLE_CAPACITY), head: 0, size: 0 };
|
|
166
|
-
track.windowRequests = [];
|
|
167
|
-
track.cleanWindows = 0;
|
|
168
|
-
}
|
|
169
|
-
// ---------------------------------------------------------------------------
|
|
170
|
-
// Private helpers
|
|
171
|
-
// ---------------------------------------------------------------------------
|
|
172
|
-
_rotateWindow(track, now) {
|
|
173
|
-
if (track.windowStart === 0) {
|
|
174
|
-
track.windowStart = now;
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
if (now - track.windowStart >= RATE_WINDOW_MS) {
|
|
178
|
-
// Check for recovery
|
|
179
|
-
let requestsLastWindow = 0;
|
|
180
|
-
for (const t of track.windowRequests) {
|
|
181
|
-
if (t >= track.windowStart && t < track.windowStart + RATE_WINDOW_MS)
|
|
182
|
-
requestsLastWindow++;
|
|
183
|
-
}
|
|
184
|
-
const withinBudget = requestsLastWindow <= track.contract.maxUpdatesPerSecond;
|
|
185
|
-
if (withinBudget) {
|
|
186
|
-
track.cleanWindows++;
|
|
187
|
-
if (track.cleanWindows >= RECOVERY_CLEAN_WINDOWS) {
|
|
188
|
-
this._recover(track);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
track.cleanWindows = 0;
|
|
193
|
-
}
|
|
194
|
-
// Discard old requests
|
|
195
|
-
track.windowRequests = track.windowRequests.filter((t) => now - t < RATE_WINDOW_MS);
|
|
196
|
-
track.windowStart = now;
|
|
197
|
-
track.health.rendersInWindow = 0;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
_applyViolation(track, now) {
|
|
201
|
-
track.health.consecutiveViolations++;
|
|
202
|
-
track.cleanWindows = 0;
|
|
203
|
-
if (track.health.consecutiveViolations >= track.contract.degradeAfterViolations) {
|
|
204
|
-
// Escalate to degraded
|
|
205
|
-
track.health.throttleStatus = 'degraded';
|
|
206
|
-
track.health.healthStatus = 'overloaded';
|
|
207
|
-
track.health.nextAllowedAt = now + track.contract.degradedIntervalMs;
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
// Apply standard throttle
|
|
211
|
-
track.health.throttleStatus = 'throttled';
|
|
212
|
-
track.health.healthStatus = 'warning';
|
|
213
|
-
track.health.nextAllowedAt = now + track.contract.throttleIntervalMs;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Dual-path recovery: `_recordClean` handles render-cost-based recovery
|
|
218
|
-
* (triggered from `recordRender` after a cheap render), while `_rotateWindow`
|
|
219
|
-
* handles rate-based recovery (triggered at window boundaries). Both paths
|
|
220
|
-
* call `_recover` once the clean-window threshold is met, so either signal
|
|
221
|
-
* alone is sufficient to restore a panel to normal status.
|
|
222
|
-
*/
|
|
223
|
-
_recordClean(track) {
|
|
224
|
-
// Only advance recovery if we're already throttled/degraded
|
|
225
|
-
if (track.health.throttleStatus === 'normal')
|
|
226
|
-
return;
|
|
227
|
-
track.cleanWindows++;
|
|
228
|
-
if (track.cleanWindows >= RECOVERY_CLEAN_WINDOWS) {
|
|
229
|
-
this._recover(track);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
_recover(track) {
|
|
233
|
-
track.health.throttleStatus = 'normal';
|
|
234
|
-
track.health.healthStatus = 'healthy';
|
|
235
|
-
track.health.consecutiveViolations = 0;
|
|
236
|
-
track.health.nextAllowedAt = 0;
|
|
237
|
-
track.cleanWindows = 0;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
7
|
+
export { ComponentHealthMonitor, PanelHealthMonitor } from './component-health-monitor.js';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type { EnvironmentVariableQuery, ServiceInspectionQuery, SubscriptionAccessQuery, LocalAuthInspectionQuery, SessionBrowserQuery, SessionMemoryQuery, ToolCatalogQuery, ProviderModelCatalogQuery, ProviderAccountInspectionQuery, ProviderRuntimeInspectionQuery, PlanDashboardQuery, OpsStrategyQuery, } from './ui-service-queries.js';
|
|
2
|
+
export { createEnvironmentVariableQuery, createProviderRuntimeInspectionQuery, } from './ui-service-queries.js';
|
|
3
|
+
//# sourceMappingURL=service-queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-queries.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/service-queries.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,8BAA8B,EAC9B,oCAAoC,GACrC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createEnvironmentVariableQuery, createProviderRuntimeInspectionQuery, } from './ui-service-queries.js';
|
|
@@ -56,7 +56,7 @@ import { AdaptivePlanner } from '@pellux/goodvibes-sdk/platform/core/adaptive-pl
|
|
|
56
56
|
import { IdempotencyStore } from '@pellux/goodvibes-sdk/platform/runtime/idempotency/index';
|
|
57
57
|
import { OverflowHandler } from '@pellux/goodvibes-sdk/platform/tools/shared/overflow';
|
|
58
58
|
import { ToolLLM } from '../config/tool-llm.js';
|
|
59
|
-
import {
|
|
59
|
+
import { ComponentHealthMonitor } from '@pellux/goodvibes-sdk/platform/runtime/perf/component-health-monitor';
|
|
60
60
|
import { WorktreeRegistry } from './worktree/registry.js';
|
|
61
61
|
import { SandboxSessionRegistry } from './sandbox/session-registry.js';
|
|
62
62
|
import { type ShellPathService } from '@pellux/goodvibes-sdk/platform/runtime/shell-paths';
|
|
@@ -124,7 +124,7 @@ export interface RuntimeServices {
|
|
|
124
124
|
readonly channelPolicy: ChannelPolicyManager;
|
|
125
125
|
readonly mcpRegistry: McpRegistry;
|
|
126
126
|
readonly tokenAuditor: ApiTokenAuditor;
|
|
127
|
-
readonly
|
|
127
|
+
readonly componentHealthMonitor: ComponentHealthMonitor;
|
|
128
128
|
readonly worktreeRegistry: WorktreeRegistry;
|
|
129
129
|
readonly sandboxSessionRegistry: SandboxSessionRegistry;
|
|
130
130
|
readonly webhookNotifier: WebhookNotifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/services.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/services.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ import { ProjectIndex } from '@pellux/goodvibes-sdk/platform/state/project-index
|
|
|
58
58
|
import { IdempotencyStore } from '@pellux/goodvibes-sdk/platform/runtime/idempotency/index';
|
|
59
59
|
import { OverflowHandler } from '@pellux/goodvibes-sdk/platform/tools/shared/overflow';
|
|
60
60
|
import { ToolLLM } from '../config/tool-llm.js';
|
|
61
|
-
import {
|
|
61
|
+
import { ComponentHealthMonitor } from '@pellux/goodvibes-sdk/platform/runtime/perf/component-health-monitor';
|
|
62
62
|
import { WorktreeRegistry } from './worktree/registry.js';
|
|
63
63
|
import { SandboxSessionRegistry } from './sandbox/session-registry.js';
|
|
64
64
|
import { createShellPathService } from '@pellux/goodvibes-sdk/platform/runtime/shell-paths';
|
|
@@ -288,7 +288,7 @@ export function createRuntimeServices(options) {
|
|
|
288
288
|
mcpRegistry.setRuntimeBus(options.runtimeBus);
|
|
289
289
|
mcpRegistry.setSandboxRuntime(configManager, sandboxSessionRegistry);
|
|
290
290
|
const tokenAuditor = new ApiTokenAuditor({ managed: false });
|
|
291
|
-
const
|
|
291
|
+
const componentHealthMonitor = new ComponentHealthMonitor();
|
|
292
292
|
const worktreeRegistry = new WorktreeRegistry(workingDirectory, { surfaceRoot });
|
|
293
293
|
const webhookNotifier = new WebhookNotifier();
|
|
294
294
|
const replayEngine = new DeterministicReplayEngine(workingDirectory);
|
|
@@ -405,7 +405,7 @@ export function createRuntimeServices(options) {
|
|
|
405
405
|
channelPolicy,
|
|
406
406
|
mcpRegistry,
|
|
407
407
|
tokenAuditor,
|
|
408
|
-
|
|
408
|
+
componentHealthMonitor,
|
|
409
409
|
worktreeRegistry,
|
|
410
410
|
sandboxSessionRegistry,
|
|
411
411
|
webhookNotifier,
|
|
@@ -24,9 +24,9 @@ export type SessionPersistencePaths = {
|
|
|
24
24
|
readonly workingDirectory: string;
|
|
25
25
|
readonly homeDirectory: string;
|
|
26
26
|
};
|
|
27
|
-
export declare function getUserSessionsDir(workingDirectory: string): string;
|
|
28
|
-
export declare function getLastSessionPointerPath(workingDirectory: string): string;
|
|
29
|
-
export declare function getRecoveryFilePath(homeDirectory: string): string;
|
|
27
|
+
export declare function getUserSessionsDir(workingDirectory: string, surfaceRoot?: string): string;
|
|
28
|
+
export declare function getLastSessionPointerPath(workingDirectory: string, surfaceRoot?: string): string;
|
|
29
|
+
export declare function getRecoveryFilePath(homeDirectory: string, surfaceRoot?: string): string;
|
|
30
30
|
export declare function generateUserSessionId(): string;
|
|
31
31
|
export declare function saveSession(sessionId: string, data: SessionSnapshot, model: string, provider: string, title?: string, options?: SessionPersistenceOptions): void;
|
|
32
32
|
export declare function persistConversation(sessionId: string, data: SessionSnapshot, model: string, provider: string, title?: string, options?: SessionPersistenceOptions): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-persistence.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/session-persistence.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAoB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAIvE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAgCF,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"session-persistence.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/session-persistence.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAoB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAIvE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAgCF,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzF;AAED,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAK,EACV,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAeN;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAK,EACV,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAGN;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAapG;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,MAAM,GAAG,IAAI,CAWzF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,eAAe,GAAG,IAAI,CAYhG;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,MAAM,EACjB,KAAK,SAAK,EACV,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CA2BN;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAO5E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,gBAAgB,GAAG,IAAI,CAmC9F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,eAAe,GAAG,IAAI,CA6CpG"}
|
|
@@ -31,14 +31,14 @@ function resolveSessionManager(options) {
|
|
|
31
31
|
}
|
|
32
32
|
return new SessionManager(requireWorkingDirectory(options), { surfaceRoot: options?.surfaceRoot });
|
|
33
33
|
}
|
|
34
|
-
export function getUserSessionsDir(workingDirectory) {
|
|
35
|
-
return resolveScopedDirectory(workingDirectory,
|
|
34
|
+
export function getUserSessionsDir(workingDirectory, surfaceRoot) {
|
|
35
|
+
return resolveScopedDirectory(workingDirectory, surfaceRoot, 'sessions');
|
|
36
36
|
}
|
|
37
|
-
export function getLastSessionPointerPath(workingDirectory) {
|
|
38
|
-
return join(getUserSessionsDir(workingDirectory), 'last-session.json');
|
|
37
|
+
export function getLastSessionPointerPath(workingDirectory, surfaceRoot) {
|
|
38
|
+
return join(getUserSessionsDir(workingDirectory, surfaceRoot), 'last-session.json');
|
|
39
39
|
}
|
|
40
|
-
export function getRecoveryFilePath(homeDirectory) {
|
|
41
|
-
return resolveScopedDirectory(homeDirectory,
|
|
40
|
+
export function getRecoveryFilePath(homeDirectory, surfaceRoot) {
|
|
41
|
+
return resolveScopedDirectory(homeDirectory, surfaceRoot, 'recovery.jsonl');
|
|
42
42
|
}
|
|
43
43
|
export function generateUserSessionId() {
|
|
44
44
|
return randomBytes(4).toString('hex');
|
|
@@ -67,7 +67,7 @@ export function persistConversation(sessionId, data, model, provider, title = ''
|
|
|
67
67
|
export function writeLastSessionPointer(sessionId, options) {
|
|
68
68
|
try {
|
|
69
69
|
const workingDirectory = requireWorkingDirectory(options);
|
|
70
|
-
const pointerPath = getLastSessionPointerPath(workingDirectory);
|
|
70
|
+
const pointerPath = getLastSessionPointerPath(workingDirectory, options?.surfaceRoot);
|
|
71
71
|
mkdirSync(dirname(pointerPath), { recursive: true });
|
|
72
72
|
writeFileSync(pointerPath, JSON.stringify({ sessionId, timestamp: new Date().toISOString() }) + '\n', 'utf-8');
|
|
73
73
|
}
|
|
@@ -78,7 +78,7 @@ export function writeLastSessionPointer(sessionId, options) {
|
|
|
78
78
|
export function readLastSessionPointer(options) {
|
|
79
79
|
try {
|
|
80
80
|
const workingDirectory = requireWorkingDirectory(options);
|
|
81
|
-
const pointerPath = getLastSessionPointerPath(workingDirectory);
|
|
81
|
+
const pointerPath = getLastSessionPointerPath(workingDirectory, options?.surfaceRoot);
|
|
82
82
|
if (!existsSync(pointerPath))
|
|
83
83
|
return null;
|
|
84
84
|
const data = JSON.parse(readFileSync(pointerPath, 'utf-8'));
|
|
@@ -109,7 +109,7 @@ export function writeRecoveryFile(snapshot, sessionId, title = '', options) {
|
|
|
109
109
|
if (!snapshot.messages.length)
|
|
110
110
|
return;
|
|
111
111
|
const homeDirectory = requireHomeDirectory(options);
|
|
112
|
-
const recoveryFile = getRecoveryFilePath(homeDirectory);
|
|
112
|
+
const recoveryFile = getRecoveryFilePath(homeDirectory, options?.surfaceRoot);
|
|
113
113
|
const lines = [];
|
|
114
114
|
lines.push(JSON.stringify({ type: 'meta', sessionId, title, timestamp: Date.now() }));
|
|
115
115
|
if (snapshot.titleSource || snapshot.returnContext) {
|
|
@@ -137,7 +137,7 @@ export function writeRecoveryFile(snapshot, sessionId, title = '', options) {
|
|
|
137
137
|
export function deleteRecoveryFile(options) {
|
|
138
138
|
try {
|
|
139
139
|
const homeDirectory = requireHomeDirectory(options);
|
|
140
|
-
unlinkSync(getRecoveryFilePath(homeDirectory));
|
|
140
|
+
unlinkSync(getRecoveryFilePath(homeDirectory, options?.surfaceRoot));
|
|
141
141
|
}
|
|
142
142
|
catch {
|
|
143
143
|
// missing file is fine
|
|
@@ -149,11 +149,11 @@ export function checkRecoveryFile(options) {
|
|
|
149
149
|
workingDirectory: requireWorkingDirectory(options),
|
|
150
150
|
homeDirectory: requireHomeDirectory(options),
|
|
151
151
|
});
|
|
152
|
-
const recoveryFile = getRecoveryFilePath(homeDirectory);
|
|
152
|
+
const recoveryFile = getRecoveryFilePath(homeDirectory, options?.surfaceRoot);
|
|
153
153
|
if (!existsSync(recoveryFile))
|
|
154
154
|
return null;
|
|
155
155
|
const recoveryMtime = statSync(recoveryFile).mtimeMs;
|
|
156
|
-
const pointerPath = getLastSessionPointerPath(workingDirectory);
|
|
156
|
+
const pointerPath = getLastSessionPointerPath(workingDirectory, options?.surfaceRoot);
|
|
157
157
|
if (existsSync(pointerPath)) {
|
|
158
158
|
const lastCleanMtime = statSync(pointerPath).mtimeMs;
|
|
159
159
|
if (recoveryMtime <= lastCleanMtime)
|
|
@@ -180,7 +180,7 @@ export function checkRecoveryFile(options) {
|
|
|
180
180
|
export function loadRecoveryConversation(options) {
|
|
181
181
|
try {
|
|
182
182
|
const homeDirectory = requireHomeDirectory(options);
|
|
183
|
-
const recoveryFile = getRecoveryFilePath(homeDirectory);
|
|
183
|
+
const recoveryFile = getRecoveryFilePath(homeDirectory, options?.surfaceRoot);
|
|
184
184
|
const raw = readFileSync(recoveryFile, 'utf-8');
|
|
185
185
|
const lines = raw.split('\n').filter(Boolean);
|
|
186
186
|
if (lines.length < 2)
|
|
@@ -108,7 +108,7 @@ export async function maybeAssistReturnContextSummary(configManager, helperModel
|
|
|
108
108
|
if (!enabled)
|
|
109
109
|
return summary;
|
|
110
110
|
const prompt = [
|
|
111
|
-
'You are generating a terse resume summary for a
|
|
111
|
+
'You are generating a terse resume summary for a coding session.',
|
|
112
112
|
'Return one sentence under 160 characters.',
|
|
113
113
|
'Focus on what the operator should look at first.',
|
|
114
114
|
'',
|
|
@@ -5,7 +5,7 @@ import type { HookWorkbench } from '../hooks/workbench.js';
|
|
|
5
5
|
import type { KnowledgeService } from '../knowledge/index.js';
|
|
6
6
|
import type { PluginManager } from '../plugins/manager.js';
|
|
7
7
|
import type { PolicyRuntimeState } from './permissions/policy-runtime.js';
|
|
8
|
-
import type {
|
|
8
|
+
import type { ComponentHealthMonitor } from '@pellux/goodvibes-sdk/platform/runtime/perf/component-health-monitor';
|
|
9
9
|
import type { ShellPathService } from '@pellux/goodvibes-sdk/platform/runtime/shell-paths';
|
|
10
10
|
import type { WorktreeRegistry } from './worktree/registry.js';
|
|
11
11
|
import type { SandboxSessionRegistry } from './sandbox/session-registry.js';
|
|
@@ -33,7 +33,7 @@ export interface CreateBootstrapCommandShellServicesOptions {
|
|
|
33
33
|
readonly adaptivePlanner?: AdaptivePlanner;
|
|
34
34
|
readonly sessionOrchestration?: import('./shell-command-ops.js').ShellSessionOrchestrationService;
|
|
35
35
|
readonly shellPaths: ShellPathService;
|
|
36
|
-
readonly
|
|
36
|
+
readonly componentHealthMonitor: ComponentHealthMonitor;
|
|
37
37
|
readonly worktreeRegistry: WorktreeRegistry;
|
|
38
38
|
readonly sandboxSessionRegistry: SandboxSessionRegistry;
|
|
39
39
|
readonly readModels: import('./ui-read-models.js').UiReadModels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-command-services.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/shell-command-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"shell-command-services.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/shell-command-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import { createShellOpsServices, createShellPlanRuntime, createShellRemoteComman
|
|
|
3
3
|
import { createShellPlatformServices } from './shell-command-platform.js';
|
|
4
4
|
import { createShellWorkspaceServices } from './shell-command-workspace.js';
|
|
5
5
|
export function createBootstrapCommandShellServices(options) {
|
|
6
|
-
const { agentManager, acpManager, automationManager, modeManager, planManager, adaptivePlanner, sessionOrchestration, shellPaths,
|
|
6
|
+
const { agentManager, acpManager, automationManager, modeManager, planManager, adaptivePlanner, sessionOrchestration, shellPaths, componentHealthMonitor, worktreeRegistry, sandboxSessionRegistry, readModels, serviceRegistry, subscriptionManager, secretsManager, localUserAuthManager, tokenAuditor, replayEngine, webhookNotifier, remoteRuntime, planRuntime, forensicsRegistry, policyRuntimeState, memoryRegistry, integrationHelpers, knowledgeService, pluginManager, hookWorkbench, } = options;
|
|
7
7
|
return {
|
|
8
8
|
workspace: createShellWorkspaceServices({
|
|
9
9
|
shellPaths,
|
|
10
|
-
|
|
10
|
+
componentHealthMonitor,
|
|
11
11
|
worktreeRegistry,
|
|
12
12
|
sandboxSessionRegistry,
|
|
13
13
|
}),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ComponentHealthMonitor } from '@pellux/goodvibes-sdk/platform/runtime/perf/component-health-monitor';
|
|
2
2
|
import type { SandboxSessionRegistry } from './sandbox/session-registry.js';
|
|
3
3
|
import type { ShellPathService } from '@pellux/goodvibes-sdk/platform/runtime/shell-paths';
|
|
4
4
|
import type { WorktreeRegistry } from './worktree/registry.js';
|
|
5
5
|
export interface CommandWorkspaceShellServices {
|
|
6
6
|
readonly shellPaths?: ShellPathService;
|
|
7
|
-
readonly
|
|
7
|
+
readonly componentHealthMonitor?: ComponentHealthMonitor;
|
|
8
8
|
readonly worktreeRegistry?: WorktreeRegistry;
|
|
9
9
|
readonly sandboxSessionRegistry?: SandboxSessionRegistry;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-command-workspace.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/shell-command-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"shell-command-workspace.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/shell-command-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AACnH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CAC1D;AAED,MAAM,WAAW,mCAAoC,SAAQ,6BAA6B;CAAG;AAE7F,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,mCAAmC,GAC3C,6BAA6B,CAc/B"}
|