@getpaseo/protocol 0.2.0-beta.1 → 0.2.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@ export type AgentAttentionReason = "finished" | "error" | "permission";
2
2
  export interface AgentAttentionNotificationData {
3
3
  [key: string]: unknown;
4
4
  serverId: string;
5
+ workspaceId?: string;
5
6
  agentId: string;
6
7
  reason: AgentAttentionReason;
7
8
  }
@@ -13,6 +14,7 @@ export interface AgentAttentionNotificationPayload {
13
14
  interface BuildAgentAttentionNotificationPayloadInput {
14
15
  reason: AgentAttentionReason;
15
16
  serverId: string;
17
+ workspaceId: string;
16
18
  agentId: string;
17
19
  assistantMessage?: string | null;
18
20
  permissionRequest?: NotificationPermissionRequest | null;
@@ -132,6 +132,7 @@ export function buildAgentAttentionNotificationPayload(input) {
132
132
  body,
133
133
  data: {
134
134
  serverId: input.serverId,
135
+ workspaceId: input.workspaceId,
135
136
  agentId: input.agentId,
136
137
  reason: input.reason,
137
138
  },
@@ -0,0 +1,8 @@
1
+ export interface AgentDeepLinkTarget {
2
+ serverId: string;
3
+ agentId: string;
4
+ }
5
+ export declare function buildAgentDeepLinkRoute(target: AgentDeepLinkTarget): `/h/${string}/agent/${string}`;
6
+ export declare function buildAgentDeepLink(target: AgentDeepLinkTarget): string;
7
+ export declare function parseAgentDeepLink(input: string): AgentDeepLinkTarget | null;
8
+ //# sourceMappingURL=agent-deep-link.d.ts.map
@@ -0,0 +1,49 @@
1
+ function normalizeSegment(value) {
2
+ return value.trim();
3
+ }
4
+ function normalizeAgentDeepLinkTarget(target) {
5
+ const serverId = normalizeSegment(target.serverId);
6
+ const agentId = normalizeSegment(target.agentId);
7
+ if (!serverId || !agentId) {
8
+ throw new Error("Agent deep links require a server ID and agent ID.");
9
+ }
10
+ return { serverId, agentId };
11
+ }
12
+ export function buildAgentDeepLinkRoute(target) {
13
+ const { serverId, agentId } = normalizeAgentDeepLinkTarget(target);
14
+ return `/h/${encodeURIComponent(serverId)}/agent/${encodeURIComponent(agentId)}`;
15
+ }
16
+ export function buildAgentDeepLink(target) {
17
+ return `paseo:/${buildAgentDeepLinkRoute(target)}`;
18
+ }
19
+ export function parseAgentDeepLink(input) {
20
+ let url;
21
+ try {
22
+ url = new URL(input);
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ if (url.protocol !== "paseo:" ||
28
+ url.hostname !== "h" ||
29
+ url.username ||
30
+ url.password ||
31
+ url.port ||
32
+ url.search ||
33
+ url.hash) {
34
+ return null;
35
+ }
36
+ const segments = url.pathname.split("/").filter(Boolean);
37
+ if (segments.length !== 3 || segments[1] !== "agent") {
38
+ return null;
39
+ }
40
+ try {
41
+ const serverId = normalizeSegment(decodeURIComponent(segments[0] ?? ""));
42
+ const agentId = normalizeSegment(decodeURIComponent(segments[2] ?? ""));
43
+ return serverId && agentId ? { serverId, agentId } : null;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ //# sourceMappingURL=agent-deep-link.js.map
@@ -286,6 +286,7 @@ export type AgentTimelineItem = {
286
286
  type: "user_message";
287
287
  text: string;
288
288
  messageId?: string;
289
+ clientMessageId?: string;
289
290
  } | {
290
291
  type: "assistant_message";
291
292
  text: string;
@@ -13,6 +13,7 @@ export declare const FileBeginMetadataSchema: z.ZodObject<{
13
13
  "utf-8": "utf-8";
14
14
  }>;
15
15
  modifiedAt: z.ZodString;
16
+ revision: z.ZodOptional<z.ZodString>;
16
17
  fileName: z.ZodOptional<z.ZodString>;
17
18
  }, z.core.$strip>;
18
19
  export interface FileBegin {
@@ -10,6 +10,7 @@ export const FileBeginMetadataSchema = z.object({
10
10
  size: z.number().int().nonnegative(),
11
11
  encoding: z.enum(["utf-8", "binary"]),
12
12
  modifiedAt: z.string(),
13
+ revision: z.string().optional(),
13
14
  fileName: z.string().optional(),
14
15
  });
15
16
  export function encodeFileTransferFrame(input) {
@@ -1,8 +1,10 @@
1
1
  export declare const CLIENT_CAPS: {
2
+ readonly selectiveAgentTimeline: "selective_agent_timeline";
2
3
  readonly reasoningMergeEnum: "reasoning_merge_enum";
3
4
  readonly customModeIcons: "custom_mode_icons";
4
5
  readonly terminalReflowableSnapshot: "terminal_reflowable_snapshot";
5
6
  readonly providerSubagents: "provider_subagents";
7
+ readonly projectUpdates: "project_updates";
6
8
  readonly browserHost: "browser_host";
7
9
  };
8
10
  export type ClientCapability = (typeof CLIENT_CAPS)[keyof typeof CLIENT_CAPS];
@@ -1,4 +1,8 @@
1
1
  export const CLIENT_CAPS = {
2
+ // COMPAT(selectiveAgentTimeline): added in v0.1.106. Capable clients receive
3
+ // agent streams only for their explicit viewed set. Remove after 2027-01-12
4
+ // once the supported client floor is >= v0.1.106.
5
+ selectiveAgentTimeline: "selective_agent_timeline",
2
6
  reasoningMergeEnum: "reasoning_merge_enum",
3
7
  // COMPAT(customModeIcons): added in v0.1.84. Old clients pin AgentModeIcon to
4
8
  // a closed enum and crash rendering unknown values; daemon downgrades icons
@@ -14,6 +18,8 @@ export const CLIENT_CAPS = {
14
18
  // COMPAT(providerSubagents): added in v0.1.107. The daemon emits provider-owned
15
19
  // child descriptors and timelines only to clients that understand the new messages.
16
20
  providerSubagents: "provider_subagents",
21
+ // COMPAT(projectUpdates): added in v0.1.109, remove gate after 2027-01-15.
22
+ projectUpdates: "project_updates",
17
23
  browserHost: "browser_host",
18
24
  };
19
25
  //# sourceMappingURL=client-capabilities.js.map