dsh-cliworker-now 0.7.6 → 0.7.8

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 (181) hide show
  1. package/README.en.md +53 -11
  2. package/README.md +56 -11
  3. package/lib/account-models.mjs +49 -18
  4. package/lib/client.js +1221 -151
  5. package/lib/client.js.map +1 -1
  6. package/lib/grok-catalog.mjs +2 -2
  7. package/lib/hermes-native-entry.py +48 -13
  8. package/lib/hermes-nous-refresh.py +331 -0
  9. package/lib/index.js +9469 -6030
  10. package/lib/index.js.map +1 -1
  11. package/lib/native-launch.mjs +62 -7
  12. package/lib/native-spawn.mjs +32 -0
  13. package/lib/pi-installation.mjs +27 -3
  14. package/lib/pi-native-catalog.mjs +17 -7
  15. package/lib/pi-omp-bridge.mjs +2 -2
  16. package/lib/pi-omp-refresh.mjs +3 -3
  17. package/lib/private-launch.mjs +6 -2
  18. package/lib/terminal-bridge.mjs +2 -2
  19. package/lib/typert.host.js +265 -25
  20. package/lib/typert.remote-client.d.ts +8 -0
  21. package/lib/typert.remote-client.d.ts.map +1 -1
  22. package/lib/typert.remote-client.js +241 -25
  23. package/lib/types/client/account-query-queue.d.ts +16 -0
  24. package/lib/types/client/account-query-queue.js +61 -0
  25. package/lib/types/client/account-query-queue.js.map +1 -0
  26. package/lib/types/client/account-terminal.d.ts +6 -2
  27. package/lib/types/client/account-terminal.js +260 -31
  28. package/lib/types/client/account-terminal.js.map +1 -1
  29. package/lib/types/client/cli-executable-settings.d.ts +13 -0
  30. package/lib/types/client/cli-executable-settings.js +128 -0
  31. package/lib/types/client/cli-executable-settings.js.map +1 -0
  32. package/lib/types/client/management-styles.d.ts +1 -1
  33. package/lib/types/client/management-styles.js +4 -0
  34. package/lib/types/client/management-styles.js.map +1 -1
  35. package/lib/types/client/settings-dialog.js +196 -80
  36. package/lib/types/client/settings-dialog.js.map +1 -1
  37. package/lib/types/client/styles.d.ts +1 -1
  38. package/lib/types/client/styles.js +18 -16
  39. package/lib/types/client/styles.js.map +1 -1
  40. package/lib/types/client/zcode-login-link-provider.d.ts +9 -0
  41. package/lib/types/client/zcode-login-link-provider.js +105 -0
  42. package/lib/types/client/zcode-login-link-provider.js.map +1 -0
  43. package/lib/types/client/zcode-login-link.d.ts +16 -0
  44. package/lib/types/client/zcode-login-link.js +194 -0
  45. package/lib/types/client/zcode-login-link.js.map +1 -0
  46. package/lib/types/host/account-models.d.mts +10 -2
  47. package/lib/types/host/account-models.mjs +49 -18
  48. package/lib/types/host/accounts.d.ts +3 -2
  49. package/lib/types/host/accounts.js +168 -29
  50. package/lib/types/host/accounts.js.map +1 -1
  51. package/lib/types/host/adapters.d.ts +3 -1
  52. package/lib/types/host/adapters.js +138 -11
  53. package/lib/types/host/adapters.js.map +1 -1
  54. package/lib/types/host/agy-background-environment.d.ts +2 -0
  55. package/lib/types/host/agy-background-environment.js +7 -0
  56. package/lib/types/host/agy-background-environment.js.map +1 -0
  57. package/lib/types/host/agy-models.d.ts +2 -1
  58. package/lib/types/host/agy-models.js +6 -6
  59. package/lib/types/host/agy-models.js.map +1 -1
  60. package/lib/types/host/agy-windows-account.d.ts +14 -0
  61. package/lib/types/host/agy-windows-account.js +104 -0
  62. package/lib/types/host/agy-windows-account.js.map +1 -0
  63. package/lib/types/host/authorized-catalog.js +13 -4
  64. package/lib/types/host/authorized-catalog.js.map +1 -1
  65. package/lib/types/host/claude-native-oauth.d.ts +17 -0
  66. package/lib/types/host/claude-native-oauth.js +274 -0
  67. package/lib/types/host/claude-native-oauth.js.map +1 -0
  68. package/lib/types/host/claude-own-route.d.ts +45 -0
  69. package/lib/types/host/claude-own-route.js +375 -0
  70. package/lib/types/host/claude-own-route.js.map +1 -0
  71. package/lib/types/host/cli-account-binding.d.ts +2 -1
  72. package/lib/types/host/cli-account-binding.js +64 -21
  73. package/lib/types/host/cli-account-binding.js.map +1 -1
  74. package/lib/types/host/cli-executable-paths.d.ts +30 -0
  75. package/lib/types/host/cli-executable-paths.js +272 -0
  76. package/lib/types/host/cli-executable-paths.js.map +1 -0
  77. package/lib/types/host/codex-models.d.ts +3 -1
  78. package/lib/types/host/codex-models.js +41 -4
  79. package/lib/types/host/codex-models.js.map +1 -1
  80. package/lib/types/host/extended-adapters.d.ts +3 -2
  81. package/lib/types/host/extended-adapters.js +9 -7
  82. package/lib/types/host/extended-adapters.js.map +1 -1
  83. package/lib/types/host/first-party-models.d.ts +5 -0
  84. package/lib/types/host/first-party-models.js +173 -50
  85. package/lib/types/host/first-party-models.js.map +1 -1
  86. package/lib/types/host/hermes-accounts.js +68 -9
  87. package/lib/types/host/hermes-accounts.js.map +1 -1
  88. package/lib/types/host/hermes-adapter.d.ts +3 -0
  89. package/lib/types/host/hermes-adapter.js +13 -4
  90. package/lib/types/host/hermes-adapter.js.map +1 -1
  91. package/lib/types/host/hermes-installation.js +54 -35
  92. package/lib/types/host/hermes-installation.js.map +1 -1
  93. package/lib/types/host/hermes-models.js +21 -2
  94. package/lib/types/host/hermes-models.js.map +1 -1
  95. package/lib/types/host/hermes-native-entry.py +48 -13
  96. package/lib/types/host/hermes-nous-refresh.py +331 -0
  97. package/lib/types/host/hermes-nous.d.ts +5 -1
  98. package/lib/types/host/hermes-nous.js +5 -5
  99. package/lib/types/host/hermes-nous.js.map +1 -1
  100. package/lib/types/host/hermes-renewal.d.ts +27 -0
  101. package/lib/types/host/hermes-renewal.js +292 -0
  102. package/lib/types/host/hermes-renewal.js.map +1 -0
  103. package/lib/types/host/hermes-windows-installation.d.ts +5 -0
  104. package/lib/types/host/hermes-windows-installation.js +91 -0
  105. package/lib/types/host/hermes-windows-installation.js.map +1 -0
  106. package/lib/types/host/index.d.ts +12 -0
  107. package/lib/types/host/index.js +138 -8
  108. package/lib/types/host/index.js.map +1 -1
  109. package/lib/types/host/kimi-accounts.d.ts +2 -0
  110. package/lib/types/host/kimi-accounts.js +4 -2
  111. package/lib/types/host/kimi-accounts.js.map +1 -1
  112. package/lib/types/host/kimi-oauth-models.d.ts +14 -0
  113. package/lib/types/host/kimi-oauth-models.js +246 -0
  114. package/lib/types/host/kimi-oauth-models.js.map +1 -0
  115. package/lib/types/host/mimo-metadata-cache.d.ts +22 -0
  116. package/lib/types/host/mimo-metadata-cache.js +121 -0
  117. package/lib/types/host/mimo-metadata-cache.js.map +1 -0
  118. package/lib/types/host/native-capability-cache.d.ts +11 -0
  119. package/lib/types/host/native-capability-cache.js +94 -0
  120. package/lib/types/host/native-capability-cache.js.map +1 -0
  121. package/lib/types/host/native-launch.mjs +62 -7
  122. package/lib/types/host/native-process.d.ts +3 -1
  123. package/lib/types/host/native-process.js +30 -5
  124. package/lib/types/host/native-process.js.map +1 -1
  125. package/lib/types/host/native-spawn.mjs +32 -0
  126. package/lib/types/host/opencode-native.js +13 -0
  127. package/lib/types/host/opencode-native.js.map +1 -1
  128. package/lib/types/host/pi-installation.d.mts +1 -1
  129. package/lib/types/host/pi-installation.mjs +27 -3
  130. package/lib/types/host/pi-omp-adapter.js +17 -3
  131. package/lib/types/host/pi-omp-adapter.js.map +1 -1
  132. package/lib/types/host/pi-omp-native.js +5 -3
  133. package/lib/types/host/pi-omp-native.js.map +1 -1
  134. package/lib/types/host/pi-omp-refresh.mjs +3 -3
  135. package/lib/types/host/private-launch.mjs +23 -0
  136. package/lib/types/host/process.d.ts +3 -0
  137. package/lib/types/host/process.js +3 -1
  138. package/lib/types/host/process.js.map +1 -1
  139. package/lib/types/host/routing.js +25 -2
  140. package/lib/types/host/routing.js.map +1 -1
  141. package/lib/types/host/runtime.js +21 -5
  142. package/lib/types/host/runtime.js.map +1 -1
  143. package/lib/types/host/settings-catalog-cache.d.ts +28 -0
  144. package/lib/types/host/settings-catalog-cache.js +189 -0
  145. package/lib/types/host/settings-catalog-cache.js.map +1 -0
  146. package/lib/types/host/windows-account-bootstrap.ps1 +44 -0
  147. package/lib/types/host/windows-account-launch.mjs +47 -0
  148. package/lib/types/host/windows-account-owner.ps1 +137 -0
  149. package/lib/types/host/windows-account-stdio.mjs +19 -0
  150. package/lib/types/host/windows-account-terminal.d.ts +17 -0
  151. package/lib/types/host/windows-account-terminal.js +208 -0
  152. package/lib/types/host/windows-account-terminal.js.map +1 -0
  153. package/lib/types/host/windows-agy-account.ps1 +81 -0
  154. package/lib/types/host/windows-cli-installation.d.ts +35 -0
  155. package/lib/types/host/windows-cli-installation.js +164 -0
  156. package/lib/types/host/windows-cli-installation.js.map +1 -0
  157. package/lib/types/host/windows-codex-launch.d.ts +9 -0
  158. package/lib/types/host/windows-codex-launch.js +216 -0
  159. package/lib/types/host/windows-codex-launch.js.map +1 -0
  160. package/lib/types/host/windows-desktop-cli-installation.d.ts +20 -0
  161. package/lib/types/host/windows-desktop-cli-installation.js +420 -0
  162. package/lib/types/host/windows-desktop-cli-installation.js.map +1 -0
  163. package/lib/types/host/windows-hidden-launch.mjs +51 -0
  164. package/lib/types/host/windows-hidden-process.d.ts +12 -0
  165. package/lib/types/host/windows-hidden-process.js +116 -0
  166. package/lib/types/host/windows-hidden-process.js.map +1 -0
  167. package/lib/types/host/zcode-adapter.js +5 -1
  168. package/lib/types/host/zcode-adapter.js.map +1 -1
  169. package/lib/types/host/zcode-grok-accounts.d.ts +3 -1
  170. package/lib/types/host/zcode-grok-accounts.js +60 -11
  171. package/lib/types/host/zcode-grok-accounts.js.map +1 -1
  172. package/lib/types/shared/accounts.d.ts +4 -0
  173. package/lib/types/shared/cli-settings.d.ts +8 -0
  174. package/lib/windows-account-bootstrap.ps1 +44 -0
  175. package/lib/windows-account-launch.mjs +47 -0
  176. package/lib/windows-account-owner.ps1 +137 -0
  177. package/lib/windows-account-stdio.mjs +19 -0
  178. package/lib/windows-agy-account.ps1 +81 -0
  179. package/lib/windows-hidden-launch.mjs +51 -0
  180. package/lib/zcode-resume.mjs +2 -2
  181. package/package.json +2 -2
