borgmcp 0.9.56 → 0.9.58

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 (60) hide show
  1. package/README.md +104 -176
  2. package/dist/assimilate-cmd.d.ts +2 -5
  3. package/dist/assimilate-cmd.d.ts.map +1 -1
  4. package/dist/assimilate-cmd.js +12 -0
  5. package/dist/assimilate-cmd.js.map +1 -1
  6. package/dist/assimilate-deps.d.ts.map +1 -1
  7. package/dist/assimilate-deps.js +2 -9
  8. package/dist/assimilate-deps.js.map +1 -1
  9. package/dist/auth-env.d.ts +52 -0
  10. package/dist/auth-env.d.ts.map +1 -0
  11. package/dist/auth-env.js +107 -0
  12. package/dist/auth-env.js.map +1 -0
  13. package/dist/auth.d.ts +33 -13
  14. package/dist/auth.d.ts.map +1 -1
  15. package/dist/auth.js +100 -4
  16. package/dist/auth.js.map +1 -1
  17. package/dist/claude.js +28 -6
  18. package/dist/claude.js.map +1 -1
  19. package/dist/cli-help.d.ts +16 -0
  20. package/dist/cli-help.d.ts.map +1 -0
  21. package/dist/cli-help.js +27 -0
  22. package/dist/cli-help.js.map +1 -0
  23. package/dist/cli-platform.js +1 -1
  24. package/dist/cli-platform.js.map +1 -1
  25. package/dist/codex-remote.d.ts +60 -12
  26. package/dist/codex-remote.d.ts.map +1 -1
  27. package/dist/codex-remote.js +173 -80
  28. package/dist/codex-remote.js.map +1 -1
  29. package/dist/config.d.ts +13 -10
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +105 -60
  32. package/dist/config.js.map +1 -1
  33. package/dist/device-auth.d.ts +75 -0
  34. package/dist/device-auth.d.ts.map +1 -0
  35. package/dist/device-auth.js +167 -0
  36. package/dist/device-auth.js.map +1 -0
  37. package/dist/inbox-monitor.d.ts.map +1 -1
  38. package/dist/inbox-monitor.js +15 -0
  39. package/dist/inbox-monitor.js.map +1 -1
  40. package/dist/index.js +5 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/setup.js +25 -7
  43. package/dist/setup.js.map +1 -1
  44. package/dist/subscription-retry.d.ts +40 -0
  45. package/dist/subscription-retry.d.ts.map +1 -0
  46. package/dist/subscription-retry.js +23 -0
  47. package/dist/subscription-retry.js.map +1 -0
  48. package/dist/templates.d.ts +1 -0
  49. package/dist/templates.d.ts.map +1 -1
  50. package/dist/templates.js +59 -11
  51. package/dist/templates.js.map +1 -1
  52. package/dist/token-crypto.d.ts +50 -0
  53. package/dist/token-crypto.d.ts.map +1 -0
  54. package/dist/token-crypto.js +91 -0
  55. package/dist/token-crypto.js.map +1 -0
  56. package/dist/token-store.d.ts +98 -0
  57. package/dist/token-store.d.ts.map +1 -0
  58. package/dist/token-store.js +136 -0
  59. package/dist/token-store.js.map +1 -0
  60. package/package.json +1 -9
