@getpaseo/client 0.1.106 → 0.1.108

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.
@@ -1,7 +1,7 @@
1
1
  import type { z } from "zod";
2
2
  import { type ClientCapability } from "@getpaseo/protocol/client-capabilities";
3
3
  import { AgentRefreshedStatusPayloadSchema, CheckoutRenameBranchResponseSchema, RenameTerminalResponseSchema, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, DaemonUpdateResponseSchema, type ServerInfoStatusPayload } from "@getpaseo/protocol/messages";
4
- import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, FileUploadResponse, FileExplorerResponse, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutGithubGetCheckDetailsResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, GitHubSearchResponse, GitHubSearchRequest, DirectorySuggestionsResponse, PaseoWorktreeListResponse, PaseoWorktreeArchiveResponse, ProjectIconResponse, ProjectAddResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, PaseoConfigRaw, PaseoConfigRevision, WorkspaceCreateRequest } from "@getpaseo/protocol/messages";
4
+ import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, FileUploadResponse, FileExplorerResponse, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutGithubGetCheckDetailsResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, GitHubSearchResponse, GitHubSearchRequest, DirectorySuggestionsResponse, PaseoWorktreeListResponse, PaseoWorktreeArchiveResponse, ProjectIconResponse, ProjectAddResponse, ProjectCreateDirectoryResponse, OpenProjectResponseMessage, WorkspaceGithubSearchRepositoriesResponse, ProjectGithubCloneProtocol, ProjectGithubCloneResponse, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, PaseoConfigRaw, PaseoConfigRevision, WorkspaceCreateRequest } from "@getpaseo/protocol/messages";
5
5
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProviderNotice, AgentProvider, AgentSessionConfig } from "@getpaseo/protocol/agent-types";
6
6
  import type { MutableDaemonConfig, MutableDaemonConfigPatch } from "@getpaseo/protocol/messages";
7
7
  import { type DaemonTransportFactory, type WebSocketFactory } from "./daemon-client-transport.js";
@@ -327,7 +327,21 @@ export interface FetchAgentTimelineOptions {
327
327
  requestId?: string;
328
328
  timeout?: number;
329
329
  }
330
+ export type ProviderSubagentListPayload = Extract<SessionOutboundMessage, {
331
+ type: "agent.provider_subagents.list.response";
332
+ }>["payload"];
333
+ export type ProviderSubagentTimelinePayload = Extract<SessionOutboundMessage, {
334
+ type: "agent.provider_subagents.timeline.get.response";
335
+ }>["payload"];
336
+ export interface FetchProviderSubagentTimelineOptions {
337
+ direction?: ProviderSubagentTimelinePayload["direction"];
338
+ cursor?: FetchAgentTimelineCursor;
339
+ limit?: number;
340
+ requestId?: string;
341
+ timeout?: number;
342
+ }
330
343
  export interface AgentForkContextOptions {
344
+ boundaryCursor?: FetchAgentTimelineCursor;
331
345
  boundaryMessageId?: string;
332
346
  requestId?: string;
333
347
  }
@@ -539,6 +553,9 @@ export interface RenameTerminalInput {
539
553
  }
540
554
  type OpenProjectPayload = OpenProjectResponseMessage["payload"];
541
555
  type ProjectAddPayload = ProjectAddResponse["payload"];
556
+ export type ProjectCreateDirectoryPayload = ProjectCreateDirectoryResponse["payload"];
557
+ export type WorkspaceGithubSearchRepositoriesPayload = WorkspaceGithubSearchRepositoriesResponse["payload"];
558
+ type ProjectGithubClonePayload = ProjectGithubCloneResponse["payload"];
542
559
  type ArchiveWorkspacePayload = ArchiveWorkspaceResponseMessage["payload"];
543
560
  type WorkspaceSetupStatusPayload = WorkspaceSetupStatusResponseMessage["payload"];
