@getpaseo/client 0.1.91-beta.2 → 0.1.91

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,6 +1,6 @@
1
1
  import type { z } from "zod";
2
2
  import { AgentRefreshedStatusPayloadSchema, CheckoutRenameBranchResponseSchema, RenameTerminalResponseSchema, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, type ServerInfoStatusPayload } from "@getpaseo/protocol/messages";
3
- import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, FileExplorerResponse, FetchAgentTimelineResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, GitHubSearchResponse, GitHubSearchRequest, DirectorySuggestionsResponse, PaseoWorktreeListResponse, PaseoWorktreeArchiveResponse, ProjectIconResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, PaseoConfigRaw, PaseoConfigRevision } from "@getpaseo/protocol/messages";
3
+ import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, FileUploadResponse, FileExplorerResponse, FetchAgentTimelineResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, GitHubSearchResponse, GitHubSearchRequest, DirectorySuggestionsResponse, PaseoWorktreeListResponse, PaseoWorktreeArchiveResponse, ProjectIconResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, PaseoConfigRaw, PaseoConfigRevision } from "@getpaseo/protocol/messages";
4
4
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProvider, AgentSessionConfig } from "@getpaseo/protocol/agent-types";
5
5
  import type { MutableDaemonConfig, MutableDaemonConfigPatch } from "@getpaseo/protocol/messages";
6
6
  import { type DaemonTransportFactory, type WebSocketFactory } from "./daemon-client-transport.js";
@@ -184,6 +184,15 @@ export interface FileReadResult {
184
184
  kind: LegacyFileExplorerFilePayload["kind"];
185
185
  modifiedAt: string;
186
186
  }
187
+ export interface FileUploadInput {
188
+ fileName: string;
189
+ mimeType: string;
190
+ bytes: Uint8Array | ArrayBuffer;
191
+ modifiedAt?: string;
192
+ requestId?: string;
193
+ chunkSize?: number;
194
+ }
195
+ export type FileUploadResult = FileUploadResponse["payload"];
187
196
  type FileDownloadTokenPayload = FileDownloadTokenResponse["payload"];
188
197
  type ListProviderFeaturesPayload = ListProviderFeaturesResponseMessage["payload"];
189
198
  type ListProviderModelsPayload = ListProviderModelsResponseMessage["payload"];
@@ -753,6 +762,7 @@ export declare class DaemonClient {
753
762
  private requestFileExplorer;
754
763
  listDirectory(cwd: string, path: string, requestId?: string): Promise<FileExplorerDirectoryPayload>;
755
764
  readFile(cwd: string, path: string, requestId?: string): Promise<FileReadResult>;
765
+ uploadFile(input: FileUploadInput): Promise<FileUploadResult>;
756
766
  requestDownloadToken(cwd: string, path: string, requestId?: string): Promise<FileDownloadTokenPayload>;
757
767
  requestProjectIcon(cwd: string, requestId?: string): Promise<ProjectIconResponse["payload"]>;
758
768
  listProviderModels(provider: AgentProvider, options?: {
@@ -1,7 +1,7 @@
1
1
  import { CLIENT_CAPS } from "@getpaseo/protocol/client-capabilities";
2
2
  import { AgentCreateFailedStatusPayloadSchema, AgentCreatedStatusPayloadSchema, AgentRefreshedStatusPayloadSchema, AgentResumedStatusPayloadSchema, parseServerInfoStatusPayload, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, SessionInboundMessageSchema, WSOutboundMessageSchema, } from "@getpaseo/protocol/messages";
3
3
  import { isRelayClientWebSocketUrl } from "@getpaseo/protocol/daemon-endpoints";
4
- import { asUint8Array, decodeFileTransferFrame, decodeTerminalStreamFrame, FileTransferOpcode, TerminalStreamOpcode, } from "@getpaseo/protocol/binary-frames/index";
4
+ import { asUint8Array, decodeFileTransferFrame, encodeFileTransferFrame, decodeTerminalStreamFrame, FileTransferOpcode, TerminalStreamOpcode, } from "@getpaseo/protocol/binary-frames/index";
5
5
  import { createRelayE2eeTransportFactory, createWebSocketTransportFactory, decodeMessageData, defaultWebSocketFactory, describeTransportClose, describeTransportError, } from "./daemon-client-transport.js";
6
6
  import { DaemonClientRuntimeMetrics } from "./daemon-client-runtime-metrics.js";
7
7
  import { TerminalStreamRouter } from "./terminal-stream-router.js";
@@ -2203,6 +2203,52 @@ export class DaemonClient {
2203
2203
  this.activeBinaryFileTransfers.delete(resolvedRequestId);
2204
2204
  }
2205
2205
  }
2206
+ async uploadFile(input) {
2207
+ const bytes = asUint8Array(input.bytes);
2208
+ if (!bytes) {
2209
+ throw new Error("File bytes are required.");
2210
+ }
2211
+ const resolvedRequestId = this.createRequestId(input.requestId);
2212
+ const modifiedAt = input.modifiedAt ?? new Date().toISOString();
2213
+ const responsePromise = this.sendCorrelatedRequest({
2214
+ requestId: resolvedRequestId,
2215
+ message: {
2216
+ type: "file.upload.request",
2217
+ fileName: input.fileName,
2218
+ mimeType: input.mimeType,
2219
+ size: bytes.byteLength,
2220
+ modifiedAt,
2221
+ requestId: resolvedRequestId,
2222
+ },
2223
+ responseType: "file.upload.response",
2224
+ timeout: 60000,
2225
+ options: { skipQueue: true },
2226
+ });
2227
+ this.sendBinaryFrame(encodeFileTransferFrame({
2228
+ opcode: FileTransferOpcode.FileBegin,
2229
+ requestId: resolvedRequestId,
2230
+ metadata: {
2231
+ mime: input.mimeType,
2232
+ size: bytes.byteLength,
2233
+ encoding: "binary",
2234
+ modifiedAt,
2235
+ fileName: input.fileName,
2236
+ },
2237
+ }));
2238
+ const chunkSize = input.chunkSize ?? 1024 * 1024;
2239
+ for (let offset = 0; offset < bytes.byteLength; offset += chunkSize) {
2240
+ this.sendBinaryFrame(encodeFileTransferFrame({
2241
+ opcode: FileTransferOpcode.FileChunk,
2242
+ requestId: resolvedRequestId,
2243
+ payload: bytes.subarray(offset, Math.min(offset + chunkSize, bytes.byteLength)),
2244
+ }));
2245
+ }
2246
+ this.sendBinaryFrame(encodeFileTransferFrame({
2247
+ opcode: FileTransferOpcode.FileEnd,
2248
+ requestId: resolvedRequestId,
2249
+ }));
2250
+ return responsePromise;
2251
+ }
2206
2252
  async requestDownloadToken(cwd, path, requestId) {
2207
2253
  return this.sendCorrelatedSessionRequest({
2208
2254
  requestId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getpaseo/client",
3
- "version": "0.1.91-beta.2",
3
+ "version": "0.1.91",
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.91-beta.2",
39
- "@getpaseo/relay": "0.1.91-beta.2",
38
+ "@getpaseo/protocol": "0.1.91",
39
+ "@getpaseo/relay": "0.1.91",
40
40
  "zod": "^3.23.8"
41
41
  },
42
42
  "devDependencies": {