@puukis/core 0.1.0

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 (162) hide show
  1. package/LICENSE +21 -0
  2. package/dist/brain/Brain.d.ts +39 -0
  3. package/dist/brain/Brain.d.ts.map +1 -0
  4. package/dist/brain/Brain.js +284 -0
  5. package/dist/brain/Brain.js.map +1 -0
  6. package/dist/brain/index.d.ts +2 -0
  7. package/dist/brain/index.d.ts.map +1 -0
  8. package/dist/brain/index.js +2 -0
  9. package/dist/brain/index.js.map +1 -0
  10. package/dist/cli/argv.d.ts +8 -0
  11. package/dist/cli/argv.d.ts.map +1 -0
  12. package/dist/cli/argv.js +41 -0
  13. package/dist/cli/argv.js.map +1 -0
  14. package/dist/cli/codexInstall.d.ts +17 -0
  15. package/dist/cli/codexInstall.d.ts.map +1 -0
  16. package/dist/cli/codexInstall.js +106 -0
  17. package/dist/cli/codexInstall.js.map +1 -0
  18. package/dist/cli/commands/auth.d.ts +3 -0
  19. package/dist/cli/commands/auth.d.ts.map +1 -0
  20. package/dist/cli/commands/auth.js +66 -0
  21. package/dist/cli/commands/auth.js.map +1 -0
  22. package/dist/cli/commands/install.d.ts +3 -0
  23. package/dist/cli/commands/install.d.ts.map +1 -0
  24. package/dist/cli/commands/install.js +21 -0
  25. package/dist/cli/commands/install.js.map +1 -0
  26. package/dist/cli/commands/onboard.d.ts +3 -0
  27. package/dist/cli/commands/onboard.d.ts.map +1 -0
  28. package/dist/cli/commands/onboard.js +43 -0
  29. package/dist/cli/commands/onboard.js.map +1 -0
  30. package/dist/cli/commands/uninstall.d.ts +3 -0
  31. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  32. package/dist/cli/commands/uninstall.js +193 -0
  33. package/dist/cli/commands/uninstall.js.map +1 -0
  34. package/dist/cli/commands/update.d.ts +3 -0
  35. package/dist/cli/commands/update.d.ts.map +1 -0
  36. package/dist/cli/commands/update.js +314 -0
  37. package/dist/cli/commands/update.js.map +1 -0
  38. package/dist/cli/index.d.ts +3 -0
  39. package/dist/cli/index.d.ts.map +1 -0
  40. package/dist/cli/index.js +60 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/codex/CodexRpcClient.d.ts +65 -0
  43. package/dist/codex/CodexRpcClient.d.ts.map +1 -0
  44. package/dist/codex/CodexRpcClient.js +395 -0
  45. package/dist/codex/CodexRpcClient.js.map +1 -0
  46. package/dist/codex/codexModels.d.ts +33 -0
  47. package/dist/codex/codexModels.d.ts.map +1 -0
  48. package/dist/codex/codexModels.js +226 -0
  49. package/dist/codex/codexModels.js.map +1 -0
  50. package/dist/codex/index.d.ts +5 -0
  51. package/dist/codex/index.d.ts.map +1 -0
  52. package/dist/codex/index.js +3 -0
  53. package/dist/codex/index.js.map +1 -0
  54. package/dist/codex/types.d.ts +97 -0
  55. package/dist/codex/types.d.ts.map +1 -0
  56. package/dist/codex/types.js +2 -0
  57. package/dist/codex/types.js.map +1 -0
  58. package/dist/config/env.d.ts +8 -0
  59. package/dist/config/env.d.ts.map +1 -0
  60. package/dist/config/env.js +130 -0
  61. package/dist/config/env.js.map +1 -0
  62. package/dist/config/index.d.ts +2 -0
  63. package/dist/config/index.d.ts.map +1 -0
  64. package/dist/config/index.js +2 -0
  65. package/dist/config/index.js.map +1 -0
  66. package/dist/db/index.d.ts +48 -0
  67. package/dist/db/index.d.ts.map +1 -0
  68. package/dist/db/index.js +147 -0
  69. package/dist/db/index.js.map +1 -0
  70. package/dist/gateway/Gateway.d.ts +69 -0
  71. package/dist/gateway/Gateway.d.ts.map +1 -0
  72. package/dist/gateway/Gateway.js +239 -0
  73. package/dist/gateway/Gateway.js.map +1 -0
  74. package/dist/gateway/LaneQueue.d.ts +24 -0
  75. package/dist/gateway/LaneQueue.d.ts.map +1 -0
  76. package/dist/gateway/LaneQueue.js +59 -0
  77. package/dist/gateway/LaneQueue.js.map +1 -0
  78. package/dist/gateway/index.d.ts +3 -0
  79. package/dist/gateway/index.d.ts.map +1 -0
  80. package/dist/gateway/index.js +3 -0
  81. package/dist/gateway/index.js.map +1 -0
  82. package/dist/index.d.ts +13 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +14 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/llm/GeminiProvider.d.ts +16 -0
  87. package/dist/llm/GeminiProvider.d.ts.map +1 -0
  88. package/dist/llm/GeminiProvider.js +172 -0
  89. package/dist/llm/GeminiProvider.js.map +1 -0
  90. package/dist/llm/OllamaProvider.d.ts +15 -0
  91. package/dist/llm/OllamaProvider.d.ts.map +1 -0
  92. package/dist/llm/OllamaProvider.js +108 -0
  93. package/dist/llm/OllamaProvider.js.map +1 -0
  94. package/dist/llm/OpenAICodexProvider.d.ts +51 -0
  95. package/dist/llm/OpenAICodexProvider.d.ts.map +1 -0
  96. package/dist/llm/OpenAICodexProvider.js +620 -0
  97. package/dist/llm/OpenAICodexProvider.js.map +1 -0
  98. package/dist/llm/OpenAIProvider.d.ts +16 -0
  99. package/dist/llm/OpenAIProvider.d.ts.map +1 -0
  100. package/dist/llm/OpenAIProvider.js +134 -0
  101. package/dist/llm/OpenAIProvider.js.map +1 -0
  102. package/dist/llm/index.d.ts +10 -0
  103. package/dist/llm/index.d.ts.map +1 -0
  104. package/dist/llm/index.js +30 -0
  105. package/dist/llm/index.js.map +1 -0
  106. package/dist/main.d.ts +7 -0
  107. package/dist/main.d.ts.map +1 -0
  108. package/dist/main.js +88 -0
  109. package/dist/main.js.map +1 -0
  110. package/dist/pipeline/index.d.ts +2 -0
  111. package/dist/pipeline/index.d.ts.map +1 -0
  112. package/dist/pipeline/index.js +2 -0
  113. package/dist/pipeline/index.js.map +1 -0
  114. package/dist/pipeline/normalize.d.ts +19 -0
  115. package/dist/pipeline/normalize.d.ts.map +1 -0
  116. package/dist/pipeline/normalize.js +34 -0
  117. package/dist/pipeline/normalize.js.map +1 -0
  118. package/dist/server/index.d.ts +28 -0
  119. package/dist/server/index.d.ts.map +1 -0
  120. package/dist/server/index.js +389 -0
  121. package/dist/server/index.js.map +1 -0
  122. package/dist/tools/ToolExecutor.d.ts +68 -0
  123. package/dist/tools/ToolExecutor.d.ts.map +1 -0
  124. package/dist/tools/ToolExecutor.js +177 -0
  125. package/dist/tools/ToolExecutor.js.map +1 -0
  126. package/dist/tools/builtin/browser.d.ts +27 -0
  127. package/dist/tools/builtin/browser.d.ts.map +1 -0
  128. package/dist/tools/builtin/browser.js +222 -0
  129. package/dist/tools/builtin/browser.js.map +1 -0
  130. package/dist/tools/builtin/filesystem.d.ts +22 -0
  131. package/dist/tools/builtin/filesystem.d.ts.map +1 -0
  132. package/dist/tools/builtin/filesystem.js +151 -0
  133. package/dist/tools/builtin/filesystem.js.map +1 -0
  134. package/dist/tools/builtin/index.d.ts +10 -0
  135. package/dist/tools/builtin/index.d.ts.map +1 -0
  136. package/dist/tools/builtin/index.js +21 -0
  137. package/dist/tools/builtin/index.js.map +1 -0
  138. package/dist/tools/builtin/sandbox.d.ts +11 -0
  139. package/dist/tools/builtin/sandbox.d.ts.map +1 -0
  140. package/dist/tools/builtin/sandbox.js +166 -0
  141. package/dist/tools/builtin/sandbox.js.map +1 -0
  142. package/dist/tools/builtin/search.d.ts +7 -0
  143. package/dist/tools/builtin/search.d.ts.map +1 -0
  144. package/dist/tools/builtin/search.js +76 -0
  145. package/dist/tools/builtin/search.js.map +1 -0
  146. package/dist/tools/builtin/shell.d.ts +7 -0
  147. package/dist/tools/builtin/shell.d.ts.map +1 -0
  148. package/dist/tools/builtin/shell.js +71 -0
  149. package/dist/tools/builtin/shell.js.map +1 -0
  150. package/dist/tools/index.d.ts +3 -0
  151. package/dist/tools/index.d.ts.map +1 -0
  152. package/dist/tools/index.js +3 -0
  153. package/dist/tools/index.js.map +1 -0
  154. package/dist/types.d.ts +167 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +3 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/workspace/agentWorkspace.d.ts +24 -0
  159. package/dist/workspace/agentWorkspace.d.ts.map +1 -0
  160. package/dist/workspace/agentWorkspace.js +210 -0
  161. package/dist/workspace/agentWorkspace.js.map +1 -0
  162. package/package.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAOA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAyC7D;AAED,wBAAgB,SAAS,IAAI,IAAI,CAehC"}
