@moxxy/plugin-provider-codex-agent 0.48.3 → 0.48.4

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.
@@ -11,6 +11,10 @@ export interface CodexTargetOptions extends AgentCliTargetOptions {
11
11
  * `codex.exe` runs as it is.
12
12
  */
13
13
  export declare function codexTarget(command: string, opts?: CodexTargetOptions): ExecutableTarget;
14
- /** Starts `codex app-server` in the conversation folder, speaking JSON-RPC on stdio. */
14
+ /**
15
+ * Starts `codex app-server` in the conversation folder, speaking JSON-RPC on
16
+ * stdio, without Moxxy's own variables, which Codex would pass to every
17
+ * program it runs.
18
+ */
15
19
  export declare function spawnCodexAppServer(command: string): StartCodexAppServer;
16
20
  //# sourceMappingURL=executable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executable.d.ts","sourceRoot":"","sources":["../src/executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAA+D,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEtI,OAAO,KAAK,EAAmB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,gBAAgB,CAI5F;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CA0BxE"}
1
+ {"version":3,"file":"executable.d.ts","sourceRoot":"","sources":["../src/executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAkF,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzJ,OAAO,KAAK,EAAmB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,gBAAgB,CAI5F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CA+BxE"}
@@ -1,5 +1,5 @@
1
1
  import { spawnExecutableTarget } from '@moxxy/sdk/server';
2
- import { CODEX_CLI, agentCliTargetAt, findAgentCli, stopAgentProcess } from '@moxxy/agent-connection-kit';
2
+ import { CODEX_CLI, agentCliTargetAt, findAgentCli, moxxyOwnVariables, stopAgentProcess } from '@moxxy/agent-connection-kit';
3
3
  import { CODEX_APP_SERVER_ARGS } from './constants.js';
4
4
  /**
5
5
  * How to start the person's Codex without a shell. Behind a Windows npm
@@ -13,10 +13,19 @@ export function codexTarget(command, opts = {}) {
13
13
  throw new Error(`Codex CLI not found: ${command}. Install Codex or set CODEX_EXECUTABLE.`);
14
14
  return agentCliTargetAt(CODEX_CLI, found, opts);
15
15
  }
16
- /** Starts `codex app-server` in the conversation folder, speaking JSON-RPC on stdio. */
16
+ /**
17
+ * Starts `codex app-server` in the conversation folder, speaking JSON-RPC on
18
+ * stdio, without Moxxy's own variables, which Codex would pass to every
19
+ * program it runs.
20
+ */
17
21
  export function spawnCodexAppServer(command) {
18
22
  return ({ cwd }) => new Promise((resolve, reject) => {
19
- const child = spawnExecutableTarget(codexTarget(command), CODEX_APP_SERVER_ARGS, { cwd, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true });
23
+ const child = spawnExecutableTarget(codexTarget(command), CODEX_APP_SERVER_ARGS, {
24
+ cwd,
25
+ env: moxxyOwnVariables(process.env),
26
+ stdio: ['pipe', 'pipe', 'pipe'],
27
+ windowsHide: true,
28
+ });
20
29
  const { stdin, stdout, stderr } = child;
21
30
  if (!stdin || !stdout || !stderr) {
22
31
  stopAgentProcess(child);
@@ -1 +1 @@
1
- {"version":3,"file":"executable.js","sourceRoot":"","sources":["../src/executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAA8B,MAAM,6BAA6B,CAAC;AACtI,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAOvD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,OAA2B,EAAE;IACxE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,0CAA0C,CAAC,CAAC;IACvG,OAAO,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CACjB,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9I,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,qEAAqE;YACrE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO,CAAC;gBACN,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,KAAK;gBACf,MAAM;gBACN,KAAK,EAAE,GAAG,EAAE;oBACV,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"executable.js","sourceRoot":"","sources":["../src/executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAA8B,MAAM,6BAA6B,CAAC;AACzJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAOvD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,OAA2B,EAAE;IACxE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,0CAA0C,CAAC,CAAC;IACvG,OAAO,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CACjB,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE;YAC/E,GAAG;YACH,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC;YACnC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,qEAAqE;YACrE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO,CAAC;gBACN,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,KAAK;gBACf,MAAM;gBACN,KAAK,EAAE,GAAG,EAAE;oBACV,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moxxy/plugin-provider-codex-agent",
3
- "version": "0.48.3",
3
+ "version": "0.48.4",
4
4
  "description": "Codex agent connection for moxxy: OpenAI Codex itself does the work through `codex app-server`, on the person's ChatGPT sign-in, while Moxxy shows it, asks for approvals and questions, and lends its own tools over MCP.",
5
5
  "keywords": [
6
6
  "moxxy",
@@ -59,8 +59,8 @@
59
59
  }
60
60
  },
61
61
  "dependencies": {
62
- "@moxxy/agent-connection-kit": "0.1.7",
63
- "@moxxy/sdk": "0.48.3"
62
+ "@moxxy/agent-connection-kit": "0.1.8",
63
+ "@moxxy/sdk": "0.48.4"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@modelcontextprotocol/sdk": "^1.32.2",
@@ -68,13 +68,13 @@
68
68
  "typescript": "^6.0.3",
69
69
  "vitest": "^5.0.5",
70
70
  "zod": "^4.6.7",
71
- "@moxxy/mode-default": "0.48.3",
72
- "@moxxy/core": "0.48.3",
73
- "@moxxy/mode-goal": "0.48.3",
74
- "@moxxy/mode-plan": "0.48.3",
75
- "@moxxy/testing": "0.0.82",
71
+ "@moxxy/mode-default": "0.48.4",
72
+ "@moxxy/mode-goal": "0.48.4",
73
+ "@moxxy/core": "0.48.4",
74
+ "@moxxy/mode-plan": "0.48.4",
76
75
  "@moxxy/vitest-preset": "0.0.0",
77
- "@moxxy/tsconfig": "0.0.0"
76
+ "@moxxy/tsconfig": "0.0.0",
77
+ "@moxxy/testing": "0.0.83"
78
78
  },
79
79
  "scripts": {
80
80
  "build": "tsc -p tsconfig.json",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Everything `codex app-server` 0.163.0 can send (0.155.1, the oldest supported, sends a part of it) — its generated protocol types,
2
+ * Everything `codex app-server` 0.167.1 can send (0.155.1, the oldest supported, sends a part of it) — its generated protocol types,
3
3
  * listed in fixtures/ — checked against what Moxxy does with it. An item shows
4
4
  * in the chat or is left out on purpose, a notification is read or left alone
5
5
  * on purpose, a request always gets an answer. A newer Codex brings a new
@@ -25,9 +25,9 @@ interface CodexKinds {
25
25
  readonly requests: ReadonlyArray<string>;
26
26
  }
27
27
 
28
- const kinds = JSON.parse(readFileSync(new URL('./fixtures/codex-app-server-0.163.0.json', import.meta.url), 'utf8')) as CodexKinds;
28
+ const kinds = JSON.parse(readFileSync(new URL('./fixtures/codex-app-server-0.167.1.json', import.meta.url), 'utf8')) as CodexKinds;
29
29
 
30
- /** One item of every kind, shaped as Codex 0.155.1–0.163.0 sends it once it ends. */
30
+ /** One item of every kind, shaped as Codex 0.155.1–0.167.1 sends it once it ends. */
31
31
  const ITEMS: Record<string, Record<string, unknown>> = {
32
32
  agentMessage: { text: 'Done.' },
33
33
  plan: { text: '1. Read the code' },
@@ -72,6 +72,7 @@ const NOTIFICATIONS: Record<string, string> = {
72
72
  'thread/goal/cleared': STATE,
73
73
  };
74
74
  const LEFT_ALONE: ReadonlyArray<readonly [RegExp, string]> = [
75
+ [/^thread\/section\/changed$/, "Codex's conversation sections; Moxxy groups conversations by its own workspaces"],
75
76
  [/^item\/(plan\/delta|reasoning\/(textDelta|summaryPartAdded)|commandExecution\/(outputDelta|terminalInteraction)|fileChange\/(outputDelta|patchUpdated)|mcpToolCall\/progress)$/, 'the item shows whole once it ends'],
76
77
  [/^item\/autoApprovalReview\/|^autoApprovalReview\/|^guardianWarning$/, "Codex's own reviewer; the approvals it answers are Codex's"],
77
78
  [/^turn\/(diff\/updated|moderationMetadata)$/, 'each file change shows its own diff; moderation stays with Codex'],
@@ -93,7 +94,7 @@ afterEach(async () => {
93
94
  await Promise.all(sessions.splice(0).map((session) => session.close()));
94
95
  });
95
96
 
96
- describe('every item Codex 0.163.0 can send', () => {
97
+ describe('every item Codex 0.167.1 can send', () => {
97
98
  it('has a sample here, so a kind a newer Codex adds needs a decision', () => {
98
99
  expect(Object.keys(ITEMS).sort()).toEqual([...kinds.items]);
99
100
  });
@@ -107,15 +108,24 @@ describe('every item Codex 0.163.0 can send', () => {
107
108
  });
108
109
  });
109
110
 
110
- describe('every notification Codex 0.163.0 can send', () => {
111
+ describe('every notification Codex 0.167.1 can send', () => {
111
112
  it.each(kinds.notifications)('%s is read, or left alone for a reason', (method) => {
112
113
  const reasons = [NOTIFICATIONS[method], ...LEFT_ALONE.filter(([pattern]) => pattern.test(method)).map(([, reason]) => reason)].filter(Boolean);
113
114
 
114
115
  expect(reasons).toHaveLength(1);
115
116
  });
117
+
118
+ it.each(['section-work', null])('leaves a move to section %s alone and keeps translating the reply', (sectionId) => {
119
+ const translator = new TurnTranslator();
120
+
121
+ expect(translator.translate('thread/section/changed', { threadId: 't1', sectionId })).toEqual([]);
122
+ expect(translator.translate('item/agentMessage/delta', { threadId: 't1', delta: 'Still working.' })).toEqual([
123
+ { type: 'text_delta', delta: 'Still working.' },
124
+ ]);
125
+ });
116
126
  });
117
127
 
118
- describe('every request Codex 0.163.0 can make', () => {
128
+ describe('every request Codex 0.167.1 can make', () => {
119
129
  const allowAll: PermissionResolver = { name: 'allow-all', check: async () => ({ mode: 'allow' }) };
120
130
  const PARAMS: Record<string, Record<string, unknown>> = {
121
131
  'item/commandExecution/requestApproval': { itemId: 'c1', command: 'ls', cwd: '/work/app' },
@@ -0,0 +1,44 @@
1
+ /** What the Codex Moxxy starts for a conversation inherits; a stand-in `codex` (the external boundary) records it. */
2
+ import { chmodSync, existsSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import path from 'node:path';
5
+ import { afterEach, describe, expect, it } from 'vitest';
6
+ import { removeDirSync } from '@moxxy/vitest-preset/fs';
7
+ import { spawnCodexAppServer } from './executable.js';
8
+
9
+ const roots: string[] = [];
10
+ const saved = { electron: process.env.ELECTRON_RUN_AS_NODE, nodePath: process.env.NODE_PATH, token: process.env.MOXXY_BROWSER_BRIDGE_TOKEN, home: process.env.MOXXY_HOME };
11
+ afterEach(() => {
12
+ for (const root of roots.splice(0)) removeDirSync(root);
13
+ const restore = (key: string, value: string | undefined) => (value === undefined ? delete process.env[key] : (process.env[key] = value));
14
+ restore('ELECTRON_RUN_AS_NODE', saved.electron);
15
+ restore('NODE_PATH', saved.nodePath);
16
+ restore('MOXXY_BROWSER_BRIDGE_TOKEN', saved.token);
17
+ restore('MOXXY_HOME', saved.home);
18
+ });
19
+
20
+ describe.skipIf(process.platform === 'win32')('the Codex Moxxy starts for a conversation', () => {
21
+ it("does not inherit Moxxy's own variables but MOXXY_HOME, its ELECTRON_RUN_AS_NODE nor the app's folders on NODE_PATH", async () => {
22
+ const root = mkdtempSync(path.join(tmpdir(), 'moxxy-codex-env-'));
23
+ roots.push(root);
24
+ const seen = path.join(root, 'env.json');
25
+ const fake = path.join(root, 'codex');
26
+ writeFileSync(fake, `#!${process.execPath}\nrequire('node:fs').writeFileSync(${JSON.stringify(seen)}, JSON.stringify(process.env));\n`);
27
+ chmodSync(fake, 0o755);
28
+ process.env.ELECTRON_RUN_AS_NODE = '1';
29
+ process.env.MOXXY_BROWSER_BRIDGE_TOKEN = 'bridge-secret';
30
+ process.env.MOXXY_HOME = '/tmp/moxxy-home';
31
+ process.env.NODE_PATH = '/Users/me/lib/node:/Applications/MoxxyAI Workspaces.app/Contents/Resources/app.asar/node_modules';
32
+
33
+ const codex = await spawnCodexAppServer(fake)({ cwd: root });
34
+ await new Promise<void>((resolve) => codex.readable.once('close', () => resolve()).resume());
35
+ codex.close();
36
+
37
+ expect(existsSync(seen)).toBe(true);
38
+ const env = JSON.parse(readFileSync(seen, 'utf8')) as Record<string, string>;
39
+ expect(env.ELECTRON_RUN_AS_NODE).toBeUndefined();
40
+ expect(env.NODE_PATH).toBe('/Users/me/lib/node');
41
+ expect(env.PATH).toBe(process.env.PATH);
42
+ expect(Object.keys(env).filter((key) => key.startsWith('MOXXY_'))).toEqual(['MOXXY_HOME']);
43
+ });
44
+ });
package/src/executable.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { spawnExecutableTarget, type ExecutableTarget } from '@moxxy/sdk/server';
2
- import { CODEX_CLI, agentCliTargetAt, findAgentCli, stopAgentProcess, type AgentCliTargetOptions } from '@moxxy/agent-connection-kit';
2
+ import { CODEX_CLI, agentCliTargetAt, findAgentCli, moxxyOwnVariables, stopAgentProcess, type AgentCliTargetOptions } from '@moxxy/agent-connection-kit';
3
3
  import { CODEX_APP_SERVER_ARGS } from './constants.js';
4
4
  import type { CodexConnection, StartCodexAppServer } from './codex-session.js';
5
5
 
@@ -19,11 +19,20 @@ export function codexTarget(command: string, opts: CodexTargetOptions = {}): Exe
19
19
  return agentCliTargetAt(CODEX_CLI, found, opts);
20
20
  }
21
21
 
22
- /** Starts `codex app-server` in the conversation folder, speaking JSON-RPC on stdio. */
22
+ /**
23
+ * Starts `codex app-server` in the conversation folder, speaking JSON-RPC on
24
+ * stdio, without Moxxy's own variables, which Codex would pass to every
25
+ * program it runs.
26
+ */
23
27
  export function spawnCodexAppServer(command: string): StartCodexAppServer {
24
28
  return ({ cwd }) =>
25
29
  new Promise<CodexConnection>((resolve, reject) => {
26
- const child = spawnExecutableTarget(codexTarget(command), CODEX_APP_SERVER_ARGS, { cwd, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true });
30
+ const child = spawnExecutableTarget(codexTarget(command), CODEX_APP_SERVER_ARGS, {
31
+ cwd,
32
+ env: moxxyOwnVariables(process.env),
33
+ stdio: ['pipe', 'pipe', 'pipe'],
34
+ windowsHide: true,
35
+ });
27
36
  const { stdin, stdout, stderr } = child;
28
37
  if (!stdin || !stdout || !stderr) {
29
38
  stopAgentProcess(child);
@@ -0,0 +1,126 @@
1
+ {
2
+ "source": "codex app-server generate-ts, codex-cli 0.167.1 (ThreadItem, ServerNotification, ServerRequest)",
3
+ "items": [
4
+ "agentMessage",
5
+ "collabAgentToolCall",
6
+ "commandExecution",
7
+ "contextCompaction",
8
+ "dynamicToolCall",
9
+ "enteredReviewMode",
10
+ "exitedReviewMode",
11
+ "fileChange",
12
+ "functionCallOutput",
13
+ "hookPrompt",
14
+ "imageGeneration",
15
+ "imageView",
16
+ "mcpToolCall",
17
+ "plan",
18
+ "reasoning",
19
+ "sleep",
20
+ "subAgentActivity",
21
+ "userMessage",
22
+ "webSearch"
23
+ ],
24
+ "notifications": [
25
+ "account/gatewayOAuth/changed",
26
+ "account/login/completed",
27
+ "account/rateLimits/updated",
28
+ "account/updated",
29
+ "app/list/updated",
30
+ "autoApprovalReview/strictReviewRequired",
31
+ "command/exec/outputDelta",
32
+ "configWarning",
33
+ "deprecationNotice",
34
+ "error",
35
+ "externalAgentConfig/import/completed",
36
+ "externalAgentConfig/import/progress",
37
+ "fs/changed",
38
+ "fuzzyFileSearch/sessionCompleted",
39
+ "fuzzyFileSearch/sessionUpdated",
40
+ "guardianWarning",
41
+ "hook/completed",
42
+ "hook/started",
43
+ "item/agentMessage/delta",
44
+ "item/autoApprovalReview/completed",
45
+ "item/autoApprovalReview/started",
46
+ "item/commandExecution/outputDelta",
47
+ "item/commandExecution/terminalInteraction",
48
+ "item/completed",
49
+ "item/fileChange/outputDelta",
50
+ "item/fileChange/patchUpdated",
51
+ "item/mcpToolCall/progress",
52
+ "item/plan/delta",
53
+ "item/reasoning/summaryPartAdded",
54
+ "item/reasoning/summaryTextDelta",
55
+ "item/reasoning/textDelta",
56
+ "item/started",
57
+ "mcpServer/event/stream/notification",
58
+ "mcpServer/oauthLogin/completed",
59
+ "mcpServer/startupStatus/updated",
60
+ "model/rerouted",
61
+ "model/safetyBuffering/updated",
62
+ "model/verification",
63
+ "modelProvider/authRecoveryCompleted",
64
+ "modelProvider/authRecoveryStarted",
65
+ "process/exited",
66
+ "process/outputDelta",
67
+ "project/changed",
68
+ "rawResponse/completed",
69
+ "rawResponseItem/completed",
70
+ "remoteControl/status/changed",
71
+ "serverRequest/resolved",
72
+ "skills/changed",
73
+ "thread/archived",
74
+ "thread/attachment/updated",
75
+ "thread/closed",
76
+ "thread/compacted",
77
+ "thread/deleted",
78
+ "thread/environment/connected",
79
+ "thread/environment/disconnected",
80
+ "thread/goal/cleared",
81
+ "thread/goal/updated",
82
+ "thread/name/updated",
83
+ "thread/prediction/updated",
84
+ "thread/project/updated",
85
+ "thread/queue/changed",
86
+ "thread/readState/changed",
87
+ "thread/realtime/closed",
88
+ "thread/realtime/error",
89
+ "thread/realtime/item/completed",
90
+ "thread/realtime/item/started",
91
+ "thread/realtime/item/transcript/delta",
92
+ "thread/realtime/itemAdded",
93
+ "thread/realtime/outputAudio/delta",
94
+ "thread/realtime/sdp",
95
+ "thread/realtime/started",
96
+ "thread/realtime/transcript/delta",
97
+ "thread/realtime/transcript/done",
98
+ "thread/reverted",
99
+ "thread/section/changed",
100
+ "thread/settings/updated",
101
+ "thread/started",
102
+ "thread/status/changed",
103
+ "thread/tokenUsage/updated",
104
+ "thread/unarchived",
105
+ "turn/completed",
106
+ "turn/diff/updated",
107
+ "turn/moderationMetadata",
108
+ "turn/plan/updated",
109
+ "turn/started",
110
+ "warning",
111
+ "windows/worldWritableWarning",
112
+ "windowsSandbox/setupCompleted"
113
+ ],
114
+ "requests": [
115
+ "account/chatgptAuthTokens/refresh",
116
+ "applyPatchApproval",
117
+ "attestation/generate",
118
+ "execCommandApproval",
119
+ "item/commandExecution/requestApproval",
120
+ "item/fileChange/requestApproval",
121
+ "item/permissions/requestApproval",
122
+ "item/tool/call",
123
+ "item/tool/requestUserInput",
124
+ "mcpServer/elicitation/request"
125
+ ]
126
+ }