@@ -1,21 +1,69 @@
1
+ /**
2
+ * gh#528 — npm-managed Codex remote-wake.
3
+ *
4
+ * borg owns a per-launch DIRECT Codex app-server (`codex app-server --listen
5
+ * unix://<socket>`) as the primary wake path, instead of the standalone
6
+ * `codex app-server daemon start` (which only exists for standalone-installer
7
+ * Codex — npm-managed Codex has no daemon, so those sessions had NO push-wake
8
+ * and silently fell back to the ~30min /loop heartbeat). Per-launch direct
9
+ * app-server works for both install kinds and starts fresh each launch (so it
10
+ * always loads the current borgmcp MCP — no daemon-restart version refresh
11
+ * needed). The TUI is then launched with `codex --remote unix://<socket>` and
12
+ * Borg delivers wakes by connecting to that socket (see codex-app-wake.ts).
13
+ */
14
+ export interface CodexAppServerHandle {
15
+ pid: number | undefined;
16
+ socketPath: string;
17
+ /** Kill the owned app-server + remove its socket/pidfile. Wire to TUI exit. */
18
+ cleanup: () => void;
19
+ }
1
20
  export interface CodexRemoteLaunch {
2
21
  args: string[];
3
22
  env: Record<string, string>;
4
23
  warning?: string;
24
+ /** Present when borg owns a per-launch app-server that must be cleaned up on TUI exit. */
25
+ server?: CodexAppServerHandle;
5
26
  }
