instar 1.3.1597 → 1.3.1599

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 (96) hide show
  1. package/dashboard/desktop.css +8 -0
  2. package/dashboard/desktop.html +10 -0
  3. package/dashboard/desktop.js +98 -1
  4. package/dist/core/DesktopAccessAudit.d.ts +3 -1
  5. package/dist/core/DesktopAccessAudit.d.ts.map +1 -1
  6. package/dist/core/DesktopAccessAudit.js +1 -0
  7. package/dist/core/DesktopAccessAudit.js.map +1 -1
  8. package/dist/core/DesktopAead.d.ts +8 -1
  9. package/dist/core/DesktopAead.d.ts.map +1 -1
  10. package/dist/core/DesktopAead.js +18 -1
  11. package/dist/core/DesktopAead.js.map +1 -1
  12. package/dist/core/DesktopHelperRetention.d.ts +5 -1
  13. package/dist/core/DesktopHelperRetention.d.ts.map +1 -1
  14. package/dist/core/DesktopHelperRetention.js.map +1 -1
  15. package/dist/core/DesktopHost.d.ts +26 -1
  16. package/dist/core/DesktopHost.d.ts.map +1 -1
  17. package/dist/core/DesktopHost.js.map +1 -1
  18. package/dist/core/DesktopLockState.d.ts +38 -0
  19. package/dist/core/DesktopLockState.d.ts.map +1 -0
  20. package/dist/core/DesktopLockState.js +43 -0
  21. package/dist/core/DesktopLockState.js.map +1 -0
  22. package/dist/core/DesktopLockedController.d.ts +138 -0
  23. package/dist/core/DesktopLockedController.d.ts.map +1 -0
  24. package/dist/core/DesktopLockedController.js +442 -0
  25. package/dist/core/DesktopLockedController.js.map +1 -0
  26. package/dist/core/DesktopOperatorAssertion.d.ts +39 -0
  27. package/dist/core/DesktopOperatorAssertion.d.ts.map +1 -1
  28. package/dist/core/DesktopOperatorAssertion.js +49 -0
  29. package/dist/core/DesktopOperatorAssertion.js.map +1 -1
  30. package/dist/core/DesktopProbeReadiness.d.ts.map +1 -1
  31. package/dist/core/DesktopProbeReadiness.js +4 -1
  32. package/dist/core/DesktopProbeReadiness.js.map +1 -1
  33. package/dist/core/DesktopProvenVersions.d.ts +19 -0
  34. package/dist/core/DesktopProvenVersions.d.ts.map +1 -0
  35. package/dist/core/DesktopProvenVersions.js +8 -0
  36. package/dist/core/DesktopProvenVersions.js.map +1 -0
  37. package/dist/core/DirectDesktopAccess.d.ts +20 -1
  38. package/dist/core/DirectDesktopAccess.d.ts.map +1 -1
  39. package/dist/core/DirectDesktopAccess.js +263 -10
  40. package/dist/core/DirectDesktopAccess.js.map +1 -1
  41. package/dist/core/MacDesktopHost.d.ts +36 -1
  42. package/dist/core/MacDesktopHost.d.ts.map +1 -1
  43. package/dist/core/MacDesktopHost.js +132 -38
  44. package/dist/core/MacDesktopHost.js.map +1 -1
  45. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  46. package/dist/core/WriteDomainRegistry.js +8 -0
  47. package/dist/core/WriteDomainRegistry.js.map +1 -1
  48. package/dist/core/types.d.ts +6 -0
  49. package/dist/core/types.d.ts.map +1 -1
  50. package/dist/core/types.js.map +1 -1
  51. package/dist/data/standards-guard-index.json +1 -1
  52. package/dist/data/standards-guard-index.meta.json +2 -2
  53. package/dist/data/standards-registry.meta.json +1 -1
  54. package/dist/native/instar-desktop-host +0 -0
  55. package/dist/native/instar-desktop-host.json +1 -1
  56. package/dist/scaffold/templates.d.ts.map +1 -1
  57. package/dist/scaffold/templates.js +1 -1
  58. package/dist/scaffold/templates.js.map +1 -1
  59. package/dist/server/AgentServer.d.ts +4 -0
  60. package/dist/server/AgentServer.d.ts.map +1 -1
  61. package/dist/server/AgentServer.js +117 -4
  62. package/dist/server/AgentServer.js.map +1 -1
  63. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  64. package/dist/server/CapabilityIndex.js +2 -1
  65. package/dist/server/CapabilityIndex.js.map +1 -1
  66. package/dist/server/DesktopMeshBroker.d.ts +6 -0
  67. package/dist/server/DesktopMeshBroker.d.ts.map +1 -1
  68. package/dist/server/DesktopMeshBroker.js +17 -1
  69. package/dist/server/DesktopMeshBroker.js.map +1 -1
  70. package/dist/server/DesktopStreamManager.d.ts +11 -3
  71. package/dist/server/DesktopStreamManager.d.ts.map +1 -1
  72. package/dist/server/DesktopStreamManager.js +24 -1
  73. package/dist/server/DesktopStreamManager.js.map +1 -1
  74. package/dist/server/machineRoutes.d.ts +1 -0
  75. package/dist/server/machineRoutes.d.ts.map +1 -1
  76. package/dist/server/machineRoutes.js +14 -0
  77. package/dist/server/machineRoutes.js.map +1 -1
  78. package/dist/server/routes.d.ts +9 -0
  79. package/dist/server/routes.d.ts.map +1 -1
  80. package/dist/server/routes.js +99 -0
  81. package/dist/server/routes.js.map +1 -1
  82. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  83. package/dist/testing/selfActionRegistry.js +58 -0
  84. package/dist/testing/selfActionRegistry.js.map +1 -1
  85. package/package.json +1 -1
  86. package/scripts/build-native-desktop-host.mjs +4 -2
  87. package/src/data/builtin-manifest.json +48 -48
  88. package/src/data/standards-guard-index.json +1 -1
  89. package/src/data/standards-guard-index.meta.json +2 -2
  90. package/src/data/standards-registry.meta.json +1 -1
  91. package/src/scaffold/templates.ts +1 -1
  92. package/upgrades/1.3.1598.md +24 -0
  93. package/upgrades/1.3.1599.md +20 -0
  94. package/upgrades/eli16/kept-helper-both-permissions.md +25 -0
  95. package/upgrades/side-effects/desktop-locked-screen.md +129 -0
  96. package/upgrades/side-effects/kept-helper-both-permissions.md +38 -0