@@ -0,0 +1,60 @@
1
+ import { parseArgs } from './argv.js';
2
+ import { runOnboardCommand } from './commands/onboard.js';
3
+ import { runAuthCommand } from './commands/auth.js';
4
+ import { runInstallCommand } from './commands/install.js';
5
+ import { runUninstallCommand } from './commands/uninstall.js';
6
+ import { runUpdateCommand } from './commands/update.js';
7
+ export async function runCli(argv) {
8
+ if (argv.length === 0) {
9
+ return false;
10
+ }
11
+ const args = parseArgs(argv);
12
+ const command = args.positional[0];
13
+ if (args.flags['help'] || args.flags['h']) {
14
+ printHelp();
15
+ return true;
16
+ }
17
+ if (!command || command === 'serve') {
18
+ return false;
19
+ }
20
+ if (command === 'help' || command === '--help' || command === '-h') {
21
+ printHelp();
22
+ return true;
23
+ }
24
+ switch (command) {
25
+ case 'onboard':
26
+ await runOnboardCommand(args);
27
+ return true;
28
+ case 'auth':
29
+ await runAuthCommand(args);
30
+ return true;
31
+ case 'install':
32
+ await runInstallCommand(args);
33
+ return true;
34
+ case 'uninstall':
35
+ await runUninstallCommand(args);
36
+ return true;
37
+ case 'update':
38
+ await runUpdateCommand(args);
39
+ return true;
40
+ default:
41
+ throw new Error(`Unknown command: ${command}`);
42
+ }
43
+ }
44
+ export function printHelp() {
45
+ console.log(`Keygate CLI
46
+
47
+ Usage:
48
+ keygate serve
49
+ keygate onboard --auth-choice openai-codex [--device-auth]
50
+ keygate auth login --provider openai-codex [--device-auth]
51
+ keygate install codex [--method npm|brew]
52
+ keygate uninstall [--yes] [--remove-config] [--remove-workspace]
53
+ keygate update [--check-only]
54
+
55
+ Notes:
56
+ - openai-codex uses ChatGPT OAuth through Codex app-server.
57
+ - No OpenAI API key is required for openai-codex.
58
+ `);
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,SAAS,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,KAAK,WAAW;YACd,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;CAab,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { type ChildProcessWithoutNullStreams, type SpawnOptionsWithoutStdio } from 'node:child_process';
2
+ import EventEmitter from 'eventemitter3';
3
+ import type { CodexInitializeParams, CodexInitializeResult, CodexRpcNotification } from './types.js';
4
+ type SpawnFactory = (command: string, args: string[], options: SpawnOptionsWithoutStdio) => ChildProcessWithoutNullStreams;
5
+ interface CodexRpcClientEvents {
6
+ notification: (notification: CodexRpcNotification) => void;
7
+ stderr: (line: string) => void;
8
+ exit: (info: {
9
+ code: number | null;
10
+ signal: NodeJS.Signals | null;
11
+ }) => void;
12
+ }
13
+ export interface CodexRpcClientOptions {
14
+ command?: string;
15
+ args?: string[];
16
+ cwd?: string;
17
+ env?: NodeJS.ProcessEnv;
18
+ modelReasoningEffort?: string;
19
+ requestTimeoutMs?: number;
20
+ spawnFactory?: SpawnFactory;
21
+ clientInfo?: CodexInitializeParams['clientInfo'];
22
+ }
23
+ export declare class CodexRpcClient extends EventEmitter<CodexRpcClientEvents> {
24
+ private readonly command;
25
+ private readonly args;
26
+ private readonly cwd?;
27
+ private readonly env?;
28
+ private readonly modelReasoningEffort?;
29
+ private readonly requestTimeoutMs;
30
+ private readonly spawnFactory;
31
+ private readonly clientInfo;
32
+ private process;
33
+ private stdoutReadline;
34
+ private nextRequestId;
35
+ private pendingRequests;
36
+ private initialized;
37
+ private closing;
38
+ private stderrLines;
39
+ private attemptedReasoningEffortCompat;
40
+ private useReasoningEffortCompatOverride;
41
+ constructor(options?: CodexRpcClientOptions);
42
+ start(): Promise<void>;
43
+ stop(): Promise<void>;
44
+ initialize(params?: CodexInitializeParams): Promise<CodexInitializeResult>;
45
+ ensureInitialized(params?: CodexInitializeParams): Promise<void>;
46
+ request<TResult = unknown, TParams = unknown>(method: string, params?: TParams): Promise<TResult>;
47
+ notify<TParams = unknown>(method: string, params?: TParams): void;
48
+ waitForNotification(method: string, options?: {
49
+ timeoutMs?: number;
50
+ predicate?: (params: Record<string, unknown> | undefined) => boolean;
51
+ }): Promise<Record<string, unknown> | undefined>;
52
+ getRecentStderr(maxLines?: number): string[];
53
+ private resolveSpawnArgs;
54
+ private shouldRetryWithReasoningEffortCompat;
55
+ private handleStdoutLine;
56
+ private handleResponse;
57
+ private handleErrorResponse;
58
+ private handleStderrChunk;
59
+ private handleProcessExit;
60
+ private cleanupProcessState;
61
+ private failPendingRequests;
62
+ private assertProcessRunning;
63
+ }
64
+ export {};
65
+ //# sourceMappingURL=CodexRpcClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexRpcClient.d.ts","sourceRoot":"","sources":["../../src/codex/CodexRpcClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,395 @@
1
+ import { spawn } from 'node:child_process';
2
+ import * as readline from 'node:readline';
3
+ import EventEmitter from 'eventemitter3';
4
+ export class CodexRpcClient extends EventEmitter {
5
+ command;
6
+ args;
7
+ cwd;
8
+ env;
9
+ modelReasoningEffort;
10
+ requestTimeoutMs;
11
+ spawnFactory;
12
+ clientInfo;
13
+ process = null;
14
+ stdoutReadline = null;
15
+ nextRequestId = 1;
16
+ pendingRequests = new Map();
17
+ initialized = false;
18
+ closing = false;
19
+ stderrLines = [];
20
+ attemptedReasoningEffortCompat = false;
21
+ useReasoningEffortCompatOverride = false;
22
+ constructor(options = {}) {
23
+ super();
24
+ this.command = options.command ?? 'codex';
25
+ this.args = options.args ?? ['app-server'];
26
+ this.cwd = options.cwd;
27
+ this.env = options.env;
28
+ this.modelReasoningEffort = normalizeModelReasoningEffort(options.modelReasoningEffort);
29
+ this.requestTimeoutMs = options.requestTimeoutMs ?? 90_000;
30
+ this.spawnFactory = options.spawnFactory ?? ((command, args, spawnOptions) => spawn(command, args, spawnOptions));
31
+ this.clientInfo = options.clientInfo ?? {
32
+ name: 'keygate',
33
+ title: 'Keygate',
34
+ version: '0.1.0',
35
+ };
36
+ }
37
+ async start() {
38
+ if (this.process) {
39
+ return;
40
+ }
41
+ const child = this.spawnFactory(this.command, this.resolveSpawnArgs(), {
42
+ cwd: this.cwd,
43
+ env: {
44
+ ...process.env,
45
+ ...this.env,
46
+ },
47
+ stdio: 'pipe',
48
+ });
49
+ this.process = child;
50
+ child.stdout.setEncoding('utf8');
51
+ child.stderr.setEncoding('utf8');
52
+ this.stdoutReadline = readline.createInterface({
53
+ input: child.stdout,
54
+ crlfDelay: Infinity,
55
+ });
56
+ this.stdoutReadline.on('line', (line) => {
57
+ this.handleStdoutLine(line);
58
+ });
59
+ child.stderr.on('data', (chunk) => {
60
+ this.handleStderrChunk(String(chunk));
61
+ });
62
+ child.on('exit', (code, signal) => {
63
+ this.handleProcessExit(code, signal);
64
+ });
65
+ child.on('error', (error) => {
66
+ this.failPendingRequests(new Error(`Failed to start Codex app-server: ${error.message}`));
67
+ });
68
+ }
69
+ async stop() {
70
+ if (!this.process) {
71
+ return;
72
+ }
73
+ this.closing = true;
74
+ const child = this.process;
75
+ await new Promise((resolve) => {
76
+ const timeout = setTimeout(() => {
77
+ if (!child.killed) {
78
+ child.kill('SIGKILL');
79
+ }
80
+ }, 3_000);
81
+ child.once('exit', () => {
82
+ clearTimeout(timeout);
83
+ resolve();
84
+ });
85
+ child.kill('SIGTERM');
86
+ });
87
+ this.cleanupProcessState();
88
+ this.initialized = false;
89
+ this.closing = false;
90
+ }
91
+ async initialize(params) {
92
+ await this.start();
93
+ const initializeResult = await this.request('initialize', {
94
+ clientInfo: params?.clientInfo ?? this.clientInfo,
95
+ });
96
+ this.notify('initialized', {});
97
+ this.initialized = true;
98
+ return initializeResult;
99
+ }
100
+ async ensureInitialized(params) {
101
+ if (this.initialized && this.process) {
102
+ return;
103
+ }
104
+ try {
105
+ await this.initialize(params);
106
+ }
107
+ catch (error) {
108
+ if (!this.shouldRetryWithReasoningEffortCompat(error)) {
109
+ throw error;
110
+ }
111
+ this.attemptedReasoningEffortCompat = true;
112
+ this.useReasoningEffortCompatOverride = true;
113
+ await this.stop();
114
+ await this.initialize(params);
115
+ }
116
+ }
117
+ async request(method, params) {
118
+ this.assertProcessRunning();
119
+ const requestId = this.nextRequestId++;
120
+ const payload = {
121
+ jsonrpc: '2.0',
122
+ id: requestId,
123
+ method,
124
+ params,
125
+ };
126
+ const line = `${JSON.stringify(payload)}\n`;
127
+ return new Promise((resolve, reject) => {
128
+ const timer = setTimeout(() => {
129
+ this.pendingRequests.delete(requestId);
130
+ reject(new Error(`Codex request timed out (${method}) after ${this.requestTimeoutMs}ms`));
131
+ }, this.requestTimeoutMs);
132
+ this.pendingRequests.set(requestId, {
133
+ method,
134
+ timer,
135
+ resolve: resolve,
136
+ reject,
137
+ });
138
+ this.process.stdin.write(line, (error) => {
139
+ if (!error) {
140
+ return;
141
+ }
142
+ clearTimeout(timer);
143
+ this.pendingRequests.delete(requestId);
144
+ reject(new Error(`Failed to write Codex request (${method}): ${error.message}`));
145
+ });
146
+ });
147
+ }
148
+ notify(method, params) {
149
+ this.assertProcessRunning();
150
+ const payload = {
151
+ jsonrpc: '2.0',
152
+ method,
153
+ params,
154
+ };
155
+ this.process.stdin.write(`${JSON.stringify(payload)}\n`);
156
+ }
157
+ async waitForNotification(method, options = {}) {
158
+ const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;
159
+ return new Promise((resolve, reject) => {
160
+ const timeout = setTimeout(() => {
161
+ this.off('notification', onNotification);
162
+ reject(new Error(`Timed out waiting for Codex notification: ${method}`));
163
+ }, timeoutMs);
164
+ const onNotification = (notification) => {
165
+ if (notification.method !== method) {
166
+ return;
167
+ }
168
+ const params = notification.params;
169
+ if (options.predicate && !options.predicate(params)) {
170
+ return;
171
+ }
172
+ clearTimeout(timeout);
173
+ this.off('notification', onNotification);
174
+ resolve(params);
175
+ };
176
+ this.on('notification', onNotification);
177
+ });
178
+ }
179
+ getRecentStderr(maxLines = 20) {
180
+ if (maxLines <= 0) {
181
+ return [];
182
+ }
183
+ return this.stderrLines.slice(-maxLines);
184
+ }
185
+ resolveSpawnArgs() {
186
+ const args = [...this.args];
187
+ const isAppServerInvocation = args.some((value) => value === 'app-server');
188
+ if (!isAppServerInvocation) {
189
+ return args;
190
+ }
191
+ if (this.useReasoningEffortCompatOverride) {
192
+ return withModelReasoningEffortOverride(args, 'high');
193
+ }
194
+ if (this.modelReasoningEffort) {
195
+ return withModelReasoningEffortOverride(args, this.modelReasoningEffort);
196
+ }
197
+ return args;
198
+ }
199
+ shouldRetryWithReasoningEffortCompat(error) {
200
+ if (this.attemptedReasoningEffortCompat) {
201
+ return false;
202
+ }
203
+ const message = error instanceof Error ? error.message : String(error);
204
+ const stderr = this.getRecentStderr(40).join('\n');
205
+ const combined = `${message}\n${stderr}`.toLowerCase();
206
+ return (combined.includes('model_reasoning_effort') &&
207
+ combined.includes('unknown variant'));
208
+ }
209
+ handleStdoutLine(line) {
210
+ if (!line.trim()) {
211
+ return;
212
+ }
213
+ let parsed;
214
+ try {
215
+ parsed = JSON.parse(line);
216
+ }
217
+ catch {
218
+ return;
219
+ }
220
+ if (!parsed || typeof parsed !== 'object') {
221
+ return;
222
+ }
223
+ const value = parsed;
224
+ const hasId = typeof value['id'] === 'number';
225
+ const hasMethod = typeof value['method'] === 'string';
226
+ if (isSuccessResponse(value)) {
227
+ this.handleResponse(value);
228
+ return;
229
+ }
230
+ if (isErrorResponse(value)) {
231
+ this.handleErrorResponse(value);
232
+ return;
233
+ }
234
+ if (!hasId && hasMethod) {
235
+ this.emit('notification', {
236
+ method: value['method'],
237
+ params: value['params'],
238
+ });
239
+ }
240
+ }
241
+ handleResponse(response) {
242
+ const requestId = response.id;
243
+ const pending = this.pendingRequests.get(requestId);
244
+ if (!pending) {
245
+ return;
246
+ }
247
+ clearTimeout(pending.timer);
248
+ this.pendingRequests.delete(requestId);
249
+ pending.resolve(response.result);
250
+ }
251
+ handleErrorResponse(response) {
252
+ const requestId = response.id;
253
+ const pending = this.pendingRequests.get(requestId);
254
+ if (!pending) {
255
+ return;
256
+ }
257
+ clearTimeout(pending.timer);
258
+ this.pendingRequests.delete(requestId);
259
+ const errorMessage = response.error?.message ?? 'Unknown Codex RPC error';
260
+ const code = response.error?.code;
261
+ pending.reject(new Error(`Codex request failed (${pending.method}): [${code}] ${errorMessage}`));
262
+ }
263
+ handleStderrChunk(chunk) {
264
+ const lines = chunk
265
+ .split(/\r?\n/g)
266
+ .map((line) => scrubPotentialSecrets(line))
267
+ .filter((line) => line.trim().length > 0);
268
+ if (lines.length === 0) {
269
+ return;
270
+ }
271
+ for (const line of lines) {
272
+ this.stderrLines.push(line);
273
+ if (this.stderrLines.length > 200) {
274
+ this.stderrLines.shift();
275
+ }
276
+ this.emit('stderr', line);
277
+ }
278
+ }
279
+ handleProcessExit(code, signal) {
280
+ this.emit('exit', { code, signal });
281
+ if (!this.closing) {
282
+ const stderr = this.getRecentStderr(6).join('\n');
283
+ const suffix = stderr ? `\nRecent stderr:\n${stderr}` : '';
284
+ this.failPendingRequests(new Error(`Codex app-server exited unexpectedly (code=${code}, signal=${signal})${suffix}`));
285
+ }
286
+ this.cleanupProcessState();
287
+ this.initialized = false;
288
+ }
289
+ cleanupProcessState() {
290
+ if (this.stdoutReadline) {
291
+ this.stdoutReadline.removeAllListeners();
292
+ this.stdoutReadline.close();
293
+ this.stdoutReadline = null;
294
+ }
295
+ if (this.process) {
296
+ this.process.removeAllListeners();
297
+ this.process.stdout.removeAllListeners();
298
+ this.process.stderr.removeAllListeners();
299
+ this.process = null;
300
+ }
301
+ }
302
+ failPendingRequests(error) {
303
+ for (const pending of this.pendingRequests.values()) {
304
+ clearTimeout(pending.timer);
305
+ pending.reject(error);
306
+ }
307
+ this.pendingRequests.clear();
308
+ }
309
+ assertProcessRunning() {
310
+ if (!this.process) {
311
+ throw new Error('Codex app-server process is not running');
312
+ }
313
+ }
314
+ }
315
+ function scrubPotentialSecrets(value) {
316
+ if (!value) {
317
+ return value;
318
+ }
319
+ return value
320
+ .replace(/(Bearer\s+)[A-Za-z0-9._\-]+/g, '$1[REDACTED]')
321
+ .replace(/("?(?:token|access_token|refresh_token|id_token|apiKey|api_key|authorization)"?\s*[:=]\s*"?)[^"\s]+/gi, '$1[REDACTED]');
322
+ }
323
+ function isSuccessResponse(value) {
324
+ if (!value || typeof value !== 'object') {
325
+ return false;
326
+ }
327
+ const row = value;
328
+ return typeof row['id'] === 'number' && Object.prototype.hasOwnProperty.call(row, 'result');
329
+ }
330
+ function isErrorResponse(value) {
331
+ if (!value || typeof value !== 'object') {
332
+ return false;
333
+ }
334
+ const row = value;
335
+ return typeof row['id'] === 'number' && Object.prototype.hasOwnProperty.call(row, 'error');
336
+ }
337
+ function withModelReasoningEffortOverride(args, effort) {
338
+ const override = `model_reasoning_effort="${effort}"`;
339
+ const updated = [];
340
+ let replaced = false;
341
+ for (let i = 0; i < args.length; i += 1) {
342
+ const arg = args[i];
343
+ if ((arg === '-c' || arg === '--config') && i + 1 < args.length) {
344
+ const value = args[i + 1];
345
+ if (/^\s*model_reasoning_effort\s*=/.test(value)) {
346
+ if (!replaced) {
347
+ updated.push(arg, override);
348
+ replaced = true;
349
+ }
350
+ i += 1;
351
+ continue;
352
+ }
353
+ updated.push(arg, value);
354
+ i += 1;
355
+ continue;
356
+ }
357
+ if (arg.startsWith('--config=')) {
358
+ const value = arg.slice('--config='.length);
359
+ if (/^\s*model_reasoning_effort\s*=/.test(value)) {
360
+ if (!replaced) {
361
+ updated.push(`--config=${override}`);
362
+ replaced = true;
363
+ }
364
+ continue;
365
+ }
366
+ }
367
+ updated.push(arg);
368
+ }
369
+ if (!replaced) {
370
+ updated.push('-c', override);
371
+ }
372
+ return updated;
373
+ }
374
+ function normalizeModelReasoningEffort(value) {
375
+ if (!value) {
376
+ return undefined;
377
+ }
378
+ const normalized = value.trim().toLowerCase();
379
+ switch (normalized) {
380
+ case 'low':
381
+ case 'medium':
382
+ case 'high':
383
+ return normalized;
384
+ case 'xhigh':
385
+ return 'high';
386
+ case 'extra-high':
387
+ case 'extra_high':
388
+ case 'extra high':
389
+ // Current Codex variants top out at "high".
390
+ return 'high';
391
+ default:
392
+ return undefined;
393
+ }
394
+ }
395
+ //# sourceMappingURL=CodexRpcClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexRpcClient.js","sourceRoot":"","sources":["../../src/codex/CodexRpcClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { CodexModelEntry } from './types.js';
2
+ import type { CodexReasoningEffort } from '../types.js';
3
+ export declare const CODEX_PROVIDER_ID = "openai-codex";
4
+ export declare const CODEX_REASONING_EFFORTS: readonly CodexReasoningEffort[];
5
+ export interface CodexModel {
6
+ id: string;
7
+ displayName: string;
8
+ isDefault: boolean;
9
+ supportsPersonality: boolean;
10
+ reasoningEffort: CodexReasoningEffort[];
11
+ defaultReasoningEffort?: CodexReasoningEffort;
12
+ }
13
+ export interface ProviderModel {
14
+ id: string;
15
+ provider: typeof CODEX_PROVIDER_ID;
16
+ codexModelId: string;
17
+ displayName: string;
18
+ isDefault: boolean;
19
+ supportsPersonality: boolean;
20
+ reasoningEffort: CodexReasoningEffort[];
21
+ defaultReasoningEffort?: CodexReasoningEffort;
22
+ }
23
+ export declare function normalizeCodexModels(entries: CodexModelEntry[]): CodexModel[];
24
+ export declare function codexModelIdToShortName(modelId: string): string;
25
+ export declare function providerModelIdFromCodexModelId(modelId: string): string;
26
+ export declare function codexModelFromProviderModelId(providerModelId: string, availableModels?: CodexModel[]): string;
27
+ export declare function mapCodexModelsToProviderModels(models: CodexModel[]): ProviderModel[];
28
+ export declare function pickDefaultCodexModel(models: CodexModel[]): CodexModel;
29
+ export declare function getFallbackCodexModels(): CodexModel[];
30
+ export declare function getCodexModelCachePath(configDir?: string): string;
31
+ export declare function writeCodexModelCache(models: CodexModel[], configDir?: string): Promise<void>;
32
+ export declare function readCodexModelCache(configDir?: string): Promise<CodexModel[] | null>;
33
+ //# sourceMappingURL=codexModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexModels.d.ts","sourceRoot":"","sources":["../../src/codex/codexModels.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAIhD,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAKlE,CAAC;AAOF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;CAC/C;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,iBAAiB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;CAC/C;AAqBD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAsB7E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,EACvB,eAAe,GAAE,UAAU,EAA0B,GACpD,MAAM,CAwCR;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAWpF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAgBtE;AAED,wBAAgB,sBAAsB,IAAI,UAAU,EAAE,CAKrD;AAED,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlG;AAED,wBAAsB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAyC1F"}