@otto-code/client 0.8.7 → 0.8.9

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.
@@ -3,7 +3,7 @@ import type { z } from "zod";
3
3
  import type { ProjectGithubCloneProtocol } from "@otto-code/protocol/messages";
4
4
  import { type ClientCapability } from "@otto-code/protocol/client-capabilities";
5
5
  import { AgentRefreshedStatusPayloadSchema, CheckoutRenameBranchResponseSchema, RenameTerminalResponseSchema, RestartRequestedStatusPayloadSchema, ShutdownRequestedStatusPayloadSchema, DaemonUpdateResponseSchema, type ServerInfoStatusPayload } from "@otto-code/protocol/messages";
6
- 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, FileVersion, CheckoutCommit, ParsedDiffFile, WorkspaceRecoveryState, CheckoutForgeGetCheckDetailsResponse, CheckoutForgeSetAutoMergeResponse, ProjectCreateDirectoryResponse, FsFileWriteResult, FsFileWriteBinaryResult, GitHubSearchResponse, GitHubSearchRequest, ForgeSearchResponse, ForgeSearchRequest, GitHostingProviderId, HostingSearchRequest, HostingSearchResponse, HostingAuthStatusResponse, DirectorySuggestionsResponse, OttoWorktreeListResponse, OttoWorktreeArchiveResponse, ProjectIconResponse, ContextCategory, ContextPromptPreviewGetResponseMessage, ContextReportGetResponseMessage, ContextEdgeConvertResponseMessage, ContextFindingsFixResponseMessage, PersonalityMemoryListResponseMessage, PersonalityMemoryUpdateResponseMessage, PersonalityMemoryTransferResponseMessage, PersonalityMemoryStatsResponseMessage, ProjectKnowledgeListResponseMessage, ProjectKnowledgeGetResponseMessage, ProjectKnowledgeCreateResponseMessage, ProjectKnowledgeApplyResponseMessage, ProjectKnowledgeStatusResponseMessage, ProjectKnowledgeProjectApplyResponseMessage, ProjectKnowledgeReferenceApplyResponseMessage, ProjectKnowledgeRootApplyResponseMessage, ProjectKnowledgeDeleteResponseMessage, ProjectAddResponse, ProjectResolveWorkspaceForPathResponse, 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, HistoryAgentsStorageStatsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, AgentPromptDelivery, TasksSuggestedStartMode, OttoConfigRaw, OttoConfigRevision, WorkspaceCreateRequest } from "@otto-code/protocol/messages";
6
+ 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, FileVersion, CheckoutCommit, ParsedDiffFile, WorkspaceRecoveryState, CheckoutForgeGetCheckDetailsResponse, CheckoutForgeSetAutoMergeResponse, ProjectCreateDirectoryResponse, FsFileWriteResult, FsFileWriteBinaryResult, GitHubSearchResponse, GitHubSearchRequest, ForgeSearchResponse, ForgeSearchRequest, GitHostingProviderId, HostingSearchRequest, HostingSearchResponse, HostingAuthStatusResponse, DirectorySuggestionsResponse, OttoWorktreeListResponse, OttoWorktreeArchiveResponse, ProjectIconResponse, ContextCategory, ContextPromptPreviewGetResponseMessage, ContextReportGetResponseMessage, ContextEdgeConvertResponseMessage, ContextFindingsFixResponseMessage, PersonalityMemoryListResponseMessage, PersonalityMemoryUpdateResponseMessage, PersonalityMemoryTransferResponseMessage, PersonalityMemoryStatsResponseMessage, ProjectKnowledgeListResponseMessage, ProjectKnowledgeGetResponseMessage, ProjectKnowledgeCreateResponseMessage, ProjectKnowledgeApplyResponseMessage, ProjectKnowledgeStatusResponseMessage, ProjectKnowledgeProjectApplyResponseMessage, ProjectKnowledgeReferenceApplyResponseMessage, ProjectKnowledgeRootApplyResponseMessage, ProjectKnowledgeDeleteResponseMessage, ProjectAddResponse, ProjectResolveWorkspaceForPathResponse, 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, HistoryAgentsStorageStatsResponse, KillTerminalResponse, CaptureTerminalResponse, TerminalCompatibilityDiagnosticResponse, TerminalInput, SessionInboundMessage, SessionOutboundMessage, SendAgentMessageRequest, AgentPromptDelivery, TasksSuggestedStartMode, OttoConfigRaw, OttoConfigRevision, WorkspaceCreateRequest } from "@otto-code/protocol/messages";
7
7
  import type { AgentPermissionRequest, AgentPermissionResponse, AgentPersistenceHandle, AgentProviderNotice, AgentProvider, AgentSessionConfig } from "@otto-code/protocol/agent-types";
