@otto-code/client 0.7.0 → 0.7.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.
@@ -1,7 +1,7 @@
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, CodeDefinitionLocation, CodeDefinitionStatus, CodeRenameApplyStatus, CodeRenameFileOutcome, CodeRenameUndoFile, CodeRenameUndoStatus, CodeHoverRange, CodeRenameEdit, CodeRenameFilePlan, LspLanguageState, LspRunningServer, CodeSolutionGetTreeResponse, CodeSolutionLoadProjectResponse, SolutionFormat, SolutionRef, SolutionTreeFolder, SolutionTreeProject, SolutionProjectNode, SolutionProjectStatus, SolutionPackageReference, FileCreateResult, FileDeleteResult, FileDownloadTokenResponse, FileEntryKind, FileEol, FileRenameResult, FileReplaceFileResult, FileReplaceRequest, FileReplaceResponse, FileSearchResultPayload, FileSearchSummary, FileUploadResponse, FileExplorerResponse, FileWatchEventPayload, FileWriteResult, FileRefineResult, FileRefineDocument, FileRefineReference, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutGitCommitResponse, CheckoutGitCommitAgentResponse, CheckoutGitRollbackResponse, CheckoutGitFileHistoryResponse, CheckoutGitFileCommitDiffResponse, CheckoutGitFileBlameResponse, CheckoutGitFileOriginResponse, 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, ContextReportGetResponseMessage, ContextEdgeConvertResponseMessage, ContextFindingsFixResponseMessage, PersonalityMemoryListResponseMessage, PersonalityMemoryUpdateResponseMessage, PersonalityMemoryTransferResponseMessage, PersonalityMemoryStatsResponseMessage, ProjectAddResponse, ProjectScaffoldGit, ProjectScaffoldProgress, ProjectScaffoldResponse, HostingListRepositoriesResponse, HostingListOwnersResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceArchivePreflightResponse, WorktreeBaseRefSetResponse, WorktreeReattachListResponse, WorktreeReattachResponse, WorktreeReattachTarget, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, StatsActivityGetResponseMessage, StatsActivityResetResponseMessage, UsageLogGetResponseMessage, AgentContextGetUsageResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, HistoryAgentsClearArchivedResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, AgentPromptDelivery, TasksSuggestedStartMode, OttoConfigRaw, OttoConfigRevision, WorkspaceCreateRequest } from "@otto-code/protocol/messages";
4
+ import type { AgentStreamEventPayload, AgentSnapshotPayload, ProjectPlacementPayload, AgentPermissionResolvedMessage, CreateAgentRequestMessage, CreateOttoWorktreeRequest, CodeListFilesResponse, CodeSymbolLocation, CodeDefinitionLocation, CodeDefinitionStatus, CodeRenameApplyStatus, CodeRenameFileOutcome, CodeRenameUndoFile, CodeRenameUndoStatus, CodeHoverRange, CodeRenameEdit, CodeRenameFilePlan, LspLanguageState, LspRunningServer, CodeSolutionGetTreeResponse, CodeSolutionLoadProjectResponse, SolutionFormat, SolutionRef, SolutionTreeFolder, SolutionTreeProject, SolutionProjectNode, SolutionProjectStatus, SolutionPackageReference, FileCreateResult, FileDeleteResult, FileDownloadTokenResponse, FileEntryKind, FileEol, FileRenameResult, FileReplaceFileResult, FileReplaceRequest, FileReplaceResponse, FileSearchResultPayload, FileSearchSummary, FileUploadResponse, FileExplorerResponse, FileWatchEventPayload, FileWriteResult, FileRefineResult, FileRefineDocument, FileRefineReference, FetchAgentTimelineResponseMessage, AgentForkContextResponseMessage, GitSetupOptions, CheckoutStatusResponse, CheckoutCommitResponse, CheckoutGitCommitResponse, CheckoutGitCommitAgentResponse, CheckoutGitRollbackResponse, CheckoutGitFileHistoryResponse, CheckoutGitFileCommitDiffResponse, CheckoutGitFileBlameResponse, CheckoutGitFileOriginResponse, 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, ContextCategory, ContextPromptPreviewGetResponseMessage, ContextReportGetResponseMessage, ContextEdgeConvertResponseMessage, ContextFindingsFixResponseMessage, PersonalityMemoryListResponseMessage, PersonalityMemoryUpdateResponseMessage, PersonalityMemoryTransferResponseMessage, PersonalityMemoryStatsResponseMessage, ProjectAddResponse, ProjectScaffoldGit, ProjectScaffoldProgress, ProjectScaffoldResponse, HostingListRepositoriesResponse, HostingListOwnersResponse, OpenProjectResponseMessage, ArchiveWorkspaceResponseMessage, WorkspaceArchivePreflightResponse, WorktreeBaseRefSetResponse, WorktreeReattachListResponse, WorktreeReattachResponse, WorktreeReattachTarget, WorkspaceSetupStatusResponseMessage, ListCommandsResponse, ListProviderFeaturesResponseMessage, ListProviderModelsResponseMessage, ListProviderModesResponseMessage, ListAvailableProvidersResponse, GetProvidersSnapshotResponseMessage, RefreshProvidersSnapshotResponseMessage, ProviderDiagnosticResponseMessage, ProviderUsageListResponseMessage, StatsActivityGetResponseMessage, StatsActivityResetResponseMessage, UsageLogGetResponseMessage, AgentContextGetUsageResponseMessage, DaemonGetStatusResponse, DaemonGetPairingOfferResponse, DiagnosticsResponse, AgentRewindResponseMessage, ListTerminalsResponse, CreateTerminalResponse, SubscribeTerminalResponse, SubscribeTerminalRequest, CloseItemsResponse, AttachmentsImagesClearResponse, AttachmentsImagesStatsResponse, HistoryAgentsClearArchivedResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, AgentPromptDelivery, TasksSuggestedStartMode, 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
6
  import type { OrchestrationGraph, PromptTemplate, Run } from "@otto-code/protocol/orchestration";
7
7
  import type { CueMoment, MutableDaemonConfig, MutableDaemonConfigPatch, ProjectLink, SpeechSettingsOptions, SpeechTtsPreviewResult, SpeechTtsSpeakResult, SpeechTtsSpeakCancelResult, VisualizerVoiceCuesResult } from "@otto-code/protocol/messages";
@@ -17,6 +17,12 @@ export interface Logger {
17
17
  }
18
18
  interface ImportAgentInputBase {
19
19
  cwd?: string;
20
+ /**
21
+ * Workspace the import was requested from. Supply it whenever the caller has
22
+ * one, so the imported session lands in that workspace instead of the daemon
23
+ * resolving (or minting) another workspace for the same directory.
24
+ */
25
+ workspaceId?: string;
20
26
  labels?: Record<string, string>;
21
27
  }
22
28
  export type ImportAgentInput = (ImportAgentInputBase & {
@@ -947,6 +953,27 @@ export declare class DaemonClient {
947
953
  olderThanDays?: number;
948
954
  requestId?: string;
949
955
  }): Promise<HistoryAgentsClearArchivedResponse["payload"]>;
956
+ /**
957
+ * How much disk the images agents produced occupy on this host, plus the
958
+ * retention policy currently ageing them out. Gated by
959
+ * `server_info.features.attachmentStorage`.
960
+ */
961
+ getAttachmentImageStats(requestId?: string): Promise<AttachmentsImagesStatsResponse["payload"]>;
962
+ /**
963
+ * Reclaims the materialized image store. Call once with `dryRun: true` for
964
+ * the count and size the confirm dialog quotes, then again with
965
+ * `dryRun: false` to delete.
966
+ *
967
+ * Cleared images do not come back: a message that referenced one renders its
968
+ * alt text from then on. Scope is the whole host — filenames are a content
969
+ * hash, so per-chat or per-workspace scope does not exist. Gated by
970
+ * `server_info.features.attachmentStorage`.
971
+ */
972
+ clearAttachmentImages(options: {
973
+ dryRun: boolean;
974
+ olderThanDays?: number;
975
+ requestId?: string;
976
+ }): Promise<AttachmentsImagesClearResponse["payload"]>;
950
977
  archiveAgent(agentId: string): Promise<{
951
978
  archivedAt: string;
952
979
  }>;
@@ -1393,6 +1420,18 @@ export declare class DaemonClient {
1393
1420
  windowTokens?: number;
1394
1421
  personalityId?: string;
1395
1422
  }, requestId?: string): Promise<ContextReportGetResponseMessage["payload"]>;
1423
+ /**
1424
+ * The assembled prompt, for reading. Takes the same what-if inputs as the
1425
+ * report so the text on screen always matches the numbers beside it.
1426
+ */
1427
+ requestContextPromptPreview(input: {
1428
+ workspaceId: string;
1429
+ provider?: string;
1430
+ windowTokens?: number;
1431
+ personalityId?: string;
1432
+ /** Assemble only this section; omitted means the whole prompt. */
1433
+ category?: ContextCategory;
1434
+ }, requestId?: string): Promise<ContextPromptPreviewGetResponseMessage["payload"]>;
1396
1435
  /**
1397
1436
  * A personality's accrued lessons plus the EXACT brief the daemon would inject
1398
1437
  * for `projectRoot`. The brief is returned rather than rebuilt client-side
@@ -1341,6 +1341,37 @@ export class DaemonClient {
1341
1341
  },
1342
1342
  });
1343
1343
  }
1344
+ /**
1345
+ * How much disk the images agents produced occupy on this host, plus the
1346
+ * retention policy currently ageing them out. Gated by
1347
+ * `server_info.features.attachmentStorage`.
1348
+ */
1349
+ async getAttachmentImageStats(requestId) {
1350
+ return this.sendNamespacedCorrelatedSessionRequest({
1351
+ requestId,
1352
+ message: { type: "attachments.images.get_stats.request" },
1353
+ });
1354
+ }
1355
+ /**
1356
+ * Reclaims the materialized image store. Call once with `dryRun: true` for
1357
+ * the count and size the confirm dialog quotes, then again with
1358
+ * `dryRun: false` to delete.
1359
+ *
1360
+ * Cleared images do not come back: a message that referenced one renders its
1361
+ * alt text from then on. Scope is the whole host — filenames are a content
1362
+ * hash, so per-chat or per-workspace scope does not exist. Gated by
1363
+ * `server_info.features.attachmentStorage`.
1364
+ */
1365
+ async clearAttachmentImages(options) {
1366
+ return this.sendNamespacedCorrelatedSessionRequest({
1367
+ requestId: options.requestId,
1368
+ message: {
1369
+ type: "attachments.images.clear.request",
1370
+ dryRun: options.dryRun,
1371
+ olderThanDays: options.olderThanDays ?? 0,
1372
+ },
1373
+ });
1374
+ }
1344
1375
  async archiveAgent(agentId) {
1345
1376
  const requestId = this.createRequestId();
1346
1377
  const message = SessionInboundMessageSchema.parse({
@@ -1736,6 +1767,7 @@ export class DaemonClient {
1736
1767
  ? { providerId: input.providerId, providerHandleId: input.providerHandleId }
1737
1768
  : { provider: input.provider, sessionId: input.sessionId }),
1738
1769
  ...(input.cwd ? { cwd: input.cwd } : {}),
1770
+ ...(input.workspaceId ? { workspaceId: input.workspaceId } : {}),
1739
1771
  ...(input.labels && Object.keys(input.labels).length > 0 ? { labels: input.labels } : {}),
1740
1772
  });
1741
1773
  const status = await this.sendRequest({
@@ -3660,6 +3692,24 @@ export class DaemonClient {
3660
3692
  responseType: "context.report.get.response",
3661
3693
  });
3662
3694
  }
3695
+ /**
3696
+ * The assembled prompt, for reading. Takes the same what-if inputs as the
3697
+ * report so the text on screen always matches the numbers beside it.
3698
+ */
3699
+ async requestContextPromptPreview(input, requestId) {
3700
+ return this.sendCorrelatedSessionRequest({
3701
+ requestId,
3702
+ message: {
3703
+ type: "context.prompt.preview.get.request",
3704
+ workspaceId: input.workspaceId,
3705
+ ...(input.provider ? { provider: input.provider } : {}),
3706
+ ...(typeof input.windowTokens === "number" ? { windowTokens: input.windowTokens } : {}),
3707
+ ...(input.personalityId ? { personalityId: input.personalityId } : {}),
3708
+ ...(input.category ? { category: input.category } : {}),
3709
+ },
3710
+ responseType: "context.prompt.preview.get.response",
3711
+ });
3712
+ }
3663
3713
  // ============================================================================
3664
3714
  // Personality memory
3665
3715
  // ============================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otto-code/client",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Otto client SDK package",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "files": [
@@ -36,8 +36,8 @@
36
36
  "test": "vitest run"
37
37
  },
38
38
  "dependencies": {
39
- "@otto-code/protocol": "0.7.0",
40
- "@otto-code/relay": "0.7.0",
39
+ "@otto-code/protocol": "0.7.1",
40
+ "@otto-code/relay": "0.7.1",
41
41
  "zod": "^4.4.3"
42
42
  },
43
43
  "devDependencies": {