@@ -41,3 +41,11 @@ body.desktop-live #localCursor{display:block}
41
41
  .setup-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
42
42
  .setup-note:empty { display: none; }
43
43
  .setup-quiet { background: none; border: none; color: inherit; opacity: 0.7; text-decoration: underline; }
44
+
45
+ #lockedPassword{position:absolute;z-index:8;left:max(.5rem,env(safe-area-inset-left));right:max(.5rem,env(safe-area-inset-right));top:max(.5rem,env(safe-area-inset-top));display:grid;gap:.4rem;padding:.6rem;background:#111827f2;border:1px solid #64748b;border-radius:10px;color:#f1f5f9}
46
+ #lockedPassword[hidden],#leaveUnlockedButton[hidden]{display:none}
47
+ #lockedPassword input{width:100%;font-size:16px;padding:.55rem}
48
+ #lockedPassword p{margin:0;font-size:.8rem}
49
+ #leaveUnlockedButton{position:absolute;z-index:8;right:max(.5rem,env(safe-area-inset-right));bottom:4rem;padding:.55rem .8rem}
50
+ #lockedCard{margin-top:.8rem}
51
+ #lockedCard[hidden]{display:none}
@@ -19,6 +19,10 @@
19
19
  <label>Machine <select id="machine"></select></label>
20
20
  <button id="requestButton">Open selected machine</button>
21
21
  <ul id="machineNotes" class="machine-notes" aria-label="Machines that are not ready"></ul>
22
+ <div id="lockedCard" hidden>
23
+ <p id="lockedCardText"></p>
24
+ <button id="lockedToggle" type="button" hidden></button>
25
+ </div>
22
26
  </section>
23
27
  <section id="setup" hidden>
24
28
  <h2>Machines</h2>
@@ -86,6 +90,12 @@
86
90
  <button data-remote-key="F11" type="button">F11</button>
87
91
  <button data-remote-key="F12" type="button">F12</button>
88
92
  </div>
93
+ <form id="lockedPassword" hidden>
94
+ <label>Mac password <input id="lockedPasswordInput" type="password" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" maxlength="256"></label>
95
+ <button type="submit">Unlock</button>
96
+ <p>The machine serving this page and the tunnel provider can read what you type here. The Instar app is safer.</p>
97
+ </form>
98
+ <button id="leaveUnlockedButton" type="button" hidden>Leave unlocked</button>
89
99
  <div id="keyboardBar" hidden>
90
100
  <label class="type-label" for="typeText">Type on remote desktop</label>
91
101
  <input id="typeText" maxlength="64" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" enterkeyhint="done">
