instar 1.3.1594 → 1.3.1596

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 (62) hide show
  1. package/dist/core/DesktopHelperPermissionNotice.d.ts +38 -0
  2. package/dist/core/DesktopHelperPermissionNotice.d.ts.map +1 -0
  3. package/dist/core/DesktopHelperPermissionNotice.js +65 -0
  4. package/dist/core/DesktopHelperPermissionNotice.js.map +1 -0
  5. package/dist/core/DesktopHelperRetention.d.ts +89 -0
  6. package/dist/core/DesktopHelperRetention.d.ts.map +1 -0
  7. package/dist/core/DesktopHelperRetention.js +299 -0
  8. package/dist/core/DesktopHelperRetention.js.map +1 -0
  9. package/dist/core/DesktopHost.d.ts +11 -0
  10. package/dist/core/DesktopHost.d.ts.map +1 -1
  11. package/dist/core/DesktopHost.js.map +1 -1
  12. package/dist/core/DesktopProbeReadiness.d.ts +4 -0
  13. package/dist/core/DesktopProbeReadiness.d.ts.map +1 -1
  14. package/dist/core/DesktopProbeReadiness.js +16 -5
  15. package/dist/core/DesktopProbeReadiness.js.map +1 -1
  16. package/dist/core/DirectDesktopAccess.d.ts.map +1 -1
  17. package/dist/core/DirectDesktopAccess.js +1 -0
  18. package/dist/core/DirectDesktopAccess.js.map +1 -1
  19. package/dist/core/MacDesktopHost.d.ts +18 -1
  20. package/dist/core/MacDesktopHost.d.ts.map +1 -1
  21. package/dist/core/MacDesktopHost.js +102 -14
  22. package/dist/core/MacDesktopHost.js.map +1 -1
  23. package/dist/core/WindowsDesktopHost.d.ts +7 -0
  24. package/dist/core/WindowsDesktopHost.d.ts.map +1 -1
  25. package/dist/core/WindowsDesktopHost.js +11 -0
  26. package/dist/core/WindowsDesktopHost.js.map +1 -1
  27. package/dist/core/WindowsDesktopLocalTransport.d.ts.map +1 -1
  28. package/dist/core/WindowsDesktopLocalTransport.js +7 -1
  29. package/dist/core/WindowsDesktopLocalTransport.js.map +1 -1
  30. package/dist/core/types.d.ts +2 -0
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/core/types.js.map +1 -1
  33. package/dist/data/standards-guard-index.json +1 -1
  34. package/dist/data/standards-guard-index.meta.json +2 -2
  35. package/dist/data/standards-registry.meta.json +1 -1
  36. package/dist/native/instar-desktop-host +0 -0
  37. package/dist/native/instar-desktop-host.json +1 -0
  38. package/dist/native/windows/InstarDesktopCompanion.cs +14 -8
  39. package/dist/scaffold/templates.d.ts.map +1 -1
  40. package/dist/scaffold/templates.js +1 -1
  41. package/dist/scaffold/templates.js.map +1 -1
  42. package/dist/server/AgentServer.d.ts +2 -0
  43. package/dist/server/AgentServer.d.ts.map +1 -1
  44. package/dist/server/AgentServer.js +44 -5
  45. package/dist/server/AgentServer.js.map +1 -1
  46. package/dist/server/DesktopStreamManager.d.ts +6 -0
  47. package/dist/server/DesktopStreamManager.d.ts.map +1 -1
  48. package/dist/server/DesktopStreamManager.js +12 -2
  49. package/dist/server/DesktopStreamManager.js.map +1 -1
  50. package/package.json +1 -1
  51. package/scripts/build-native-desktop-host.mjs +11 -0
  52. package/scripts/check-native-desktop-release.mjs +4 -0
  53. package/scripts/windows-desktop-local-transport.ps1 +3 -2
  54. package/src/data/builtin-manifest.json +3 -3
  55. package/src/data/standards-guard-index.json +1 -1
  56. package/src/data/standards-guard-index.meta.json +2 -2
  57. package/src/data/standards-registry.meta.json +1 -1
  58. package/src/scaffold/templates.ts +1 -1
  59. package/upgrades/1.3.1595.md +25 -0
  60. package/upgrades/1.3.1596.md +20 -0
  61. package/upgrades/side-effects/desktop-grant-survives-update.md +73 -0
  62. package/upgrades/side-effects/windows-desktop-capture-rate.md +45 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Tells the operator, once, that a Mac's desktop helper needs its macOS
