diff --git a/packages/kap-server/src/protocol/rest-meta.ts b/packages/kap-server/src/protocol/rest-meta.ts index 5da00b1549..9adb3b5c76 100644 --- a/packages/kap-server/src/protocol/rest-meta.ts +++ b/packages/kap-server/src/protocol/rest-meta.ts @@ -11,6 +11,7 @@ export const metaCapabilitiesSchema = z.object({ mcp: z.literal(true), tasks: z.literal(true), terminal: z.literal(true), + transcript_prompts: z.literal(true), }); export type MetaCapabilities = z.infer; diff --git a/packages/kap-server/src/routes/meta.ts b/packages/kap-server/src/routes/meta.ts index 539209baa0..c12f63223f 100644 --- a/packages/kap-server/src/routes/meta.ts +++ b/packages/kap-server/src/routes/meta.ts @@ -34,6 +34,7 @@ export function registerMetaRoute(app: RouteHost, opts: MetaRouteOptions): void mcp: true as const, tasks: true as const, terminal: true as const, + transcript_prompts: true as const, }), server_id: opts.serverId, started_at: opts.startedAt, diff --git a/packages/kap-server/test/meta.test.ts b/packages/kap-server/test/meta.test.ts index ef0606e809..2dae12ffdf 100644 --- a/packages/kap-server/test/meta.test.ts +++ b/packages/kap-server/test/meta.test.ts @@ -108,6 +108,38 @@ describe('/api/v1/meta experimental_flags', () => { }); }); +describe('/api/v1/meta capabilities', () => { + let server: RunningServer | undefined; + let home: string | undefined; + + afterEach(async () => { + if (server !== undefined) { + await server.close(); + server = undefined; + } + if (home !== undefined) { + await rm(home, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 }); + home = undefined; + } + }); + + it('advertises transcript prompt entities', async () => { + home = await mkdtemp(join(tmpdir(), 'kimi-server-v2-meta-')); + server = await startServer({ + hostIdentity: TEST_HOST_IDENTITY, + host: '127.0.0.1', + port: 0, + homeDir: home, + logLevel: 'silent', + }); + const res = await authedFetch(server, `http://127.0.0.1:${server.port}`, '/api/v1/meta'); + expect(res.status).toBe(200); + const body = (await res.json()) as { code: number; data: { capabilities?: Record } }; + expect(body.code).toBe(0); + expect(body.data.capabilities?.['transcript_prompts']).toBe(true); + }); +}); + describe('/api/v1/meta web_title', () => { let server: RunningServer | undefined; let home: string | undefined;