@camerontaylor/paseo-client 0.11.0-beta.1.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.
- package/dist/daemon-client.d.ts +7 -3
- package/dist/daemon-client.js +85 -25
- package/package.json +3 -3
package/dist/daemon-client.d.ts
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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>;
|
package/dist/daemon-client.js
CHANGED
|
@@ -284,8 +284,8 @@ function toReasonCode(reason) {
|
|
|
284
284
|
}
|
|
285
285
|
return "unknown";
|
|
286
286
|
}
|
|
287
|
+
// COMPAT(providerUsageList): added in v0.1.98, remove after 2027-03-26.
|
|
287
288
|
export function supportsUsageReports(features) {
|
|
288
|
-
// COMPAT(providerUsageList): added in v0.1.98, remove after 2027-03-26.
|
|
289
289
|
return features?.usageSources === true || features?.providerUsageList === true;
|
|
290
290
|
}
|
|
291
291
|
export class DaemonClient {
|
|
@@ -3580,45 +3580,105 @@ 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 {
|
|
3593
3597
|
requestId: payload.requestId,
|
|
3594
3598
|
reports: payload.providers
|
|
3595
3599
|
.filter((provider) => !options?.reportIds || options.reportIds.includes(provider.providerId))
|
|
3596
|
-
.map((provider) =>
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3600
|
+
.map((provider) => {
|
|
3601
|
+
// COMPAT(providerUsageList): added in v0.1.98, remove after 2027-03-26.
|
|
3602
|
+
// 0.10 reports have no typed problems; preserve their unavailable badge and error text.
|
|
3603
|
+
let report;
|
|
3604
|
+
if (provider.status === "available") {
|
|
3605
|
+
report = {
|
|
3606
|
+
status: "available",
|
|
3607
|
+
windows: provider.windows,
|
|
3608
|
+
balances: provider.balances ?? undefined,
|
|
3609
|
+
details: provider.details ?? undefined,
|
|
3610
|
+
planLabel: provider.planLabel ?? undefined,
|
|
3611
|
+
};
|
|
3612
|
+
}
|
|
3613
|
+
else if (provider.status === "error") {
|
|
3614
|
+
report = { status: "error", error: provider.error ?? "" };
|
|
3615
|
+
}
|
|
3616
|
+
else {
|
|
3617
|
+
report = {
|
|
3618
|
+
status: "unavailable",
|
|
3619
|
+
problem: { kind: "no_quota", detail: provider.error ?? "" },
|
|
3620
|
+
};
|
|
3621
|
+
}
|
|
3622
|
+
return {
|
|
3623
|
+
id: provider.providerId,
|
|
3624
|
+
sourceId: provider.providerId,
|
|
3625
|
+
sourceLabel: provider.displayName,
|
|
3626
|
+
icon: legacyUsageIcon(provider.providerId),
|
|
3627
|
+
account: {},
|
|
3628
|
+
fetchedAt: provider.fetchedAt ?? payload.fetchedAt,
|
|
3629
|
+
report,
|
|
3630
|
+
};
|
|
3631
|
+
}),
|
|
3612
3632
|
};
|
|
3613
3633
|
}
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
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);
|
|
3621
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
|
+
}
|
|
3622
3682
|
}
|
|
3623
3683
|
async listCommands(input, legacyOptions) {
|
|
3624
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.
|
|
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.
|
|
43
|
-
"@camerontaylor/paseo-relay": "0.11.
|
|
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": {
|