@camerontaylor/paseo-client 0.11.0-beta.3.fork.1 → 0.11.1-fork.1

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.
@@ -6,7 +6,7 @@ import type { SessionEventSubscription } from "@camerontaylor/paseo-protocol/mes
6
6
  import type { ClientCapability } from "@camerontaylor/paseo-protocol/client-capabilities";
7
7
  import type { AgentAttentionNotificationPayload } from "@camerontaylor/paseo-protocol/agent-attention-notification";
8
8
  import { AgentRefreshedStatusPayloadSchema, CheckoutRenameBranchResponseSchema, CheckoutBaseRefSetResponseSchema, RenameTerminalResponseSchema, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, DaemonUpdateResponseSchema, type ActiveTurnBehavior, type ServerInfoStatusPayload } from "@camerontaylor/paseo-protocol/messages";
9
- import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, FileUploadResponse, FileExplorerResponse, FileVersion, FileWriteResult, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommit, ParsedDiffFile, CheckoutCommitResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutForgeSetAutoMergeResponse, CheckoutGithubSetAutoMergeResponse, CheckoutForgeGetCheckDetailsResponse, CheckoutGithubGetCheckDetailsResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, ForgeSearchResponse, ForgeSearchRequest, GitHubSearchResponse, GitHubSearchRequest, DirectorySuggestionsResponse, PaseoWorktreeListResponse, PaseoWorktreeArchiveResponse, ProjectIconSource, ProjectIconResponse, ProjectIconGetResponse, ProjectAddResponse, ProjectCreateDirectoryResponse, OpenProjectResponseMessage, WorkspaceGithubSearchRepositoriesResponse, ProjectGithubCloneProtocol, ProjectGithubCloneResponse, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, UsageListReportsResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DaemonConfigReloadResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, PaseoConfigRaw, PaseoConfigRevision, WorkspaceCreateRequest, WorkspaceRecoveryState, PluginListItem, PluginLogEntry, PluginSourceStatusItem, PluginSourceUpdateItem, PluginUpdateSelection, PluginUpdateProposal, PluginUpdatePreview, PluginUpdateResult, AgentSkillSelection, AgentSkillsStatus, AgentSkillsSaveResult } from "@camerontaylor/paseo-protocol/messages";
9
+ import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, FileUploadResponse, FileExplorerResponse, FileVersion, FileWriteResult, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommit, ParsedDiffFile, CheckoutCommitResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutForgeSetAutoMergeResponse, CheckoutGithubSetAutoMergeResponse, CheckoutForgeGetCheckDetailsResponse, CheckoutGithubGetCheckDetailsResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, ForgeSearchResponse, ForgeSearchRequest, GitHubSearchResponse, GitHubSearchRequest, DirectorySuggestionsResponse, PaseoWorktreeListResponse, PaseoWorktreeArchiveResponse, ProjectIconSource, ProjectIconResponse, ProjectIconGetResponse, ProjectAddResponse, ProjectCreateDirectoryResponse, OpenProjectResponseMessage, WorkspaceGithubSearchRepositoriesResponse, ProjectGithubCloneProtocol, ProjectGithubCloneResponse, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, UsageReportEntry, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DaemonConfigReloadResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, PaseoConfigRaw, PaseoConfigRevision, WorkspaceCreateRequest, WorkspaceRecoveryState, PluginListItem, PluginLogEntry, PluginSourceStatusItem, PluginSourceUpdateItem, PluginUpdateSelection, PluginUpdateProposal, PluginUpdatePreview, PluginUpdateResult, AgentSkillSelection, AgentSkillsStatus, AgentSkillsSaveResult } from "@camerontaylor/paseo-protocol/messages";
10
10
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProviderNotice, AgentProvider, AgentSessionConfig } from "@camerontaylor/paseo-protocol/agent-types";
11
11
  import type { AgentConfigApply, MutableDaemonConfig, MutableDaemonConfigPatch } from "@camerontaylor/paseo-protocol/messages";
12
12
  import { type DaemonTransportFactory, type WebSocketFactory } from "./daemon-client-transport.js";
@@ -266,7 +266,10 @@ type GetProvidersSnapshotPayload = GetProvidersSnapshotResponseMessage["payload"
266
266
  type RefreshProvidersSnapshotPayload = RefreshProvidersSnapshotResponseMessage["payload"];
267
267
  type ProviderDiagnosticPayload = ProviderDiagnosticResponseMessage["payload"];
268
268
  type ProviderUsageListPayload = ProviderUsageListResponseMessage["payload"];
269
- type UsageListReportsPayload = UsageListReportsResponseMessage["payload"];
269
+ interface UsageListReportsPayload {
270
+ requestId: string;
271
+ reports: UsageReportEntry[];
272
+ }
270
273
  type DaemonStatusPayload = DaemonGetStatusResponse["payload"];
271
274
  type DaemonPairingOfferPayload = DaemonGetPairingOfferResponse["payload"];
272
275
  type DiagnosticsPayload = DiagnosticsResponse["payload"];
@@ -1192,10 +1195,11 @@ export declare class DaemonClient {
1192
1195
  requestId?: string;
1193
1196
  }): Promise<ProviderUsageListPayload>;
