@otto-code/client 0.8.5 → 0.8.7

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, 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";
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";
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";
@@ -814,6 +814,7 @@ export interface RenameBranchInput {
814
814
  export interface RenameTerminalInput {
815
815
  terminalId: string;
816
816
  title: string;
817
+ clear?: boolean;
817
818
  requestId?: string;
818
819
  }
819
820
  type OpenProjectPayload = OpenProjectResponseMessage["payload"];
@@ -959,10 +960,12 @@ export declare class DaemonClient {
959
960
  private scheduleNextLivenessHeartbeat;
960
961
  fetchAgents(options?: FetchAgentsOptions): Promise<FetchAgentsPayload>;
961
962
  fetchAgentHistory(options?: FetchAgentHistoryOptions): Promise<FetchAgentHistoryPayload>;
963
+ getHistoryStorageStats(requestId?: string): Promise<HistoryAgentsStorageStatsResponse["payload"]>;
962
964
  fetchRecentProviderSessions(options?: FetchRecentProviderSessionsOptions): Promise<FetchRecentProviderSessionsPayload>;
963
965
  fetchWorkspaces(options?: FetchWorkspacesOptions): Promise<FetchWorkspacesPayload>;
964
966
  openProject(cwd: string, requestId?: string): Promise<OpenProjectPayload>;
965
967
  addProject(cwd: string, requestId?: string): Promise<ProjectAddPayload>;
968
+ resolveWorkspaceForPath(path: string, requestId?: string): Promise<ProjectResolveWorkspaceForPathResponse["payload"]>;
966
969
  scaffoldProject(options: {
967
970
  parentDirectory: string;
968
971
  folderName?: string;
@@ -1591,6 +1594,78 @@ export declare class DaemonClient {
1591
1594
  /** Assemble only this section; omitted means the whole prompt. */
1592
1595
  category?: ContextCategory;
1593
1596
  }, requestId?: string): Promise<ContextPromptPreviewGetResponseMessage["payload"]>;
1597
+ listProjectKnowledge(workspaceId: string, requestId?: string): Promise<ProjectKnowledgeListResponseMessage["payload"]>;
1598
+ getProjectKnowledge(input: {
1599
+ workspaceId: string;
1600
+ id: string;
1601
+ }, requestId?: string): Promise<ProjectKnowledgeGetResponseMessage["payload"]>;
1602
+ createProjectKnowledge(input: {
1603
+ workspaceId: string;
1604
+ id?: string;
1605
+ kind: "decision" | "constraint" | "requirement" | "architecture" | "project" | "reference";
1606
+ title: string;
1607
+ statement: string;
1608
+ evidence?: string;
1609
+ tags?: string[];
1610
+ affects?: string[];
1611
+ status?: "proposed" | "confirmed" | "superseded";
1612
+ deliveryStatus?: "charter" | "in_build" | "partial" | "blocked" | "complete" | "reference" | "deferred" | "cancelled";
1613
+ progress?: {
1614
+ completed: number;
1615
+ total: number;
1616
+ unit: string;
1617
+ };
1618
+ referenceDisposition?: "unevaluated" | "read" | "adopted" | "rejected" | "dependency";
1619
+ sourceUrl?: string;
1620
+ }, requestId?: string): Promise<ProjectKnowledgeCreateResponseMessage["payload"]>;
1621
+ applyProjectKnowledge(input: {
1622
+ workspaceId: string;
1623
+ id: string;
1624
+ title?: string;
1625
+ statement?: string;
1626
+ evidence?: string;
1627
+ provenanceText?: string;
1628
+ provenanceSource?: string;
1629
+ provenanceAffects?: string[];
1630
+ expectedUpdatedAt?: string;
1631
+ }, requestId?: string): Promise<ProjectKnowledgeApplyResponseMessage["payload"]>;
1632
+ setProjectKnowledgeStatus(input: {
1633
+ workspaceId: string;
1634
+ id: string;
1635
+ status: "proposed" | "confirmed" | "superseded";
1636
+ reason?: string;
1637
+ }, requestId?: string): Promise<ProjectKnowledgeStatusResponseMessage["payload"]>;
1638
+ applyProjectKnowledgeProject(input: {
1639
+ workspaceId: string;
1640
+ id: string;
1641
+ deliveryStatus?: "charter" | "in_build" | "partial" | "blocked" | "complete" | "reference" | "deferred" | "cancelled";
1642
+ progress?: {
1643
+ completed: number;
1644
+ total: number;
1645
+ unit: string;
1646
+ } | null;
1647
+ reason: string;
1648
+ expectedUpdatedAt?: string;
1649
+ }, requestId?: string): Promise<ProjectKnowledgeProjectApplyResponseMessage["payload"]>;
1650
+ applyProjectKnowledgeReference(input: {
1651
+ workspaceId: string;
1652
+ id: string;
1653
+ disposition?: "unevaluated" | "read" | "adopted" | "rejected" | "dependency";
1654
+ sourceUrl?: string | null;
1655
+ reason: string;
1656
+ expectedUpdatedAt?: string;
1657
+ }, requestId?: string): Promise<ProjectKnowledgeReferenceApplyResponseMessage["payload"]>;
1658
+ applyProjectKnowledgeRoot(input: {
1659
+ workspaceId: string;
1660
+ slug: string;
1661
+ body: string;
1662
+ }, requestId?: string): Promise<ProjectKnowledgeRootApplyResponseMessage["payload"]>;
1663
+ deleteProjectKnowledge(input: {
1664
+ workspaceId: string;
1665
+ id: string;
1666
+ reason: string;
1667
+ expectedUpdatedAt?: string;
1668
+ }, requestId?: string): Promise<ProjectKnowledgeDeleteResponseMessage["payload"]>;
1594
1669
  /**
1595
1670
  * A personality's accrued lessons plus the EXACT brief the daemon would inject
1596
1671
  * for `projectRoot`. The brief is returned rather than rebuilt client-side
@@ -1025,6 +1025,12 @@ export class DaemonClient {
1025
1025
  },
1026
1026
  });
1027
1027
  }
1028
+ async getHistoryStorageStats(requestId) {
1029
+ return this.sendNamespacedCorrelatedSessionRequest({
1030
+ requestId,
1031
+ message: { type: "history.agents.get_storage_stats.request" },
1032
+ });
1033
+ }
1028
1034
  async fetchRecentProviderSessions(options) {
1029
1035
  const resolvedRequestId = this.createRequestId(options?.requestId);
1030
1036
  const message = SessionInboundMessageSchema.parse({
@@ -1095,6 +1101,16 @@ export class DaemonClient {
1095
1101
  responseType: "project.add.response",
1096
1102
  });
1097
1103
  }
1104
+ async resolveWorkspaceForPath(path, requestId) {
1105
+ return this.sendCorrelatedSessionRequest({
1106
+ requestId,
1107
+ message: {
1108
+ type: "project.resolveWorkspaceForPath.request",
1109
+ path,
1110
+ },
1111
+ responseType: "project.resolveWorkspaceForPath.response",
1112
+ });
1113
+ }
1098
1114
  // Creates a project directory from scratch and registers it. Requires
1099
1115
  // server_info features.projectScaffold. `onProgress` is optional: the
1100
1116
  // resolved payload carries the authoritative step list either way.
@@ -4147,6 +4163,60 @@ export class DaemonClient {
4147
4163
  responseType: "context.prompt.preview.get.response",
4148
4164
  });
4149
4165
  }
4166
+ async listProjectKnowledge(workspaceId, requestId) {
4167
+ return this.sendNamespacedCorrelatedSessionRequest({
4168
+ requestId,
4169
+ message: { type: "project.knowledge.list.request", workspaceId },
4170
+ });
4171
+ }
4172
+ async getProjectKnowledge(input, requestId) {
4173
+ return this.sendNamespacedCorrelatedSessionRequest({
4174
+ requestId,
4175
+ message: { type: "project.knowledge.get.request", ...input },
4176
+ });
4177
+ }
4178
+ async createProjectKnowledge(input, requestId) {
4179
+ return this.sendNamespacedCorrelatedSessionRequest({
4180
+ requestId,
4181
+ message: { type: "project.knowledge.create.request", ...input },
4182
+ });
4183
+ }
4184
+ async applyProjectKnowledge(input, requestId) {
4185
+ return this.sendNamespacedCorrelatedSessionRequest({
4186
+ requestId,
4187
+ message: { type: "project.knowledge.apply.request", ...input },
4188
+ });
4189
+ }
4190
+ async setProjectKnowledgeStatus(input, requestId) {
4191
+ return this.sendNamespacedCorrelatedSessionRequest({
4192
+ requestId,
4193
+ message: { type: "project.knowledge.status.request", ...input },
4194
+ });
4195
+ }
4196
+ async applyProjectKnowledgeProject(input, requestId) {
4197
+ return this.sendNamespacedCorrelatedSessionRequest({
4198
+ requestId,
4199
+ message: { type: "project.knowledge.project.apply.request", ...input },
4200
+ });
4201
+ }
4202
+ async applyProjectKnowledgeReference(input, requestId) {
4203
+ return this.sendNamespacedCorrelatedSessionRequest({
4204
+ requestId,
4205
+ message: { type: "project.knowledge.reference.apply.request", ...input },
4206
+ });
4207
+ }
4208
+ async applyProjectKnowledgeRoot(input, requestId) {
4209
+ return this.sendNamespacedCorrelatedSessionRequest({
4210
+ requestId,
4211
+ message: { type: "project.knowledge.root.apply.request", ...input },
4212
+ });
4213
+ }
4214
+ async deleteProjectKnowledge(input, requestId) {
4215
+ return this.sendNamespacedCorrelatedSessionRequest({
4216
+ requestId,
4217
+ message: { type: "project.knowledge.delete.request", ...input },
4218
+ });
4219
+ }
4150
4220
  // ============================================================================
4151
4221
  // Personality memory
4152
4222
  // ============================================================================
@@ -5183,6 +5253,7 @@ export class DaemonClient {
5183
5253
  type: "terminal.rename.request",
5184
5254
  terminalId: input.terminalId,
5185
5255
  title: input.title,
5256
+ ...(input.clear ? { clear: true } : {}),
5186
5257
  },
5187
5258
  responseType: "terminal.rename.response",
5188
5259
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otto-code/client",
3
- "version": "0.8.5",
3
+ "version": "0.8.7",
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.5",
40
- "@otto-code/relay": "0.8.5",
39
+ "@otto-code/protocol": "0.8.7",
40
+ "@otto-code/relay": "0.8.7",
41
41
  "zod": "^4.4.3"
42
42
  },
43
43
  "devDependencies": {