@hyperdrive.bot/paseo-client 0.3.53 → 0.3.55

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 "@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, BackgroundTaskPayload, WatchNotificationActionMessage, WatchSessionSearchMessage, WatchComposerDictateMessage, WorkflowAgentPreset, 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, ReferenceEnrichment, SessionDigest, SessionDigestLink, WatchNotificationActionMessage, WatchSessionSearchMessage, WatchComposerDictateMessage, WorkflowAgentPreset, WorkflowSnapshot, WorkflowStatus, WorkflowTaskGraph, WorkspaceCreateRequest, PendingDecision } from "@hyperdrive.bot/paseo-protocol/messages";
5
5
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProviderNotice, AgentProvider, AgentSessionConfig } from "@hyperdrive.bot/paseo-protocol/agent-types";
6
6
  import type { MutableDaemonConfig, MutableDaemonConfigPatch, ProvidersReloadConfigPayload } from "@hyperdrive.bot/paseo-protocol/messages";
7
7
  import type { FileUploadErrorCode } from "@hyperdrive.bot/paseo-protocol/messages";
@@ -837,6 +837,42 @@ export declare class DaemonClient {
837
837
  * so the client can show what is running and for how long.
838
838
  */
839
839
  listBackgroundTasks(agentId?: string): Promise<BackgroundTaskPayload[]>;
840
+ /**
841
+ * Record session context (links + non-live credentials) onto an agent's
842
+ * digest. Used by the context hook, which runs beside an agent rather than
843
+ * inside it and so cannot reach the agent-scoped `set_session_digest` MCP
844
+ * tool.
845
+ *
846
+ * Returns how many secrets the daemon had to mask, so a caller can report
847
+ * that it handed over something it should not have.
848
+ */
849
+ setAgentContext(input: {
850
+ agentId: string;
851
+ links?: {
852
+ kind: SessionDigestLink["kind"];
853
+ url: string;
854
+ label?: string;
855
+ }[];
856
+ secrets?: {
857
+ label: string;
858
+ value: string;
859
+ source?: string;
860
+ }[];
861
+ }): Promise<{
862
+ digest: SessionDigest | null;
863
+ maskedCount: number;
864
+ error?: string;
865
+ }>;
866
+ /**
867
+ * Ask the daemon what it can see about external reference URLs -- a GitLab
868
+ * pipeline's status, a merge request's state, a Jira issue's column.
869
+ *
870
+ * The provider credentials live on the daemon, so the app never holds one.
871
+ * An entry the daemon could not look up still comes back, carrying
872
+ * `unavailableReason`, so a card can say what it could not see instead of
873
+ * spinning. See docs/session-context-rail.md.
874
+ */
875
+ enrichReferences(urls: string[]): Promise<ReferenceEnrichment[]>;
840
876
  /**
841
877
  * Read a background shell's captured output. Resolves with `text: null` when
842
878
  * the daemon does not know the shell or it captured nothing. The daemon tails
@@ -945,6 +981,13 @@ export declare class DaemonClient {
945
981
  setWorkspaceTitle(workspaceId: string, title: string | null, requestId?: string): Promise<{
946
982
  title: string | null;
947
983
  }>;
984
+ /**
985
+ * Answer a decision the agent parked on its digest. `optionId: null` with a
986
+ * note is a free-text answer — an option the agent did not list.
987
+ */
988
+ answerAgentDecision(agentId: string, decisionId: string, optionId: string | null, note: string | null, requestId?: string): Promise<{
989
+ decision: PendingDecision | null;
990
+ }>;
948
991
  resumeAgent(handle: AgentPersistenceHandle, overrides?: Partial<AgentSessionConfig>): Promise<AgentSnapshotPayload>;
949
992
  importAgent(input: ImportAgentInput): Promise<AgentSnapshotPayload>;
950
993
  refreshAgent(agentId: string, requestId?: string): Promise<AgentRefreshedStatusPayload>;
@@ -1340,6 +1340,60 @@ export class DaemonClient {
1340
1340
  });
1341
1341
  return result.tasks;
1342
1342
  }