@@ -0,0 +1,164 @@
1
+ import { closeSync, existsSync, fstatSync, lstatSync, openSync, readFileSync, readSync, realpathSync, statSync, } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, isAbsolute, join, resolve, win32 } from 'node:path';
4
+ import { resolveNativeEntry } from './native-launch.mjs';
5
+ export class WindowsCliInstallationError extends Error {
6
+ installed;
7
+ code = 'CLI_INSTALLATION_UNAVAILABLE';
8
+ constructor(message, installed = false) {
9
+ super(message);
10
+ this.installed = installed;
11
+ this.name = 'WindowsCliInstallationError';
12
+ }
13
+ }
14
+ /** A completed desktop/PATH search found no CLI; absence is not a broken installation. */
15
+ export class WindowsCliNotFoundError extends WindowsCliInstallationError {
16
+ constructor(cli) {
17
+ super(`${cli === 'zcode' ? 'ZCode' : 'OpenCode'} CLI 未找到,请配置 ${cli}Executable`);
18
+ this.name = 'WindowsCliNotFoundError';
19
+ }
20
+ }
21
+ const unavailableCodex = () => new WindowsCliInstallationError('Codex Windows 应用包入口无法确认,请检查安装', true);
22
+ function directory(env, name, fallback) {
23
+ const value = env[name]?.trim() || fallback;
24
+ if (!isAbsolute(value))
25
+ throw new WindowsCliInstallationError('Windows CLI 安装目录配置无效');
26
+ return value;
27
+ }
28
+ /** Fixed installer locations only; never scan arbitrary drives or select a venv by recency. */
29
+ export function windowsCliCandidates(cli, options = {}) {
30
+ const env = options.env ?? process.env, home = options.home ?? homedir();
31
+ if (cli === 'codex') {
32
+ const npm = join(directory(env, 'APPDATA', join(home, 'AppData', 'Roaming')), 'npm');
33
+ return [join(npm, 'codex.cmd')];
34
+ }
35
+ const root = join(directory(env, 'LOCALAPPDATA', join(home, 'AppData', 'Local')), 'hermes');
36
+ return [
37
+ join(root, 'bin', 'hermes.exe'),
38
+ join(root, 'bin', 'hermes.cmd'),
39
+ join(root, 'hermes-agent', 'venv', 'Scripts', 'hermes.exe'),
40
+ ];
41
+ }
42
+ /** A residue is not a runnable installation and is not evidence of an account. */
43
+ export function hasWindowsHermesInstallDirectory(options = {}) {
44
+ const env = options.env ?? process.env, home = options.home ?? homedir();
45
+ return existsSync(join(directory(env, 'LOCALAPPDATA', join(home, 'AppData', 'Local')), 'hermes'));
46
+ }
47
+ function nativePe(path) {
48
+ const canonical = realpathSync(path), fd = openSync(canonical, 'r');
49
+ try {
50
+ const info = fstatSync(fd), head = Buffer.alloc(64), signature = Buffer.alloc(4);
51
+ if (!info.isFile() || readSync(fd, head, 0, 64, 0) !== 64 || head.toString('ascii', 0, 2) !== 'MZ')
52
+ throw new Error('Not a native PE file');
53
+ const offset = head.readUInt32LE(0x3c);
54
+ if (offset < 64 ||
55
+ offset + 4 > info.size ||
56
+ readSync(fd, signature, 0, 4, offset) !== 4 ||
57
+ signature.toString('hex') !== '50450000')
58
+ throw new Error('Invalid PE signature');
59
+ return canonical;
60
+ }
61
+ finally {
62
+ closeSync(fd);
63
+ }
64
+ }
65
+ /** Validate an automatically discovered npm shim against Codex's own package, not just its name. */
66
+ export function validateWindowsCodexNpmEntry(path) {
67
+ try {
68
+ const root = join(dirname(path), 'node_modules', '@openai', 'codex');
69
+ const manifestPath = join(root, 'package.json');
70
+ if (statSync(manifestPath).size > 128 * 1024)
71
+ throw new Error('Oversized package metadata');
72
+ const data = JSON.parse(readFileSync(manifestPath, 'utf8'));
73
+ const bin = typeof data.bin === 'string' ? data.bin : data.bin?.codex;
74
+ if (data.name !== '@openai/codex' ||
75
+ typeof bin !== 'string' ||
76
+ isAbsolute(bin) ||
77
+ bin.split(/[\\/]/).includes('..'))
78
+ throw new Error('Mismatched package identity');
79
+ const entry = resolveNativeEntry(path, 'win32');
80
+ if (realpathSync(entry) !== realpathSync(resolve(root, bin)))
81
+ throw new Error('Mismatched package entry');
82
+ return path;
83
+ }
84
+ catch {
85
+ throw new WindowsCliInstallationError('Codex npm 安装入口无法确认,请检查安装', true);
86
+ }
87
+ }
88
+ export function presentWindowsCliCandidate(cli, options = {}) {
89
+ for (const path of windowsCliCandidates(cli, options)) {
90
+ try {
91
+ lstatSync(path);
92
+ }
93
+ catch (error) {
94
+ if (['ENOENT', 'ENOTDIR'].includes(error.code ?? ''))
95
+ continue;
96
+ throw new WindowsCliInstallationError('Windows CLI 安装入口无法读取,请检查安装', true);
97
+ }
98
+ if (cli === 'codex')
99
+ return validateWindowsCodexNpmEntry(path);
100
+ try {
101
+ const entry = resolveNativeEntry(path, 'win32');
102
+ if (/\.exe$/i.test(entry))
103
+ nativePe(entry);
104
+ else if (entry !== path || !/\.cmd$/i.test(entry))
105
+ throw new Error('Unsupported Hermes entry');
106
+ // Fixed Python cmd launchers are statically checked by resolveNativeEntry;
107
+ // the existing Hermes verifier preserves the installer's own interpreter.
108
+ return path;
109
+ }
110
+ catch {
111
+ throw new WindowsCliInstallationError('Hermes Windows 安装入口无法确认,请检查安装', true);
112
+ }
113
+ }
114
+ return undefined;
115
+ }
116
+ const codexFamily = 'OpenAI.Codex_2p2nqsd0c76g0';
117
+ const codexPublisher = 'CN=50BDFD77-8903-4850-9FFE-6E8522F64D5B';
118
+ /** Query current-user registered packages, never guess the newest WindowsApps directory. */
119
+ export const CODEX_APPX_QUERY = `$ErrorActionPreference='Stop'; [Console]::OutputEncoding=[Text.UTF8Encoding]::new($false); $p=@(Get-AppxPackage -Name 'OpenAI.Codex'); if($p.Count -eq 0){'null';exit 0}; if($p.Count -ne 1){throw 'Ambiguous Codex package'}; $v=$p[0]; [ordered]@{name=$v.Name;family=$v.PackageFamilyName;fullName=$v.PackageFullName;publisher=$v.Publisher;signature=[string]$v.SignatureKind;status=[string]$v.Status;location=$v.InstallLocation}|ConvertTo-Json -Compress`;
120
+ /** Exported separately for synthetic identity/relocation tests; no process or account access. */
121
+ export function codexAppxExecutable(raw, validateFile = nativePe) {
122
+ try {
123
+ const value = JSON.parse(raw.trim());
124
+ if (value === null)
125
+ return undefined;
126
+ if (!value || typeof value !== 'object' || Array.isArray(value))
127
+ throw new Error('Invalid package record');
128
+ const p = value;
129
+ if (p.name !== 'OpenAI.Codex' ||
130
+ p.family !== codexFamily ||
131
+ p.publisher !== codexPublisher ||
132
+ p.signature !== 'Store' ||
133
+ p.status !== 'Ok' ||
134
+ typeof p.fullName !== 'string' ||
135
+ !/^OpenAI\.Codex_\d+(?:\.\d+){3}_(?:x64|arm64|x86)__2p2nqsd0c76g0$/.test(p.fullName) ||
136
+ typeof p.location !== 'string' ||
137
+ !win32.isAbsolute(p.location) ||
138
+ p.location.includes('\0') ||
139
+ p.location.startsWith('\\\\') ||
140
+ win32.basename(p.location).toLowerCase() !== p.fullName.toLowerCase())
141
+ throw new Error('Unverified package identity');
142
+ const candidate = win32.join(p.location, 'app', 'resources', 'codex.exe');
143
+ const canonical = validateFile(candidate);
144
+ // A registered package's CLI must stay in that package; never follow a swapped link elsewhere.
145
+ if (win32.normalize(canonical).toLowerCase() !== win32.normalize(candidate).toLowerCase())
146
+ throw new Error('Redirected package entry');
147
+ return canonical;
148
+ }
149
+ catch {
150
+ throw unavailableCodex();
151
+ }
152
+ }
153
+ export async function findWindowsCodexAppx(capture, signal, env = process.env) {
154
+ signal.throwIfAborted();
155
+ const windows = env.SystemRoot || env.WINDIR || 'C:\\Windows';
156
+ if (!win32.isAbsolute(windows))
157
+ throw new WindowsCliInstallationError('Windows 系统目录配置无效');
158
+ const command = win32.join(windows, 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe');
159
+ const encoded = Buffer.from(CODEX_APPX_QUERY, 'utf16le').toString('base64');
160
+ const raw = await capture([command, '-NoLogo', '-NoProfile', '-NonInteractive', '-EncodedCommand', encoded], homedir());
161
+ signal.throwIfAborted();
162
+ return codexAppxExecutable(raw);
163
+ }
164
+ //# sourceMappingURL=windows-cli-installation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-cli-installation.js","sourceRoot":"","sources":["../../../src/host/windows-cli-installation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface WindowsCodexLaunch {
2
+ argv: string[];
3
+ env: NodeJS.ProcessEnv;
4
+ }
5
+ /** A background-only optimization. It never changes the saved installation entry or the caller's env. */
6
+ export declare function windowsCodexBackgroundLaunch(argv: readonly string[], env?: NodeJS.ProcessEnv, options?: {
7
+ platform?: NodeJS.Platform;
8
+ arch?: string;
9
+ }): WindowsCodexLaunch | undefined;
@@ -0,0 +1,216 @@
1
+ import { createHash } from 'node:crypto';
2
+ import * as nodeFs from 'node:fs';
3
+ import { createRequire } from 'node:module';
4
+ import { basename, dirname, isAbsolute, join, parse, relative, resolve, sep, win32 } from 'node:path';
5
+ import { WindowsCliInstallationError } from "./windows-cli-installation.js";
6
+ // Verified against the installed official @openai/codex 0.162.1 bin/codex.js.
7
+ // A package name/version alone does not establish a launcher's environment semantics.
8
+ const supportedWrapper = '61b0194f3bb6534439c8d26a3ed57d0805f84b884588b761795323eeb92fcf70';
9
+ const packageName = '@openai/codex';
10
+ const managerFlags = ['CODEX_MANAGED_BY_NPM', 'CODEX_MANAGED_BY_BUN', 'CODEX_MANAGED_BY_PNPM', 'CODEX_MANAGED_BY_VITE_PLUS'];
11
+ let physicalFiles;
12
+ function files() {
13
+ return physicalFiles ??= process.versions.electron
14
+ ? createRequire(import.meta.url)('original-fs')
15
+ : nodeFs;
16
+ }
17
+ const unavailable = () => new WindowsCliInstallationError('Codex npm 原生入口不可用,请检查安装', true);
18
+ const equal = (left, right) => win32.normalize(left).toLowerCase() === win32.normalize(right).toLowerCase();
19
+ const record = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
20
+ function boundedFile(path) {
21
+ const fs = files(), descriptor = fs.openSync(path, 'r');
22
+ try {
23
+ const before = fs.fstatSync(descriptor);
24
+ if (!before.isFile() || before.size > 128 * 1024)
25
+ throw unavailable();
26
+ const data = Buffer.alloc(before.size + 1);
27
+ const length = fs.readSync(descriptor, data, 0, data.length, 0);
28
+ const after = fs.fstatSync(descriptor);
29
+ if (length !== before.size || before.size !== after.size || before.mtimeMs !== after.mtimeMs)
30
+ throw unavailable();
31
+ return data.subarray(0, length);
32
+ }
33
+ finally {
34
+ fs.closeSync(descriptor);
35
+ }
36
+ }
37
+ function json(path) {
38
+ const value = record(JSON.parse(boundedFile(path).toString('utf8')));
39
+ if (!value)
40
+ throw unavailable();
41
+ return value;
42
+ }
43
+ function contained(root, path) {
44
+ const canonical = files().realpathSync(path), inside = relative(root, canonical);
45
+ if (!inside || inside === '..' || inside.startsWith('..' + sep) || isAbsolute(inside))
46
+ throw unavailable();
47
+ return canonical;
48
+ }
49
+ function manifest(root) {
50
+ return json(contained(root, join(root, 'package.json')));
51
+ }
52
+ function nativeExecutable(root, triple, arch) {
53
+ const path = contained(root, join(root, 'vendor', triple, 'bin', 'codex.exe'));
54
+ const fs = files(), descriptor = fs.openSync(path, 'r');
55
+ try {
56
+ const before = fs.fstatSync(descriptor), dos = Buffer.alloc(64), header = Buffer.alloc(24);
57
+ if (!before.isFile() || fs.readSync(descriptor, dos, 0, 64, 0) !== 64 || dos.toString('ascii', 0, 2) !== 'MZ')
58
+ throw unavailable();
59
+ const offset = dos.readUInt32LE(0x3c);
60
+ if (offset < 64 || offset + 24 > before.size || fs.readSync(descriptor, header, 0, 24, offset) !== 24 ||
61
+ header.toString('hex', 0, 4) !== '50450000' || header.readUInt16LE(4) !== (arch === 'x64' ? 0x8664 : 0xaa64) ||
62
+ !(header.readUInt16LE(22) & 0x0002) || (header.readUInt16LE(22) & 0x2000))
63
+ throw unavailable();
64
+ const optionalSize = header.readUInt16LE(20), optional = Buffer.alloc(112);
65
+ if (optionalSize < optional.length || offset + 24 + optionalSize > before.size ||
66
+ fs.readSync(descriptor, optional, 0, optional.length, offset + 24) !== optional.length ||
67
+ optional.readUInt16LE(0) !== 0x20b || optional.readUInt16LE(68) !== 3)
68
+ throw unavailable();
69
+ const after = fs.fstatSync(descriptor);
70
+ if (before.size !== after.size || before.mtimeMs !== after.mtimeMs)
71
+ throw unavailable();
72
+ return path;
73
+ }
74
+ finally {
75
+ fs.closeSync(descriptor);
76
+ }
77
+ }
78
+ // Match the verified wrapper's ownership checks, including pnpm's linked store.
79
+ // Metadata is read only to decide its native update hint; it never supplies argv.
80
+ function pnpmOwned(nodeModules, root) {
81
+ try {
82
+ return files().existsSync(join(nodeModules, '.modules.yaml')) &&
83
+ equal(files().realpathSync(join(nodeModules, '@openai', 'codex')), root);
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ function viteOwned(packages, root) {
90
+ if (basename(packages) !== 'packages')
91
+ return false;
92
+ try {
93
+ const data = json(join(packages, '@openai', 'codex.json'));
94
+ if (data.name !== packageName)
95
+ return false;
96
+ const id = data.installId || '';
97
+ if (typeof id !== 'string')
98
+ return false;
99
+ const install = id.startsWith('#') ? join(packages, `@openai/codex${id}`) : join(packages, '@openai/codex', id);
100
+ return [join(install, 'lib', 'node_modules'), join(install, 'node_modules')].some(directory => {
101
+ try {
102
+ return equal(files().realpathSync(join(directory, '@openai', 'codex')), root);
103
+ }
104
+ catch {
105
+ return false;
106
+ }
107
+ });
108
+ }
109
+ catch {
110
+ return false;
111
+ }
112
+ }
113
+ function environmentValue(name, extra) {
114
+ let value;
115
+ for (const source of [process.env, extra ?? {}])
116
+ for (const [key, candidate] of Object.entries(source))
117
+ if (key.toUpperCase() === name.toUpperCase())
118
+ value = candidate;
119
+ return value;
120
+ }
121
+ function packageManager(root, entry, env) {
122
+ for (const start of new Set([root, dirname(resolve(entry))])) {
123
+ const filesystemRoot = parse(start).root;
124
+ for (let current = start; current !== filesystemRoot; current = dirname(current)) {
125
+ if (viteOwned(current, root))
126
+ return 'VITE_PLUS';
127
+ if (pnpmOwned(join(current, 'node_modules'), root))
128
+ return 'PNPM';
129
+ }
130
+ if (pnpmOwned(join(filesystemRoot, 'node_modules'), root))
131
+ return 'PNPM';
132
+ }
133
+ if (/\bbun\//.test(environmentValue('npm_config_user_agent', env) ?? '') ||
134
+ (environmentValue('npm_execpath', env) ?? '').includes('bun') ||
135
+ dirname(entry).includes('.bun/install/global') || dirname(entry).includes('.bun\\install\\global'))
136
+ return 'BUN';
137
+ return 'NPM';
138
+ }
139
+ /** A background-only optimization. It never changes the saved installation entry or the caller's env. */
140
+ export function windowsCodexBackgroundLaunch(argv, env, options = {}) {
141
+ if ((options.platform ?? process.platform) !== 'win32' || !argv[0] || !equal(argv[0], process.execPath) ||
142
+ !argv[1] || !isAbsolute(argv[1]) || basename(argv[1]).toLowerCase() !== 'codex.js')
143
+ return undefined;
144
+ let source;
145
+ try {
146
+ source = boundedFile(argv[1]);
147
+ }
148
+ catch {
149
+ return undefined;
150
+ }
151
+ // Unknown wrappers preserve their existing launch behavior. In particular, do
152
+ // not guess an older vendor layout or inject a historical PATH directory.
153
+ if (createHash('sha256').update(source).digest('hex') !== supportedWrapper)
154
+ return undefined;
155
+ try {
156
+ const arch = options.arch ?? process.arch;
157
+ if (arch !== 'x64' && arch !== 'arm64')
158
+ throw unavailable();
159
+ const root = files().realpathSync(resolve(dirname(argv[1]), '..'));
160
+ const entry = contained(root, argv[1]), data = manifest(root);
161
+ const bin = typeof data.bin === 'string' ? data.bin : record(data.bin)?.codex;
162
+ if (data.name !== packageName || bin !== 'bin/codex.js' ||
163
+ !equal(entry, contained(root, resolve(root, bin))) ||
164
+ typeof data.version !== 'string' || !/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(data.version))
165
+ throw unavailable();
166
+ const requestedPackage = `${packageName}-win32-${arch}`, platformVersion = `${data.version}-win32-${arch}`;
167
+ if (record(data.optionalDependencies)?.[requestedPackage] !== `npm:${packageName}@${platformVersion}`)
168
+ throw unavailable();
169
+ const require = createRequire(entry);
170
+ let platformManifest;
171
+ try {
172
+ platformManifest = require.resolve(`${requestedPackage}/package.json`);
173
+ }
174
+ catch (error) {
175
+ if (error.code !== 'MODULE_NOT_FOUND')
176
+ throw unavailable();
177
+ // A present but incomplete optional package is a broken installation, not
178
+ // permission to silently substitute the main package's vendor copy.
179
+ for (const directory of require.resolve.paths(requestedPackage) ?? []) {
180
+ try {
181
+ files().lstatSync(join(directory, requestedPackage));
182
+ throw unavailable();
183
+ }
184
+ catch (candidateError) {
185
+ if (!['ENOENT', 'ENOTDIR'].includes(candidateError.code ?? ''))
186
+ throw unavailable();
187
+ }
188
+ }
189
+ }
190
+ let nativeRoot = root;
191
+ if (platformManifest) {
192
+ nativeRoot = files().realpathSync(dirname(platformManifest));
193
+ const platformData = manifest(nativeRoot);
194
+ if (platformData.name !== packageName || platformData.version !== platformVersion ||
195
+ !Array.isArray(platformData.os) || platformData.os.length !== 1 || platformData.os[0] !== 'win32' ||
196
+ !Array.isArray(platformData.cpu) || platformData.cpu.length !== 1 || platformData.cpu[0] !== arch)
197
+ throw unavailable();
198
+ }
199
+ const triple = arch === 'x64' ? 'x86_64-pc-windows-msvc' : 'aarch64-pc-windows-msvc';
200
+ const executable = nativeExecutable(nativeRoot, triple, arch);
201
+ const next = { ...env };
202
+ for (const key of Object.keys(next))
203
+ if ([...managerFlags, 'CODEX_MANAGED_PACKAGE_ROOT'].includes(key.toUpperCase()))
204
+ delete next[key];
205
+ for (const flag of managerFlags)
206
+ next[flag] = undefined;
207
+ next[`CODEX_MANAGED_BY_${packageManager(root, argv[1], env)}`] = '1';
208
+ next.CODEX_MANAGED_PACKAGE_ROOT = root;
209
+ return { argv: [executable, ...argv.slice(2)], env: next };
210
+ }
211
+ catch {
212
+ // No native diagnostic, package content, or arbitrary path crosses the UI.
213
+ throw unavailable();
214
+ }
215
+ }
216
+ //# sourceMappingURL=windows-codex-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-codex-launch.js","sourceRoot":"","sources":["../../../src/host/windows-codex-launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type PlatformPath } from 'node:path';
2
+ export type WindowsDesktopCli = 'zcode' | 'opencode';
3
+ /** Fixed OS metadata query only. No installer, shortcut target, or user command is executed. */
4
+ export declare const WINDOWS_DESKTOP_INSTALL_QUERY: string;
5
+ interface FileQueries {
6
+ ordinaryFile(path: string): string | undefined;
7
+ directory(path: string): string | undefined;
8
+ peFile(path: string): string | undefined;
9
+ }
10
+ export interface WindowsDesktopOptions {
11
+ /** For explicit synthetic fixture paths only; production always uses win32. */
12
+ path?: PlatformPath;
13
+ files?: FileQueries;
14
+ }
15
+ /** Metadata is a bounded hint, never a command or an account source. */
16
+ export declare function windowsDesktopCliFromMetadata(cli: WindowsDesktopCli, raw: string, options?: WindowsDesktopOptions): string | undefined;
17
+ export declare function findWindowsDesktopCli(cli: WindowsDesktopCli, capture: (argv: string[], cwd: string) => Promise<string>, signal: AbortSignal, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
18
+ /** Do not treat a PATH/explicit Desktop GUI as the command-line binary. */
19
+ export declare function windowsOpenCodeDesktopCli(executable: string, explicit?: boolean, options?: WindowsDesktopOptions): string | undefined;
20
+ export {};