@crosshands/runtime 0.1.5 → 0.2.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.
Files changed (41) hide show
  1. package/dist/broker/broker.d.ts +4 -0
  2. package/dist/broker/broker.d.ts.map +1 -1
  3. package/dist/broker/broker.js +194 -47
  4. package/dist/broker/broker.js.map +1 -1
  5. package/dist/diagnostics/paths.d.ts +5 -0
  6. package/dist/diagnostics/paths.d.ts.map +1 -0
  7. package/dist/diagnostics/paths.js +25 -0
  8. package/dist/diagnostics/paths.js.map +1 -0
  9. package/dist/diagnostics/record.d.ts +99 -0
  10. package/dist/diagnostics/record.d.ts.map +1 -0
  11. package/dist/diagnostics/record.js +154 -0
  12. package/dist/diagnostics/record.js.map +1 -0
  13. package/dist/diagnostics/writer.d.ts +27 -0
  14. package/dist/diagnostics/writer.d.ts.map +1 -0
  15. package/dist/diagnostics/writer.js +95 -0
  16. package/dist/diagnostics/writer.js.map +1 -0
  17. package/dist/index.d.ts +4 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/ipc/control-transport.d.ts +6 -0
  22. package/dist/ipc/control-transport.d.ts.map +1 -1
  23. package/dist/ipc/control-transport.js +13 -1
  24. package/dist/ipc/control-transport.js.map +1 -1
  25. package/dist/ipc/endpoint.d.ts +1 -0
  26. package/dist/ipc/endpoint.d.ts.map +1 -1
  27. package/dist/ipc/endpoint.js +3 -0
  28. package/dist/ipc/endpoint.js.map +1 -1
  29. package/dist/private-directory.d.ts +2 -0
  30. package/dist/private-directory.d.ts.map +1 -0
  31. package/dist/private-directory.js +15 -0
  32. package/dist/private-directory.js.map +1 -0
  33. package/package.json +2 -2
  34. package/src/broker/broker.ts +233 -50
  35. package/src/diagnostics/paths.ts +30 -0
  36. package/src/diagnostics/record.ts +262 -0
  37. package/src/diagnostics/writer.ts +112 -0
  38. package/src/index.ts +4 -0
  39. package/src/ipc/control-transport.ts +20 -1
  40. package/src/ipc/endpoint.ts +4 -0
  41. package/src/private-directory.ts +14 -0
@@ -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;AAiKD,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;gBAWf,OAAO,EAAE,kBAAkB;IAgBvC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEK,OAAO,CAAC,SAAS,EAAE;QACvB,IAAI,EAAE,UAAU,CAAA;QAChB,QAAQ,EAAE,gBAAgB,CAAA;KAC3B,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBzB,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;CAiJzD"}
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"}
@@ -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
- return this.#queue.run(() => this.#requestLocked(request));
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 = isMutation(request.operation);
217
- assertedInputApp(request.input);
218
- let context;
219
- let inspectionInput = request.input;
220
- if (mutation) {
221
- const token = contextToken(request.input);
222
- if (token === undefined) {
223
- throw createComputerError('invalid_argument', 'Mutation requires a context token and target');
224
- }
225
- context = this.#contexts.resolve(token);
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
- const inspection = await this.#inspectTarget?.(request.operation, inspectionInput);
232
- if (inspection !== undefined && inspection !== null)
233
- assertAppAllowed(inspection.appIdentity);
234
- let providerInput = request.input;
235
- if (mutation) {
236
- if (inspection === undefined || inspection === null) {
237
- throw createComputerError('stale_target', 'Target identity could not be re-resolved');
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
- providerInput = normalizeMutationInput(request.input, context, inspection.bindings);
240
- const references = mutationReferences(providerInput);
241
- if (references.length === 0) {
242
- throw createComputerError('invalid_argument', 'Mutation requires a target selector');
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
- for (const reference of references) {
245
- assertFreshReference(reference, context, inspection.bindings, this.#now());
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 result = 'error' in providerResponse
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, result),
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
- return this.#observationResponse(requestId, request.operation, providerResponse.result);
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 (cause) {
278
- const error = computerError(cause);
279
- if (!mutation && error.code === 'provider_crashed') {
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
- if ('error' in retry)
289
- throw Object.assign(new Error(retry.error.message), retry.error);
290
- return this.#observationResponse(requestId, request.operation, retry.result);
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 && (error.code === 'provider_crashed' || error.code === 'timeout')) {
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: error.message }
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 cause;
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":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function diagnosticsDirectory(graphicalSessionId: string, options?: {
2
+ platform?: NodeJS.Platform;
3
+ env?: NodeJS.ProcessEnv;
4
+ }): string;
5
+ //# sourceMappingURL=paths.d.ts.map
@@ -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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"}