8
8
  import type { OrchestrationGraph, PromptTemplate, Run } from "@otto-code/protocol/orchestration";
9
9
  import type { BrainCatalogModel, BrainDiskUsage, BrainEvals, BrainHfSearchResult, BrainHostStatus, BrainInstalledModel, BrainInventoryModel, BrainJob, BrainLogsTailResponse, BrainModelBudgetGetResponse, BrainModelDeleteResponse, BrainModelLoadResponse, BrainModelProfileGetResponse, BrainModelProfileSetResponse, BrainModelRenameResetResponse, BrainModelRenameResponse, BrainNetworkInfo, BrainRemoteConfig, BrainRepoQuant, BrainRuntime, ConnectorsListToolsResponse, ConnectorsOauthAuthorizeResponse, ConnectorsOauthDisconnectResponse, CueMoment, MutableDaemonConfig, MutableDaemonConfigPatch, ProjectLink, SpeechSettingsOptions, SpeechTtsPreviewResult, SpeechTtsSpeakResult, SpeechTtsSpeakCancelResult, VisualizerVoiceCuesResult, AgentPersonalitiesGenerateProfileResult } from "@otto-code/protocol/messages";
@@ -479,6 +479,7 @@ type SubscribeTerminalPayload = SubscribeTerminalResponse["payload"];
479
479
  type CloseItemsPayload = CloseItemsResponse["payload"];
480
480
  type KillTerminalPayload = KillTerminalResponse["payload"];
481
481
  type CaptureTerminalPayload = CaptureTerminalResponse["payload"];
482
+ type TerminalCompatibilityDiagnosticPayload = TerminalCompatibilityDiagnosticResponse["payload"];
482
483
  type ChatCreatePayload = Extract<SessionOutboundMessage, {
483
484
  type: "chat/create/response";
484
485
  }>["payload"];
