@openai/codex-sdk 0.43.0-alpha.10 → 0.43.0-alpha.12
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.
- package/dist/index.d.ts +6 -1
- package/dist/index.js +26 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/vendor/aarch64-apple-darwin/codex/codex +0 -0
- package/vendor/aarch64-pc-windows-msvc/codex/codex.exe +0 -0
- package/vendor/aarch64-unknown-linux-musl/codex/codex +0 -0
- package/vendor/x86_64-apple-darwin/codex/codex +0 -0
- package/vendor/x86_64-pc-windows-msvc/codex/codex.exe +0 -0
- package/vendor/x86_64-unknown-linux-musl/codex/codex +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -103,6 +103,7 @@ type CodexOptions = {
|
|
|
103
103
|
codexPathOverride?: string;
|
|
104
104
|
baseUrl?: string;
|
|
105
105
|
apiKey?: string;
|
|
106
|
+
workingDirectory?: string;
|
|
106
107
|
};
|
|
107
108
|
|
|
108
109
|
type ApprovalMode = "never" | "on-request" | "on-failure" | "untrusted";
|
|
@@ -110,6 +111,8 @@ type SandboxMode = "read-only" | "workspace-write" | "danger-full-access";
|
|
|
110
111
|
type TurnOptions = {
|
|
111
112
|
model?: string;
|
|
112
113
|
sandboxMode?: SandboxMode;
|
|
114
|
+
workingDirectory?: string;
|
|
115
|
+
skipGitRepoCheck?: boolean;
|
|
113
116
|
};
|
|
114
117
|
|
|
115
118
|
type CodexExecArgs = {
|
|
@@ -119,6 +122,8 @@ type CodexExecArgs = {
|
|
|
119
122
|
threadId?: string | null;
|
|
120
123
|
model?: string;
|
|
121
124
|
sandboxMode?: SandboxMode;
|
|
125
|
+
workingDirectory?: string;
|
|
126
|
+
skipGitRepoCheck?: boolean;
|
|
122
127
|
};
|
|
123
128
|
declare class CodexExec {
|
|
124
129
|
private executablePath;
|
|
@@ -147,7 +152,7 @@ declare class Thread {
|
|
|
147
152
|
declare class Codex {
|
|
148
153
|
private exec;
|
|
149
154
|
private options;
|
|
150
|
-
constructor(options
|
|
155
|
+
constructor(options?: CodexOptions);
|
|
151
156
|
startThread(): Thread;
|
|
152
157
|
resumeThread(id: string): Thread;
|
|
153
158
|
}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,9 @@ var Thread = class {
|
|
|
18
18
|
apiKey: this.options.apiKey,
|
|
19
19
|
threadId: this.id,
|
|
20
20
|
model: options?.model,
|
|
21
|
-
sandboxMode: options?.sandboxMode
|
|
21
|
+
sandboxMode: options?.sandboxMode,
|
|
22
|
+
workingDirectory: options?.workingDirectory,
|
|
23
|
+
skipGitRepoCheck: options?.skipGitRepoCheck
|
|
22
24
|
});
|
|
23
25
|
for await (const item of generator) {
|
|
24
26
|
const parsed = JSON.parse(item);
|
|
@@ -62,10 +64,14 @@ var CodexExec = class {
|
|
|
62
64
|
if (args.sandboxMode) {
|
|
63
65
|
commandArgs.push("--sandbox", args.sandboxMode);
|
|
64
66
|
}
|
|
67
|
+
if (args.workingDirectory) {
|
|
68
|
+
commandArgs.push("--cd", args.workingDirectory);
|
|
69
|
+
}
|
|
70
|
+
if (args.skipGitRepoCheck) {
|
|
71
|
+
commandArgs.push("--skip-git-repo-check");
|
|
72
|
+
}
|
|
65
73
|
if (args.threadId) {
|
|
66
|
-
commandArgs.push("resume", args.threadId
|
|
67
|
-
} else {
|
|
68
|
-
commandArgs.push(args.input);
|
|
74
|
+
commandArgs.push("resume", args.threadId);
|
|
69
75
|
}
|
|
70
76
|
const env = {
|
|
71
77
|
...process.env
|
|
@@ -81,10 +87,22 @@ var CodexExec = class {
|
|
|
81
87
|
});
|
|
82
88
|
let spawnError = null;
|
|
83
89
|
child.once("error", (err) => spawnError = err);
|
|
90
|
+
if (!child.stdin) {
|
|
91
|
+
child.kill();
|
|
92
|
+
throw new Error("Child process has no stdin");
|
|
93
|
+
}
|
|
94
|
+
child.stdin.write(args.input);
|
|
95
|
+
child.stdin.end();
|
|
84
96
|
if (!child.stdout) {
|
|
85
97
|
child.kill();
|
|
86
98
|
throw new Error("Child process has no stdout");
|
|
87
99
|
}
|
|
100
|
+
const stderrChunks = [];
|
|
101
|
+
if (child.stderr) {
|
|
102
|
+
child.stderr.on("data", (data) => {
|
|
103
|
+
stderrChunks.push(data);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
88
106
|
const rl = readline.createInterface({
|
|
89
107
|
input: child.stdout,
|
|
90
108
|
crlfDelay: Infinity
|
|
@@ -93,12 +111,13 @@ var CodexExec = class {
|
|
|
93
111
|
for await (const line of rl) {
|
|
94
112
|
yield line;
|
|
95
113
|
}
|
|
96
|
-
const exitCode = new Promise((resolve) => {
|
|
114
|
+
const exitCode = new Promise((resolve, reject) => {
|
|
97
115
|
child.once("exit", (code) => {
|
|
98
116
|
if (code === 0) {
|
|
99
117
|
resolve(code);
|
|
100
118
|
} else {
|
|
101
|
-
|
|
119
|
+
const stderrBuffer = Buffer.concat(stderrChunks);
|
|
120
|
+
reject(new Error(`Codex Exec exited with code ${code}: ${stderrBuffer.toString("utf8")}`));
|
|
102
121
|
}
|
|
103
122
|
});
|
|
104
123
|
});
|
|
@@ -174,7 +193,7 @@ function findCodexPath() {
|
|
|
174
193
|
var Codex = class {
|
|
175
194
|
exec;
|
|
176
195
|
options;
|
|
177
|
-
constructor(options) {
|
|
196
|
+
constructor(options = {}) {
|
|
178
197
|
this.exec = new CodexExec(options.codexPathOverride);
|
|
179
198
|
this.options = options;
|
|
180
199
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/thread.ts","../src/exec.ts","../src/codex.ts"],"sourcesContent":["import { CodexOptions } from \"./codexOptions\";\nimport { ThreadEvent } from \"./events\";\nimport { CodexExec } from \"./exec\";\nimport { ThreadItem } from \"./items\";\nimport { TurnOptions } from \"./turnOptions\";\n\nexport type RunResult = {\n items: ThreadItem[];\n finalResponse: string;\n};\n\nexport type RunStreamedResult = {\n events: AsyncGenerator<ThreadEvent>;\n};\n\nexport type Input = string;\n\nexport class Thread {\n private exec: CodexExec;\n private options: CodexOptions;\n public id: string | null;\n\n constructor(exec: CodexExec, options: CodexOptions, id: string | null = null) {\n this.exec = exec;\n this.options = options;\n this.id = id;\n }\n\n async runStreamed(input: string, options?: TurnOptions): Promise<RunStreamedResult> {\n return { events: this.runStreamedInternal(input, options) };\n }\n\n private async *runStreamedInternal(\n input: string,\n options?: TurnOptions,\n ): AsyncGenerator<ThreadEvent> {\n const generator = this.exec.run({\n input,\n baseUrl: this.options.baseUrl,\n apiKey: this.options.apiKey,\n threadId: this.id,\n model: options?.model,\n sandboxMode: options?.sandboxMode,\n });\n for await (const item of generator) {\n const parsed = JSON.parse(item) as ThreadEvent;\n if (parsed.type === \"thread.started\") {\n this.id = parsed.thread_id;\n }\n yield parsed;\n }\n }\n\n async run(input: string, options?: TurnOptions): Promise<RunResult> {\n const generator = this.runStreamedInternal(input, options);\n const items: ThreadItem[] = [];\n let finalResponse: string = \"\";\n for await (const event of generator) {\n if (event.type === \"item.completed\") {\n if (event.item.item_type === \"assistant_message\") {\n finalResponse = event.item.text;\n }\n items.push(event.item);\n }\n }\n return { items, finalResponse };\n }\n}\n","import { spawn } from \"child_process\";\n\nimport readline from \"node:readline\";\n\nimport { SandboxMode } from \"./turnOptions\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nexport type CodexExecArgs = {\n input: string;\n\n baseUrl?: string;\n apiKey?: string;\n threadId?: string | null;\n model?: string;\n sandboxMode?: SandboxMode;\n};\n\nexport class CodexExec {\n private executablePath: string;\n constructor(executablePath: string | null = null) {\n this.executablePath = executablePath || findCodexPath();\n }\n\n async *run(args: CodexExecArgs): AsyncGenerator<string> {\n const commandArgs: string[] = [\"exec\", \"--experimental-json\"];\n\n if (args.model) {\n commandArgs.push(\"--model\", args.model);\n }\n\n if (args.sandboxMode) {\n commandArgs.push(\"--sandbox\", args.sandboxMode);\n }\n\n if (args.threadId) {\n commandArgs.push(\"resume\", args.threadId, args.input);\n } else {\n commandArgs.push(args.input);\n }\n\n const env = {\n ...process.env,\n };\n if (args.baseUrl) {\n env.OPENAI_BASE_URL = args.baseUrl;\n }\n if (args.apiKey) {\n env.OPENAI_API_KEY = args.apiKey;\n }\n\n const child = spawn(this.executablePath, commandArgs, {\n env,\n });\n\n let spawnError: unknown | null = null;\n child.once(\"error\", (err) => (spawnError = err));\n\n if (!child.stdout) {\n child.kill();\n throw new Error(\"Child process has no stdout\");\n }\n\n const rl = readline.createInterface({\n input: child.stdout,\n crlfDelay: Infinity,\n });\n\n try {\n for await (const line of rl) {\n // `line` is a string (Node sets default encoding to utf8 for readline)\n yield line as string;\n }\n\n const exitCode = new Promise((resolve) => {\n child.once(\"exit\", (code) => { \n if (code === 0) {\n resolve(code);\n } else {\n throw new Error(`Codex Exec exited with code ${code}`);\n }\n });\n });\n\n if (spawnError) throw spawnError;\n await exitCode;\n } finally {\n rl.close();\n child.removeAllListeners();\n try {\n if (!child.killed) child.kill();\n } catch {\n // ignore\n }\n }\n }\n}\n\nconst scriptFileName = fileURLToPath(import.meta.url);\nconst scriptDirName = path.dirname(scriptFileName);\n\nfunction findCodexPath() {\n const { platform, arch } = process;\n\n let targetTriple = null;\n switch (platform) {\n case \"linux\":\n case \"android\":\n switch (arch) {\n case \"x64\":\n targetTriple = \"x86_64-unknown-linux-musl\";\n break;\n case \"arm64\":\n targetTriple = \"aarch64-unknown-linux-musl\";\n break;\n default:\n break;\n }\n break;\n case \"darwin\":\n switch (arch) {\n case \"x64\":\n targetTriple = \"x86_64-apple-darwin\";\n break;\n case \"arm64\":\n targetTriple = \"aarch64-apple-darwin\";\n break;\n default:\n break;\n }\n break;\n case \"win32\":\n switch (arch) {\n case \"x64\":\n targetTriple = \"x86_64-pc-windows-msvc\";\n break;\n case \"arm64\":\n targetTriple = \"aarch64-pc-windows-msvc\";\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n if (!targetTriple) {\n throw new Error(`Unsupported platform: ${platform} (${arch})`);\n }\n\n const vendorRoot = path.join(scriptDirName, \"..\", \"vendor\");\n const archRoot = path.join(vendorRoot, targetTriple);\n const codexBinaryName = process.platform === \"win32\" ? \"codex.exe\" : \"codex\";\n const binaryPath = path.join(archRoot, \"codex\", codexBinaryName);\n\n return binaryPath;\n}\n","import { CodexOptions } from \"./codexOptions\";\nimport { CodexExec } from \"./exec\";\nimport { Thread } from \"./thread\";\n\nexport class Codex {\n private exec: CodexExec;\n private options: CodexOptions;\n\n constructor(options: CodexOptions) {\n this.exec = new CodexExec(options.codexPathOverride);\n this.options = options;\n }\n\n startThread(): Thread {\n return new Thread(this.exec, this.options);\n }\n\n resumeThread(id: string): Thread {\n return new Thread(this.exec, this.options, id);\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/thread.ts","../src/exec.ts","../src/codex.ts"],"sourcesContent":["import { CodexOptions } from \"./codexOptions\";\nimport { ThreadEvent } from \"./events\";\nimport { CodexExec } from \"./exec\";\nimport { ThreadItem } from \"./items\";\nimport { TurnOptions } from \"./turnOptions\";\n\nexport type RunResult = {\n items: ThreadItem[];\n finalResponse: string;\n};\n\nexport type RunStreamedResult = {\n events: AsyncGenerator<ThreadEvent>;\n};\n\nexport type Input = string;\n\nexport class Thread {\n private exec: CodexExec;\n private options: CodexOptions;\n public id: string | null;\n\n constructor(exec: CodexExec, options: CodexOptions, id: string | null = null) {\n this.exec = exec;\n this.options = options;\n this.id = id;\n }\n\n async runStreamed(input: string, options?: TurnOptions): Promise<RunStreamedResult> {\n return { events: this.runStreamedInternal(input, options) };\n }\n\n private async *runStreamedInternal(\n input: string,\n options?: TurnOptions,\n ): AsyncGenerator<ThreadEvent> {\n const generator = this.exec.run({\n input,\n baseUrl: this.options.baseUrl,\n apiKey: this.options.apiKey,\n threadId: this.id,\n model: options?.model,\n sandboxMode: options?.sandboxMode,\n workingDirectory: options?.workingDirectory,\n skipGitRepoCheck: options?.skipGitRepoCheck,\n });\n for await (const item of generator) {\n const parsed = JSON.parse(item) as ThreadEvent;\n if (parsed.type === \"thread.started\") {\n this.id = parsed.thread_id;\n }\n yield parsed;\n }\n }\n\n async run(input: string, options?: TurnOptions): Promise<RunResult> {\n const generator = this.runStreamedInternal(input, options);\n const items: ThreadItem[] = [];\n let finalResponse: string = \"\";\n for await (const event of generator) {\n if (event.type === \"item.completed\") {\n if (event.item.item_type === \"assistant_message\") {\n finalResponse = event.item.text;\n }\n items.push(event.item);\n }\n }\n return { items, finalResponse };\n }\n}\n","import { spawn } from \"child_process\";\n\nimport readline from \"node:readline\";\n\nimport { SandboxMode } from \"./turnOptions\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nexport type CodexExecArgs = {\n input: string;\n\n baseUrl?: string;\n apiKey?: string;\n threadId?: string | null;\n // --model\n model?: string;\n // --sandbox\n sandboxMode?: SandboxMode;\n // --cd\n workingDirectory?: string;\n // --skip-git-repo-check\n skipGitRepoCheck?: boolean;\n};\n\nexport class CodexExec {\n private executablePath: string;\n constructor(executablePath: string | null = null) {\n this.executablePath = executablePath || findCodexPath();\n }\n\n async *run(args: CodexExecArgs): AsyncGenerator<string> {\n const commandArgs: string[] = [\"exec\", \"--experimental-json\"];\n\n if (args.model) {\n commandArgs.push(\"--model\", args.model);\n }\n\n if (args.sandboxMode) {\n commandArgs.push(\"--sandbox\", args.sandboxMode);\n }\n\n if (args.workingDirectory) {\n commandArgs.push(\"--cd\", args.workingDirectory);\n }\n\n if (args.skipGitRepoCheck) {\n commandArgs.push(\"--skip-git-repo-check\");\n }\n\n if (args.threadId) {\n commandArgs.push(\"resume\", args.threadId);\n } \n\n const env = {\n ...process.env,\n };\n if (args.baseUrl) {\n env.OPENAI_BASE_URL = args.baseUrl;\n }\n if (args.apiKey) {\n env.OPENAI_API_KEY = args.apiKey;\n }\n\n const child = spawn(this.executablePath, commandArgs, {\n env,\n });\n\n let spawnError: unknown | null = null;\n child.once(\"error\", (err) => (spawnError = err));\n \n if (!child.stdin) {\n child.kill();\n throw new Error(\"Child process has no stdin\");\n }\n child.stdin.write(args.input);\n child.stdin.end();\n\n if (!child.stdout) {\n child.kill();\n throw new Error(\"Child process has no stdout\");\n }\n const stderrChunks: Buffer[] = [];\n\n if (child.stderr) {\n child.stderr.on(\"data\", (data) => {\n stderrChunks.push(data);\n });\n }\n\n const rl = readline.createInterface({\n input: child.stdout,\n crlfDelay: Infinity,\n });\n\n try {\n for await (const line of rl) {\n // `line` is a string (Node sets default encoding to utf8 for readline)\n yield line as string;\n }\n\n const exitCode = new Promise((resolve, reject) => {\n child.once(\"exit\", (code) => {\n if (code === 0) {\n resolve(code);\n } else {\n const stderrBuffer = Buffer.concat(stderrChunks);\n reject(new Error(`Codex Exec exited with code ${code}: ${stderrBuffer.toString('utf8')}`));\n }\n });\n });\n\n if (spawnError) throw spawnError;\n await exitCode;\n } finally {\n rl.close();\n child.removeAllListeners();\n try {\n if (!child.killed) child.kill();\n } catch {\n // ignore\n }\n }\n }\n}\n\nconst scriptFileName = fileURLToPath(import.meta.url);\nconst scriptDirName = path.dirname(scriptFileName);\n\nfunction findCodexPath() {\n const { platform, arch } = process;\n\n let targetTriple = null;\n switch (platform) {\n case \"linux\":\n case \"android\":\n switch (arch) {\n case \"x64\":\n targetTriple = \"x86_64-unknown-linux-musl\";\n break;\n case \"arm64\":\n targetTriple = \"aarch64-unknown-linux-musl\";\n break;\n default:\n break;\n }\n break;\n case \"darwin\":\n switch (arch) {\n case \"x64\":\n targetTriple = \"x86_64-apple-darwin\";\n break;\n case \"arm64\":\n targetTriple = \"aarch64-apple-darwin\";\n break;\n default:\n break;\n }\n break;\n case \"win32\":\n switch (arch) {\n case \"x64\":\n targetTriple = \"x86_64-pc-windows-msvc\";\n break;\n case \"arm64\":\n targetTriple = \"aarch64-pc-windows-msvc\";\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n if (!targetTriple) {\n throw new Error(`Unsupported platform: ${platform} (${arch})`);\n }\n\n const vendorRoot = path.join(scriptDirName, \"..\", \"vendor\");\n const archRoot = path.join(vendorRoot, targetTriple);\n const codexBinaryName = process.platform === \"win32\" ? \"codex.exe\" : \"codex\";\n const binaryPath = path.join(archRoot, \"codex\", codexBinaryName);\n\n return binaryPath;\n}\n","import { CodexOptions } from \"./codexOptions\";\nimport { CodexExec } from \"./exec\";\nimport { Thread } from \"./thread\";\n\nexport class Codex {\n private exec: CodexExec;\n private options: CodexOptions;\n\n constructor(options: CodexOptions = {}) {\n this.exec = new CodexExec(options.codexPathOverride);\n this.options = options;\n }\n\n startThread(): Thread {\n return new Thread(this.exec, this.options);\n }\n\n resumeThread(id: string): Thread {\n return new Thread(this.exec, this.options, id);\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|