mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-05 16:04:43 +00:00
* feat(server): add background agents An agent can be created background in any workspace. It stays a durable, addressable agent, but default discovery, workspace status and attention leave it out. Effective background is agent.background || workspace.background. - Protocol: `create_agent_request.background` now marks the agent itself and stays the workspace intent for a workspace the request creates. Snapshots carry `background`. The daemon advertises `features.backgroundAgents`. Clients advertise the `background_agents` capability. - Daemon: the flag persists in the agent record, so restart and resume keep it. AgentDirectory owns visibility. Inclusive reads and subscriptions from sources without `background_agents` see only agents in background workspaces, because older apps would otherwise open a tab for each one. - Inheritance: omitted on agent-scoped creation, children and new workspaces take the caller agent's background. - MCP: create_agent accepts `background`. - SDK: placing a background agent in an existing workspace, or under a caller, fails fast with "Update the host to use background agents." on older hosts. - CLI: `ls -a` and `ls --background` add a BACKGROUND column. * feat(app): hide background agents from tabs, track and status * docs(plugins): point hidden helpers at background agents * fix: keep background agents hidden across cache reload and connected hosts * fix: keep remote creation working on older hosts and inherit foreign parents' background
62 lines
4.0 KiB
TypeScript
62 lines
4.0 KiB
TypeScript
export const CLIENT_CAPS = {
|
|
terminalChunkedReplay: "terminal_chunked_replay",
|
|
binaryChunkingV1: "binary_chunking_v1",
|
|
helloRejection: "hello_rejection",
|
|
// COMPAT(ownedSubscriptions): added in v0.8.0, remove legacy ownership after 2027-03-09.
|
|
ownedSubscriptions: "owned_subscriptions",
|
|
// 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
|
|
// once the supported client floor is >= v0.1.106.
|
|
selectiveAgentTimeline: "selective_agent_timeline",
|
|
reasoningMergeEnum: "reasoning_merge_enum",
|
|
// COMPAT(customModeIcons): added in v0.1.84. Old clients pin AgentModeIcon to
|
|
// a closed enum and crash rendering unknown values; daemon downgrades icons
|
|
// outside the legacy set to "ShieldCheck" when this cap is absent. Drop the
|
|
// gate when floor >= v0.1.84.
|
|
customModeIcons: "custom_mode_icons",
|
|
// COMPAT(terminalReflowableSnapshot): added in v0.1.88. The daemon attaches
|
|
// per-row soft-wrap flags (gridWrapped/scrollbackWrapped) to terminal snapshots
|
|
// only when the client advertises this, so restored content can reflow on resize.
|
|
// Old clients use a strict TerminalState schema and would reject the extra fields.
|
|
// Drop the gate (always send the flags) when floor >= v0.1.88.
|
|
terminalReflowableSnapshot: "terminal_reflowable_snapshot",
|
|
// COMPAT(providerSubagents): added in v0.1.107. The daemon emits provider-owned
|
|
// child descriptors and timelines only to clients that understand the new messages.
|
|
providerSubagents: "provider_subagents",
|
|
// COMPAT(projectedSubagentTimeline): added after v0.8.0, remove gates after 2027-03-14; retain wire capability.
|
|
projectedSubagentTimeline: "projected_subagent_timeline",
|
|
// COMPAT(projectUpdates): added in v0.1.109, remove gate after 2027-01-15.
|
|
projectUpdates: "project_updates",
|
|
// COMPAT(compactProviderSnapshots): added in v0.2.X. Capable clients receive
|
|
// provider catalogs with shared thinking sets and may revalidate by content hash.
|
|
// Remove the legacy snapshot encoding after 2027-02-04.
|
|
compactProviderSnapshots: "compact_provider_snapshots",
|
|
providerSnapshotReferences: "provider_snapshot_references",
|
|
// COMPAT(timelineReplacementInvalidation): added in v0.5.0, remove legacy
|
|
// reconstructed timeline replay after 2027-02-21 once the client floor supports invalidation.
|
|
timelineReplacementInvalidation: "timeline_replacement_invalidation",
|
|
// COMPAT(timelineNotifications): added in v0.7.2. The daemon omits notification
|
|
// timeline items for older clients whose strict timeline union rejects them.
|
|
// Remove after 2027-03-03 once the supported client floor is >= v0.7.2.
|
|
timelineNotifications: "timeline_notifications",
|
|
// COMPAT(pluginTimelineItems): added in v0.8.0, remove after 2027-03-07 once client floor >= v0.8.0.
|
|
pluginTimelineItems: "plugin_timeline_items",
|
|
workspaceSetupObservation: "workspace_setup_observation",
|
|
// COMPAT(pluginBinaryPayloads): added in v0.15.0, remove after 2027-05-02 once client floor >= v0.15.0.
|
|
// The daemon sends plugin RPC outputs as binary opcode 0x21 only to clients that decode it.
|
|
pluginBinaryPayloads: "plugin_binary_payloads",
|
|
// COMPAT(workspaceSetupBlocked): added in v0.8.0, remove after 2027-03-07 once client floor >= v0.8.0.
|
|
workspaceSetupBlocked: "workspace_setup_blocked",
|
|
// COMPAT(backgroundAgents): added in v0.15.0, remove after 2027-05-03 once client floor >= v0.15.0.
|
|
// Sources without it never receive agent-level background agents in inclusive lists or
|
|
// update subscriptions, because older apps auto-open a tab for every replicated root agent.
|
|
backgroundAgents: "background_agents",
|
|
browserHost: "browser_host",
|
|
} as const;
|
|
|
|
export type ClientCapability = (typeof CLIENT_CAPS)[keyof typeof CLIENT_CAPS];
|