From ffaa715d465e2ff5f2ab9789f384710cb70dbb36 Mon Sep 17 00:00:00 2001 From: tt-a1i Date: Sat, 22 Aug 2026 02:13:48 +0800 Subject: [PATCH] fix(capabilities): emit portable group schema --- extensions/capabilities/index.test.ts | 9 +++++++++ extensions/capabilities/index.ts | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/extensions/capabilities/index.test.ts b/extensions/capabilities/index.test.ts index 92c59ca4..7d01474d 100644 --- a/extensions/capabilities/index.test.ts +++ b/extensions/capabilities/index.test.ts @@ -148,6 +148,15 @@ test("the gateway does not add an ineffective resident adoption guideline", () = assert.equal(h.tool().promptGuidelines, undefined); }); +test("the gateway exposes a provider-portable string enum for capability groups", () => { + const parameters = JSON.parse(JSON.stringify(harness().tool().parameters)); + + assert.deepEqual(parameters.properties.groups.items, { + type: "string", + enum: ["search", "delegate", "workflow", "background", "session"], + }); +}); + test("the gateway stays within its compact provider-surface budget", () => { const tool = harness().tool(); const serialized = JSON.stringify({ diff --git a/extensions/capabilities/index.ts b/extensions/capabilities/index.ts index faa2db1f..891bb4af 100644 --- a/extensions/capabilities/index.ts +++ b/extensions/capabilities/index.ts @@ -17,7 +17,10 @@ import { resetOpenPiToolSurface, } from "../shared/tool-surface.ts"; -const CapabilitySchema = Type.Enum(OPENPI_CAPABILITY_NAMES); +const CapabilitySchema = Type.Unsafe({ + type: "string", + enum: OPENPI_CAPABILITY_NAMES, +}); const OpenPiLoadToolsParameters = Type.Object({ groups: Type.Optional(