@hyperdrive.bot/paseo-client 0.3.34 → 0.3.36

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,9 +1,9 @@
1
1
  import type { z } from "zod";
2
2
  import { type ClientCapability } from "@hyperdrive.bot/paseo-protocol/client-capabilities";
3
3
  import { AgentRefreshedStatusPayloadSchema, CheckoutRenameBranchResponseSchema, RenameTerminalResponseSchema, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, DaemonUpdateResponseSchema, type ServerInfoStatusPayload } from "@hyperdrive.bot/paseo-protocol/messages";
4
- import type { AgentStreamEventPayload, InstalledExtension, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, 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, ProjectRenameResponse, WatchNotificationActionMessage, WatchSessionSearchMessage, WatchComposerDictateMessage, WorkflowSnapshot, WorkflowStatus, WorkflowTaskGraph, WorkspaceCreateRequest } from "@hyperdrive.bot/paseo-protocol/messages";
4
+ import type { AgentStreamEventPayload, InstalledExtension, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreatePaseoWorktreeRequest, FileDownloadTokenResponse, 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, ProjectRenameResponse, BackgroundTaskPayload, WatchNotificationActionMessage, WatchSessionSearchMessage, WatchComposerDictateMessage, WorkflowSnapshot, WorkflowStatus, WorkflowTaskGraph, WorkspaceCreateRequest } from "@hyperdrive.bot/paseo-protocol/messages";
5
5
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProviderNotice, AgentProvider, AgentSessionConfig } from "@hyperdrive.bot/paseo-protocol/agent-types";
6
- import type { MutableDaemonConfig, MutableDaemonConfigPatch } from "@hyperdrive.bot/paseo-protocol/messages";
6
+ import type { MutableDaemonConfig, MutableDaemonConfigPatch, ProvidersReloadConfigPayload } from "@hyperdrive.bot/paseo-protocol/messages";
7
7
  import type { FileUploadErrorCode } from "@hyperdrive.bot/paseo-protocol/messages";
8
8
  import { type DaemonTransportFactory, type WebSocketFactory } from "./daemon-client-transport.js";
9
9
  import { type TerminalStreamEvent } from "./terminal-stream-router.js";
