@otto-code/client 0.5.2 → 0.5.4

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,8 +1,9 @@
1
1
  import type { z } from "zod";
2
2
  import { type ClientCapability } from "@otto-code/protocol/client-capabilities";
3
3
  import { AgentRefreshedStatusPayloadSchema, CheckoutRenameBranchResponseSchema, RenameTerminalResponseSchema, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, DaemonUpdateResponseSchema, type ServerInfoStatusPayload } from "@otto-code/protocol/messages";
4
- import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreateOttoWorktreeRequest, CodeListFilesResponse, CodeSymbolLocation, FileDownloadTokenResponse, FileEol, FileReplaceFileResult, FileReplaceRequest, FileReplaceResponse, FileSearchResultPayload, FileSearchSummary, FileUploadResponse, FileExplorerResponse, FileWatchEventPayload, FileWriteResult, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutGitCommitResponse, CheckoutGitCommitAgentResponse, CheckoutGitRollbackResponse, CheckoutGitGetOperationLogResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutGithubGetCheckDetailsResponse, PreviewListConfigResponse, PreviewStartResponse, PreviewBindTabResponse, PreviewStopResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, GitHubSearchResponse, GitHubSearchRequest, GitHostingProviderId, HostingSearchRequest, HostingSearchResponse, HostingAuthStatusResponse, DirectorySuggestionsResponse, OttoWorktreeListResponse, OttoWorktreeArchiveResponse, ProjectIconResponse, ProjectAddResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, AgentContextGetUsageResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, OttoConfigRaw, OttoConfigRevision, WorkspaceCreateRequest } from "@otto-code/protocol/messages";
4
+ import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreateOttoWorktreeRequest, CodeListFilesResponse, CodeSymbolLocation, FileDownloadTokenResponse, FileEol, FileReplaceFileResult, FileReplaceRequest, FileReplaceResponse, FileSearchResultPayload, FileSearchSummary, FileUploadResponse, FileExplorerResponse, FileWatchEventPayload, FileWriteResult, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutGitCommitResponse, CheckoutGitCommitAgentResponse, CheckoutGitRollbackResponse, CheckoutGitGetOperationLogResponse, CheckoutMergeResponse, CheckoutMergeFromBaseResponse, CheckoutPullResponse, CheckoutPushResponse, CheckoutRefreshResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutGithubGetCheckDetailsResponse, PreviewListConfigResponse, PreviewStartResponse, PreviewBindTabResponse, PreviewStopResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, ValidateBranchResponse, BranchSuggestionsResponse, GitHubSearchResponse, GitHubSearchRequest, GitHostingProviderId, HostingSearchRequest, HostingSearchResponse, HostingAuthStatusResponse, DirectorySuggestionsResponse, OttoWorktreeListResponse, OttoWorktreeArchiveResponse, ProjectIconResponse, ProjectAddResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, StatsActivityGetResponseMessage, AgentContextGetUsageResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, OttoConfigRaw, OttoConfigRevision, WorkspaceCreateRequest } from "@otto-code/protocol/messages";
5
5
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProviderNotice, AgentProvider, AgentSessionConfig } from "@otto-code/protocol/agent-types";
6
+ import type { Run } from "@otto-code/protocol/orchestration";
6
7
  import type { MutableDaemonConfig, MutableDaemonConfigPatch, SpeechSettingsOptions, SpeechTtsPreviewResult } from "@otto-code/protocol/messages";
7
8
  import { type DaemonTransportFactory, type WebSocketFactory } from "./daemon-client-transport.js";
8
9
  import { type TerminalStreamEvent } from "./terminal-stream-router.js";
