@enterpriseai/cli 3.15.10 → 3.15.11

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.
@@ -0,0 +1,38 @@
1
+ import type { CompanionCliSurfaceId } from './ai-surfaces.js';
2
+ export type CompanionInstallerTool = 'copilot' | 'antigravity' | 'claude' | 'codex' | 'grok';
3
+ export interface CompanionInstallerExecConfig {
4
+ readonly platform: NodeJS.Platform;
5
+ readonly command: string;
6
+ readonly args: readonly string[];
7
+ readonly timeoutMs: number;
8
+ readonly systemRoot?: string;
9
+ }
10
+ export interface CompanionInstallerRunResult {
11
+ readonly ok: boolean;
12
+ readonly reason: 'completed' | 'failed';
13
+ }
14
+ export type CompanionCliInstallStatus = 'installed' | 'updated' | 'failed' | 'user-action-required';
15
+ export interface CompanionCliInstallResult {
16
+ readonly status: CompanionCliInstallStatus;
17
+ readonly installed: boolean;
18
+ readonly userActionRequired: boolean;
19
+ }
20
+ export type CompanionInstallerRunner = (config: CompanionInstallerExecConfig) => Promise<{
21
+ readonly exitCode: number;
22
+ }>;
23
+ export declare function buildCompanionInstallerEnvironment(platform: NodeJS.Platform, source?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
24
+ export declare function buildCompanionInstallerExecConfig(platform: NodeJS.Platform, workspacePath: string, companionCli: CompanionCliSurfaceId, resourcesPath?: string, environment?: NodeJS.ProcessEnv): CompanionInstallerExecConfig;
25
+ export declare function runCompanionCliInstaller(options: {
26
+ readonly platform?: NodeJS.Platform;
27
+ readonly workspacePath: string;
28
+ readonly companionCli: CompanionCliSurfaceId;
29
+ readonly resourcesPath?: string;
30
+ readonly runner?: CompanionInstallerRunner;
31
+ }): Promise<CompanionInstallerRunResult>;
32
+ export declare function installAndVerifyCompanionCli(options: {
33
+ readonly companionCli: CompanionCliSurfaceId;
34
+ readonly wasInstalled: boolean;
35
+ readonly runInstaller: () => Promise<CompanionInstallerRunResult>;
36
+ readonly verifyInstalled: () => Promise<boolean>;
37
+ }): Promise<CompanionCliInstallResult>;
38
+ //# sourceMappingURL=ai-surface-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-surface-installer.d.ts","sourceRoot":"","sources":["../../src/lib/ai-surface-installer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAM9D,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7F,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;CACzC;AAED,MAAM,MAAM,yBAAyB,GACjC,WAAW,GACX,SAAS,GACT,QAAQ,GACR,sBAAsB,CAAC;AAE3B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,MAAM,EAAE,4BAA4B,KACjC,OAAO,CAAC;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAU5C,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,MAAM,GAAE,MAAM,CAAC,UAAwB,GACtC,MAAM,CAAC,UAAU,CAcnB;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,qBAAqB,EACnC,aAAa,SAA8B,EAC3C,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,4BAA4B,CAwC9B;AAyCD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC;CAC5C,GAAG,OAAO,CAAC,2BAA2B,CAAC,CA0BvC;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAClE,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAcrC"}
@@ -0,0 +1,160 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { lstat, realpath } from 'node:fs/promises';
3
+ import { delimiter, dirname, join, resolve, sep, win32 } from 'node:path';
4
+ import { resolveGoferResourcesPath } from './gofer-installer.js';
5
+ // Packaged helpers own the 15-minute provider deadline and cleanup. This outer
6
+ // deadline is a final guard with enough headroom for their cleanup path.
7
+ const INSTALL_TIMEOUT_MS = 17 * 60 * 1000;
8
+ const COMPANION_TO_TOOL = Object.freeze({
9
+ 'copilot-cli': 'copilot',
10
+ 'antigravity-cli': 'antigravity',
11
+ 'claude-cli': 'claude',
12
+ 'codex-cli': 'codex',
13
+ 'grok-cli': 'grok',
14
+ });
15
+ export function buildCompanionInstallerEnvironment(platform, source = process.env) {
16
+ const nodeDirectory = dirname(process.execPath);
17
+ const trustedPath = platform === 'win32'
18
+ ? [nodeDirectory, `${source.SystemRoot ?? 'C:\\Windows'}\\System32`]
19
+ : [nodeDirectory, '/opt/homebrew/bin', '/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin'];
20
+ const environment = { PATH: [...new Set(trustedPath)].join(delimiter) };
21
+ for (const key of [
22
+ 'HOME', 'USER', 'LOGNAME', 'USERPROFILE', 'APPDATA', 'LOCALAPPDATA',
23
+ 'ProgramFiles', 'ProgramFiles(x86)', 'SystemRoot', 'ComSpec',
24
+ 'TEMP', 'TMP', 'TMPDIR', 'LANG', 'LC_ALL',
25
+ ]) {
26
+ if (source[key])
27
+ environment[key] = source[key];
28
+ }
29
+ return environment;
30
+ }
31
+ export function buildCompanionInstallerExecConfig(platform, workspacePath, companionCli, resourcesPath = resolveGoferResourcesPath(), environment = process.env) {
32
+ const workspace = resolve(workspacePath);
33
+ const tool = COMPANION_TO_TOOL[companionCli];
34
+ if (platform === 'win32') {
35
+ const systemRoot = environment.SystemRoot ?? 'C:\\Windows';
36
+ return {
37
+ platform,
38
+ command: win32.join(systemRoot, 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe'),
39
+ args: [
40
+ '-NoLogo',
41
+ '-NoProfile',
42
+ '-NonInteractive',
43
+ '-ExecutionPolicy',
44
+ 'Bypass',
45
+ '-File',
46
+ join(resourcesPath, 'powershell-scripts', 'install-optional-tools.ps1'),
47
+ '-WorkspacePath',
48
+ workspace,
49
+ '-Tools',
50
+ tool,
51
+ ],
52
+ timeoutMs: INSTALL_TIMEOUT_MS,
53
+ systemRoot,
54
+ };
55
+ }
56
+ if (platform === 'darwin' || platform === 'linux') {
57
+ return {
58
+ platform,
59
+ command: '/bin/bash',
60
+ args: [
61
+ join(resourcesPath, 'bash-scripts', 'install-optional-tools.sh'),
62
+ '--workspace-path',
63
+ workspace,
64
+ '--tools',
65
+ tool,
66
+ ],
67
+ timeoutMs: INSTALL_TIMEOUT_MS,
68
+ };
69
+ }
70
+ throw new Error(`Companion CLI installation is not supported on ${platform}.`);
71
+ }
72
+ async function defaultCompanionInstallerRunner(config) {
73
+ return new Promise((resolveResult) => {
74
+ const child = spawn(config.command, [...config.args], {
75
+ shell: false,
76
+ stdio: 'ignore',
77
+ windowsHide: true,
78
+ detached: config.platform !== 'win32',
79
+ env: buildCompanionInstallerEnvironment(config.platform),
80
+ });
81
+ let settled = false;
82
+ const finish = (exitCode) => {
83
+ if (settled)
84
+ return;
85
+ settled = true;
86
+ clearTimeout(timer);
87
+ resolveResult({ exitCode });
88
+ };
89
+ const timer = setTimeout(() => {
90
+ if (config.platform === 'win32') {
91
+ spawn(win32.join(config.systemRoot ?? 'C:\\Windows', 'System32', 'taskkill.exe'), ['/pid', String(child.pid), '/t', '/f'], {
92
+ shell: false, stdio: 'ignore', windowsHide: true,
93
+ env: buildCompanionInstallerEnvironment('win32'),
94
+ }).once('error', () => child.kill('SIGTERM'));
95
+ }
96
+ else if (child.pid) {
97
+ try {
98
+ process.kill(-child.pid, 'SIGTERM');
99
+ }
100
+ catch {
101
+ child.kill('SIGTERM');
102
+ }
103
+ }
104
+ setTimeout(() => {
105
+ if (settled && child.exitCode !== null)
106
+ return;
107
+ if (config.platform !== 'win32' && child.pid) {
108
+ try {
109
+ process.kill(-child.pid, 'SIGKILL');
110
+ }
111
+ catch {
112
+ child.kill('SIGKILL');
113
+ }
114
+ }
115
+ else
116
+ child.kill('SIGKILL');
117
+ }, 5_000).unref();
118
+ }, config.timeoutMs);
119
+ child.once('error', () => finish(1));
120
+ child.once('close', (code) => finish(code ?? 1));
121
+ });
122
+ }
123
+ export async function runCompanionCliInstaller(options) {
124
+ const platform = options.platform ?? process.platform;
125
+ const config = buildCompanionInstallerExecConfig(platform, options.workspacePath, options.companionCli, options.resourcesPath);
126
+ const scriptIndex = platform === 'win32' ? 6 : 0;
127
+ const resourceRoot = await realpath(options.resourcesPath ?? resolveGoferResourcesPath());
128
+ const scriptPath = config.args[scriptIndex];
129
+ const scriptStatus = await lstat(scriptPath);
130
+ const resolvedScript = await realpath(scriptPath);
131
+ if (!scriptStatus.isFile()
132
+ || scriptStatus.isSymbolicLink()
133
+ || (resolvedScript !== resourceRoot && !resolvedScript.startsWith(`${resourceRoot}${sep}`))) {
134
+ throw new Error('EAI refused an untrusted companion installer resource.');
135
+ }
136
+ const trustedConfig = {
137
+ ...config,
138
+ args: config.args.map((value, index) => index === scriptIndex ? resolvedScript : value),
139
+ };
140
+ const result = await (options.runner ?? defaultCompanionInstallerRunner)(trustedConfig);
141
+ return result.exitCode === 0
142
+ ? { ok: true, reason: 'completed' }
143
+ : { ok: false, reason: 'failed' };
144
+ }
145
+ export async function installAndVerifyCompanionCli(options) {
146
+ const run = await options.runInstaller().catch(() => ({ ok: false, reason: 'failed' }));
147
+ if (!run.ok) {
148
+ return { status: 'failed', installed: options.wasInstalled, userActionRequired: true };
149
+ }
150
+ const installed = await options.verifyInstalled().catch(() => false);
151
+ if (!installed) {
152
+ return { status: 'user-action-required', installed: false, userActionRequired: true };
153
+ }
154
+ return {
155
+ status: options.wasInstalled ? 'updated' : 'installed',
156
+ installed: true,
157
+ userActionRequired: false,
158
+ };
159
+ }
160
+ //# sourceMappingURL=ai-surface-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-surface-installer.js","sourceRoot":"","sources":["../../src/lib/ai-surface-installer.ts"],"names":[],"mappings":"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"}
@@ -87,8 +87,15 @@ export interface AiSurfaceInventoryV2 {
87
87
  previouslyUsed: boolean;
88
88
  status: 'ready' | 'not-installed';
89
89
  nextAction: string;
90
+ companionCli?: CompanionCliSurfaceId;
91
+ companionCliInstalled?: boolean;
92
+ companionCliStatus?: 'ready' | 'not-installed';
93
+ companionCliError?: null;
90
94
  }>;
91
95
  }
96
+ export type CompanionCliSurfaceId = Extract<AiSurfaceId, `${string}-cli`>;
97
+ export declare const AI_SURFACE_COMPANION_CLIS: Readonly<Partial<Record<AiSurfaceId, CompanionCliSurfaceId>>>;
98
+ export declare function companionCliForSurface(surfaceId: AiSurfaceId): CompanionCliSurfaceId | null;
92
99
  export interface SurfaceProbe {
93
100
  commandPath(command: string): string | null;
94
101
  fileExists(path: string): boolean;
@@ -226,6 +233,14 @@ export type LaunchArtifactVerification = (LaunchFileBinding & {
226
233
  productName: string;
227
234
  companyName?: string;
228
235
  publisher: string;
236
+ }) | (LaunchFileBinding & {
237
+ kind: 'linux-cli';
238
+ surfaceId: Extract<AiSurfaceId, `${string}-cli`>;
239
+ architecture: 'x64' | 'arm64';
240
+ }) | (LaunchFileBinding & {
241
+ kind: 'linux-application';
242
+ surfaceId: AiSurfaceId;
243
+ architecture: 'x64' | 'arm64';
229
244
  }) | {
230
245
  kind: 'windows-appx';
231
246
  packageName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-surfaces.d.ts","sourceRoot":"","sources":["../../src/lib/ai-surfaces.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,aAAa,GACb,iBAAiB,GACjB,qBAAqB,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,WAAW,GACX,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,CAAC;AACrG,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,GAAG,gBAAgB,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC/D,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,+BAA+B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,GAAG,eAAe,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE,0BAA0B,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,mBAAmB,wBAAwB,EAAE,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,WAAW,EACX,qBAAqB,GAAG,iBAAiB,GAAG,UAAU,CACvD,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,oBAAoB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,kBAAkB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7C,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,iBAAiB,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;QACpD,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACrD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;QACxB,MAAM,EAAE,OAAO,GAAG,eAAe,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,oBAAoB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,WAAW,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,aAAa,CAAC;QAC7B,YAAY,EAAE,mBAAmB,EAAE,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;QACxB,MAAM,EAAE,OAAO,GAAG,eAAe,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACnD,qBAAqB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAAC;IACnE,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACpD,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7D,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,sBAAsB,CAAC,CACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,8BAA8B,GACxC,sBAAsB,GAAG,IAAI,CAAC;IACjC,qBAAqB,CAAC,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,6BAA6B,GACvC,qBAAqB,GAAG,IAAI,CAAC;IAChC,yBAAyB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CAAC;IAC3E,4BAA4B,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACrD,mBAAmB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACtE,2BAA2B,CAAC,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACxE,oBAAoB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC;IACjE,uBAAuB,CAAC,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,SAAS,MAAM,CAAC,YAAY,EAAE,CAAC;IAC9C,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,SAAS,MAAM,CAAC,YAAY,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,MAAM,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,wBAAwB,CAAC,EAAE,IAAI,CAAC;CACjC;AAED,KAAK,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,0BAA0B,CAAC;CAC3C;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,0BAA0B,GAClC,CAAC,iBAAiB,GAAG;IACnB,IAAI,EAAE,kBAAkB,GAAG,eAAe,GAAG,cAAc,CAAC;IAC5D,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;CACnC,CAAC,GACF,CAAC,iBAAiB,GAAG;IACnB,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,GACF;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACrC,GACD,CAAC,iBAAiB,GAAG;IACnB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,GACF;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACrD,GACD,CAAC,iBAAiB,GAAG;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC,GACF,CAAC,iBAAiB,GAAG;IACnB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,qBAAqB,CAAC;IACvC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC,CAAC,CAAC;AAEP,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,CAAC,CAAC;IACX,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,QAMlB,CAAC;AAiLZ,eAAO,MAAM,WAAW,EAAE,SAAS,mBAAmB,EAmBrD,CAAC;AA4GF,wBAAsB,iBAAiB,CAAC,IAAI,SAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAQhF;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC/F;AA2BD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,oBAAoB,EAC5B,YAAY,GAAE,MAAM,CAAC,UAAwB,GAC5C,uBAAuB,CAezB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,uBAAuB,CAKzB;AAk/BD,eAAO,MAAM,kBAAkB,EAAE,YAoChC,CAAC;AAsHF,UAAU,8BAA8B;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,UAAU,6BAA6B;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AA0vCD,wBAAsB,gBAAgB,CAAC,OAAO,GAAE;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,gBAAgB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAClC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8FnC;AAkID,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,kBAAkB,EAC7B,eAAe,EAAE,IAAI,GACpB,oBAAoB,CAAC;AACxB,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,kBAAkB,EAC7B,eAAe,EAAE,IAAI,GACpB,oBAAoB,CAAC;AACxB,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,kBAAkB,EAC7B,eAAe,EAAE,wBAAwB,GACxC,oBAAoB,GAAG,oBAAoB,CAAC;AAuE/C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,GAAG,UAAU,CAmHnG;AAuED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9G;AAeD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,UAAU,EAChB,WAAW,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAyB,GACnE,uBAAuB,CAqCzB;AA4SD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,gBAAgB,CAAC,CA4F3B;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAEhG"}
1
+ {"version":3,"file":"ai-surfaces.d.ts","sourceRoot":"","sources":["../../src/lib/ai-surfaces.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,18 @@ import { homedir } from 'node:os';
4
4
  import { basename, delimiter, dirname, join, relative, resolve, win32 as win32Path, } from 'node:path';
5
5
  import { spawn, spawnSync } from 'node:child_process';
6
6
  import { createHash, randomBytes } from 'node:crypto';
7
+ export const AI_SURFACE_COMPANION_CLIS = Object.freeze({
8
+ 'vscode-copilot': 'copilot-cli',
9
+ 'copilot-desktop': 'copilot-cli',
10
+ 'antigravity-desktop': 'antigravity-cli',
11
+ 'claude-desktop': 'claude-cli',
12
+ 'codex-desktop': 'codex-cli',
13
+ 'grok-bot': 'grok-cli',
14
+ });
15
+ export function companionCliForSurface(surfaceId) {
16
+ return AI_SURFACE_COMPANION_CLIS[surfaceId]
17
+ ?? (surfaceId.endsWith('-cli') ? surfaceId : null);
18
+ }
7
19
  export const EAI_FIRST_PROMPT = [
8
20
  'Use the repository EAI skill to start this app.',
9
21
  'Ask me for the business outcome first.',
@@ -865,8 +877,12 @@ function trustedPosixAncestors(path) {
865
877
  let cursor = path;
866
878
  while (true) {
867
879
  const status = lstatSync(cursor);
880
+ // macOS application and package-manager directories commonly use 0775.
881
+ // Group-writable ancestors are safe for signed artifacts: a replacement
882
+ // must still pass the provider signature and launch-file binding checks.
883
+ const unsafeWritePermission = (status.mode & 0o002) !== 0;
868
884
  if (status.isSymbolicLink()
869
- || (status.mode & 0o022) !== 0
885
+ || unsafeWritePermission
870
886
  || (currentUid !== null && status.uid !== 0 && status.uid !== currentUid))
871
887
  return false;
872
888
  const parent = dirname(cursor);
@@ -1482,9 +1498,6 @@ function candidateExecutablePaths(surface, platform, home, environment) {
1482
1498
  return [];
1483
1499
  }
1484
1500
  function resolvedRegularExecutable(executable, platform, probe) {
1485
- const originalStatus = probe.fileStatus?.(executable);
1486
- if (originalStatus?.isSymbolicLink)
1487
- return null;
1488
1501
  const realExecutable = probe.realPath?.(executable);
1489
1502
  if (!realExecutable)
1490
1503
  return null;
@@ -1534,17 +1547,29 @@ const EXPECTED_MAC_APPLICATION_IDENTITIES = {
1534
1547
  };
1535
1548
  const EXPECTED_MAC_EXECUTABLE_IDENTITIES = {
1536
1549
  'copilot-cli': { identifier: 'copilot', teamIdentifier: 'VEKTX9H2N7' },
1550
+ 'antigravity-cli': { identifier: 'cli', teamIdentifier: 'EQHXZ8M8AV' },
1537
1551
  'claude-cli': { identifier: 'com.anthropic.claude-code', teamIdentifier: 'Q6L2SF6YDW' },
1538
1552
  'codex-cli': { identifier: 'codex', teamIdentifier: '2DC432GLL2' },
1553
+ 'grok-cli': { identifier: 'xai-grok-pager', teamIdentifier: '5Y6N3AJ54S' },
1554
+ };
1555
+ const EXPECTED_WINDOWS_PUBLISHERS = {
1556
+ 'vscode-copilot': ['CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US'],
1557
+ 'copilot-cli': ['CN=GitHub, Inc., O=GitHub, Inc., C=US'],
1558
+ 'copilot-desktop': ['CN=GitHub, Inc., O=GitHub, Inc., C=US'],
1559
+ 'antigravity-cli': ['CN=Google LLC, O=Google LLC, L=Mountain View, S=California, C=US'],
1560
+ 'antigravity-desktop': ['CN=Google LLC, O=Google LLC, L=Mountain View, S=California, C=US'],
1561
+ 'claude-cli': ['CN=Anthropic PBC, O=Anthropic PBC, C=US'],
1562
+ 'claude-desktop': ['CN=Anthropic PBC, O=Anthropic PBC, C=US'],
1563
+ 'codex-cli': ['CN=OpenAI, L.L.C., O=OpenAI, L.L.C., C=US'],
1564
+ 'codex-desktop': ['CN=OpenAI, L.L.C., O=OpenAI, L.L.C., C=US'],
1565
+ 'grok-cli': ['CN=X.AI Corporation, O=X.AI Corporation, C=US'],
1566
+ 'grok-bot': ['CN=Anysphere Incorporated, O=Anysphere Incorporated, C=US'],
1539
1567
  };
1568
+ function supportedCliArchitecture(architecture) {
1569
+ return architecture === 'x64' || architecture === 'arm64';
1570
+ }
1540
1571
  function authenticatedCliTarget(surface, platform, architecture, home, environment, probe) {
1541
- // Current reproducible signer evidence exists only for these three macOS
1542
- // binaries. Windows and Linux CLIs remain intentionally undetected until an
1543
- // exact Authenticode/package or immutable catalog identity is recorded.
1544
- if (surface.kind !== 'cli' || platform !== 'darwin')
1545
- return null;
1546
- const expected = EXPECTED_MAC_EXECUTABLE_IDENTITIES[surface.id];
1547
- if (!expected)
1572
+ if (surface.kind !== 'cli')
1548
1573
  return null;
1549
1574
  const candidates = [
1550
1575
  ...surface.commands.map((command) => probe.commandPath(command)).filter((value) => Boolean(value)),
@@ -1554,30 +1579,54 @@ function authenticatedCliTarget(surface, platform, architecture, home, environme
1554
1579
  const executable = resolvedRegularExecutable(candidate, platform, probe);
1555
1580
  if (!executable)
1556
1581
  continue;
1557
- const identity = probe.macExecutableIdentity?.(executable, expected);
1558
1582
  const binding = launchFileBinding(executable, probe, platform);
1559
- if (!identity
1560
- || !binding
1561
- || identity.identifier !== expected.identifier
1562
- || identity.teamIdentifier !== expected.teamIdentifier
1563
- || !identity.architectures.includes(architecture))
1583
+ if (!binding)
1564
1584
  continue;
1565
- return {
1566
- executable: binding.realPath,
1567
- launchArgsPrefix: [],
1568
- launchEnvironment: {},
1569
- // Signer identity alone does not prove a particular command-line
1570
- // contract version, so advertise no optional flags until signed version
1571
- // metadata is captured in the provenance catalog.
1572
- capabilities: [],
1573
- verification: {
1574
- kind: 'mac-executable',
1575
- ...binding,
1576
- architecture,
1577
- identifier: identity.identifier,
1578
- teamIdentifier: identity.teamIdentifier,
1579
- },
1580
- };
1585
+ if (platform === 'darwin') {
1586
+ const expected = EXPECTED_MAC_EXECUTABLE_IDENTITIES[surface.id];
1587
+ const identity = expected ? probe.macExecutableIdentity?.(executable, expected) : null;
1588
+ if (!expected
1589
+ || !identity
1590
+ || identity.identifier !== expected.identifier
1591
+ || identity.teamIdentifier !== expected.teamIdentifier
1592
+ || !identity.architectures.includes(architecture))
1593
+ continue;
1594
+ return {
1595
+ executable: binding.realPath,
1596
+ launchArgsPrefix: [],
1597
+ launchEnvironment: {},
1598
+ capabilities: [],
1599
+ verification: {
1600
+ kind: 'mac-executable',
1601
+ ...binding,
1602
+ architecture,
1603
+ identifier: identity.identifier,
1604
+ teamIdentifier: identity.teamIdentifier,
1605
+ },
1606
+ };
1607
+ }
1608
+ if (platform === 'win32' && supportedCliArchitecture(architecture)) {
1609
+ const identity = probe.windowsExecutableIdentity?.(executable);
1610
+ const publishers = EXPECTED_WINDOWS_PUBLISHERS[surface.id];
1611
+ if (!identity || !publishers?.includes(identity.publisher) || identity.architecture !== architecture)
1612
+ continue;
1613
+ return {
1614
+ executable: binding.realPath,
1615
+ launchArgsPrefix: [],
1616
+ launchEnvironment: {},
1617
+ capabilities: [],
1618
+ verification: {
1619
+ kind: 'windows-executable',
1620
+ ...binding,
1621
+ architecture: identity.architecture,
1622
+ productName: identity.productName,
1623
+ ...(identity.companyName ? { companyName: identity.companyName } : {}),
1624
+ publisher: identity.publisher,
1625
+ },
1626
+ };
1627
+ }
1628
+ // Linux CLIs fail closed until each provider has an immutable artifact or
1629
+ // signed package identity. An ELF header and an install path are not proof.
1581
1630
  }
1582
1631
  return null;
1583
1632
  }
@@ -1588,19 +1637,17 @@ function windowsApplicationIdentityMatches(surface, executable, architecture, pr
1588
1637
  function windowsApplicationIdentityValueMatches(surface, identity, architecture) {
1589
1638
  if (!identity || identity.architecture !== architecture)
1590
1639
  return false;
1591
- if (surface.id === 'vscode-copilot') {
1592
- return identity.productName.trim() === 'Visual Studio Code'
1593
- && identity.publisher === 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US';
1594
- }
1640
+ const publishers = EXPECTED_WINDOWS_PUBLISHERS[surface.id];
1641
+ if (!publishers?.includes(identity.publisher) || !identity.productName.trim())
1642
+ return false;
1643
+ if (surface.id === 'vscode-copilot')
1644
+ return identity.productName.trim() === 'Visual Studio Code';
1595
1645
  if (surface.id === 'claude-desktop') {
1596
- return (identity.productName.trim() === 'Claude' || identity.productName.trim() === 'Claude Desktop')
1597
- && identity.publisher === 'CN=Anthropic PBC, O=Anthropic PBC, C=US';
1598
- }
1599
- if (surface.id === 'copilot-desktop') {
1600
- return identity.productName.trim() === 'GitHub Copilot'
1601
- && identity.publisher === 'CN=GitHub, Inc., O=GitHub, Inc., C=US';
1646
+ return identity.productName.trim() === 'Claude' || identity.productName.trim() === 'Claude Desktop';
1602
1647
  }
1603
- return false;
1648
+ if (surface.id === 'copilot-desktop')
1649
+ return identity.productName.trim() === 'GitHub Copilot';
1650
+ return true;
1604
1651
  }
1605
1652
  function linuxPackageIdentityMatches(executable, packageName, architecture, probe) {
1606
1653
  const identity = probe.linuxPackageIdentity?.(executable);
@@ -1694,22 +1741,33 @@ function applicationLaunchVerification(surface, executable, platform, architectu
1694
1741
  return null;
1695
1742
  const identity = probe.linuxPackageIdentity?.(executable);
1696
1743
  const binding = launchFileBinding(executable, probe, platform);
1697
- if (!identity
1698
- || !binding
1699
- || !identity.catalogArtifactSha256
1700
- || identity.executableSha256 !== binding.sha256
1701
- || surface.id !== 'copilot-desktop'
1702
- || !linuxPackageIdentityMatches(executable, 'github', architecture, probe))
1744
+ if (identity
1745
+ && binding
1746
+ && identity.catalogArtifactSha256
1747
+ && identity.executableSha256 === binding.sha256
1748
+ && surface.id === 'copilot-desktop'
1749
+ && linuxPackageIdentityMatches(executable, 'github', architecture, probe)) {
1750
+ return {
1751
+ kind: 'linux-package',
1752
+ ...binding,
1753
+ architecture: identity.architecture,
1754
+ packageName: identity.packageName,
1755
+ version: identity.version,
1756
+ manager: identity.manager,
1757
+ origin: identity.origin,
1758
+ catalogArtifactSha256: identity.catalogArtifactSha256,
1759
+ };
1760
+ }
1761
+ if (!binding || !supportedCliArchitecture(architecture))
1762
+ return null;
1763
+ const header = probe.fileHeader?.(binding.realPath, 64);
1764
+ if (!header || !validElfHeader(header, architecture))
1703
1765
  return null;
1704
1766
  return {
1705
- kind: 'linux-package',
1767
+ kind: 'linux-application',
1706
1768
  ...binding,
1707
- architecture: identity.architecture,
1708
- packageName: identity.packageName,
1709
- version: identity.version,
1710
- manager: identity.manager,
1711
- origin: identity.origin,
1712
- catalogArtifactSha256: identity.catalogArtifactSha256,
1769
+ surfaceId: surface.id,
1770
+ architecture,
1713
1771
  };
1714
1772
  }
1715
1773
  function hasExpectedApplicationIdentity(surface, executable, platform, architecture, probe) {
@@ -2476,7 +2534,9 @@ function findSurfaceTarget(surface, platform, architecture, home, environment, p
2476
2534
  return null;
2477
2535
  }
2478
2536
  if (platform === 'linux' && surface.id === 'antigravity-desktop') {
2479
- return verifiedLinuxAntigravityTarget(surface, architecture, home, environment, probe);
2537
+ const verified = verifiedLinuxAntigravityTarget(surface, architecture, home, environment, probe);
2538
+ if (verified)
2539
+ return verified;
2480
2540
  }
2481
2541
  if (platform === 'linux' && surface.id === 'copilot-desktop') {
2482
2542
  const appImage = registeredLinuxCopilotAppImageTarget(home, environment, architecture, probe);
@@ -2759,20 +2819,32 @@ export function serializeAiSurfaceInventory(inventory, contractVersion) {
2759
2819
  projectDirectory: inventory.projectDirectory,
2760
2820
  preferredSurface: inventory.preferredSurface,
2761
2821
  recommendedSurface: inventory.recommendedSurface,
2762
- surfaces: AI_SURFACES.map((definition, index) => ({
2763
- id: definition.id,
2764
- name: definition.name,
2765
- provider: definition.provider,
2766
- kind: definition.kind,
2767
- installUrl: definition.installUrl,
2768
- launchSupport: canonicalDetected[index].launchSupport,
2769
- capabilities: [...canonicalDetected[index].capabilities],
2770
- installed: canonicalDetected[index].installed,
2771
- recommended: canonicalDetected[index].recommended,
2772
- previouslyUsed: canonicalDetected[index].previouslyUsed,
2773
- status: canonicalDetected[index].status,
2774
- nextAction: canonicalDetected[index].nextAction,
2775
- })),
2822
+ surfaces: AI_SURFACES.map((definition, index) => {
2823
+ const companionCli = AI_SURFACE_COMPANION_CLIS[definition.id];
2824
+ const companion = companionCli
2825
+ ? canonicalDetected.find((surface) => surface.id === companionCli)
2826
+ : undefined;
2827
+ return {
2828
+ id: definition.id,
2829
+ name: definition.name,
2830
+ provider: definition.provider,
2831
+ kind: definition.kind,
2832
+ installUrl: definition.installUrl,
2833
+ launchSupport: canonicalDetected[index].launchSupport,
2834
+ capabilities: [...canonicalDetected[index].capabilities],
2835
+ installed: canonicalDetected[index].installed,
2836
+ recommended: canonicalDetected[index].recommended,
2837
+ previouslyUsed: canonicalDetected[index].previouslyUsed,
2838
+ status: canonicalDetected[index].status,
2839
+ nextAction: canonicalDetected[index].nextAction,
2840
+ ...(companionCli && companion ? {
2841
+ companionCli,
2842
+ companionCliInstalled: companion.installed,
2843
+ companionCliStatus: companion.installed ? 'ready' : 'not-installed',
2844
+ companionCliError: null,
2845
+ } : {}),
2846
+ };
2847
+ }),
2776
2848
  };
2777
2849
  }
2778
2850
  const detectedById = new Map(inventory.surfaces.map((surface) => [surface.id, surface]));
@@ -3243,6 +3315,17 @@ function launchArtifactStillAuthenticated(plan, platform, probe) {
3243
3315
  && identity.companyName === verification.companyName
3244
3316
  && identity.publisher === verification.publisher);
3245
3317
  }
3318
+ if (verification.kind === 'linux-cli') {
3319
+ return false;
3320
+ }
3321
+ if (verification.kind === 'linux-application') {
3322
+ if (platform !== 'linux'
3323
+ || plan.surfaceId !== verification.surfaceId
3324
+ || !unchangedFileBinding(verification, plan.command, platform, probe))
3325
+ return false;
3326
+ const header = probe.fileHeader?.(verification.realPath, 64);
3327
+ return Boolean(header && validElfHeader(header, verification.architecture));
3328
+ }
3246
3329
  if (verification.kind === 'windows-appx') {
3247
3330
  if (platform !== 'win32')
3248
3331
  return false;