@crosshands/runtime 0.1.6 → 0.2.1
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/broker/broker.d.ts +4 -0
- package/dist/broker/broker.d.ts.map +1 -1
- package/dist/broker/broker.js +194 -47
- package/dist/broker/broker.js.map +1 -1
- package/dist/diagnostics/paths.d.ts +5 -0
- package/dist/diagnostics/paths.d.ts.map +1 -0
- package/dist/diagnostics/paths.js +25 -0
- package/dist/diagnostics/paths.js.map +1 -0
- package/dist/diagnostics/record.d.ts +99 -0
- package/dist/diagnostics/record.d.ts.map +1 -0
- package/dist/diagnostics/record.js +154 -0
- package/dist/diagnostics/record.js.map +1 -0
- package/dist/diagnostics/writer.d.ts +27 -0
- package/dist/diagnostics/writer.d.ts.map +1 -0
- package/dist/diagnostics/writer.js +95 -0
- package/dist/diagnostics/writer.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/ipc/control-transport.d.ts +6 -0
- package/dist/ipc/control-transport.d.ts.map +1 -1
- package/dist/ipc/control-transport.js +13 -1
- package/dist/ipc/control-transport.js.map +1 -1
- package/dist/ipc/endpoint.d.ts +1 -0
- package/dist/ipc/endpoint.d.ts.map +1 -1
- package/dist/ipc/endpoint.js +3 -0
- package/dist/ipc/endpoint.js.map +1 -1
- package/dist/private-directory.d.ts +2 -0
- package/dist/private-directory.d.ts.map +1 -0
- package/dist/private-directory.js +15 -0
- package/dist/private-directory.js.map +1 -0
- package/package.json +2 -2
- package/src/broker/broker.ts +233 -50
- package/src/diagnostics/paths.ts +30 -0
- package/src/diagnostics/record.ts +262 -0
- package/src/diagnostics/writer.ts +112 -0
- package/src/index.ts +4 -0
- package/src/ipc/control-transport.ts +20 -1
- package/src/ipc/endpoint.ts +4 -0
- package/src/private-directory.ts +14 -0
package/dist/broker/broker.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ComputerOperationName, type ContractVersions, type InteractionContext, type ReferenceBindings } from '@crosshands/contract';
|
|
2
|
+
import { type DiagnosticEnvelope, type DiagnosticsSink } from '../diagnostics/record.js';
|
|
2
3
|
import { type StableAppIdentity } from '../policy/policy.js';
|
|
3
4
|
import { ProviderSupervisor } from '../providers/supervisor.js';
|
|
4
5
|
export type BrokerPeer = {
|
|
@@ -29,6 +30,7 @@ export type LocalBrokerOptions = {
|
|
|
29
30
|
providerFactory: ConstructorParameters<typeof ProviderSupervisor>[0]['providerFactory'];
|
|
30
31
|
inspectTarget?: (operation: ComputerOperationName, input: unknown) => Promise<TargetInspection | null>;
|
|
31
32
|
publish?: (response: BrokerResponse) => Promise<void>;
|
|
33
|
+
diagnostics?: DiagnosticsSink;
|
|
32
34
|
contextTtlMs?: number;
|
|
33
35
|
now?: () => number;
|
|
34
36
|
};
|
|
@@ -42,10 +44,12 @@ export declare class LocalBroker {
|
|
|
42
44
|
readonly generation: string;
|
|
43
45
|
constructor(options: LocalBrokerOptions);
|
|
44
46
|
get desktopEpoch(): number;
|
|
47
|
+
diagnosticEnvelope(): DiagnosticEnvelope;
|
|
45
48
|
connect(handshake: {
|
|
46
49
|
peer: BrokerPeer;
|
|
47
50
|
versions: ContractVersions;
|
|
48
51
|
}): Promise<BrokerClient>;
|
|
52
|
+
close(reason?: string): Promise<void>;
|
|
49
53
|
issueContext(bindings: ReferenceBindings): InteractionContext;
|
|
50
54
|
resolveContext(token: string): InteractionContext;
|
|
51
55
|
request(request: BrokerRequest): Promise<BrokerResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,WAAW,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,qBAAqB,CAAA;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,UAAU,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,qBAAqB,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAA;IACvF,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB,CAAA;
|
|
1
|
+
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAOL,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,WAAW,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,qBAAqB,CAAA;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,UAAU,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,qBAAqB,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAA;IACvF,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB,CAAA;AAsLD,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;CAGzD;AAED,qBAAa,WAAW;;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;gBAcf,OAAO,EAAE,kBAAkB;IAkBvC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,kBAAkB,IAAI,kBAAkB;IAclC,OAAO,CAAC,SAAS,EAAE;QACvB,IAAI,EAAE,UAAU,CAAA;QAChB,QAAQ,EAAE,gBAAgB,CAAA;KAC3B,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBnB,KAAK,CAAC,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB;IAU7D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAIjD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;CA0QzD"}
|
package/dist/broker/broker.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { COMPUTER_OPERATIONS, InteractionContextStore, createComputerError, negotiateVersionHandshake, parseOperationOutput } from '@crosshands/contract';
|
|
3
|
+
import { DIAGNOSTIC_RECORD_VERSION, diagnosticError, diagnosticPlatform, diagnosticRequestResult, diagnosticTarget, emitDiagnostic } from '../diagnostics/record.js';
|
|
4
|
+
import { graphicalSessionKey } from '../ipc/endpoint.js';
|
|
3
5
|
import { assertAppAllowed } from '../policy/policy.js';
|
|
4
6
|
import { ProviderSupervisor } from '../providers/supervisor.js';
|
|
5
7
|
class SerialQueue {
|
|
@@ -19,9 +21,6 @@ class SerialQueue {
|
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
|
-
function isMutation(operation) {
|
|
23
|
-
return COMPUTER_OPERATIONS[operation].mutation;
|
|
24
|
-
}
|
|
25
24
|
function assertedInputApp(input) {
|
|
26
25
|
if (input === null || typeof input !== 'object')
|
|
27
26
|
return;
|
|
@@ -103,6 +102,29 @@ function contextToken(input) {
|
|
|
103
102
|
const token = input.contextToken;
|
|
104
103
|
return typeof token === 'string' ? token : undefined;
|
|
105
104
|
}
|
|
105
|
+
function observationApp(input) {
|
|
106
|
+
if (input === null || typeof input !== 'object')
|
|
107
|
+
return undefined;
|
|
108
|
+
const app = input.app;
|
|
109
|
+
return typeof app === 'string' && app.length > 0 ? app : undefined;
|
|
110
|
+
}
|
|
111
|
+
function bindGetAppStateInput(input, resolve) {
|
|
112
|
+
if (input === null || typeof input !== 'object')
|
|
113
|
+
return input;
|
|
114
|
+
const record = input;
|
|
115
|
+
const token = contextToken(record);
|
|
116
|
+
if (token === undefined || observationApp(record) !== undefined)
|
|
117
|
+
return input;
|
|
118
|
+
const context = resolve(token);
|
|
119
|
+
return {
|
|
120
|
+
app: context.appId,
|
|
121
|
+
window: { id: context.window.id },
|
|
122
|
+
...(typeof record.captureScreenshot === 'boolean'
|
|
123
|
+
? { captureScreenshot: record.captureScreenshot }
|
|
124
|
+
: {}),
|
|
125
|
+
...(typeof record.restoreWindow === 'boolean' ? { restoreWindow: record.restoreWindow } : {})
|
|
126
|
+
};
|
|
127
|
+
}
|
|
106
128
|
function computerError(cause) {
|
|
107
129
|
if (cause instanceof Error)
|
|
108
130
|
return cause;
|
|
@@ -154,20 +176,25 @@ export class BrokerClient {
|
|
|
154
176
|
export class LocalBroker {
|
|
155
177
|
generation;
|
|
156
178
|
#identity;
|
|
179
|
+
#session;
|
|
157
180
|
#supervisor;
|
|
158
181
|
#contexts;
|
|
159
182
|
#inspectTarget;
|
|
160
183
|
#publish;
|
|
184
|
+
#diagnostics;
|
|
161
185
|
#now;
|
|
162
186
|
#queue = new SerialQueue();
|
|
163
187
|
#desktopEpoch = 0;
|
|
164
188
|
#requestSequence = 0;
|
|
189
|
+
#closed = false;
|
|
165
190
|
constructor(options) {
|
|
166
191
|
this.generation = options.generation ?? `broker-${randomUUID()}`;
|
|
167
192
|
this.#identity = options.identity;
|
|
193
|
+
this.#session = graphicalSessionKey(options.identity.graphicalSessionId);
|
|
168
194
|
this.#inspectTarget = options.inspectTarget;
|
|
169
195
|
this.#publish = options.publish;
|
|
170
196
|
this.#now = options.now ?? Date.now;
|
|
197
|
+
this.#diagnostics = options.diagnostics;
|
|
171
198
|
this.#contexts = new InteractionContextStore({
|
|
172
199
|
...(options.contextTtlMs === undefined ? {} : { ttlMs: options.contextTtlMs }),
|
|
173
200
|
now: this.#now
|
|
@@ -180,6 +207,19 @@ export class LocalBroker {
|
|
|
180
207
|
get desktopEpoch() {
|
|
181
208
|
return this.#desktopEpoch;
|
|
182
209
|
}
|
|
210
|
+
diagnosticEnvelope() {
|
|
211
|
+
return {
|
|
212
|
+
v: DIAGNOSTIC_RECORD_VERSION,
|
|
213
|
+
ts: new Date(this.#now()).toISOString(),
|
|
214
|
+
session: this.#session,
|
|
215
|
+
brokerGeneration: this.generation,
|
|
216
|
+
...(this.#supervisor.generation === undefined
|
|
217
|
+
? {}
|
|
218
|
+
: { providerGeneration: this.#supervisor.generation }),
|
|
219
|
+
desktopEpoch: this.#desktopEpoch,
|
|
220
|
+
platform: diagnosticPlatform()
|
|
221
|
+
};
|
|
222
|
+
}
|
|
183
223
|
async connect(handshake) {
|
|
184
224
|
const { peer } = handshake;
|
|
185
225
|
if (!peer.verified || !peer.local) {
|
|
@@ -193,8 +233,17 @@ export class LocalBroker {
|
|
|
193
233
|
if (!versions.ok)
|
|
194
234
|
throw versions.error;
|
|
195
235
|
await this.#supervisor.start();
|
|
236
|
+
this.#emit({ kind: 'helper.start', ...this.diagnosticEnvelope() });
|
|
196
237
|
return new BrokerClient(this);
|
|
197
238
|
}
|
|
239
|
+
async close(reason = 'closed') {
|
|
240
|
+
if (this.#closed)
|
|
241
|
+
return;
|
|
242
|
+
this.#closed = true;
|
|
243
|
+
await this.#supervisor.close();
|
|
244
|
+
this.#emit({ kind: 'broker.stop', reason, ...this.diagnosticEnvelope() });
|
|
245
|
+
await this.#diagnostics?.close();
|
|
246
|
+
}
|
|
198
247
|
issueContext(bindings) {
|
|
199
248
|
return this.#contexts.issue({
|
|
200
249
|
...bindings,
|
|
@@ -208,55 +257,73 @@ export class LocalBroker {
|
|
|
208
257
|
return this.#contexts.resolve(token);
|
|
209
258
|
}
|
|
210
259
|
request(request) {
|
|
211
|
-
|
|
260
|
+
const enqueuedAt = this.#now();
|
|
261
|
+
return this.#queue.run(() => this.#requestLocked(request, enqueuedAt));
|
|
212
262
|
}
|
|
213
|
-
async #requestLocked(request) {
|
|
263
|
+
async #requestLocked(request, enqueuedAt) {
|
|
264
|
+
const startedAt = this.#now();
|
|
214
265
|
const requestId = `broker-${++this.#requestSequence}`;
|
|
215
266
|
const deadlineAt = this.#now() + (request.deadlineMs ?? 30_000);
|
|
216
|
-
const mutation =
|
|
217
|
-
|
|
218
|
-
let
|
|
219
|
-
let
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
// Context-window and index shorthand do not carry an identity until the
|
|
227
|
-
// broker binds them. Inspect the bound form so native providers can
|
|
228
|
-
// re-resolve the exact process/window before dispatch.
|
|
229
|
-
inspectionInput = normalizeMutationInput(request.input, context, context);
|
|
267
|
+
const mutation = COMPUTER_OPERATIONS[request.operation].mutation;
|
|
268
|
+
let inspectMs = 0;
|
|
269
|
+
let dispatchMs = 0;
|
|
270
|
+
let bindings;
|
|
271
|
+
let dispatched;
|
|
272
|
+
let result;
|
|
273
|
+
let cause;
|
|
274
|
+
let input = request.input;
|
|
275
|
+
if (request.operation === 'getAppState') {
|
|
276
|
+
input = bindGetAppStateInput(input, (token) => this.#contexts.resolve(token));
|
|
230
277
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
278
|
+
assertedInputApp(input);
|
|
279
|
+
let context;
|
|
280
|
+
let inspectionInput = input;
|
|
281
|
+
try {
|
|
282
|
+
if (mutation) {
|
|
283
|
+
const token = contextToken(request.input);
|
|
284
|
+
if (token === undefined) {
|
|
285
|
+
throw createComputerError('invalid_argument', 'Mutation requires a context token and target');
|
|
286
|
+
}
|
|
287
|
+
context = this.#contexts.resolve(token);
|
|
288
|
+
// Context-window and index shorthand do not carry an identity until the
|
|
289
|
+
// broker binds them. Inspect the bound form so native providers can
|
|
290
|
+
// re-resolve the exact process/window before dispatch.
|
|
291
|
+
inspectionInput = normalizeMutationInput(request.input, context, context);
|
|
238
292
|
}
|
|
239
|
-
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
|
|
293
|
+
const inspectStarted = this.#now();
|
|
294
|
+
const inspection = await this.#inspectTarget?.(request.operation, inspectionInput);
|
|
295
|
+
inspectMs = this.#now() - inspectStarted;
|
|
296
|
+
if (inspection !== undefined && inspection !== null) {
|
|
297
|
+
assertAppAllowed(inspection.appIdentity);
|
|
298
|
+
bindings = inspection.bindings;
|
|
243
299
|
}
|
|
244
|
-
|
|
245
|
-
|
|
300
|
+
let providerInput = input;
|
|
301
|
+
if (mutation) {
|
|
302
|
+
if (inspection === undefined || inspection === null) {
|
|
303
|
+
throw createComputerError('stale_target', 'Target identity could not be re-resolved');
|
|
304
|
+
}
|
|
305
|
+
providerInput = normalizeMutationInput(request.input, context, inspection.bindings);
|
|
306
|
+
const references = mutationReferences(providerInput);
|
|
307
|
+
if (references.length === 0) {
|
|
308
|
+
throw createComputerError('invalid_argument', 'Mutation requires a target selector');
|
|
309
|
+
}
|
|
310
|
+
for (const reference of references) {
|
|
311
|
+
assertFreshReference(reference, context, inspection.bindings, this.#now());
|
|
312
|
+
}
|
|
246
313
|
}
|
|
247
|
-
|
|
248
|
-
try {
|
|
314
|
+
const dispatchStarted = this.#now();
|
|
249
315
|
const providerResponse = await this.#supervisor.dispatch({
|
|
250
316
|
requestId,
|
|
251
317
|
operation: request.operation,
|
|
252
318
|
input: providerInput,
|
|
253
319
|
deadlineAt
|
|
254
320
|
});
|
|
321
|
+
dispatchMs = this.#now() - dispatchStarted;
|
|
322
|
+
dispatched = providerResponse.dispatched;
|
|
255
323
|
if (mutation) {
|
|
256
|
-
const dispatched = providerResponse.dispatched;
|
|
257
324
|
if (dispatched)
|
|
258
325
|
this.#desktopEpoch += 1;
|
|
259
|
-
const
|
|
326
|
+
const mutationResult = 'error' in providerResponse
|
|
260
327
|
? {
|
|
261
328
|
outcome: dispatched
|
|
262
329
|
? { state: 'indeterminate', reason: providerResponse.error.message }
|
|
@@ -265,45 +332,102 @@ export class LocalBroker {
|
|
|
265
332
|
: providerResponse.result;
|
|
266
333
|
const response = {
|
|
267
334
|
requestId,
|
|
268
|
-
result: this.#publicResult(request.operation,
|
|
335
|
+
result: this.#publicResult(request.operation, mutationResult),
|
|
269
336
|
desktopEpoch: this.#desktopEpoch,
|
|
270
337
|
providerGeneration: this.#supervisor.generation ?? 'unknown'
|
|
271
338
|
};
|
|
339
|
+
result = response.result;
|
|
272
340
|
await this.#publish?.(response);
|
|
273
341
|
return response;
|
|
274
342
|
}
|
|
275
|
-
|
|
343
|
+
if ('error' in providerResponse) {
|
|
344
|
+
// Why: observations have no outcome envelope, so surface the provider's
|
|
345
|
+
// coded error directly. Validating the absent result instead would mask
|
|
346
|
+
// app_not_found and friends as an opaque schema failure.
|
|
347
|
+
throw createComputerError(providerResponse.error.code, providerResponse.error.message, ...(providerResponse.error.details === undefined ? [] : [providerResponse.error.details]));
|
|
348
|
+
}
|
|
349
|
+
const response = this.#observationResponse(requestId, request.operation, providerResponse.result);
|
|
350
|
+
result = response.result;
|
|
351
|
+
return response;
|
|
276
352
|
}
|
|
277
|
-
catch (
|
|
278
|
-
|
|
279
|
-
|
|
353
|
+
catch (error) {
|
|
354
|
+
cause = error;
|
|
355
|
+
const failed = computerError(error);
|
|
356
|
+
if (!mutation && failed.code === 'provider_crashed') {
|
|
357
|
+
this.#emit({
|
|
358
|
+
kind: 'helper.crash',
|
|
359
|
+
...this.diagnosticEnvelope(),
|
|
360
|
+
requestId,
|
|
361
|
+
operation: request.operation,
|
|
362
|
+
error: diagnosticError(error)
|
|
363
|
+
});
|
|
364
|
+
const previousGeneration = this.#supervisor.generation;
|
|
280
365
|
await this.#supervisor.restart();
|
|
281
366
|
this.#contexts.invalidateAll();
|
|
367
|
+
this.#emit({
|
|
368
|
+
kind: 'helper.restart',
|
|
369
|
+
...this.diagnosticEnvelope(),
|
|
370
|
+
...(previousGeneration === undefined ? {} : { previousGeneration })
|
|
371
|
+
});
|
|
372
|
+
const retryStarted = this.#now();
|
|
282
373
|
const retry = await this.#supervisor.dispatch({
|
|
283
374
|
requestId: `${requestId}-retry`,
|
|
284
375
|
operation: request.operation,
|
|
285
376
|
input: request.input,
|
|
286
377
|
deadlineAt
|
|
287
378
|
});
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
379
|
+
dispatchMs += this.#now() - retryStarted;
|
|
380
|
+
if ('error' in retry) {
|
|
381
|
+
cause = createComputerError(retry.error.code, retry.error.message, retry.error.details);
|
|
382
|
+
throw cause;
|
|
383
|
+
}
|
|
384
|
+
dispatched = retry.dispatched;
|
|
385
|
+
const response = this.#observationResponse(requestId, request.operation, retry.result);
|
|
386
|
+
cause = undefined;
|
|
387
|
+
result = response.result;
|
|
388
|
+
return response;
|
|
291
389
|
}
|
|
292
|
-
if (mutation && (
|
|
390
|
+
if (mutation && (failed.code === 'provider_crashed' || failed.code === 'timeout')) {
|
|
391
|
+
if (failed.code === 'provider_crashed') {
|
|
392
|
+
this.#emit({
|
|
393
|
+
kind: 'helper.crash',
|
|
394
|
+
...this.diagnosticEnvelope(),
|
|
395
|
+
requestId,
|
|
396
|
+
operation: request.operation,
|
|
397
|
+
error: diagnosticError(error)
|
|
398
|
+
});
|
|
399
|
+
}
|
|
293
400
|
this.#desktopEpoch += 1;
|
|
294
401
|
this.#contexts.invalidateAll();
|
|
402
|
+
dispatched = true;
|
|
295
403
|
const response = {
|
|
296
404
|
requestId,
|
|
297
405
|
result: this.#publicResult(request.operation, {
|
|
298
|
-
outcome: { state: 'indeterminate', reason:
|
|
406
|
+
outcome: { state: 'indeterminate', reason: failed.message }
|
|
299
407
|
}),
|
|
300
408
|
desktopEpoch: this.#desktopEpoch,
|
|
301
409
|
providerGeneration: this.#supervisor.generation ?? 'unknown'
|
|
302
410
|
};
|
|
411
|
+
cause = undefined;
|
|
412
|
+
result = response.result;
|
|
303
413
|
await this.#publish?.(response);
|
|
304
414
|
return response;
|
|
305
415
|
}
|
|
306
|
-
throw
|
|
416
|
+
throw error;
|
|
417
|
+
}
|
|
418
|
+
finally {
|
|
419
|
+
this.#emitRequest({
|
|
420
|
+
request,
|
|
421
|
+
requestId,
|
|
422
|
+
enqueuedAt,
|
|
423
|
+
startedAt,
|
|
424
|
+
inspectMs,
|
|
425
|
+
dispatchMs,
|
|
426
|
+
bindings,
|
|
427
|
+
dispatched,
|
|
428
|
+
result,
|
|
429
|
+
cause
|
|
430
|
+
});
|
|
307
431
|
}
|
|
308
432
|
}
|
|
309
433
|
#observationResponse(requestId, operation, result) {
|
|
@@ -342,5 +466,28 @@ export class LocalBroker {
|
|
|
342
466
|
}
|
|
343
467
|
return parseOperationOutput(operation, publicResult);
|
|
344
468
|
}
|
|
469
|
+
#emit(record) {
|
|
470
|
+
emitDiagnostic(this.#diagnostics, record);
|
|
471
|
+
}
|
|
472
|
+
#emitRequest(entry) {
|
|
473
|
+
const target = diagnosticTarget(entry.request.input, entry.bindings);
|
|
474
|
+
this.#emit({
|
|
475
|
+
kind: 'request',
|
|
476
|
+
...this.diagnosticEnvelope(),
|
|
477
|
+
requestId: entry.requestId,
|
|
478
|
+
operation: entry.request.operation,
|
|
479
|
+
mutation: COMPUTER_OPERATIONS[entry.request.operation].mutation,
|
|
480
|
+
ms: {
|
|
481
|
+
queue: Math.max(0, entry.startedAt - entry.enqueuedAt),
|
|
482
|
+
inspect: entry.inspectMs,
|
|
483
|
+
dispatch: entry.dispatchMs,
|
|
484
|
+
total: Math.max(0, this.#now() - entry.enqueuedAt)
|
|
485
|
+
},
|
|
486
|
+
...(target === undefined ? {} : { target }),
|
|
487
|
+
result: entry.cause !== undefined
|
|
488
|
+
? { type: 'error', ...diagnosticError(entry.cause) }
|
|
489
|
+
: diagnosticRequestResult(entry.request.operation, entry.result, entry.dispatched)
|
|
490
|
+
});
|
|
491
|
+
}
|
|
345
492
|
}
|
|
346
493
|
//# sourceMappingURL=broker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EAMrB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,gBAAgB,EAA0B,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAyC/D,MAAM,WAAW;IACf,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAExC,KAAK,CAAC,GAAG,CAAI,IAAsB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;QAC3B,IAAI,OAAoB,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,GAAG,OAAO,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,MAAM,QAAQ,CAAA;QACd,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAA;QACrB,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;CACF;AAED,SAAS,UAAU,CAAC,SAAgC;IAClD,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAA;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAM;IACvD,MAAM,GAAG,GAAI,KAA2B,CAAC,GAAG,CAAA;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACjE,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAA;IAC9C,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzE,MAAM,MAAM,GAAG,SAAoC,CAAA;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,GAAsB,CAAA;IACnE,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAC7D,OAAO,MAAM,CAAC,MAAyB,CAAA;IACzC,IAAI,cAAc,IAAI,MAAM;QAAE,OAAO,MAAyB,CAAA;IAC9D,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,OAA2B,EAC3B,OAA0B,EAC1B,IAA6B,EAC7B,GAAW;IAEX,OAAO;QACL,GAAG,OAAO;QACV,IAAI;QACJ,GAAG;QACH,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CACtB,SAAkB,EAClB,OAA2B,EAC3B,OAA0B;IAE1B,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzE,MAAM,MAAM,GAAG,SAAoC,CAAA;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACzE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,MAAM,CAAC,YAAY,EAAE,CAAC;SAClF,CAAA;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;SACrE,CAAA;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAc,EACd,OAA2B,EAC3B,OAA0B;IAE1B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,OAAO;QACL,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;KACzF,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC1D,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;SAC3C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC1D,MAAM,CAAC,CAAC,SAAS,EAAgC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACjE,MAAM,KAAK,GAAI,KAAiC,CAAC,YAAY,CAAA;IAC7D,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAA;AAChD,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAA0B,EAC1B,OAA2B,EAC3B,OAA0B,EAC1B,GAAW;IAEX,MAAM,UAAU,GAAG;QACjB,CAAC,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC;QAC3D,CAAC,SAAS,CAAC,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;QACtF,CAAC,SAAS,CAAC,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;QAC5F,CAAC,SAAS,CAAC,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;QAChF,CAAC,SAAS,CAAC,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;QACtF,CAAC,SAAS,CAAC,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;QAC5F,CAAC,SAAS,CAAC,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;QAChF,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;QAC9D,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;QACpF,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC;QACvF,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;QAC9D,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;QACpF,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC;QACvF,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;QAClD,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;QAClD,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC;QAC7D,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;QAC/E,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC;QAC7D,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;QAC/E,CAAC,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACjE,CAAC,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACjE,CAAC,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,EAAE,uBAAuB,CAAC;QAC1E,CAAC,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,EAAE,uBAAuB,CAAC;QAC1E,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,sBAAsB,CAAC;QAC/D,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,oBAAoB,CAAC;KAC5D;SACE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,mBAAmB,CAAC,cAAc,EAAE,qCAAqC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IAClG,CAAC;AACH,CAAC;AAED,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,OAAO,CAAC,OAAsB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACb,UAAU,CAAQ;IAClB,SAAS,CAAY;IACrB,WAAW,CAAoB;IAC/B,SAAS,CAAyB;IAClC,cAAc,CAAqC;IACnD,QAAQ,CAA+B;IACvC,IAAI,CAAc;IAClB,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;IACnC,aAAa,GAAG,CAAC,CAAA;IACjB,gBAAgB,GAAG,CAAC,CAAA;IAEpB,YAAY,OAA2B;QACrC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,UAAU,EAAE,EAAE,CAAA;QAChE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,CAAC;YAC3C,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;YAC9E,GAAG,EAAE,IAAI,CAAC,IAAI;SACf,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC;YACxC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;SACxD,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAGb;QACC,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,mBAAmB,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAAA;QAC/F,CAAC;QACD,IACE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU;YAC7C,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAC7D,CAAC;YACD,MAAM,mBAAmB,CACvB,qBAAqB,EACrB,qEAAqE,CACtE,CAAA;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,QAAQ,CAAC,KAAK,CAAA;QACtC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAC9B,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,YAAY,CAAC,QAA2B;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC1B,GAAG,QAAQ;YACX,gBAAgB,EAAE,IAAI,CAAC,UAAU;YACjC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,CAAC,kBAAkB;YAC9E,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;YACrD,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAA;IACJ,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,CAAC,OAAsB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAsB;QACzC,MAAM,SAAS,GAAG,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,CAAA;QAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC9C,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,OAAuC,CAAA;QAC3C,IAAI,eAAe,GAAG,OAAO,CAAC,KAAK,CAAA;QACnC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,mBAAmB,CACvB,kBAAkB,EAClB,8CAA8C,CAC/C,CAAA;YACH,CAAC;YACD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACvC,wEAAwE;YACxE,oEAAoE;YACpE,uDAAuD;YACvD,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;QAClF,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI;YAAE,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QAE7F,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,CAAA;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,mBAAmB,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAA;YACvF,CAAC;YACD,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;YACpF,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAA;YACpD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,mBAAmB,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,CAAA;YACtF,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,oBAAoB,CAAC,SAAS,EAAE,OAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7E,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACvD,SAAS;gBACT,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,KAAK,EAAE,aAAa;gBACpB,UAAU;aACX,CAAC,CAAA;YACF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAA;gBAC9C,IAAI,UAAU;oBAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;gBACvC,MAAM,MAAM,GACV,OAAO,IAAI,gBAAgB;oBACzB,CAAC,CAAC;wBACE,OAAO,EAAE,UAAU;4BACjB,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE;4BACpE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE;qBAC9D;oBACH,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAA;gBAC7B,MAAM,QAAQ,GAAG;oBACf,SAAS;oBACT,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;oBACrD,YAAY,EAAE,IAAI,CAAC,aAAa;oBAChC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,SAAS;iBAC7D,CAAA;gBACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAC/B,OAAO,QAAQ,CAAA;YACjB,CAAC;YACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACnD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;gBAChC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAA;gBAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;oBAC5C,SAAS,EAAE,GAAG,SAAS,QAAQ;oBAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,UAAU;iBACX,CAAC,CAAA;gBACF,IAAI,OAAO,IAAI,KAAK;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;gBACtF,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBAChF,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;gBACvB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAA;gBAC9B,MAAM,QAAQ,GAAG;oBACf,SAAS;oBACT,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE;wBAC5C,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE;qBAC3D,CAAC;oBACF,YAAY,EAAE,IAAI,CAAC,aAAa;oBAChC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,SAAS;iBAC7D,CAAA;gBACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAC/B,OAAO,QAAQ,CAAA;YACjB,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,oBAAoB,CAClB,SAAiB,EACjB,SAAgC,EAChC,MAAe;QAEf,IAAI,OAAuC,CAAA;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,YAAY,KAAK,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,SAAS,IAAI,YAAY;YACxF,OAAO,GAAI,YAAgD,CAAC,OAAO,CAAA;QACrE,OAAO;YACL,SAAS;YACT,MAAM,EAAE,YAAY;YACpB,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,SAAS;YAC5D,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC9C,CAAA;IACH,CAAC;IAED,aAAa,CAAC,SAAgC,EAAE,MAAe;QAC7D,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;YAC/C,OAAO,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,MAAiC,CAAA;QAC/C,IAAI,YAAY,GAA4B,KAAK,CAAA;QACjD,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAA;YACvC,YAAY,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,QAA6B,CAAC,EAAE,CAAA;QAC3F,CAAC;aAAM,IACL,KAAK,CAAC,UAAU,KAAK,IAAI;YACzB,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;YACpC,UAAU,IAAI,KAAK,CAAC,UAAU,EAC9B,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,UAAqC,CAAA;YAC/E,YAAY,GAAG;gBACb,GAAG,KAAK;gBACR,UAAU,EAAE;oBACV,GAAG,UAAU;oBACb,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,QAA6B,CAAC;iBAC1D;aACF,CAAA;QACH,CAAC;QACD,OAAO,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACtD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/diagnostics/paths.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAClC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACpE,MAAM,CAqBR"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { graphicalSessionKey } from '../ipc/endpoint.js';
|
|
4
|
+
export function diagnosticsDirectory(graphicalSessionId, options = {}) {
|
|
5
|
+
const env = options.env ?? process.env;
|
|
6
|
+
const override = env.CROSSHANDS_DIAGNOSTICS_DIR;
|
|
7
|
+
if (typeof override === 'string' && override.length > 0)
|
|
8
|
+
return override;
|
|
9
|
+
const sessionKey = graphicalSessionKey(graphicalSessionId);
|
|
10
|
+
const platform = options.platform ?? process.platform;
|
|
11
|
+
if (platform === 'darwin') {
|
|
12
|
+
return join(homedir(), 'Library', 'Logs', 'CrossHands', sessionKey);
|
|
13
|
+
}
|
|
14
|
+
if (platform === 'linux') {
|
|
15
|
+
const stateHome = typeof env.XDG_STATE_HOME === 'string' && env.XDG_STATE_HOME.length > 0
|
|
16
|
+
? env.XDG_STATE_HOME
|
|
17
|
+
: join(homedir(), '.local', 'state');
|
|
18
|
+
return join(stateHome, 'crosshands', sessionKey);
|
|
19
|
+
}
|
|
20
|
+
const localAppData = typeof env.LOCALAPPDATA === 'string' && env.LOCALAPPDATA.length > 0
|
|
21
|
+
? env.LOCALAPPDATA
|
|
22
|
+
: join(homedir(), 'AppData', 'Local');
|
|
23
|
+
return join(localAppData, 'CrossHands', 'logs', sessionKey);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/diagnostics/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,UAAU,oBAAoB,CAClC,kBAA0B,EAC1B,UAAmE,EAAE;IAErE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,0BAA0B,CAAA;IAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAA;IACxE,MAAM,UAAU,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;IACrD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IACrE,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,SAAS,GACb,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YACrE,CAAC,CAAC,GAAG,CAAC,cAAc;YACpB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QACxC,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,YAAY,GAChB,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QACjE,CAAC,CAAC,GAAG,CAAC,YAAY;QAClB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACzC,OAAO,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type ComputerOperationName, type ReferenceBindings } from '@crosshands/contract';
|
|
2
|
+
export declare const DIAGNOSTIC_RECORD_VERSION: 1;
|
|
3
|
+
export type DiagnosticPlatform = 'darwin' | 'win32' | 'linux';
|
|
4
|
+
export type DiagnosticError = {
|
|
5
|
+
code: string;
|
|
6
|
+
message: string;
|
|
7
|
+
retry: boolean;
|
|
8
|
+
remediation: string;
|
|
9
|
+
details?: Record<string, string | number | boolean | string[]>;
|
|
10
|
+
};
|
|
11
|
+
export type DiagnosticTarget = {
|
|
12
|
+
appId: string;
|
|
13
|
+
pid?: number;
|
|
14
|
+
windowId?: string;
|
|
15
|
+
snapshotId?: string;
|
|
16
|
+
kind?: string;
|
|
17
|
+
ref?: string;
|
|
18
|
+
};
|
|
19
|
+
export type DiagnosticTimings = {
|
|
20
|
+
queue: number;
|
|
21
|
+
inspect: number;
|
|
22
|
+
dispatch: number;
|
|
23
|
+
total: number;
|
|
24
|
+
};
|
|
25
|
+
export type DiagnosticRequestResult = {
|
|
26
|
+
type: 'mutation';
|
|
27
|
+
dispatched: boolean;
|
|
28
|
+
outcome: {
|
|
29
|
+
state: string;
|
|
30
|
+
reason?: string;
|
|
31
|
+
};
|
|
32
|
+
} | {
|
|
33
|
+
type: 'observation';
|
|
34
|
+
snapshotId?: string;
|
|
35
|
+
elementCount?: number;
|
|
36
|
+
focusedElementRef?: string | null;
|
|
37
|
+
screenshot: boolean;
|
|
38
|
+
issues: Array<{
|
|
39
|
+
code: string;
|
|
40
|
+
retry: boolean;
|
|
41
|
+
remediation: string;
|
|
42
|
+
message?: string;
|
|
43
|
+
}>;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'lookup';
|
|
46
|
+
appCount?: number;
|
|
47
|
+
windowCount?: number;
|
|
48
|
+
permissions?: Record<string, string>;
|
|
49
|
+
} | ({
|
|
50
|
+
type: 'error';
|
|
51
|
+
} & DiagnosticError);
|
|
52
|
+
export type DiagnosticEnvelope = {
|
|
53
|
+
v: typeof DIAGNOSTIC_RECORD_VERSION;
|
|
54
|
+
ts: string;
|
|
55
|
+
session: string;
|
|
56
|
+
brokerGeneration: string;
|
|
57
|
+
providerGeneration?: string;
|
|
58
|
+
desktopEpoch: number;
|
|
59
|
+
platform: DiagnosticPlatform;
|
|
60
|
+
};
|
|
61
|
+
export type DiagnosticRecord = (DiagnosticEnvelope & {
|
|
62
|
+
kind: 'broker.start';
|
|
63
|
+
}) | (DiagnosticEnvelope & {
|
|
64
|
+
kind: 'broker.stop';
|
|
65
|
+
reason: string;
|
|
66
|
+
}) | (DiagnosticEnvelope & {
|
|
67
|
+
kind: 'helper.start';
|
|
68
|
+
}) | (DiagnosticEnvelope & {
|
|
69
|
+
kind: 'helper.crash';
|
|
70
|
+
requestId?: string;
|
|
71
|
+
operation?: string;
|
|
72
|
+
error: DiagnosticError;
|
|
73
|
+
}) | (DiagnosticEnvelope & {
|
|
74
|
+
kind: 'helper.restart';
|
|
75
|
+
previousGeneration?: string;
|
|
76
|
+
}) | (DiagnosticEnvelope & {
|
|
77
|
+
kind: 'client.handshake';
|
|
78
|
+
accepted: boolean;
|
|
79
|
+
requestId: string;
|
|
80
|
+
code?: string;
|
|
81
|
+
}) | (DiagnosticEnvelope & {
|
|
82
|
+
kind: 'request';
|
|
83
|
+
requestId: string;
|
|
84
|
+
operation: string;
|
|
85
|
+
mutation: boolean;
|
|
86
|
+
ms: DiagnosticTimings;
|
|
87
|
+
target?: DiagnosticTarget;
|
|
88
|
+
result: DiagnosticRequestResult;
|
|
89
|
+
});
|
|
90
|
+
export type DiagnosticsSink = {
|
|
91
|
+
emit(record: DiagnosticRecord): void;
|
|
92
|
+
close(): Promise<void>;
|
|
93
|
+
};
|
|
94
|
+
export declare function diagnosticPlatform(platform?: NodeJS.Platform): DiagnosticPlatform;
|
|
95
|
+
export declare function emitDiagnostic(sink: DiagnosticsSink | undefined, record: DiagnosticRecord): void;
|
|
96
|
+
export declare function diagnosticError(cause: unknown): DiagnosticError;
|
|
97
|
+
export declare function diagnosticTarget(input: unknown, bindings: ReferenceBindings | undefined): DiagnosticTarget | undefined;
|
|
98
|
+
export declare function diagnosticRequestResult(operation: ComputerOperationName, result: unknown, dispatched: boolean | undefined): DiagnosticRequestResult;
|
|
99
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/diagnostics/record.ts"],"names":[],"mappings":"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"}
|