1343
+ /**
1344
+ * Record session context (links + non-live credentials) onto an agent's
1345
+ * digest. Used by the context hook, which runs beside an agent rather than
1346
+ * inside it and so cannot reach the agent-scoped `set_session_digest` MCP
1347
+ * tool.
1348
+ *
1349
+ * Returns how many secrets the daemon had to mask, so a caller can report
1350
+ * that it handed over something it should not have.
1351
+ */
1352
+ async setAgentContext(input) {
1353
+ const requestId = this.createRequestId();
1354
+ const message = SessionInboundMessageSchema.parse({
1355
+ type: "set_agent_context_request",
1356
+ agentId: input.agentId,
1357
+ ...(input.links === undefined ? {} : { links: input.links }),
1358
+ ...(input.secrets === undefined ? {} : { secrets: input.secrets }),
1359
+ requestId,
1360
+ });
1361
+ const result = await this.sendCorrelatedRequest({
1362
+ requestId,
1363
+ message,
1364
+ responseType: "set_agent_context_response",
1365
+ options: { skipQueue: true },
1366
+ });
1367
+ return {
1368
+ digest: result.digest,
1369
+ maskedCount: result.maskedCount,
1370
+ ...(result.error === undefined ? {} : { error: result.error }),
1371
+ };
1372
+ }
1373
+ /**
1374
+ * Ask the daemon what it can see about external reference URLs -- a GitLab
1375
+ * pipeline's status, a merge request's state, a Jira issue's column.
1376
+ *
1377
+ * The provider credentials live on the daemon, so the app never holds one.
1378
+ * An entry the daemon could not look up still comes back, carrying
1379
+ * `unavailableReason`, so a card can say what it could not see instead of
1380
+ * spinning. See docs/session-context-rail.md.
1381
+ */
1382
+ async enrichReferences(urls) {
1383
+ const requestId = this.createRequestId();
1384
+ const message = SessionInboundMessageSchema.parse({
1385
+ type: "enrich_references_request",
1386
+ urls,
1387
+ requestId,
1388
+ });
1389
+ const result = await this.sendCorrelatedRequest({
1390
+ requestId,
1391
+ message,
1392
+ responseType: "enrich_references_response",
1393
+ options: { skipQueue: true },
1394
+ });
1395
+ return result.enrichments;
1396
+ }
1343
1397
  /**
1344
1398
  * Read a background shell's captured output. Resolves with `text: null` when
1345
1399
  * the daemon does not know the shell or it captured nothing. The daemon tails
@@ -1984,6 +2038,27 @@ export class DaemonClient {
1984
2038
  }
1985
2039
  return { title: payload.title };
1986
2040
  }
2041
+ /**
2042
+ * Answer a decision the agent parked on its digest. `optionId: null` with a
2043
+ * note is a free-text answer — an option the agent did not list.
2044
+ */
2045
+ async answerAgentDecision(agentId, decisionId, optionId, note, requestId) {
2046
+ const payload = await this.sendCorrelatedSessionRequest({
2047
+ requestId,
2048
+ message: {
2049
+ type: "agent.decision.answer.request",
2050
+ agentId,
2051
+ decisionId,
2052
+ optionId,
2053
+ note,
2054
+ },
2055
+ responseType: "agent.decision.answer.response",
2056
+ });
2057
+ if (!payload.accepted) {
2058
+ throw new Error(payload.error ?? "answerAgentDecision rejected");
2059
+ }
2060
+ return { decision: payload.decision };
2061
+ }
1987
2062
  async resumeAgent(handle, overrides) {
1988
2063
  const requestId = this.createRequestId();
1989
2064
  const message = SessionInboundMessageSchema.parse({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperdrive.bot/paseo-client",
3
- "version": "0.3.53",
3
+ "version": "0.3.55",
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.53",
39
- "@hyperdrive.bot/paseo-relay": "0.3.53",
38
+ "@hyperdrive.bot/paseo-protocol": "0.3.55",
39
+ "@hyperdrive.bot/paseo-relay": "0.3.55",
40
40
  "zod": "^4.4.3"
41
41
  },
42
42
  "devDependencies": {