@gkorepanov/ccodex 0.4.5 → 0.4.7

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 (43) hide show
  1. package/README.md +31 -3
  2. package/config/compatibility.json +1 -1
  3. package/dist/cli/args.d.ts +3 -0
  4. package/dist/cli/args.js +4 -1
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/delegate.js +1 -0
  7. package/dist/cli/delegate.js.map +1 -1
  8. package/dist/cli/main.js +21 -22
  9. package/dist/cli/main.js.map +1 -1
  10. package/dist/daemon/daemon.js +5 -4
  11. package/dist/daemon/daemon.js.map +1 -1
  12. package/dist/daemon/supervisor.d.ts +1 -0
  13. package/dist/daemon/supervisor.js +13 -3
  14. package/dist/daemon/supervisor.js.map +1 -1
  15. package/dist/desktop/launchAgent.d.ts +26 -0
  16. package/dist/desktop/launchAgent.js +122 -0
  17. package/dist/desktop/launchAgent.js.map +1 -0
  18. package/dist/desktop/stdioFrontend.d.ts +9 -0
  19. package/dist/desktop/stdioFrontend.js +305 -0
  20. package/dist/desktop/stdioFrontend.js.map +1 -0
  21. package/dist/gateway/clientConnection.js +2 -7
  22. package/dist/gateway/clientConnection.js.map +1 -1
  23. package/dist/handoff/service.d.ts +2 -2
  24. package/dist/handoff/service.js +158 -67
  25. package/dist/handoff/service.js.map +1 -1
  26. package/dist/handoff/store.d.ts +7 -4
  27. package/dist/handoff/store.js +55 -19
  28. package/dist/handoff/store.js.map +1 -1
  29. package/dist/management/doctor.js +31 -2
  30. package/dist/management/doctor.js.map +1 -1
  31. package/dist/management/lifecycle.js +80 -26
  32. package/dist/management/lifecycle.js.map +1 -1
  33. package/dist/management/setup.d.ts +3 -0
  34. package/dist/management/setup.js +75 -94
  35. package/dist/management/setup.js.map +1 -1
  36. package/dist/management/shellRouting.d.ts +14 -0
  37. package/dist/management/shellRouting.js +64 -0
  38. package/dist/management/shellRouting.js.map +1 -0
  39. package/dist/management/shims.d.ts +16 -3
  40. package/dist/management/shims.js +67 -12
  41. package/dist/management/shims.js.map +1 -1
  42. package/examples/config.toml +2 -0
  43. package/package.json +4 -4
@@ -1,6 +1,6 @@
1
1
  import { execFile, spawn } from "node:child_process";
2
2
  import { createHash } from "node:crypto";
3
- import { chmodSync, cpSync, existsSync, lstatSync, readFileSync, readlinkSync, renameSync, rmSync, statSync, unlinkSync, realpathSync, } from "node:fs";
3
+ import { cpSync, existsSync, lstatSync, readFileSync, readlinkSync, renameSync, rmSync, statSync, unlinkSync, realpathSync, } from "node:fs";
4
4
  import { homedir } from "node:os";
5
5
  import { basename, join, relative, resolve } from "node:path";
6
6
  import { promisify } from "node:util";
@@ -8,13 +8,12 @@ import { compatibilityManifest } from "../compatibility/probe.js";
8
8
  import { defaultConfigToml, delegatedCodexExecutable, loadConfig } from "../config/config.js";
9
9
  import { pinnedCodexExecutable, runtimePlatformKey } from "../runtime/dependencies.js";
10
10
  import { probeAppServer } from "../daemon/probe.js";
11
- import { reconcileManagedProcess, stopManagedProcess } from "../daemon/supervisor.js";
12
11
  import { atomicSymlink, atomicWrite, ensureLayout, installLayout } from "./layout.js";
13
- import { managedShim } from "./shims.js";
12
+ import { fishManagedBlock as fishBlock, MANAGED_BLOCK_BEGIN as BEGIN, legacyFishManagedBlock as oldFishBlock, legacyPosixManagedBlock as legacyPosixBlock, posixManagedBlock as posixBlock, } from "./shellRouting.js";
13
+ import { installManagedShims, restoreManagedShims, } from "./shims.js";
14
14
  import { installRemoteCodexShim, relocatedDelegate, restoreRemoteCodexShim, } from "./remoteShim.js";