6
- export interface CodexRemoteStartResult {
7
- status: number | null;
8
- stdout: string;
9
- stderr: string;
27
+ export interface CodexChild {
28
+ pid: number | undefined;
29
+ kill: () => void;
10
30
  }
11
- export interface CodexRemoteLaunchOptions {
12
- installedBorgmcpVersion?: string;
13
- versionRefreshStatePath?: string;
31
+ export interface PrepareCodexRemoteDeps {
32
+ /** Spawn the long-lived `codex app-server --listen unix://<socketPath>` child. */
33
+ spawnAppServer: (socketPath: string) => CodexChild;
34
+ /** Readiness probe: a real CodexAppServerClient connect + thread/loaded/list round-trip. */
35
+ probeReady: (socketPath: string) => Promise<boolean>;
36
+ /** Delay between readiness polls (injected so tests don't actually wait). */
37
+ sleep: (ms: number) => Promise<void>;
38
+ /** 0700 runtime dir (default ~/.config/borgmcp/codex-remote). */
39
+ runtimeDir?: string;
40
+ /** Unique socket id generator (default 32-hex). Injected for deterministic tests. */
41
+ socketId?: () => string;
42
+ /** Readiness timeout (default 8000ms) + poll interval (default 250ms). */
43
+ readyTimeoutMs?: number;
44
+ pollIntervalMs?: number;
45
+ /** Whether a pid is alive (default process.kill(pid, 0)). Injected for tests. */
46
+ isAlive?: (pid: number) => boolean;
14
47
  }
15
- export declare function prepareCodexRemoteLaunch(runSync: (cmd: string, args: string[]) => CodexRemoteStartResult, options?: CodexRemoteLaunchOptions): CodexRemoteLaunch;
48
+ export declare const DEFAULT_CODEX_REMOTE_DIR: string;
16
49
  export declare function withCodexCwdArg(args: string[], cwd: string): string[];
17
- export declare function refreshCodexMcpServerForInstalledVersion(runSync: (cmd: string, args: string[]) => CodexRemoteStartResult, options?: CodexRemoteLaunchOptions): {
18
- restarted: boolean;
19
- warning?: string;
20
- };
50
+ /**
51
+ * Start a borg-owned per-launch Codex app-server, probe it for readiness, and
52
+ * return the `--remote` launch args + an owned handle (or a fail-loud warning).
53
+ * Async + lifecycle-owning: the caller MUST call `result.server?.cleanup()` on
54
+ * TUI exit.
55
+ */
56
+ export declare function prepareCodexRemoteLaunch(deps: PrepareCodexRemoteDeps): Promise<CodexRemoteLaunch>;
57
+ /**
58
+ * Production deps for prepareCodexRemoteLaunch — spawn the real `codex
59
+ * app-server` child + probe it with the real CodexAppServerClient. Shared by
60
+ * claude.ts and assimilate-deps.ts so there's ONE wiring.
61
+ *
62
+ * The readiness probe uses Codex app-server RPCs ONLY (connect + thread/loaded/
63
+ * list) — it never calls a borg /api/drone/* endpoint — so it can never advance
64
+ * last_seen/last_regen_at and mask a deaf Codex (the gh#46/gh#406 signal-truth
65
+ * invariant; the app-server socket is the wake-DELIVERY wire, not a liveness
66
+ * signal).
67
+ */
68
+ export declare function defaultCodexRemoteDeps(): Pick<PrepareCodexRemoteDeps, 'spawnAppServer' | 'probeReady' | 'sleep'>;
21
69
  //# sourceMappingURL=codex-remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-remote.d.ts","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAaD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,sBAAsB,EAChE,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAcnB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrE;AA2CD,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,sBAAsB,EAChE,OAAO,GAAE,wBAA6B,GACrC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CA2B1C"}
1
+ {"version":3,"file":"codex-remote.d.ts","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,UAAU,CAAC;IACnD,4FAA4F;IAC5F,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,6EAA6E;IAC7E,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,eAAO,MAAM,wBAAwB,QAAwD,CAAC;AAE9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrE;AA0DD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA+E5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAC5C,sBAAsB,EACtB,gBAAgB,GAAG,YAAY,GAAG,OAAO,CAC1C,CAoCA"}
@@ -1,19 +1,10 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
1
+ import { mkdirSync, chmodSync, readdirSync, rmSync, writeFileSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
- import { dirname, join } from 'node:path';
4
- const DEFAULT_VERSION_REFRESH_STATE_PATH = join(homedir(), '.config', 'borgmcp', 'codex-mcp-version-refresh.json');
5
- export function prepareCodexRemoteLaunch(runSync, options = {}) {
6
- const refresh = refreshCodexMcpServerForInstalledVersion(runSync, options);
7
- const daemonResult = runSync('codex', ['app-server', 'daemon', 'start']);
8
- const daemon = withRefreshWarning(parseCodexRemoteResult(daemonResult, 'Codex app-server daemon start'), refresh.warning);
9
- if (daemon.args.length > 0)
10
- return daemon;
11
- return {
12
- args: [],
13
- env: {},
14
- warning: daemon.warning,
15
- };
16
- }
3
+ import { join } from 'node:path';
4
+ import { randomBytes } from 'node:crypto';
5
+ import { spawn } from 'node:child_process';
6
+ import { CodexAppServerClient } from './codex-app-server.js';
7
+ export const DEFAULT_CODEX_REMOTE_DIR = join(homedir(), '.config', 'borgmcp', 'codex-remote');
17
8
  export function withCodexCwdArg(args, cwd) {
18
9
  if (hasCodexCwdArg(args))
19
10
  return args;
@@ -22,86 +13,188 @@ export function withCodexCwdArg(args, cwd) {
22
13
  function hasCodexCwdArg(args) {
23
14
  return args.some((arg) => arg === '--cd' || arg.startsWith('--cd=') || arg === '-C');
24
15
  }
25
- function parseCodexRemoteResult(result, commandLabel) {
26
- if (result.status !== 0) {
27
- return {
28
- args: [],
29
- env: {},
30
- warning: `${commandLabel} failed; automatic Borg wakeups disabled. ${result.stderr.trim()}`,
31
- };
16
+ function defaultIsAlive(pid) {
17
+ try {
18
+ process.kill(pid, 0);
19
+ return true;
20
+ }
21
+ catch (err) {
22
+ // EPERM ⇒ the process exists but we can't signal it (still alive).
23
+ return err?.code === 'EPERM';
24
+ }
25
+ }
26
+ function safeRm(p) {
27
+ try {
28
+ rmSync(p, { force: true });
29
+ }
30
+ catch {
31
+ // best-effort
32
32
  }
33
- let parsed;
33
+ }
34
+ /**
35
+ * Remove sockets in the owned dir whose owning app-server pid is no longer
36
+ * alive (crashed prior launches), leaving live concurrent sessions' sockets
37
+ * untouched. Operates ONLY inside the borg-owned runtime dir.
38
+ */
39
+ function pruneStaleSockets(runtimeDir, isAlive) {
40
+ let entries;
34
41
  try {
35
- parsed = JSON.parse(result.stdout);
42
+ entries = readdirSync(runtimeDir);
36
43
  }
37
44
  catch {
38
- return {
39
- args: [],
40
- env: {},
41
- warning: `${commandLabel} returned invalid JSON; automatic Borg wakeups disabled.`,
42
- };
45
+ return;
43
46
  }
44
- const socketPath = parsed?.daemon?.socketPath ?? parsed?.socketPath;
45
- if (typeof socketPath !== 'string' || socketPath.length === 0) {
46
- return {
47
- args: [],
48
- env: {},
49
- warning: `${commandLabel} did not return a socket path; automatic Borg wakeups disabled.`,
50
- };
47
+ for (const name of entries) {
48
+ if (!name.endsWith('.pid'))
49
+ continue;
50
+ const pidPath = join(runtimeDir, name);
51
+ const sockPath = join(runtimeDir, name.replace(/\.pid$/, '.sock'));
52
+ let pid;
53
+ try {
54
+ pid = Number.parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
55
+ }
56
+ catch {
57
+ safeRm(pidPath);
58
+ continue;
59
+ }
60
+ if (Number.isNaN(pid) || !isAlive(pid)) {
61
+ safeRm(sockPath);
62
+ safeRm(pidPath);
63
+ }
51
64
  }
52
- return {
53
- args: ['--remote', `unix://${socketPath}`],
54
- env: { BORG_CODEX_REMOTE_WAKE: '1' },
55
- };
56
65
  }
57
- export function refreshCodexMcpServerForInstalledVersion(runSync, options = {}) {
58
- const installedVersion = options.installedBorgmcpVersion;
59
- if (!installedVersion || installedVersion === 'unknown')
60
- return { restarted: false };
61
- const statePath = options.versionRefreshStatePath ?? DEFAULT_VERSION_REFRESH_STATE_PATH;
62
- const previousVersion = readLastRefreshedVersion(statePath);
63
- if (previousVersion === installedVersion)
64
- return { restarted: false };
65
- const restart = runSync('codex', ['app-server', 'daemon', 'restart']);
66
- if (restart.status !== 0) {
67
- const detail = restart.stderr.trim();
68
- return {
69
- restarted: false,
70
- warning: `Codex app-server restart for borgmcp ${installedVersion} failed; stale borg MCP children may persist.${detail ? ` ${detail}` : ''}`,
71
- };
66
+ function failLoud(reason) {
67
+ return { args: [], env: {}, warning: reason };
68
+ }
69
+ /**
70
+ * Start a borg-owned per-launch Codex app-server, probe it for readiness, and
71
+ * return the `--remote` launch args + an owned handle (or a fail-loud warning).
72
+ * Async + lifecycle-owning: the caller MUST call `result.server?.cleanup()` on
73
+ * TUI exit.
74
+ */
75
+ export async function prepareCodexRemoteLaunch(deps) {
76
+ const runtimeDir = deps.runtimeDir ?? DEFAULT_CODEX_REMOTE_DIR;
77
+ const isAlive = deps.isAlive ?? defaultIsAlive;
78
+ const readyTimeoutMs = deps.readyTimeoutMs ?? 8000;
79
+ const pollIntervalMs = deps.pollIntervalMs ?? 250;
80
+ // 1. 0700 owned dir + prune crashed prior sockets (concurrent-safe via pid liveness).
81
+ try {
82
+ mkdirSync(runtimeDir, { recursive: true, mode: 0o700 });
83
+ chmodSync(runtimeDir, 0o700); // enforce 0700 even if it pre-existed with looser perms
84
+ pruneStaleSockets(runtimeDir, isAlive);
85
+ }
86
+ catch (err) {
87
+ return failLoud(`Codex remote-wake disabled: could not prepare ${runtimeDir} (${err?.message ?? err}); run borg:regen manually.`);
72
88
  }
89
+ // 2. unique, non-predictable socket path inside the owned dir.
90
+ const id = (deps.socketId ?? (() => randomBytes(16).toString('hex')))();
91
+ const socketPath = join(runtimeDir, `${id}.sock`);
92
+ const pidPath = join(runtimeDir, `${id}.pid`);
93
+ // 3. spawn the long-lived app-server.
94
+ let child;
73
95
  try {
74
- writeLastRefreshedVersion(statePath, installedVersion);
96
+ child = deps.spawnAppServer(socketPath);
75
97
  }
76
98
  catch (err) {
77
- return {
78
- restarted: true,
79
- warning: `Codex app-server restarted for borgmcp ${installedVersion}, but refresh marker could not be saved: ${err?.message ?? err}`,
80
- };
99
+ safeRm(socketPath);
100
+ return failLoud(`Codex remote-wake disabled: could not start \`codex app-server\` (${err?.message ?? err}) — ` +
101
+ `is Codex installed + up to date? This session only wakes on the ~30min /loop fallback; ` +
102
+ `run borg:regen manually.`);
81
103
  }
82
- return { restarted: true };
83
- }
84
- function withRefreshWarning(launch, warning) {
85
- if (!warning)
86
- return launch;
87
- return {
88
- ...launch,
89
- warning: `${warning} ${launch.warning ?? ''}`.trim(),
104
+ if (child.pid != null) {
105
+ try {
106
+ writeFileSync(pidPath, String(child.pid));
107
+ }
108
+ catch {
109
+ // pidfile is only for stale-prune; launch still proceeds.
110
+ }
111
+ }
112
+ const cleanup = () => {
113
+ try {
114
+ child.kill();
115
+ }
116
+ catch {
117
+ // best-effort
118
+ }
119
+ safeRm(socketPath);
120
+ safeRm(pidPath);
90
121
  };
91
- }
92
- function readLastRefreshedVersion(statePath) {
93
- try {
94
- if (!existsSync(statePath))
95
- return null;
96
- const parsed = JSON.parse(readFileSync(statePath, 'utf-8'));
97
- return typeof parsed.lastRefreshedVersion === 'string' ? parsed.lastRefreshedVersion : null;
122
+ // 4. readiness via a real protocol round-trip — bounded attempts (no clock dep).
123
+ const attempts = Math.max(1, Math.ceil(readyTimeoutMs / pollIntervalMs));
124
+ let ready = false;
125
+ for (let i = 0; i < attempts && !ready; i++) {
126
+ try {
127
+ ready = await deps.probeReady(socketPath);
128
+ }
129
+ catch {
130
+ ready = false;
131
+ }
132
+ if (!ready && i < attempts - 1)
133
+ await deps.sleep(pollIntervalMs);
98
134
  }
99
- catch {
100
- return null;
135
+ if (!ready) {
136
+ cleanup();
137
+ return failLoud(`Codex remote-wake disabled: could not reach a Codex app-server at ${socketPath} within ` +
138
+ `${readyTimeoutMs}ms (is Codex up to date? \`codex app-server --listen\` is required). ` +
139
+ `This session only wakes on the ~30min /loop fallback — run borg:regen manually when you return.`);
101
140
  }
141
+ // 5. ready → owned remote launch.
142
+ return {
143
+ args: ['--remote', `unix://${socketPath}`],
144
+ env: { BORG_CODEX_REMOTE_WAKE: '1' },
145
+ server: { pid: child.pid, socketPath, cleanup },
146
+ };
102
147
  }
103
- function writeLastRefreshedVersion(statePath, version) {
104
- mkdirSync(dirname(statePath), { recursive: true });
105
- writeFileSync(statePath, JSON.stringify({ lastRefreshedVersion: version, updatedAt: new Date().toISOString() }, null, 2) + '\n');
148
+ /**
149
+ * Production deps for prepareCodexRemoteLaunch — spawn the real `codex
150
+ * app-server` child + probe it with the real CodexAppServerClient. Shared by
151
+ * claude.ts and assimilate-deps.ts so there's ONE wiring.
152
+ *
153
+ * The readiness probe uses Codex app-server RPCs ONLY (connect + thread/loaded/
154
+ * list) — it never calls a borg /api/drone/* endpoint — so it can never advance
155
+ * last_seen/last_regen_at and mask a deaf Codex (the gh#46/gh#406 signal-truth
156
+ * invariant; the app-server socket is the wake-DELIVERY wire, not a liveness
157
+ * signal).
158
+ */
159
+ export function defaultCodexRemoteDeps() {
160
+ return {
161
+ spawnAppServer: (socketPath) => {
162
+ const child = spawn('codex', ['app-server', '--listen', `unix://${socketPath}`], {
163
+ stdio: 'ignore',
164
+ shell: false,
165
+ });
166
+ return {
167
+ pid: child.pid,
168
+ kill: () => {
169
+ try {
170
+ child.kill();
171
+ }
172
+ catch {
173
+ // best-effort
174
+ }
175
+ },
176
+ };
177
+ },
178
+ probeReady: async (socketPath) => {
179
+ const probe = new CodexAppServerClient(socketPath);
180
+ try {
181
+ await probe.connect();
182
+ await probe.loadedThreadIds();
183
+ return true;
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ finally {
189
+ try {
190
+ probe.close();
191
+ }
192
+ catch {
193
+ // best-effort
194
+ }
195
+ }
196
+ },
197
+ sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
198
+ };
106
199
  }
107
200
  //# sourceMappingURL=codex-remote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-remote.js","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-remote.js","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,27 +1,30 @@
1
1
  /**
2
- * Store Google OAuth ID token securely in the OS keychain.
2
+ * Store Google OAuth ID token securely in the selected backend.
3
3
  */
4
4
  export declare function storeIdToken(idToken: string, expiresAt: number): Promise<void>;
5
5
  /**
6
- * Store Google OAuth refresh token securely in the OS keychain.
6
+ * Store Google OAuth refresh token securely in the selected backend.
7
7
  */
8
8
  export declare function storeRefreshToken(refreshToken: string): Promise<void>;
9
9
  /**
10
- * Retrieve the Google OAuth ID token from the OS keychain.
11
- * Returns null if not stored or expired (5-minute buffer).
10
+ * Retrieve the Google OAuth ID token.
12
11
  *
13
- * `getPassword` on a missing entry returns null/undefined depending
14
- * on platform binding; normalize with `?? null` so the caller
15
- * contract (`string | null`) is platform-stable.
12
+ * A caller-managed token (BORG_TOKEN / BORG_TOKEN_FILE) takes precedence and
13
+ * is returned verbatim the caller owns its freshness, so the expiry buffer
14
+ * does not apply. Otherwise reads the persistent backend and returns null if
15
+ * not stored or within the 5-minute expiry buffer.
16
16
  */
17
17
  export declare function getIdToken(): Promise<string | null>;
18
18
  /**
19
- * Retrieve the Google OAuth refresh token from the OS keychain.
19
+ * Retrieve the Google OAuth refresh token. There is no refresh_token in
20
+ * caller-managed mode (the externally-supplied id_token has no refresh
21
+ * counterpart), so this returns null whenever a caller-managed token is set.
20
22
  */
21
23
  export declare function getRefreshToken(): Promise<string | null>;
22
24
  /**
23
- * Clear all stored tokens from the OS keychain. Idempotent — calling
24
- * on an already-empty keychain is a no-op (NoEntry errors absorbed).
25
+ * Clear all stored tokens from the selected backend. Idempotent — clearing
26
+ * an already-empty store is a no-op. Does not touch caller-managed env vars
27
+ * (those are the caller's to manage).
25
28
  */
26
29
  export declare function clearTokens(): Promise<void>;
27
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBzD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE9D;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAGxD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAkGA;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBzD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI9D;AAED;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAGxD"}