@@ -251,7 +251,7 @@ const base64ToBytes = text => Uint8Array.from(atob(text), character => character
251
251
  function recordIv(direction, sequence) {
252
252
  const iv = new Uint8Array(12);
253
253
  const view = new DataView(iv.buffer);
254
- view.setUint32(0, direction === 'frame' ? 1 : 2);
254
+ view.setUint32(0, { frame: 1, input: 2, control: 3 }[direction]);
255
255
  view.setBigUint64(4, sequence);
256
256
  return iv;
257
257
  }
@@ -410,11 +410,65 @@ function receiveH264(bytes, epoch) {
410
410
  timestamp, data }));
411
411
  needsVideoKeyframe = false;
412
412
  }
413
+ const CONTROL_MARKER = 0xc7;
414
+ let controlSequence = 0n;
415
+ let lockedSealKey = '';
416
+ let lockedScreenState = '';
417
+ let lockedBoxAllowed = false;
418
+ let secretSequence = 0;
419
+ function syncLockedPassword() {
420
+ const show = lockedBoxAllowed && lockedScreenState === 'locked-in-session' && !!lockedSealKey;
421
+ $('lockedPassword').hidden = !show;
422
+ if (!show) $('lockedPasswordInput').value = '';
423
+ }
424
+ function lockedMessage(reason) {
425
+ return { 'relock-pending': 'This Mac is finishing a relock. Try again in a couple of minutes.',
426
+ 'attempts-per-request': 'Too many tries in this session.', 'attempts-per-day': 'Too many tries today.',
427
+ 'seal-stale': 'The connection changed. Type your password again.',
428
+ aborted: 'Stopped before the password finished. Type it again.',
429
+ 'field-dirty': 'Clearing the password field. Try again in a moment.',
430
+ 'browser-box-off': 'Password entry from a browser is off for this Mac.',
431
+ 'tunnel-not-first-tier': 'Password entry is off while the backup connection is in use.' }[reason]
432
+ ?? 'This Mac did not accept that. Try again.';
433
+ }
434
+ async function receiveControl(record) {
435
+ const view = new DataView(record.buffer, record.byteOffset, record.byteLength);
436
+ const sequence = view.getBigUint64(0) & 0x00ff_ffff_ffff_ffffn;
437
+ if (sequence <= controlSequence) throw new Error('Remote control record invalid.');
438
+ const plain = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: recordIv('control', sequence),
439
+ additionalData: recordAad('control') }, aesKey, record.subarray(8));
440
+ controlSequence = sequence;
441
+ const value = JSON.parse(new TextDecoder().decode(plain));
442
+ if (value.type === 'seal') lockedSealKey = value.key;
443
+ if (value.type === 'state') { lockedScreenState = value.state; lockedBoxAllowed = value.box === true; }
444
+ if (value.type === 'secret-result' && value.refused) status(lockedMessage(value.refused));
445
+ if (value.type === 'secret-result' && value.sent) { $('leaveUnlockedButton').hidden = false; }
446
+ if (value.type === 'relock') status(value.phase === 'left-unlocked' ? 'This Mac will stay unlocked.' : 'Relocking has begun.');
447
+ syncLockedPassword();
448
+ }
449
+ /** Sealed for the helper alone: Node and the front carry bytes they cannot read. */
450
+ async function sendLockedPassword(text) {
451
+ const helperKey = lockedSealKey;
452
+ const pair = await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits']);
453
+ const helper = await crypto.subtle.importKey('raw', base64ToBytes(helperKey), { name: 'ECDH', namedCurve: 'P-256' }, false, []);
454
+ const bits = await crypto.subtle.deriveBits({ name: 'ECDH', public: helper }, pair.privateKey, 256);
455
+ const hkdf = await crypto.subtle.importKey('raw', bits, 'HKDF', false, ['deriveKey']);
456
+ const key = await crypto.subtle.deriveKey({ name: 'HKDF', hash: 'SHA-256', salt: new Uint8Array(0),
457
+ info: encoder.encode(`instar-desktop-secret-v1:${requestId}:${helperKey}`) }, hkdf,
458
+ { name: 'AES-GCM', length: 256 }, false, ['encrypt']);
459
+ const seq = ++secretSequence;
460
+ const iv = crypto.getRandomValues(new Uint8Array(12));
461
+ const ct = await crypto.subtle.encrypt({ name: 'AES-GCM', iv,
462
+ additionalData: encoder.encode(JSON.stringify(['instar-desktop-secret-v1', requestId, seq])) }, key, encoder.encode(text));
463
+ const ephemeral = await crypto.subtle.exportKey('raw', pair.publicKey);
464
+ return sendCommand({ type: 'secret', secret: { ephemeral: bytesToBase64(ephemeral), iv: bytesToBase64(iv), ct: bytesToBase64(ct), seq } });
465
+ }
413
466
  async function receiveFrame(recordBuffer, epoch) {
414
467
  if (!inputEnabled || epoch !== streamEpoch) return;
415
468
  if (!aesKey || !(recordBuffer instanceof ArrayBuffer) || recordBuffer.byteLength < 28
416
469
  || recordBuffer.byteLength > 1_600_000) throw new Error('Encrypted frame invalid.');
417
470
  const record = new Uint8Array(recordBuffer);
471
+ if (record[0] === CONTROL_MARKER) { await receiveControl(record); return; }
418
472
  const sequence = new DataView(recordBuffer).getBigUint64(0);
419
473
  // The target may drop an already-encrypted frame under backpressure. A
420
474
  // strictly increasing nonce still rejects replay/reordering without treating
@@ -699,6 +753,7 @@ async function loadTargetsAndMaybeOpen({ open = true } = {}) {
699
753
  const trustedKey = typeof target.targetSigningPublicKey === 'string'
700
754
  ? target.targetSigningPublicKey : '';
701
755
  option.disabled = !target.ready || !trustedKey;
756
+ setTimeout(() => { void refreshLockedCard(); }, 0);
702
757
  option.textContent = option.disabled
703
758
  ? `${target.label} — ${target.unavailableReason || 'Unavailable right now'}`
704
759
  : target.label;
@@ -817,6 +872,8 @@ async function requestDesktop() {
817
872
  browserEcdhPublicKey: bytesToBase64(ecdhPublicKey),
818
873
  browserNonce: crypto.randomUUID().replaceAll('-', ''),
819
874
  videoCodec,
875
+ client: 'browser',
876
+ controlRecords: true,
820
877
  });
821
878
  requestId = result.requestId;
822
879
  const approved = await api(`/desktop/requests/${encodeURIComponent(requestId)}`);
@@ -875,6 +932,10 @@ async function openStream(result, resume = null) {
875
932
  sendChain = Promise.resolve();
876
933
  receiveChain = Promise.resolve();
877
934
  socket.binaryType = 'arraybuffer';
935
+ controlSequence = 0n;
936
+ lockedSealKey = '';
937
+ secretSequence = 0;
938
+ syncLockedPassword();
878
939
  return new Promise((resolve, reject) => {
879
940
  let opened = false;
880
941
  let settled = false;
@@ -930,8 +991,17 @@ async function openStream(result, resume = null) {
930
991
  });
931
992
  }
932
993
 
994
+ const LOCK_SCREEN_KEYS = new Set(['Enter', 'Tab', 'Escape', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']);
995
+ /** A password typed at the shield must never leave as plain input. The helper
996
+ * also refuses it, but only this stops it reaching the server at all. */
997
+ function refusedAtLock(action) {
998
+ if (!['locked-in-session', 'locked-by-policy', 'screensaver-or-sleep', 'unknown'].includes(lockedScreenState)) return false;
999
+ if (action.kind === 'type') return true;
1000
+ return action.kind === 'keyDown' && !LOCK_SCREEN_KEYS.has(action.key);
1001
+ }
933
1002
  function send(action) {
934
1003
  if (!inputEnabled) return Promise.resolve(false);
1004
+ if (refusedAtLock(action)) return Promise.resolve(true);
935
1005
  if (screenSwitch && Date.now() - screenSwitch.at >= SCREEN_SWITCH_LIMIT_MS) screenSwitch = null;
936
1006
  if (screenSwitch && ['click', 'buttonDown', 'move'].includes(action.kind)) return Promise.resolve(false);
937
1007
  return sendCommand({ type: 'input', action });
@@ -1559,6 +1629,33 @@ $('stopButton').addEventListener('click', async () => {
1559
1629
  catch { message = 'The viewer closed, but the target has not confirmed revocation. Access expires automatically.'; }
1560
1630
  leave(message);
1561
1631
  });
1632
+ $('lockedPassword')?.addEventListener('submit', event => {
1633
+ event.preventDefault();
1634
+ const input = $('lockedPasswordInput');
1635
+ const text = input.value;
1636
+ input.value = '';
1637
+ if (text) void sendLockedPassword(text);
1638
+ });
1639
+ const LOCKED_REASONS = { 'unsupported-macos': 'Not available yet: this Mac\u2019s macOS has not passed the crash and Stop tests.' };
1640
+ async function refreshLockedCard() {
1641
+ let rows;
1642
+ try { rows = (await api('/desktop/locked/status?scope=pool')).machines; }
1643
+ catch { $('lockedCard').hidden = true; return; }
1644
+ const row = rows?.find(item => item.machineId === $('machine').value);
1645
+ if (!row) { $('lockedCard').hidden = true; return; }
1646
+ $('lockedCard').hidden = !row.enabled && !!row.refusal;
1647
+ $('lockedCardText').textContent = row.refusal ? LOCKED_REASONS[row.refusal] ?? 'Opening this Mac at its lock screen is unavailable.'
1648
+ : row.enabled ? 'You can open this Mac at its lock screen. It relocks when you finish.' : 'Opening this Mac at its lock screen is off.';
1649
+ $('lockedToggle').hidden = !!row.refusal;
1650
+ $('lockedToggle').textContent = row.enabled ? 'Turn off' : 'Turn on';
1651
+ $('lockedToggle').onclick = async () => {
1652
+ try { await api('/desktop/locked/settings', 'POST', { machineId: row.machineId, enabled: !row.enabled }); }
1653
+ catch (error) { status(error.message); }
1654
+ void refreshLockedCard();
1655
+ };
1656
+ }
1657
+ $('machine')?.addEventListener('change', () => { void refreshLockedCard(); });
1658
+ $('leaveUnlockedButton')?.addEventListener('click', () => { void sendCommand({ type: 'leave-unlocked' }); });
1562
1659
  window.addEventListener('beforeunload', () => {
1563
1660
  stopping = true;
1564
1661
  sendCommand({ type: 'stop' });
@@ -1,10 +1,12 @@
1
1
  export interface DesktopAuditEvent {
2
- kind: 'start' | 'stop';
2
+ kind: 'start' | 'stop' | 'leave-unlocked';
3
3
  grantId: string;
4
4
  machineId: string;
5
5
  operatorUid: string;
6
6
  authMethod?: 'pin' | 'telegram';
7
7
  inputBucket?: 'none' | '1-9' | '10-99' | '100+';
8
+ /** leave-unlocked only: true when the tap beat the relock guard. */
9
+ acknowledged?: boolean;
8
10
  }
9
11
  export declare class DesktopAccessAudit {
10
12
  private readonly dir;
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopAccessAudit.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CACjD;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAED,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAWrC;IAED,OAAO,CAAC,KAAK;CASd"}
1
+ {"version":3,"file":"DesktopAccessAudit.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAChD,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAED,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAYrC;IAED,OAAO,CAAC,KAAK;CASd"}
@@ -19,6 +19,7 @@ export class DesktopAccessAudit {
19
19
  operatorRef: crypto.createHash('sha256').update(event.operatorUid).digest('hex').slice(0, 16),
20
20
  ...(event.authMethod ? { authMethod: event.authMethod } : {}),
21
21
  ...(event.inputBucket ? { inputBucket: event.inputBucket } : {}),
22
+ ...(event.acknowledged !== undefined ? { acknowledged: event.acknowledged } : {}),
22
23
  };
23
24
  fs.appendFileSync(file, JSON.stringify(entry) + '\n', { mode: 0o600 });
24
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopAccessAudit.js","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAWrD,MAAM,OAAO,kBAAkB;IACZ,GAAG,CAAS;IAC7B,YAAY,QAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAwB;QAC7B,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;YAChD,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACtF,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7F,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;QACF,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,MAAM,EAAE,CAAC;gBACrD,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"DesktopAccessAudit.js","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAarD,MAAM,OAAO,kBAAkB;IACZ,GAAG,CAAS;IAC7B,YAAY,QAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAwB;QAC7B,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;YAChD,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACtF,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7F,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClF,CAAC;QACF,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,MAAM,EAAE,CAAC;gBACrD,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -1,12 +1,19 @@
1
- export type DesktopDirection = 'frame' | 'input';
1
+ export type DesktopDirection = 'frame' | 'input' | 'control';
2
+ /** First byte of a control record. Frame sequences never reach it, and only a
3
+ * viewer that declared controlRecords is ever sent one. */
4
+ export declare const DESKTOP_CONTROL_MARKER = 199;
2
5
  export declare const DESKTOP_MAX_PLAINTEXT_FRAME_BYTES: number;
3
6
  export declare class DesktopAead {
4
7
  private readonly key;
5
8
  private readonly requestId;
6
9
  private nextFrame;
7
10
  private nextInput;
11
+ private nextControl;
8
12
  constructor(key: Buffer, requestId: string);
9
13
  encryptFrame(frame: Buffer): Buffer;
14
+ /** Its own sequence and IV domain: a control record overtaking a frame in
15
+ * flight must never make that frame's sequence look stale to a viewer. */
16
+ encryptControl(value: unknown): Buffer;
10
17
  decryptInput(record: Buffer): unknown;
11
18
  }
12
19
  export declare function deriveDesktopKey(browserEcdhPublicKey: Buffer, requestId: string, machineId: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopAead.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,eAAO,MAAM,iCAAiC,QAA4B,CAAC;AAa3E,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;IAHpE,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IAEvB,YAA6B,GAAG,EAAE,MAAM,EAAmB,SAAS,EAAE,MAAM,EAE3E;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASlC;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUpC;CACF;AAED,wBAAgB,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IACpG,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CACpD,CASA"}
1
+ {"version":3,"file":"DesktopAead.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAC7D;2DAC2D;AAC3D,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAG3C,eAAO,MAAM,iCAAiC,QAA4B,CAAC;AAa3E,qBAAa,WAAW;IAKV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJpE,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IAEzB,YAA6B,GAAG,EAAE,MAAM,EAAmB,SAAS,EAAE,MAAM,EAE3E;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASlC;IAED;8EAC0E;IAC1E,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASrC;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUpC;CACF;AAED,wBAAgB,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IACpG,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CACpD,CASA"}
@@ -3,11 +3,15 @@
3
3
  * prevent reflection, reordering and replay. A new ECDH key is used per grant. */
4
4
  import crypto from 'node:crypto';
5
5
  import { H264_MAX_ACCESS_UNIT } from './DesktopVideo.js';
6
+ /** First byte of a control record. Frame sequences never reach it, and only a
7
+ * viewer that declared controlRecords is ever sent one. */
8
+ export const DESKTOP_CONTROL_MARKER = 0xc7;
9
+ const IV_DOMAIN = { frame: 1, input: 2, control: 3 };
6
10
  // The native access unit may fill its cap; the authenticated H.264 wrapper adds 18 bytes.
7
11
  export const DESKTOP_MAX_PLAINTEXT_FRAME_BYTES = H264_MAX_ACCESS_UNIT + 18;
8
12
  function iv(direction, sequence) {
9
13
  const nonce = Buffer.alloc(12);
10
- nonce.writeUInt32BE(direction === 'frame' ? 1 : 2, 0);
14
+ nonce.writeUInt32BE(IV_DOMAIN[direction], 0);
11
15
  nonce.writeBigUInt64BE(sequence, 4);
12
16
  return nonce;
13
17
  }
@@ -19,6 +23,7 @@ export class DesktopAead {
19
23
  requestId;
20
24
  nextFrame = 1n;
21
25
  nextInput = 1n;
26
+ nextControl = 1n;
22
27
  constructor(key, requestId) {
23
28
  this.key = key;
24
29
  this.requestId = requestId;
@@ -36,6 +41,18 @@ export class DesktopAead {
36
41
  header.writeBigUInt64BE(sequence);
37
42
  return Buffer.concat([header, encrypted, cipher.getAuthTag()]);
38
43
  }
44
+ /** Its own sequence and IV domain: a control record overtaking a frame in
45
+ * flight must never make that frame's sequence look stale to a viewer. */
46
+ encryptControl(value) {
47
+ const sequence = this.nextControl++;
48
+ const cipher = crypto.createCipheriv('aes-256-gcm', this.key, iv('control', sequence));
49
+ cipher.setAAD(aad(this.requestId, 'control'));
50
+ const encrypted = Buffer.concat([cipher.update(JSON.stringify(value), 'utf8'), cipher.final()]);
51
+ const header = Buffer.alloc(8);
52
+ header.writeBigUInt64BE(sequence);
53
+ header[0] = DESKTOP_CONTROL_MARKER;
54
+ return Buffer.concat([header, encrypted, cipher.getAuthTag()]);
55
+ }
39
56
  decryptInput(record) {
40
57
  if (record.length < 8 + 16 + 2 || record.length > 4_096)
41
58
  throw new Error('desktop input record size invalid');
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopAead.js","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DesktopAead.js","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export interface DesktopHelperResolution {
16
16
  }
17
17
  /** Why a missing permission needs a person. `same-program` means a grant was
18
18
  * removed by someone or something else, so no update story applies. */
19
- export type DesktopHelperPermissionChange = {
19
+ export type DesktopHelperPermissionChange = ({
20
20
  kind: 'source-changed';
21
21
  version: string;
22
22
  helperPath: string;
@@ -24,6 +24,10 @@ export type DesktopHelperPermissionChange = {
24
24
  kind: 'first-grant';
25
25
  version: string;
26
26
  helperPath: string;
27
+ }) & {
28
+ /** Set while the installed copy serves on a grant the kept copy lacks: every
29
+ * permission the kept copy still needs, so one trip to the Mac is enough. */
30
+ keptMissing?: string;
27
31
  };
28
32
  export interface DesktopHelperRetentionOptions {
29
33
  packagedBinary: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopHelperRetention.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DesktopHelperRetention.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopHelperRetention.js","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DesktopHelperRetention.js","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,13 @@ export declare function isDesktopKey(key: unknown): key is DesktopKey;
43
43
  export declare function isDesktopButton(button: unknown): button is DesktopButton;
44
44
  /** Shape check applied before any host sees an action. */
45
45
  export declare function validDesktopInput(action: DesktopInput): boolean;
46
+ /** Sealed to the input-stream helper's key. Node carries bytes it cannot read. */
47
+ export interface DesktopSealedSecret {
48
+ ephemeral: string;
49
+ iv: string;
50
+ ct: string;
51
+ seq: number;
52
+ }
46
53
  export interface DesktopProbe {
47
54
  screenPermission: boolean;
48
55
  inputPermission: boolean;
@@ -53,6 +60,9 @@ export interface DesktopProbe {
53
60
  onConsole?: boolean;
54
61
  loginDone?: boolean;
55
62
  screenLocked?: boolean;
63
+ osMajor?: number;
64
+ /** The classified lock reading, when the locked-screen controller exists. */
65
+ lockState?: import('./DesktopLockState.js').DesktopLockState;
56
66
  /** macOS only: which identity holds the permission. `own` is the helper
57
67
  * itself; `inherited` depends on what started this server's process tree. */
58
68
  screenGrant?: 'own' | 'inherited' | 'none';
@@ -61,6 +71,8 @@ export interface DesktopProbe {
61
71
  helperSource?: 'retained' | 'packaged';
62
72
  helperFallback?: string;
63
73
  helperChange?: DesktopHelperPermissionChange;
74
+ /** macOS only, while the locked-screen feature is on. */
75
+ lockInputs?: import('./DesktopLockState.js').DesktopLockInputs;
64
76
  }
65
77
  export type DesktopPlatform = 'macos' | 'windows';
66
78
  export interface DesktopDisplay {
@@ -105,7 +117,20 @@ export interface DesktopHost {
105
117
  x: number;
106
118
  y: number;
107
119
  }>;
108
- input(action: DesktopInput): Promise<void>;
120
+ /** A `refused` reply is not a failure: the helper did nothing and lives on. */
121
+ input(action: DesktopInput): Promise<void | {
122
+ refused: string;
123
+ }>;
124
+ secretType?(input: {
125
+ requestId: string;
126
+ key: string;
127
+ secret: DesktopSealedSecret;
128
+ }): Promise<void | {
129
+ refused: string;
130
+ }>;
131
+ abortInput?(): void;
132
+ ensureInputStream?(): void;
133
+ setSealKeyHandler?(handler: (key: string) => void): void;
109
134
  cancelInput(): void;
110
135
  setInputFailureHandler?(handler: () => void): void;
111
136
  startIndicator(onUnexpectedExit: () => void): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopHost.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DesktopHost.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopHost.js","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DesktopHost.js","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Reads whether a Mac is really locked. The flag is one input, never the
3
+ * answer: the session-only inputs name whose session is on the console and stay
4
+ * true at the shield, so only the flag and the shield window can tell locked
5
+ * from unlocked. Fixed predicates, no model; a real frame settles capture.
6
+ * Spec: docs/specs/desktop-locked-screen.md, "Lock reading".
7
+ */
8
+ export type DesktopLockState = 'unlocked' | 'screensaver-or-sleep' | 'locked-in-session' | 'locked-by-policy' | 'login-window-switched' | 'other-user-on-console' | 'unknown';
9
+ /** `pending` is a refresh after a state change. It falls on the locked side. */
10
+ export type DesktopLockPolicy = 'off' | 'on' | 'delayed' | 'unreadable' | 'pending';
11
+ export interface DesktopLockInputs {
12
+ shieldWindow: boolean;
13
+ secureInputOwner: 'loginwindow' | 'other' | 'none' | 'unreadable';
14
+ displayAsleep: boolean;
15
+ screensaver: boolean;
16
+ onlineDisplays: number;
17
+ thisUser: string;
18
+ consoleUser?: string;
19
+ osMajor: number;
20
+ sampledAtMs: number;
21
+ bootSession?: string;
22
+ loginSession?: string;
23
+ }
24
+ export declare const LOCK_SAMPLE_MAX_AGE_MS = 2000;
25
+ export interface DesktopLockSample {
26
+ screenLocked?: boolean;
27
+ onConsole?: boolean;
28
+ loginDone?: boolean;
29
+ osMajor?: number;
30
+ lockInputs?: DesktopLockInputs;
31
+ }
32
+ /** `unknown` comes first: a stale, partial or self-contradicting sample never
33
+ * reaches the table. */
34
+ export declare function classifyDesktopLock(sample: DesktopLockSample, policy: DesktopLockPolicy, nowMs: number): DesktopLockState;
35
+ export declare function isLockedClass(state: DesktopLockState): boolean;
36
+ /** Parses `sysadminctl -screenLock status`, which reports on stderr. */
37
+ export declare function parseScreenLockPolicy(output: string): DesktopLockPolicy;
38
+ //# sourceMappingURL=DesktopLockState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopLockState.d.ts","sourceRoot":"","sources":["../../src/core/DesktopLockState.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB,UAAU,GAAG,sBAAsB,GAAG,mBAAmB,GAAG,kBAAkB,GAC9E,uBAAuB,GAAG,uBAAuB,GAAG,SAAS,CAAC;AAElE,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;IAClE,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;wBACwB;AACxB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAiBzH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAE9D;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAKvE"}
@@ -0,0 +1,43 @@
1
+ export const LOCK_SAMPLE_MAX_AGE_MS = 2_000;
2
+ /** `unknown` comes first: a stale, partial or self-contradicting sample never
3
+ * reaches the table. */
4
+ export function classifyDesktopLock(sample, policy, nowMs) {
5
+ const inputs = sample.lockInputs;
6
+ const flag = sample.screenLocked;
7
+ if (!inputs || typeof flag !== 'boolean' || typeof sample.onConsole !== 'boolean'
8
+ || typeof sample.loginDone !== 'boolean' || !inputs.thisUser
9
+ || Math.abs(nowMs - inputs.sampledAtMs) > LOCK_SAMPLE_MAX_AGE_MS)
10
+ return 'unknown';
11
+ const console = inputs.consoleUser;
12
+ const quiet = inputs.screensaver || inputs.displayAsleep;
13
+ if (!flag && inputs.shieldWindow)
14
+ return 'unknown';
15
+ if (flag && !inputs.shieldWindow && !quiet)
16
+ return 'unknown';
17
+ if (console && console !== 'loginwindow' && console !== 'root' && console !== inputs.thisUser)
18
+ return 'other-user-on-console';
19
+ if (!console || console === 'loginwindow' || console === 'root' || !sample.onConsole)
20
+ return 'login-window-switched';
21
+ if (flag && inputs.shieldWindow)
22
+ return 'locked-in-session';
23
+ if (quiet && (flag || policy !== 'off'))
24
+ return 'locked-by-policy';
25
+ if (quiet)
26
+ return 'screensaver-or-sleep';
27
+ if (!flag && !inputs.shieldWindow)
28
+ return 'unlocked';
29
+ return 'unknown';
30
+ }
31
+ export function isLockedClass(state) {
32
+ return state === 'locked-in-session' || state === 'locked-by-policy' || state === 'unknown';
33
+ }
34
+ /** Parses `sysadminctl -screenLock status`, which reports on stderr. */
35
+ export function parseScreenLockPolicy(output) {
36
+ if (/screenLock is off/i.test(output))
37
+ return 'off';
38
+ const delay = /screenLock delay is (-?\d+)/i.exec(output);
39
+ if (!delay)
40
+ return /immediate/i.test(output) ? 'on' : 'unreadable';
41
+ return Number(delay[1]) === 0 ? 'on' : 'delayed';
42
+ }
43
+ //# sourceMappingURL=DesktopLockState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopLockState.js","sourceRoot":"","sources":["../../src/core/DesktopLockState.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAU5C;wBACwB;AACxB,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,MAAyB,EAAE,KAAa;IACrG,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS;WAC5E,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ;WACzD,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,sBAAsB;QAAE,OAAO,SAAS,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,aAAa,CAAC;IACzD,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,OAAO,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC,QAAQ;QAAE,OAAO,uBAAuB,CAAC;IAC9H,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,uBAAuB,CAAC;IACrH,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,mBAAmB,CAAC;IAC5D,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACnE,IAAI,KAAK;QAAE,OAAO,sBAAsB,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO,UAAU,CAAC;IACrD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAuB;IACnD,OAAO,KAAK,KAAK,mBAAmB,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,SAAS,CAAC;AAC9F,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}