@@ -283,6 +283,97 @@ type LoopLogsPayload = Extract<SessionOutboundMessage, {
283
283
  type LoopStopPayload = Extract<SessionOutboundMessage, {
284
284
  type: "loop/stop/response";
285
285
  }>["payload"];
286
+ type FleetListPayload = Extract<SessionOutboundMessage, {
287
+ type: "fleet/list/response";
288
+ }>["payload"];
289
+ type FleetInspectPayload = Extract<SessionOutboundMessage, {
290
+ type: "fleet/inspect/response";
291
+ }>["payload"];
292
+ type FleetRunNowPayload = Extract<SessionOutboundMessage, {
293
+ type: "fleet/run-now/response";
294
+ }>["payload"];
295
+ type FleetPausePayload = Extract<SessionOutboundMessage, {
296
+ type: "fleet/pause/response";
297
+ }>["payload"];
298
+ type FleetResumePayload = Extract<SessionOutboundMessage, {
299
+ type: "fleet/resume/response";
300
+ }>["payload"];
301
+ type FleetAskPayload = Extract<SessionOutboundMessage, {
302
+ type: "fleet/ask/response";
303
+ }>["payload"];
304
+ type FleetDecisionsPayload = Extract<SessionOutboundMessage, {
305
+ type: "fleet/decisions/response";
306
+ }>["payload"];
307
+ type FleetResolveDecisionPayload = Extract<SessionOutboundMessage, {
308
+ type: "fleet/resolve-decision/response";
309
+ }>["payload"];
310
+ type FleetSetParamsPayload = Extract<SessionOutboundMessage, {
311
+ type: "fleet/set-params/response";
312
+ }>["payload"];
313
+ type FleetSetModePayload = Extract<SessionOutboundMessage, {
314
+ type: "fleet/set-mode/response";
315
+ }>["payload"];
316
+ type FleetCreatePayload = Extract<SessionOutboundMessage, {
317
+ type: "fleet/create/response";
318
+ }>["payload"];
319
+ type FleetExecutionsPayload = Extract<SessionOutboundMessage, {
320
+ type: "fleet/executions/response";
321
+ }>["payload"];
322
+ export interface InspectFleetLoopOptions {
323
+ requestId?: string;
324
+ name: string;
325
+ }
326
+ export interface SetFleetLoopModeOptions {
327
+ requestId?: string;
328
+ name: string;
329
+ mode: "live" | "dry-run";
330
+ }
331
+ export interface AskFleetDecisionOptions {
332
+ requestId?: string;
333
+ name: string;
334
+ kind: "gate-approval" | "action-approval" | "outcome-review";
335
+ question: string;
336
+ posture: "blocking" | "deferring" | "advisory";
337
+ options: Array<{
338
+ id: string;
339
+ label: string;
340
+ effect: {
341
+ kind: "act" | "rehearse" | "defer" | "suppress";
342
+ reversibility: "reversible" | "compensable" | "irreversible";
343
+ compensatingAction?: string;
344
+ };
345
+ }>;
346
+ runId?: string;
347
+ itemKey?: string;
348
+ evidence?: string;
349
+ onExpiry?: string;
350
+ expiresInMs?: number;
351
+ }
352
+ export interface ListFleetDecisionsOptions {
353
+ requestId?: string;
354
+ name?: string;
355
+ includeResolved?: boolean;
356
+ }
357
+ export interface ResolveFleetDecisionOptions {
358
+ requestId?: string;
359
+ decisionId: string;
360
+ optionId: string;
361
+ }
362
+ export interface SetFleetLoopParamsOptions {
363
+ requestId?: string;
364
+ name: string;
365
+ values: Record<string, string | number | boolean | string[]>;
366
+ }
367
+ export interface CreateFleetLoopOptions {
368
+ requestId?: string;
369
+ name: string;
370
+ description: string;
371
+ cron: string;
372
+ action: string;
373
+ mode?: "live" | "dry-run";
374
+ rails?: string;
375
+ allowed?: string;
376
+ }
286
377
  type ScheduleCreatePayload = Extract<SessionOutboundMessage, {
287
378
  type: "schedule/create/response";
288
379
  }>["payload"];
@@ -739,6 +830,25 @@ export declare class DaemonClient {
739
830
  * CLI's own `ctrl+x ctrl+k` kill chord over the PTY (kills it inside Claude
740
831
  * Code). Resolves to whether the dismiss was delivered.
741
832
  */
833
+ /**
834
+ * List background shells -- one agent's, or every agent's when `agentId` is
835
+ * omitted. These are commands the provider launched with `run_in_background`
836
+ * so they outlive the turn; the rows carry the command, status and start time
837
+ * so the client can show what is running and for how long.
838
+ */
839
+ listBackgroundTasks(agentId?: string): Promise<BackgroundTaskPayload[]>;
840
+ /**
841
+ * Read a background shell's captured output. Resolves with `text: null` when
842
+ * the daemon does not know the shell or it captured nothing. The daemon tails
843
+ * and redacts before sending.
844
+ */
845
+ readBackgroundTaskOutput(agentId: string, taskId: string, options?: {
846
+ maxBytes?: number;
847
+ }): Promise<{
848
+ text: string | null;
849
+ truncated: boolean;
850
+ byteSize: number;
851
+ }>;
742
852
  dismissBackgroundTask(agentId: string, taskId: string): Promise<{
743
853
  dismissed: boolean;
744
854
  }>;
@@ -1004,6 +1114,13 @@ export declare class DaemonClient {
1004
1114
  cwd?: string;
1005
1115
  requestId?: string;
1006
1116
  }): Promise<GetProvidersSnapshotPayload>;