@@ -775,6 +776,30 @@ export declare class DaemonClient {
775
776
  * the provider's stopTask. See projects/observed-subagents/observed-subagents.md.
776
777
  */
777
778
  stopObservedSubagent(agentId: string): Promise<void>;
779
+ /**
780
+ * Stop a running background shell task (Claude Bash tool run_in_background).
781
+ * Not an AI subagent — the daemon resolves it to its owning provider task and
782
+ * calls the provider's stopTask, same mechanism as stopObservedSubagent.
783
+ */
784
+ stopBackgroundShellTask(parentAgentId: string, taskId: string): Promise<void>;
785
+ /**
786
+ * Clear one or more terminal background shell tasks from the Background
787
+ * Tasks track. Still-live tasks are stopped best-effort first.
788
+ */
789
+ clearBackgroundShellTasks(parentAgentId: string, taskIds: readonly string[]): Promise<void>;
790
+ /** Orchestration: fetch the current snapshot of all runs on this host. */
791
+ getRunsSnapshot(): Promise<Run[]>;
792
+ /** Orchestration: approve or reject a run's attended gate. */
793
+ respondToRunGate(input: {
794
+ runId: string;
795
+ phaseId: string;
796
+ approved: boolean;
797
+ note?: string;
798
+ }): Promise<boolean>;
799
+ /** Orchestration: cancel a run. */
800
+ cancelRun(runId: string): Promise<boolean>;
801
+ /** Orchestration: delete every finished (done/failed/canceled) run. */
802
+ clearFinishedRuns(): Promise<string[]>;
778
803
  updateAgent(agentId: string, updates: {
779
804
  name?: string;
780
805
  labels?: Record<string, string>;
@@ -1056,6 +1081,10 @@ export declare class DaemonClient {
1056
1081
  listProviderUsage(options?: {
1057
1082
  requestId?: string;
1058
1083
  }): Promise<ProviderUsageListPayload>;
1084
+ /** Daemon-wide "fun stats" — see docs/data-model.md ActivityStatsStore. */
1085
+ getActivityStats(options?: {
1086
+ requestId?: string;
1087
+ }): Promise<StatsActivityGetResponseMessage["payload"]>;
1059
1088
  getAgentContextUsage(agentId: string, options?: {
1060
1089
  requestId?: string;
1061
1090
  }): Promise<AgentContextGetUsagePayload>;
@@ -1256,6 +1256,73 @@ export class DaemonClient {
1256
1256
  throw new Error(payload.error ?? "stopObservedSubagent rejected");
1257
1257
  }
1258
1258
  }
1259
+ /**
1260
+ * Stop a running background shell task (Claude Bash tool run_in_background).
1261
+ * Not an AI subagent — the daemon resolves it to its owning provider task and
1262
+ * calls the provider's stopTask, same mechanism as stopObservedSubagent.
1263
+ */
1264
+ async stopBackgroundShellTask(parentAgentId, taskId) {
1265
+ const payload = await this.sendNamespacedCorrelatedSessionRequest({
1266
+ message: {
1267
+ type: "agent.background_task.stop.request",
1268
+ parentAgentId,
1269
+ taskId,
1270
+ },
1271
+ });
1272
+ if (!payload.accepted) {
1273
+ throw new Error(payload.error ?? "stopBackgroundShellTask rejected");
1274
+ }
1275
+ }
1276
+ /**
1277
+ * Clear one or more terminal background shell tasks from the Background
1278
+ * Tasks track. Still-live tasks are stopped best-effort first.
1279
+ */
1280
+ async clearBackgroundShellTasks(parentAgentId, taskIds) {
1281
+ const payload = await this.sendNamespacedCorrelatedSessionRequest({
1282
+ message: {
1283
+ type: "agent.background_task.clear.request",
1284
+ parentAgentId,
1285
+ taskIds: [...taskIds],
1286
+ },
1287
+ });
1288
+ if (!payload.accepted) {
1289
+ throw new Error(payload.error ?? "clearBackgroundShellTasks rejected");
1290
+ }
1291
+ }
1292
+ /** Orchestration: fetch the current snapshot of all runs on this host. */
1293
+ async getRunsSnapshot() {
1294
+ const payload = await this.sendNamespacedCorrelatedSessionRequest({
1295
+ message: { type: "runs.get_snapshot.request" },
1296
+ });
1297
+ return payload.runs;
1298
+ }
1299
+ /** Orchestration: approve or reject a run's attended gate. */
1300
+ async respondToRunGate(input) {
1301
+ const payload = await this.sendNamespacedCorrelatedSessionRequest({
1302
+ message: {
1303
+ type: "runs.gate_respond.request",
1304
+ runId: input.runId,
1305
+ phaseId: input.phaseId,
1306
+ approved: input.approved,
1307
+ ...(input.note !== undefined ? { note: input.note } : {}),
1308
+ },
1309
+ });
1310
+ return payload.accepted;
1311
+ }
1312
+ /** Orchestration: cancel a run. */
1313
+ async cancelRun(runId) {
1314
+ const payload = await this.sendNamespacedCorrelatedSessionRequest({
1315
+ message: { type: "runs.cancel.request", runId },
1316
+ });
1317
+ return payload.canceled;
1318
+ }
1319
+ /** Orchestration: delete every finished (done/failed/canceled) run. */
1320
+ async clearFinishedRuns() {
1321
+ const payload = await this.sendNamespacedCorrelatedSessionRequest({
1322
+ message: { type: "runs.clear.request" },
1323
+ });
1324
+ return payload.runIds;
1325
+ }
1259
1326
  async updateAgent(agentId, updates) {
1260
1327
  const requestId = this.createRequestId();
1261
1328
  const message = SessionInboundMessageSchema.parse({
@@ -2990,6 +3057,15 @@ export class DaemonClient {
2990
3057
  },
2991
3058
  });
2992
3059
  }
3060
+ /** Daemon-wide "fun stats" — see docs/data-model.md ActivityStatsStore. */
3061
+ async getActivityStats(options) {
3062
+ return this.sendNamespacedCorrelatedSessionRequest({
3063
+ requestId: options?.requestId,
3064
+ message: {
3065
+ type: "stats.activity.get.request",
3066
+ },
3067
+ });
3068
+ }
2993
3069
  async getAgentContextUsage(agentId, options) {
2994
3070
  return this.sendNamespacedCorrelatedSessionRequest({
2995
3071
  requestId: options?.requestId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otto-code/client",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "Otto client SDK package",
5
5
  "files": [
6
6
  "dist",
@@ -35,8 +35,8 @@
35
35
  "test": "vitest run"
36
36
  },
37
37
  "dependencies": {
38
- "@otto-code/protocol": "0.5.2",
39
- "@otto-code/relay": "0.5.2",
38
+ "@otto-code/protocol": "0.5.4",
39
+ "@otto-code/relay": "0.5.4",
40
40
  "zod": "^4.4.3"
41
41
  },
42
42
  "devDependencies": {