@moxxy/plugin-provider-codex-agent 0.48.2 → 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.
- package/dist/executable.d.ts +5 -1
- package/dist/executable.d.ts.map +1 -1
- package/dist/executable.js +12 -3
- package/dist/executable.js.map +1 -1
- package/package.json +9 -9
- package/src/event-coverage.test.ts +16 -6
- package/src/executable-env.test.ts +44 -0
- package/src/executable.ts +12 -3
- package/src/fixtures/codex-app-server-0.167.1.json +126 -0
package/dist/executable.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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
|
package/dist/executable.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/executable.js
CHANGED
|
@@ -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
|
-
/**
|
|
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, {
|
|
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);
|
package/dist/executable.js.map
CHANGED
|
@@ -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;
|
|
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
|
+
"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.
|
|
63
|
-
"@moxxy/sdk": "0.48.
|
|
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/
|
|
72
|
-
"@moxxy/mode-
|
|
73
|
-
"@moxxy/
|
|
74
|
-
"@moxxy/mode-plan": "0.48.
|
|
75
|
-
"@moxxy/tsconfig": "0.0.0",
|
|
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/
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
/**
|
|
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, {
|
|
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
|
+
}
|