mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-11 10:57:07 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user