@inspectr/mcplab 1.28.4 → 1.29.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 +52 -5
- package/dist/app/assets/index-256LN2cO.css +2 -0
- package/dist/app/assets/index-DVIaEnjQ.js +243 -0
- package/dist/app/assets/sse-queue-worker-Iwmqd2oW.js +1 -0
- package/dist/app/index.html +2 -2
- package/dist/app-server/app-context.d.ts +75 -115
- package/dist/app-server/app-context.d.ts.map +1 -1
- package/dist/app-server/app-dist.d.ts +3 -3
- package/dist/app-server/app-dist.js.map +1 -1
- package/dist/app-server/app-run-artifacts.d.ts +4 -0
- package/dist/app-server/app-run-artifacts.d.ts.map +1 -0
- package/dist/app-server/app-run-artifacts.js +66 -0
- package/dist/app-server/app-run-artifacts.js.map +1 -0
- package/dist/app-server/assistant-common.d.ts +27 -37
- package/dist/app-server/assistant-common.d.ts.map +1 -1
- package/dist/app-server/assistant-common.js +110 -1
- package/dist/app-server/assistant-common.js.map +1 -1
- package/dist/app-server/assistant-events.d.ts +8 -28
- package/dist/app-server/browser-launch.d.ts +3 -3
- package/dist/app-server/browser-launch.js.map +1 -1
- package/dist/app-server/browser-provider-learning.d.ts +26 -0
- package/dist/app-server/browser-provider-learning.d.ts.map +1 -0
- package/dist/app-server/browser-provider-learning.js +353 -0
- package/dist/app-server/browser-provider-learning.js.map +1 -0
- package/dist/app-server/config-store.d.ts +13 -21
- package/dist/app-server/dev-mcp.d.ts +2 -5
- package/dist/app-server/evals-routes.d.ts +8 -18
- package/dist/app-server/evaluation-group-results.d.ts +11 -0
- package/dist/app-server/evaluation-group-results.d.ts.map +1 -0
- package/dist/app-server/evaluation-group-results.js +46 -0
- package/dist/app-server/evaluation-group-results.js.map +1 -0
- package/dist/app-server/evaluation-journal-projection.d.ts +9 -0
- package/dist/app-server/evaluation-journal-projection.d.ts.map +1 -0
- package/dist/app-server/evaluation-journal-projection.js +76 -0
- package/dist/app-server/evaluation-journal-projection.js.map +1 -0
- package/dist/app-server/evaluation-journal-writer.d.ts +23 -0
- package/dist/app-server/evaluation-journal-writer.d.ts.map +1 -0
- package/dist/app-server/evaluation-journal-writer.js +41 -0
- package/dist/app-server/evaluation-journal-writer.js.map +1 -0
- package/dist/app-server/evaluation-result-projection.d.ts +12 -0
- package/dist/app-server/evaluation-result-projection.d.ts.map +1 -0
- package/dist/app-server/evaluation-result-projection.js +107 -0
- package/dist/app-server/evaluation-result-projection.js.map +1 -0
- package/dist/app-server/execution-journal.d.ts +13 -0
- package/dist/app-server/execution-journal.d.ts.map +1 -0
- package/dist/app-server/execution-journal.js +39 -0
- package/dist/app-server/execution-journal.js.map +1 -0
- package/dist/app-server/http.d.ts +1 -1
- package/dist/app-server/index.d.ts +1 -1
- package/dist/app-server/inspectr-session-manager.d.ts +45 -0
- package/dist/app-server/inspectr-session-manager.d.ts.map +1 -0
- package/dist/app-server/inspectr-session-manager.js +203 -0
- package/dist/app-server/inspectr-session-manager.js.map +1 -0
- package/dist/app-server/jobs.d.ts +6 -9
- package/dist/app-server/libraries-store.d.ts +26 -10
- package/dist/app-server/libraries-store.d.ts.map +1 -1
- package/dist/app-server/libraries-store.js +130 -3
- package/dist/app-server/libraries-store.js.map +1 -1
- package/dist/app-server/live-tests-routes.d.ts +17 -0
- package/dist/app-server/live-tests-routes.d.ts.map +1 -0
- package/dist/app-server/live-tests-routes.js +82 -0
- package/dist/app-server/live-tests-routes.js.map +1 -0
- package/dist/app-server/live-tests.d.ts +81 -0
- package/dist/app-server/live-tests.d.ts.map +1 -0
- package/dist/app-server/live-tests.js +272 -0
- package/dist/app-server/live-tests.js.map +1 -0
- package/dist/app-server/markdown-reports.d.ts +7 -7
- package/dist/app-server/oauth-debugger-domain.d.ts +183 -207
- package/dist/app-server/oauth-debugger-domain.js.map +1 -1
- package/dist/app-server/oauth-debugger.d.ts +10 -17
- package/dist/app-server/oauth-debugger.js +1 -1
- package/dist/app-server/oauth-debugger.js.map +1 -1
- package/dist/app-server/oauth-runtime-domain.d.ts +42 -53
- package/dist/app-server/oauth-runtime-domain.js.map +1 -1
- package/dist/app-server/oauth-runtime-routes.d.ts +12 -12
- package/dist/app-server/oauth-session-manager.d.ts +44 -50
- package/dist/app-server/oauth-session-manager.d.ts.map +1 -1
- package/dist/app-server/oauth-session-manager.js.map +1 -1
- package/dist/app-server/provider-models.d.ts +5 -5
- package/dist/app-server/result-assistant-domain.d.ts +66 -82
- package/dist/app-server/result-assistant-domain.d.ts.map +1 -1
- package/dist/app-server/result-assistant-domain.js.map +1 -1
- package/dist/app-server/result-assistant-tools.d.ts +5 -5
- package/dist/app-server/result-assistant.d.ts +9 -21
- package/dist/app-server/result-assistant.js.map +1 -1
- package/dist/app-server/router.d.ts +9 -1
- package/dist/app-server/router.d.ts.map +1 -1
- package/dist/app-server/router.js +328 -10
- package/dist/app-server/router.js.map +1 -1
- package/dist/app-server/rover-connection.d.ts +48 -0
- package/dist/app-server/rover-connection.d.ts.map +1 -0
- package/dist/app-server/rover-connection.js +172 -0
- package/dist/app-server/rover-connection.js.map +1 -0
- package/dist/app-server/run-agent-selection.d.ts +2 -5
- package/dist/app-server/run-queue-domain.d.ts +89 -65
- package/dist/app-server/run-queue-domain.d.ts.map +1 -1
- package/dist/app-server/run-queue-domain.js +723 -9
- package/dist/app-server/run-queue-domain.js.map +1 -1
- package/dist/app-server/run-queue-events.d.ts +3 -10
- package/dist/app-server/run-queue-events.d.ts.map +1 -1
- package/dist/app-server/run-queue-events.js +114 -14
- package/dist/app-server/run-queue-events.js.map +1 -1
- package/dist/app-server/run-queue-executor.d.ts +33 -47
- package/dist/app-server/run-queue-executor.d.ts.map +1 -1
- package/dist/app-server/run-queue-executor.js +85 -15
- package/dist/app-server/run-queue-executor.js.map +1 -1
- package/dist/app-server/run-queue-state.d.ts +81 -47
- package/dist/app-server/run-queue-state.d.ts.map +1 -1
- package/dist/app-server/run-queue-state.js.map +1 -1
- package/dist/app-server/runs-routes.d.ts +13 -35
- package/dist/app-server/runs-routes.d.ts.map +1 -1
- package/dist/app-server/runs-routes.js +182 -16
- package/dist/app-server/runs-routes.js.map +1 -1
- package/dist/app-server/runs-routes.test-helpers.d.ts +42 -38
- package/dist/app-server/runs-routes.test-helpers.d.ts.map +1 -1
- package/dist/app-server/runs-routes.test-helpers.js +4 -1
- package/dist/app-server/runs-routes.test-helpers.js.map +1 -1
- package/dist/app-server/runs-store.d.ts +60 -43
- package/dist/app-server/runs-store.d.ts.map +1 -1
- package/dist/app-server/runs-store.js +157 -70
- package/dist/app-server/runs-store.js.map +1 -1
- package/dist/app-server/scenario-assistant-domain.d.ts +131 -157
- package/dist/app-server/scenario-assistant-domain.d.ts.map +1 -1
- package/dist/app-server/scenario-assistant-domain.js +7 -15
- package/dist/app-server/scenario-assistant-domain.js.map +1 -1
- package/dist/app-server/scenario-assistant.d.ts +10 -26
- package/dist/app-server/scenario-assistant.js.map +1 -1
- package/dist/app-server/settings-store.d.ts +4 -4
- package/dist/app-server/static-serving.d.ts +7 -13
- package/dist/app-server/store-utils.d.ts +1 -1
- package/dist/app-server/tool-analysis-domain.d.ts +1 -2
- package/dist/app-server/tool-analysis-domain.d.ts.map +1 -1
- package/dist/app-server/tool-analysis-domain.js +2 -59
- package/dist/app-server/tool-analysis-domain.js.map +1 -1
- package/dist/app-server/tool-analysis-storage.d.ts +20 -34
- package/dist/app-server/tool-analysis.d.ts +10 -19
- package/dist/app-server/types.d.ts +25 -25
- package/dist/app-server/version-info.d.ts +6 -6
- package/dist/app-server/version-info.js.map +1 -1
- package/dist/app-server/workspace-paths.d.ts +2 -1
- package/dist/app-server/workspace-paths.d.ts.map +1 -1
- package/dist/app-server/workspace-paths.js +5 -1
- package/dist/app-server/workspace-paths.js.map +1 -1
- package/dist/cli-branding.d.ts +1 -1
- package/dist/cli-branding.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/eval-config-files.d.ts +5 -8
- package/dist/interactive-helpers.d.ts +11 -15
- package/dist/migrate-utils.d.ts +1 -1
- package/dist/results/context.d.ts +1 -1
- package/dist/results/format.d.ts +7 -14
- package/dist/results/indexer.d.ts +2 -9
- package/dist/results/search.d.ts +1 -1
- package/dist/results/types.d.ts +2 -11
- package/dist/run-interactive.d.ts +21 -23
- package/dist/test-results-fixture.d.ts +4 -4
- package/package.json +8 -6
- package/dist/app/assets/index-DZoA-93O.js +0 -258
- package/dist/app/assets/index-aPA0WpCV.css +0 -1
- package/dist/app/assets/sse-queue-worker-BMo6aPaB.js +0 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { WebSocketServer, WebSocket } from 'ws';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { ROVER_CAPABILITIES, ROVER_PROTOCOL_VERSION as CORE_ROVER_PROTOCOL_VERSION } from '@inspectr/mcplab-core';
|
|
4
|
+
export const ROVER_ASSIGNMENT_LEASE_CAPABILITY = ROVER_CAPABILITIES[1];
|
|
5
|
+
export const ROVER_PROTOCOL_VERSION = CORE_ROVER_PROTOCOL_VERSION;
|
|
6
|
+
export function validateRoverRegistration(message) {
|
|
7
|
+
if (message.type !== 'register' ||
|
|
8
|
+
message.protocolVersion !== ROVER_PROTOCOL_VERSION ||
|
|
9
|
+
typeof message.provider !== 'string' ||
|
|
10
|
+
typeof message.pageUrl !== 'string' ||
|
|
11
|
+
typeof message.extensionVersion !== 'string') {
|
|
12
|
+
return { ok: false, code: 'invalid_registration', message: 'Rover registration required' };
|
|
13
|
+
}
|
|
14
|
+
if (!Array.isArray(message.capabilities) ||
|
|
15
|
+
!message.capabilities.includes(ROVER_ASSIGNMENT_LEASE_CAPABILITY)) {
|
|
16
|
+
return { ok: false, code: 'lease_required', message: 'Rover assignment leases are required' };
|
|
17
|
+
}
|
|
18
|
+
return { ok: true };
|
|
19
|
+
}
|
|
20
|
+
function timestampedLog(message) {
|
|
21
|
+
return `[mcplab-app] [${new Date().toISOString()}] ${message}`;
|
|
22
|
+
}
|
|
23
|
+
export function createRoverConnectionService(options = {}) {
|
|
24
|
+
const log = options.log ?? console.log;
|
|
25
|
+
const wss = new WebSocketServer({ noServer: true });
|
|
26
|
+
let current = null;
|
|
27
|
+
let closed = false;
|
|
28
|
+
const heartbeat = setInterval(() => {
|
|
29
|
+
if (closed || !current)
|
|
30
|
+
return;
|
|
31
|
+
if (Date.now() - Date.parse(current.lastSeenAt) > 45_000) {
|
|
32
|
+
current.socket.terminate();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (current.socket.readyState === WebSocket.OPEN)
|
|
36
|
+
current.socket.ping();
|
|
37
|
+
}, 15_000);
|
|
38
|
+
const parse = (raw) => {
|
|
39
|
+
try {
|
|
40
|
+
const value = JSON.parse(raw.toString());
|
|
41
|
+
return value &&
|
|
42
|
+
typeof value === 'object' &&
|
|
43
|
+
typeof value.type === 'string'
|
|
44
|
+
? value
|
|
45
|
+
: null;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const send = (socket, message) => {
|
|
52
|
+
if (socket.readyState !== WebSocket.OPEN)
|
|
53
|
+
return false;
|
|
54
|
+
socket.send(JSON.stringify(message));
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
57
|
+
wss.on('connection', (socket) => {
|
|
58
|
+
let connection = null;
|
|
59
|
+
socket.on('message', (raw) => {
|
|
60
|
+
const message = parse(raw);
|
|
61
|
+
if (!message) {
|
|
62
|
+
socket.close(1003, 'Invalid Rover message');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!connection) {
|
|
66
|
+
const registrationError = validateRoverRegistration(message);
|
|
67
|
+
if (!registrationError.ok && registrationError.code === 'invalid_registration') {
|
|
68
|
+
socket.close(1008, registrationError.message);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!registrationError.ok) {
|
|
72
|
+
send(socket, { type: 'rejected', reason: registrationError.message });
|
|
73
|
+
socket.close(1008, registrationError.message);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (current && current.socket.readyState === WebSocket.OPEN) {
|
|
77
|
+
send(socket, { type: 'rejected', reason: 'another Rover is already connected' });
|
|
78
|
+
socket.close(1008, 'Another Rover is already connected');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const now = new Date().toISOString();
|
|
82
|
+
const provider = message.provider;
|
|
83
|
+
const pageUrl = message.pageUrl;
|
|
84
|
+
const extensionVersion = message.extensionVersion;
|
|
85
|
+
connection = {
|
|
86
|
+
connectionId: randomUUID(),
|
|
87
|
+
registrationVersion: 1,
|
|
88
|
+
registration: {
|
|
89
|
+
protocolVersion: ROVER_PROTOCOL_VERSION,
|
|
90
|
+
provider,
|
|
91
|
+
...(typeof message.providerRevision === 'string'
|
|
92
|
+
? { providerRevision: message.providerRevision }
|
|
93
|
+
: {}),
|
|
94
|
+
pageUrl,
|
|
95
|
+
extensionVersion,
|
|
96
|
+
capabilities: Array.isArray(message.capabilities)
|
|
97
|
+
? message.capabilities.filter((value) => typeof value === 'string')
|
|
98
|
+
: []
|
|
99
|
+
},
|
|
100
|
+
socket,
|
|
101
|
+
connectedAt: now,
|
|
102
|
+
lastSeenAt: now
|
|
103
|
+
};
|
|
104
|
+
current = connection;
|
|
105
|
+
const registeredConnection = connection;
|
|
106
|
+
send(socket, {
|
|
107
|
+
type: 'registered',
|
|
108
|
+
protocolVersion: ROVER_PROTOCOL_VERSION,
|
|
109
|
+
connectedAt: now,
|
|
110
|
+
capabilities: [ROVER_ASSIGNMENT_LEASE_CAPABILITY]
|
|
111
|
+
});
|
|
112
|
+
log(timestampedLog(`Rover connected: ${registeredConnection.registration.provider}`));
|
|
113
|
+
void options.onRegister?.(registeredConnection);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
connection.lastSeenAt = new Date().toISOString();
|
|
117
|
+
if (message.type === 'register_update') {
|
|
118
|
+
if (typeof message.provider !== 'string' || !message.provider.trim())
|
|
119
|
+
return;
|
|
120
|
+
connection.registrationVersion += 1;
|
|
121
|
+
connection.registration = {
|
|
122
|
+
...connection.registration,
|
|
123
|
+
provider: message.provider,
|
|
124
|
+
...(typeof message.providerRevision === 'string'
|
|
125
|
+
? { providerRevision: message.providerRevision }
|
|
126
|
+
: {}),
|
|
127
|
+
pageUrl: String(message.pageUrl ?? connection.registration.pageUrl)
|
|
128
|
+
};
|
|
129
|
+
send(socket, {
|
|
130
|
+
type: 'registered',
|
|
131
|
+
protocolVersion: ROVER_PROTOCOL_VERSION,
|
|
132
|
+
connectedAt: connection.connectedAt,
|
|
133
|
+
capabilities: [ROVER_ASSIGNMENT_LEASE_CAPABILITY]
|
|
134
|
+
});
|
|
135
|
+
log(timestampedLog(`Rover provider updated: ${connection.registration.provider} (${connection.registration.pageUrl})`));
|
|
136
|
+
}
|
|
137
|
+
void options.onMessage?.(connection, message);
|
|
138
|
+
});
|
|
139
|
+
socket.on('close', () => {
|
|
140
|
+
if (current?.socket !== socket)
|
|
141
|
+
return;
|
|
142
|
+
const disconnected = current;
|
|
143
|
+
current = null;
|
|
144
|
+
log(timestampedLog(`Rover disconnected: ${disconnected.registration.provider}`));
|
|
145
|
+
void options.onDisconnect?.(disconnected);
|
|
146
|
+
});
|
|
147
|
+
socket.on('pong', () => {
|
|
148
|
+
if (connection)
|
|
149
|
+
connection.lastSeenAt = new Date().toISOString();
|
|
150
|
+
});
|
|
151
|
+
socket.on('error', () => undefined);
|
|
152
|
+
});
|
|
153
|
+
return {
|
|
154
|
+
upgrade(req, socket, head) {
|
|
155
|
+
if (closed || req.url?.split('?')[0] !== '/api/rover/ws')
|
|
156
|
+
return false;
|
|
157
|
+
wss.handleUpgrade(req, socket, head, (upgraded) => wss.emit('connection', upgraded, req));
|
|
158
|
+
return true;
|
|
159
|
+
},
|
|
160
|
+
connection: () => current,
|
|
161
|
+
send: (message) => (current ? send(current.socket, message) : false),
|
|
162
|
+
broadcast: (message) => (current ? send(current.socket, message) : false),
|
|
163
|
+
close: () => {
|
|
164
|
+
closed = true;
|
|
165
|
+
clearInterval(heartbeat);
|
|
166
|
+
current?.socket.close(1001, 'MCPLab shutting down');
|
|
167
|
+
current = null;
|
|
168
|
+
wss.close();
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=rover-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rover-connection.js","sourceRoot":"","sources":["../../src/app-server/rover-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
import type { EvalConfig } from '@inspectr/mcplab-core';
|
|
2
|
-
export declare function resolveRunSelectedAgents(
|
|
3
|
-
|
|
4
|
-
requestedAgents?: string[]
|
|
5
|
-
): string[];
|
|
6
|
-
//# sourceMappingURL=run-agent-selection.d.ts.map
|
|
2
|
+
export declare function resolveRunSelectedAgents(config: EvalConfig, requestedAgents?: string[]): string[];
|
|
3
|
+
//# sourceMappingURL=run-agent-selection.d.ts.map
|
|
@@ -1,80 +1,104 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import type { AppRouteDeps, AppRouteRequestContext } from './app-context.js';
|
|
3
3
|
import { buildQueueState } from './run-queue-events.js';
|
|
4
|
-
import {
|
|
5
|
-
type QueueAdvanceOptions,
|
|
6
|
-
type RunJob,
|
|
7
|
-
type RunParams,
|
|
8
|
-
type RunQueueState
|
|
9
|
-
} from './run-queue-state.js';
|
|
4
|
+
import { type QueueAdvanceOptions, type RunJob, type RunParams, type RunQueueState } from './run-queue-state.js';
|
|
10
5
|
import type { OAuthSessionManager } from './oauth-session-manager.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
| 'addJobEvent'
|
|
14
|
-
| 'sendSseEvent'
|
|
15
|
-
| 'getScenarioRunTraceRecords'
|
|
16
|
-
| 'selectScenarioIds'
|
|
17
|
-
| 'expandConfigForAgents'
|
|
18
|
-
| 'resolveRunSelectedAgents'
|
|
19
|
-
| 'readLibraries'
|
|
20
|
-
| 'pkgVersion'
|
|
21
|
-
>;
|
|
6
|
+
import type { RoverSocketMessage } from './rover-connection.js';
|
|
7
|
+
export type QueueServiceDeps = Pick<AppRouteDeps, 'addJobEvent' | 'sendSseEvent' | 'getScenarioRunTraceRecords' | 'selectScenarioIds' | 'expandConfigForAgents' | 'resolveRunSelectedAgents' | 'readLibraries' | 'pkgVersion' | 'getRunResults'>;
|
|
22
8
|
export type EnqueueResult = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
9
|
+
jobId: string;
|
|
10
|
+
queued?: boolean;
|
|
11
|
+
position?: number;
|
|
12
|
+
};
|
|
13
|
+
export type RoverAssignmentWorker = {
|
|
14
|
+
connectionId: string;
|
|
15
|
+
registrationVersion?: number;
|
|
16
|
+
provider: string;
|
|
17
|
+
providerRevision?: string;
|
|
18
|
+
capabilities?: string[];
|
|
26
19
|
};
|
|
27
20
|
export interface RunQueueService {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
hostHeader?: string;
|
|
49
|
-
}
|
|
50
|
-
):
|
|
51
|
-
| {
|
|
21
|
+
jobs: Map<string, RunJob>;
|
|
22
|
+
state: RunQueueState;
|
|
23
|
+
enqueueRun(runParams: RunParams, options?: {
|
|
24
|
+
hostHeader?: string;
|
|
25
|
+
}): EnqueueResult;
|
|
26
|
+
stopJob(jobId: string, options?: {
|
|
27
|
+
hostHeader?: string;
|
|
28
|
+
}): {
|
|
29
|
+
ok: boolean;
|
|
30
|
+
status: string;
|
|
31
|
+
} | null;
|
|
32
|
+
stopEvaluationRun(evaluationRunId: string, options?: {
|
|
33
|
+
hostHeader?: string;
|
|
34
|
+
}): {
|
|
35
|
+
ok: true;
|
|
36
|
+
stopped: number;
|
|
37
|
+
} | null;
|
|
38
|
+
removeEvaluationRun(evaluationRunId: string, options?: {
|
|
39
|
+
hostHeader?: string;
|
|
40
|
+
}): {
|
|
52
41
|
ok: true;
|
|
42
|
+
removed: number;
|
|
43
|
+
} | {
|
|
44
|
+
error: string;
|
|
45
|
+
statusCode: number;
|
|
46
|
+
} | null;
|
|
47
|
+
removeQueuedJob(jobId: string, options?: {
|
|
48
|
+
hostHeader?: string;
|
|
49
|
+
}): {
|
|
50
|
+
ok: true;
|
|
51
|
+
jobId: string;
|
|
52
|
+
status: 'stopped';
|
|
53
|
+
} | {
|
|
54
|
+
error: string;
|
|
55
|
+
statusCode: number;
|
|
56
|
+
} | null;
|
|
57
|
+
resumeBlockedJobs(options?: {
|
|
58
|
+
hostHeader?: string;
|
|
59
|
+
}): void;
|
|
60
|
+
getQueueState(): ReturnType<typeof buildQueueState>;
|
|
61
|
+
getWaitingRoverJobs(provider: string): Array<{
|
|
53
62
|
jobId: string;
|
|
63
|
+
evaluationName?: string;
|
|
64
|
+
provider: string;
|
|
65
|
+
position: number;
|
|
66
|
+
}>;
|
|
67
|
+
subscribeQueue(req: IncomingMessage, res: ServerResponse): void;
|
|
68
|
+
advance(options?: QueueAdvanceOptions): Promise<void>;
|
|
69
|
+
setWorkerCount(workerCount: number, options?: {
|
|
70
|
+
hostHeader?: string;
|
|
71
|
+
}): void;
|
|
72
|
+
closeSubscribers(): void;
|
|
73
|
+
assignRoverJob(provider: string, send: (message: RoverSocketMessage) => boolean, worker?: RoverAssignmentWorker): RunJob | null;
|
|
74
|
+
rebindRoverLeases(provider: string, worker: RoverAssignmentWorker): void;
|
|
75
|
+
pauseRoverJob(jobId: string, connectionId?: string): void;
|
|
76
|
+
resumeRoverJob(jobId: string): boolean;
|
|
77
|
+
completeRoverJob(jobId: string, payload?: Record<string, unknown>): void;
|
|
78
|
+
stopRoverScenario(jobId: string, scenarioId: string): {
|
|
79
|
+
ok: true;
|
|
80
|
+
status: 'stopped';
|
|
81
|
+
} | {
|
|
82
|
+
error: string;
|
|
83
|
+
statusCode: number;
|
|
84
|
+
} | null;
|
|
85
|
+
stopScenario(jobId: string, scenarioId: string, agentName?: string): {
|
|
86
|
+
ok: true;
|
|
54
87
|
status: 'stopped';
|
|
55
|
-
|
|
56
|
-
| {
|
|
88
|
+
} | {
|
|
57
89
|
error: string;
|
|
58
90
|
statusCode: number;
|
|
59
|
-
|
|
60
|
-
| null;
|
|
61
|
-
resumeBlockedJobs(options?: { hostHeader?: string }): void;
|
|
62
|
-
getQueueState(): ReturnType<typeof buildQueueState>;
|
|
63
|
-
subscribeQueue(req: IncomingMessage, res: ServerResponse): void;
|
|
64
|
-
advance(options?: QueueAdvanceOptions): Promise<void>;
|
|
65
|
-
setWorkerCount(
|
|
66
|
-
workerCount: number,
|
|
67
|
-
options?: {
|
|
68
|
-
hostHeader?: string;
|
|
69
|
-
}
|
|
70
|
-
): void;
|
|
71
|
-
closeSubscribers(): void;
|
|
91
|
+
} | null;
|
|
92
|
+
handleRoverMessage(message: RoverSocketMessage, provider: string, send: (message: RoverSocketMessage) => boolean, worker?: RoverAssignmentWorker): string | null;
|
|
72
93
|
}
|
|
73
94
|
export declare function createRunQueueService(params: {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
95
|
+
settings: AppRouteRequestContext['settings'];
|
|
96
|
+
oauthSessionManager: OAuthSessionManager;
|
|
97
|
+
deps: QueueServiceDeps;
|
|
98
|
+
jobs?: Map<string, RunJob>;
|
|
99
|
+
state?: RunQueueState;
|
|
100
|
+
sendRoverMessage?: (message: RoverSocketMessage) => boolean;
|
|
101
|
+
assignRoverJob?: (provider: string, worker?: RoverAssignmentWorker) => RunJob | null;
|
|
102
|
+
onRoverJobReleased?: (provider: string, jobId: string) => void;
|
|
79
103
|
}): RunQueueService;
|
|
80
|
-
//# sourceMappingURL=run-queue-domain.d.ts.map
|
|
104
|
+
//# sourceMappingURL=run-queue-domain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-queue-domain.d.ts","sourceRoot":"","sources":["../../src/app-server/run-queue-domain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-queue-domain.d.ts","sourceRoot":"","sources":["../../src/app-server/run-queue-domain.ts"],"names":[],"mappings":"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"}
|