544
561
  export interface FetchAgentResult {
@@ -671,6 +688,19 @@ export declare class DaemonClient {
671
688
  fetchWorkspaces(options?: FetchWorkspacesOptions): Promise<FetchWorkspacesPayload>;
672
689
  openProject(cwd: string, requestId?: string): Promise<OpenProjectPayload>;
673
690
  addProject(cwd: string, requestId?: string): Promise<ProjectAddPayload>;
691
+ createProjectDirectory(input: {
692
+ parentPath: string;
693
+ name: string;
694
+ }, requestId?: string): Promise<ProjectCreateDirectoryPayload>;
695
+ searchGithubRepositories(input: {
696
+ query: string;
697
+ limit?: number;
698
+ }, requestId?: string): Promise<WorkspaceGithubSearchRepositoriesPayload>;
699
+ cloneGithubProject(input: {
700
+ repo: string;
701
+ targetDirectory: string;
702
+ cloneProtocol?: ProjectGithubCloneProtocol;
703
+ }, requestId?: string): Promise<ProjectGithubClonePayload>;
674
704
  startWorkspaceScript(workspaceId: string, scriptName: string, requestId?: string): Promise<Extract<SessionOutboundMessage, {
675
705
  type: "start_workspace_script_response";
676
706
  }>["payload"]>;
@@ -700,10 +730,18 @@ export declare class DaemonClient {
700
730
  setWorkspaceTitle(workspaceId: string, title: string | null, requestId?: string): Promise<{
701
731
  title: string | null;
702
732
  }>;
733
+ setWorkspacePinned(workspaceId: string, pinned: boolean, requestId?: string): Promise<{
734
+ pinnedAt: string | null;
735
+ }>;
703
736
  resumeAgent(handle: AgentPersistenceHandle, overrides?: Partial<AgentSessionConfig>): Promise<AgentSnapshotPayload>;
704
737
  importAgent(input: ImportAgentInput): Promise<AgentSnapshotPayload>;
705
738
  refreshAgent(agentId: string, requestId?: string): Promise<AgentRefreshedStatusPayload>;
706
739
  fetchAgentTimeline(agentId: string, options?: FetchAgentTimelineOptions): Promise<FetchAgentTimelinePayload>;
740
+ listProviderSubagents(parentAgentId: string, options?: {
741
+ requestId?: string;
742
+ timeout?: number;
743
+ }): Promise<ProviderSubagentListPayload>;
744
+ fetchProviderSubagentTimeline(parentAgentId: string, subagentId: string, options?: FetchProviderSubagentTimelineOptions): Promise<ProviderSubagentTimelinePayload>;
707
745
  buildAgentForkContext(agentId: string, options?: AgentForkContextOptions): Promise<AgentForkContextPayload>;
708
746
  sendAgentMessage(agentId: string, text: string, options?: SendMessageOptions): Promise<void>;
709
747
  sendMessage(agentId: string, text: string, options?: SendMessageOptions): Promise<void>;
@@ -910,6 +948,10 @@ export declare class DaemonClient {
910
948
  command?: string;
911
949
  args?: string[];
912
950
  workspaceId?: string;
951
+ size?: {
952
+ rows: number;
953
+ cols: number;
954
+ };
913
955
  }): Promise<CreateTerminalPayload>;
914
956
  renameTerminal(input: RenameTerminalInput): Promise<RenameTerminalResult>;
915
957
  subscribeTerminal(terminalId: string, optionsOrRequestId?: {
@@ -17,6 +17,7 @@ const consoleLogger = {
17
17
  const perfNow = typeof performance !== "undefined" && typeof performance.now === "function"
18
18
  ? () => performance.now()
19
19
  : () => Date.now();
20
+ const PROJECT_GITHUB_CLONE_TIMEOUT_MS = 5 * 60 * 1000;
20
21
  function normalizePassword(value) {
21
22
  if (typeof value !== "string") {
22
23
  return null;
@@ -1020,6 +1021,39 @@ export class DaemonClient {
1020
1021
  responseType: "project.add.response",
1021
1022
  });
1022
1023
  }
1024
+ async createProjectDirectory(input, requestId) {
1025
+ return this.sendNamespacedCorrelatedSessionRequest({
1026
+ requestId,
1027
+ message: {
1028
+ type: "project.create_directory.request",
1029
+ parentPath: input.parentPath,
1030
+ name: input.name,
1031
+ },
1032
+ });
1033
+ }
1034
+ async searchGithubRepositories(input, requestId) {
1035
+ return this.sendNamespacedCorrelatedSessionRequest({
1036
+ requestId,
1037
+ message: {
1038
+ type: "workspace.github.search_repositories.request",
1039
+ query: input.query,
1040
+ limit: input.limit,
1041
+ },
1042
+ });
1043
+ }
1044
+ async cloneGithubProject(input, requestId) {
1045
+ const message = {
1046
+ type: "project.github.clone.request",
1047
+ repo: input.repo,
1048
+ targetDirectory: input.targetDirectory,
1049
+ ...(input.cloneProtocol ? { cloneProtocol: input.cloneProtocol } : {}),
1050
+ };
1051
+ return this.sendNamespacedCorrelatedSessionRequest({
1052
+ requestId,
1053
+ message,
1054
+ timeout: PROJECT_GITHUB_CLONE_TIMEOUT_MS,
1055
+ });
1056
+ }
1023
1057
  async startWorkspaceScript(workspaceId, scriptName, requestId) {
1024
1058
  return this.sendCorrelatedSessionRequest({
1025
1059
  requestId,
@@ -1290,6 +1324,21 @@ export class DaemonClient {
1290
1324
  }
1291
1325
  return { title: payload.title };
1292
1326
  }
1327
+ async setWorkspacePinned(workspaceId, pinned, requestId) {
1328
+ const payload = await this.sendCorrelatedSessionRequest({
1329
+ requestId,
1330
+ message: {
1331
+ type: "workspace.pin.set.request",
1332
+ workspaceId,
1333
+ pinned,
1334
+ },
1335
+ responseType: "workspace.pin.set.response",
1336
+ });
1337
+ if (!payload.accepted) {
1338
+ throw new Error(payload.error ?? "setWorkspacePinned rejected");
1339
+ }
1340
+ return { pinnedAt: payload.pinnedAt };
1341
+ }
1293
1342
  async resumeAgent(handle, overrides) {
1294
1343
  const requestId = this.createRequestId();
1295
1344
  const message = SessionInboundMessageSchema.parse({
@@ -1404,12 +1453,61 @@ export class DaemonClient {
1404
1453
  }
1405
1454
  return payload;
1406
1455
  }
1456
+ async listProviderSubagents(parentAgentId, options = {}) {
1457
+ const requestId = this.createRequestId(options.requestId);
1458
+ const message = SessionInboundMessageSchema.parse({
1459
+ type: "agent.provider_subagents.list.request",
1460
+ parentAgentId,
1461
+ requestId,
1462
+ });
1463
+ const payload = await this.sendRequest({
1464
+ requestId,
1465
+ message,
1466
+ timeout: options.timeout,
1467
+ options: { skipQueue: true },
1468
+ select: (response) => response.type === "agent.provider_subagents.list.response" &&
1469
+ response.payload.requestId === requestId
1470
+ ? response.payload
1471
+ : null,
1472
+ });
1473
+ if (payload.error) {
1474
+ throw new Error(payload.error);
1475
+ }
1476
+ return payload;
1477
+ }
1478
+ async fetchProviderSubagentTimeline(parentAgentId, subagentId, options = {}) {
1479
+ const requestId = this.createRequestId(options.requestId);
1480
+ const message = SessionInboundMessageSchema.parse({
1481
+ type: "agent.provider_subagents.timeline.get.request",
1482
+ parentAgentId,
1483
+ subagentId,
1484
+ requestId,
1485
+ ...(options.direction ? { direction: options.direction } : {}),
1486
+ ...(options.cursor ? { cursor: options.cursor } : {}),
1487
+ ...(typeof options.limit === "number" ? { limit: options.limit } : {}),
1488
+ });
1489
+ const payload = await this.sendRequest({
1490
+ requestId,
1491
+ message,
1492
+ timeout: options.timeout,
1493
+ options: { skipQueue: true },
1494
+ select: (response) => response.type === "agent.provider_subagents.timeline.get.response" &&
1495
+ response.payload.requestId === requestId
1496
+ ? response.payload
1497
+ : null,
1498
+ });
1499
+ if (payload.error) {
1500
+ throw new Error(payload.error);
1501
+ }
1502
+ return payload;
1503
+ }
1407
1504
  async buildAgentForkContext(agentId, options = {}) {
1408
1505
  const resolvedRequestId = this.createRequestId(options.requestId);
1409
1506
  const message = SessionInboundMessageSchema.parse({
1410
1507
  type: "agent.fork_context.request",
1411
1508
  agentId,
1412
1509
  requestId: resolvedRequestId,
1510
+ ...(options.boundaryCursor ? { boundaryCursor: options.boundaryCursor } : {}),
1413
1511
  ...(options.boundaryMessageId ? { boundaryMessageId: options.boundaryMessageId } : {}),
1414
1512
  });
1415
1513
  const payload = await this.sendRequest({
@@ -1503,7 +1601,7 @@ export class DaemonClient {
1503
1601
  agentId,
1504
1602
  requestId,
1505
1603
  });
1506
- await this.sendRequest({
1604
+ const payload = await this.sendRequest({
1507
1605
  requestId,
1508
1606
  message,
1509
1607
  options: { skipQueue: true },
@@ -1517,6 +1615,9 @@ export class DaemonClient {
1517
1615
  return msg.payload;
1518
1616
  },
1519
1617
  });
1618
+ if (payload.error) {
1619
+ throw new Error(payload.error);
1620
+ }
1520
1621
  }
1521
1622
  async setAgentMode(agentId, modeId) {
1522
1623
  const requestId = this.createRequestId();
@@ -2828,6 +2929,7 @@ export class DaemonClient {
2828
2929
  command: options?.command,
2829
2930
  args: options?.args,
2830
2931
  ...(options?.workspaceId !== undefined ? { workspaceId: options.workspaceId } : {}),
2932
+ ...(options?.size !== undefined ? { size: options.size } : {}),
2831
2933
  requestId: resolvedRequestId,
2832
2934
  });
2833
2935
  return this.sendCorrelatedRequest({
@@ -3235,6 +3337,7 @@ export class DaemonClient {
3235
3337
  [CLIENT_CAPS.customModeIcons]: true,
3236
3338
  [CLIENT_CAPS.reasoningMergeEnum]: true,
3237
3339
  [CLIENT_CAPS.terminalReflowableSnapshot]: true,
3340
+ [CLIENT_CAPS.providerSubagents]: true,
3238
3341
  ...this.config.capabilities,
3239
3342
  },
3240
3343
  ...(this.config.appVersion ? { appVersion: this.config.appVersion } : {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getpaseo/client",
3
- "version": "0.1.106",
3
+ "version": "0.1.108",
4
4
  "description": "Paseo client SDK package",
5
5
  "files": [
6
6
  "dist",
@@ -35,8 +35,8 @@
35
35
  "test": "vitest run"
36
36
  },
37
37
  "dependencies": {
38
- "@getpaseo/protocol": "0.1.106",
39
- "@getpaseo/relay": "0.1.106",
38
+ "@getpaseo/protocol": "0.1.108",
39
+ "@getpaseo/relay": "0.1.108",
40
40
  "zod": "^4.4.3"
41
41
  },
42
42
  "devDependencies": {