3
+ * permission again. Without this the machine only reads "not ready", and only
4
+ * to someone who looks. Signal only: it never grants, blocks or restarts.
5
+ */
6
+ import type { DesktopProbe } from './DesktopHost.js';
7
+ export interface DesktopHelperPermissionNoticeDeps {
8
+ machineLabel: string;
9
+ machineId: string;
10
+ probe(): Promise<DesktopProbe & {
11
+ ready: boolean;
12
+ }>;
13
+ sourceHash(): string | null;
14
+ /** True for the first agent on this Mac to raise this notice. */
15
+ claim(): boolean;
16
+ /** Gives the notice back so a later check, or a sibling agent, can raise it. */
17
+ release(): void;
18
+ raise(item: {
19
+ id: string;
20
+ conditionKey: string;
21
+ title: string;
22
+ body: string;
23
+ }): Promise<unknown>;
24
+ clear(conditionKey: string, resolution: string): void;
25
+ }
26
+ export declare class DesktopHelperPermissionNotice {
27
+ private readonly deps;
28
+ private timer;
29
+ private raisedKey;
30
+ private running;
31
+ constructor(deps: DesktopHelperPermissionNoticeDeps);
32
+ start(): void;
33
+ stop(): void;
34
+ /** One check. Public so tests drive it without a clock. */
35
+ check(): Promise<void>;
36
+ private tick;
37
+ }
38
+ //# sourceMappingURL=DesktopHelperPermissionNotice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopHelperPermissionNotice.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHelperPermissionNotice.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,IAAI,OAAO,CAAC,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpD,UAAU,IAAI,MAAM,GAAG,IAAI,CAAC;IAC5B,iEAAiE;IACjE,KAAK,IAAI,OAAO,CAAC;IACjB,gFAAgF;IAChF,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjG,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACvD;AAED,qBAAa,6BAA6B;IAK5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAS;IAExB,YAA6B,IAAI,EAAE,iCAAiC,EAAI;IAExE,KAAK,IAAI,IAAI,CAGZ;IAED,IAAI,IAAI,IAAI,CAGX;IAED,2DAA2D;IACrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB3B;YAEa,IAAI;CAYnB"}
@@ -0,0 +1,65 @@
1
+ import { desktopProbeUnavailableReason } from './DesktopProbeReadiness.js';
2
+ const FIRST_CHECK_MS = 60_000;
3
+ const RECHECK_MS = 15 * 60_000;
4
+ export class DesktopHelperPermissionNotice {
5
+ deps;
6
+ timer = null;
7
+ raisedKey = null;
8
+ running = false;
9
+ constructor(deps) {
10
+ this.deps = deps;
11
+ }
12
+ start() {
13
+ this.timer = setTimeout(() => void this.tick(), FIRST_CHECK_MS);
14
+ this.timer.unref?.();
15
+ }
16
+ stop() {
17
+ if (this.timer)
18
+ clearTimeout(this.timer);
19
+ this.timer = null;
20
+ }
21
+ /** One check. Public so tests drive it without a clock. */
22
+ async check() {
23
+ const probe = await this.deps.probe();
24
+ const hash = this.deps.sourceHash();
25
+ if (!hash)
26
+ return;
27
+ const conditionKey = `desktop-helper-permission:${this.deps.machineId}:${hash.slice(0, 16)}`;
28
+ if (probe.screenPermission && probe.inputPermission) {
29
+ // Unconditional: the item outlives this process, and closing none is a no-op.
30
+ this.deps.clear(conditionKey, 'macOS permission is back for this helper');
31
+ this.raisedKey = null;
32
+ return;
33
+ }
34
+ if (!probe.helperChange || this.raisedKey === conditionKey || !this.deps.claim())
35
+ return;
36
+ try {
37
+ await this.deps.raise({
38
+ id: conditionKey, conditionKey,
39
+ title: `${this.deps.machineLabel}: Remote Desktop needs its Mac permission again`,
40
+ body: desktopProbeUnavailableReason(probe),
41
+ });
42
+ }
43
+ catch (error) {
44
+ this.deps.release();
45
+ throw error;
46
+ }
47
+ this.raisedKey = conditionKey;
48
+ }
49
+ async tick() {
50
+ if (this.running)
51
+ return;
52
+ this.running = true;
53
+ try {
54
+ await this.check();
55
+ }
56
+ catch { // @silent-fallback-ok — a failed check repeats at the next tick; the helper reason stays on /desktop/diagnostics.
57
+ }
58
+ finally {
59
+ this.running = false;
60
+ this.timer = setTimeout(() => void this.tick(), RECHECK_MS);
61
+ this.timer.unref?.();
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=DesktopHelperPermissionNotice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopHelperPermissionNotice.js","sourceRoot":"","sources":["../../src/core/DesktopHelperPermissionNotice.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC;AAe/B,MAAM,OAAO,6BAA6B;IAKX,IAAI;IAJzB,KAAK,GAAyC,IAAI,CAAC;IACnD,SAAS,GAAkB,IAAI,CAAC;IAChC,OAAO,GAAG,KAAK,CAAC;IAExB,YAA6B,IAAuC;oBAAvC,IAAI;IAAsC,CAAC;IAExE,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,YAAY,GAAG,6BAA6B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7F,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YACpD,8EAA8E;YAC9E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,0CAA0C,CAAC,CAAC;YAC1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO;QACzF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpB,EAAE,EAAE,YAAY,EAAE,YAAY;gBAC9B,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,iDAAiD;gBACjF,IAAI,EAAE,6BAA6B,CAAC,KAAK,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC,CAAC,kHAAkH;QAC5H,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,89 @@
1
+ export declare const HELPER_MANIFEST_SUFFIX = ".json";
2
+ export declare const RETAINED_HELPER_NAME = "instar-desktop-host";
3
+ export type DesktopHelperFallback = 'disabled' | 'no-manifest' | 'not-release-build' | 'older-than-retained' | 'same-version-different-source' | 'retained-unsafe' | 'retained-unrunnable' | 'copy-failed';
4
+ export interface DesktopHelperRecord {
5
+ sourceHash: string;
6
+ binarySha256: string;
7
+ packageVersion: string;
8
+ /** The source hash this Mac last proved it holds the helper's own grant for. */
9
+ grantedSourceHash: string | null;
10
+ replacedAt: string;
11
+ }
12
+ export interface DesktopHelperResolution {
13
+ path: string;
14
+ source: 'retained' | 'packaged';
15
+ reason?: DesktopHelperFallback;
16
+ }
17
+ /** Why a missing permission needs a person. `same-program` means a grant was
18
+ * removed by someone or something else, so no update story applies. */
19
+ export type DesktopHelperPermissionChange = {
20
+ kind: 'source-changed';
21
+ version: string;
22
+ helperPath: string;
23
+ } | {
24
+ kind: 'first-grant';
25
+ version: string;
26
+ helperPath: string;
27
+ };
28
+ export interface DesktopHelperRetentionOptions {
29
+ packagedBinary: string;
30
+ packageVersion: string;
31
+ /** Default `~/.instar/desktop-helper`. */
32
+ root?: string;
33
+ enabled?: boolean;
34
+ log?: (message: string) => void;
35
+ }
36
+ export declare function helperManifestPath(binary: string): string;
37
+ /** Plain numeric comparison: instar versions are dotted integers. */
38
+ export declare function compareVersions(a: string, b: string): number;
39
+ export declare class DesktopHelperRetention {
40
+ private readonly options;
41
+ readonly root: string;
42
+ readonly retainedPath: string;
43
+ private readonly recordPath;
44
+ private readonly enabled;
45
+ private readonly log;
46
+ /** Verifying means hashing, so it reruns only when the kept file changes. */
47
+ private verified;
48
+ private broken;
49
+ /** A failed copy waits before it is tried again, because probes run twice a second. */
50
+ private copyRetryAt;
51
+ private copyRetryMs;
52
+ private grantNoteFailed;
53
+ constructor(options: DesktopHelperRetentionOptions);
54
+ private packaged;
55
+ private packagedSourceHash;
56
+ /** A local development build is thin. Only a release build may take the Mac's
57
+ * one kept copy, so a test checkout can never replace what is granted. */
58
+ private isReleaseBuild;
59
+ private readRecord;
60
+ private writeRecord;
61
+ /** The kept copy runs with the Mac's permissions, so it must be a plain file
62
+ * this user owns that nobody else can write, in a folder with the same rule. */
63
+ private safeToRun;
64
+ /** The rename means a helper already running keeps its old file, and macOS
65
+ * never sees a signed program change underneath a live process. */
66
+ private install;
67
+ /** Which helper to launch. Synchronous and cheap on the repeat path. Never
68
+ * throws: a probe that rejects reads as a lost grant and revokes a session. */
69
+ resolve(): DesktopHelperResolution;
70
+ private resolveKept;
71
+ private matchesRecord;
72
+ private resolveFully;
73
+ /** The kept copy would not run at all, so stop using it until a restart. */
74
+ markBroken(): void;
75
+ /** The kept copy holds its own grant for its current source. Failing to write
76
+ * that down costs nothing but a repeat at the next probe, so it never throws. */
77
+ noteGranted(): void;
78
+ /** Null when the missing permission has nothing to do with an update. */
79
+ permissionChange(): DesktopHelperPermissionChange | null;
80
+ /** The source hash this notice is about. Stable across agents on this Mac. */
81
+ currentSourceHash(): string | null;
82
+ private noticePath;
83
+ /** True for the first caller on this Mac for this helper. One Mac, one item.
84
+ * Creating the marker is atomic, so agents restarting together cannot both win. */
85
+ claimNotice(): boolean;
86
+ /** Hands the notice back when raising it failed, or once it is resolved. */
87
+ releaseNotice(): void;
88
+ }
89
+ //# sourceMappingURL=DesktopHelperRetention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopHelperRetention.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,299 @@
1
+ /**
2
+ * DesktopHelperRetention: one kept copy of the Mac desktop helper per Mac, at
3
+ * one path that updates never touch.
4
+ *
5
+ * macOS ties a Screen Recording or Accessibility grant to the exact program.
6
+ * For an ad-hoc signed helper that means its hash, and for a helper with no app
7
+ * bundle it means its path too. So the installed copy is a poor place to hold a
8
+ * grant: each agent on a Mac has its own, and an update can replace its bytes.
9
+ * The kept copy changes only when the helper's SOURCE changes (the build writes
10
+ * a source hash beside the binary), so a rebuild of unchanged source on a newer
11
+ * toolchain cannot cost a grant, and every agent on a Mac shares one macOS
12
+ * entry. A Developer ID identity later keeps that same entry across source
13
+ * changes too, because the path never moves.
14
+ *
15
+ * When the source really does change, the old grant cannot follow it. This
16
+ * module records that fact so the machine can say so plainly.
17
+ *
18
+ * Every failure falls back to the installed copy with a named reason: this
19
+ * module may never make a Mac less reachable than it already was.
20
+ */
21
+ import crypto from 'node:crypto';
22
+ import fs from 'node:fs';
23
+ import os from 'node:os';
24
+ import path from 'node:path';
25
+ import { SafeFsExecutor } from './SafeFsExecutor.js';
26
+ export const HELPER_MANIFEST_SUFFIX = '.json';
27
+ export const RETAINED_HELPER_NAME = 'instar-desktop-host';
28
+ const RECORD_NAME = 'retained.json';
29
+ const FAT_MAGIC = 0xcafebabe;
30
+ const COPY_RETRY_FIRST_MS = 60_000;
31
+ const COPY_RETRY_MAX_MS = 60 * 60_000;
32
+ export function helperManifestPath(binary) {
33
+ return `${binary}${HELPER_MANIFEST_SUFFIX}`;
34
+ }
35
+ /** Plain numeric comparison: instar versions are dotted integers. */
36
+ export function compareVersions(a, b) {
37
+ const parts = (value) => value.split('.').map(part => Number.parseInt(part, 10) || 0);
38
+ const left = parts(a);
39
+ const right = parts(b);
40
+ for (let i = 0; i < Math.max(left.length, right.length); i++) {
41
+ const difference = (left[i] ?? 0) - (right[i] ?? 0);
42
+ if (difference !== 0)
43
+ return Math.sign(difference);
44
+ }
45
+ return 0;
46
+ }
47
+ function sha256(file) {
48
+ return crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex');
49
+ }
50
+ export class DesktopHelperRetention {
51
+ options;
52
+ root;
53
+ retainedPath;
54
+ recordPath;
55
+ enabled;
56
+ log;
57
+ /** Verifying means hashing, so it reruns only when the kept file changes. */
58
+ verified = null;
59
+ broken = false;
60
+ /** A failed copy waits before it is tried again, because probes run twice a second. */
61
+ copyRetryAt = 0;
62
+ copyRetryMs = COPY_RETRY_FIRST_MS;
63
+ grantNoteFailed = false;
64
+ constructor(options) {
65
+ this.options = options;
66
+ this.root = options.root ?? path.join(os.homedir(), '.instar', 'desktop-helper');
67
+ this.retainedPath = path.join(this.root, RETAINED_HELPER_NAME);
68
+ this.recordPath = path.join(this.root, RECORD_NAME);
69
+ this.enabled = options.enabled !== false;
70
+ this.log = options.log ?? (message => console.warn(message));
71
+ }
72
+ packaged(reason) {
73
+ return { path: this.options.packagedBinary, source: 'packaged', reason };
74
+ }
75
+ packagedSourceHash() {
76
+ try {
77
+ const parsed = JSON.parse(fs.readFileSync(helperManifestPath(this.options.packagedBinary), 'utf8'));
78
+ return typeof parsed.sourceHash === 'string' && /^[a-f0-9]{64}$/.test(parsed.sourceHash) ? parsed.sourceHash : null;
79
+ }
80
+ catch {
81
+ return null; // @silent-fallback-ok — resolve() reports this as the named reason no-manifest.
82
+ }
83
+ }
84
+ /** A local development build is thin. Only a release build may take the Mac's
85
+ * one kept copy, so a test checkout can never replace what is granted. */
86
+ isReleaseBuild() {
87
+ let handle = null;
88
+ try {
89
+ handle = fs.openSync(this.options.packagedBinary, 'r');
90
+ const head = Buffer.alloc(4);
91
+ return fs.readSync(handle, head, 0, 4, 0) === 4 && head.readUInt32BE(0) === FAT_MAGIC;
92
+ }
93
+ catch {
94
+ return false; // @silent-fallback-ok — resolve() reports this as not-release-build.
95
+ }
96
+ finally {
97
+ if (handle !== null)
98
+ fs.closeSync(handle);
99
+ }
100
+ }
101
+ readRecord() {
102
+ try {
103
+ const value = JSON.parse(fs.readFileSync(this.recordPath, 'utf8'));
104
+ if (typeof value.sourceHash !== 'string' || typeof value.binarySha256 !== 'string'
105
+ || typeof value.packageVersion !== 'string')
106
+ return null;
107
+ return {
108
+ sourceHash: value.sourceHash, binarySha256: value.binarySha256, packageVersion: value.packageVersion,
109
+ grantedSourceHash: typeof value.grantedSourceHash === 'string' ? value.grantedSourceHash : null,
110
+ replacedAt: typeof value.replacedAt === 'string' ? value.replacedAt : '',
111
+ };
112
+ }
113
+ catch {
114
+ return null; // @silent-fallback-ok — no readable record means the copy is reinstalled from the package.
115
+ }
116
+ }
117
+ writeRecord(record) {
118
+ const temporary = `${this.recordPath}.${process.pid}.tmp`;
119
+ fs.writeFileSync(temporary, `${JSON.stringify(record, null, 2)}\n`, { mode: 0o600 });
120
+ fs.renameSync(temporary, this.recordPath);
121
+ }
122
+ /** The kept copy runs with the Mac's permissions, so it must be a plain file
123
+ * this user owns that nobody else can write, in a folder with the same rule. */
124
+ safeToRun() {
125
+ try {
126
+ const uid = process.getuid?.();
127
+ for (const candidate of [this.root, this.retainedPath]) {
128
+ const stat = fs.lstatSync(candidate);
129
+ if (stat.isSymbolicLink() || stat.uid !== uid || (stat.mode & 0o022) !== 0)
130
+ return false;
131
+ }
132
+ return fs.lstatSync(this.retainedPath).isFile();
133
+ }
134
+ catch {
135
+ return false; // @silent-fallback-ok — an unreadable copy is unsafe; resolve() names retained-unsafe.
136
+ }
137
+ }
138
+ /** The rename means a helper already running keeps its old file, and macOS
139
+ * never sees a signed program change underneath a live process. */
140
+ install(sourceHash, grantedSourceHash) {
141
+ fs.mkdirSync(this.root, { recursive: true, mode: 0o700 });
142
+ const temporary = `${this.retainedPath}.${process.pid}.tmp`;
143
+ fs.copyFileSync(this.options.packagedBinary, temporary);
144
+ fs.chmodSync(temporary, 0o700);
145
+ fs.renameSync(temporary, this.retainedPath);
146
+ this.writeRecord({
147
+ sourceHash, binarySha256: sha256(this.retainedPath), packageVersion: this.options.packageVersion,
148
+ grantedSourceHash,
149
+ replacedAt: new Date().toISOString(),
150
+ });
151
+ }
152
+ /** Which helper to launch. Synchronous and cheap on the repeat path. Never
153
+ * throws: a probe that rejects reads as a lost grant and revokes a session. */
154
+ resolve() {
155
+ if (!this.enabled)
156
+ return this.packaged('disabled');
157
+ if (this.broken)
158
+ return this.packaged('retained-unrunnable');
159
+ if (Date.now() < this.copyRetryAt)
160
+ return this.packaged('copy-failed');
161
+ try {
162
+ return this.resolveKept();
163
+ }
164
+ catch (error) {
165
+ this.verified = null;
166
+ this.log(`[instar] could not check the Mac desktop helper copy: ${error instanceof Error ? error.message : String(error)}`);
167
+ return this.packaged('retained-unsafe'); // @silent-fallback-ok — logged above; diagnostics name the reason.
168
+ }
169
+ }
170
+ resolveKept() {
171
+ try {
172
+ const stat = fs.statSync(this.retainedPath);
173
+ if (this.verified && this.verified.size === stat.size && this.verified.mtimeMs === stat.mtimeMs
174
+ && this.verified.ino === stat.ino)
175
+ return this.verified.resolution;
176
+ }
177
+ catch { /* @silent-fallback-ok — no kept copy yet; the full path below creates it. */ }
178
+ const resolution = this.resolveFully();
179
+ if (resolution.source === 'retained') {
180
+ const stat = fs.statSync(this.retainedPath);
181
+ this.verified = { size: stat.size, mtimeMs: stat.mtimeMs, ino: stat.ino, resolution };
182
+ }
183
+ else {
184
+ this.verified = null;
185
+ }
186
+ return resolution;
187
+ }
188
+ matchesRecord(record) {
189
+ try {
190
+ return sha256(this.retainedPath) === record.binarySha256;
191
+ }
192
+ catch {
193
+ return false; // @silent-fallback-ok — unreadable bytes are damaged bytes; resolveFully restores them.
194
+ }
195
+ }
196
+ resolveFully() {
197
+ const sourceHash = this.packagedSourceHash();
198
+ if (!sourceHash)
199
+ return this.packaged('no-manifest');
200
+ if (!this.isReleaseBuild())
201
+ return this.packaged('not-release-build');
202
+ const record = this.readRecord();
203
+ const fileExists = fs.existsSync(this.retainedPath);
204
+ if (record && record.sourceHash !== sourceHash) {
205
+ const order = compareVersions(this.options.packageVersion, record.packageVersion);
206
+ // Agents on one Mac update minutes apart. The older one must not swap
207
+ // the helper back and cost the newer one its grant.
208
+ if (order < 0)
209
+ return this.packaged('older-than-retained');
210
+ if (order === 0)
211
+ return this.packaged('same-version-different-source');
212
+ }
213
+ const intact = !!record && record.sourceHash === sourceHash && fileExists
214
+ && this.safeToRun() && this.matchesRecord(record);
215
+ if (intact)
216
+ return { path: this.retainedPath, source: 'retained' };
217
+ if (record?.sourceHash === sourceHash && fileExists) {
218
+ this.log('[instar] retained Mac desktop helper failed its integrity check; restoring it from this package');
219
+ }
220
+ try {
221
+ // A real source change keeps the old proof, which is how the Mac can say
222
+ // the helper changed. Restoring a damaged copy writes bytes macOS has not
223
+ // seen, so the proof is gone and the Mac must say it needs a grant.
224
+ this.install(sourceHash, record && record.sourceHash !== sourceHash ? record.grantedSourceHash : null);
225
+ this.copyRetryAt = 0;
226
+ this.copyRetryMs = COPY_RETRY_FIRST_MS;
227
+ }
228
+ catch (error) {
229
+ this.copyRetryAt = Date.now() + this.copyRetryMs;
230
+ this.copyRetryMs = Math.min(this.copyRetryMs * 2, COPY_RETRY_MAX_MS);
231
+ this.log(`[instar] could not keep a Mac desktop helper copy: ${error instanceof Error ? error.message : String(error)}`);
232
+ return this.packaged('copy-failed'); // @silent-fallback-ok — logged above; diagnostics name copy-failed.
233
+ }
234
+ return this.safeToRun() ? { path: this.retainedPath, source: 'retained' } : this.packaged('retained-unsafe');
235
+ }
236
+ /** The kept copy would not run at all, so stop using it until a restart. */
237
+ markBroken() {
238
+ this.broken = true;
239
+ this.verified = null;
240
+ this.log('[instar] retained Mac desktop helper would not run; using the installed copy');
241
+ }
242
+ /** The kept copy holds its own grant for its current source. Failing to write
243
+ * that down costs nothing but a repeat at the next probe, so it never throws. */
244
+ noteGranted() {
245
+ const record = this.readRecord();
246
+ if (!record || record.grantedSourceHash === record.sourceHash)
247
+ return;
248
+ try {
249
+ this.writeRecord({ ...record, grantedSourceHash: record.sourceHash });
250
+ this.releaseNotice();
251
+ this.grantNoteFailed = false;
252
+ }
253
+ catch (error) { // @silent-fallback-ok — logged once below; the next probe writes the grant again.
254
+ if (!this.grantNoteFailed) {
255
+ this.log(`[instar] could not record the Mac desktop helper grant: ${error instanceof Error ? error.message : String(error)}`);
256
+ }
257
+ this.grantNoteFailed = true;
258
+ }
259
+ }
260
+ /** Null when the missing permission has nothing to do with an update. */
261
+ permissionChange() {
262
+ const record = this.readRecord();
263
+ if (!record)
264
+ return null;
265
+ const base = { version: record.packageVersion, helperPath: this.retainedPath };
266
+ if (!record.grantedSourceHash)
267
+ return { kind: 'first-grant', ...base };
268
+ return record.grantedSourceHash === record.sourceHash ? null : { kind: 'source-changed', ...base };
269
+ }
270
+ /** The source hash this notice is about. Stable across agents on this Mac. */
271
+ currentSourceHash() {
272
+ return this.readRecord()?.sourceHash ?? null;
273
+ }
274
+ noticePath() {
275
+ const hash = this.currentSourceHash();
276
+ return hash ? path.join(this.root, `notice-${hash.slice(0, 16)}`) : null;
277
+ }
278
+ /** True for the first caller on this Mac for this helper. One Mac, one item.
279
+ * Creating the marker is atomic, so agents restarting together cannot both win. */
280
+ claimNotice() {
281
+ const marker = this.noticePath();
282
+ if (!marker)
283
+ return false;
284
+ try {
285
+ fs.writeFileSync(marker, '', { flag: 'wx', mode: 0o600 });
286
+ return true;
287
+ }
288
+ catch {
289
+ return false; // @silent-fallback-ok — the marker exists, so another agent holds this notice.
290
+ }
291
+ }
292
+ /** Hands the notice back when raising it failed, or once it is resolved. */
293
+ releaseNotice() {
294
+ const marker = this.noticePath();
295
+ if (marker)
296
+ SafeFsExecutor.safeRmSync(marker, { force: true, operation: 'src/core/DesktopHelperRetention.ts:releaseNotice' });
297
+ }
298
+ }
299
+ //# sourceMappingURL=DesktopHelperRetention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesktopHelperRetention.js","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAC1D,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,iBAAiB,GAAG,EAAE,GAAG,MAAM,CAAC;AAoCtC,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,GAAG,MAAM,GAAG,sBAAsB,EAAE,CAAC;AAC9C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,OAAO,sBAAsB;IAcJ,OAAO;IAb3B,IAAI,CAAS;IACb,YAAY,CAAS;IACb,UAAU,CAAS;IACnB,OAAO,CAAU;IACjB,GAAG,CAA4B;IAChD,6EAA6E;IACrE,QAAQ,GAA+F,IAAI,CAAC;IAC5G,MAAM,GAAG,KAAK,CAAC;IACvB,uFAAuF;IAC/E,WAAW,GAAG,CAAC,CAAC;IAChB,WAAW,GAAG,mBAAmB,CAAC;IAClC,eAAe,GAAG,KAAK,CAAC;IAEhC,YAA6B,OAAsC;uBAAtC,OAAO;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,QAAQ,CAAC,MAA6B;QAC5C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC3E,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAA6B,CAAC;YAChI,OAAO,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACtH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,gFAAgF;QAC/F,CAAC;IACH,CAAC;IAED;8EAC0E;IAClE,cAAc;QACpB,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,qEAAqE;QACrF,CAAC;gBAAS,CAAC;YACT,IAAI,MAAM,KAAK,IAAI;gBAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAiC,CAAC;YACnG,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;mBAC7E,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC3D,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpG,iBAAiB,EAAE,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;gBAC/F,UAAU,EAAE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;aACzE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,2FAA2F;QAC1G,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,MAA2B;QAC7C,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QAC1D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;oFACgF;IACxE,SAAS;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,KAAK,MAAM,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC3F,CAAC;YACD,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,uFAAuF;QACvG,CAAC;IACH,CAAC;IAED;uEACmE;IAC3D,OAAO,CAAC,UAAkB,EAAE,iBAAgC;QAClE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QAC5D,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACxD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC;YACf,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAChG,iBAAiB;YACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED;mFAC+E;IAC/E,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,yDAAyD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5H,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,mEAAmE;QAC9G,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;mBAC1F,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC,CAAC,6EAA6E,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,MAA2B;QAC/C,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,wFAAwF;QACxG,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YAClF,sEAAsE;YACtE,oDAAoD;YACpD,IAAI,KAAK,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YAC3D,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,UAAU;eACpE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACnE,IAAI,MAAM,EAAE,UAAU,KAAK,UAAU,IAAI,UAAU,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC;YACH,yEAAyE;YACzE,0EAA0E;YAC1E,oEAAoE;YACpE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,sDAAsD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzH,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,oEAAoE;QAC3G,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC/G,CAAC;IAED,4EAA4E;IAC5E,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC3F,CAAC;IAED;qFACiF;IACjF,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU;YAAE,OAAO;QACtE,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAC,kFAAkF;YAClG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,2DAA2D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChI,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,gBAAgB;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC;QACvE,OAAO,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,CAAC;IACrG,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC;IAC/C,CAAC;IAEO,UAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAED;uFACmF;IACnF,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,+EAA+E;QAC/F,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,aAAa;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,MAAM;YAAE,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,kDAAkD,EAAE,CAAC,CAAC;IAChI,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { DesktopHelperPermissionChange } from './DesktopHelperRetention.js';
1
2
  /** Machine-local capture and input boundary. A Windows or Linux companion
2
3
  * implements this contract only after its own permission and live-session proof. */
3
4
  export type DesktopButton = 'left' | 'right' | 'middle';
@@ -56,6 +57,10 @@ export interface DesktopProbe {
56
57
  * itself; `inherited` depends on what started this server's process tree. */
57
58
  screenGrant?: 'own' | 'inherited' | 'none';
58
59
  inputGrant?: 'own' | 'inherited' | 'none';
60
+ /** macOS only: which copy of the helper ran, and why a person is needed. */
61
+ helperSource?: 'retained' | 'packaged';
62
+ helperFallback?: string;
63
+ helperChange?: DesktopHelperPermissionChange;
59
64
  }
60
65
  export type DesktopPlatform = 'macos' | 'windows';
61
66
  export interface DesktopDisplay {
@@ -89,6 +94,12 @@ export interface DesktopHost {
89
94
  inputPermission: boolean;
90
95
  }>;
91
96
  capture(): Promise<Buffer>;
97
+ /** Optional: running totals of capture time spent inside the host OS. */
98
+ captureTiming?(): {
99
+ count: number;
100
+ totalMs: number;
101
+ maxMs: number;
102
+ };
92
103
  captureH264?(forceKeyframe: boolean): Promise<import('./DesktopVideo.js').DesktopH264Frame | null>;
93
104
  cursor?(): Promise<{
94
105
  x: number;
@@ -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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"}
@@ -1,3 +1,6 @@
1
+ /** A probe reports the helper's view of a desktop session, not whether the
2
+ * machine or the Instar agent is online or whether a screen is actually locked. */
3
+ import type { DesktopHelperPermissionChange } from './DesktopHelperRetention.js';
1
4
  /** One sentence on what is wrong, then the one thing that fixes it. */
2
5
  export declare function desktopProbeUnavailableReason(probe: {
3
6
  sessionActive: boolean;
@@ -8,5 +11,6 @@ export declare function desktopProbeUnavailableReason(probe: {
8
11
  onConsole?: boolean;
9
12
  loginDone?: boolean;
10
13
  screenLocked?: boolean;
14
+ helperChange?: DesktopHelperPermissionChange;
11
15
  }): string;
12
16
  //# sourceMappingURL=DesktopProbeReadiness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DesktopProbeReadiness.d.ts","sourceRoot":"","sources":["../../src/core/DesktopProbeReadiness.ts"],"names":[],"mappings":"AAIA,uEAAuE;AACvE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,MAAM,CA8BT"}
1
+ {"version":3,"file":"DesktopProbeReadiness.d.ts","sourceRoot":"","sources":["../../src/core/DesktopProbeReadiness.ts"],"names":[],"mappings":"AAAA;mFACmF;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAcjF,uEAAuE;AACvE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,6BAA6B,CAAC;CAC9C,GAAG,MAAM,CAiCT"}