diff --git a/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts b/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts index 50c3baaae..2a4783534 100644 --- a/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts +++ b/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts @@ -271,14 +271,19 @@ async function listCommandsFromFakeCodex(skills: unknown[]): Promise { const message = JSON.parse(line); if (typeof message.id !== "number") continue; try { - process.stdout.write(JSON.stringify({ id: message.id, result: resultFor(message.method) }) + "\\n"); + process.stdout.write(JSON.stringify({ id: message.id, result: resultFor(message.method, message.params) }) + "\\n"); } catch (error) { process.stdout.write(JSON.stringify({ id: message.id, error: { message: error.message } }) + "\\n"); } @@ -1498,6 +1503,23 @@ describe("Codex app-server provider", () => { ); }); + test("lists project skill commands when app-server receives the project cwd in cwds", async () => { + const commands = await listCommandsFromFakeCodex([ + { + name: "project-skill-discovery-regression", + description: "A skill discovered from this project.", + path: "/tmp/codex-question-test/.agents/skills/project-skill-discovery-regression/SKILL.md", + }, + ]); + + expect(commands).toContainEqual({ + name: "project-skill-discovery-regression", + description: "A skill discovered from this project.", + argumentHint: "", + kind: "skill", + }); + }); + test("deduplicates Codex skill slash commands returned from multiple skill roots", async () => { const commands = await listCommandsFromFakeCodex([ { diff --git a/packages/server/src/server/agent/providers/codex-app-server-agent.ts b/packages/server/src/server/agent/providers/codex-app-server-agent.ts index 19f691106..fc26e7a47 100644 --- a/packages/server/src/server/agent/providers/codex-app-server-agent.ts +++ b/packages/server/src/server/agent/providers/codex-app-server-agent.ts @@ -3306,7 +3306,7 @@ export class CodexAppServerAgentSession implements AgentSession { try { const response = toObjectRecord( await this.client.request("skills/list", { - cwd: [this.config.cwd], + cwds: [this.config.cwd], }), ); const entries = Array.isArray(response?.data) ? response.data : [];