1194
1197
  listUsageReports(options?: {
1198
+ agentId?: string;
1195
1199
  requestId?: string;
1196
1200
  forceRefresh?: boolean;
1197
1201
  reportIds?: string[];
1198
- }): Promise<UsageListReportsPayload>;
1202
+ }, onReport?: (report: UsageReportEntry) => void): Promise<UsageListReportsPayload>;
1199
1203
  listCommands(options: ListCommandsOptions): Promise<ListCommandsPayload>;
1200
1204
  listCommands(agentId: string, requestId?: string): Promise<ListCommandsPayload>;
1201
1205
  listCommands(agentId: string, options?: LegacyListCommandsOptions): Promise<ListCommandsPayload>;
@@ -3580,13 +3580,17 @@ export class DaemonClient {
3580
3580
  },
3581
3581
  });
3582
3582
  }
3583
- async listUsageReports(options) {
3583
+ async listUsageReports(options, onReport) {
3584
3584
  const features = this.getLastServerInfoMessage()?.features;
3585
3585
  if (!supportsUsageReports(features)) {
3586
3586
  throw new Error("Update the host to see usage.");
3587
3587
  }
3588
+ if (options?.agentId !== undefined && options.reportIds !== undefined)
3589
+ throw new Error("agentId and reportIds cannot be combined");
3588
3590
  // COMPAT(providerUsageList): added in v0.1.98, remove after 2027-03-26.
3589
3591
  if (features?.usageSources !== true) {
3592
+ if (options?.agentId !== undefined)
3593
+ return { requestId: this.createRequestId(options.requestId), reports: [] };
3590
3594
  // Released hosts serve a five-minute cache and have no forceRefresh option.
3591
3595
  const payload = await this.listProviderUsage({ requestId: options?.requestId });
3592
3596
  return {
@@ -3627,14 +3631,54 @@ export class DaemonClient {
3627
3631
  }),
3628
3632
  };
3629
3633
  }
3630
- return this.sendNamespacedCorrelatedSessionRequest({
3631
- requestId: options?.requestId,
3632
- message: {
3633
- type: "usage.list_reports.request",
3634
- forceRefresh: options?.forceRefresh,
3635
- reportIds: options?.reportIds,
3636
- },
3634
+ const requestId = this.createRequestId(options?.requestId);
3635
+ const reports = [];
3636
+ let active = true;
3637
+ const unsubscribe = this.subscribeRawMessages((message) => {
3638
+ if (!active ||
3639
+ !("payload" in message) ||
3640
+ !("requestId" in message.payload) ||
3641
+ message.payload.requestId !== requestId)
3642
+ return;
3643
+ if (message.type === "usage.list_reports.response" || message.type === "rpc_error") {
3644
+ active = false;
3645
+ return;
3646
+ }
3647
+ if (message.type !== "usage.list_reports.update")
3648
+ return;
3649
+ reports.push(message.payload.report);
3650
+ onReport?.(message.payload.report);
3637
3651
  });
3652
+ try {
3653
+ const response = await this.sendRequest({
3654
+ requestId,
3655
+ message: {
3656
+ type: "usage.list_reports.request",
3657
+ streaming: features?.usageReportsStreaming === true ? true : undefined,
3658
+ requestId,
3659
+ forceRefresh: options?.forceRefresh,
3660
+ reportIds: options?.reportIds,
3661
+ agentId: options?.agentId,
3662
+ },
3663
+ select: (message) => message.type === "usage.list_reports.response" && message.payload.requestId === requestId
3664
+ ? message.payload
3665
+ : null,
3666
+ });
3667
+ if (response.error != null)
3668
+ throw new Error(response.error);
3669
+ // COMPAT(usageReportsStreaming): added in v0.11.1, remove after 2027-04-08 once all hosts advertise usageReportsStreaming.
3670
+ // beta.3 sends reports only; beta.4 through 0.11.1 send updates only.
3671
+ if (response.reports !== undefined) {
3672
+ if (reports.length === 0)
3673
+ response.reports.forEach((report) => onReport?.(report));
3674
+ return { requestId, reports: response.reports };
3675
+ }
3676
+ return { requestId, reports };
3677
+ }
3678
+ finally {
3679
+ active = false;
3680
+ unsubscribe();
3681
+ }
3638
3682
  }
3639
3683
  async listCommands(input, legacyOptions) {
3640
3684
  const options = normalizeListCommandsOptions(input, legacyOptions);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camerontaylor/paseo-client",
3
- "version": "0.11.0-beta.3.fork.1",
3
+ "version": "0.11.1-fork.1",
4
4
  "description": "Paseo client SDK package",
5
5
  "files": [
6
6
  "dist",
@@ -39,8 +39,8 @@
39
39
  "test": "vitest run"
40
40
  },
41
41
  "dependencies": {
42
- "@camerontaylor/paseo-protocol": "0.11.0-beta.3.fork.1",
43
- "@camerontaylor/paseo-relay": "0.11.0-beta.3.fork.1",
42
+ "@camerontaylor/paseo-protocol": "0.11.1-fork.1",
43
+ "@camerontaylor/paseo-relay": "0.11.1-fork.1",
44
44
  "zod": "^4.4.3"
45
45
  },
46
46
  "devDependencies": {