1117
+ /**
1118
+ * Re-read `agents.providers` from the daemon's config.json into its live
1119
+ * provider registry. No restart. Returns the add/update/remove diff.
1120
+ */
1121
+ reloadProviderConfig(options?: {
1122
+ requestId?: string;
1123
+ }): Promise<ProvidersReloadConfigPayload>;
1007
1124
  getDaemonConfig(requestId?: string): Promise<{
1008
1125
  requestId: string;
1009
1126
  config: MutableDaemonConfig;
@@ -1079,6 +1196,23 @@ export declare class DaemonClient {
1079
1196
  waitForChatMessages(options: WaitForChatMessagesOptions): Promise<ChatWaitPayload>;
1080
1197
  scheduleCreate(options: CreateScheduleOptions): Promise<ScheduleCreatePayload>;
1081
1198
  scheduleList(requestId?: string): Promise<ScheduleListPayload>;
1199
+ fleetList(requestId?: string): Promise<FleetListPayload>;
1200
+ fleetInspect(options: InspectFleetLoopOptions): Promise<FleetInspectPayload>;
1201
+ fleetRunNow(options: InspectFleetLoopOptions): Promise<FleetRunNowPayload>;
1202
+ fleetPause(options: InspectFleetLoopOptions): Promise<FleetPausePayload>;
1203
+ /** Raise a typed question from a loop. */
1204
+ fleetAsk(options: AskFleetDecisionOptions): Promise<FleetAskPayload>;
1205
+ /** Decisions loops are waiting on a person for, most urgent first. */
1206
+ fleetDecisions(options?: ListFleetDecisionsOptions): Promise<FleetDecisionsPayload>;
1207
+ /** Answer one decision as the human. */
1208
+ fleetResolveDecision(options: ResolveFleetDecisionOptions): Promise<FleetResolveDecisionPayload>;
1209
+ /** Persist a loop's declared parameters. */
1210
+ fleetSetParams(options: SetFleetLoopParamsOptions): Promise<FleetSetParamsPayload>;
1211
+ /** Promote a loop to live, or demote it to dry-run. */
1212
+ fleetSetMode(options: SetFleetLoopModeOptions): Promise<FleetSetModePayload>;
1213
+ fleetResume(options: InspectFleetLoopOptions): Promise<FleetResumePayload>;
1214
+ fleetCreate(options: CreateFleetLoopOptions): Promise<FleetCreatePayload>;
1215
+ fleetExecutions(options: InspectFleetLoopOptions): Promise<FleetExecutionsPayload>;
1082
1216
  scheduleInspect(options: InspectScheduleOptions): Promise<ScheduleInspectPayload>;
1083
1217
  scheduleLogs(options: InspectScheduleOptions): Promise<ScheduleLogsPayload>;
1084
1218
  schedulePause(options: InspectScheduleOptions): Promise<SchedulePausePayload>;
@@ -1319,6 +1319,49 @@ export class DaemonClient {
1319
1319
  * CLI's own `ctrl+x ctrl+k` kill chord over the PTY (kills it inside Claude
1320
1320
  * Code). Resolves to whether the dismiss was delivered.
1321
1321
  */
1322
+ /**
1323
+ * List background shells -- one agent's, or every agent's when `agentId` is
1324
+ * omitted. These are commands the provider launched with `run_in_background`
1325
+ * so they outlive the turn; the rows carry the command, status and start time
1326
+ * so the client can show what is running and for how long.
1327
+ */
1328
+ async listBackgroundTasks(agentId) {
1329
+ const requestId = this.createRequestId();
1330
+ const message = SessionInboundMessageSchema.parse({
1331
+ type: "list_background_tasks_request",
1332
+ ...(agentId === undefined ? {} : { agentId }),
1333
+ requestId,
1334
+ });
1335
+ const result = await this.sendCorrelatedRequest({
1336
+ requestId,
1337
+ message,
1338
+ responseType: "list_background_tasks_response",
1339
+ options: { skipQueue: true },
1340
+ });
1341
+ return result.tasks;
1342
+ }
1343
+ /**
1344
+ * Read a background shell's captured output. Resolves with `text: null` when
1345
+ * the daemon does not know the shell or it captured nothing. The daemon tails
1346
+ * and redacts before sending.
1347
+ */
1348
+ async readBackgroundTaskOutput(agentId, taskId, options) {
1349
+ const requestId = this.createRequestId();
1350
+ const message = SessionInboundMessageSchema.parse({
1351
+ type: "background_task_output_request",
1352
+ agentId,
1353
+ taskId,
1354
+ ...(options?.maxBytes === undefined ? {} : { maxBytes: options.maxBytes }),
1355
+ requestId,
1356
+ });
1357
+ const result = await this.sendCorrelatedRequest({
1358
+ requestId,
1359
+ message,
1360
+ responseType: "background_task_output_response",
1361
+ options: { skipQueue: true },
1362
+ });
1363
+ return { text: result.text, truncated: result.truncated, byteSize: result.byteSize };
1364
+ }
1322
1365
  async dismissBackgroundTask(agentId, taskId) {
1323
1366
  const requestId = this.createRequestId();
1324
1367
  const message = SessionInboundMessageSchema.parse({
@@ -3141,6 +3184,20 @@ export class DaemonClient {
3141
3184
  });
3142
3185
  return normalizeProvidersSnapshotPayload(payload);
3143
3186
  }
3187
+ /**
3188
+ * Re-read `agents.providers` from the daemon's config.json into its live
3189
+ * provider registry. No restart. Returns the add/update/remove diff.
3190
+ */
3191
+ async reloadProviderConfig(options) {
3192
+ return this.sendCorrelatedSessionRequest({
3193
+ requestId: options?.requestId,
3194
+ message: {
3195
+ type: "providers.reload_config.request",
3196
+ },
3197
+ responseType: "providers.reload_config.response",
3198
+ timeout: 15000,
3199
+ });
3200
+ }
3144
3201
  async getDaemonConfig(requestId) {
3145
3202
  return this.sendCorrelatedSessionRequest({
3146
3203
  requestId,
@@ -3673,6 +3730,134 @@ export class DaemonClient {
3673
3730
  responseType: "schedule/list/response",
3674
3731
  });
3675
3732
  }
3733
+ async fleetList(requestId) {
3734
+ return this.sendCorrelatedSessionRequest({
3735
+ requestId,
3736
+ message: {
3737
+ type: "fleet/list",
3738
+ },
3739
+ responseType: "fleet/list/response",
3740
+ });
3741
+ }
3742
+ async fleetInspect(options) {
3743
+ return this.sendCorrelatedSessionRequest({
3744
+ requestId: options.requestId,
3745
+ message: {
3746
+ type: "fleet/inspect",
3747
+ name: options.name,
3748
+ },
3749
+ responseType: "fleet/inspect/response",
3750
+ });
3751
+ }
3752
+ async fleetRunNow(options) {
3753
+ return this.sendCorrelatedSessionRequest({
3754
+ requestId: options.requestId,
3755
+ message: {
3756
+ type: "fleet/run-now",
3757
+ name: options.name,
3758
+ },
3759
+ responseType: "fleet/run-now/response",
3760
+ });
3761
+ }
3762
+ async fleetPause(options) {
3763
+ return this.sendCorrelatedSessionRequest({
3764
+ requestId: options.requestId,
3765
+ message: {
3766
+ type: "fleet/pause",
3767
+ name: options.name,
3768
+ },
3769
+ responseType: "fleet/pause/response",
3770
+ });
3771
+ }
3772
+ /** Raise a typed question from a loop. */
3773
+ async fleetAsk(options) {
3774
+ const { requestId, ...rest } = options;
3775
+ return this.sendCorrelatedSessionRequest({
3776
+ requestId,
3777
+ message: { type: "fleet/ask", ...rest },
3778
+ responseType: "fleet/ask/response",
3779
+ });
3780
+ }
3781
+ /** Decisions loops are waiting on a person for, most urgent first. */
3782
+ async fleetDecisions(options = {}) {
3783
+ return this.sendCorrelatedSessionRequest({
3784
+ requestId: options.requestId,
3785
+ message: {
3786
+ type: "fleet/decisions",
3787
+ name: options.name,
3788
+ includeResolved: options.includeResolved,
3789
+ },
3790
+ responseType: "fleet/decisions/response",
3791
+ });
3792
+ }
3793
+ /** Answer one decision as the human. */
3794
+ async fleetResolveDecision(options) {
3795
+ return this.sendCorrelatedSessionRequest({
3796
+ requestId: options.requestId,
3797
+ message: {
3798
+ type: "fleet/resolve-decision",
3799
+ decisionId: options.decisionId,
3800
+ optionId: options.optionId,
3801
+ },
3802
+ responseType: "fleet/resolve-decision/response",
3803
+ });
3804
+ }
3805
+ /** Persist a loop's declared parameters. */
3806
+ async fleetSetParams(options) {
3807
+ return this.sendCorrelatedSessionRequest({
3808
+ requestId: options.requestId,
3809
+ message: { type: "fleet/set-params", name: options.name, values: options.values },
3810
+ responseType: "fleet/set-params/response",
3811
+ });
3812
+ }
3813
+ /** Promote a loop to live, or demote it to dry-run. */
3814
+ async fleetSetMode(options) {
3815
+ return this.sendCorrelatedSessionRequest({
3816
+ requestId: options.requestId,
3817
+ message: {
3818
+ type: "fleet/set-mode",
3819
+ name: options.name,
3820
+ mode: options.mode,
3821
+ },
3822
+ responseType: "fleet/set-mode/response",
3823
+ });
3824
+ }
3825
+ async fleetResume(options) {
3826
+ return this.sendCorrelatedSessionRequest({
3827
+ requestId: options.requestId,
3828
+ message: {
3829
+ type: "fleet/resume",
3830
+ name: options.name,
3831
+ },
3832
+ responseType: "fleet/resume/response",
3833
+ });
3834
+ }
3835
+ async fleetCreate(options) {
3836
+ return this.sendCorrelatedSessionRequest({
3837
+ requestId: options.requestId,
3838
+ message: {
3839
+ type: "fleet/create",
3840
+ name: options.name,
3841
+ description: options.description,
3842
+ cron: options.cron,
3843
+ action: options.action,
3844
+ ...(options.mode !== undefined ? { mode: options.mode } : {}),
3845
+ ...(options.rails !== undefined ? { rails: options.rails } : {}),
3846
+ ...(options.allowed !== undefined ? { allowed: options.allowed } : {}),
3847
+ },
3848
+ responseType: "fleet/create/response",
3849
+ });
3850
+ }
3851
+ async fleetExecutions(options) {
3852
+ return this.sendCorrelatedSessionRequest({
3853
+ requestId: options.requestId,
3854
+ message: {
3855
+ type: "fleet/executions",
3856
+ name: options.name,
3857
+ },
3858
+ responseType: "fleet/executions/response",
3859
+ });
3860
+ }
3676
3861
  async scheduleInspect(options) {
3677
3862
  return this.sendCorrelatedSessionRequest({
3678
3863
  requestId: options.requestId,
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AgentSnapshotPayload, CreateAgentRequestMessage, FetchWorkspacesRequestMessage, FetchWorkspacesResponseMessage, GetProvidersSnapshotResponseMessage, ListAvailableProvidersResponse, ListProviderFeaturesRequestMessage, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, MutableDaemonConfig, MutableDaemonConfigPatch, ProviderDiagnosticResponseMessage, ProjectPlacementPayload, RefreshProvidersSnapshotResponseMessage, SendAgentMessageRequest, SessionOutboundMessage, WorkspaceDescriptorPayload } from "@hyperdrive.bot/paseo-protocol/messages";
1
+ import type { AgentSnapshotPayload, CreateAgentRequestMessage, FetchWorkspacesRequestMessage, FetchWorkspacesResponseMessage, GetProvidersSnapshotResponseMessage, ListAvailableProvidersResponse, ListProviderFeaturesRequestMessage, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, MutableDaemonConfig, MutableDaemonConfigPatch, ProviderDiagnosticResponseMessage, ProjectPlacementPayload, RefreshProvidersSnapshotResponseMessage, SendAgentMessageRequest, ProvidersReloadConfigPayload, SessionOutboundMessage, WorkspaceDescriptorPayload } from "@hyperdrive.bot/paseo-protocol/messages";
2
2
  import { DaemonClient } from "./daemon-client.js";
3
3
  import type { FetchAgentTimelineCursor, FetchAgentTimelineDirection, FetchAgentTimelinePayload, FetchAgentTimelineProjection } from "./daemon-client.js";
4
4
  export { DaemonClient };
@@ -241,6 +241,15 @@ export interface PaseoProviderActions {
241
241
  }): Promise<PaseoProviderAvailabilityResult>;
242
242
  snapshot(options?: PaseoProviderListOptions): Promise<PaseoProviderSnapshotResult>;
243
243
  refresh(options?: PaseoProviderRefreshOptions): Promise<PaseoProviderRefreshResult>;
244
+ /**
245
+ * Re-read `agents.providers` from the daemon's config.json into its live
246
+ * registry — add, update, AND remove — without restarting the daemon.
247
+ * Distinct from {@link refresh}, which only re-probes availability of the
248
+ * providers the daemon already knows about.
249
+ */
250
+ reloadConfig(options?: {
251
+ requestId?: string;
252
+ }): Promise<ProvidersReloadConfigPayload>;
244
253
  diagnostic(provider: PaseoAgentProvider, options?: {
245
254
  requestId?: string;
246
255
  }): Promise<PaseoProviderDiagnosticResult>;
package/dist/index.js CHANGED
@@ -42,6 +42,10 @@ export function createPaseoClient(config) {
42
42
  listAvailable: (options) => daemonClient.listAvailableProviders(options),
43
43
  snapshot: (options) => daemonClient.getProvidersSnapshot(options),
44
44
  refresh: (options) => daemonClient.refreshProvidersSnapshot(options),
45
+ // Re-read agents.providers from the daemon's config.json (add/update/remove).
46
+ // Distinct from `refresh`, which only re-probes availability of the
47
+ // providers the daemon already knows about.
48
+ reloadConfig: (options) => daemonClient.reloadProviderConfig(options),
45
49
  diagnostic: (provider, options) => daemonClient.getProviderDiagnostic(provider, options),
46
50
  subscribe: (handler) => daemonClient.on("providers_snapshot_update", (message) => {
47
51
  handler(message.payload);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperdrive.bot/paseo-client",
3
- "version": "0.3.34",
3
+ "version": "0.3.36",
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
- "@hyperdrive.bot/paseo-protocol": "0.3.34",
39
- "@hyperdrive.bot/paseo-relay": "0.3.34",
38
+ "@hyperdrive.bot/paseo-protocol": "0.3.36",
39
+ "@hyperdrive.bot/paseo-relay": "0.3.36",
40
40
  "zod": "^4.4.3"
41
41
  },
42
42
  "devDependencies": {