fix(protocol): allow future agent capability flags
This commit is contained in:
@@ -131,8 +131,10 @@ export interface AgentFeatureSelect {
|
|||||||
export type AgentFeature = AgentFeatureToggle | AgentFeatureSelect;
|
export type AgentFeature = AgentFeatureToggle | AgentFeatureSelect;
|
||||||
|
|
||||||
export interface AgentCapabilityFlags {
|
export interface AgentCapabilityFlags {
|
||||||
|
[capability: string]: boolean | undefined;
|
||||||
supportsStreaming: boolean;
|
supportsStreaming: boolean;
|
||||||
supportsSessionPersistence: boolean;
|
supportsSessionPersistence: boolean;
|
||||||
|
supportsSessionListing?: boolean;
|
||||||
supportsDynamicModes: boolean;
|
supportsDynamicModes: boolean;
|
||||||
supportsMcpServers: boolean;
|
supportsMcpServers: boolean;
|
||||||
supportsReasoningStream: boolean;
|
supportsReasoningStream: boolean;
|
||||||
|
|||||||
@@ -237,20 +237,23 @@ export const ProviderSnapshotEntrySchema = z.object({
|
|||||||
defaultModeId: z.string().nullable().optional(),
|
defaultModeId: z.string().nullable().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
const AgentCapabilityFlagsSchema: z.ZodType<AgentCapabilityFlags> = z.object({
|
const AgentCapabilityFlagsSchema: z.ZodType<AgentCapabilityFlags> = z
|
||||||
supportsStreaming: z.boolean(),
|
.object({
|
||||||
supportsSessionPersistence: z.boolean(),
|
supportsStreaming: z.boolean(),
|
||||||
supportsDynamicModes: z.boolean(),
|
supportsSessionPersistence: z.boolean(),
|
||||||
supportsMcpServers: z.boolean(),
|
supportsSessionListing: z.boolean().optional(),
|
||||||
supportsReasoningStream: z.boolean(),
|
supportsDynamicModes: z.boolean(),
|
||||||
supportsToolInvocations: z.boolean(),
|
supportsMcpServers: z.boolean(),
|
||||||
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
|
supportsReasoningStream: z.boolean(),
|
||||||
supportsRewindConversation: z.boolean().optional().default(false),
|
supportsToolInvocations: z.boolean(),
|
||||||
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
|
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
|
||||||
supportsRewindFiles: z.boolean().optional().default(false),
|
supportsRewindConversation: z.boolean().optional().default(false),
|
||||||
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
|
// COMPAT(rewind): added in v0.1.X, drop when floor >= v0.1.X.
|
||||||
supportsRewindBoth: z.boolean().optional().default(false),
|
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({
|
const AgentUsageSchema: z.ZodType<AgentUsage> = z.object({
|
||||||
inputTokens: z.number().optional(),
|
inputTokens: z.number().optional(),
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ export interface AgentFeatureSelect {
|
|||||||
export type AgentFeature = AgentFeatureToggle | AgentFeatureSelect;
|
export type AgentFeature = AgentFeatureToggle | AgentFeatureSelect;
|
||||||
|
|
||||||
export interface AgentCapabilityFlags {
|
export interface AgentCapabilityFlags {
|
||||||
|
[capability: string]: boolean | undefined;
|
||||||
supportsStreaming: boolean;
|
supportsStreaming: boolean;
|
||||||
supportsSessionPersistence: boolean;
|
supportsSessionPersistence: boolean;
|
||||||
supportsSessionListing?: boolean;
|
supportsSessionListing?: boolean;
|
||||||
|
|||||||
@@ -3306,6 +3306,16 @@ describe("agent snapshot MCP serialization", () => {
|
|||||||
provider: "codex",
|
provider: "codex",
|
||||||
sessionId: "session-full",
|
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)}`,
|
`get_agent_status response failed AgentSnapshotPayloadSchema: ${JSON.stringify(parsed.error.issues, null, 2)}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
expectOutputSchemaAccepts(tool, response.structuredContent);
|
||||||
expect(response.structuredContent.status).toBe("idle");
|
expect(response.structuredContent.status).toBe("idle");
|
||||||
expect(snapshot).toEqual(
|
expect(snapshot).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
|
|||||||
Reference in New Issue
Block a user