@@ -1602,7 +1603,7 @@ export declare class DaemonClient {
1602
1603
  createProjectKnowledge(input: {
1603
1604
  workspaceId: string;
1604
1605
  id?: string;
1605
- kind: "decision" | "constraint" | "requirement" | "architecture" | "project" | "reference";
1606
+ kind: "decision" | "constraint" | "requirement" | "architecture" | "finding" | "project" | "reference";
1606
1607
  title: string;
1607
1608
  statement: string;
1608
1609
  evidence?: string;
@@ -1786,11 +1787,12 @@ export declare class DaemonClient {
1786
1787
  brainModelsScan(requestId?: string): Promise<BrainInstalledModel[]>;
1787
1788
  brainCatalogList(requestId?: string): Promise<BrainCatalogModel[]>;
1788
1789
  brainRuntimeList(requestId?: string): Promise<BrainRuntime[]>;
1789
- brainModelsPull(model: string, requestId?: string): Promise<BrainJob>;
1790
+ brainModelsPull(model: string, componentsOrRequestId?: string[] | string, quantOrRequestId?: string): Promise<BrainJob>;
1790
1791
  brainHfSearch(query: string, limit?: number | null, requestId?: string): Promise<BrainHfSearchResult[]>;
1791
1792
  brainHfQuants(repo: string, requestId?: string): Promise<BrainRepoQuant[]>;
1792
- brainModelsAdd(repo: string, quant: string, requestId?: string): Promise<BrainJob>;
1793
+ brainModelsAdd(repo: string, quant: string, components?: string[], requestId?: string): Promise<BrainJob>;
1793
1794
  brainRuntimeInstall(build?: string | null, requestId?: string): Promise<BrainJob>;
1795
+ brainRuntimeRemove(name: string, requestId?: string): Promise<BrainJob>;
1794
1796
  brainCalibrate(model: string, requestId?: string): Promise<BrainJob>;
1795
1797
  brainSweep(model: string, requestId?: string): Promise<BrainJob>;
1796
1798
  brainBench(model?: string | null, requestId?: string): Promise<BrainJob>;
@@ -1828,6 +1830,12 @@ export declare class DaemonClient {
1828
1830
  brainModelUnload(requestId?: string): Promise<BrainHostStatus | null>;
1829
1831
  /** Delete a model's files. The brain refuses while that model is loaded. */
1830
1832
  brainModelDelete(modelId: string, requestId?: string): Promise<BrainModelDeleteResponse["payload"]>;
1833
+ brainModelComponentDelete(modelId: string, componentId: string, requestId?: string): Promise<{
1834
+ deleted: string[];
1835
+ freedBytes: number;
1836
+ error: string | null;
1837
+ requestId: string;
1838
+ }>;
1831
1839
  /**
1832
1840
  * Rename a model's display name. The brain rejects a collision with
1833
1841
  * another model's current id/displayName.
@@ -1930,6 +1938,8 @@ export declare class DaemonClient {
1930
1938
  command?: string;
1931
1939
  args?: string[];
1932
1940
  workspaceId?: string;
1941
+ presentation?: "embedded";
1942
+ presentationOwner?: string;
1933
1943
  }): Promise<CreateTerminalPayload>;
1934
1944
  renameTerminal(input: RenameTerminalInput): Promise<RenameTerminalResult>;
1935
1945
  subscribeTerminal(terminalId: string, optionsOrRequestId?: {
@@ -1948,6 +1958,7 @@ export declare class DaemonClient {
1948
1958
  end?: number;
1949
1959
  stripAnsi?: boolean;
1950
1960
  }, requestId?: string): Promise<CaptureTerminalPayload>;
1961
+ runTerminalCompatibilityDiagnostic(requestId?: string): Promise<TerminalCompatibilityDiagnosticPayload>;
1951
1962
  createChatRoom(options: CreateChatRoomOptions): Promise<ChatCreatePayload>;
1952
1963
  listChatRooms(requestId?: string): Promise<ChatListPayload>;
1953
1964
  inspectChatRoom(options: InspectChatRoomOptions): Promise<ChatInspectPayload>;
@@ -4600,10 +4600,18 @@ export class DaemonClient {
4600
4600
  }
4601
4601
  return payload.runtimes;
4602
4602
  }
4603
- async brainModelsPull(model, requestId) {
4603
+ async brainModelsPull(model, componentsOrRequestId, quantOrRequestId) {
4604
+ const components = Array.isArray(componentsOrRequestId) ? componentsOrRequestId : undefined;
4605
+ const quant = Array.isArray(componentsOrRequestId) ? quantOrRequestId : undefined;
4606
+ const correlationId = typeof componentsOrRequestId === "string" ? componentsOrRequestId : undefined;
4604
4607
  const payload = await this.sendCorrelatedSessionRequest({
4605
- requestId,
4606
- message: { type: "brain.models.pull.request", model },
4608
+ requestId: correlationId,
4609
+ message: {
4610
+ type: "brain.models.pull.request",
4611
+ model,
4612
+ ...(components ? { components } : {}),
4613
+ ...(quant ? { quant } : {}),
4614
+ },
4607
4615
  responseType: "brain.models.pull.response",
4608
4616
  });
4609
4617
  return unwrapBrainJob(payload);
@@ -4630,10 +4638,10 @@ export class DaemonClient {
4630
4638
  }
4631
4639
  return payload.quants;
4632
4640
  }
4633
- async brainModelsAdd(repo, quant, requestId) {
4641
+ async brainModelsAdd(repo, quant, components, requestId) {
4634
4642
  const payload = await this.sendCorrelatedSessionRequest({
4635
4643
  requestId,
4636
- message: { type: "brain.models.add.request", repo, quant },
4644
+ message: { type: "brain.models.add.request", repo, quant, components },
4637
4645
  responseType: "brain.models.add.response",
4638
4646
  });
4639
4647
  return unwrapBrainJob(payload);
@@ -4646,6 +4654,14 @@ export class DaemonClient {
4646
4654
  });
4647
4655
  return unwrapBrainJob(payload);
4648
4656
  }
4657
+ async brainRuntimeRemove(name, requestId) {
4658
+ const payload = await this.sendCorrelatedSessionRequest({
4659
+ requestId,
4660
+ message: { type: "brain.runtime.remove.request", name },
4661
+ responseType: "brain.runtime.remove.response",
4662
+ });
4663
+ return unwrapBrainJob(payload);
4664
+ }
4649
4665
  async brainCalibrate(model, requestId) {
4650
4666
  const payload = await this.sendCorrelatedSessionRequest({
4651
4667
  requestId,
@@ -4797,6 +4813,16 @@ export class DaemonClient {
4797
4813
  }
4798
4814
  return payload;
4799
4815
  }
4816
+ async brainModelComponentDelete(modelId, componentId, requestId) {
4817
+ const payload = await this.sendCorrelatedSessionRequest({
4818
+ requestId,
4819
+ message: { type: "brain.model.component.delete.request", modelId, componentId },
4820
+ responseType: "brain.model.component.delete.response",
4821
+ });
4822
+ if (payload.error)
4823
+ throw new Error(payload.error);
4824
+ return payload;
4825
+ }
4800
4826
  /**
4801
4827
  * Rename a model's display name. The brain rejects a collision with
4802
4828
  * another model's current id/displayName.
@@ -5236,6 +5262,8 @@ export class DaemonClient {
5236
5262
  agentId: options?.agentId,
5237
5263
  command: options?.command,
5238
5264
  args: options?.args,
5265
+ presentation: options?.presentation,
5266
+ presentationOwner: options?.presentationOwner,
5239
5267
  ...(options?.workspaceId !== undefined ? { workspaceId: options.workspaceId } : {}),
5240
5268
  requestId: resolvedRequestId,
5241
5269
  });
@@ -5344,6 +5372,16 @@ export class DaemonClient {
5344
5372
  options: { skipQueue: true },
5345
5373
  });
5346
5374
  }
5375
+ async runTerminalCompatibilityDiagnostic(requestId) {
5376
+ const resolvedRequestId = this.createRequestId(requestId);
5377
+ return this.sendCorrelatedSessionRequest({
5378
+ requestId: resolvedRequestId,
5379
+ message: {
5380
+ type: "terminal.compatibility.diagnostic.request",
5381
+ },
5382
+ responseType: "terminal.compatibility.diagnostic.response",
5383
+ });
5384
+ }
5347
5385
  async createChatRoom(options) {
5348
5386
  return this.sendCorrelatedSessionRequest({
5349
5387
  requestId: options.requestId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otto-code/client",
3
- "version": "0.8.7",
3
+ "version": "0.8.9",
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.8.7",
40
- "@otto-code/relay": "0.8.7",
39
+ "@otto-code/protocol": "0.8.9",
40
+ "@otto-code/relay": "0.8.9",
41
41
  "zod": "^4.4.3"
42
42
  },
43
43
  "devDependencies": {