@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 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: CodexOptions);
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, args.input);
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
- throw new Error(`Codex Exec exited with code ${code}`);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openai/codex-sdk",
3
- "version": "0.43.0-alpha.10",
3
+ "version": "0.43.0-alpha.12",
4
4
  "description": "TypeScript SDK for Codex APIs.",
5
5
  "repository": {
6
6
  "type": "git",