15
+ import { installCliPathAgent, uninstallCliPathAgent, } from "../desktop/launchAgent.js";
15
16
  const execute = promisify(execFile);
16
- const BEGIN = "# >>> ccodex >>>";
17
- const END = "# <<< ccodex <<<";
18
17
  function packageVersion() {
19
18
  return compatibilityManifest().productVersion;
20
19
  }
@@ -142,87 +141,69 @@ function migrateLegacyState(layout) {
142
141
  function hashFile(path) {
143
142
  return createHash("sha256").update(readFileSync(path)).digest("hex");
144
143
  }
145
- function installShims(layout) {
146
- for (const name of ["ccodex", "codex"]) {
147
- atomicWrite(join(layout.bin, name), managedShim(name), 0o755);
148
- chmodSync(join(layout.bin, name), 0o755);
149
- }
150
- return Object.fromEntries(["ccodex", "codex"].map((name) => [name, hashFile(join(layout.bin, name))]));
151
- }
152
- function appendManagedBlock(path, block) {
153
- const existing = existsSync(path) ? readFileSync(path, "utf8") : "";
154
- if (existing.includes(BEGIN)) {
155
- if (!existing.includes(block.trim()))
156
- throw new Error(`Refusing to overwrite a modified CCodex block in ${path}`);
144
+ function validateManagedBlock(path, desired, legacy) {
145
+ if (!existsSync(path))
157
146
  return;
158
- }
159
- const mode = existsSync(path) ? statSync(path).mode & 0o777 : 0o600;
160
- atomicWrite(path, `${existing}${existing && !existing.endsWith("\n") ? "\n" : ""}${block}`, mode);
161
- }
162
- function posixBlock(layout) {
163
- return `${BEGIN}\nexport PATH="${layout.bin}:$PATH"\n${END}\n`;
147
+ const existing = readFileSync(path, "utf8");
148
+ if (!existing.includes(BEGIN) || existing.includes(desired) || existing.includes(legacy))
149
+ return;
150
+ throw new Error(`Refusing to overwrite a modified CCodex block in ${path}`);
164
151
  }
165
- function fishBlock(layout) {
166
- return `${BEGIN}\nfish_add_path --move --prepend "${layout.bin}"\n${END}\n`;
152
+ function installManagedBlock(path, desired, legacy) {
153
+ const existed = existsSync(path);
154
+ const existing = existed ? readFileSync(path, "utf8") : "";
155
+ if (existing.includes(desired))
156
+ return undefined;
157
+ const mode = existed ? statSync(path).mode & 0o777 : 0o600;
158
+ const next = existing.includes(legacy)
159
+ ? existing.replace(legacy, desired)
160
+ : `${existing}${existing && !existing.endsWith("\n") ? "\n" : ""}${desired}`;
161
+ atomicWrite(path, next, mode);
162
+ return { path, ...(existed ? { content: existing } : {}), mode };
167
163
  }
168
164
  function installShellPaths(layout) {
169
165
  const home = homedir();
170
166
  const shellBlock = posixBlock(layout);
167
+ const oldShellBlock = legacyPosixBlock(layout);
171
168
  const bashLogin = existsSync(join(home, ".bash_profile")) ? join(home, ".bash_profile") : join(home, ".profile");
172
169
  const files = [bashLogin, join(home, ".bashrc"), join(home, ".zprofile"), join(home, ".zshrc")];
173
- for (const path of files) {
174
- const existing = existsSync(path) ? readFileSync(path, "utf8") : "";
175
- if (existing.includes(BEGIN) && !existing.includes(shellBlock.trim())) {
176
- throw new Error(`Refusing to overwrite a modified CCodex block in ${path}`);
177
- }
178
- }
170
+ for (const path of files)
171
+ validateManagedBlock(path, shellBlock, oldShellBlock);
179
172
  const fish = join(home, ".config", "fish", "config.fish");
180
173
  const fishConfigBlock = fishBlock(layout);
181
- const fishExisting = existsSync(fish) ? readFileSync(fish, "utf8") : "";
182
- if (fishExisting.includes(BEGIN) && !fishExisting.includes(fishConfigBlock.trim())) {
183
- throw new Error(`Refusing to overwrite a modified CCodex block in ${fish}`);
184
- }
174
+ const oldFishConfigBlock = oldFishBlock(layout);
175
+ validateManagedBlock(fish, fishConfigBlock, oldFishConfigBlock);
185
176
  const legacyFish = join(home, ".config", "fish", "conf.d", "ccodex.fish");
186
- const legacyFishBlock = `# Managed by CCodex.\nfish_add_path --prepend "${layout.bin}"\n`;
187
- if (existsSync(legacyFish) && readFileSync(legacyFish, "utf8") !== legacyFishBlock) {
177
+ const legacyFishFileBlock = `# Managed by CCodex.\nfish_add_path --prepend "${layout.bin}"\n`;
178
+ if (existsSync(legacyFish) && readFileSync(legacyFish, "utf8") !== legacyFishFileBlock) {
188
179
  throw new Error(`Refusing to overwrite ${legacyFish}`);
189
180
  }
190
- const added = [];
181
+ const changed = [];
191
182
  try {
192
183
  for (const path of files) {
193
- if (!existsSync(path) || !readFileSync(path, "utf8").includes(BEGIN)) {
194
- appendManagedBlock(path, shellBlock);
195
- added.push(path);
196
- }
197
- }
198
- if (!fishExisting.includes(BEGIN)) {
199
- appendManagedBlock(fish, fishConfigBlock);
200
- added.push(fish);
184
+ const change = installManagedBlock(path, shellBlock, oldShellBlock);
185
+ if (change)
186
+ changed.push(change);
201
187
  }
188
+ const fishChange = installManagedBlock(fish, fishConfigBlock, oldFishConfigBlock);
189
+ if (fishChange)
190
+ changed.push(fishChange);
202
191
  return {
203
192
  managed: [...files, fish, ...(existsSync(legacyFish) ? [legacyFish] : [])],
204
- added,
193
+ changed,
205
194
  };
206
195
  }
207
196
  catch (error) {
208
- removeFirstInstallRouting(layout, added, {});
197
+ removeFirstInstallRouting(layout, changed, {});
209
198
  throw error;
210
199
  }
211
200
  }
212
- function removeFirstInstallRouting(layout, files, hashes) {
213
- for (const path of files) {
214
- if (!existsSync(path))
215
- continue;
216
- const content = readFileSync(path, "utf8");
217
- if (path.endsWith("ccodex.fish")) {
218
- if (content === `# Managed by CCodex.\nfish_add_path --prepend "${layout.bin}"\n`)
219
- rmSync(path);
220
- }
221
- else {
222
- const block = path.endsWith("config.fish") ? fishBlock(layout) : posixBlock(layout);
223
- if (content.includes(block))
224
- atomicWrite(path, content.replace(block, ""), statSync(path).mode & 0o777);
225
- }
201
+ function removeFirstInstallRouting(layout, changed, hashes) {
202
+ for (const change of [...changed].reverse()) {
203
+ if (change.content === undefined)
204
+ rmSync(change.path, { force: true });
205
+ else
206
+ atomicWrite(change.path, change.content, change.mode);
226
207
  }
227
208
  for (const [name, hash] of Object.entries(hashes)) {
228
209
  const path = join(layout.bin, name);
@@ -270,17 +251,6 @@ export function activate(layout, version) {
270
251
  atomicSymlink(join("versions", version), layout.current);
271
252
  return previous;
272
253
  }
273
- function daemonPidFile() {
274
- return join(process.env.CODEX_HOME ?? join(homedir(), ".codex"), "app-server-daemon", "app-server.pid");
275
- }
276
- async function replaceRunningDaemon(layout, version) {
277
- const command = join(layout.versions, version, "node_modules", ".bin", "ccodex");
278
- await execute(command, ["app-server", "daemon", "restart"], { timeout: 90_000, maxBuffer: 512 * 1024 });
279
- }
280
- async function stopDaemon(layout, version) {
281
- const command = join(layout.versions, version, "node_modules", ".bin", "ccodex");
282
- await execute(command, ["app-server", "daemon", "stop"], { timeout: 90_000, maxBuffer: 512 * 1024 });
283
- }
284
254
  export async function setup(args) {
285
255
  if (process.getuid?.() === 0)
286
256
  throw new Error("Do not run CCodex setup as root or with sudo.");
@@ -325,23 +295,27 @@ export async function setup(args) {
325
295
  : undefined;
326
296
  const beforeManifest = existsSync(layout.manifest) ? readFileSync(layout.manifest, "utf8") : undefined;
327
297
  const previousManifest = beforeManifest ? JSON.parse(beforeManifest) : undefined;
328
- const daemonWasRunning = Boolean(reconcileManagedProcess(daemonPidFile()));
329
- const gatewayWasRunning = await probeAppServer(publicSocket).then(() => true, () => false);
330
- let installedShellFiles = [];
331
- let installedShimHashes = {};
298
+ let installedShellChanges = [];
299
+ let installedShimChanges = [];
332
300
  let installedRemoteShim;
301
+ let installedDesktopHook;
333
302
  const configPath = join(layout.home, "config.toml");
334
303
  let installedConfig = false;
335
304
  try {
336
305
  const previous = activate(layout, requestedVersion);
337
- const shimHashes = installShims(layout);
338
- installedShimHashes = shimHashes;
306
+ const installedShims = installManagedShims(layout.bin, process.execPath, previousManifest?.shimHashes);
307
+ const shimHashes = installedShims.hashes;
308
+ installedShimChanges = installedShims.changes;
339
309
  const shellRouting = installShellPaths(layout);
340
- installedShellFiles = shellRouting.added;
310
+ installedShellChanges = shellRouting.changed;
341
311
  await verifyShellPaths(layout);
342
312
  installedRemoteShim = installRemoteCodexShim(layout, previousManifest?.remoteCodexShim);
343
313
  delegateCodex = relocatedDelegate(installedRemoteShim, delegateCodex);
344
314
  installedConfig = installInitialConfig(layout);
315
+ const desktopCliPath = process.platform === "darwin"
316
+ ? installCliPathAgent(join(layout.bin, "codex"), previousManifest?.desktopCliPath)
317
+ : undefined;
318
+ installedDesktopHook = desktopCliPath;
345
319
  const manifest = {
346
320
  schemaVersion: 1,
347
321
  method: supplied ? "curl" : "npm",
@@ -353,35 +327,41 @@ export async function setup(args) {
353
327
  managedShellFiles: shellRouting.managed,
354
328
  shimHashes,
355
329
  ...(installedRemoteShim ? { remoteCodexShim: installedRemoteShim } : {}),
330
+ ...(desktopCliPath ? { desktopCliPath } : {}),
331
+ nodeExecutable: process.execPath,
356
332
  platformPackage: compatibility.relayPackages[runtimePlatformKey()] ?? "unsupported",
357
333
  compatibility,
358
334
  doctor: { ok: true, checkedAt: new Date().toISOString() },
359
335
  installedAt: new Date().toISOString(),
360
336
  };
361
337
  atomicWrite(layout.manifest, `${JSON.stringify(manifest, null, 2)}\n`, 0o600);
362
- // setup is the ownership boundary: after the remote shim is in place, always
363
- // leave one detached PID-managed gateway ready for App and proxy reconnects.
364
- await replaceRunningDaemon(layout, requestedVersion);
365
338
  }
366
339
  catch (error) {
367
- await stopDaemon(layout, requestedVersion).catch(async () => {
368
- const managed = reconcileManagedProcess(daemonPidFile());
369
- if (managed)
370
- await stopManagedProcess(daemonPidFile(), managed).catch((cleanupError) => {
371
- process.stderr.write(`CCodex rollback could not stop partial gateway: ${String(cleanupError)}\n`);
372
- });
373
- });
374
340
  if (installedConfig)
375
341
  rmSync(configPath, { force: true });
376
342
  if (before) {
377
343
  atomicSymlink(join("versions", before), layout.current);
378
- if (daemonWasRunning || gatewayWasRunning)
379
- await replaceRunningDaemon(layout, before).catch(() => undefined);
344
+ removeFirstInstallRouting(layout, installedShellChanges, {});
345
+ restoreManagedShims(installedShimChanges);
380
346
  }
381
347
  else {
382
348
  removeActivationLink(layout.current);
383
349
  restoreRemoteCodexShim(installedRemoteShim, previousManifest?.remoteCodexShim);
384
- removeFirstInstallRouting(layout, installedShellFiles, installedShimHashes);
350
+ removeFirstInstallRouting(layout, installedShellChanges, {});
351
+ restoreManagedShims(installedShimChanges);
352
+ }
353
+ if (installedDesktopHook) {
354
+ try {
355
+ if (previousManifest?.desktopCliPath) {
356
+ installCliPathAgent(previousManifest.desktopCliPath.entryShimPath, installedDesktopHook);
357
+ }
358
+ else {
359
+ uninstallCliPathAgent(installedDesktopHook);
360
+ }
361
+ }
362
+ catch (desktopError) {
363
+ process.stderr.write(`CCodex rollback could not restore the desktop hook: ${String(desktopError)}\n`);
364
+ }
385
365
  }
386
366
  if (before)
387
367
  restoreRemoteCodexShim(installedRemoteShim, previousManifest?.remoteCodexShim);
@@ -395,7 +375,8 @@ export async function setup(args) {
395
375
  rmSync(layout.manifest, { force: true });
396
376
  throw error;
397
377
  }
398
- process.stdout.write(`CCodex ${requestedVersion} activated. Open a new shell or run: export PATH="${layout.bin}:$PATH"\n`);
378
+ process.stdout.write(`CCodex ${requestedVersion} activated. Open a new shell or run: export PATH="${layout.bin}:$PATH"`
379
+ + `${process.platform === "darwin" ? "\nReconnect Codex App to use this version." : ""}\n`);
399
380
  return 0;
400
381
  }
401
382
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/management/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/management/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type InstallLayout } from "./layout.js";
2
+ export declare const MANAGED_BLOCK_BEGIN = "# >>> ccodex >>>";
3
+ export declare const MANAGED_BLOCK_END = "# <<< ccodex <<<";
4
+ export declare function posixManagedBlock(layout: InstallLayout): string;
5
+ export declare function fishManagedBlock(layout: InstallLayout): string;
6
+ export declare function legacyPosixManagedBlock(layout: InstallLayout): string;
7
+ export declare function legacyFishManagedBlock(layout: InstallLayout): string;
8
+ export interface ShellBlockChange {
9
+ readonly path: string;
10
+ readonly before: string;
11
+ readonly mode: number;
12
+ }
13
+ export declare function migrateDesktopShellBlocks(layout: InstallLayout, files: readonly string[], enabled: boolean): ShellBlockChange[];
14
+ export declare function restoreShellBlockChanges(changes: readonly ShellBlockChange[]): void;
@@ -0,0 +1,64 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { atomicWrite } from "./layout.js";
4
+ export const MANAGED_BLOCK_BEGIN = "# >>> ccodex >>>";
5
+ export const MANAGED_BLOCK_END = "# <<< ccodex <<<";
6
+ function codexCliPathExport(layout, shell) {
7
+ // The local Codex App ignores PATH; on macOS point it at the managed desktop entry so
8
+ // terminal-launched App instances match the GUI. No-op elsewhere (no local App exists).
9
+ if (process.platform !== "darwin")
10
+ return "";
11
+ const entry = join(layout.bin, "codex");
12
+ return shell === "fish"
13
+ ? `set -gx CODEX_CLI_PATH "${entry}"\n`
14
+ : `export CODEX_CLI_PATH="${entry}"\n`;
15
+ }
16
+ export function posixManagedBlock(layout) {
17
+ return `${MANAGED_BLOCK_BEGIN}\nexport PATH="${layout.bin}:$PATH"\n${codexCliPathExport(layout, "posix")}${MANAGED_BLOCK_END}\n`;
18
+ }
19
+ export function fishManagedBlock(layout) {
20
+ return `${MANAGED_BLOCK_BEGIN}\nfish_add_path --move --prepend "${layout.bin}"\n${codexCliPathExport(layout, "fish")}${MANAGED_BLOCK_END}\n`;
21
+ }
22
+ export function legacyPosixManagedBlock(layout) {
23
+ return `${MANAGED_BLOCK_BEGIN}\nexport PATH="${layout.bin}:$PATH"\n${MANAGED_BLOCK_END}\n`;
24
+ }
25
+ export function legacyFishManagedBlock(layout) {
26
+ return `${MANAGED_BLOCK_BEGIN}\nfish_add_path --move --prepend "${layout.bin}"\n${MANAGED_BLOCK_END}\n`;
27
+ }
28
+ export function migrateDesktopShellBlocks(layout, files, enabled) {
29
+ const candidates = files
30
+ .filter((path) => !path.endsWith("ccodex.fish"))
31
+ .map((path) => {
32
+ const fish = path.endsWith("config.fish");
33
+ const desktop = fish ? fishManagedBlock(layout) : posixManagedBlock(layout);
34
+ const legacy = fish ? legacyFishManagedBlock(layout) : legacyPosixManagedBlock(layout);
35
+ return { path, from: enabled ? legacy : desktop, to: enabled ? desktop : legacy };
36
+ });
37
+ for (const { path, from, to } of candidates) {
38
+ if (!existsSync(path))
39
+ continue;
40
+ const content = readFileSync(path, "utf8");
41
+ if (content.includes(to) || content.includes(from))
42
+ continue;
43
+ if (content.includes(MANAGED_BLOCK_BEGIN)) {
44
+ throw new Error(`Refusing to migrate a modified CCodex block in ${path}`);
45
+ }
46
+ }
47
+ const changes = [];
48
+ for (const { path, from, to } of candidates) {
49
+ if (!existsSync(path))
50
+ continue;
51
+ const before = readFileSync(path, "utf8");
52
+ if (!before.includes(from) || before.includes(to))
53
+ continue;
54
+ const mode = statSync(path).mode & 0o777;
55
+ atomicWrite(path, before.replace(from, to), mode);
56
+ changes.push({ path, before, mode });
57
+ }
58
+ return changes;
59
+ }
60
+ export function restoreShellBlockChanges(changes) {
61
+ for (const change of [...changes].reverse())
62
+ atomicWrite(change.path, change.before, change.mode);
63
+ }
64
+ //# sourceMappingURL=shellRouting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shellRouting.js","sourceRoot":"","sources":["../../src/management/shellRouting.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,18 @@
1
- export declare const CODEX_SHIM = "#!/bin/sh\nset -eu\nif [ \"${CCODEX_SHIM_ACTIVE:-}\" = 1 ]; then\n printf '%s\\n' 'CCodex recursion guard: managed shim attempted to invoke itself.' >&2\n exit 70\nfi\nCCODEX_SHIM_ACTIVE=1\nCCODEX_HOME=${CCODEX_HOME:-\"$HOME/.ccodex\"}\nexport CCODEX_SHIM_ACTIVE CCODEX_HOME\nexec \"$CCODEX_HOME/current/node_modules/.bin/ccodex\" \"$@\"\n";
2
- export declare const CCODEX_SHIM = "#!/bin/sh\nset -eu\nif [ \"${CCODEX_SHIM_ACTIVE:-}\" = 1 ]; then\n printf '%s\\n' 'CCodex recursion guard: managed shim attempted to invoke itself.' >&2\n exit 70\nfi\nCCODEX_SHIM_ACTIVE=1\nCCODEX_HOME=${CCODEX_HOME:-\"$HOME/.ccodex\"}\nexport CCODEX_SHIM_ACTIVE CCODEX_HOME\ncase \"${1:-}\" in\n setup|update|rollback|uninstall|doctor|auth)\n global_root=$(npm root -g 2>/dev/null || true)\n global_package=\"$global_root/@gkorepanov/ccodex\"\n global_cli=\"$global_package/dist/cli/main.js\"\n current_manifest=\"$CCODEX_HOME/current/node_modules/@gkorepanov/ccodex/package.json\"\n if [ -f \"$global_cli\" ] && node \"$global_package/dist/management/shimSelect.js\" \"$current_manifest\"; then\n exec node \"$global_cli\" \"$@\"\n fi\n ;;\nesac\nexec \"$CCODEX_HOME/current/node_modules/.bin/ccodex\" \"$@\"\n";
3
- export declare function managedShim(name: "ccodex" | "codex"): string;
1
+ export declare function codexShim(nodeExecutable: string): string;
2
+ export declare function ccodexShim(nodeExecutable: string): string;
3
+ export declare const CODEX_SHIM: string;
4
+ export declare const CCODEX_SHIM: string;
5
+ export type ManagedShim = "ccodex" | "codex";
6
+ export declare function managedShim(name: ManagedShim, nodeExecutable?: string): string;
7
+ export interface ManagedShimChange {
8
+ readonly path: string;
9
+ readonly content?: string;
10
+ readonly mode: number;
11
+ }
12
+ export declare function installManagedShims(binDirectory: string, nodeExecutable: string, previousHashes?: Readonly<Record<string, string>>): {
13
+ readonly hashes: Readonly<Record<string, string>>;
14
+ readonly changes: readonly ManagedShimChange[];
15
+ };
16
+ export declare function restoreManagedShims(changes: readonly ManagedShimChange[]): void;
4
17
  export type ShimRepair = "absent" | "current" | "modified" | "updated";
5
18
  export declare function repairManagedCcodexShim(home?: string): ShimRepair;
@@ -1,9 +1,13 @@
1
1
  import { createHash } from "node:crypto";
2
- import { existsSync, readFileSync } from "node:fs";
2
+ import { existsSync, readFileSync, rmSync, statSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
5
5
  import { atomicWrite } from "./layout.js";
6
- const prelude = `#!/bin/sh
6
+ function shellQuote(value) {
7
+ return `'${value.replaceAll("'", "'\"'\"'")}'`;
8
+ }
9
+ function prelude(nodeExecutable) {
10
+ return `#!/bin/sh
7
11
  set -eu
8
12
  if [ "\${CCODEX_SHIM_ACTIVE:-}" = 1 ]; then
9
13
  printf '%s\\n' 'CCodex recursion guard: managed shim attempted to invoke itself.' >&2
@@ -11,29 +15,79 @@ if [ "\${CCODEX_SHIM_ACTIVE:-}" = 1 ]; then
11
15
  fi
12
16
  CCODEX_SHIM_ACTIVE=1
13
17
  CCODEX_HOME=\${CCODEX_HOME:-"$HOME/.ccodex"}
18
+ CCODEX_NODE=${shellQuote(nodeExecutable)}
19
+ if [ ! -x "$CCODEX_NODE" ]; then
20
+ CCODEX_NODE=$(command -v node 2>/dev/null || true)
21
+ fi
22
+ if [ -z "$CCODEX_NODE" ] || [ ! -x "$CCODEX_NODE" ]; then
23
+ printf '%s\\n' 'CCodex Node runtime is missing. Reinstall Node.js, then run: npm install -g @gkorepanov/ccodex && ccodex setup' >&2
24
+ exit 69
25
+ fi
14
26
  export CCODEX_SHIM_ACTIVE CCODEX_HOME
15
27
  `;
16
- const current = `exec "$CCODEX_HOME/current/node_modules/.bin/ccodex" "$@"
28
+ }
29
+ const current = `exec "$CCODEX_NODE" "$CCODEX_HOME/current/node_modules/@gkorepanov/ccodex/dist/cli/main.js" "$@"
17
30
  `;
18
- export const CODEX_SHIM = `${prelude}${current}`;
19
- export const CCODEX_SHIM = `${prelude}case "\${1:-}" in
31
+ export function codexShim(nodeExecutable) {
32
+ return `${prelude(nodeExecutable)}${current}`;
33
+ }
34
+ export function ccodexShim(nodeExecutable) {
35
+ return `${prelude(nodeExecutable)}case "\${1:-}" in
20
36
  setup|update|rollback|uninstall|doctor|auth)
21
37
  global_root=$(npm root -g 2>/dev/null || true)
22
38
  global_package="$global_root/@gkorepanov/ccodex"
23
39
  global_cli="$global_package/dist/cli/main.js"
24
40
  current_manifest="$CCODEX_HOME/current/node_modules/@gkorepanov/ccodex/package.json"
25
- if [ -f "$global_cli" ] && node "$global_package/dist/management/shimSelect.js" "$current_manifest"; then
26
- exec node "$global_cli" "$@"
41
+ if [ -f "$global_cli" ] && "$CCODEX_NODE" "$global_package/dist/management/shimSelect.js" "$current_manifest"; then
42
+ exec "$CCODEX_NODE" "$global_cli" "$@"
27
43
  fi
28
44
  ;;
29
45
  esac
30
46
  ${current}`;
31
- export function managedShim(name) {
32
- return name === "ccodex" ? CCODEX_SHIM : CODEX_SHIM;
47
+ }
48
+ export const CODEX_SHIM = codexShim(process.execPath);
49
+ export const CCODEX_SHIM = ccodexShim(process.execPath);
50
+ export function managedShim(name, nodeExecutable = process.execPath) {
51
+ return name === "ccodex" ? ccodexShim(nodeExecutable) : codexShim(nodeExecutable);
33
52
  }
34
53
  function sha256(content) {
35
54
  return createHash("sha256").update(content).digest("hex");
36
55
  }
56
+ export function installManagedShims(binDirectory, nodeExecutable, previousHashes = {}) {
57
+ const hashes = {};
58
+ const planned = ["ccodex", "codex"].map((name) => {
59
+ const path = join(binDirectory, name);
60
+ const desired = managedShim(name, nodeExecutable);
61
+ const desiredHash = sha256(desired);
62
+ hashes[name] = desiredHash;
63
+ if (existsSync(path)) {
64
+ const content = readFileSync(path, "utf8");
65
+ if (content === desired)
66
+ return { desired };
67
+ if (!previousHashes[name] || sha256(content) !== previousHashes[name]) {
68
+ throw new Error(`Refusing to overwrite modified or unmanaged CCodex shim ${path}`);
69
+ }
70
+ return { desired, change: { path, content, mode: statSync(path).mode & 0o777 } };
71
+ }
72
+ return { desired, change: { path, mode: 0o755 } };
73
+ });
74
+ const changes = planned
75
+ .map(({ change }) => change)
76
+ .filter((change) => change !== undefined);
77
+ for (const { desired, change } of planned) {
78
+ if (change)
79
+ atomicWrite(change.path, desired, 0o755);
80
+ }
81
+ return { hashes, changes };
82
+ }
83
+ export function restoreManagedShims(changes) {
84
+ for (const change of [...changes].reverse()) {
85
+ if (change.content === undefined)
86
+ rmSync(change.path, { force: true });
87
+ else
88
+ atomicWrite(change.path, change.content, change.mode);
89
+ }
90
+ }
37
91
  export function repairManagedCcodexShim(home = process.env.CCODEX_HOME ?? join(homedir(), ".ccodex")) {
38
92
  const shim = join(home, "bin", "ccodex");
39
93
  const manifestPath = join(home, "install.json");
@@ -41,8 +95,9 @@ export function repairManagedCcodexShim(home = process.env.CCODEX_HOME ?? join(h
41
95
  return "absent";
42
96
  const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
43
97
  const content = readFileSync(shim, "utf8");
44
- const desiredHash = sha256(CCODEX_SHIM);
45
- if (content === CCODEX_SHIM) {
98
+ const desired = ccodexShim(manifest.nodeExecutable ?? process.execPath);
99
+ const desiredHash = sha256(desired);
100
+ if (content === desired) {
46
101
  if (manifest.shimHashes?.ccodex !== desiredHash) {
47
102
  manifest.shimHashes = { ...manifest.shimHashes, ccodex: desiredHash };
48
103
  atomicWrite(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 0o600);
@@ -51,7 +106,7 @@ export function repairManagedCcodexShim(home = process.env.CCODEX_HOME ?? join(h
51
106
  }
52
107
  if (!manifest.shimHashes?.ccodex || sha256(content) !== manifest.shimHashes.ccodex)
53
108
  return "modified";
54
- atomicWrite(shim, CCODEX_SHIM, 0o755);
109
+ atomicWrite(shim, desired, 0o755);
55
110
  manifest.shimHashes = { ...manifest.shimHashes, ccodex: desiredHash };
56
111
  atomicWrite(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 0o600);
57
112
  return "updated";
@@ -1 +1 @@
1
- {"version":3,"file":"shims.js","sourceRoot":"","sources":["../../src/management/shims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,GAAG;;;;;;;;;CASf,CAAC;AAEF,MAAM,OAAO,GAAG;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,OAAO;;;;;;;;;;;EAWnC,OAAO,EAAE,CAAC;AAEZ,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,OAAe;IAC7B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAID,MAAM,UAAU,uBAAuB,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAClG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAE7D,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;YAChD,QAAQ,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YACtE,WAAW,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IACtG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACtC,QAAQ,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACtE,WAAW,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3E,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"shims.js","sourceRoot":"","sources":["../../src/management/shims.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  # Packaged installs normally use their pinned Codex/Claude binaries and ~/.ccodex/state.
2
2
  # Override only when deliberately testing another executable or state location.
3
+ # On macOS the local Codex App reaches ccodex via CODEX_CLI_PATH=~/.ccodex/bin/codex
4
+ # (installed by `ccodex setup`); no config key is required for it.
3
5
  # app_server_codex = "/absolute/path/to/codex"
4
6
  # delegate_codex = "/absolute/path/to/stock/codex"
5
7
  # claude_binary = "/absolute/path/to/claude"