fix(protocol): allow future agent capability flags

This commit is contained in:
Mohamed Boudra
2026-06-11 12:40:07 +07:00
parent a682476d11
commit f639c4cba6
4 changed files with 31 additions and 14 deletions
+2
View File
@@ -131,8 +131,10 @@ export interface AgentFeatureSelect {
export type AgentFeature = AgentFeatureToggle | AgentFeatureSelect;
export interface AgentCapabilityFlags {
[capability: string]: boolean | undefined;
supportsStreaming: boolean;
supportsSessionPersistence: boolean;
supportsSessionListing?: boolean;
supportsDynamicModes: boolean;
supportsMcpServers: boolean;
supportsReasoningStream: boolean;
+17 -14
View File
@@ -237,20 +237,23 @@ export const ProviderSnapshotEntrySchema = z.object({
defaultModeId: z.string().nullable().optional(),
});
const AgentCapabilityFlagsSchema: z.ZodType<AgentCapabilityFlags> = z.object({
supportsStreaming: z.boolean(),
supportsSessionPersistence: z.boolean(),
supportsDynamicModes: z.boolean(),
supportsMcpServers: z.boolean(),
supportsReasoningStream: z.boolean(),
supportsToolInvocations: z.boolean(),
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
supportsRewindConversation: z.boolean().optional().default(false),
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
supportsRewindFiles: z.boolean().optional().default(false),
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
supportsRewindBoth: z.boolean().optional().default(false),
});
const AgentCapabilityFlagsSchema: z.ZodType<AgentCapabilityFlags> = z
.object({
supportsStreaming: z.boolean(),
supportsSessionPersistence: z.boolean(),
supportsSessionListing: z.boolean().optional(),
supportsDynamicModes: z.boolean(),
supportsMcpServers: z.boolean(),
supportsReasoningStream: z.boolean(),
supportsToolInvocations: z.boolean(),
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
supportsRewindConversation: z.boolean().optional().default(false),
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
supportsRewindFiles: z.boolean().optional().default(false),
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
supportsRewindBoth: z.boolean().optional().default(false),
})
.catchall(z.boolean());
const AgentUsageSchema: z.ZodType<AgentUsage> = z.object({
inputTokens: z.number().optional(),
@@ -160,6 +160,7 @@ export interface AgentFeatureSelect {
export type AgentFeature = AgentFeatureToggle | AgentFeatureSelect;
export interface AgentCapabilityFlags {
[capability: string]: boolean | undefined;
supportsStreaming: boolean;
supportsSessionPersistence: boolean;
supportsSessionListing?: boolean;
@@ -3306,6 +3306,16 @@ describe("agent snapshot MCP serialization", () => {
provider: "codex",
sessionId: "session-full",
},
capabilities: {
supportsStreaming: false,
supportsSessionPersistence: false,
supportsSessionListing: true,
supportsDynamicModes: false,
supportsMcpServers: true,
supportsReasoningStream: false,
supportsToolInvocations: true,
supportsNewProviderCapability: true,
},
}),
);
@@ -3325,6 +3335,7 @@ describe("agent snapshot MCP serialization", () => {
`get_agent_status response failed AgentSnapshotPayloadSchema: ${JSON.stringify(parsed.error.issues, null, 2)}`,
);
}
expectOutputSchemaAccepts(tool, response.structuredContent);
expect(response.structuredContent.status).toBe("idle");
expect(snapshot).toEqual(
expect.objectContaining({