fix(client): keep daemon connections lean by default (#4470)

Move supported protocol capabilities into client defaults and make session traffic subscription-driven. Preserve timeline readiness and reconnect recovery across SDK, CLI, and plugin consumers.
This commit is contained in:
Mohamed Boudra
2026-09-08 12:59:25 +02:00
committed by GitHub
parent 158525624f
commit 18aaec2772
31 changed files with 1012 additions and 68 deletions
@@ -1,5 +1,7 @@
export const CLIENT_CAPS = {
// Clients outside the Paseo app version series can explicitly accept provider IDs.
// COMPAT(explicitEventSubscriptions): added in v0.8.0, remove legacy broadcasts after 2027-03-08.
explicitEventSubscriptions: "explicit_event_subscriptions",
allProviders: "all_providers",
// COMPAT(selectiveAgentTimeline): added in v0.1.106. Capable clients receive
// agent streams only for their explicit viewed set. Remove after 2027-01-12
+23
View File
@@ -3040,7 +3040,27 @@ export const HubExecutionControlRequestSchema = z.object({
export type HubExecutionControlRequest = z.infer<typeof HubExecutionControlRequestSchema>;
// These connection event streams have no directory bootstrap or timeline membership.
export const SessionEventSubscriptionSchema = z.enum([
"project.update",
"providers_snapshot_update",
"agent_attention_required",
"agent_permission_request",
"agent_permission_resolved",
]);
export type SessionEventSubscription = z.infer<typeof SessionEventSubscriptionSchema>;
export const SessionEventsSetSubscriptionRequestSchema = z.object({
type: z.literal("session.events.set_subscription.request"),
requestId: z.string(),
events: z.array(SessionEventSubscriptionSchema),
});
export const SessionEventsSetSubscriptionResponseSchema = z.object({
type: z.literal("session.events.set_subscription.response"),
payload: z.object({ requestId: z.string() }),
});
export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
SessionEventsSetSubscriptionRequestSchema,
HubExecutionAgentCreateRequestSchema,
HubExecutionAgentValidateRequestSchema,
HubExecutionControlRequestSchema,
@@ -3536,6 +3556,7 @@ export const ServerInfoStatusPayloadSchema = z
forgeProviders: z.boolean().optional(),
// COMPAT(selectiveAgentTimeline): added in v0.1.106, remove after 2027-01-12.
selectiveAgentTimeline: z.boolean().optional(),
explicitEventSubscriptions: z.boolean().optional(),
// COMPAT(canonicalSubmittedPrompts): added in v0.2.6, remove gate after 2027-01-30.
canonicalSubmittedPrompts: z.boolean().optional(),
// COMPAT(agentTurnIdentity): accept peers that observed pre-release v0.2.6 through 2027-01-31.
@@ -6418,6 +6439,7 @@ export const AgentSkillsImportLegacySelectionResponseSchema = z.object({
});
export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
SessionEventsSetSubscriptionResponseSchema,
HubExecutionAgentCreateResponseSchema,
HubExecutionAgentValidateResponseSchema,
HubExecutionControlResponseSchema,
@@ -7098,6 +7120,7 @@ export const WSHelloMessageSchema = z.object({
.object({
voice: z.boolean().optional(),
pushNotifications: z.boolean().optional(),
[CLIENT_CAPS.explicitEventSubscriptions]: z.boolean().optional(),
[CLIENT_CAPS.allProviders]: z.boolean().optional(),
[CLIENT_CAPS.reasoningMergeEnum]: z.boolean().optional(),
[CLIENT_CAPS.selectiveAgentTimeline]: z.boolean().optional(),